48 lines
2.2 KiB
C
48 lines
2.2 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
|
|
#ifndef __SPINAND_H__
|
|
#define __SPINAND_H__
|
|
|
|
#include "../nand-partition/phy.h"
|
|
#include <linux/mtd/aw-spinand-nftl.h>
|
|
|
|
#define SPINAND_SUPPORT_READ_RECLAIM (1)
|
|
|
|
#define SPINAND_SECTOR_CNT_OF_SUPER_PAGE (spinand_nftl_get_super_page_size(SECTOR))
|
|
#define SPINAND_FULL_BITMAP_OF_SUPER_PAGE ((__u64)(((__u64)1 << (SPINAND_SECTOR_CNT_OF_SUPER_PAGE - 1)) | (((__u64)1 << (SPINAND_SECTOR_CNT_OF_SUPER_PAGE - 1)) - 1)))
|
|
#define SECTOR_CNT_OF_SINGLE_PAGE (spinand_nftl_get_single_page_size(SECTOR))
|
|
#define FULL_BITMAP_OF_SINGLE_PAGE ((__u32)(((__u32)1 << (SECTOR_CNT_OF_SINGLE_PAGE - 1)) | (((__u32)1 << (SECTOR_CNT_OF_SINGLE_PAGE - 1)) - 1)))
|
|
|
|
|
|
/*define the nand flash storage system information*/
|
|
typedef struct spinand_storage_info {
|
|
__u8 ChipCnt; /*the count of the total nand flash chips are currently connecting on the CE pin*/
|
|
__u16 ChipConnectInfo; /*chip connect information, bit == 1 means there is a chip connecting on the CE pin*/
|
|
__u8 ConnectMode; /*the rb connect mode*/
|
|
__u8 BankCntPerChip; /*the count of the banks in one nand chip, multiple banks can support Inter-Leave*/
|
|
__u8 DieCntPerChip; /*the count of the dies in one nand chip, block management is based on Die*/
|
|
__u8 PlaneCntPerDie; /*the count of planes in one die, multiple planes can support multi-plane operation*/
|
|
__u8 SectorCntPerPage; /*the count of sectors in one single physic page, one sector is 0.5k*/
|
|
__u16 PageCntPerPhyBlk; /*the count of physic pages in one physic block*/
|
|
__u32 BlkCntPerDie; /*the count of the physic blocks in one die, include valid block and invalid block*/
|
|
__u32 OperationOpt; /*the mask of the operation types which current nand flash can support support*/
|
|
__u8 NandChipId[8]; /*the nand chip id of current connecting nand chip*/
|
|
__u32 MaxEraseTimes; /*the max erase times of a physic block*/
|
|
} spinand_storage_info_t;
|
|
|
|
extern spinand_storage_info_t spinand_storage_info;
|
|
extern struct _boot_info *phyinfo_buf;
|
|
|
|
unsigned int spinand_lsb_page_cnt_per_block(void);
|
|
unsigned int spinand_get_page_num(unsigned int lsb_page_no);
|
|
|
|
|
|
|
|
|
|
void spinand_get_nand_info(struct _nand_info *aw_nand_info);
|
|
struct _nand_info *spinand_hardware_init(void);
|
|
__s32 spinand_hardware_exit(void);
|
|
|
|
|
|
#endif /*SPINAND_H*/
|