mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 21:38:32 +08:00
99a2008d0b
For Intel Haswell chip, HDA controller and codec have power well dependency from GPU side. This patch added support to request/release power well in audio driver. Power save feature should be enabled to get runtime power saving. There's deadlock when request_module(i915) in azx_probe. It looks like: device_lock(audio pci device) -> azx_probe -> module_request (or symbol_request) -> modprobe (userspace) -> i915 init -> drm_pci_init -> pci_register_driver -> bus_add_driver -> driver_attach -> which in turn tries all locks on pci bus, and when it tries the one on the audio device, it will deadlock. This patch introduce a work to store remaining probe stuff, and let request_module run in safe work context. Signed-off-by: Wang Xingchao <xingchao.wang@linux.intel.com> Reviewed-by: Takashi Iwai <tiwai@suse.de> Reviewed-by: Liam Girdwood <liam.r.girdwood@intel.com> Reviewed-by: David Henningsson <david.henningsson@canonical.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
69 lines
2.2 KiB
Makefile
69 lines
2.2 KiB
Makefile
snd-hda-intel-objs := hda_intel.o
|
|
# for haswell power well
|
|
snd-hda-intel-$(CONFIG_SND_HDA_I915) += hda_i915.o
|
|
|
|
snd-hda-codec-y := hda_codec.o hda_jack.o hda_auto_parser.o
|
|
snd-hda-codec-$(CONFIG_SND_HDA_GENERIC) += hda_generic.o
|
|
snd-hda-codec-$(CONFIG_PROC_FS) += hda_proc.o
|
|
snd-hda-codec-$(CONFIG_SND_HDA_HWDEP) += hda_hwdep.o
|
|
snd-hda-codec-$(CONFIG_SND_HDA_INPUT_BEEP) += hda_beep.o
|
|
|
|
# for trace-points
|
|
CFLAGS_hda_codec.o := -I$(src)
|
|
CFLAGS_hda_intel.o := -I$(src)
|
|
|
|
snd-hda-codec-realtek-objs := patch_realtek.o
|
|
snd-hda-codec-cmedia-objs := patch_cmedia.o
|
|
snd-hda-codec-analog-objs := patch_analog.o
|
|
snd-hda-codec-idt-objs := patch_sigmatel.o
|
|
snd-hda-codec-si3054-objs := patch_si3054.o
|
|
snd-hda-codec-cirrus-objs := patch_cirrus.o
|
|
snd-hda-codec-ca0110-objs := patch_ca0110.o
|
|
snd-hda-codec-ca0132-objs := patch_ca0132.o
|
|
snd-hda-codec-conexant-objs := patch_conexant.o
|
|
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
|
|
|
|
# codec drivers (note: CONFIG_SND_HDA_CODEC_XXX are booleans)
|
|
ifdef CONFIG_SND_HDA_CODEC_REALTEK
|
|
obj-$(CONFIG_SND_HDA_INTEL) += snd-hda-codec-realtek.o
|
|
endif
|
|
ifdef CONFIG_SND_HDA_CODEC_CMEDIA
|
|
obj-$(CONFIG_SND_HDA_INTEL) += snd-hda-codec-cmedia.o
|
|
endif
|
|
ifdef CONFIG_SND_HDA_CODEC_ANALOG
|
|
obj-$(CONFIG_SND_HDA_INTEL) += snd-hda-codec-analog.o
|
|
endif
|
|
ifdef CONFIG_SND_HDA_CODEC_SIGMATEL
|
|
obj-$(CONFIG_SND_HDA_INTEL) += snd-hda-codec-idt.o
|
|
endif
|
|
ifdef CONFIG_SND_HDA_CODEC_SI3054
|
|
obj-$(CONFIG_SND_HDA_INTEL) += snd-hda-codec-si3054.o
|
|
endif
|
|
ifdef CONFIG_SND_HDA_CODEC_CIRRUS
|
|
obj-$(CONFIG_SND_HDA_INTEL) += snd-hda-codec-cirrus.o
|
|
endif
|
|
ifdef CONFIG_SND_HDA_CODEC_CA0110
|
|
obj-$(CONFIG_SND_HDA_INTEL) += snd-hda-codec-ca0110.o
|
|
endif
|
|
ifdef CONFIG_SND_HDA_CODEC_CA0132
|
|
obj-$(CONFIG_SND_HDA_INTEL) += snd-hda-codec-ca0132.o
|
|
endif
|
|
ifdef CONFIG_SND_HDA_CODEC_CONEXANT
|
|
obj-$(CONFIG_SND_HDA_INTEL) += snd-hda-codec-conexant.o
|
|
endif
|
|
ifdef CONFIG_SND_HDA_CODEC_VIA
|
|
obj-$(CONFIG_SND_HDA_INTEL) += snd-hda-codec-via.o
|
|
endif
|
|
ifdef CONFIG_SND_HDA_CODEC_HDMI
|
|
obj-$(CONFIG_SND_HDA_INTEL) += snd-hda-codec-hdmi.o
|
|
endif
|
|
|
|
# this must be the last entry after codec drivers;
|
|
# 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
|