Message ID | 1444987464-8657-1-git-send-email-david.henningsson@canonical.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Fri, Oct 16, 2015 at 11:24:24AM +0200, David Henningsson wrote: > Signed-off-by: David Henningsson <david.henningsson@canonical.com> Queued for -next, thanks for the patch. -Daniel > --- > > Now rebased against drm-intel git master. > > include/drm/i915_component.h | 69 ++++++++++++++++++++++++++++++++------------ > 1 file changed, 51 insertions(+), 18 deletions(-) > > diff --git a/include/drm/i915_component.h b/include/drm/i915_component.h > index 30d89e0..fab1385 100644 > --- a/include/drm/i915_component.h > +++ b/include/drm/i915_component.h > @@ -31,47 +31,80 @@ > #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); > }; > > +/** > + * 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; > }; > > -- > 1.9.1 >
diff --git a/include/drm/i915_component.h b/include/drm/i915_component.h index 30d89e0..fab1385 100644 --- a/include/drm/i915_component.h +++ b/include/drm/i915_component.h @@ -31,47 +31,80 @@ #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); }; +/** + * 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; };
Signed-off-by: David Henningsson <david.henningsson@canonical.com> --- Now rebased against drm-intel git master. include/drm/i915_component.h | 69 ++++++++++++++++++++++++++++++++------------ 1 file changed, 51 insertions(+), 18 deletions(-)