ASoC: SOF: amd: fix building without CONFIG_ACPI
Subsystems (3)
PATCH 1/1 ASoC: SOF: amd: fix building without CONFIG_ACPI
From: Arnd Bergmann <[email protected]>
When ACPI is disabled, this driver runs into a build failure:
sound/soc/sof/amd/acp.c:1374:13: error: call to undeclared function 'acpi_find_child_device'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
1374 | pdm_dev = acpi_find_child_device(adev, ACP7X_DMIC_ADDR, 0);
The code block is already guarded by an 'if (adev)' check that can only be true if ACPI is enabled, so add another #ifdef to match this.
---
I also tried adding ACPI Kconfig dependencies, but that quickly got out of hand since the acp module is selected by a number of drivers that then all need the same dependency.
It may be possible to work around this in the ACPI code by adding a stub macro for acpi_find_child_device() that does nothing.
--- sound/soc/sof/amd/acp.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-)
sound/soc/sof/amd/acp.c +7 -2
@@ -1059,6 +1059,7 @@ int amd_sof_acp_resume(struct snd_sof_dev *sdev) }EXPORT_SYMBOL_NS (amd_sof_acp_resume,"SND_SOC_SOF_AMD_COMMON" ); +#ifdef CONFIG_ACPI static void acp_sof_scan_pdm_devices (struct snd_sof_dev *sdev,struct acpi_device *pdm_dev) {
@@ -1083,6 +1084,7 @@ static void acp_sof_scan_pdm_devices(struct snd_sof_dev *sdev, }fwnode_handle_put (child); } +#endif #if IS_ENABLED (CONFIG_SND_SOC_SOF_AMD_SOUNDWIRE )static int acp_sof_scan_sdw_devices (struct snd_sof_dev *sdev,u64 addr)
@@ -1299,9 +1301,7 @@ int amd_sof_acp7x_probe(struct snd_sof_dev *sdev)struct pci_dev *pci =to_pci_dev (sdev->dev);struct acp_dev_data *adata;const struct sof_amd_acp_desc *chip; -const union acpi_object *obj;struct acpi_device *adev; -struct acpi_device *pdm_dev;unsigned int addr;unsigned int irqflags;int ret;
@@ -1369,7 +1369,11 @@ int amd_sof_acp7x_probe(struct snd_sof_dev *sdev) adata->is_sdw_dev = true; skip_soundwire: +#ifdef CONFIG_ACPI if (adev) { +struct acpi_device *pdm_dev; +const union acpi_object *obj; +/* DMIC ACPI child address is 2 on ACP7x platforms */ pdm_dev =acpi_find_child_device (adev,ACP7X_DMIC_ADDR ,0 );if (pdm_dev)
@@ -1379,6 +1383,7 @@ int amd_sof_acp7x_probe(struct snd_sof_dev *sdev) ACPI_TYPE_INTEGER, &obj)) adata->acp_sof_signed_firmware_image = obj->integer.value; } +#endif sdev->dsp_box.offset =0 ; sdev->dsp_box.size =BOX_SIZE_512 ;
Signature · 1 line
2.53.0
Quoted 13 lines · Arnd Bergmann
From: Arnd Bergmann <[email protected]>
When ACPI is disabled, this driver runs into a build failure:
sound/soc/sof/amd/acp.c:1374:13: error: call to undeclared function 'acpi_find_child_device'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
1374 |pdm_dev=acpi_find_child_device(adev, ACP7X_DMIC_ADDR, 0);The code block is already guarded by an 'if (adev)' check that can only be true if ACPI is enabled, so add another #ifdef to match this.
Fixes 203ea76c4b0a ("ASoC: SOF: amd: add ACP7.B/7.F PDM controller scan and pdata propagation")Signed-off-by Arnd Bergmann <[email protected]>
Quoted 7 lines
---
I also tried adding ACPIKconfigdependencies, but that quickly got out of hand since the acp module is selected by a number of drivers that then all need the same dependency.It may be possible to work around this in the ACPI code by adding a stub macro for
acpi_find_child_device()that does nothing.
I reproduced the issue as you reported. The stub approach seems to work too. I've posted that option here for Mark and Rafael to weigh out, thanks for the idea.
https://lore.kernel.org/linux-acpi/[email protected]/
Quoted 56 lines
Signed-off-by Arnd Bergmann <[email protected]>--- sound/soc/sof/amd/acp.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-)sound/soc/sof/amd/acp.c +7
-2@@ -1059,6 +1059,7 @@ int amd_sof_acp_resume(struct snd_sof_dev *sdev) }EXPORT_SYMBOL_NS (amd_sof_acp_resume,"SND_SOC_SOF_AMD_COMMON" ); +#ifdef CONFIG_ACPI static void acp_sof_scan_pdm_devices (struct snd_sof_dev *sdev,struct acpi_device *pdm_dev) {@@ -1083,6 +1084,7 @@ static void acp_sof_scan_pdm_devices(struct snd_sof_dev *sdev, }fwnode_handle_put (child); } +#endif #if IS_ENABLED (CONFIG_SND_SOC_SOF_AMD_SOUNDWIRE )static int acp_sof_scan_sdw_devices (struct snd_sof_dev *sdev,u64 addr)@@ -1299,9 +1301,7 @@ int amd_sof_acp7x_probe(struct snd_sof_dev *sdev)struct pci_dev *pci =to_pci_dev (sdev->dev);struct acp_dev_data *adata;const struct sof_amd_acp_desc *chip; -const union acpi_object *obj;struct acpi_device *adev; -struct acpi_device *pdm_dev;unsigned int addr;unsigned int irqflags;int ret;@@ -1369,7 +1369,11 @@ int amd_sof_acp7x_probe(struct snd_sof_dev *sdev) adata->is_sdw_dev = true; skip_soundwire: +#ifdef CONFIG_ACPI if (adev) { +struct acpi_device *pdm_dev; +const union acpi_object *obj; +/* DMIC ACPI child address is 2 on ACP7x platforms */ pdm_dev =acpi_find_child_device (adev,ACP7X_DMIC_ADDR ,0 );if (pdm_dev)@@ -1379,6 +1383,7 @@ int amd_sof_acp7x_probe(struct snd_sof_dev *sdev) ACPI_TYPE_INTEGER, &obj)) adata->acp_sof_signed_firmware_image = obj->integer.value; } +#endif sdev->dsp_box.offset =0 ; sdev->dsp_box.size =BOX_SIZE_512 ;
Mukunda,Vijendar
reviewerQuoted 10 lines · Mario Limonciello
Quoted 7 lines · Arnd Bergmann
From: Arnd Bergmann <[email protected]>
When ACPI is disabled, this driver runs into a build failure:
sound/soc/sof/amd/acp.c:1374:13: error: call to undeclared function 'acpi_find_child_device'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration] 1374 |pdm_dev=acpi_find_child_device(adev, ACP7X_DMIC_ADDR, 0);
Hi Arnd,
Thanks for catching and fixing this issue.
As the author of the original patch, I didn't receive the original bug report. Was it sent to a limited recipient set, or could there have been a mailing list delivery issue?
-
Vijendar
Quoted 73 lines
Quoted 6 lines
The code block is already guarded by an 'if (adev)' check that can only be true if ACPI is enabled, so add another #ifdef to match this.
Fixes 203ea76c4b0a ("ASoC: SOF: amd: add ACP7.B/7.F PDM controller scan and pdata propagation")Signed-off-by Arnd Bergmann <[email protected]>Quoted 7 lines
---
I also tried adding ACPIKconfigdependencies, but that quickly got out of hand since the acp module is selected by a number of drivers that then all need the same dependency.It may be possible to work around this in the ACPI code by adding a stub macro for
acpi_find_child_device()that does nothing.I reproduced the issue as you reported. The stub approach seems to work too. I've posted that option here for Mark and Rafael to weigh out, thanks for the idea.
https://lore.kernel.org/linux-acpi/[email protected]/
Quoted 53 lines
Signed-off-by Arnd Bergmann <[email protected]>---
sound/soc/sof/amd/acp.c| 9 +++++++--1 file changed, 7 insertions(+), 2 deletions(-)sound/soc/sof/amd/acp.c +0
-0@@ -1059,6 +1059,7 @@ int amd_sof_acp_resume(struct snd_sof_dev *sdev) } EXPORT_SYMBOL_NS(amd_sof_acp_resume, "SND_SOC_SOF_AMD_COMMON");+#ifdef
CONFIG_ACPI
static voidacp_sof_scan_pdm_devices(struct snd_sof_dev *sdev, struct acpi_device *pdm_dev)
{sound/soc/sof/amd/acp.c +1
-2@@ -1083,6 +1084,7 @@ static void acp_sof_scan_pdm_devices(structsnd_sof_dev *sdev, } fwnode_handle_put(child); } +#endif #if IS_ENABLED(CONFIG_SND_SOC_SOF_AMD_SOUNDWIRE) static int acp_sof_scan_sdw_devices(struct snd_sof_dev *sdev, u64 addr)@@ -1299,9 +1301,7 @@ int amd_sof_acp7x_probe(struct snd_sof_dev *sdev) struct pci_dev *pci = to_pci_dev(sdev->dev); struct acp_dev_data *adata; const struct sof_amd_acp_desc *chip; - const union acpi_object *obj; struct acpi_device *adev; - struct acpi_device *pdm_dev; unsigned int addr; unsigned int irqflags; int ret;@@ -1369,7 +1369,11 @@ int amd_sof_acp7x_probe(struct snd_sof_dev *sdev) adata->is_sdw_dev = true;
skip_soundwire:
+#ifdefCONFIG_ACPI
if (adev) {
+ structacpi_device*pdm_dev;
+ const unionacpi_object*obj;
+
/* DMIC ACPI child address is 2 on ACP7x platforms */pdm_dev=acpi_find_child_device(adev, ACP7X_DMIC_ADDR, 0); if (pdm_dev)sound/soc/sof/amd/acp.c +1
-0@@ -1379,6 +1383,7 @@ int amd_sof_acp7x_probe(struct snd_sof_dev *sdev) ACPI_TYPE_INTEGER, &obj)) adata->acp_sof_signed_firmware_image = obj->integer.value; } +#endif sdev->dsp_box.offset = 0; sdev->dsp_box.size = BOX_SIZE_512;
Quoted 12 lines · Mukunda,Vijendar
Quoted 11 lines · Mario Limonciello
Quoted 10 lines · Arnd Bergmann
From: Arnd Bergmann <[email protected]>
When ACPI is disabled, this driver runs into a build failure:
sound/soc/sof/amd/acp.c:1374:13: error: call to undeclared function 'acpi_find_child_device'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration] 1374 |pdm_dev=acpi_find_child_device(adev, ACP7X_DMIC_ADDR, 0);
Quoted 6 lines
Hi Arnd,
Thanks for catching and fixing this issue.
As the author of the original patch, I didn't receive the original bug report. Was it sent to a limited recipient set, or could there have been a mailing list delivery issue?
No idea, my report is in the archive, and I assume that is how Mario saw it:
https://lore.kernel.org/linux-sound/[email protected]/
I only ran into the problem on today's linux-next during randconfig testing.
Arnd