Commit be15aad6 authored by David Henningsson's avatar David Henningsson Committed by Daniel Vetter
parent fa8848f2
...@@ -31,47 +31,80 @@ ...@@ -31,47 +31,80 @@
#define MAX_PORTS 5 #define MAX_PORTS 5
/** /**
* struct i915_audio_component_ops - callbacks defined in gfx driver * struct i915_audio_component_ops - Ops implemented by i915 driver, called by hda 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 { struct i915_audio_component_ops {
/**
* @owner: i915 module
*/
struct module *owner; 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 *); 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 *); void (*put_power)(struct device *);
/**
* @codec_wake_override: Enable/disable codec wake signal
*/
void (*codec_wake_override)(struct device *, bool enable); void (*codec_wake_override)(struct device *, bool enable);
/**
* @get_cdclk_freq: Get the Core Display Clock in kHz
*/
int (*get_cdclk_freq)(struct device *); 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); int (*sync_audio_rate)(struct device *, int port, int rate);
}; };
/**
* struct i915_audio_component_audio_ops - Ops implemented by hda driver, called by i915 driver
*/
struct i915_audio_component_audio_ops { struct i915_audio_component_audio_ops {
/**
* @audio_ptr: Pointer to be used in call to pin_eld_notify
*/
void *audio_ptr; void *audio_ptr;
/** /**
* Call from i915 driver, notifying the HDA driver that * @pin_eld_notify: Notify the HDA driver that pin sense and/or ELD information has changed
* pin sense and/or ELD information has changed. *
* @audio_ptr: HDA driver object * Called when the i915 driver has set up audio pipeline or has just
* @port: Which port has changed (PORTA / PORTB / PORTC etc) * 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); void (*pin_eld_notify)(void *audio_ptr, int port);
}; };
/** /**
* struct i915_audio_component - used for audio video interaction * struct i915_audio_component - Used for direct communication between i915 and hda drivers
* @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 { struct i915_audio_component {
/**
* @dev: i915 device, used as parameter for ops
*/
struct device *dev; struct device *dev;
/**
* @aud_sample_rate: the array of audio sample rate per port
*/
int aud_sample_rate[MAX_PORTS]; int aud_sample_rate[MAX_PORTS];
/**
* @ops: Ops implemented by i915 driver, called by hda driver
*/
const struct i915_audio_component_ops *ops; 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; const struct i915_audio_component_audio_ops *audio_ops;
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment