73 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			73 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
#ifndef __NVT_NPT_H__
 | 
						|
#define __NVT_NPT_H__
 | 
						|
 | 
						|
#include <common.h>
 | 
						|
#include <linux/mtd/partitions.h>
 | 
						|
 | 
						|
#define MAX_CSV_SIZE (4*1024)
 | 
						|
#define MAX_NR_PART (32)
 | 
						|
#define MAX_NR_PART_XBOOT (16)
 | 
						|
#define LIMIT_NR_PART (MAX_NR_PART - 1) /* the last one needs to be null */
 | 
						|
 | 
						|
#define NVT_NPT_STORE_DEFAULT_BLK_OFF	(16)
 | 
						|
#define NVT_NPT_STORE_DEFAULT_BLK_NR	(3)
 | 
						|
 | 
						|
struct nvt_partition {
 | 
						|
	char name[16]; /* identifier string */
 | 
						|
	uint64_t size; /* partition size */
 | 
						|
	uint64_t offset; /* offset within the master MTD space */
 | 
						|
};
 | 
						|
 | 
						|
struct nvt_ubi_vol {
 | 
						|
	int mtd_idx;
 | 
						|
	int vol_idx;
 | 
						|
	char name[16]; /* identifier string */
 | 
						|
	uint64_t size; /* partition size */
 | 
						|
};
 | 
						|
 | 
						|
struct nt72_npt_info {
 | 
						|
	/* the buffer should be the first field to be aligned for FAT read */
 | 
						|
	unsigned char pt_buf[MAX_CSV_SIZE];
 | 
						|
 | 
						|
	unsigned int version;
 | 
						|
	char name[32];
 | 
						|
	unsigned int chip_id;
 | 
						|
	unsigned int nand_id;
 | 
						|
	unsigned int nand_sz;
 | 
						|
	unsigned int unit_kb;
 | 
						|
	unsigned int unit_vol_kb;
 | 
						|
	unsigned int part_cnt;
 | 
						|
	unsigned int vol_cnt;
 | 
						|
	char img_name[MAX_NR_PART][32];
 | 
						|
 | 
						|
	struct nvt_partition part[MAX_NR_PART];
 | 
						|
	struct nvt_ubi_vol vol[MAX_NR_PART];
 | 
						|
};
 | 
						|
 | 
						|
 | 
						|
struct nand_partition_table {
 | 
						|
	u32 crc;
 | 
						|
	u32 crc_xboot;
 | 
						|
	struct nvt_partition npt_part[MAX_NR_PART];
 | 
						|
	struct nvt_ubi_vol npt_vol[MAX_NR_PART];
 | 
						|
};
 | 
						|
 | 
						|
 | 
						|
int nt72_npt_if_load(struct nt72_npt_info *p, const char *csv_file);
 | 
						|
void nt72_npt_parse_csv_field(char *next_field, char *f0, char *f1, char *f2,
 | 
						|
			      char *f3, char *f4, char *f5);
 | 
						|
void nt72_npt_parse_csv_line(char **next_line, char *f0, char *f1, char *f2,
 | 
						|
			     char *f3, char *f4, char *f5);
 | 
						|
int nt72_npt_parse(struct nt72_npt_info *p);
 | 
						|
 | 
						|
int nt72_npt_gen_mtd_parts(struct nt72_npt_info *p, struct mtd_partition *mtd_parts);
 | 
						|
void nt72_npt_print_mtd_parts(struct nvt_partition *mtd_parts, int count);
 | 
						|
 | 
						|
int nt72_npt_gen_npt(struct nt72_npt_info *npt_info, struct nand_partition_table *npt);
 | 
						|
int nt72_npt_gen_mtd_parts_by_npt(struct nand_partition_table *npt, struct mtd_partition *mtd_parts);
 | 
						|
 | 
						|
uint32_t nt72_npt_get_store_blk_offset();
 | 
						|
uint32_t nt72_npt_get_store_blk_nr();
 | 
						|
 | 
						|
#endif /* __NVT_NPT_H__ */
 |