To make kernel-doc happy, the i915_audio_component_audio_ops struct cannot be nested. Signed-off-by: David Henningsson <david.henningsson@xxxxxxxxxxxxx> --- Documentation/DocBook/drm.tmpl | 1 + include/drm/i915_component.h | 92 ++++++++++++++++++++++++++++++------------ 2 files changed, 67 insertions(+), 26 deletions(-) diff --git a/Documentation/DocBook/drm.tmpl b/Documentation/DocBook/drm.tmpl index 9ddf8c6..f16e4e8 100644 --- a/Documentation/DocBook/drm.tmpl +++ b/Documentation/DocBook/drm.tmpl @@ -4051,6 +4051,7 @@ int num_ioctls;</synopsis> <title>High Definition Audio</title> !Pdrivers/gpu/drm/i915/intel_audio.c High Definition Audio over HDMI and Display Port !Idrivers/gpu/drm/i915/intel_audio.c +!Iinclude/drm/i915_component.h </sect2> <sect2> <title>Panel Self Refresh PSR (PSR/SRD)</title> diff --git a/include/drm/i915_component.h b/include/drm/i915_component.h index 89dc7d6..76c10c8 100644 --- a/include/drm/i915_component.h +++ b/include/drm/i915_component.h @@ -30,38 +30,78 @@ */ #define MAX_PORTS 5 +/** + * 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: Request that power well is to be turned on + */ + void (*get_power)(struct device *); + /** + * @put_power: Allow the power well to be turned off + */ + void (*put_power)(struct device *); + /** + * @codec_wake_override: Force the audio codec to stay awake + */ + void (*codec_wake_override)(struct device *, bool enable); + /** + * @get_cdclk_freq: Query the i915 driver about the current cdclk frequency + */ + 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; + /** + * @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 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]; - - const struct i915_audio_component_ops { - struct module *owner; - void (*get_power)(struct device *); - void (*put_power)(struct device *); - void (*codec_wake_override)(struct device *, bool enable); - 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); - } *ops; - - const struct i915_audio_component_audio_ops { - 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) - */ - void (*pin_eld_notify)(void *audio_ptr, int port); - } *audio_ops; + /** + * @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; }; #endif /* _I915_COMPONENT_H_ */ -- 1.9.1 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx