Skip to contentSkip to conversation

ASoC: Intel: catpt: remove duplicating driver data retrieval

PATCH In review Andy Shevchenko 2 participants 3 messages Jul 2, 2022 – Jul 5, 2022

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 ASoC: Intel: catpt: remove duplicating driver data retrieval

device_get_match_data() in ACPI case calls similar to acpi_match_device() API. Hence there is no need to duplicate the call. Just check what the former returns.

---
 sound/soc/intel/catpt/device.c | 11 ++++-------
 1 file changed, 4 insertions(+), 7 deletions(-)
sound/soc/intel/catpt/device.c +4 -7
index 85a34e37316d..21856a394c3d 100644
@@ -12,13 +12,14 @@
 // helping backtrack its historical background
 //
 
-#include <linux/acpi.h>
 #include <linux/dma-mapping.h>
 #include <linux/interrupt.h>
+#include <linux/mod_devicetable.h>
 #include <linux/module.h>
 #include <linux/pci.h>
 #include <linux/platform_device.h>
 #include <linux/pm_runtime.h>
+#include <linux/property.h>
 #include <sound/intel-dsp-config.h>
 #include <sound/soc.h>
 #include <sound/soc-acpi.h>
@@ -244,8 +245,8 @@ static int catpt_acpi_probe(struct platform_device *pdev)
 	struct resource *res;
 	int ret;
 
-	id = acpi_match_device(dev->driver->acpi_match_table, dev);
-	if (!id)
+	spec = device_get_match_data(dev);
+	if (!spec)
 		return -ENODEV;
 
 	ret = snd_intel_acpi_dsp_driver_probe(dev, id->id);
@@ -254,10 +255,6 @@ static int catpt_acpi_probe(struct platform_device *pdev)
 		return -ENODEV;
 	}
 
-	spec = device_get_match_data(dev);
-	if (!spec)
-		return -ENODEV;
-
 	cdev = devm_kzalloc(dev, sizeof(*cdev), GFP_KERNEL);
 	if (!cdev)
 		return -ENOMEM;
Signature · 1 line
2.35.1
#1 lore raw
Quoted 3 lines · Andy Shevchenko

device_get_match_data() in ACPI case calls similar to acpi_match_device() API. Hence there is no need to duplicate the call. Just check what the former returns.

This patch is wrong and it's late here, and I'm blind. Sorry for the noise.

Signature · 2 lines
With Best Regards,
Andy Shevchenko
#2 lore raw
In reply to Andy Shevchenko
I love your patch! Perhaps something to improve:

Hi Andy,

I love your patch! Perhaps something to improve:

[auto build test WARNING on broonie-sound/for-next]
[also build test WARNING on tiwai-sound/for-next linus/master v5.19-rc5 next-20220705] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/intel-lab-lkp/linux/commits/Andy-Shevchenko/ASoC-Intel-catpt-remove-duplicating-driver-data-retrieval/20220703-063325
base:   https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-next
config: i386-randconfig-c001 (https://download.01.org/0day-ci/archive/20220706/[email protected]/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project f7a80c3d08d4821e621fc88d6a2e435291f82dff)

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/intel-lab-lkp/linux/commit/a83f7416086fbf505f7f585fa3718fed2ee1ac75
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Andy-Shevchenko/ASoC-Intel-catpt-remove-duplicating-driver-data-retrieval/20220703-063325 git checkout a83f7416086fbf505f7f585fa3718fed2ee1ac75
# 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=i386 SHELL=/bin/bash sound/soc/intel/catpt/

If you fix the issue, kindly add following tag where applicable

All warnings (new ones prefixed by >>):

>> sound/soc/intel/catpt/device.c:252:45: warning: variable 'id' is uninitialized when used here [-Wuninitialized]
           ret = snd_intel_acpi_dsp_driver_probe(dev, id->id);
                                                      ^~
   sound/soc/intel/catpt/device.c:244:33: note: initialize the variable 'id' to silence this warning
           const struct acpi_device_id *id;
                                          ^
                                           = NULL

1 warning generated.

vim +/id +252 sound/soc/intel/catpt/device.c

7a10b66a5df965 Cezary Rojewski      2020-09-29  238  
7a10b66a5df965 Cezary Rojewski      2020-09-29  239  static int catpt_acpi_probe(struct platform_device *pdev)
7a10b66a5df965 Cezary Rojewski      2020-09-29  240  {
7a10b66a5df965 Cezary Rojewski      2020-09-29  241  	const struct catpt_spec *spec;
7a10b66a5df965 Cezary Rojewski      2020-09-29  242  	struct catpt_dev *cdev;
7a10b66a5df965 Cezary Rojewski      2020-09-29  243  	struct device *dev = &pdev->dev;
ec8a15d3a7c7d6 Pierre-Louis Bossart 2020-11-12  244  	const struct acpi_device_id *id;
7a10b66a5df965 Cezary Rojewski      2020-09-29  245  	struct resource *res;
7a10b66a5df965 Cezary Rojewski      2020-09-29  246  	int ret;
7a10b66a5df965 Cezary Rojewski      2020-09-29  247  
a83f7416086fbf Andy Shevchenko      2022-07-03  248  	spec = device_get_match_data(dev);
a83f7416086fbf Andy Shevchenko      2022-07-03  249  	if (!spec)
ec8a15d3a7c7d6 Pierre-Louis Bossart 2020-11-12  250  		return -ENODEV;
ec8a15d3a7c7d6 Pierre-Louis Bossart 2020-11-12  251  
ec8a15d3a7c7d6 Pierre-Louis Bossart 2020-11-12 @252  	ret = snd_intel_acpi_dsp_driver_probe(dev, id->id);
ec8a15d3a7c7d6 Pierre-Louis Bossart 2020-11-12  253  	if (ret != SND_INTEL_DSP_DRIVER_ANY && ret != SND_INTEL_DSP_DRIVER_SST) {
ec8a15d3a7c7d6 Pierre-Louis Bossart 2020-11-12  254  		dev_dbg(dev, "CATPT ACPI driver not selected, aborting probe\n");
ec8a15d3a7c7d6 Pierre-Louis Bossart 2020-11-12  255  		return -ENODEV;
ec8a15d3a7c7d6 Pierre-Louis Bossart 2020-11-12  256  	}
ec8a15d3a7c7d6 Pierre-Louis Bossart 2020-11-12  257  
7a10b66a5df965 Cezary Rojewski      2020-09-29  258  	cdev = devm_kzalloc(dev, sizeof(*cdev), GFP_KERNEL);
7a10b66a5df965 Cezary Rojewski      2020-09-29  259  	if (!cdev)
7a10b66a5df965 Cezary Rojewski      2020-09-29  260  		return -ENOMEM;
7a10b66a5df965 Cezary Rojewski      2020-09-29  261  
7a10b66a5df965 Cezary Rojewski      2020-09-29  262  	catpt_dev_init(cdev, dev, spec);
7a10b66a5df965 Cezary Rojewski      2020-09-29  263  
7a10b66a5df965 Cezary Rojewski      2020-09-29  264  	/* map DSP bar address */
7a10b66a5df965 Cezary Rojewski      2020-09-29  265  	cdev->lpe_ba = devm_platform_get_and_ioremap_resource(pdev, 0, &res);
7a10b66a5df965 Cezary Rojewski      2020-09-29  266  	if (IS_ERR(cdev->lpe_ba))
7a10b66a5df965 Cezary Rojewski      2020-09-29  267  		return PTR_ERR(cdev->lpe_ba);
7a10b66a5df965 Cezary Rojewski      2020-09-29  268  	cdev->lpe_base = res->start;
7a10b66a5df965 Cezary Rojewski      2020-09-29  269  
7a10b66a5df965 Cezary Rojewski      2020-09-29  270  	/* map PCI bar address */
7a10b66a5df965 Cezary Rojewski      2020-09-29  271  	cdev->pci_ba = devm_platform_ioremap_resource(pdev, 1);
7a10b66a5df965 Cezary Rojewski      2020-09-29  272  	if (IS_ERR(cdev->pci_ba))
7a10b66a5df965 Cezary Rojewski      2020-09-29  273  		return PTR_ERR(cdev->pci_ba);
7a10b66a5df965 Cezary Rojewski      2020-09-29  274  
7a10b66a5df965 Cezary Rojewski      2020-09-29  275  	/* alloc buffer for storing DRAM context during dx transitions */
7a10b66a5df965 Cezary Rojewski      2020-09-29  276  	cdev->dxbuf_vaddr = dmam_alloc_coherent(dev, catpt_dram_size(cdev),
7a10b66a5df965 Cezary Rojewski      2020-09-29  277  						&cdev->dxbuf_paddr, GFP_KERNEL);
7a10b66a5df965 Cezary Rojewski      2020-09-29  278  	if (!cdev->dxbuf_vaddr)
7a10b66a5df965 Cezary Rojewski      2020-09-29  279  		return -ENOMEM;
7a10b66a5df965 Cezary Rojewski      2020-09-29  280  
7a10b66a5df965 Cezary Rojewski      2020-09-29  281  	ret = platform_get_irq(pdev, 0);
7a10b66a5df965 Cezary Rojewski      2020-09-29  282  	if (ret < 0)
7a10b66a5df965 Cezary Rojewski      2020-09-29  283  		return ret;
7a10b66a5df965 Cezary Rojewski      2020-09-29  284  	cdev->irq = ret;
7a10b66a5df965 Cezary Rojewski      2020-09-29  285  
7a10b66a5df965 Cezary Rojewski      2020-09-29  286  	platform_set_drvdata(pdev, cdev);
7a10b66a5df965 Cezary Rojewski      2020-09-29  287  
7a10b66a5df965 Cezary Rojewski      2020-09-29  288  	ret = devm_request_threaded_irq(dev, cdev->irq, catpt_dsp_irq_handler,
7a10b66a5df965 Cezary Rojewski      2020-09-29  289  					catpt_dsp_irq_thread,
7a10b66a5df965 Cezary Rojewski      2020-09-29  290  					IRQF_SHARED, "AudioDSP", cdev);
7a10b66a5df965 Cezary Rojewski      2020-09-29  291  	if (ret)
7a10b66a5df965 Cezary Rojewski      2020-09-29  292  		return ret;
7a10b66a5df965 Cezary Rojewski      2020-09-29  293  
7a10b66a5df965 Cezary Rojewski      2020-09-29  294  	return catpt_probe_components(cdev);
7a10b66a5df965 Cezary Rojewski      2020-09-29  295  }
7a10b66a5df965 Cezary Rojewski      2020-09-29  296  
Signature · 2 lines
0-DAY CI Kernel Test Service
https://01.org/lkp