Messages in this thread | | | Date | Tue, 3 May 2022 00:42:04 +0800 | From | kernel test robot <> | Subject | [asahilinux:bits/070-audio 2/20] drivers/dma/apple-admac.c:203:11: warning: format specifies type 'unsigned long long' but the argument has type 'dma_addr_t' (aka 'unsigned int') |
| |
tree: https://github.com/AsahiLinux/linux bits/070-audio head: 91b81123719d8b742da188f01ee3d897e0fac92b commit: 428ea35bca43fe213456fa57640c57deeadc4204 [2/20] dmaengine: apple-admac: Add Apple ADMAC driver config: hexagon-allyesconfig (https://download.01.org/0day-ci/archive/20220503/202205030024.ZdYFyB3P-lkp@intel.com/config) compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project 09325d36061e42b495d1f4c7e933e260eac260ed) reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # https://github.com/AsahiLinux/linux/commit/428ea35bca43fe213456fa57640c57deeadc4204 git remote add asahilinux https://github.com/AsahiLinux/linux git fetch --no-tags asahilinux bits/070-audio git checkout 428ea35bca43fe213456fa57640c57deeadc4204 # save the config file mkdir build_dir && cp config build_dir/.config COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=hexagon SHELL=/bin/bash drivers/dma/ drivers/platform/ sound/soc/
If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@intel.com>
All warnings (new ones prefixed by >>):
>> drivers/dma/apple-admac.c:203:11: warning: format specifies type 'unsigned long long' but the argument has type 'dma_addr_t' (aka 'unsigned int') [-Wformat] channo, addr, (u32) tx->period_len, FLAG_DESC_NOTIFY); ^~~~ include/linux/dev_printk.h:155:39: note: expanded from macro 'dev_dbg' dynamic_dev_dbg(dev, dev_fmt(fmt), ##__VA_ARGS__) ~~~ ^~~~~~~~~~~ include/linux/dynamic_debug.h:167:19: note: expanded from macro 'dynamic_dev_dbg' dev, fmt, ##__VA_ARGS__) ~~~ ^~~~~~~~~~~ include/linux/dynamic_debug.h:152:56: note: expanded from macro '_dynamic_func_call' __dynamic_func_call(__UNIQUE_ID(ddebug), fmt, func, ##__VA_ARGS__) ^~~~~~~~~~~ include/linux/dynamic_debug.h:134:15: note: expanded from macro '__dynamic_func_call' func(&id, ##__VA_ARGS__); \ ^~~~~~~~~~~ >> drivers/dma/apple-admac.c:206:46: warning: shift count >= width of type [-Wshift-count-overflow] admac_poke(ad, REG_DESC_WRITE(channo), addr >> 32); ^ ~~ >> drivers/dma/apple-admac.c:260:5: warning: no previous prototype for function 'admac_cyclic_read_residue' [-Wmissing-prototypes] u32 admac_cyclic_read_residue(struct admac_data *ad, int channo, struct admac_tx *adtx) ^ drivers/dma/apple-admac.c:260:1: note: declare 'static' if the function is not intended to be used outside of this translation unit u32 admac_cyclic_read_residue(struct admac_data *ad, int channo, struct admac_tx *adtx) ^ static 3 warnings generated.
vim +203 drivers/dma/apple-admac.c
187 188 /* 189 * Write one hardware descriptor for a dmaegine cyclic transaction. 190 */ 191 static void admac_cyclic_write_one_desc(struct admac_data *ad, int channo, 192 struct admac_tx *tx) 193 { 194 dma_addr_t addr; 195 196 if (WARN_ON(!tx->cyclic)) 197 return; 198 199 addr = tx->buf_addr + (tx->submitted_pos % tx->buf_len); 200 WARN_ON(addr + tx->period_len > tx->buf_end); 201 202 dev_dbg(ad->dev, "ch%d descriptor: addr=0x%llx len=0x%x flags=0x%lx\n", > 203 channo, addr, (u32) tx->period_len, FLAG_DESC_NOTIFY); 204 205 admac_poke(ad, REG_DESC_WRITE(channo), addr); > 206 admac_poke(ad, REG_DESC_WRITE(channo), addr >> 32); 207 admac_poke(ad, REG_DESC_WRITE(channo), tx->period_len); 208 admac_poke(ad, REG_DESC_WRITE(channo), FLAG_DESC_NOTIFY); 209 210 tx->submitted_pos += tx->period_len; 211 tx->submitted_pos %= 2 * tx->buf_len; 212 } 213 214 /* 215 * Write all the hardware descriptors for a cyclic transaction 216 * there is space for. 217 */ 218 static void admac_cyclic_write_desc(struct admac_data *ad, int channo, 219 struct admac_tx *tx) 220 { 221 int i; 222 223 for (i = 0; i < 4; i++) { 224 if (admac_peek(ad, REG_DESC_RING(channo)) & RING_FULL) 225 break; 226 admac_cyclic_write_one_desc(ad, channo, tx); 227 } 228 } 229 230 static int admac_alloc_chan_resources(struct dma_chan *chan) 231 { 232 return 0; 233 } 234 235 static void admac_free_chan_resources(struct dma_chan *chan) 236 { 237 // TODO 238 } 239 240 static int admac_ring_noccupied_slots(int ringval) 241 { 242 int wrslot = FIELD_GET(RING_WRITE_SLOT, ringval); 243 int rdslot = FIELD_GET(RING_READ_SLOT, ringval); 244 245 if (wrslot != rdslot) { 246 return (wrslot + 4 - rdslot) % 4; 247 } else { 248 WARN_ON((ringval & (RING_FULL | RING_EMPTY)) == 0); 249 250 if (ringval & RING_FULL) 251 return 4; 252 else 253 return 0; 254 } 255 } 256 257 /* 258 * Read from hardware the residue of a cyclic dmaengine transaction. 259 */ > 260 u32 admac_cyclic_read_residue(struct admac_data *ad, int channo, struct admac_tx *adtx) 261 { 262 u32 ring1, ring2; 263 u32 residue1, residue2; 264 int nreports; 265 size_t pos; 266 267 ring1 = admac_peek(ad, REG_REPORT_RING(channo)); 268 residue1 = admac_peek(ad, REG_RESIDUE(channo)); 269 ring2 = admac_peek(ad, REG_REPORT_RING(channo)); 270 residue2 = admac_peek(ad, REG_RESIDUE(channo)); 271 272 if (residue2 > residue1) { 273 // engine must have loaded next descriptor between the two residue reads 274 nreports = admac_ring_noccupied_slots(ring1) + 1; 275 } else { 276 // no descriptor load between the two reads, ring2 is safe to use 277 nreports = admac_ring_noccupied_slots(ring2); 278 } 279 280 pos = adtx->reclaimed_pos + adtx->period_len * (nreports + 1) \ 281 - residue2; 282 283 return adtx->buf_len - pos % adtx->buf_len; 284 } 285
-- 0-DAY CI Kernel Test Service https://01.org/lkp
| |