68 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| // SPDX-License-Identifier: GPL-2.0
 | |
| // HD-Audio helpers to sync with DRM driver
 | |
| 
 | |
| #ifndef __SOUND_HDA_COMPONENT_H
 | |
| #define __SOUND_HDA_COMPONENT_H
 | |
| 
 | |
| #include <drm/drm_audio_component.h>
 | |
| #include <sound/hdaudio.h>
 | |
| 
 | |
| /* virtual idx for controller */
 | |
| #define HDA_CODEC_IDX_CONTROLLER	HDA_MAX_CODECS
 | |
| 
 | |
| #ifdef CONFIG_SND_HDA_COMPONENT
 | |
| int snd_hdac_set_codec_wakeup(struct hdac_bus *bus, bool enable);
 | |
| void snd_hdac_display_power(struct hdac_bus *bus, unsigned int idx,
 | |
| 			    bool enable);
 | |
| int snd_hdac_sync_audio_rate(struct hdac_device *codec, hda_nid_t nid,
 | |
| 			     int dev_id, int rate);
 | |
| int snd_hdac_acomp_get_eld(struct hdac_device *codec, hda_nid_t nid, int dev_id,
 | |
| 			   bool *audio_enabled, char *buffer, int max_bytes);
 | |
| int snd_hdac_acomp_init(struct hdac_bus *bus,
 | |
| 			const struct drm_audio_component_audio_ops *aops,
 | |
| 			int (*match_master)(struct device *, int, void *),
 | |
| 			size_t extra_size);
 | |
| int snd_hdac_acomp_exit(struct hdac_bus *bus);
 | |
| int snd_hdac_acomp_register_notifier(struct hdac_bus *bus,
 | |
| 				    const struct drm_audio_component_audio_ops *ops);
 | |
| #else
 | |
| static inline int snd_hdac_set_codec_wakeup(struct hdac_bus *bus, bool enable)
 | |
| {
 | |
| 	return 0;
 | |
| }
 | |
| static inline void snd_hdac_display_power(struct hdac_bus *bus,
 | |
| 					  unsigned int idx, bool enable)
 | |
| {
 | |
| }
 | |
| static inline int snd_hdac_sync_audio_rate(struct hdac_device *codec,
 | |
| 					   hda_nid_t nid, int dev_id, int rate)
 | |
| {
 | |
| 	return 0;
 | |
| }
 | |
| static inline int snd_hdac_acomp_get_eld(struct hdac_device *codec, hda_nid_t nid,
 | |
| 					 int dev_id, bool *audio_enabled,
 | |
| 					 char *buffer, int max_bytes)
 | |
| {
 | |
| 	return -ENODEV;
 | |
| }
 | |
| static inline int snd_hdac_acomp_init(struct hdac_bus *bus,
 | |
| 				      const struct drm_audio_component_audio_ops *aops,
 | |
| 				      int (*match_master)(struct device *,
 | |
| 							  int, void *),
 | |
| 				      size_t extra_size)
 | |
| {
 | |
| 	return -ENODEV;
 | |
| }
 | |
| static inline int snd_hdac_acomp_exit(struct hdac_bus *bus)
 | |
| {
 | |
| 	return 0;
 | |
| }
 | |
| static inline int snd_hdac_acomp_register_notifier(struct hdac_bus *bus,
 | |
| 						  const struct drm_audio_component_audio_ops *ops)
 | |
| {
 | |
| 	return -ENODEV;
 | |
| }
 | |
| #endif
 | |
| 
 | |
| #endif /* __SOUND_HDA_COMPONENT_H */
 |