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;
}
Exemple #2
0
/**
 * 作用: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;
}