Hi Takashi, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on sound/for-next] [also build test WARNING on v4.17-rc1 next-20180420] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/Takashi-Sakamoto/ALSA-dice-improve-support-for-ancient-firmware-for-DICE/20180422-230429 base: https://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git for-next reproduce: # apt-get install sparse make ARCH=x86_64 allmodconfig make C=1 CF=-D__CHECK_ENDIAN__ sparse warnings: (new ones prefixed by >>) >> sound/firewire/dice/dice-transaction.c:334:21: sparse: restricted __be32 degrades to integer sound/firewire/dice/dice-transaction.c:336:21: sparse: restricted __be32 degrades to integer vim +334 sound/firewire/dice/dice-transaction.c 264 265 static int get_subaddrs(struct snd_dice *dice) 266 { 267 static const int min_values[10] = { 268 10, 0x60 / 4, 269 10, 0x18 / 4, 270 10, 0x18 / 4, 271 0, 0, 272 0, 0, 273 }; 274 __be32 *pointers; 275 __be32 version; 276 u32 data; 277 unsigned int i; 278 int err; 279 280 pointers = kmalloc_array(ARRAY_SIZE(min_values), sizeof(__be32), 281 GFP_KERNEL); 282 if (pointers == NULL) 283 return -ENOMEM; 284 285 /* 286 * Check that the sub address spaces exist and are located inside the 287 * private address space. The minimum values are chosen so that all 288 * minimally required registers are included. 289 */ 290 err = snd_fw_transaction(dice->unit, TCODE_READ_BLOCK_REQUEST, 291 DICE_PRIVATE_SPACE, pointers, 292 sizeof(__be32) * ARRAY_SIZE(min_values), 0); 293 if (err < 0) 294 goto end; 295 296 for (i = 0; i < ARRAY_SIZE(min_values); ++i) { 297 data = be32_to_cpu(pointers[i]); 298 if (data < min_values[i] || data >= 0x40000) { 299 err = -ENODEV; 300 goto end; 301 } 302 } 303 304 if (be32_to_cpu(pointers[1]) > 0x18) { 305 /* 306 * Check that the implemented DICE driver specification major 307 * version number matches. 308 */ 309 err = snd_fw_transaction(dice->unit, TCODE_READ_QUADLET_REQUEST, 310 DICE_PRIVATE_SPACE + 311 be32_to_cpu(pointers[0]) * 4 + GLOBAL_VERSION, 312 &version, sizeof(version), 0); 313 if (err < 0) 314 goto end; 315 316 if ((version & cpu_to_be32(0xff000000)) != 317 cpu_to_be32(0x01000000)) { 318 dev_err(&dice->unit->device, 319 "unknown DICE version: 0x%08x\n", 320 be32_to_cpu(version)); 321 err = -ENODEV; 322 goto end; 323 } 324 325 /* Set up later. */ 326 dice->clock_caps = 1; 327 } 328 329 dice->global_offset = be32_to_cpu(pointers[0]) * 4; 330 dice->tx_offset = be32_to_cpu(pointers[2]) * 4; 331 dice->rx_offset = be32_to_cpu(pointers[4]) * 4; 332 333 /* Old firmware doesn't support these fields. */ > 334 if (pointers[7] > 0) 335 dice->sync_offset = be32_to_cpu(pointers[6]) * 4; 336 if (pointers[9] > 0) 337 dice->rsrv_offset = be32_to_cpu(pointers[8]) * 4; 338 end: 339 kfree(pointers); 340 return err; 341 } 342 --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel