[alsa-devel] [PATCH 1/3] ALSA: hda - Remove dependency on bus->pci in hda_beep.c
The default parent device can be obtained directly via card object, so we don't need to rely on pci->dev.parent. Since there is no access to pci_dev, we can reduce the inclusion of linux/pci.h, too.
Signed-off-by: Takashi Iwai tiwai@suse.de --- sound/pci/hda/hda_beep.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/sound/pci/hda/hda_beep.c b/sound/pci/hda/hda_beep.c index 0589b39cda6e..d8c437a94559 100644 --- a/sound/pci/hda/hda_beep.c +++ b/sound/pci/hda/hda_beep.c @@ -20,7 +20,6 @@ */
#include <linux/input.h> -#include <linux/pci.h> #include <linux/slab.h> #include <linux/workqueue.h> #include <linux/export.h> @@ -167,7 +166,7 @@ static int snd_hda_do_attach(struct hda_beep *beep) input_dev->evbit[0] = BIT_MASK(EV_SND); input_dev->sndbit[0] = BIT_MASK(SND_BELL) | BIT_MASK(SND_TONE); input_dev->event = snd_hda_beep_event; - input_dev->dev.parent = &codec->bus->pci->dev; + input_dev->dev.parent = codec->bus->card->dev; input_set_drvdata(input_dev, beep);
err = input_register_device(input_dev);
Realtek codec driver contains some codes referring to the PCI subdevice IDs, but most of them are optional, typically for checking the codec name variants. Add NULL checks appropriately so that it can work without PCI assignment.
Signed-off-by: Takashi Iwai tiwai@suse.de --- sound/pci/hda/patch_realtek.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-)
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index 86857b674302..c5405f319cfe 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c @@ -395,6 +395,8 @@ static int alc_auto_parse_customize_define(struct hda_codec *codec) goto do_sku; }
+ if (!codec->bus->pci) + return -1; ass = codec->subsystem_id & 0xffff; if (ass != codec->bus->pci->subsystem_device && (ass & 1)) goto do_sku; @@ -483,7 +485,8 @@ static int alc_subsystem_id(struct hda_codec *codec, const hda_nid_t *ports) }
ass = codec->subsystem_id & 0xffff; - if ((ass != codec->bus->pci->subsystem_device) && (ass & 1)) + if (codec->bus->pci && + ass != codec->bus->pci->subsystem_device && (ass & 1)) goto do_sku;
/* invalid SSID, check the special NID pin defcfg instead */ @@ -966,6 +969,8 @@ static int alc_codec_rename_from_preset(struct hda_codec *codec) return alc_codec_rename(codec, p->name); }
+ if (!codec->bus->pci) + return 0; for (q = rename_pci_tbl; q->codec_vendor_id; q++) { if (q->codec_vendor_id != codec->vendor_id) continue; @@ -4502,13 +4507,15 @@ static int patch_alc269(struct hda_codec *codec) spec->codec_variant = ALC269_TYPE_ALC269VA; switch (alc_get_coef0(codec) & 0x00f0) { case 0x0010: - if (codec->bus->pci->subsystem_vendor == 0x1025 && + if (codec->bus->pci && + codec->bus->pci->subsystem_vendor == 0x1025 && spec->cdefine.platform_type == 1) err = alc_codec_rename(codec, "ALC271X"); spec->codec_variant = ALC269_TYPE_ALC269VB; break; case 0x0020: - if (codec->bus->pci->subsystem_vendor == 0x17aa && + if (codec->bus->pci && + codec->bus->pci->subsystem_vendor == 0x17aa && codec->bus->pci->subsystem_device == 0x21f3) err = alc_codec_rename(codec, "ALC3202"); spec->codec_variant = ALC269_TYPE_ALC269VC; @@ -5309,7 +5316,7 @@ static int patch_alc662(struct hda_codec *codec) spec->gen.beep_nid = 0x01;
if ((alc_get_coef0(codec) & (1 << 14)) && - codec->bus->pci->subsystem_vendor == 0x1025 && + codec->bus->pci && codec->bus->pci->subsystem_vendor == 0x1025 && spec->cdefine.platform_type == 1) { err = alc_codec_rename(codec, "ALC272X"); if (err < 0)
Some codec drivers still have it since using PCI_VENDOR_ID_*.
Signed-off-by: Takashi Iwai tiwai@suse.de --- sound/pci/hda/hda_codec.c | 1 - sound/pci/hda/hda_hwdep.c | 1 - sound/pci/hda/patch_analog.c | 1 - sound/pci/hda/patch_ca0110.c | 1 - sound/pci/hda/patch_ca0132.c | 1 - sound/pci/hda/patch_cirrus.c | 1 - sound/pci/hda/patch_cmedia.c | 1 - sound/pci/hda/patch_conexant.c | 1 - 8 files changed, 8 deletions(-)
diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c index dafcf82139e2..4be322b0d745 100644 --- a/sound/pci/hda/hda_codec.c +++ b/sound/pci/hda/hda_codec.c @@ -23,7 +23,6 @@ #include <linux/init.h> #include <linux/delay.h> #include <linux/slab.h> -#include <linux/pci.h> #include <linux/mutex.h> #include <linux/module.h> #include <linux/async.h> diff --git a/sound/pci/hda/hda_hwdep.c b/sound/pci/hda/hda_hwdep.c index 72d8389fb399..53c961992d0c 100644 --- a/sound/pci/hda/hda_hwdep.c +++ b/sound/pci/hda/hda_hwdep.c @@ -20,7 +20,6 @@
#include <linux/init.h> #include <linux/slab.h> -#include <linux/pci.h> #include <linux/compat.h> #include <linux/mutex.h> #include <linux/ctype.h> diff --git a/sound/pci/hda/patch_analog.c b/sound/pci/hda/patch_analog.c index df3652ad15ef..1eb00a6d3ef5 100644 --- a/sound/pci/hda/patch_analog.c +++ b/sound/pci/hda/patch_analog.c @@ -21,7 +21,6 @@
#include <linux/init.h> #include <linux/slab.h> -#include <linux/pci.h> #include <linux/module.h>
#include <sound/core.h> diff --git a/sound/pci/hda/patch_ca0110.c b/sound/pci/hda/patch_ca0110.c index 30b3a4bc06ee..5e65999e0d8e 100644 --- a/sound/pci/hda/patch_ca0110.c +++ b/sound/pci/hda/patch_ca0110.c @@ -20,7 +20,6 @@
#include <linux/init.h> #include <linux/slab.h> -#include <linux/pci.h> #include <linux/module.h> #include <sound/core.h> #include "hda_codec.h" diff --git a/sound/pci/hda/patch_ca0132.c b/sound/pci/hda/patch_ca0132.c index 54d14793725a..4c5132cdb0cf 100644 --- a/sound/pci/hda/patch_ca0132.c +++ b/sound/pci/hda/patch_ca0132.c @@ -24,7 +24,6 @@ #include <linux/init.h> #include <linux/delay.h> #include <linux/slab.h> -#include <linux/pci.h> #include <linux/mutex.h> #include <linux/module.h> #include <linux/firmware.h> diff --git a/sound/pci/hda/patch_cirrus.c b/sound/pci/hda/patch_cirrus.c index fc492ac24caa..387f0b551889 100644 --- a/sound/pci/hda/patch_cirrus.c +++ b/sound/pci/hda/patch_cirrus.c @@ -20,7 +20,6 @@
#include <linux/init.h> #include <linux/slab.h> -#include <linux/pci.h> #include <linux/module.h> #include <sound/core.h> #include <sound/tlv.h> diff --git a/sound/pci/hda/patch_cmedia.c b/sound/pci/hda/patch_cmedia.c index 139ef301c914..d782292b1ba9 100644 --- a/sound/pci/hda/patch_cmedia.c +++ b/sound/pci/hda/patch_cmedia.c @@ -23,7 +23,6 @@
#include <linux/init.h> #include <linux/slab.h> -#include <linux/pci.h> #include <linux/module.h> #include <sound/core.h> #include "hda_codec.h" diff --git a/sound/pci/hda/patch_conexant.c b/sound/pci/hda/patch_conexant.c index 59e3aeac2233..13a416060eb8 100644 --- a/sound/pci/hda/patch_conexant.c +++ b/sound/pci/hda/patch_conexant.c @@ -23,7 +23,6 @@ #include <linux/init.h> #include <linux/delay.h> #include <linux/slab.h> -#include <linux/pci.h> #include <linux/module.h> #include <sound/core.h> #include <sound/jack.h>
At Sat, 15 Feb 2014 10:17:33 +0100, Takashi Iwai wrote:
The default parent device can be obtained directly via card object, so we don't need to rely on pci->dev.parent. Since there is no access to pci_dev, we can reduce the inclusion of linux/pci.h, too.
Signed-off-by: Takashi Iwai tiwai@suse.de
I forgot the cover page: these tree patches are trivial cleanups of hda-codec drivers (not the controller) to work without PCI device assignment. The idea was triggered by Dylan's question.
Takashi
sound/pci/hda/hda_beep.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/sound/pci/hda/hda_beep.c b/sound/pci/hda/hda_beep.c index 0589b39cda6e..d8c437a94559 100644 --- a/sound/pci/hda/hda_beep.c +++ b/sound/pci/hda/hda_beep.c @@ -20,7 +20,6 @@ */
#include <linux/input.h> -#include <linux/pci.h> #include <linux/slab.h> #include <linux/workqueue.h> #include <linux/export.h> @@ -167,7 +166,7 @@ static int snd_hda_do_attach(struct hda_beep *beep) input_dev->evbit[0] = BIT_MASK(EV_SND); input_dev->sndbit[0] = BIT_MASK(SND_BELL) | BIT_MASK(SND_TONE); input_dev->event = snd_hda_beep_event;
- input_dev->dev.parent = &codec->bus->pci->dev;
input_dev->dev.parent = codec->bus->card->dev; input_set_drvdata(input_dev, beep);
err = input_register_device(input_dev);
-- 1.8.5.2
Alsa-devel mailing list Alsa-devel@alsa-project.org http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
On 02/15/2014 02:22 AM, Takashi Iwai wrote:
At Sat, 15 Feb 2014 10:17:33 +0100, Takashi Iwai wrote:
The default parent device can be obtained directly via card object, so we don't need to rely on pci->dev.parent. Since there is no access to pci_dev, we can reduce the inclusion of linux/pci.h, too.
Signed-off-by: Takashi Iwai tiwai@suse.de
I forgot the cover page: these tree patches are trivial cleanups of hda-codec drivers (not the controller) to work without PCI device assignment. The idea was triggered by Dylan's question.
The series seems fine to me, so briefly, Reviewed-by: Stephen Warren swarren@nvidia.com
On Tue, Feb 18, 2014 at 10:04 AM, Stephen Warren swarren@wwwdotorg.org wrote:
On 02/15/2014 02:22 AM, Takashi Iwai wrote:
At Sat, 15 Feb 2014 10:17:33 +0100, Takashi Iwai wrote:
The default parent device can be obtained directly via card object, so we don't need to rely on pci->dev.parent. Since there is no access to pci_dev, we can reduce the inclusion of linux/pci.h, too.
Signed-off-by: Takashi Iwai tiwai@suse.de
I forgot the cover page: these tree patches are trivial cleanups of hda-codec drivers (not the controller) to work without PCI device assignment. The idea was triggered by Dylan's question.
The series seems fine to me, so briefly, Reviewed-by: Stephen Warren swarren@nvidia.com
Thanks Takashi,
I tested this series on a Haswell and IvyBridge system. Looks good to me as well.
At Tue, 18 Feb 2014 11:04:19 -0700, Stephen Warren wrote:
On 02/15/2014 02:22 AM, Takashi Iwai wrote:
At Sat, 15 Feb 2014 10:17:33 +0100, Takashi Iwai wrote:
The default parent device can be obtained directly via card object, so we don't need to rely on pci->dev.parent. Since there is no access to pci_dev, we can reduce the inclusion of linux/pci.h, too.
Signed-off-by: Takashi Iwai tiwai@suse.de
I forgot the cover page: these tree patches are trivial cleanups of hda-codec drivers (not the controller) to work without PCI device assignment. The idea was triggered by Dylan's question.
The series seems fine to me, so briefly, Reviewed-by: Stephen Warren swarren@nvidia.com
Thanks. Any chance to work on / submit other changes for Tegra HD-audio support?
As already mentioned, I think a cleaner way would be to write hda_platform.c instead of hacking hda_intel.c with ifdefs. Some code in hda_intel.c (e.g. bus ops and PCM callbacks) can be moved out, either as a new helper module or just merging into snd-hda-codec helper module, so that they can be used by both hda_intel.c and hda_platform.c.
Ideally, we may rename hda_intel.c with hda_pci.c, but I'm afraid this would bring too many regressions for module options.
Takashi
On Wed, Feb 19, 2014 at 12:33 AM, Takashi Iwai tiwai@suse.de wrote:
At Tue, 18 Feb 2014 11:04:19 -0700, Stephen Warren wrote:
On 02/15/2014 02:22 AM, Takashi Iwai wrote:
At Sat, 15 Feb 2014 10:17:33 +0100, Takashi Iwai wrote:
The default parent device can be obtained directly via card object, so we don't need to rely on pci->dev.parent. Since there is no access to pci_dev, we can reduce the inclusion of linux/pci.h, too.
Signed-off-by: Takashi Iwai tiwai@suse.de
I forgot the cover page: these tree patches are trivial cleanups of hda-codec drivers (not the controller) to work without PCI device assignment. The idea was triggered by Dylan's question.
The series seems fine to me, so briefly, Reviewed-by: Stephen Warren swarren@nvidia.com
Thanks. Any chance to work on / submit other changes for Tegra HD-audio support?
That's the plan, hopefully I'll be able to find time to throw together an RFC by the end of the week.
As already mentioned, I think a cleaner way would be to write hda_platform.c instead of hacking hda_intel.c with ifdefs. Some code in hda_intel.c (e.g. bus ops and PCM callbacks) can be moved out, either as a new helper module or just merging into snd-hda-codec helper module, so that they can be used by both hda_intel.c and hda_platform.c.
That sounds like a good idea. There aren't a lot of differences, mostly isolated to init and suspend/resume. That should be easy to put in hda_platform.
Thanks,
Dylan
Ideally, we may rename hda_intel.c with hda_pci.c, but I'm afraid this would bring too many regressions for module options.
Takashi
At Wed, 19 Feb 2014 07:16:38 -0800, Dylan Reid wrote:
On Wed, Feb 19, 2014 at 12:33 AM, Takashi Iwai tiwai@suse.de wrote:
At Tue, 18 Feb 2014 11:04:19 -0700, Stephen Warren wrote:
On 02/15/2014 02:22 AM, Takashi Iwai wrote:
At Sat, 15 Feb 2014 10:17:33 +0100, Takashi Iwai wrote:
The default parent device can be obtained directly via card object, so we don't need to rely on pci->dev.parent. Since there is no access to pci_dev, we can reduce the inclusion of linux/pci.h, too.
Signed-off-by: Takashi Iwai tiwai@suse.de
I forgot the cover page: these tree patches are trivial cleanups of hda-codec drivers (not the controller) to work without PCI device assignment. The idea was triggered by Dylan's question.
The series seems fine to me, so briefly, Reviewed-by: Stephen Warren swarren@nvidia.com
Thanks. Any chance to work on / submit other changes for Tegra HD-audio support?
That's the plan, hopefully I'll be able to find time to throw together an RFC by the end of the week.
Since there was no patch appearing yet, I merged my latest development branch to for-next branch, which includes lots of changes in hda_intel.c and hda_codec.c. If any, please rebase your patches to it.
thanks,
Takashi
On Thu, Feb 27, 2014 at 4:03 AM, Takashi Iwai tiwai@suse.de wrote:
At Wed, 19 Feb 2014 07:16:38 -0800, Dylan Reid wrote:
On Wed, Feb 19, 2014 at 12:33 AM, Takashi Iwai tiwai@suse.de wrote:
At Tue, 18 Feb 2014 11:04:19 -0700, Stephen Warren wrote:
On 02/15/2014 02:22 AM, Takashi Iwai wrote:
At Sat, 15 Feb 2014 10:17:33 +0100, Takashi Iwai wrote:
The default parent device can be obtained directly via card object, so we don't need to rely on pci->dev.parent. Since there is no access to pci_dev, we can reduce the inclusion of linux/pci.h, too.
Signed-off-by: Takashi Iwai tiwai@suse.de
I forgot the cover page: these tree patches are trivial cleanups of hda-codec drivers (not the controller) to work without PCI device assignment. The idea was triggered by Dylan's question.
The series seems fine to me, so briefly, Reviewed-by: Stephen Warren swarren@nvidia.com
Thanks. Any chance to work on / submit other changes for Tegra HD-audio support?
That's the plan, hopefully I'll be able to find time to throw together an RFC by the end of the week.
Since there was no patch appearing yet, I merged my latest development branch to for-next branch, which includes lots of changes in hda_intel.c and hda_codec.c. If any, please rebase your patches to it.
Thanks for the heads up. I've got a series that is almost ready, I'm still trying to tease part of the build out from under CONFIG_PCI in the hda makefile. I'll try to button that up and get a the whole lot rebased on top of the for-next branch.
Dylan
thanks,
Takashi
At Thu, 27 Feb 2014 08:44:48 -0800, Dylan Reid wrote:
On Thu, Feb 27, 2014 at 4:03 AM, Takashi Iwai tiwai@suse.de wrote:
At Wed, 19 Feb 2014 07:16:38 -0800, Dylan Reid wrote:
On Wed, Feb 19, 2014 at 12:33 AM, Takashi Iwai tiwai@suse.de wrote:
At Tue, 18 Feb 2014 11:04:19 -0700, Stephen Warren wrote:
On 02/15/2014 02:22 AM, Takashi Iwai wrote:
At Sat, 15 Feb 2014 10:17:33 +0100, Takashi Iwai wrote: > > The default parent device can be obtained directly via card object, so > we don't need to rely on pci->dev.parent. Since there is no access to > pci_dev, we can reduce the inclusion of linux/pci.h, too. > > Signed-off-by: Takashi Iwai tiwai@suse.de
I forgot the cover page: these tree patches are trivial cleanups of hda-codec drivers (not the controller) to work without PCI device assignment. The idea was triggered by Dylan's question.
The series seems fine to me, so briefly, Reviewed-by: Stephen Warren swarren@nvidia.com
Thanks. Any chance to work on / submit other changes for Tegra HD-audio support?
That's the plan, hopefully I'll be able to find time to throw together an RFC by the end of the week.
Since there was no patch appearing yet, I merged my latest development branch to for-next branch, which includes lots of changes in hda_intel.c and hda_codec.c. If any, please rebase your patches to it.
Thanks for the heads up. I've got a series that is almost ready, I'm still trying to tease part of the build out from under CONFIG_PCI in the hda makefile.
I don't think we have a dependency on CONFIG_PCI in Makefile. Kconfig has a dependency, but it can be easily reduced by a patch like below.
Of course, it'd be better to move the whole hda directory out of pci, but we can do it later at any time once via git.
I'll try to button that up and get a the whole lot rebased on top of the for-next branch.
Thanks!
Takashi
--- diff --git a/sound/pci/Kconfig b/sound/pci/Kconfig index 8756c8e32922..56d93bf45025 100644 --- a/sound/pci/Kconfig +++ b/sound/pci/Kconfig @@ -578,8 +578,6 @@ config SND_FM801_TEA575X_BOOL FM801 chip with a TEA5757 tuner (MediaForte SF256-PCS, SF256-PCP and SF64-PCR) into the snd-fm801 driver.
-source "sound/pci/hda/Kconfig" - config SND_HDSP tristate "RME Hammerfall DSP Audio" select FW_LOADER @@ -889,3 +887,5 @@ config SND_YMFPCI will be called snd-ymfpci.
endif # SND_PCI + +source "sound/pci/hda/Kconfig" diff --git a/sound/pci/hda/Kconfig b/sound/pci/hda/Kconfig index f2032dd7e35e..6fc769da6949 100644 --- a/sound/pci/hda/Kconfig +++ b/sound/pci/hda/Kconfig @@ -1,5 +1,6 @@ menuconfig SND_HDA_INTEL tristate "Intel HD Audio" + depends on (PCI || SOMETHING_YOU_WANT) select SND_PCM select SND_VMASTER select SND_KCTL_JACK
On Thu, Feb 27, 2014 at 8:57 AM, Takashi Iwai tiwai@suse.de wrote:
At Thu, 27 Feb 2014 08:44:48 -0800, Dylan Reid wrote:
On Thu, Feb 27, 2014 at 4:03 AM, Takashi Iwai tiwai@suse.de wrote:
At Wed, 19 Feb 2014 07:16:38 -0800, Dylan Reid wrote:
On Wed, Feb 19, 2014 at 12:33 AM, Takashi Iwai tiwai@suse.de wrote:
At Tue, 18 Feb 2014 11:04:19 -0700, Stephen Warren wrote:
On 02/15/2014 02:22 AM, Takashi Iwai wrote: > At Sat, 15 Feb 2014 10:17:33 +0100, > Takashi Iwai wrote: >> >> The default parent device can be obtained directly via card object, so >> we don't need to rely on pci->dev.parent. Since there is no access to >> pci_dev, we can reduce the inclusion of linux/pci.h, too. >> >> Signed-off-by: Takashi Iwai tiwai@suse.de > > I forgot the cover page: these tree patches are trivial cleanups of > hda-codec drivers (not the controller) to work without PCI device > assignment. The idea was triggered by Dylan's question.
The series seems fine to me, so briefly, Reviewed-by: Stephen Warren swarren@nvidia.com
Thanks. Any chance to work on / submit other changes for Tegra HD-audio support?
That's the plan, hopefully I'll be able to find time to throw together an RFC by the end of the week.
Since there was no patch appearing yet, I merged my latest development branch to for-next branch, which includes lots of changes in hda_intel.c and hda_codec.c. If any, please rebase your patches to it.
Thanks for the heads up. I've got a series that is almost ready, I'm still trying to tease part of the build out from under CONFIG_PCI in the hda makefile.
I don't think we have a dependency on CONFIG_PCI in Makefile. Kconfig has a dependency, but it can be easily reduced by a patch like below.
Sounds good. I was looking at re-using some of the config options (HDMI codec and power save) for the platform driver as well. Maybe something like the following. SND_HDA would build the helper module and hda-codec that are used by both hda_intel and a platform driver.
Of course, it'd be better to move the whole hda directory out of pci, but we can do it later at any time once via git.
I can add that to the end of the series or it can move it whenever is convenient, not sure how many pending patch sets it would disrupt.
Thanks!
Dylan
I'll try to button that up and get a the whole lot rebased on top of the for-next branch.
Thanks!
Takashi
diff --git a/sound/pci/Kconfig b/sound/pci/Kconfig index 8756c8e32922..56d93bf45025 100644 --- a/sound/pci/Kconfig +++ b/sound/pci/Kconfig @@ -578,8 +578,6 @@ config SND_FM801_TEA575X_BOOL FM801 chip with a TEA5757 tuner (MediaForte SF256-PCS, SF256-PCP and SF64-PCR) into the snd-fm801 driver.
-source "sound/pci/hda/Kconfig"
config SND_HDSP tristate "RME Hammerfall DSP Audio" select FW_LOADER @@ -889,3 +887,5 @@ config SND_YMFPCI will be called snd-ymfpci.
endif # SND_PCI
+source "sound/pci/hda/Kconfig" diff --git a/sound/pci/hda/Kconfig b/sound/pci/hda/Kconfig index f2032dd7e35e..6fc769da6949 100644 --- a/sound/pci/hda/Kconfig +++ b/sound/pci/hda/Kconfig @@ -1,5 +1,6 @@ menuconfig SND_HDA_INTEL tristate "Intel HD Audio"
depends on (PCI || SOMETHING_YOU_WANT) select SND_PCM select SND_VMASTER select SND_KCTL_JACK
--- diff --git a/sound/pci/Kconfig b/sound/pci/Kconfig index 8756c8e..56d93bf 100644 --- a/sound/pci/Kconfig +++ b/sound/pci/Kconfig @@ -578,8 +578,6 @@ config SND_FM801_TEA575X_BOOL FM801 chip with a TEA5757 tuner (MediaForte SF256-PCS, SF256-PCP and SF64-PCR) into the snd-fm801 driver.
-source "sound/pci/hda/Kconfig" - config SND_HDSP tristate "RME Hammerfall DSP Audio" select FW_LOADER @@ -889,3 +887,5 @@ config SND_YMFPCI will be called snd-ymfpci.
endif # SND_PCI + +source "sound/pci/hda/Kconfig" diff --git a/sound/pci/hda/Kconfig b/sound/pci/hda/Kconfig index 0e53634..d983d24 100644 --- a/sound/pci/hda/Kconfig +++ b/sound/pci/hda/Kconfig @@ -1,5 +1,5 @@ -menuconfig SND_HDA_INTEL - tristate "Intel HD Audio" +menuconfig SND_HDA + tristate "HD Audio" select SND_PCM select SND_VMASTER select SND_KCTL_JACK @@ -10,9 +10,55 @@ menuconfig SND_HDA_INTEL This option enables the HD-audio controller. Don't forget to choose the appropriate codec options below.
+config SND_HDA_INTEL + tristate "Intel HD Audio" + depends on SND_PCI + select SND_HDA + help + Say Y here to support standard PC HDA over PCI + + This options enables support for HD Audio via PCI present on + most PCs. + To compile this driver as a module, choose M here: the module will be called snd-hda-intel.
+config SND_HDA_TEGRA + tristate "Tegra HD Audio" + select SND_HDA + help + Say Y here to support the HDA controller present in Nvidia + Tegra SoCs + + This options enables support for the HD Audio controller + present in some Nvidia Tegra SoCs, used to communicate audio + to the HDMI output. + + To compile this driver as a module, choose M here: the module + will be called snd-hda-tegra. + +if SND_HDA_INTEL || SND_HDA_TEGRA + +config SND_HDA_CODEC_HDMI + tristate "Build HDMI/DisplayPort HD-audio codec support" + help + Say Y or M here to include HDMI and DisplayPort HD-audio codec + support in snd-hda-intel or tegra driver. This includes all + AMD/ATI, Intel and Nvidia HDMI/DisplayPort codecs. + +comment "Set to Y if you want auto-loading the codec driver" + depends on SND_HDA_INTEL=y && SND_HDA_CODEC_HDMI=m + +config SND_HDA_POWER_SAVE_DEFAULT + int "Default time-out for HD-audio power-save mode" + depends on PM + default 0 + help + The default time-out value in seconds for HD-audio automatic + power-save mode. 0 means to disable the power-save mode. + +endif + if SND_HDA_INTEL
config SND_HDA_DSP_LOADER @@ -126,16 +172,6 @@ config SND_HDA_CODEC_VIA comment "Set to Y if you want auto-loading the codec driver" depends on SND_HDA_INTEL=y && SND_HDA_CODEC_VIA=m
-config SND_HDA_CODEC_HDMI - tristate "Build HDMI/DisplayPort HD-audio codec support" - help - Say Y or M here to include HDMI and DisplayPort HD-audio codec - support in snd-hda-intel driver. This includes all AMD/ATI, - Intel and Nvidia HDMI/DisplayPort codecs. - -comment "Set to Y if you want auto-loading the codec driver" - depends on SND_HDA_INTEL=y && SND_HDA_CODEC_HDMI=m - config SND_HDA_I915 bool default y @@ -220,12 +256,4 @@ config SND_HDA_GENERIC comment "Set to Y if you want auto-loading the codec driver" depends on SND_HDA_INTEL=y && SND_HDA_GENERIC=m
-config SND_HDA_POWER_SAVE_DEFAULT - int "Default time-out for HD-audio power-save mode" - depends on PM - default 0 - help - The default time-out value in seconds for HD-audio automatic - power-save mode. 0 means to disable the power-save mode. - endif diff --git a/sound/pci/hda/Makefile b/sound/pci/hda/Makefile index c5fa8e7..a964b6e 100644 --- a/sound/pci/hda/Makefile +++ b/sound/pci/hda/Makefile @@ -1,4 +1,6 @@ -snd-hda-intel-objs := hda_shared.o hda_intel.o +snd-hda-intel-objs := hda_intel.o +snd-hda-shared-objs := hda_shared.o +snd-hda-tegra-objs := hda_tegra.o # for haswell power well snd-hda-intel-$(CONFIG_SND_HDA_I915) += hda_i915.o
@@ -25,7 +27,8 @@ snd-hda-codec-via-objs := patch_via.o snd-hda-codec-hdmi-objs := patch_hdmi.o hda_eld.o
# common driver -obj-$(CONFIG_SND_HDA_INTEL) := snd-hda-codec.o +obj-$(CONFIG_SND_HDA) := snd-hda-codec.o +obj-$(CONFIG_SND_HDA) += snd-hda-shared.o
# codec drivers obj-$(CONFIG_SND_HDA_GENERIC) += snd-hda-codec-generic.o @@ -45,3 +48,4 @@ obj-$(CONFIG_SND_HDA_CODEC_HDMI) += snd-hda-codec-hdmi.o # otherwise the codec patches won't be hooked before the PCI probe # when built in kernel obj-$(CONFIG_SND_HDA_INTEL) += snd-hda-intel.o +obj-$(CONFIG_SND_HDA_TEGRA) += snd-hda-tegra.o
At Thu, 27 Feb 2014 09:32:21 -0800, Dylan Reid wrote:
On Thu, Feb 27, 2014 at 8:57 AM, Takashi Iwai tiwai@suse.de wrote:
At Thu, 27 Feb 2014 08:44:48 -0800, Dylan Reid wrote:
On Thu, Feb 27, 2014 at 4:03 AM, Takashi Iwai tiwai@suse.de wrote:
At Wed, 19 Feb 2014 07:16:38 -0800, Dylan Reid wrote:
On Wed, Feb 19, 2014 at 12:33 AM, Takashi Iwai tiwai@suse.de wrote:
At Tue, 18 Feb 2014 11:04:19 -0700, Stephen Warren wrote: > > On 02/15/2014 02:22 AM, Takashi Iwai wrote: > > At Sat, 15 Feb 2014 10:17:33 +0100, > > Takashi Iwai wrote: > >> > >> The default parent device can be obtained directly via card object, so > >> we don't need to rely on pci->dev.parent. Since there is no access to > >> pci_dev, we can reduce the inclusion of linux/pci.h, too. > >> > >> Signed-off-by: Takashi Iwai tiwai@suse.de > > > > I forgot the cover page: these tree patches are trivial cleanups of > > hda-codec drivers (not the controller) to work without PCI device > > assignment. The idea was triggered by Dylan's question. > > The series seems fine to me, so briefly, > Reviewed-by: Stephen Warren swarren@nvidia.com
Thanks. Any chance to work on / submit other changes for Tegra HD-audio support?
That's the plan, hopefully I'll be able to find time to throw together an RFC by the end of the week.
Since there was no patch appearing yet, I merged my latest development branch to for-next branch, which includes lots of changes in hda_intel.c and hda_codec.c. If any, please rebase your patches to it.
Thanks for the heads up. I've got a series that is almost ready, I'm still trying to tease part of the build out from under CONFIG_PCI in the hda makefile.
I don't think we have a dependency on CONFIG_PCI in Makefile. Kconfig has a dependency, but it can be easily reduced by a patch like below.
Sounds good. I was looking at re-using some of the config options (HDMI codec and power save) for the platform driver as well. Maybe something like the following. SND_HDA would build the helper module and hda-codec that are used by both hda_intel and a platform driver.
I think we can simply allow building all HD-audio codec drivers when CONFIG_SND_HDA is set. They are basically independent from the controller type. There are also other selectable items like hwdep support. The diff in sound/pci/hda would be like below.
Takashi
-- diff --git a/sound/pci/hda/Kconfig b/sound/pci/hda/Kconfig index f2032dd7e35e..4cbf46e59d1c 100644 --- a/sound/pci/hda/Kconfig +++ b/sound/pci/hda/Kconfig @@ -1,8 +1,15 @@ -menuconfig SND_HDA_INTEL - tristate "Intel HD Audio" +menu "HD-Audio" + +config SND_HDA + tristate select SND_PCM select SND_VMASTER select SND_KCTL_JACK + +config SND_HDA_INTEL + tristate "HD Audio PCI" + depends on SND_PCI + select SND_HDA help Say Y here to include support for Intel "High Definition Audio" (Azalia) and its compatible devices. @@ -13,7 +20,21 @@ menuconfig SND_HDA_INTEL To compile this driver as a module, choose M here: the module will be called snd-hda-intel.
-if SND_HDA_INTEL +config SND_HDA_TEGRA + tristate "Tegra HD Audio" + select SND_HDA + help + Say Y here to support the HDA controller present in Nvidia + Tegra SoCs + + This options enables support for the HD Audio controller + present in some Nvidia Tegra SoCs, used to communicate audio + to the HDMI output. + + To compile this driver as a module, choose M here: the module + will be called snd-hda-tegra. + +if SND_HDA
config SND_HDA_DSP_LOADER bool @@ -49,7 +70,7 @@ config SND_HDA_RECONFIG
config SND_HDA_INPUT_BEEP bool "Support digital beep via input layer" - depends on INPUT=y || INPUT=SND_HDA_INTEL + depends on INPUT=y || INPUT=SND_HDA help Say Y here to build a digital beep interface for HD-audio driver. This interface is used to generate digital beeps. @@ -90,7 +111,7 @@ config SND_HDA_CODEC_REALTEK snd-hda-intel driver, such as ALC880.
comment "Set to Y if you want auto-loading the codec driver" - depends on SND_HDA_INTEL=y && SND_HDA_CODEC_REALTEK=m + depends on SND_HDA=y && SND_HDA_CODEC_REALTEK=m
config SND_HDA_CODEC_ANALOG tristate "Build Analog Device HD-audio codec support" @@ -100,7 +121,7 @@ config SND_HDA_CODEC_ANALOG snd-hda-intel driver, such as AD1986A.
comment "Set to Y if you want auto-loading the codec driver" - depends on SND_HDA_INTEL=y && SND_HDA_CODEC_ANALOG=m + depends on SND_HDA=y && SND_HDA_CODEC_ANALOG=m
config SND_HDA_CODEC_SIGMATEL tristate "Build IDT/Sigmatel HD-audio codec support" @@ -110,7 +131,7 @@ config SND_HDA_CODEC_SIGMATEL snd-hda-intel driver, such as STAC9200.
comment "Set to Y if you want auto-loading the codec driver" - depends on SND_HDA_INTEL=y && SND_HDA_CODEC_SIGMATEL=m + depends on SND_HDA=y && SND_HDA_CODEC_SIGMATEL=m
config SND_HDA_CODEC_VIA tristate "Build VIA HD-audio codec support" @@ -120,7 +141,7 @@ config SND_HDA_CODEC_VIA snd-hda-intel driver, such as VT1708.
comment "Set to Y if you want auto-loading the codec driver" - depends on SND_HDA_INTEL=y && SND_HDA_CODEC_VIA=m + depends on SND_HDA=y && SND_HDA_CODEC_VIA=m
config SND_HDA_CODEC_HDMI tristate "Build HDMI/DisplayPort HD-audio codec support" @@ -130,7 +151,7 @@ config SND_HDA_CODEC_HDMI Intel and Nvidia HDMI/DisplayPort codecs.
comment "Set to Y if you want auto-loading the codec driver" - depends on SND_HDA_INTEL=y && SND_HDA_CODEC_HDMI=m + depends on SND_HDA=y && SND_HDA_CODEC_HDMI=m
config SND_HDA_I915 bool @@ -145,7 +166,7 @@ config SND_HDA_CODEC_CIRRUS snd-hda-intel driver, such as CS4206.
comment "Set to Y if you want auto-loading the codec driver" - depends on SND_HDA_INTEL=y && SND_HDA_CODEC_CIRRUS=m + depends on SND_HDA=y && SND_HDA_CODEC_CIRRUS=m
config SND_HDA_CODEC_CONEXANT tristate "Build Conexant HD-audio codec support" @@ -155,7 +176,7 @@ config SND_HDA_CODEC_CONEXANT snd-hda-intel driver, such as CX20549.
comment "Set to Y if you want auto-loading the codec driver" - depends on SND_HDA_INTEL=y && SND_HDA_CODEC_CONEXANT=m + depends on SND_HDA=y && SND_HDA_CODEC_CONEXANT=m
config SND_HDA_CODEC_CA0110 tristate "Build Creative CA0110-IBG codec support" @@ -165,7 +186,7 @@ config SND_HDA_CODEC_CA0110 snd-hda-intel driver, found on some Creative X-Fi cards.
comment "Set to Y if you want auto-loading the codec driver" - depends on SND_HDA_INTEL=y && SND_HDA_CODEC_CA0110=m + depends on SND_HDA=y && SND_HDA_CODEC_CA0110=m
config SND_HDA_CODEC_CA0132 tristate "Build Creative CA0132 codec support" @@ -174,7 +195,7 @@ config SND_HDA_CODEC_CA0132 snd-hda-intel driver.
comment "Set to Y if you want auto-loading the codec driver" - depends on SND_HDA_INTEL=y && SND_HDA_CODEC_CA0132=m + depends on SND_HDA=y && SND_HDA_CODEC_CA0132=m
config SND_HDA_CODEC_CA0132_DSP bool "Support new DSP code for CA0132 codec" @@ -196,7 +217,7 @@ config SND_HDA_CODEC_CMEDIA snd-hda-intel driver, such as CMI9880.
comment "Set to Y if you want auto-loading the codec driver" - depends on SND_HDA_INTEL=y && SND_HDA_CODEC_CMEDIA=m + depends on SND_HDA=y && SND_HDA_CODEC_CMEDIA=m
config SND_HDA_CODEC_SI3054 tristate "Build Silicon Labs 3054 HD-modem codec support" @@ -205,7 +226,7 @@ config SND_HDA_CODEC_SI3054 (and compatibles) support in snd-hda-intel driver.
comment "Set to Y if you want auto-loading the codec driver" - depends on SND_HDA_INTEL=y && SND_HDA_CODEC_SI3054=m + depends on SND_HDA=y && SND_HDA_CODEC_SI3054=m
config SND_HDA_GENERIC tristate "Enable generic HD-audio codec parser" @@ -214,7 +235,7 @@ config SND_HDA_GENERIC in snd-hda-intel driver.
comment "Set to Y if you want auto-loading the codec driver" - depends on SND_HDA_INTEL=y && SND_HDA_GENERIC=m + depends on SND_HDA=y && SND_HDA_GENERIC=m
config SND_HDA_POWER_SAVE_DEFAULT int "Default time-out for HD-audio power-save mode" @@ -225,3 +246,5 @@ config SND_HDA_POWER_SAVE_DEFAULT power-save mode. 0 means to disable the power-save mode.
endif + +endmenu
On Thu, Feb 27, 2014 at 12:10 PM, Takashi Iwai tiwai@suse.de wrote:
At Thu, 27 Feb 2014 09:32:21 -0800, Dylan Reid wrote:
On Thu, Feb 27, 2014 at 8:57 AM, Takashi Iwai tiwai@suse.de wrote:
At Thu, 27 Feb 2014 08:44:48 -0800, Dylan Reid wrote:
On Thu, Feb 27, 2014 at 4:03 AM, Takashi Iwai tiwai@suse.de wrote:
At Wed, 19 Feb 2014 07:16:38 -0800, Dylan Reid wrote:
On Wed, Feb 19, 2014 at 12:33 AM, Takashi Iwai tiwai@suse.de wrote: > At Tue, 18 Feb 2014 11:04:19 -0700, > Stephen Warren wrote: >> >> On 02/15/2014 02:22 AM, Takashi Iwai wrote: >> > At Sat, 15 Feb 2014 10:17:33 +0100, >> > Takashi Iwai wrote: >> >> >> >> The default parent device can be obtained directly via card object, so >> >> we don't need to rely on pci->dev.parent. Since there is no access to >> >> pci_dev, we can reduce the inclusion of linux/pci.h, too. >> >> >> >> Signed-off-by: Takashi Iwai tiwai@suse.de >> > >> > I forgot the cover page: these tree patches are trivial cleanups of >> > hda-codec drivers (not the controller) to work without PCI device >> > assignment. The idea was triggered by Dylan's question. >> >> The series seems fine to me, so briefly, >> Reviewed-by: Stephen Warren swarren@nvidia.com > > Thanks. Any chance to work on / submit other changes for Tegra > HD-audio support?
That's the plan, hopefully I'll be able to find time to throw together an RFC by the end of the week.
Since there was no patch appearing yet, I merged my latest development branch to for-next branch, which includes lots of changes in hda_intel.c and hda_codec.c. If any, please rebase your patches to it.
Thanks for the heads up. I've got a series that is almost ready, I'm still trying to tease part of the build out from under CONFIG_PCI in the hda makefile.
I don't think we have a dependency on CONFIG_PCI in Makefile. Kconfig has a dependency, but it can be easily reduced by a patch like below.
Sounds good. I was looking at re-using some of the config options (HDMI codec and power save) for the platform driver as well. Maybe something like the following. SND_HDA would build the helper module and hda-codec that are used by both hda_intel and a platform driver.
I think we can simply allow building all HD-audio codec drivers when CONFIG_SND_HDA is set. They are basically independent from the controller type. There are also other selectable items like hwdep support. The diff in sound/pci/hda would be like below.
Thanks I'll work off of that. It will need a change include/sound/core.h to define snd_pci_quirk without CONFIG_PCI since the codecs use that, and maybe stub out a couple of the pci specific functions. That seems reasonable to me.
Dylan
Takashi
-- diff --git a/sound/pci/hda/Kconfig b/sound/pci/hda/Kconfig index f2032dd7e35e..4cbf46e59d1c 100644 --- a/sound/pci/hda/Kconfig +++ b/sound/pci/hda/Kconfig @@ -1,8 +1,15 @@ -menuconfig SND_HDA_INTEL
tristate "Intel HD Audio"
+menu "HD-Audio"
+config SND_HDA
tristate select SND_PCM select SND_VMASTER select SND_KCTL_JACK
+config SND_HDA_INTEL
tristate "HD Audio PCI"
depends on SND_PCI
select SND_HDA help Say Y here to include support for Intel "High Definition Audio" (Azalia) and its compatible devices.
@@ -13,7 +20,21 @@ menuconfig SND_HDA_INTEL To compile this driver as a module, choose M here: the module will be called snd-hda-intel.
-if SND_HDA_INTEL +config SND_HDA_TEGRA
tristate "Tegra HD Audio"
select SND_HDA
help
Say Y here to support the HDA controller present in Nvidia
Tegra SoCs
This options enables support for the HD Audio controller
present in some Nvidia Tegra SoCs, used to communicate audio
to the HDMI output.
To compile this driver as a module, choose M here: the module
will be called snd-hda-tegra.
+if SND_HDA
config SND_HDA_DSP_LOADER bool @@ -49,7 +70,7 @@ config SND_HDA_RECONFIG
config SND_HDA_INPUT_BEEP bool "Support digital beep via input layer"
depends on INPUT=y || INPUT=SND_HDA_INTEL
depends on INPUT=y || INPUT=SND_HDA help Say Y here to build a digital beep interface for HD-audio driver. This interface is used to generate digital beeps.
@@ -90,7 +111,7 @@ config SND_HDA_CODEC_REALTEK snd-hda-intel driver, such as ALC880.
comment "Set to Y if you want auto-loading the codec driver"
depends on SND_HDA_INTEL=y && SND_HDA_CODEC_REALTEK=m
depends on SND_HDA=y && SND_HDA_CODEC_REALTEK=m
config SND_HDA_CODEC_ANALOG tristate "Build Analog Device HD-audio codec support" @@ -100,7 +121,7 @@ config SND_HDA_CODEC_ANALOG snd-hda-intel driver, such as AD1986A.
comment "Set to Y if you want auto-loading the codec driver"
depends on SND_HDA_INTEL=y && SND_HDA_CODEC_ANALOG=m
depends on SND_HDA=y && SND_HDA_CODEC_ANALOG=m
config SND_HDA_CODEC_SIGMATEL tristate "Build IDT/Sigmatel HD-audio codec support" @@ -110,7 +131,7 @@ config SND_HDA_CODEC_SIGMATEL snd-hda-intel driver, such as STAC9200.
comment "Set to Y if you want auto-loading the codec driver"
depends on SND_HDA_INTEL=y && SND_HDA_CODEC_SIGMATEL=m
depends on SND_HDA=y && SND_HDA_CODEC_SIGMATEL=m
config SND_HDA_CODEC_VIA tristate "Build VIA HD-audio codec support" @@ -120,7 +141,7 @@ config SND_HDA_CODEC_VIA snd-hda-intel driver, such as VT1708.
comment "Set to Y if you want auto-loading the codec driver"
depends on SND_HDA_INTEL=y && SND_HDA_CODEC_VIA=m
depends on SND_HDA=y && SND_HDA_CODEC_VIA=m
config SND_HDA_CODEC_HDMI tristate "Build HDMI/DisplayPort HD-audio codec support" @@ -130,7 +151,7 @@ config SND_HDA_CODEC_HDMI Intel and Nvidia HDMI/DisplayPort codecs.
comment "Set to Y if you want auto-loading the codec driver"
depends on SND_HDA_INTEL=y && SND_HDA_CODEC_HDMI=m
depends on SND_HDA=y && SND_HDA_CODEC_HDMI=m
config SND_HDA_I915 bool @@ -145,7 +166,7 @@ config SND_HDA_CODEC_CIRRUS snd-hda-intel driver, such as CS4206.
comment "Set to Y if you want auto-loading the codec driver"
depends on SND_HDA_INTEL=y && SND_HDA_CODEC_CIRRUS=m
depends on SND_HDA=y && SND_HDA_CODEC_CIRRUS=m
config SND_HDA_CODEC_CONEXANT tristate "Build Conexant HD-audio codec support" @@ -155,7 +176,7 @@ config SND_HDA_CODEC_CONEXANT snd-hda-intel driver, such as CX20549.
comment "Set to Y if you want auto-loading the codec driver"
depends on SND_HDA_INTEL=y && SND_HDA_CODEC_CONEXANT=m
depends on SND_HDA=y && SND_HDA_CODEC_CONEXANT=m
config SND_HDA_CODEC_CA0110 tristate "Build Creative CA0110-IBG codec support" @@ -165,7 +186,7 @@ config SND_HDA_CODEC_CA0110 snd-hda-intel driver, found on some Creative X-Fi cards.
comment "Set to Y if you want auto-loading the codec driver"
depends on SND_HDA_INTEL=y && SND_HDA_CODEC_CA0110=m
depends on SND_HDA=y && SND_HDA_CODEC_CA0110=m
config SND_HDA_CODEC_CA0132 tristate "Build Creative CA0132 codec support" @@ -174,7 +195,7 @@ config SND_HDA_CODEC_CA0132 snd-hda-intel driver.
comment "Set to Y if you want auto-loading the codec driver"
depends on SND_HDA_INTEL=y && SND_HDA_CODEC_CA0132=m
depends on SND_HDA=y && SND_HDA_CODEC_CA0132=m
config SND_HDA_CODEC_CA0132_DSP bool "Support new DSP code for CA0132 codec" @@ -196,7 +217,7 @@ config SND_HDA_CODEC_CMEDIA snd-hda-intel driver, such as CMI9880.
comment "Set to Y if you want auto-loading the codec driver"
depends on SND_HDA_INTEL=y && SND_HDA_CODEC_CMEDIA=m
depends on SND_HDA=y && SND_HDA_CODEC_CMEDIA=m
config SND_HDA_CODEC_SI3054 tristate "Build Silicon Labs 3054 HD-modem codec support" @@ -205,7 +226,7 @@ config SND_HDA_CODEC_SI3054 (and compatibles) support in snd-hda-intel driver.
comment "Set to Y if you want auto-loading the codec driver"
depends on SND_HDA_INTEL=y && SND_HDA_CODEC_SI3054=m
depends on SND_HDA=y && SND_HDA_CODEC_SI3054=m
config SND_HDA_GENERIC tristate "Enable generic HD-audio codec parser" @@ -214,7 +235,7 @@ config SND_HDA_GENERIC in snd-hda-intel driver.
comment "Set to Y if you want auto-loading the codec driver"
depends on SND_HDA_INTEL=y && SND_HDA_GENERIC=m
depends on SND_HDA=y && SND_HDA_GENERIC=m
config SND_HDA_POWER_SAVE_DEFAULT int "Default time-out for HD-audio power-save mode" @@ -225,3 +246,5 @@ config SND_HDA_POWER_SAVE_DEFAULT power-save mode. 0 means to disable the power-save mode.
endif
+endmenu
participants (3)
-
Dylan Reid
-
Stephen Warren
-
Takashi Iwai