sdk-hwV1.3/lichee/linux-4.9/modules/nand/sun8iw15p1/phy-nand/nand_osal.h

328 lines
7.5 KiB
C

/*
* Copyright (c) 2007-2017 Allwinnertech Co., Ltd.
*
* This software is licensed under the terms of the GNU General Public
* License version 2, as published by the Free Software Foundation, and
* may be copied, distributed, and modified under those terms.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
*/
#ifndef __NAND_OSAL_H__
#define __NAND_OSAL_H__
#ifndef __s8
typedef signed char __s8;
#endif
#ifndef _s8
typedef signed char _s8;
#endif
#ifndef s8
typedef signed char s8;
#endif
#ifndef S8
typedef signed char S8;
#endif
#ifndef sint8
typedef signed char sint8;
#endif
#ifndef SINT8
typedef signed char SINT8;
#endif
#ifndef int8
typedef signed char int8;
#endif
#ifndef INT8
typedef signed char INT8;
#endif
#ifndef __u8
typedef unsigned char __u8;
#endif
#ifndef _u8
typedef unsigned char _u8;
#endif
#ifndef u8
typedef unsigned char u8;
#endif
#ifndef U8
typedef unsigned char U8;
#endif
#ifndef uint8
typedef unsigned char uint8;
#endif
#ifndef UINT8
typedef unsigned char UINT8;
#endif
#ifndef uchar
typedef unsigned char uchar;
#endif
#ifndef UCHAR
typedef unsigned char UCHAR;
#endif
#ifndef __s16
typedef signed short __s16;
#endif
#ifndef _s16
typedef signed short _s16;
#endif
#ifndef s16
typedef signed short s16;
#endif
#ifndef S16
typedef signed short S16;
#endif
#ifndef sint16
typedef signed short sint16;
#endif
#ifndef int16
typedef signed short int16;
#endif
#ifndef INT16
typedef signed short INT16;
#endif
#ifndef __u16
typedef unsigned short __u16;
#endif
#ifndef _u16
typedef unsigned short _u16;
#endif
#ifndef u16
typedef unsigned short u16;
#endif
#ifndef U16
typedef unsigned short U16;
#endif
#ifndef uint16
typedef unsigned short uint16;
#endif
#ifndef UINT16
typedef unsigned short UINT16;
#endif
#ifndef __s32
typedef signed int __s32;
#endif
#ifndef _s32
typedef signed int _s32;
#endif
#ifndef s32
typedef signed int s32;
#endif
#ifndef S32
typedef signed int S32;
#endif
#ifndef int32
typedef signed int int32;
#endif
#ifndef INT32
typedef signed int INT32;
#endif
#ifndef sint32
typedef signed int sint32;
#endif
#ifndef SINT32
typedef signed int SINT32;
#endif
#ifndef __u32
typedef unsigned int __u32;
#endif
#ifndef _u32
typedef unsigned int _u32;
#endif
#ifndef u32
typedef unsigned int u32;
#endif
#ifndef U32
typedef unsigned int U32;
#endif
#ifndef uint32
typedef unsigned int uint32;
#endif
#ifndef UINT32
typedef unsigned int UINT32;
#endif
#ifndef __s64
typedef signed long long __s64;
#endif
#ifndef _s64
typedef signed long long _s64;
#endif
#ifndef s64
typedef signed long long s64;
#endif
#ifndef S64
typedef signed long long S64;
#endif
#ifndef sint64
typedef signed long long sint64;
#endif
#ifndef SINT64
typedef signed long long SINT64;
#endif
#ifndef int64
typedef signed long long int64;
#endif
#ifndef INT64
typedef signed long long INT64;
#endif
#ifndef __u64
typedef unsigned long long __u64;
#endif
#ifndef _u64
typedef unsigned long long _u64;
#endif
#ifndef u64
typedef unsigned long long u64;
#endif
#ifndef U64
typedef unsigned long long U64;
#endif
#ifndef uint64
typedef unsigned long long uint64;
#endif
#ifndef UINT64
typedef unsigned long long UINT64;
#endif
#ifndef NULL
#define NULL ((void *)0)
#endif
#define FACTORY_BAD_BLOCK_ERROR 159
#define BYTES_PER_SECTOR 512
#define SHIFT_PER_SECTOR 9
#define BYTES_OF_USER_PER_PAGE 16
#define MIN_BYTES_OF_USER_PER_PAGE 16
extern void start_time(void);
extern int end_time(int data, int time, int par);
extern void *NAND_IORemap(void *base_addr, unsigned int size);
// USE_SYS_CLK
extern int NAND_ClkRequest(__u32 nand_index);
extern void NAND_ClkRelease(__u32 nand_index);
extern int NAND_SetClk(__u32 nand_index, __u32 nand_clk0, __u32 nand_clk1);
extern int NAND_GetClk(__u32 nand_index, __u32 *pnand_clk0, __u32 *pnand_clk1);
extern __s32 NAND_CleanFlushDCacheRegion(void *buff_addr, __u32 len);
extern __s32 NAND_InvaildDCacheRegion(__u32 rw, __u32 buff_addr, __u32 len);
extern void *NAND_DMASingleMap(__u32 rw, void *buff_addr, __u32 len);
extern void *NAND_DMASingleUnmap(__u32 rw, void *buff_addr, __u32 len);
extern int nand_dma_config_start(__u32 rw, int addr, __u32 length);
extern int nand_request_dma(void);
extern int spinand_request_tx_dma(void);
extern int spinand_request_rx_dma(void);
extern int spinand_releasetxdma(void);
extern int spinand_releaserxdma(void);
extern void *NAND_VA_TO_PA(void *buff_addr);
extern __s32 NAND_PIORequest(__u32 nand_index);
extern __s32 NAND_Check_3DNand(void);
extern void NAND_PIORelease(__u32 nand_index);
extern __u32 NAND_GetNandExtPara(__u32 para_num);
extern __u32 NAND_GetNandIDNumCtrl(void);
extern int NAND_GetVoltage(void);
extern int NAND_ReleaseVoltage(void);
extern void NAND_Memset(void *pAddr, unsigned char value, unsigned int len);
extern void NAND_Memcpy(void *pAddr_dst, void *pAddr_src, unsigned int len);
extern int NAND_Memcmp(void *pAddr_dst, void *pAddr_src, unsigned int len);
extern void *NAND_Malloc(unsigned int Size);
extern void NAND_Free(void *pAddr, unsigned int Size);
extern int NAND_Print(const char *fmt, ...);
extern int NAND_Print_DBG(const char *fmt, ...);
extern void *phy_malloc(uint32 size);
extern void phy_free(const void *ptr);
extern void nand_cond_resched(void);
extern void *RAWNAND_GetIOBaseAddrCH0(void);
extern void *RAWNAND_GetIOBaseAddrCH1(void);
extern void *SPINAND_GetIOBaseAddrCH0(void);
extern void *SPINAND_GetIOBaseAddrCH1(void);
extern __u32 NAND_GetNdfcVersion(void);
extern __u32 NAND_GetNdfcDmaMode(void);
extern __u32 NAND_GetMaxChannelCnt(void);
// extern void *NAND_GetIOBaseAddr(void);
extern __u32 get_storage_type(void); /*nand:1 spi nand:2*/
extern int NAND_PhysicLockInit(void);
extern int NAND_PhysicLock(void);
extern int NAND_PhysicUnLock(void);
extern int NAND_PhysicLockExit(void);
#define NAND_IO_BASE_ADDR0 (NAND_GetIOBaseAddrCH0())
#define NAND_IO_BASE_ADDR1 (NAND_GetIOBaseAddrCH1())
extern __s32 nand_rb_wait_time_out(__u32 no, __u32 *flag);
extern __s32 nand_rb_wake_up(__u32 no);
extern __s32 nand_dma_wait_time_out(__u32 no, __u32 *flag);
extern __s32 nand_dma_wake_up(__u32 no);
extern int NAND_IS_Secure_sys(void);
extern void NAND_Print_Version(void);
extern void Dump_Gpio_Reg_Show(void);
extern void Dump_Ccmu_Reg_Show(void);
// extern __u32 nand_wait_rb_before(void);
// extern __u32 nand_wait_rb_mode(void);
// extern __u32 nand_wait_dma_mode(void);
// extern __u32 nand_support_two_plane(void);
// extern __u32 nand_support_vertical_interleave(void);
// extern __u32 nand_support_dual_channel(void);
// define the memory set interface
#define MEMSET(x, y, z) NAND_Memset((x), (y), (z))
// define the memory copy interface
#define MEMCPY(x, y, z) NAND_Memcpy((x), (y), (z))
#define MEMCMP(x, y, z) NAND_Memcmp((x), (y), (z))
// define the memory allocate interface
#define MALLOC(x) NAND_Malloc((x))
// define the memory release interface
#define FREE(x, size) NAND_Free((x), (size))
// define the message print interface
#define PRINT NAND_Print
#define PRINT_DBG NAND_Print_DBG
#define PHY_DBG_MESSAGE_ON 1
#define PHY_ERR_MESSAGE_ON 1
#if PHY_DBG_MESSAGE_ON
#define PHY_DBG(...) PRINT_DBG(__VA_ARGS__)
#else
#define PHY_DBG(...)
#endif
#if PHY_ERR_MESSAGE_ON
#define PHY_ERR(...) PRINT(__VA_ARGS__)
#else
#define PHY_ERR(...)
#endif
typedef enum {
PHY_SUCCESS = 0,
PHY_FAILURE = 1,
PHY_INVALID_PARTITION = 2,
PHY_INVALID_ADDRESS = 3,
PHY_FLUSH_ERROR = 4,
PHY_PAGENOTFOUND = 5,
PHY_NO_FREE_BLOCKS = 6,
PHY_NO_INVALID_BLOCKS = 7,
PHY_COMPLETE = 8,
} phy_error;
#endif //__NAND_OSAL_H__