1 | // SPDX-License-Identifier: GPL-2.0
|
---|
2 | // HD-Audio helpers to sync with DRM driver
|
---|
3 |
|
---|
4 | #ifndef __SOUND_HDA_COMPONENT_H
|
---|
5 | #define __SOUND_HDA_COMPONENT_H
|
---|
6 |
|
---|
7 | #include <drm/drm_audio_component.h>
|
---|
8 | #include <sound/hdaudio.h>
|
---|
9 |
|
---|
10 | /* virtual idx for controller */
|
---|
11 | #define HDA_CODEC_IDX_CONTROLLER HDA_MAX_CODECS
|
---|
12 |
|
---|
13 | #ifdef CONFIG_SND_HDA_COMPONENT
|
---|
14 | int snd_hdac_set_codec_wakeup(struct hdac_bus *bus, bool enable);
|
---|
15 | void snd_hdac_display_power(struct hdac_bus *bus, unsigned int idx,
|
---|
16 | bool enable);
|
---|
17 | int snd_hdac_sync_audio_rate(struct hdac_device *codec, hda_nid_t nid,
|
---|
18 | int dev_id, int rate);
|
---|
19 | int snd_hdac_acomp_get_eld(struct hdac_device *codec, hda_nid_t nid, int dev_id,
|
---|
20 | bool *audio_enabled, char *buffer, int max_bytes);
|
---|
21 | int snd_hdac_acomp_init(struct hdac_bus *bus,
|
---|
22 | const struct drm_audio_component_audio_ops *aops,
|
---|
23 | int (*match_master)(struct device *, int, void *),
|
---|
24 | size_t extra_size);
|
---|
25 | int snd_hdac_acomp_exit(struct hdac_bus *bus);
|
---|
26 | int snd_hdac_acomp_register_notifier(struct hdac_bus *bus,
|
---|
27 | const struct drm_audio_component_audio_ops *ops);
|
---|
28 | #else
|
---|
29 | static inline int snd_hdac_set_codec_wakeup(struct hdac_bus *bus, bool enable)
|
---|
30 | {
|
---|
31 | return 0;
|
---|
32 | }
|
---|
33 | static inline void snd_hdac_display_power(struct hdac_bus *bus,
|
---|
34 | unsigned int idx, bool enable)
|
---|
35 | {
|
---|
36 | }
|
---|
37 | static inline int snd_hdac_sync_audio_rate(struct hdac_device *codec,
|
---|
38 | hda_nid_t nid, int dev_id, int rate)
|
---|
39 | {
|
---|
40 | return 0;
|
---|
41 | }
|
---|
42 | static inline int snd_hdac_acomp_get_eld(struct hdac_device *codec, hda_nid_t nid,
|
---|
43 | int dev_id, bool *audio_enabled,
|
---|
44 | char *buffer, int max_bytes)
|
---|
45 | {
|
---|
46 | return -ENODEV;
|
---|
47 | }
|
---|
48 | static inline int snd_hdac_acomp_init(struct hdac_bus *bus,
|
---|
49 | const struct drm_audio_component_audio_ops *aops,
|
---|
50 | int (*match_master)(struct device *,
|
---|
51 | int, void *),
|
---|
52 | size_t extra_size)
|
---|
53 | {
|
---|
54 | return -ENODEV;
|
---|
55 | }
|
---|
56 | static inline int snd_hdac_acomp_exit(struct hdac_bus *bus)
|
---|
57 | {
|
---|
58 | return 0;
|
---|
59 | }
|
---|
60 | static inline int snd_hdac_acomp_register_notifier(struct hdac_bus *bus,
|
---|
61 | const struct drm_audio_component_audio_ops *ops)
|
---|
62 | {
|
---|
63 | return -ENODEV;
|
---|
64 | }
|
---|
65 | #endif
|
---|
66 |
|
---|
67 | #endif /* __SOUND_HDA_COMPONENT_H */
|
---|