[PATCHv2] dmaengine: fsl_raid: switch __b32 to u32
From: Rosen Penev
Date: Thu Sep 10 2026 - 15:47:53 EST
The register maps in fsl_raid.h annotate every field as __be32, but
they are accessed only through ioread32be()/iowrite32be(), which
already perform the byte swap and take plain u32 __iomem pointers.
The __be32 annotation therefore makes sparse reject each access:
drivers/dma/fsl_raid.c:116:17: sparse: incorrect type in argument 1
(different base types) ... got restricted __be32 [noderef] __iomem *
Drop __be32 from struct fsl_re_ctrl and struct fsl_re_chan_cfg; the
descriptor/CDB structures written via cpu_to_be32() keep their
annotations.
Reported-by: kernel test robot <lkp@xxxxxxxxx>
Closes: https://lore.kernel.org/oe-kbuild-all/202608200637.ro1CqMxi-lkp@xxxxxxxxx/
Fixes: 68b7fbc23529 ("dma: fsl_raid: keep MMIO bases as void __iomem and cast at access")
Assisted-by: opencode:deepseek-v4-flash-free
Signed-off-by: Rosen Penev <rosenp@xxxxxxxxx>
Reviewed-by: Frank Li <Frank.Li@xxxxxxx>
---
v2: split patch up.
drivers/dma/fsl_raid.h | 54 +++++++++++++++++++++---------------------
1 file changed, 27 insertions(+), 27 deletions(-)
diff --git a/drivers/dma/fsl_raid.h b/drivers/dma/fsl_raid.h
index adbfede330a7..6fde5192ab77 100644
--- a/drivers/dma/fsl_raid.h
+++ b/drivers/dma/fsl_raid.h
@@ -110,59 +110,59 @@
struct fsl_re_ctrl {
/* General Configuration Registers */
- __be32 global_config; /* Global Configuration Register */
+ u32 global_config; /* Global Configuration Register */
u8 rsvd1[4];
- __be32 galois_field_config; /* Galois Field Configuration Register */
+ u32 galois_field_config; /* Galois Field Configuration Register */
u8 rsvd2[4];
- __be32 jq_wrr_config; /* WRR Configuration register */
+ u32 jq_wrr_config; /* WRR Configuration register */
u8 rsvd3[4];
- __be32 crc_config; /* CRC Configuration register */
+ u32 crc_config; /* CRC Configuration register */
u8 rsvd4[228];
- __be32 system_reset; /* System Reset Register */
+ u32 system_reset; /* System Reset Register */
u8 rsvd5[252];
- __be32 global_status; /* Global Status Register */
+ u32 global_status; /* Global Status Register */
u8 rsvd6[832];
- __be32 re_liodn_base; /* LIODN Base Register */
+ u32 re_liodn_base; /* LIODN Base Register */
u8 rsvd7[1712];
- __be32 re_version_id; /* Version ID register of RE */
- __be32 re_version_id_2; /* Version ID 2 register of RE */
+ u32 re_version_id; /* Version ID register of RE */
+ u32 re_version_id_2; /* Version ID 2 register of RE */
u8 rsvd8[512];
- __be32 host_config; /* Host I/F Configuration Register */
+ u32 host_config; /* Host I/F Configuration Register */
};
struct fsl_re_chan_cfg {
/* Registers for JR interface */
- __be32 jr_config_0; /* Job Queue Configuration 0 Register */
- __be32 jr_config_1; /* Job Queue Configuration 1 Register */
- __be32 jr_interrupt_status; /* Job Queue Interrupt Status Register */
+ u32 jr_config_0; /* Job Queue Configuration 0 Register */
+ u32 jr_config_1; /* Job Queue Configuration 1 Register */
+ u32 jr_interrupt_status; /* Job Queue Interrupt Status Register */
u8 rsvd1[4];
- __be32 jr_command; /* Job Queue Command Register */
+ u32 jr_command; /* Job Queue Command Register */
u8 rsvd2[4];
- __be32 jr_status; /* Job Queue Status Register */
+ u32 jr_status; /* Job Queue Status Register */
u8 rsvd3[228];
/* Input Ring */
- __be32 inbring_base_h; /* Inbound Ring Base Address Register - High */
- __be32 inbring_base_l; /* Inbound Ring Base Address Register - Low */
- __be32 inbring_size; /* Inbound Ring Size Register */
+ u32 inbring_base_h; /* Inbound Ring Base Address Register - High */
+ u32 inbring_base_l; /* Inbound Ring Base Address Register - Low */
+ u32 inbring_size; /* Inbound Ring Size Register */
u8 rsvd4[4];
- __be32 inbring_slot_avail; /* Inbound Ring Slot Available Register */
+ u32 inbring_slot_avail; /* Inbound Ring Slot Available Register */
u8 rsvd5[4];
- __be32 inbring_add_job; /* Inbound Ring Add Job Register */
+ u32 inbring_add_job; /* Inbound Ring Add Job Register */
u8 rsvd6[4];
- __be32 inbring_cnsmr_indx; /* Inbound Ring Consumer Index Register */
+ u32 inbring_cnsmr_indx; /* Inbound Ring Consumer Index Register */
u8 rsvd7[220];
/* Output Ring */
- __be32 oubring_base_h; /* Outbound Ring Base Address Register - High */
- __be32 oubring_base_l; /* Outbound Ring Base Address Register - Low */
- __be32 oubring_size; /* Outbound Ring Size Register */
+ u32 oubring_base_h; /* Outbound Ring Base Address Register - High */
+ u32 oubring_base_l; /* Outbound Ring Base Address Register - Low */
+ u32 oubring_size; /* Outbound Ring Size Register */
u8 rsvd8[4];
- __be32 oubring_job_rmvd; /* Outbound Ring Job Removed Register */
+ u32 oubring_job_rmvd; /* Outbound Ring Job Removed Register */
u8 rsvd9[4];
- __be32 oubring_slot_full; /* Outbound Ring Slot Full Register */
+ u32 oubring_slot_full; /* Outbound Ring Slot Full Register */
u8 rsvd10[4];
- __be32 oubring_prdcr_indx; /* Outbound Ring Producer Index */
+ u32 oubring_prdcr_indx; /* Outbound Ring Producer Index */
};
/*
--
2.55.0