u32 nandc4_ctrl_init(struct nandc_bit_cmd * bitcmd, struct nandc_host *host) { HI_NOTUSED(host); bitcmd->op_erase = nandc4_op_erase; bitcmd->op_reset = nandc4_op_reset; bitcmd->op_read_id = nandc4_op_read_id; bitcmd->op_read_start = nandc4_op_read_start; bitcmd->op_read_continue = nandc4_op_read_continue; bitcmd->op_read_end = nandc4_op_read_end; bitcmd->op_write_start = nandc4_op_wirte_start; bitcmd->op_write_continue = nandc4_op_wirte_continue; bitcmd->op_write_end = nandc4_op_wirte_end; bitcmd->op_segment_start = nandc4_segment_first; bitcmd->op_segment_end = nandc4_segment_last; bitcmd->intmask_all = nandc4_int_enable_all; bitcmd->intdis_all = nandc4_int_disable_all; bitcmd->intclr_all = nandc4_int_clear_all; bitcmd->ecc_err_none = nandc4_ecc_err_none; bitcmd->ecc_err_valid = nandc4_ecc_err_valid; bitcmd->ecc_err_invalid = nandc4_ecc_err_invalid; bitcmd->ecc_all = nandc4_ecc_all; bitcmd->ecc_none = nandc4_noecc_all; bitcmd->ecc_oob = nandc4_ecc_oob; /*set NANDC4_REG_PWIDTH*/ *(volatile int*)((int)host->regbase + NANDC4_REG_PWIDTH) = 0x00000555; return NANDC_OK; }
/** * 作用:nandc_v600的寄存器的命令字的初始化函数 * * 参数: * @bitcmd ---要设置的nandc_bit_cmd的命令字结构指针 * @host ---没有使用 * 描述:初始化nandc_host结构中的命令字参数 */ u32 nandc6_ctrl_init(struct nandc_bit_cmd *bitcmd, struct nandc_host *host) { HI_NOTUSED(host); /*控制器命令字的初始化操作函数*/ bitcmd->op_erase = nandc6_op_erase; bitcmd->op_reset = nandc6_op_reset; bitcmd->op_read_id = nandc6_op_read_id; bitcmd->op_read_start = nandc6_op_read_start; bitcmd->op_read_continue = nandc6_op_read_continue; bitcmd->op_read_end = nandc6_op_read_end; bitcmd->op_write_start = nandc6_op_wirte_start; bitcmd->op_write_continue = nandc6_op_wirte_continue; bitcmd->op_write_end = nandc6_op_wirte_end; bitcmd->op_segment_start = nandc6_segment_first; bitcmd->op_segment_end = nandc6_segment_last; bitcmd->intmask_all = nandc6_int_enable_all; bitcmd->intdis_all = nandc6_int_disable_all; bitcmd->inten_all = nandc6_int_enable_all; bitcmd->intclr_all = nandc6_int_clear_all; bitcmd->ecc_err_none = nandc6_ecc_err_none; bitcmd->ecc_err_valid = nandc6_ecc_err_valid; bitcmd->ecc_err_invalid = nandc6_ecc_err_invalid; bitcmd->ecc_all = nandc6_ecc_all; bitcmd->ecc_none = nandc6_noecc_all; bitcmd->ecc_oob = nandc6_ecc_oob; bitcmd->dma_read = nandc6_dma_read; bitcmd->dma_read_oob_only = nandc6_dma_read_oob_only; bitcmd->dma_write = nandc6_dma_write; /*nandc控制器寄存器的写操作*/ writel(0x555, (unsigned)(host->regbase + HI_NFC_PWIDTH_OFFSET)); /*lint !e124*/ host->nand_4bitecc_table = &nand_id_use_4bitecc_table[0][0]; return NANDC_OK; }