31,47 → 31,94 |
#define MAX_PORTS 5 |
|
/** |
* struct i915_audio_component_ops - callbacks defined in gfx driver |
* @owner: the module owner |
* @get_power: get the POWER_DOMAIN_AUDIO power well |
* @put_power: put the POWER_DOMAIN_AUDIO power well |
* @codec_wake_override: Enable/Disable generating the codec wake signal |
* @get_cdclk_freq: get the Core Display Clock in KHz |
* @sync_audio_rate: set n/cts based on the sample rate |
* struct i915_audio_component_ops - Ops implemented by i915 driver, called by hda driver |
*/ |
struct i915_audio_component_ops { |
/** |
* @owner: i915 module |
*/ |
struct module *owner; |
/** |
* @get_power: get the POWER_DOMAIN_AUDIO power well |
* |
* Request the power well to be turned on. |
*/ |
void (*get_power)(struct device *); |
/** |
* @put_power: put the POWER_DOMAIN_AUDIO power well |
* |
* Allow the power well to be turned off. |
*/ |
void (*put_power)(struct device *); |
/** |
* @codec_wake_override: Enable/disable codec wake signal |
*/ |
void (*codec_wake_override)(struct device *, bool enable); |
/** |
* @get_cdclk_freq: Get the Core Display Clock in kHz |
*/ |
int (*get_cdclk_freq)(struct device *); |
/** |
* @sync_audio_rate: set n/cts based on the sample rate |
* |
* Called from audio driver. After audio driver sets the |
* sample rate, it will call this function to set n/cts |
*/ |
int (*sync_audio_rate)(struct device *, int port, int rate); |
/** |
* @get_eld: fill the audio state and ELD bytes for the given port |
* |
* Called from audio driver to get the HDMI/DP audio state of the given |
* digital port, and also fetch ELD bytes to the given pointer. |
* |
* It returns the byte size of the original ELD (not the actually |
* copied size), zero for an invalid ELD, or a negative error code. |
* |
* Note that the returned size may be over @max_bytes. Then it |
* implies that only a part of ELD has been copied to the buffer. |
*/ |
int (*get_eld)(struct device *, int port, bool *enabled, |
unsigned char *buf, int max_bytes); |
}; |
|
/** |
* struct i915_audio_component_audio_ops - Ops implemented by hda driver, called by i915 driver |
*/ |
struct i915_audio_component_audio_ops { |
/** |
* @audio_ptr: Pointer to be used in call to pin_eld_notify |
*/ |
void *audio_ptr; |
/** |
* Call from i915 driver, notifying the HDA driver that |
* pin sense and/or ELD information has changed. |
* @audio_ptr: HDA driver object |
* @port: Which port has changed (PORTA / PORTB / PORTC etc) |
* @pin_eld_notify: Notify the HDA driver that pin sense and/or ELD information has changed |
* |
* Called when the i915 driver has set up audio pipeline or has just |
* begun to tear it down. This allows the HDA driver to update its |
* status accordingly (even when the HDA controller is in power save |
* mode). |
*/ |
void (*pin_eld_notify)(void *audio_ptr, int port); |
}; |
|
/** |
* struct i915_audio_component - used for audio video interaction |
* @dev: the device from gfx driver |
* @aud_sample_rate: the array of audio sample rate per port |
* @ops: callback for audio driver calling |
* @audio_ops: Call from i915 driver |
* struct i915_audio_component - Used for direct communication between i915 and hda drivers |
*/ |
struct i915_audio_component { |
/** |
* @dev: i915 device, used as parameter for ops |
*/ |
struct device *dev; |
/** |
* @aud_sample_rate: the array of audio sample rate per port |
*/ |
int aud_sample_rate[MAX_PORTS]; |
|
/** |
* @ops: Ops implemented by i915 driver, called by hda driver |
*/ |
const struct i915_audio_component_ops *ops; |
|
/** |
* @audio_ops: Ops implemented by hda driver, called by i915 driver |
*/ |
const struct i915_audio_component_audio_ops *audio_ops; |
}; |
|