Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

soc: fsl: qe: fix sparse warnings for ucc_slow.c

Fixes the following sparse warnings, some of these endian issues are
real issues that need to be fixed.

drivers/soc/fsl/qe/ucc_slow.c:78:17: warning: incorrect type in assignment (different address spaces)
drivers/soc/fsl/qe/ucc_slow.c:78:17: expected struct ucc_slow *us_regs
drivers/soc/fsl/qe/ucc_slow.c:78:17: got struct ucc_slow [noderef] <asn:2> *us_regs
drivers/soc/fsl/qe/ucc_slow.c:81:18: warning: incorrect type in argument 1 (different address spaces)
drivers/soc/fsl/qe/ucc_slow.c:81:18: expected void const volatile [noderef] <asn:2> *addr
drivers/soc/fsl/qe/ucc_slow.c:81:18: got restricted __be32 *
drivers/soc/fsl/qe/ucc_slow.c:90:9: warning: incorrect type in argument 2 (different address spaces)
drivers/soc/fsl/qe/ucc_slow.c:90:9: expected void volatile [noderef] <asn:2> *addr
drivers/soc/fsl/qe/ucc_slow.c:90:9: got restricted __be32 *
drivers/soc/fsl/qe/ucc_slow.c:99:17: warning: incorrect type in assignment (different address spaces)
drivers/soc/fsl/qe/ucc_slow.c:99:17: expected struct ucc_slow *us_regs
drivers/soc/fsl/qe/ucc_slow.c:99:17: got struct ucc_slow [noderef] <asn:2> *us_regs
drivers/soc/fsl/qe/ucc_slow.c:102:18: warning: incorrect type in argument 1 (different address spaces)
drivers/soc/fsl/qe/ucc_slow.c:102:18: expected void const volatile [noderef] <asn:2> *addr
drivers/soc/fsl/qe/ucc_slow.c:102:18: got restricted __be32 *
drivers/soc/fsl/qe/ucc_slow.c:111:9: warning: incorrect type in argument 2 (different address spaces)
drivers/soc/fsl/qe/ucc_slow.c:111:9: expected void volatile [noderef] <asn:2> *addr
drivers/soc/fsl/qe/ucc_slow.c:111:9: got restricted __be32 *
drivers/soc/fsl/qe/ucc_slow.c:172:28: warning: Using plain integer as NULL pointer
drivers/soc/fsl/qe/ucc_slow.c:174:25: warning: cast removes address space '<asn:2>' of expression
drivers/soc/fsl/qe/ucc_slow.c:175:25: warning: cast removes address space '<asn:2>' of expression
drivers/soc/fsl/qe/ucc_slow.c:194:23: warning: incorrect type in assignment (different address spaces)
drivers/soc/fsl/qe/ucc_slow.c:194:23: expected struct ucc_slow_pram *us_pram
drivers/soc/fsl/qe/ucc_slow.c:194:23: got void [noderef] <asn:2> *
drivers/soc/fsl/qe/ucc_slow.c:204:9: warning: incorrect type in argument 2 (different address spaces)
drivers/soc/fsl/qe/ucc_slow.c:204:9: expected void volatile [noderef] <asn:2> *addr
drivers/soc/fsl/qe/ucc_slow.c:204:9: got restricted __be16 *
drivers/soc/fsl/qe/ucc_slow.c:229:41: warning: incorrect type in assignment (different address spaces)
drivers/soc/fsl/qe/ucc_slow.c:229:41: expected struct qe_bd *tx_bd
drivers/soc/fsl/qe/ucc_slow.c:229:41: got void [noderef] <asn:2> *
drivers/soc/fsl/qe/ucc_slow.c:232:17: warning: incorrect type in argument 2 (different address spaces)
drivers/soc/fsl/qe/ucc_slow.c:232:17: expected void volatile [noderef] <asn:2> *addr
drivers/soc/fsl/qe/ucc_slow.c:232:17: got restricted __be32 *
drivers/soc/fsl/qe/ucc_slow.c:234:17: warning: incorrect type in argument 2 (different address spaces)
drivers/soc/fsl/qe/ucc_slow.c:234:17: expected void volatile [noderef] <asn:2> *addr
drivers/soc/fsl/qe/ucc_slow.c:234:17: got unsigned int [usertype] *
drivers/soc/fsl/qe/ucc_slow.c:238:9: warning: incorrect type in argument 2 (different address spaces)
drivers/soc/fsl/qe/ucc_slow.c:238:9: expected void volatile [noderef] <asn:2> *addr
drivers/soc/fsl/qe/ucc_slow.c:238:9: got restricted __be32 *
drivers/soc/fsl/qe/ucc_slow.c:239:9: warning: cast from restricted __be32
drivers/soc/fsl/qe/ucc_slow.c:239:9: warning: incorrect type in argument 1 (different base types)
drivers/soc/fsl/qe/ucc_slow.c:239:9: expected unsigned int [usertype] val
drivers/soc/fsl/qe/ucc_slow.c:239:9: got restricted __be32 [usertype]
drivers/soc/fsl/qe/ucc_slow.c:239:9: warning: cast from restricted __be32
drivers/soc/fsl/qe/ucc_slow.c:239:9: warning: incorrect type in argument 2 (different address spaces)
drivers/soc/fsl/qe/ucc_slow.c:239:9: expected void volatile [noderef] <asn:2> *addr
drivers/soc/fsl/qe/ucc_slow.c:239:9: got unsigned int [usertype] *
drivers/soc/fsl/qe/ucc_slow.c:242:26: warning: incorrect type in assignment (different address spaces)
drivers/soc/fsl/qe/ucc_slow.c:242:26: expected struct qe_bd *rx_bd
drivers/soc/fsl/qe/ucc_slow.c:242:26: got void [noderef] <asn:2> *
drivers/soc/fsl/qe/ucc_slow.c:245:17: warning: incorrect type in argument 2 (different address spaces)
drivers/soc/fsl/qe/ucc_slow.c:245:17: expected void volatile [noderef] <asn:2> *addr
drivers/soc/fsl/qe/ucc_slow.c:245:17: got unsigned int [usertype] *
drivers/soc/fsl/qe/ucc_slow.c:247:17: warning: incorrect type in argument 2 (different address spaces)
drivers/soc/fsl/qe/ucc_slow.c:247:17: expected void volatile [noderef] <asn:2> *addr
drivers/soc/fsl/qe/ucc_slow.c:247:17: got restricted __be32 *
drivers/soc/fsl/qe/ucc_slow.c:251:9: warning: cast from restricted __be32
drivers/soc/fsl/qe/ucc_slow.c:251:9: warning: incorrect type in argument 1 (different base types)
drivers/soc/fsl/qe/ucc_slow.c:251:9: expected unsigned int [usertype] val
drivers/soc/fsl/qe/ucc_slow.c:251:9: got restricted __be32 [usertype]
drivers/soc/fsl/qe/ucc_slow.c:251:9: warning: cast from restricted __be32
drivers/soc/fsl/qe/ucc_slow.c:251:9: warning: incorrect type in argument 2 (different address spaces)
drivers/soc/fsl/qe/ucc_slow.c:251:9: expected void volatile [noderef] <asn:2> *addr
drivers/soc/fsl/qe/ucc_slow.c:251:9: got unsigned int [usertype] *
drivers/soc/fsl/qe/ucc_slow.c:252:9: warning: incorrect type in argument 2 (different address spaces)
drivers/soc/fsl/qe/ucc_slow.c:252:9: expected void volatile [noderef] <asn:2> *addr
drivers/soc/fsl/qe/ucc_slow.c:252:9: got restricted __be32 *
drivers/soc/fsl/qe/ucc_slow.c:276:39: warning: mixing different enum types:
drivers/soc/fsl/qe/ucc_slow.c:276:39: unsigned int enum ucc_slow_tx_oversampling_rate
drivers/soc/fsl/qe/ucc_slow.c:276:39: unsigned int enum ucc_slow_rx_oversampling_rate
drivers/soc/fsl/qe/ucc_slow.c:296:9: warning: incorrect type in argument 2 (different address spaces)
drivers/soc/fsl/qe/ucc_slow.c:296:9: expected void volatile [noderef] <asn:2> *addr
drivers/soc/fsl/qe/ucc_slow.c:296:9: got restricted __be16 *
drivers/soc/fsl/qe/ucc_slow.c:297:9: warning: incorrect type in argument 2 (different address spaces)
drivers/soc/fsl/qe/ucc_slow.c:297:9: expected void volatile [noderef] <asn:2> *addr
drivers/soc/fsl/qe/ucc_slow.c:297:9: got restricted __be16 *

Signed-off-by: Li Yang <leoyang.li@nxp.com>

Li Yang 461c3ac0 ae1f6865

+19 -20
+13 -13
drivers/soc/fsl/qe/ucc_slow.c
··· 72 72 73 73 void ucc_slow_enable(struct ucc_slow_private * uccs, enum comm_dir mode) 74 74 { 75 - struct ucc_slow *us_regs; 75 + struct ucc_slow __iomem *us_regs; 76 76 u32 gumr_l; 77 77 78 78 us_regs = uccs->us_regs; ··· 93 93 94 94 void ucc_slow_disable(struct ucc_slow_private * uccs, enum comm_dir mode) 95 95 { 96 - struct ucc_slow *us_regs; 96 + struct ucc_slow __iomem *us_regs; 97 97 u32 gumr_l; 98 98 99 99 us_regs = uccs->us_regs; ··· 122 122 u32 i; 123 123 struct ucc_slow __iomem *us_regs; 124 124 u32 gumr; 125 - struct qe_bd *bd; 125 + struct qe_bd __iomem *bd; 126 126 u32 id; 127 127 u32 command; 128 128 int ret = 0; ··· 169 169 } 170 170 171 171 us_regs = uccs->us_regs; 172 - uccs->p_ucce = (u16 *) & (us_regs->ucce); 173 - uccs->p_uccm = (u16 *) & (us_regs->uccm); 172 + uccs->p_ucce = &us_regs->ucce; 173 + uccs->p_uccm = &us_regs->uccm; 174 174 175 175 /* Get PRAM base */ 176 176 uccs->us_pram_offset = ··· 224 224 /* clear bd buffer */ 225 225 qe_iowrite32be(0, &bd->buf); 226 226 /* set bd status and length */ 227 - qe_iowrite32be(0, (u32 *)bd); 227 + qe_iowrite32be(0, (u32 __iomem *)bd); 228 228 bd++; 229 229 } 230 230 /* for last BD set Wrap bit */ 231 231 qe_iowrite32be(0, &bd->buf); 232 - qe_iowrite32be(cpu_to_be32(T_W), (u32 *)bd); 232 + qe_iowrite32be(T_W, (u32 __iomem *)bd); 233 233 234 234 /* Init Rx bds */ 235 235 bd = uccs->rx_bd = qe_muram_addr(uccs->rx_base_offset); 236 236 for (i = 0; i < us_info->rx_bd_ring_len - 1; i++) { 237 237 /* set bd status and length */ 238 - qe_iowrite32be(0, (u32 *)bd); 238 + qe_iowrite32be(0, (u32 __iomem *)bd); 239 239 /* clear bd buffer */ 240 240 qe_iowrite32be(0, &bd->buf); 241 241 bd++; 242 242 } 243 243 /* for last BD set Wrap bit */ 244 - qe_iowrite32be(cpu_to_be32(R_W), (u32 *)bd); 244 + qe_iowrite32be(R_W, (u32 __iomem *)bd); 245 245 qe_iowrite32be(0, &bd->buf); 246 246 247 247 /* Set GUMR (For more details see the hardware spec.). */ ··· 266 266 qe_iowrite32be(gumr, &us_regs->gumr_h); 267 267 268 268 /* gumr_l */ 269 - gumr = us_info->tdcr | us_info->rdcr | us_info->tenc | us_info->renc | 270 - us_info->diag | us_info->mode; 269 + gumr = (u32)us_info->tdcr | (u32)us_info->rdcr | (u32)us_info->tenc | 270 + (u32)us_info->renc | (u32)us_info->diag | (u32)us_info->mode; 271 271 if (us_info->tci) 272 272 gumr |= UCC_SLOW_GUMR_L_TCI; 273 273 if (us_info->rinv) ··· 282 282 283 283 /* if the data is in cachable memory, the 'global' */ 284 284 /* in the function code should be set. */ 285 - uccs->us_pram->tbmr = UCC_BMR_BO_BE; 286 - uccs->us_pram->rbmr = UCC_BMR_BO_BE; 285 + qe_iowrite8(UCC_BMR_BO_BE, &uccs->us_pram->tbmr); 286 + qe_iowrite8(UCC_BMR_BO_BE, &uccs->us_pram->rbmr); 287 287 288 288 /* rbase, tbase are offsets from MURAM base */ 289 289 qe_iowrite16be(uccs->rx_base_offset, &uccs->us_pram->rbase);
+6 -7
include/soc/fsl/qe/ucc_slow.h
··· 184 184 struct ucc_slow_private { 185 185 struct ucc_slow_info *us_info; 186 186 struct ucc_slow __iomem *us_regs; /* Ptr to memory map of UCC regs */ 187 - struct ucc_slow_pram *us_pram; /* a pointer to the parameter RAM */ 187 + struct ucc_slow_pram __iomem *us_pram; /* a pointer to the parameter RAM */ 188 188 s32 us_pram_offset; 189 189 int enabled_tx; /* Whether channel is enabled for Tx (ENT) */ 190 190 int enabled_rx; /* Whether channel is enabled for Rx (ENR) */ ··· 196 196 and length for first BD in a frame */ 197 197 s32 tx_base_offset; /* first BD in Tx BD table offset (In MURAM) */ 198 198 s32 rx_base_offset; /* first BD in Rx BD table offset (In MURAM) */ 199 - struct qe_bd *confBd; /* next BD for confirm after Tx */ 200 - struct qe_bd *tx_bd; /* next BD for new Tx request */ 201 - struct qe_bd *rx_bd; /* next BD to collect after Rx */ 199 + struct qe_bd __iomem *confBd; /* next BD for confirm after Tx */ 200 + struct qe_bd __iomem *tx_bd; /* next BD for new Tx request */ 201 + struct qe_bd __iomem *rx_bd; /* next BD to collect after Rx */ 202 202 void *p_rx_frame; /* accumulating receive frame */ 203 - u16 *p_ucce; /* a pointer to the event register in memory. 204 - */ 205 - u16 *p_uccm; /* a pointer to the mask register in memory */ 203 + __be16 __iomem *p_ucce; /* a pointer to the event register in memory */ 204 + __be16 __iomem *p_uccm; /* a pointer to the mask register in memory */ 206 205 u16 saved_uccm; /* a saved mask for the RX Interrupt bits */ 207 206 #ifdef STATISTICS 208 207 u32 tx_frames; /* Transmitted frames counters */