[PATCH v1 01/12] nvmem: microchip-otpc: Avoid writing a write-only register

Alexander Dahl posted 12 patches 1 year, 4 months ago
There is a newer version of this series
[PATCH v1 01/12] nvmem: microchip-otpc: Avoid writing a write-only register
Posted by Alexander Dahl 1 year, 4 months ago
The OTPC Control Register (OTPC_CR) has just write-only members.
Reading from that register leads to a warning in OTPC Write Protection
Status Register (OTPC_WPSR) in field Software Error Type (SWETYP) of
type READ_WO (A write-only register has been read (warning).)

Just create the register write content from scratch is sufficient here.

Signed-off-by: Alexander Dahl <ada@thorsis.com>
---
 drivers/nvmem/microchip-otpc.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/nvmem/microchip-otpc.c b/drivers/nvmem/microchip-otpc.c
index 7cf81738a3e0..03e60b99f2c9 100644
--- a/drivers/nvmem/microchip-otpc.c
+++ b/drivers/nvmem/microchip-otpc.c
@@ -82,7 +82,7 @@ static int mchp_otpc_prepare_read(struct mchp_otpc *otpc,
 	writel_relaxed(tmp, otpc->base + MCHP_OTPC_MR);
 
 	/* Set read. */
-	tmp = readl_relaxed(otpc->base + MCHP_OTPC_CR);
+	tmp = 0;
 	tmp |= MCHP_OTPC_CR_READ;
 	writel_relaxed(tmp, otpc->base + MCHP_OTPC_CR);
 
-- 
2.39.2
Re: [PATCH v1 01/12] nvmem: microchip-otpc: Avoid writing a write-only register
Posted by claudiu beznea 1 year, 3 months ago
Hi, ALexander,

On 21.08.2024 13:59, Alexander Dahl wrote:
> The OTPC Control Register (OTPC_CR) has just write-only members.
> Reading from that register leads to a warning in OTPC Write Protection
> Status Register (OTPC_WPSR) in field Software Error Type (SWETYP) of
> type READ_WO (A write-only register has been read (warning).)
> 
> Just create the register write content from scratch is sufficient here.
> 
> Signed-off-by: Alexander Dahl <ada@thorsis.com>

Maybe worth a Fixes tag here.

> ---
>  drivers/nvmem/microchip-otpc.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/nvmem/microchip-otpc.c b/drivers/nvmem/microchip-otpc.c
> index 7cf81738a3e0..03e60b99f2c9 100644
> --- a/drivers/nvmem/microchip-otpc.c
> +++ b/drivers/nvmem/microchip-otpc.c
> @@ -82,7 +82,7 @@ static int mchp_otpc_prepare_read(struct mchp_otpc *otpc,
>  	writel_relaxed(tmp, otpc->base + MCHP_OTPC_MR);
>  
>  	/* Set read. */
> -	tmp = readl_relaxed(otpc->base + MCHP_OTPC_CR);
> +	tmp = 0;
>  	tmp |= MCHP_OTPC_CR_READ;
>  	writel_relaxed(tmp, otpc->base + MCHP_OTPC_CR);

	writel_relaxed(MCHP_OTPC_CR_READ, otpc->base + MCHP_OTPC_CR);

should be enough here.

Thank you,
Claudiu Beznea

>