[sound:for-next 92/92] sound/isa/sc6000.c:534:35: sparse: sparse: incorrect type in initializer (different address spaces)
kernel test robot
lkp at intel.com
Tue Jul 20 23:47:17 CEST 2021
tree: https://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git for-next
head: 9b7843d1e125dca0d6ed0af9e8dd709d41eb25ad
commit: 9b7843d1e125dca0d6ed0af9e8dd709d41eb25ad [92/92] ALSA: sc6000: Assign vport directly on card's private_data
config: x86_64-randconfig-s021-20210718 (attached as .config)
compiler: gcc-10 (Ubuntu 10.3.0-1ubuntu1~20.04) 10.3.0
reproduce:
# apt-get install sparse
# sparse version: v0.6.3-341-g8af24329-dirty
# https://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git/commit/?id=9b7843d1e125dca0d6ed0af9e8dd709d41eb25ad
git remote add sound https://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git
git fetch --no-tags sound for-next
git checkout 9b7843d1e125dca0d6ed0af9e8dd709d41eb25ad
# save the attached .config to linux build tree
make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=x86_64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp at intel.com>
sparse warnings: (new ones prefixed by >>)
>> sound/isa/sc6000.c:534:35: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected char [noderef] __iomem *vport @@ got void *private_data @@
sound/isa/sc6000.c:534:35: sparse: expected char [noderef] __iomem *vport
sound/isa/sc6000.c:534:35: sparse: got void *private_data
>> sound/isa/sc6000.c:585:28: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected void *private_data @@ got char [noderef] __iomem *[assigned] vport @@
sound/isa/sc6000.c:585:28: sparse: expected void *private_data
sound/isa/sc6000.c:585:28: sparse: got char [noderef] __iomem *[assigned] vport
vim +534 sound/isa/sc6000.c
531
532 static void snd_sc6000_free(struct snd_card *card)
533 {
> 534 char __iomem *vport = card->private_data;
535
536 if (vport)
537 sc6000_setup_board(vport, 0);
538 }
539
540 static int snd_sc6000_probe(struct device *devptr, unsigned int dev)
541 {
542 static const int possible_irqs[] = { 5, 7, 9, 10, 11, -1 };
543 static const int possible_dmas[] = { 1, 3, 0, -1 };
544 int err;
545 int xirq = irq[dev];
546 int xdma = dma[dev];
547 struct snd_card *card;
548 struct snd_wss *chip;
549 struct snd_opl3 *opl3;
550 char __iomem *vport;
551 char __iomem *vmss_port;
552
553 err = snd_devm_card_new(devptr, index[dev], id[dev], THIS_MODULE,
554 0, &card);
555 if (err < 0)
556 return err;
557
558 if (xirq == SNDRV_AUTO_IRQ) {
559 xirq = snd_legacy_find_free_irq(possible_irqs);
560 if (xirq < 0) {
561 snd_printk(KERN_ERR PFX "unable to find a free IRQ\n");
562 return -EBUSY;
563 }
564 }
565
566 if (xdma == SNDRV_AUTO_DMA) {
567 xdma = snd_legacy_find_free_dma(possible_dmas);
568 if (xdma < 0) {
569 snd_printk(KERN_ERR PFX "unable to find a free DMA\n");
570 return -EBUSY;
571 }
572 }
573
574 if (!devm_request_region(devptr, port[dev], 0x10, DRV_NAME)) {
575 snd_printk(KERN_ERR PFX
576 "I/O port region is already in use.\n");
577 return -EBUSY;
578 }
579 vport = devm_ioport_map(devptr, port[dev], 0x10);
580 if (!vport) {
581 snd_printk(KERN_ERR PFX
582 "I/O port cannot be iomapped.\n");
583 return -EBUSY;
584 }
> 585 card->private_data = vport;
586
587 /* to make it marked as used */
588 if (!devm_request_region(devptr, mss_port[dev], 4, DRV_NAME)) {
589 snd_printk(KERN_ERR PFX
590 "SC-6000 port I/O port region is already in use.\n");
591 return -EBUSY;
592 }
593 vmss_port = devm_ioport_map(devptr, mss_port[dev], 4);
594 if (!vmss_port) {
595 snd_printk(KERN_ERR PFX
596 "MSS port I/O cannot be iomapped.\n");
597 return -EBUSY;
598 }
599
600 snd_printd("Initializing BASE[0x%lx] IRQ[%d] DMA[%d] MIRQ[%d]\n",
601 port[dev], xirq, xdma,
602 mpu_irq[dev] == SNDRV_AUTO_IRQ ? 0 : mpu_irq[dev]);
603
604 err = sc6000_init_board(vport, vmss_port, dev);
605 if (err < 0)
606 return err;
607 card->private_free = snd_sc6000_free;
608
609 err = snd_wss_create(card, mss_port[dev] + 4, -1, xirq, xdma, -1,
610 WSS_HW_DETECT, 0, &chip);
611 if (err < 0)
612 return err;
613
614 err = snd_wss_pcm(chip, 0);
615 if (err < 0) {
616 snd_printk(KERN_ERR PFX
617 "error creating new WSS PCM device\n");
618 return err;
619 }
620 err = snd_wss_mixer(chip);
621 if (err < 0) {
622 snd_printk(KERN_ERR PFX "error creating new WSS mixer\n");
623 return err;
624 }
625 err = snd_sc6000_mixer(chip);
626 if (err < 0) {
627 snd_printk(KERN_ERR PFX "the mixer rewrite failed\n");
628 return err;
629 }
630 if (snd_opl3_create(card,
631 0x388, 0x388 + 2,
632 OPL3_HW_AUTO, 0, &opl3) < 0) {
633 snd_printk(KERN_ERR PFX "no OPL device at 0x%x-0x%x ?\n",
634 0x388, 0x388 + 2);
635 } else {
636 err = snd_opl3_hwdep_new(opl3, 0, 1, NULL);
637 if (err < 0)
638 return err;
639 }
640
641 if (mpu_port[dev] != SNDRV_AUTO_PORT) {
642 if (mpu_irq[dev] == SNDRV_AUTO_IRQ)
643 mpu_irq[dev] = -1;
644 if (snd_mpu401_uart_new(card, 0,
645 MPU401_HW_MPU401,
646 mpu_port[dev], 0,
647 mpu_irq[dev], NULL) < 0)
648 snd_printk(KERN_ERR "no MPU-401 device at 0x%lx ?\n",
649 mpu_port[dev]);
650 }
651
652 strcpy(card->driver, DRV_NAME);
653 strcpy(card->shortname, "SC-6000");
654 sprintf(card->longname, "Gallant SC-6000 at 0x%lx, irq %d, dma %d",
655 mss_port[dev], xirq, xdma);
656
657 err = snd_card_register(card);
658 if (err < 0)
659 return err;
660
661 dev_set_drvdata(devptr, card);
662 return 0;
663 }
664
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
-------------- next part --------------
A non-text attachment was scrubbed...
Name: .config.gz
Type: application/gzip
Size: 44401 bytes
Desc: not available
URL: <http://mailman.alsa-project.org/pipermail/alsa-devel/attachments/20210721/8241fd5c/attachment-0001.gz>
More information about the Alsa-devel
mailing list