Skip to content

Commit d8403b9

Browse files
rogerqmiquelraynal
authored andcommitted
mtd: rawnand: omap_elm: Fix incorrect type in assignment
Once the ECC word endianness is converted to BE32, we force cast it to u32 so we can use elm_write_reg() which in turn uses writel(). Fixes below sparse warnings: drivers/mtd/nand/raw/omap_elm.c:180:37: sparse: expected unsigned int [usertype] val drivers/mtd/nand/raw/omap_elm.c:180:37: sparse: got restricted __be32 [usertype] drivers/mtd/nand/raw/omap_elm.c:185:37: sparse: expected unsigned int [usertype] val drivers/mtd/nand/raw/omap_elm.c:185:37: sparse: got restricted __be32 [usertype] drivers/mtd/nand/raw/omap_elm.c:190:37: sparse: expected unsigned int [usertype] val drivers/mtd/nand/raw/omap_elm.c:190:37: sparse: got restricted __be32 [usertype] >> drivers/mtd/nand/raw/omap_elm.c:200:40: sparse: sparse: restricted __be32 degrades to integer drivers/mtd/nand/raw/omap_elm.c:206:39: sparse: sparse: restricted __be32 degrades to integer drivers/mtd/nand/raw/omap_elm.c:210:37: sparse: expected unsigned int [assigned] [usertype] val drivers/mtd/nand/raw/omap_elm.c:210:37: sparse: got restricted __be32 [usertype] drivers/mtd/nand/raw/omap_elm.c:213:37: sparse: expected unsigned int [assigned] [usertype] val drivers/mtd/nand/raw/omap_elm.c:213:37: sparse: got restricted __be32 [usertype] drivers/mtd/nand/raw/omap_elm.c:216:37: sparse: expected unsigned int [assigned] [usertype] val drivers/mtd/nand/raw/omap_elm.c:216:37: sparse: got restricted __be32 [usertype] drivers/mtd/nand/raw/omap_elm.c:219:37: sparse: expected unsigned int [assigned] [usertype] val drivers/mtd/nand/raw/omap_elm.c:219:37: sparse: got restricted __be32 [usertype] drivers/mtd/nand/raw/omap_elm.c:222:37: sparse: expected unsigned int [assigned] [usertype] val drivers/mtd/nand/raw/omap_elm.c:222:37: sparse: got restricted __be32 [usertype] drivers/mtd/nand/raw/omap_elm.c:225:37: sparse: expected unsigned int [assigned] [usertype] val drivers/mtd/nand/raw/omap_elm.c:225:37: sparse: got restricted __be32 [usertype] drivers/mtd/nand/raw/omap_elm.c:228:39: sparse: sparse: restricted __be32 degrades to integer Fixes: bf22433 ("mtd: devices: elm: Add support for ELM error correction") Reported-by: kernel test robot <lkp@intel.com> Closes: https://lore.kernel.org/oe-kbuild-all/202306212211.WDXokuWh-lkp@intel.com/ Signed-off-by: Roger Quadros <rogerq@kernel.org> Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com> Link: https://lore.kernel.org/linux-mtd/20230624184021.7740-1-rogerq@kernel.org
1 parent f5a0506 commit d8403b9

File tree

1 file changed

+12
-12
lines changed

1 file changed

+12
-12
lines changed

drivers/mtd/nand/raw/omap_elm.c

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -177,17 +177,17 @@ static void elm_load_syndrome(struct elm_info *info,
177177
switch (info->bch_type) {
178178
case BCH8_ECC:
179179
/* syndrome fragment 0 = ecc[9-12B] */
180-
val = cpu_to_be32(*(u32 *) &ecc[9]);
180+
val = (__force u32)cpu_to_be32(*(u32 *)&ecc[9]);
181181
elm_write_reg(info, offset, val);
182182

183183
/* syndrome fragment 1 = ecc[5-8B] */
184184
offset += 4;
185-
val = cpu_to_be32(*(u32 *) &ecc[5]);
185+
val = (__force u32)cpu_to_be32(*(u32 *)&ecc[5]);
186186
elm_write_reg(info, offset, val);
187187

188188
/* syndrome fragment 2 = ecc[1-4B] */
189189
offset += 4;
190-
val = cpu_to_be32(*(u32 *) &ecc[1]);
190+
val = (__force u32)cpu_to_be32(*(u32 *)&ecc[1]);
191191
elm_write_reg(info, offset, val);
192192

193193
/* syndrome fragment 3 = ecc[0B] */
@@ -197,35 +197,35 @@ static void elm_load_syndrome(struct elm_info *info,
197197
break;
198198
case BCH4_ECC:
199199
/* syndrome fragment 0 = ecc[20-52b] bits */
200-
val = (cpu_to_be32(*(u32 *) &ecc[3]) >> 4) |
200+
val = ((__force u32)cpu_to_be32(*(u32 *)&ecc[3]) >> 4) |
201201
((ecc[2] & 0xf) << 28);
202202
elm_write_reg(info, offset, val);
203203

204204
/* syndrome fragment 1 = ecc[0-20b] bits */
205205
offset += 4;
206-
val = cpu_to_be32(*(u32 *) &ecc[0]) >> 12;
206+
val = (__force u32)cpu_to_be32(*(u32 *)&ecc[0]) >> 12;
207207
elm_write_reg(info, offset, val);
208208
break;
209209
case BCH16_ECC:
210-
val = cpu_to_be32(*(u32 *) &ecc[22]);
210+
val = (__force u32)cpu_to_be32(*(u32 *)&ecc[22]);
211211
elm_write_reg(info, offset, val);
212212
offset += 4;
213-
val = cpu_to_be32(*(u32 *) &ecc[18]);
213+
val = (__force u32)cpu_to_be32(*(u32 *)&ecc[18]);
214214
elm_write_reg(info, offset, val);
215215
offset += 4;
216-
val = cpu_to_be32(*(u32 *) &ecc[14]);
216+
val = (__force u32)cpu_to_be32(*(u32 *)&ecc[14]);
217217
elm_write_reg(info, offset, val);
218218
offset += 4;
219-
val = cpu_to_be32(*(u32 *) &ecc[10]);
219+
val = (__force u32)cpu_to_be32(*(u32 *)&ecc[10]);
220220
elm_write_reg(info, offset, val);
221221
offset += 4;
222-
val = cpu_to_be32(*(u32 *) &ecc[6]);
222+
val = (__force u32)cpu_to_be32(*(u32 *)&ecc[6]);
223223
elm_write_reg(info, offset, val);
224224
offset += 4;
225-
val = cpu_to_be32(*(u32 *) &ecc[2]);
225+
val = (__force u32)cpu_to_be32(*(u32 *)&ecc[2]);
226226
elm_write_reg(info, offset, val);
227227
offset += 4;
228-
val = cpu_to_be32(*(u32 *) &ecc[0]) >> 16;
228+
val = (__force u32)cpu_to_be32(*(u32 *)&ecc[0]) >> 16;
229229
elm_write_reg(info, offset, val);
230230
break;
231231
default:

0 commit comments

Comments
 (0)