CC: [email protected] CC: [email protected] BCC: [email protected] CC: [email protected] TO: Takashi Iwai <[email protected]>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master head: 6fc2586d23b574fcd3f6b14430277e91d27cf585 commit: 0195ca5fd1f463ec1b3ea5a23fff672330584616 ALSA: hdspm: Allocate resources with device-managed APIs date: 9 months ago :::::: branch date: 2 hours ago :::::: commit date: 9 months ago config: arm-randconfig-c002-20220420 (https://download.01.org/0day-ci/archive/20220424/[email protected]/config) compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project bac6cd5bf85669e3376610cfc4c4f9ca015e7b9b) 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 # install arm cross compiling tool for clang build # apt-get install binutils-arm-linux-gnueabi # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0195ca5fd1f463ec1b3ea5a23fff672330584616 git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git git fetch --no-tags linus master git checkout 0195ca5fd1f463ec1b3ea5a23fff672330584616 # save the config file COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=arm clang-analyzer If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <[email protected]> clang-analyzer warnings: (new ones prefixed by >>) 3 warnings generated. Suppressed 3 warnings (3 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 3 warnings generated. Suppressed 3 warnings (3 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 7 warnings generated. Suppressed 7 warnings (7 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 4 warnings generated. Suppressed 4 warnings (4 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 4 warnings generated. Suppressed 4 warnings (4 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 6 warnings generated. sound/soc/soc-ops.c:370:26: warning: The result of the left shift is undefined because the right operand is negative [clang-analyzer-core.UndefinedBinaryOperatorResult] unsigned int mask = (1U << (fls(min + max) - 1)) - 1; ^ ~~~~~~~~~~~~~~~~~~~~ sound/soc/soc-ops.c:370:26: note: The result of the left shift is undefined because the right operand is negative unsigned int mask = (1U << (fls(min + max) - 1)) - 1; ^ ~~~~~~~~~~~~~~~~~~~~ sound/soc/soc-ops.c:408:26: warning: The result of the left shift is undefined because the right operand is negative [clang-analyzer-core.UndefinedBinaryOperatorResult] unsigned int mask = (1U << (fls(min + max) - 1)) - 1; ^ ~~~~~~~~~~~~~~~~~~~~ sound/soc/soc-ops.c:408:26: note: The result of the left shift is undefined because the right operand is negative unsigned int mask = (1U << (fls(min + max) - 1)) - 1; ^ ~~~~~~~~~~~~~~~~~~~~ Suppressed 4 warnings (4 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 4 warnings generated. Suppressed 4 warnings (4 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 4 warnings generated. Suppressed 4 warnings (4 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 5 warnings generated. sound/soc/soc-topology.c:1478:2: warning: Value stored to 'control_hdr' is never read [clang-analyzer-deadcode.DeadStores] control_hdr = (struct snd_soc_tplg_ctl_hdr *)tplg->pos; ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ sound/soc/soc-topology.c:1478:2: note: Value stored to 'control_hdr' is never read control_hdr = (struct snd_soc_tplg_ctl_hdr *)tplg->pos; ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Suppressed 4 warnings (4 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 4 warnings generated. Suppressed 4 warnings (4 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 4 warnings generated. Suppressed 4 warnings (4 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 8 warnings generated. drivers/thunderbolt/switch.c:498:36: warning: Value stored to 'regs' during its initialization is never read [clang-analyzer-deadcode.DeadStores] const struct tb_regs_port_header *regs = &port->config; ^~~~ ~~~~~~~~~~~~~ drivers/thunderbolt/switch.c:498:36: note: Value stored to 'regs' during its initialization is never read const struct tb_regs_port_header *regs = &port->config; ^~~~ ~~~~~~~~~~~~~ drivers/thunderbolt/switch.c:1408:38: warning: Value stored to 'regs' during its initialization is never read [clang-analyzer-deadcode.DeadStores] const struct tb_regs_switch_header *regs = &sw->config; ^~~~ ~~~~~~~~~~~ drivers/thunderbolt/switch.c:1408:38: note: Value stored to 'regs' during its initialization is never read const struct tb_regs_switch_header *regs = &sw->config; ^~~~ ~~~~~~~~~~~ drivers/thunderbolt/switch.c:2268:13: warning: Value stored to 'tb' during its initialization is never read [clang-analyzer-deadcode.DeadStores] struct tb *tb = sw->tb; ^~ ~~~~~~ drivers/thunderbolt/switch.c:2268:13: note: Value stored to 'tb' during its initialization is never read struct tb *tb = sw->tb; ^~ ~~~~~~ drivers/thunderbolt/switch.c:2272:2: warning: Value stored to 'route' is never read [clang-analyzer-deadcode.DeadStores] route = tb_route(sw); ^ ~~~~~~~~~~~~ drivers/thunderbolt/switch.c:2272:2: note: Value stored to 'route' is never read route = tb_route(sw); ^ ~~~~~~~~~~~~ Suppressed 4 warnings (4 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 4 warnings generated. Suppressed 4 warnings (4 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 9 warnings generated. sound/pci/rme9652/hdspm.c:1258:3: warning: Value stored to 'status2' is never read [clang-analyzer-deadcode.DeadStores] status2 = hdspm_read(hdspm, HDSPM_statusRegister2); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ sound/pci/rme9652/hdspm.c:1258:3: note: Value stored to 'status2' is never read status2 = hdspm_read(hdspm, HDSPM_statusRegister2); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ sound/pci/rme9652/hdspm.c:1259:3: warning: Value stored to 'status' is never read [clang-analyzer-deadcode.DeadStores] status = hdspm_read(hdspm, HDSPM_statusRegister); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ sound/pci/rme9652/hdspm.c:1259:3: note: Value stored to 'status' is never read status = hdspm_read(hdspm, HDSPM_statusRegister); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ sound/pci/rme9652/hdspm.c:6438:2: warning: Call to function 'strcpy' is insecure as it does not provide bounding of the memory buffer. Replace unbounded copy functions with analogous functions that support length arguments such as 'strlcpy'. CWE-119 [clang-analyzer-security.insecureAPI.strcpy] strcpy(pcm->name, hdspm->card_name); ^~~~~~ sound/pci/rme9652/hdspm.c:6438:2: note: Call to function 'strcpy' is insecure as it does not provide bounding of the memory buffer. Replace unbounded copy functions with analogous functions that support length arguments such as 'strlcpy'. CWE-119 strcpy(pcm->name, hdspm->card_name); ^~~~~~ >> sound/pci/rme9652/hdspm.c:6589:2: warning: Value stored to 'io_extent' is >> never read [clang-analyzer-deadcode.DeadStores] io_extent = pci_resource_len(pci, 0); ^ sound/pci/rme9652/hdspm.c:6589:2: note: Value stored to 'io_extent' is never read Suppressed 5 warnings (4 in non-user code, 1 with check filters). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 5 warnings generated. sound/pci/ymfpci/ymfpci.c:266:2: warning: Call to function 'strcpy' is insecure as it does not provide bounding of the memory buffer. Replace unbounded copy functions with analogous functions that support length arguments such as 'strlcpy'. CWE-119 [clang-analyzer-security.insecureAPI.strcpy] strcpy(card->driver, str); ^~~~~~ sound/pci/ymfpci/ymfpci.c:266:2: note: Call to function 'strcpy' is insecure as it does not provide bounding of the memory buffer. Replace unbounded copy functions with analogous functions that support length arguments such as 'strlcpy'. CWE-119 strcpy(card->driver, str); ^~~~~~ Suppressed 4 warnings (4 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 5 warnings generated. Suppressed 5 warnings (4 in non-user code, 1 with check filters). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 4 warnings generated. Suppressed 4 warnings (4 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 4 warnings generated. Suppressed 4 warnings (4 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 4 warnings generated. Suppressed 4 warnings (4 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 7 warnings generated. drivers/md/md-autodetect.c:178:2: warning: Value stored to 'err' is never read [clang-analyzer-deadcode.DeadStores] err = -EIO; ^ ~~~~ drivers/md/md-autodetect.c:178:2: note: Value stored to 'err' is never read err = -EIO; ^ ~~~~ Suppressed 6 warnings (6 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 6 warnings generated. Suppressed 6 warnings (6 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 6 warnings generated. Suppressed 6 warnings (6 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 6 warnings generated. Suppressed 6 warnings (6 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 6 warnings generated. Suppressed 6 warnings (6 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 7 warnings generated. drivers/scsi/mpt3sas/mpt3sas_transport.c:2104:2: warning: Value stored to 'rc' is never read [clang-analyzer-deadcode.DeadStores] rc = 0; ^ ~ drivers/scsi/mpt3sas/mpt3sas_transport.c:2104:2: note: Value stored to 'rc' is never read rc = 0; ^ ~ Suppressed 6 warnings (6 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 10 warnings generated. drivers/scsi/mpt3sas/mpt3sas_ctl.c:1173:2: warning: Call to function 'strcpy' is insecure as it does not provide bounding of the memory buffer. Replace unbounded copy functions with analogous functions that support length arguments such as 'strlcpy'. CWE-119 [clang-analyzer-security.insecureAPI.strcpy] strcpy(karg.driver_version, ioc->driver_name); ^~~~~~ drivers/scsi/mpt3sas/mpt3sas_ctl.c:1173:2: note: Call to function 'strcpy' is insecure as it does not provide bounding of the memory buffer. Replace unbounded copy functions with analogous functions that support length arguments such as 'strlcpy'. CWE-119 strcpy(karg.driver_version, ioc->driver_name); ^~~~~~ drivers/scsi/mpt3sas/mpt3sas_ctl.c:1174:2: warning: Call to function 'strcat' is insecure as it does not provide bounding of the memory buffer. Replace unbounded copy functions with analogous functions that support length arguments such as 'strlcat'. CWE-119 [clang-analyzer-security.insecureAPI.strcpy] strcat(karg.driver_version, "-"); ^~~~~~ drivers/scsi/mpt3sas/mpt3sas_ctl.c:1174:2: note: Call to function 'strcat' is insecure as it does not provide bounding of the memory buffer. Replace unbounded copy functions with analogous functions that support length arguments such as 'strlcat'. CWE-119 strcat(karg.driver_version, "-"); ^~~~~~ drivers/scsi/mpt3sas/mpt3sas_ctl.c:1181:3: warning: Call to function 'strcat' is insecure as it does not provide bounding of the memory buffer. Replace unbounded copy functions with analogous functions that support length arguments such as 'strlcat'. CWE-119 [clang-analyzer-security.insecureAPI.strcpy] strcat(karg.driver_version, MPT2SAS_DRIVER_VERSION); ^~~~~~ drivers/scsi/mpt3sas/mpt3sas_ctl.c:1181:3: note: Call to function 'strcat' is insecure as it does not provide bounding of the memory buffer. Replace unbounded copy functions with analogous functions that support length arguments such as 'strlcat'. CWE-119 strcat(karg.driver_version, MPT2SAS_DRIVER_VERSION); ^~~~~~ drivers/scsi/mpt3sas/mpt3sas_ctl.c:1189:3: warning: Call to function 'strcat' is insecure as it does not provide bounding of the memory buffer. Replace unbounded copy functions with analogous functions that support length arguments such as 'strlcat'. CWE-119 [clang-analyzer-security.insecureAPI.strcpy] strcat(karg.driver_version, MPT3SAS_DRIVER_VERSION); ^~~~~~ drivers/scsi/mpt3sas/mpt3sas_ctl.c:1189:3: note: Call to function 'strcat' is insecure as it does not provide bounding of the memory buffer. Replace unbounded copy functions with analogous functions that support length arguments such as 'strlcat'. CWE-119 strcat(karg.driver_version, MPT3SAS_DRIVER_VERSION); ^~~~~~ Suppressed 6 warnings (6 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 5 warnings generated. sound/pci/hda/patch_cirrus.c:1649:20: warning: Value stored to 'codec' during its initialization is never read [clang-analyzer-deadcode.DeadStores] struct hda_codec *codec = snd_kcontrol_chip(kcontrol); ^~~~~ sound/pci/hda/patch_cirrus.c:1649:20: note: Value stored to 'codec' during its initialization is never read struct hda_codec *codec = snd_kcontrol_chip(kcontrol); ^~~~~ Suppressed 4 warnings (4 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 4 warnings generated. Suppressed 4 warnings (4 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 4 warnings generated. Suppressed 4 warnings (4 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 7 warnings generated. sound/pci/hda/patch_hdmi.c:878:3: warning: Value stored to 'pwr' is never read [clang-analyzer-deadcode.DeadStores] vim +/io_extent +6589 sound/pci/rme9652/hdspm.c 0dca1793063c28 Adrian Knoth 2011-01-26 6524 763f356cd8de9e Takashi Iwai 2005-06-03 6525 struct pci_dev *pci = hdspm->pci; 763f356cd8de9e Takashi Iwai 2005-06-03 6526 int err; 763f356cd8de9e Takashi Iwai 2005-06-03 6527 unsigned long io_extent; 763f356cd8de9e Takashi Iwai 2005-06-03 6528 763f356cd8de9e Takashi Iwai 2005-06-03 6529 hdspm->irq = -1; 763f356cd8de9e Takashi Iwai 2005-06-03 6530 hdspm->card = card; 763f356cd8de9e Takashi Iwai 2005-06-03 6531 763f356cd8de9e Takashi Iwai 2005-06-03 6532 spin_lock_init(&hdspm->lock); a2e527c5a3ebcf Takashi Iwai 2020-09-03 6533 INIT_WORK(&hdspm->midi_work, hdspm_midi_work); 763f356cd8de9e Takashi Iwai 2005-06-03 6534 763f356cd8de9e Takashi Iwai 2005-06-03 6535 pci_read_config_word(hdspm->pci, 763f356cd8de9e Takashi Iwai 2005-06-03 6536 PCI_CLASS_REVISION, &hdspm->firmware_rev); 763f356cd8de9e Takashi Iwai 2005-06-03 6537 763f356cd8de9e Takashi Iwai 2005-06-03 6538 strcpy(card->mixername, "Xilinx FPGA"); 3cee5a60ce1803 Remy Bruno 2006-10-16 6539 strcpy(card->driver, "HDSPM"); 0dca1793063c28 Adrian Knoth 2011-01-26 6540 0dca1793063c28 Adrian Knoth 2011-01-26 6541 switch (hdspm->firmware_rev) { 0dca1793063c28 Adrian Knoth 2011-01-26 6542 case HDSPM_RAYDAT_REV: 0dca1793063c28 Adrian Knoth 2011-01-26 6543 hdspm->io_type = RayDAT; 0dca1793063c28 Adrian Knoth 2011-01-26 6544 hdspm->card_name = "RME RayDAT"; 0dca1793063c28 Adrian Knoth 2011-01-26 6545 hdspm->midiPorts = 2; 0dca1793063c28 Adrian Knoth 2011-01-26 6546 break; 0dca1793063c28 Adrian Knoth 2011-01-26 6547 case HDSPM_AIO_REV: 0dca1793063c28 Adrian Knoth 2011-01-26 6548 hdspm->io_type = AIO; 0dca1793063c28 Adrian Knoth 2011-01-26 6549 hdspm->card_name = "RME AIO"; 0dca1793063c28 Adrian Knoth 2011-01-26 6550 hdspm->midiPorts = 1; 0dca1793063c28 Adrian Knoth 2011-01-26 6551 break; 0dca1793063c28 Adrian Knoth 2011-01-26 6552 case HDSPM_MADIFACE_REV: 0dca1793063c28 Adrian Knoth 2011-01-26 6553 hdspm->io_type = MADIface; 0dca1793063c28 Adrian Knoth 2011-01-26 6554 hdspm->card_name = "RME MADIface"; 0dca1793063c28 Adrian Knoth 2011-01-26 6555 hdspm->midiPorts = 1; 0dca1793063c28 Adrian Knoth 2011-01-26 6556 break; c09403dcc5698a Adrian Knoth 2011-10-27 6557 default: c09403dcc5698a Adrian Knoth 2011-10-27 6558 if ((hdspm->firmware_rev == 0xf0) || c09403dcc5698a Adrian Knoth 2011-10-27 6559 ((hdspm->firmware_rev >= 0xe6) && c09403dcc5698a Adrian Knoth 2011-10-27 6560 (hdspm->firmware_rev <= 0xea))) { 0dca1793063c28 Adrian Knoth 2011-01-26 6561 hdspm->io_type = AES32; 0dca1793063c28 Adrian Knoth 2011-01-26 6562 hdspm->card_name = "RME AES32"; 0dca1793063c28 Adrian Knoth 2011-01-26 6563 hdspm->midiPorts = 2; 05c7cc9ccab7d9 Adrian Knoth 2011-11-21 6564 } else if ((hdspm->firmware_rev == 0xd2) || c09403dcc5698a Adrian Knoth 2011-10-27 6565 ((hdspm->firmware_rev >= 0xc8) && c09403dcc5698a Adrian Knoth 2011-10-27 6566 (hdspm->firmware_rev <= 0xcf))) { c09403dcc5698a Adrian Knoth 2011-10-27 6567 hdspm->io_type = MADI; c09403dcc5698a Adrian Knoth 2011-10-27 6568 hdspm->card_name = "RME MADI"; c09403dcc5698a Adrian Knoth 2011-10-27 6569 hdspm->midiPorts = 3; c09403dcc5698a Adrian Knoth 2011-10-27 6570 } else { e3a471d6680487 Takashi Iwai 2014-02-26 6571 dev_err(card->dev, e3a471d6680487 Takashi Iwai 2014-02-26 6572 "unknown firmware revision %x\n", 5027f347ffe6f7 Adrian Knoth 2011-02-28 6573 hdspm->firmware_rev); 5027f347ffe6f7 Adrian Knoth 2011-02-28 6574 return -ENODEV; 3cee5a60ce1803 Remy Bruno 2006-10-16 6575 } c09403dcc5698a Adrian Knoth 2011-10-27 6576 } 763f356cd8de9e Takashi Iwai 2005-06-03 6577 0195ca5fd1f463 Takashi Iwai 2021-07-15 6578 err = pcim_enable_device(pci); ef5fa1a49fc3b5 Takashi Iwai 2007-07-27 6579 if (err < 0) 763f356cd8de9e Takashi Iwai 2005-06-03 6580 return err; 763f356cd8de9e Takashi Iwai 2005-06-03 6581 763f356cd8de9e Takashi Iwai 2005-06-03 6582 pci_set_master(hdspm->pci); 763f356cd8de9e Takashi Iwai 2005-06-03 6583 0195ca5fd1f463 Takashi Iwai 2021-07-15 6584 err = pcim_iomap_regions(pci, 1 << 0, "hdspm"); ef5fa1a49fc3b5 Takashi Iwai 2007-07-27 6585 if (err < 0) 763f356cd8de9e Takashi Iwai 2005-06-03 6586 return err; 763f356cd8de9e Takashi Iwai 2005-06-03 6587 763f356cd8de9e Takashi Iwai 2005-06-03 6588 hdspm->port = pci_resource_start(pci, 0); 763f356cd8de9e Takashi Iwai 2005-06-03 @6589 io_extent = pci_resource_len(pci, 0); 0195ca5fd1f463 Takashi Iwai 2021-07-15 6590 hdspm->iobase = pcim_iomap_table(pci)[0]; e3a471d6680487 Takashi Iwai 2014-02-26 6591 dev_dbg(card->dev, "remapped region (0x%lx) 0x%lx-0x%lx\n", 763f356cd8de9e Takashi Iwai 2005-06-03 6592 (unsigned long)hdspm->iobase, hdspm->port, 763f356cd8de9e Takashi Iwai 2005-06-03 6593 hdspm->port + io_extent - 1); 763f356cd8de9e Takashi Iwai 2005-06-03 6594 0195ca5fd1f463 Takashi Iwai 2021-07-15 6595 if (devm_request_irq(&pci->dev, pci->irq, snd_hdspm_interrupt, 934c2b6d0cb50f Takashi Iwai 2011-06-10 6596 IRQF_SHARED, KBUILD_MODNAME, hdspm)) { e3a471d6680487 Takashi Iwai 2014-02-26 6597 dev_err(card->dev, "unable to use IRQ %d\n", pci->irq); 763f356cd8de9e Takashi Iwai 2005-06-03 6598 return -EBUSY; 763f356cd8de9e Takashi Iwai 2005-06-03 6599 } 763f356cd8de9e Takashi Iwai 2005-06-03 6600 e3a471d6680487 Takashi Iwai 2014-02-26 6601 dev_dbg(card->dev, "use IRQ %d\n", pci->irq); 763f356cd8de9e Takashi Iwai 2005-06-03 6602 763f356cd8de9e Takashi Iwai 2005-06-03 6603 hdspm->irq = pci->irq; 39cccf4511fd00 Takashi Iwai 2019-12-10 6604 card->sync_irq = hdspm->irq; 763f356cd8de9e Takashi Iwai 2005-06-03 6605 e3a471d6680487 Takashi Iwai 2014-02-26 6606 dev_dbg(card->dev, "kmalloc Mixer memory of %zd Bytes\n", 7dfec5075f23cd Markus Elfring 2017-08-12 6607 sizeof(*hdspm->mixer)); 0195ca5fd1f463 Takashi Iwai 2021-07-15 6608 hdspm->mixer = devm_kzalloc(&pci->dev, sizeof(*hdspm->mixer), GFP_KERNEL); 9dba54296b8b4a Markus Elfring 2017-08-12 6609 if (!hdspm->mixer) b17cbdd85f84c8 Julia Lawall 2012-08-19 6610 return -ENOMEM; 763f356cd8de9e Takashi Iwai 2005-06-03 6611 0dca1793063c28 Adrian Knoth 2011-01-26 6612 hdspm->port_names_in = NULL; 0dca1793063c28 Adrian Knoth 2011-01-26 6613 hdspm->port_names_out = NULL; 0dca1793063c28 Adrian Knoth 2011-01-26 6614 0dca1793063c28 Adrian Knoth 2011-01-26 6615 switch (hdspm->io_type) { 0dca1793063c28 Adrian Knoth 2011-01-26 6616 case AES32: d2d10a213294d6 Adrian Knoth 2011-02-28 6617 hdspm->ss_in_channels = hdspm->ss_out_channels = AES32_CHANNELS; d2d10a213294d6 Adrian Knoth 2011-02-28 6618 hdspm->ds_in_channels = hdspm->ds_out_channels = AES32_CHANNELS; d2d10a213294d6 Adrian Knoth 2011-02-28 6619 hdspm->qs_in_channels = hdspm->qs_out_channels = AES32_CHANNELS; 432d2500ac11ca Adrian Knoth 2011-02-23 6620 432d2500ac11ca Adrian Knoth 2011-02-23 6621 hdspm->channel_map_in_ss = hdspm->channel_map_out_ss = 432d2500ac11ca Adrian Knoth 2011-02-23 6622 channel_map_aes32; 432d2500ac11ca Adrian Knoth 2011-02-23 6623 hdspm->channel_map_in_ds = hdspm->channel_map_out_ds = 432d2500ac11ca Adrian Knoth 2011-02-23 6624 channel_map_aes32; 432d2500ac11ca Adrian Knoth 2011-02-23 6625 hdspm->channel_map_in_qs = hdspm->channel_map_out_qs = 432d2500ac11ca Adrian Knoth 2011-02-23 6626 channel_map_aes32; 432d2500ac11ca Adrian Knoth 2011-02-23 6627 hdspm->port_names_in_ss = hdspm->port_names_out_ss = 432d2500ac11ca Adrian Knoth 2011-02-23 6628 texts_ports_aes32; 432d2500ac11ca Adrian Knoth 2011-02-23 6629 hdspm->port_names_in_ds = hdspm->port_names_out_ds = 432d2500ac11ca Adrian Knoth 2011-02-23 6630 texts_ports_aes32; 432d2500ac11ca Adrian Knoth 2011-02-23 6631 hdspm->port_names_in_qs = hdspm->port_names_out_qs = 432d2500ac11ca Adrian Knoth 2011-02-23 6632 texts_ports_aes32; 432d2500ac11ca Adrian Knoth 2011-02-23 6633 d2d10a213294d6 Adrian Knoth 2011-02-28 6634 hdspm->max_channels_out = hdspm->max_channels_in = d2d10a213294d6 Adrian Knoth 2011-02-28 6635 AES32_CHANNELS; 432d2500ac11ca Adrian Knoth 2011-02-23 6636 hdspm->port_names_in = hdspm->port_names_out = 432d2500ac11ca Adrian Knoth 2011-02-23 6637 texts_ports_aes32; 432d2500ac11ca Adrian Knoth 2011-02-23 6638 hdspm->channel_map_in = hdspm->channel_map_out = 432d2500ac11ca Adrian Knoth 2011-02-23 6639 channel_map_aes32; 432d2500ac11ca Adrian Knoth 2011-02-23 6640 0dca1793063c28 Adrian Knoth 2011-01-26 6641 break; 0dca1793063c28 Adrian Knoth 2011-01-26 6642 0dca1793063c28 Adrian Knoth 2011-01-26 6643 case MADI: 0dca1793063c28 Adrian Knoth 2011-01-26 6644 case MADIface: 0dca1793063c28 Adrian Knoth 2011-01-26 6645 hdspm->ss_in_channels = hdspm->ss_out_channels = 0dca1793063c28 Adrian Knoth 2011-01-26 6646 MADI_SS_CHANNELS; 0dca1793063c28 Adrian Knoth 2011-01-26 6647 hdspm->ds_in_channels = hdspm->ds_out_channels = 0dca1793063c28 Adrian Knoth 2011-01-26 6648 MADI_DS_CHANNELS; 0dca1793063c28 Adrian Knoth 2011-01-26 6649 hdspm->qs_in_channels = hdspm->qs_out_channels = 0dca1793063c28 Adrian Knoth 2011-01-26 6650 MADI_QS_CHANNELS; 0dca1793063c28 Adrian Knoth 2011-01-26 6651 0dca1793063c28 Adrian Knoth 2011-01-26 6652 hdspm->channel_map_in_ss = hdspm->channel_map_out_ss = 0dca1793063c28 Adrian Knoth 2011-01-26 6653 channel_map_unity_ss; 01e9607815755f Adrian Knoth 2011-02-23 6654 hdspm->channel_map_in_ds = hdspm->channel_map_out_ds = 0dca1793063c28 Adrian Knoth 2011-01-26 6655 channel_map_unity_ss; 01e9607815755f Adrian Knoth 2011-02-23 6656 hdspm->channel_map_in_qs = hdspm->channel_map_out_qs = 0dca1793063c28 Adrian Knoth 2011-01-26 6657 channel_map_unity_ss; 0dca1793063c28 Adrian Knoth 2011-01-26 6658 0dca1793063c28 Adrian Knoth 2011-01-26 6659 hdspm->port_names_in_ss = hdspm->port_names_out_ss = 0dca1793063c28 Adrian Knoth 2011-01-26 6660 texts_ports_madi; 0dca1793063c28 Adrian Knoth 2011-01-26 6661 hdspm->port_names_in_ds = hdspm->port_names_out_ds = 0dca1793063c28 Adrian Knoth 2011-01-26 6662 texts_ports_madi; 0dca1793063c28 Adrian Knoth 2011-01-26 6663 hdspm->port_names_in_qs = hdspm->port_names_out_qs = 0dca1793063c28 Adrian Knoth 2011-01-26 6664 texts_ports_madi; 0dca1793063c28 Adrian Knoth 2011-01-26 6665 break; 0dca1793063c28 Adrian Knoth 2011-01-26 6666 0dca1793063c28 Adrian Knoth 2011-01-26 6667 case AIO: 0dca1793063c28 Adrian Knoth 2011-01-26 6668 hdspm->ss_in_channels = AIO_IN_SS_CHANNELS; 0dca1793063c28 Adrian Knoth 2011-01-26 6669 hdspm->ds_in_channels = AIO_IN_DS_CHANNELS; 0dca1793063c28 Adrian Knoth 2011-01-26 6670 hdspm->qs_in_channels = AIO_IN_QS_CHANNELS; 0dca1793063c28 Adrian Knoth 2011-01-26 6671 hdspm->ss_out_channels = AIO_OUT_SS_CHANNELS; 0dca1793063c28 Adrian Knoth 2011-01-26 6672 hdspm->ds_out_channels = AIO_OUT_DS_CHANNELS; 0dca1793063c28 Adrian Knoth 2011-01-26 6673 hdspm->qs_out_channels = AIO_OUT_QS_CHANNELS; 0dca1793063c28 Adrian Knoth 2011-01-26 6674 3de9db264cef4b Adrian Knoth 2013-07-05 6675 if (0 == (hdspm_read(hdspm, HDSPM_statusRegister2) & HDSPM_s2_AEBI_D)) { e3a471d6680487 Takashi Iwai 2014-02-26 6676 dev_info(card->dev, "AEB input board found\n"); 3de9db264cef4b Adrian Knoth 2013-07-05 6677 hdspm->ss_in_channels += 4; 3de9db264cef4b Adrian Knoth 2013-07-05 6678 hdspm->ds_in_channels += 4; 3de9db264cef4b Adrian Knoth 2013-07-05 6679 hdspm->qs_in_channels += 4; 3de9db264cef4b Adrian Knoth 2013-07-05 6680 } 3de9db264cef4b Adrian Knoth 2013-07-05 6681 3de9db264cef4b Adrian Knoth 2013-07-05 6682 if (0 == (hdspm_read(hdspm, HDSPM_statusRegister2) & HDSPM_s2_AEBO_D)) { e3a471d6680487 Takashi Iwai 2014-02-26 6683 dev_info(card->dev, "AEB output board found\n"); 3de9db264cef4b Adrian Knoth 2013-07-05 6684 hdspm->ss_out_channels += 4; 3de9db264cef4b Adrian Knoth 2013-07-05 6685 hdspm->ds_out_channels += 4; 3de9db264cef4b Adrian Knoth 2013-07-05 6686 hdspm->qs_out_channels += 4; 3de9db264cef4b Adrian Knoth 2013-07-05 6687 } 3de9db264cef4b Adrian Knoth 2013-07-05 6688 0dca1793063c28 Adrian Knoth 2011-01-26 6689 hdspm->channel_map_out_ss = channel_map_aio_out_ss; 0dca1793063c28 Adrian Knoth 2011-01-26 6690 hdspm->channel_map_out_ds = channel_map_aio_out_ds; 0dca1793063c28 Adrian Knoth 2011-01-26 6691 hdspm->channel_map_out_qs = channel_map_aio_out_qs; 0dca1793063c28 Adrian Knoth 2011-01-26 6692 0dca1793063c28 Adrian Knoth 2011-01-26 6693 hdspm->channel_map_in_ss = channel_map_aio_in_ss; 0dca1793063c28 Adrian Knoth 2011-01-26 6694 hdspm->channel_map_in_ds = channel_map_aio_in_ds; 0dca1793063c28 Adrian Knoth 2011-01-26 6695 hdspm->channel_map_in_qs = channel_map_aio_in_qs; 0dca1793063c28 Adrian Knoth 2011-01-26 6696 0dca1793063c28 Adrian Knoth 2011-01-26 6697 hdspm->port_names_in_ss = texts_ports_aio_in_ss; 0dca1793063c28 Adrian Knoth 2011-01-26 6698 hdspm->port_names_out_ss = texts_ports_aio_out_ss; 0dca1793063c28 Adrian Knoth 2011-01-26 6699 hdspm->port_names_in_ds = texts_ports_aio_in_ds; 0dca1793063c28 Adrian Knoth 2011-01-26 6700 hdspm->port_names_out_ds = texts_ports_aio_out_ds; 0dca1793063c28 Adrian Knoth 2011-01-26 6701 hdspm->port_names_in_qs = texts_ports_aio_in_qs; 0dca1793063c28 Adrian Knoth 2011-01-26 6702 hdspm->port_names_out_qs = texts_ports_aio_out_qs; 0dca1793063c28 Adrian Knoth 2011-01-26 6703 0dca1793063c28 Adrian Knoth 2011-01-26 6704 break; 0dca1793063c28 Adrian Knoth 2011-01-26 6705 0dca1793063c28 Adrian Knoth 2011-01-26 6706 case RayDAT: 0dca1793063c28 Adrian Knoth 2011-01-26 6707 hdspm->ss_in_channels = hdspm->ss_out_channels = 0dca1793063c28 Adrian Knoth 2011-01-26 6708 RAYDAT_SS_CHANNELS; 0dca1793063c28 Adrian Knoth 2011-01-26 6709 hdspm->ds_in_channels = hdspm->ds_out_channels = 0dca1793063c28 Adrian Knoth 2011-01-26 6710 RAYDAT_DS_CHANNELS; 0dca1793063c28 Adrian Knoth 2011-01-26 6711 hdspm->qs_in_channels = hdspm->qs_out_channels = 0dca1793063c28 Adrian Knoth 2011-01-26 6712 RAYDAT_QS_CHANNELS; 0dca1793063c28 Adrian Knoth 2011-01-26 6713 0dca1793063c28 Adrian Knoth 2011-01-26 6714 hdspm->max_channels_in = RAYDAT_SS_CHANNELS; 0dca1793063c28 Adrian Knoth 2011-01-26 6715 hdspm->max_channels_out = RAYDAT_SS_CHANNELS; 0dca1793063c28 Adrian Knoth 2011-01-26 6716 0dca1793063c28 Adrian Knoth 2011-01-26 6717 hdspm->channel_map_in_ss = hdspm->channel_map_out_ss = 0dca1793063c28 Adrian Knoth 2011-01-26 6718 channel_map_raydat_ss; 0dca1793063c28 Adrian Knoth 2011-01-26 6719 hdspm->channel_map_in_ds = hdspm->channel_map_out_ds = 0dca1793063c28 Adrian Knoth 2011-01-26 6720 channel_map_raydat_ds; 0dca1793063c28 Adrian Knoth 2011-01-26 6721 hdspm->channel_map_in_qs = hdspm->channel_map_out_qs = 0dca1793063c28 Adrian Knoth 2011-01-26 6722 channel_map_raydat_qs; 0dca1793063c28 Adrian Knoth 2011-01-26 6723 hdspm->channel_map_in = hdspm->channel_map_out = 0dca1793063c28 Adrian Knoth 2011-01-26 6724 channel_map_raydat_ss; 0dca1793063c28 Adrian Knoth 2011-01-26 6725 0dca1793063c28 Adrian Knoth 2011-01-26 6726 hdspm->port_names_in_ss = hdspm->port_names_out_ss = 0dca1793063c28 Adrian Knoth 2011-01-26 6727 texts_ports_raydat_ss; 0dca1793063c28 Adrian Knoth 2011-01-26 6728 hdspm->port_names_in_ds = hdspm->port_names_out_ds = 0dca1793063c28 Adrian Knoth 2011-01-26 6729 texts_ports_raydat_ds; 0dca1793063c28 Adrian Knoth 2011-01-26 6730 hdspm->port_names_in_qs = hdspm->port_names_out_qs = 0dca1793063c28 Adrian Knoth 2011-01-26 6731 texts_ports_raydat_qs; 0dca1793063c28 Adrian Knoth 2011-01-26 6732 0dca1793063c28 Adrian Knoth 2011-01-26 6733 0dca1793063c28 Adrian Knoth 2011-01-26 6734 break; 0dca1793063c28 Adrian Knoth 2011-01-26 6735 0dca1793063c28 Adrian Knoth 2011-01-26 6736 } 0dca1793063c28 Adrian Knoth 2011-01-26 6737 0dca1793063c28 Adrian Knoth 2011-01-26 6738 /* TCO detection */ 0dca1793063c28 Adrian Knoth 2011-01-26 6739 switch (hdspm->io_type) { 0dca1793063c28 Adrian Knoth 2011-01-26 6740 case AIO: 0dca1793063c28 Adrian Knoth 2011-01-26 6741 case RayDAT: 0dca1793063c28 Adrian Knoth 2011-01-26 6742 if (hdspm_read(hdspm, HDSPM_statusRegister2) & 0dca1793063c28 Adrian Knoth 2011-01-26 6743 HDSPM_s2_tco_detect) { 0dca1793063c28 Adrian Knoth 2011-01-26 6744 hdspm->midiPorts++; 7dfec5075f23cd Markus Elfring 2017-08-12 6745 hdspm->tco = kzalloc(sizeof(*hdspm->tco), GFP_KERNEL); da2ea374b28aa6 Markus Elfring 2017-08-12 6746 if (hdspm->tco) 0dca1793063c28 Adrian Knoth 2011-01-26 6747 hdspm_tco_write(hdspm); da2ea374b28aa6 Markus Elfring 2017-08-12 6748 e3a471d6680487 Takashi Iwai 2014-02-26 6749 dev_info(card->dev, "AIO/RayDAT TCO module found\n"); 0dca1793063c28 Adrian Knoth 2011-01-26 6750 } else { 0dca1793063c28 Adrian Knoth 2011-01-26 6751 hdspm->tco = NULL; 0dca1793063c28 Adrian Knoth 2011-01-26 6752 } 0dca1793063c28 Adrian Knoth 2011-01-26 6753 break; 0dca1793063c28 Adrian Knoth 2011-01-26 6754 0dca1793063c28 Adrian Knoth 2011-01-26 6755 case MADI: 0dc831b9bca98a Adrian Knoth 2013-07-05 6756 case AES32: 0dca1793063c28 Adrian Knoth 2011-01-26 6757 if (hdspm_read(hdspm, HDSPM_statusRegister) & HDSPM_tco_detect) { 0dca1793063c28 Adrian Knoth 2011-01-26 6758 hdspm->midiPorts++; 7dfec5075f23cd Markus Elfring 2017-08-12 6759 hdspm->tco = kzalloc(sizeof(*hdspm->tco), GFP_KERNEL); da2ea374b28aa6 Markus Elfring 2017-08-12 6760 if (hdspm->tco) 0dca1793063c28 Adrian Knoth 2011-01-26 6761 hdspm_tco_write(hdspm); da2ea374b28aa6 Markus Elfring 2017-08-12 6762 e3a471d6680487 Takashi Iwai 2014-02-26 6763 dev_info(card->dev, "MADI/AES TCO module found\n"); 0dca1793063c28 Adrian Knoth 2011-01-26 6764 } else { 0dca1793063c28 Adrian Knoth 2011-01-26 6765 hdspm->tco = NULL; 0dca1793063c28 Adrian Knoth 2011-01-26 6766 } 0dca1793063c28 Adrian Knoth 2011-01-26 6767 break; 0dca1793063c28 Adrian Knoth 2011-01-26 6768 0dca1793063c28 Adrian Knoth 2011-01-26 6769 default: 0dca1793063c28 Adrian Knoth 2011-01-26 6770 hdspm->tco = NULL; 0dca1793063c28 Adrian Knoth 2011-01-26 6771 } 0dca1793063c28 Adrian Knoth 2011-01-26 6772 0dca1793063c28 Adrian Knoth 2011-01-26 6773 /* texts */ 0dca1793063c28 Adrian Knoth 2011-01-26 6774 switch (hdspm->io_type) { 0dca1793063c28 Adrian Knoth 2011-01-26 6775 case AES32: 0dca1793063c28 Adrian Knoth 2011-01-26 6776 if (hdspm->tco) { 0dca1793063c28 Adrian Knoth 2011-01-26 6777 hdspm->texts_autosync = texts_autosync_aes_tco; e71b95ad71e3ee Adrian Knoth 2013-07-05 6778 hdspm->texts_autosync_items = e71b95ad71e3ee Adrian Knoth 2013-07-05 6779 ARRAY_SIZE(texts_autosync_aes_tco); 0dca1793063c28 Adrian Knoth 2011-01-26 6780 } else { 0dca1793063c28 Adrian Knoth 2011-01-26 6781 hdspm->texts_autosync = texts_autosync_aes; e71b95ad71e3ee Adrian Knoth 2013-07-05 6782 hdspm->texts_autosync_items = e71b95ad71e3ee Adrian Knoth 2013-07-05 6783 ARRAY_SIZE(texts_autosync_aes); 0dca1793063c28 Adrian Knoth 2011-01-26 6784 } 0dca1793063c28 Adrian Knoth 2011-01-26 6785 break; 0dca1793063c28 Adrian Knoth 2011-01-26 6786 0dca1793063c28 Adrian Knoth 2011-01-26 6787 case MADI: 0dca1793063c28 Adrian Knoth 2011-01-26 6788 if (hdspm->tco) { 0dca1793063c28 Adrian Knoth 2011-01-26 6789 hdspm->texts_autosync = texts_autosync_madi_tco; 0dca1793063c28 Adrian Knoth 2011-01-26 6790 hdspm->texts_autosync_items = 4; 0dca1793063c28 Adrian Knoth 2011-01-26 6791 } else { 0dca1793063c28 Adrian Knoth 2011-01-26 6792 hdspm->texts_autosync = texts_autosync_madi; 0dca1793063c28 Adrian Knoth 2011-01-26 6793 hdspm->texts_autosync_items = 3; 0dca1793063c28 Adrian Knoth 2011-01-26 6794 } 0dca1793063c28 Adrian Knoth 2011-01-26 6795 break; 0dca1793063c28 Adrian Knoth 2011-01-26 6796 0dca1793063c28 Adrian Knoth 2011-01-26 6797 case MADIface: 0dca1793063c28 Adrian Knoth 2011-01-26 6798 0dca1793063c28 Adrian Knoth 2011-01-26 6799 break; 0dca1793063c28 Adrian Knoth 2011-01-26 6800 0dca1793063c28 Adrian Knoth 2011-01-26 6801 case RayDAT: 0dca1793063c28 Adrian Knoth 2011-01-26 6802 if (hdspm->tco) { 0dca1793063c28 Adrian Knoth 2011-01-26 6803 hdspm->texts_autosync = texts_autosync_raydat_tco; 0dca1793063c28 Adrian Knoth 2011-01-26 6804 hdspm->texts_autosync_items = 9; 0dca1793063c28 Adrian Knoth 2011-01-26 6805 } else { 0dca1793063c28 Adrian Knoth 2011-01-26 6806 hdspm->texts_autosync = texts_autosync_raydat; 0dca1793063c28 Adrian Knoth 2011-01-26 6807 hdspm->texts_autosync_items = 8; 0dca1793063c28 Adrian Knoth 2011-01-26 6808 } 0dca1793063c28 Adrian Knoth 2011-01-26 6809 break; 0dca1793063c28 Adrian Knoth 2011-01-26 6810 0dca1793063c28 Adrian Knoth 2011-01-26 6811 case AIO: 0dca1793063c28 Adrian Knoth 2011-01-26 6812 if (hdspm->tco) { 0dca1793063c28 Adrian Knoth 2011-01-26 6813 hdspm->texts_autosync = texts_autosync_aio_tco; 0dca1793063c28 Adrian Knoth 2011-01-26 6814 hdspm->texts_autosync_items = 6; 0dca1793063c28 Adrian Knoth 2011-01-26 6815 } else { 0dca1793063c28 Adrian Knoth 2011-01-26 6816 hdspm->texts_autosync = texts_autosync_aio; 0dca1793063c28 Adrian Knoth 2011-01-26 6817 hdspm->texts_autosync_items = 5; 0dca1793063c28 Adrian Knoth 2011-01-26 6818 } 0dca1793063c28 Adrian Knoth 2011-01-26 6819 break; 0dca1793063c28 Adrian Knoth 2011-01-26 6820 0dca1793063c28 Adrian Knoth 2011-01-26 6821 } 0dca1793063c28 Adrian Knoth 2011-01-26 6822 f7de8ba3fcf194 Adrian Knoth 2012-01-10 6823 if (hdspm->io_type != MADIface) { f7de8ba3fcf194 Adrian Knoth 2012-01-10 6824 hdspm->serial = (hdspm_read(hdspm, f7de8ba3fcf194 Adrian Knoth 2012-01-10 6825 HDSPM_midiStatusIn0)>>8) & 0xFFFFFF; f7de8ba3fcf194 Adrian Knoth 2012-01-10 6826 /* id contains either a user-provided value or the default f7de8ba3fcf194 Adrian Knoth 2012-01-10 6827 * NULL. If it's the default, we're safe to f7de8ba3fcf194 Adrian Knoth 2012-01-10 6828 * fill card->id with the serial number. f7de8ba3fcf194 Adrian Knoth 2012-01-10 6829 * f7de8ba3fcf194 Adrian Knoth 2012-01-10 6830 * If the serial number is 0xFFFFFF, then we're dealing with f7de8ba3fcf194 Adrian Knoth 2012-01-10 6831 * an old PCI revision that comes without a sane number. In f7de8ba3fcf194 Adrian Knoth 2012-01-10 6832 * this case, we don't set card->id to avoid collisions f7de8ba3fcf194 Adrian Knoth 2012-01-10 6833 * when running with multiple cards. f7de8ba3fcf194 Adrian Knoth 2012-01-10 6834 */ da2ea374b28aa6 Markus Elfring 2017-08-12 6835 if (!id[hdspm->dev] && hdspm->serial != 0xFFFFFF) { 7ad210ace5c170 Arnd Bergmann 2017-07-18 6836 snprintf(card->id, sizeof(card->id), 7ad210ace5c170 Arnd Bergmann 2017-07-18 6837 "HDSPMx%06x", hdspm->serial); f7de8ba3fcf194 Adrian Knoth 2012-01-10 6838 snd_card_set_id(card, card->id); f7de8ba3fcf194 Adrian Knoth 2012-01-10 6839 } f7de8ba3fcf194 Adrian Knoth 2012-01-10 6840 } f7de8ba3fcf194 Adrian Knoth 2012-01-10 6841 e3a471d6680487 Takashi Iwai 2014-02-26 6842 dev_dbg(card->dev, "create alsa devices.\n"); ef5fa1a49fc3b5 Takashi Iwai 2007-07-27 6843 err = snd_hdspm_create_alsa_devices(card, hdspm); ef5fa1a49fc3b5 Takashi Iwai 2007-07-27 6844 if (err < 0) 763f356cd8de9e Takashi Iwai 2005-06-03 6845 return err; 763f356cd8de9e Takashi Iwai 2005-06-03 6846 763f356cd8de9e Takashi Iwai 2005-06-03 6847 snd_hdspm_initialize_midi_flush(hdspm); 763f356cd8de9e Takashi Iwai 2005-06-03 6848 763f356cd8de9e Takashi Iwai 2005-06-03 6849 return 0; 763f356cd8de9e Takashi Iwai 2005-06-03 6850 } 763f356cd8de9e Takashi Iwai 2005-06-03 6851 :::::: The code at line 6589 was first introduced by commit :::::: 763f356cd8de9e158836d236b3fd9dd149d696f9 [ALSA] Add HDSP MADI driver :::::: TO: Takashi Iwai <[email protected]> :::::: CC: Jaroslav Kysela <[email protected]> -- 0-DAY CI Kernel Test Service https://01.org/lkp _______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
