66 lines
2.7 KiB
C
66 lines
2.7 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
/**
|
|
* rawnand_chip.c
|
|
*
|
|
* Copyright (C) 2019 Allwinner.
|
|
*
|
|
* 2019.9.11 cuizhikui<cuizhikui@allwinnertech.com>
|
|
*/
|
|
|
|
#ifndef __RAWNAND_CHIP_H__
|
|
#define __RAWNAND_CHIP_H__
|
|
|
|
#include "rawnand.h"
|
|
#include "controller/ndfc_base.h"
|
|
|
|
extern struct _nand_storage_info *g_nsi;
|
|
extern struct _nand_storage_info g_nsi_data;
|
|
extern rawnand_storage_info_t *g_nand_storage_info;
|
|
extern rawnand_storage_info_t g_nand_storage_info_data;
|
|
extern struct nand_chip_info nci_data[MAX_CHIP_PER_CHANNEL * 2];
|
|
|
|
extern struct _nand_super_storage_info *g_nssi;
|
|
extern struct _nand_super_storage_info g_nssi_data;
|
|
extern struct nand_super_chip_info nsci_data[MAX_CHIP_PER_CHANNEL * 2];
|
|
|
|
void nand_enable_chip(struct nand_chip_info *nci);
|
|
void nand_disable_chip(struct nand_chip_info *nci);
|
|
int nand_read_chip_status_ready(struct nand_chip_info *nci);
|
|
int nand_wait_all_rb_ready(void);
|
|
int nand_set_feature(struct nand_chip_info *nci, u8 *addr, u8 *feature);
|
|
int nand_get_feature(struct nand_chip_info *nci, u8 *addr, u8 *feature);
|
|
int nand_reset_chip(struct nand_chip_info *nci);
|
|
|
|
struct nand_chip_info *nci_get_from_nsi(struct _nand_storage_info *nsi,
|
|
unsigned int num);
|
|
void nci_delete_from_nctri(struct nand_controller_info *nctri);
|
|
struct nand_super_chip_info *nsci_get_from_nssi(
|
|
struct _nand_super_storage_info *nssi, unsigned int num);
|
|
int switch_ddrtype_from_ddr_to_sdr(struct nand_controller_info *nctri);
|
|
void set_default_batch_read_cmd_seq(struct _nctri_cmd_seq *cmd_seq);
|
|
void set_default_batch_write_cmd_seq(struct _nctri_cmd_seq *cmd_seq,
|
|
u32 write_cmd1, u32 write_cmd2);
|
|
unsigned int get_row_addr(unsigned int page_offset_for_next_blk,
|
|
unsigned int block, unsigned int page);
|
|
int fill_cmd_addr(u32 col_addr, u32 col_cycle, u32 row_addr, u32 row_cycle,
|
|
u8 *abuf);
|
|
int get_data_block_cnt_for_boot0_ecccode(struct nand_chip_info *nci,
|
|
u8 ecc_mode);
|
|
int get_random_cmd2(struct _nand_physic_op_par *npo);
|
|
int get_dummy_byte(int physic_page_size, int ecc_mode, int ecc_block_cnt,
|
|
int user_data_size);
|
|
struct nand_chip_info *nci_get_from_nctri(struct nand_controller_info *nctri,
|
|
unsigned int num);
|
|
s32 _change_all_nand_parameter(struct nand_controller_info *nctri,
|
|
u32 ddr_type, u32 pre_ddr_type, u32 dclk);
|
|
s32 _get_right_timing_para(struct nand_controller_info *nctri, u32 ddr_type,
|
|
u32 *good_sdr_edo, u32 *good_ddr_edo, u32 *good_ddr_delay);
|
|
s32 _setup_ddr_nand_force_to_sdr_para(struct nand_chip_info *nci);
|
|
s32 _check_scan_data(u32 first_check, u32 chip, u32 *scan_good_blk_no, u8 *main_buf);
|
|
void delete_nsi(void);
|
|
int delete_nssi(void);
|
|
|
|
extern int rawnand_read_parameter_page(struct nand_chip_info *nci, unsigned char *p);
|
|
|
|
#endif /*RAWNADN_CHIP_H*/
|