diff options
author | David Henningsson <david.henningsson@canonical.com> | 2015-08-19 04:48:57 -0400 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2015-09-02 06:23:55 -0400 |
commit | 45c053df5bdc4843cf19b920db6ab819ddc27ff7 (patch) | |
tree | 3eed70f87f158814dcc60d645c175833240a0fa8 | |
parent | 51e1d83cab9988716ae68801a721f4df0aaa374b (diff) |
ALSA: hda - allow codecs to access the i915 pin/ELD callback
This lets the interested codec be notified when an i915 pin/ELD
event happens.
[tiwai: Fixed a trivial build error for CONFIG_SND_HDA_I915=n]
Signed-off-by: David Henningsson <david.henningsson@canonical.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
-rw-r--r-- | include/sound/hda_i915.h | 7 | ||||
-rw-r--r-- | sound/hda/hdac_i915.c | 10 |
2 files changed, 17 insertions, 0 deletions
diff --git a/include/sound/hda_i915.h b/include/sound/hda_i915.h index adb5ba5cbd9d..a5b5cae03e87 100644 --- a/include/sound/hda_i915.h +++ b/include/sound/hda_i915.h | |||
@@ -4,12 +4,15 @@ | |||
4 | #ifndef __SOUND_HDA_I915_H | 4 | #ifndef __SOUND_HDA_I915_H |
5 | #define __SOUND_HDA_I915_H | 5 | #define __SOUND_HDA_I915_H |
6 | 6 | ||
7 | #include <drm/i915_component.h> | ||
8 | |||
7 | #ifdef CONFIG_SND_HDA_I915 | 9 | #ifdef CONFIG_SND_HDA_I915 |
8 | int snd_hdac_set_codec_wakeup(struct hdac_bus *bus, bool enable); | 10 | int snd_hdac_set_codec_wakeup(struct hdac_bus *bus, bool enable); |
9 | int snd_hdac_display_power(struct hdac_bus *bus, bool enable); | 11 | int snd_hdac_display_power(struct hdac_bus *bus, bool enable); |
10 | int snd_hdac_get_display_clk(struct hdac_bus *bus); | 12 | int snd_hdac_get_display_clk(struct hdac_bus *bus); |
11 | int snd_hdac_i915_init(struct hdac_bus *bus); | 13 | int snd_hdac_i915_init(struct hdac_bus *bus); |
12 | int snd_hdac_i915_exit(struct hdac_bus *bus); | 14 | int snd_hdac_i915_exit(struct hdac_bus *bus); |
15 | int snd_hdac_i915_register_notifier(const struct i915_audio_component_audio_ops *); | ||
13 | #else | 16 | #else |
14 | static int snd_hdac_set_codec_wakeup(struct hdac_bus *bus, bool enable) | 17 | static int snd_hdac_set_codec_wakeup(struct hdac_bus *bus, bool enable) |
15 | { | 18 | { |
@@ -31,6 +34,10 @@ static inline int snd_hdac_i915_exit(struct hdac_bus *bus) | |||
31 | { | 34 | { |
32 | return 0; | 35 | return 0; |
33 | } | 36 | } |
37 | static inline int snd_hdac_i915_register_notifier(const struct i915_audio_component_audio_ops *ops) | ||
38 | { | ||
39 | return -ENODEV; | ||
40 | } | ||
34 | #endif | 41 | #endif |
35 | 42 | ||
36 | #endif /* __SOUND_HDA_I915_H */ | 43 | #endif /* __SOUND_HDA_I915_H */ |
diff --git a/sound/hda/hdac_i915.c b/sound/hda/hdac_i915.c index 5676b849379d..55c3df4458f7 100644 --- a/sound/hda/hdac_i915.c +++ b/sound/hda/hdac_i915.c | |||
@@ -134,6 +134,16 @@ static int hdac_component_master_match(struct device *dev, void *data) | |||
134 | return !strcmp(dev->driver->name, "i915"); | 134 | return !strcmp(dev->driver->name, "i915"); |
135 | } | 135 | } |
136 | 136 | ||
137 | int snd_hdac_i915_register_notifier(const struct i915_audio_component_audio_ops *aops) | ||
138 | { | ||
139 | if (WARN_ON(!hdac_acomp)) | ||
140 | return -ENODEV; | ||
141 | |||
142 | hdac_acomp->audio_ops = aops; | ||
143 | return 0; | ||
144 | } | ||
145 | EXPORT_SYMBOL_GPL(snd_hdac_i915_register_notifier); | ||
146 | |||
137 | int snd_hdac_i915_init(struct hdac_bus *bus) | 147 | int snd_hdac_i915_init(struct hdac_bus *bus) |
138 | { | 148 | { |
139 | struct component_match *match = NULL; | 149 | struct component_match *match = NULL; |