Hi Frank, Thanks for suggestions >> static void mx53_ecspi_rx_target(struct spi_imx_data *spi_imx) >> { >> - u32 val = be32_to_cpu(readl(spi_imx->base + MXC_CSPIRXDATA)); >> + u32 val = readl(spi_imx->base + MXC_CSPIRXDATA); > >be32_to_cpu() is necessary in little endian system. You can't simple remove >it. you can use ioread32be here. I agree , i will update with ioread32be >> >> if (spi_imx->rx_buf) { >> int n_bytes = spi_imx->target_burst % sizeof(val); >> @@ -436,7 +436,7 @@ static void mx53_ecspi_tx_target(struct spi_imx_data *spi_imx) >> if (spi_imx->tx_buf) { >> memcpy(((u8 *)&val) + sizeof(val) - n_bytes, >> spi_imx->tx_buf, n_bytes); >> - val = cpu_to_be32(val); >> + val = (__force u32)cpu_to_be32(val); >> spi_imx->tx_buf += n_bytes; >> } > >Original code logic is strange, you'd better to remove cpu_to_be32 here. I will remove > >below writel change to iowrite32be(). Sure > >Frank Best Regards, Hardev ________________________________________ From: Frank Li <Frank.li@xxxxxxx> Sent: Friday, September 27, 2024 10:23 PM To: Hardevsinh Palaniya <hardevsinh.palaniya@xxxxxxxxxxxxxxxxx> Cc: linux-spi@xxxxxxxxxxxxxxx <linux-spi@xxxxxxxxxxxxxxx>; olteanv@xxxxxxxxx <olteanv@xxxxxxxxx>; broonie@xxxxxxxxxx <broonie@xxxxxxxxxx>; Han Xu <han.xu@xxxxxxx>; Shawn Guo <shawnguo@xxxxxxxxxx>; Sascha Hauer <s.hauer@xxxxxxxxxxxxxx>; Pengutronix Kernel Team <kernel@xxxxxxxxxxxxxx>; Fabio Estevam <festevam@xxxxxxxxx>; Haibo Chen <haibo.chen@xxxxxxx>; Yogesh Gaur <yogeshgaur.83@xxxxxxxxx>; imx@xxxxxxxxxxxxxxx <imx@xxxxxxxxxxxxxxx>; linux-kernel@xxxxxxxxxxxxxxx <linux-kernel@xxxxxxxxxxxxxxx>; linux-arm-kernel@xxxxxxxxxxxxxxxxxxx <linux-arm-kernel@xxxxxxxxxxxxxxxxxxx> Subject: Re: [PATCH 3/4] spi: spi-imx: Fix casting warnings CAUTION: This email originated from outside the organization. Do not click links or open attachments unless you recognize the sender and know the content is safe. On Fri, Sep 27, 2024 at 06:58:34PM +0530, Hardevsinh Palaniya wrote: > Sparse warnings: > > drivers/spi/spi-imx.c:410:19: warning: cast to restricted __be32 > drivers/spi/spi-imx.c:410:19: warning: cast to restricted __be32 > drivers/spi/spi-imx.c:410:19: warning: cast to restricted __be32 > drivers/spi/spi-imx.c:410:19: warning: cast to restricted __be32 > drivers/spi/spi-imx.c:410:19: warning: cast to restricted __be32 > drivers/spi/spi-imx.c:410:19: warning: cast to restricted __be32 > drivers/spi/spi-imx.c:439:21: warning: incorrect type in assignment (different base types) > drivers/spi/spi-imx.c:439:21: expected unsigned int [addressable] [usertype] val > drivers/spi/spi-imx.c:439:21: got restricted __be32 [usertype] > > Signed-off-by: Hardevsinh Palaniya <hardevsinh.palaniya@xxxxxxxxxxxxxxxxx> > --- > drivers/spi/spi-imx.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/spi/spi-imx.c b/drivers/spi/spi-imx.c > index 85bd1a82a34e..8d09d9c1c556 100644 > --- a/drivers/spi/spi-imx.c > +++ b/drivers/spi/spi-imx.c > @@ -407,7 +407,7 @@ static void spi_imx_buf_tx_swap(struct spi_imx_data *spi_imx) > > static void mx53_ecspi_rx_target(struct spi_imx_data *spi_imx) > { > - u32 val = be32_to_cpu(readl(spi_imx->base + MXC_CSPIRXDATA)); > + u32 val = readl(spi_imx->base + MXC_CSPIRXDATA); be32_to_cpu() is necessary in little endian system. You can't simple remove it. you can use ioread32be here. > > if (spi_imx->rx_buf) { > int n_bytes = spi_imx->target_burst % sizeof(val); > @@ -436,7 +436,7 @@ static void mx53_ecspi_tx_target(struct spi_imx_data *spi_imx) > if (spi_imx->tx_buf) { > memcpy(((u8 *)&val) + sizeof(val) - n_bytes, > spi_imx->tx_buf, n_bytes); > - val = cpu_to_be32(val); > + val = (__force u32)cpu_to_be32(val); > spi_imx->tx_buf += n_bytes; > } Original code logic is strange, you'd better to remove cpu_to_be32 here. below writel change to iowrite32be(). Frank > > -- > 2.43.0 >