diff options
| -rw-r--r-- | nand_spl/nand_boot_fsl_elbc.c | 47 | 
1 files changed, 25 insertions, 22 deletions
| diff --git a/nand_spl/nand_boot_fsl_elbc.c b/nand_spl/nand_boot_fsl_elbc.c index 502605b1d..e9d649743 100644 --- a/nand_spl/nand_boot_fsl_elbc.c +++ b/nand_spl/nand_boot_fsl_elbc.c @@ -66,39 +66,42 @@ static void nand_load(unsigned int offs, int uboot_size, uchar *dst)  	if (large) {  		fmr |= FMR_ECCM; -		out_be32(®s->fcr, (NAND_CMD_READ0 << FCR_CMD0_SHIFT) | -		                     (NAND_CMD_READSTART << FCR_CMD1_SHIFT)); -		out_be32(®s->fir, -		         (FIR_OP_CW0 << FIR_OP0_SHIFT) | -		         (FIR_OP_CA  << FIR_OP1_SHIFT) | -		         (FIR_OP_PA  << FIR_OP2_SHIFT) | -		         (FIR_OP_CW1 << FIR_OP3_SHIFT) | -		         (FIR_OP_RBW << FIR_OP4_SHIFT)); +		__raw_writel((NAND_CMD_READ0 << FCR_CMD0_SHIFT) | +			(NAND_CMD_READSTART << FCR_CMD1_SHIFT), +			®s->fcr); +		__raw_writel( +			(FIR_OP_CW0 << FIR_OP0_SHIFT) | +			(FIR_OP_CA  << FIR_OP1_SHIFT) | +			(FIR_OP_PA  << FIR_OP2_SHIFT) | +			(FIR_OP_CW1 << FIR_OP3_SHIFT) | +			(FIR_OP_RBW << FIR_OP4_SHIFT), +			®s->fir);  	} else { -		out_be32(®s->fcr, NAND_CMD_READ0 << FCR_CMD0_SHIFT); -		out_be32(®s->fir, -		         (FIR_OP_CW0 << FIR_OP0_SHIFT) | -		         (FIR_OP_CA  << FIR_OP1_SHIFT) | -		         (FIR_OP_PA  << FIR_OP2_SHIFT) | -		         (FIR_OP_RBW << FIR_OP3_SHIFT)); +		__raw_writel(NAND_CMD_READ0 << FCR_CMD0_SHIFT, ®s->fcr); +		__raw_writel( +			(FIR_OP_CW0 << FIR_OP0_SHIFT) | +			(FIR_OP_CA  << FIR_OP1_SHIFT) | +			(FIR_OP_PA  << FIR_OP2_SHIFT) | +			(FIR_OP_RBW << FIR_OP3_SHIFT), +			®s->fir);  	} -	out_be32(®s->fbcr, 0); -	clrsetbits_be32(®s->bank[0].br, BR_DECC, BR_DECC_CHK_GEN); +	__raw_writel(0, ®s->fbcr);  	while (pos < uboot_size) {  		int i = 0; -		out_be32(®s->fbar, offs >> block_shift); +		__raw_writel(offs >> block_shift, ®s->fbar);  		do {  			int j;  			unsigned int page_offs = (offs & (block_size - 1)) << 1; -			out_be32(®s->ltesr, ~0); -			out_be32(®s->lteatr, 0); -			out_be32(®s->fpar, page_offs); -			out_be32(®s->fmr, fmr); -			out_be32(®s->lsor, 0); +			__raw_writel(~0, ®s->ltesr); +			__raw_writel(0, ®s->lteatr); +			__raw_writel(page_offs, ®s->fpar); +			__raw_writel(fmr, ®s->fmr); +			sync(); +			__raw_writel(0, ®s->lsor);  			nand_wait();  			page_offs %= WINDOW_SIZE; |