Patchwork [U-Boot] mtd: atmel-nand: use pmecc_readl(b)/pmecc_writel to access the pmecc register

login
register
mail settings
Submitter Wu, Josh
Date June 24, 2014, 10:18 a.m.
Message ID <1403605086-3975-1-git-send-email-josh.wu@atmel.com>
Download mbox | patch
Permalink /patch/363371/
State Under Review
Delegated to: Andreas Bießmann
Headers show

Comments

Wu, Josh - June 24, 2014, 10:18 a.m.
We defined the macro pmecc_readl(b)/pmecc_writel for pmecc register access.
But in the driver we also use the readl(b)/writel.
To keep consistent, this patch make all use pmecc_readl(b)/pmecc_writel.

Signed-off-by: Josh Wu <josh.wu@atmel.com>
---
 drivers/mtd/nand/atmel_nand.c     |   21 +++++++++++----------
 drivers/mtd/nand/atmel_nand_ecc.h |    3 +++
 2 files changed, 14 insertions(+), 10 deletions(-)
Andreas Bießmann - Aug. 28, 2014, 11:12 a.m.
On 06/24/2014 12:18 PM, Josh Wu wrote:
> We defined the macro pmecc_readl(b)/pmecc_writel for pmecc register access.
> But in the driver we also use the readl(b)/writel.
> To keep consistent, this patch make all use pmecc_readl(b)/pmecc_writel.
> 
> Signed-off-by: Josh Wu <josh.wu@atmel.com>

Reviewed-by: Andreas Bießmann <andreas.devel@googlemail.com>

> ---
>  drivers/mtd/nand/atmel_nand.c     |   21 +++++++++++----------
>  drivers/mtd/nand/atmel_nand_ecc.h |    3 +++
>  2 files changed, 14 insertions(+), 10 deletions(-)
> 
> diff --git a/drivers/mtd/nand/atmel_nand.c b/drivers/mtd/nand/atmel_nand.c
> index e73834d..ccc4dc0 100644
> --- a/drivers/mtd/nand/atmel_nand.c
> +++ b/drivers/mtd/nand/atmel_nand.c
> @@ -164,7 +164,7 @@ static void pmecc_gen_syndrome(struct mtd_info *mtd, int sector)
>  
>  	/* Fill odd syndromes */
>  	for (i = 0; i < host->pmecc_corr_cap; i++) {
> -		value = readl(&host->pmecc->rem_port[sector].rem[i / 2]);
> +		value = pmecc_readl(host->pmecc, rem_port[sector].rem[i / 2]);
>  		if (i & 1)
>  			value >>= 16;
>  		value &= 0xffff;
> @@ -392,10 +392,11 @@ static int pmecc_err_location(struct mtd_info *mtd)
>  	int16_t *smu = host->pmecc_smu;
>  	int timeout = PMECC_MAX_TIMEOUT_US;
>  
> -	writel(PMERRLOC_DISABLE, &host->pmerrloc->eldis);
> +	pmecc_writel(host->pmerrloc, eldis, PMERRLOC_DISABLE);
>  
>  	for (i = 0; i <= host->pmecc_lmu[cap + 1] >> 1; i++) {
> -		writel(smu[(cap + 1) * num + i], &host->pmerrloc->sigma[i]);
> +		pmecc_writel(host->pmerrloc, sigma[i],
> +			     smu[(cap + 1) * num + i]);
>  		err_nbr++;
>  	}
>  
> @@ -403,12 +404,12 @@ static int pmecc_err_location(struct mtd_info *mtd)
>  	if (sector_size == 1024)
>  		val |= PMERRLOC_ELCFG_SECTOR_1024;
>  
> -	writel(val, &host->pmerrloc->elcfg);
> -	writel(sector_size * 8 + host->pmecc_degree * cap,
> -			&host->pmerrloc->elen);
> +	pmecc_writel(host->pmerrloc, elcfg, val);
> +	pmecc_writel(host->pmerrloc, elen,
> +		     sector_size * 8 + host->pmecc_degree * cap);
>  
>  	while (--timeout) {
> -		if (readl(&host->pmerrloc->elisr) & PMERRLOC_CALC_DONE)
> +		if (pmecc_readl(host->pmerrloc, elisr) & PMERRLOC_CALC_DONE)
>  			break;
>  		WATCHDOG_RESET();
>  		udelay(1);
> @@ -419,7 +420,7 @@ static int pmecc_err_location(struct mtd_info *mtd)
>  		return -1;
>  	}
>  
> -	roots_nbr = (readl(&host->pmerrloc->elisr) & PMERRLOC_ERR_NUM_MASK)
> +	roots_nbr = (pmecc_readl(host->pmerrloc, elisr) & PMERRLOC_ERR_NUM_MASK)
>  			>> 8;
>  	/* Number of roots == degree of smu hence <= cap */
>  	if (roots_nbr == host->pmecc_lmu[cap + 1] >> 1)
> @@ -443,7 +444,7 @@ static void pmecc_correct_data(struct mtd_info *mtd, uint8_t *buf, uint8_t *ecc,
>  	sector_size = host->pmecc_sector_size;
>  
>  	while (err_nbr) {
> -		tmp = readl(&host->pmerrloc->el[i]) - 1;
> +		tmp = pmecc_readl(host->pmerrloc, el[i]) - 1;
>  		byte_pos = tmp / 8;
>  		bit_pos  = tmp % 8;
>  
> @@ -597,7 +598,7 @@ static int atmel_nand_pmecc_write_page(struct mtd_info *mtd,
>  
>  			pos = i * host->pmecc_bytes_per_sector + j;
>  			chip->oob_poi[eccpos[pos]] =
> -				readb(&host->pmecc->ecc_port[i].ecc[j]);
> +				pmecc_readb(host->pmecc, ecc_port[i].ecc[j]);
>  		}
>  	}
>  	chip->write_buf(mtd, chip->oob_poi, mtd->oobsize);
> diff --git a/drivers/mtd/nand/atmel_nand_ecc.h b/drivers/mtd/nand/atmel_nand_ecc.h
> index 55d7711..92d4ec5 100644
> --- a/drivers/mtd/nand/atmel_nand_ecc.h
> +++ b/drivers/mtd/nand/atmel_nand_ecc.h
> @@ -34,6 +34,9 @@
>  #define pmecc_readl(addr, reg) \
>  	readl(&addr->reg)
>  
> +#define pmecc_readb(addr, reg) \
> +	readb(&addr->reg)
> +
>  #define pmecc_writel(addr, reg, value) \
>  	writel((value), &addr->reg)
>  
>

Patch

diff --git a/drivers/mtd/nand/atmel_nand.c b/drivers/mtd/nand/atmel_nand.c
index e73834d..ccc4dc0 100644
--- a/drivers/mtd/nand/atmel_nand.c
+++ b/drivers/mtd/nand/atmel_nand.c
@@ -164,7 +164,7 @@  static void pmecc_gen_syndrome(struct mtd_info *mtd, int sector)
 
 	/* Fill odd syndromes */
 	for (i = 0; i < host->pmecc_corr_cap; i++) {
-		value = readl(&host->pmecc->rem_port[sector].rem[i / 2]);
+		value = pmecc_readl(host->pmecc, rem_port[sector].rem[i / 2]);
 		if (i & 1)
 			value >>= 16;
 		value &= 0xffff;
@@ -392,10 +392,11 @@  static int pmecc_err_location(struct mtd_info *mtd)
 	int16_t *smu = host->pmecc_smu;
 	int timeout = PMECC_MAX_TIMEOUT_US;
 
-	writel(PMERRLOC_DISABLE, &host->pmerrloc->eldis);
+	pmecc_writel(host->pmerrloc, eldis, PMERRLOC_DISABLE);
 
 	for (i = 0; i <= host->pmecc_lmu[cap + 1] >> 1; i++) {
-		writel(smu[(cap + 1) * num + i], &host->pmerrloc->sigma[i]);
+		pmecc_writel(host->pmerrloc, sigma[i],
+			     smu[(cap + 1) * num + i]);
 		err_nbr++;
 	}
 
@@ -403,12 +404,12 @@  static int pmecc_err_location(struct mtd_info *mtd)
 	if (sector_size == 1024)
 		val |= PMERRLOC_ELCFG_SECTOR_1024;
 
-	writel(val, &host->pmerrloc->elcfg);
-	writel(sector_size * 8 + host->pmecc_degree * cap,
-			&host->pmerrloc->elen);
+	pmecc_writel(host->pmerrloc, elcfg, val);
+	pmecc_writel(host->pmerrloc, elen,
+		     sector_size * 8 + host->pmecc_degree * cap);
 
 	while (--timeout) {
-		if (readl(&host->pmerrloc->elisr) & PMERRLOC_CALC_DONE)
+		if (pmecc_readl(host->pmerrloc, elisr) & PMERRLOC_CALC_DONE)
 			break;
 		WATCHDOG_RESET();
 		udelay(1);
@@ -419,7 +420,7 @@  static int pmecc_err_location(struct mtd_info *mtd)
 		return -1;
 	}
 
-	roots_nbr = (readl(&host->pmerrloc->elisr) & PMERRLOC_ERR_NUM_MASK)
+	roots_nbr = (pmecc_readl(host->pmerrloc, elisr) & PMERRLOC_ERR_NUM_MASK)
 			>> 8;
 	/* Number of roots == degree of smu hence <= cap */
 	if (roots_nbr == host->pmecc_lmu[cap + 1] >> 1)
@@ -443,7 +444,7 @@  static void pmecc_correct_data(struct mtd_info *mtd, uint8_t *buf, uint8_t *ecc,
 	sector_size = host->pmecc_sector_size;
 
 	while (err_nbr) {
-		tmp = readl(&host->pmerrloc->el[i]) - 1;
+		tmp = pmecc_readl(host->pmerrloc, el[i]) - 1;
 		byte_pos = tmp / 8;
 		bit_pos  = tmp % 8;
 
@@ -597,7 +598,7 @@  static int atmel_nand_pmecc_write_page(struct mtd_info *mtd,
 
 			pos = i * host->pmecc_bytes_per_sector + j;
 			chip->oob_poi[eccpos[pos]] =
-				readb(&host->pmecc->ecc_port[i].ecc[j]);
+				pmecc_readb(host->pmecc, ecc_port[i].ecc[j]);
 		}
 	}
 	chip->write_buf(mtd, chip->oob_poi, mtd->oobsize);
diff --git a/drivers/mtd/nand/atmel_nand_ecc.h b/drivers/mtd/nand/atmel_nand_ecc.h
index 55d7711..92d4ec5 100644
--- a/drivers/mtd/nand/atmel_nand_ecc.h
+++ b/drivers/mtd/nand/atmel_nand_ecc.h
@@ -34,6 +34,9 @@ 
 #define pmecc_readl(addr, reg) \
 	readl(&addr->reg)
 
+#define pmecc_readb(addr, reg) \
+	readb(&addr->reg)
+
 #define pmecc_writel(addr, reg, value) \
 	writel((value), &addr->reg)