Rev 6082 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 6082 | Rev 6936 | ||
---|---|---|---|
Line 29... | Line 29... | ||
29 | * 5 should be enough as only HSW, BDW, SKL need such fix. |
29 | * 5 should be enough as only HSW, BDW, SKL need such fix. |
30 | */ |
30 | */ |
31 | #define MAX_PORTS 5 |
31 | #define MAX_PORTS 5 |
Line 32... | Line 32... | ||
32 | 32 | ||
33 | /** |
33 | /** |
34 | * struct i915_audio_component_ops - callbacks defined in gfx driver |
- | |
35 | * @owner: the module owner |
- | |
36 | * @get_power: get the POWER_DOMAIN_AUDIO power well |
- | |
37 | * @put_power: put the POWER_DOMAIN_AUDIO power well |
- | |
38 | * @codec_wake_override: Enable/Disable generating the codec wake signal |
- | |
39 | * @get_cdclk_freq: get the Core Display Clock in KHz |
- | |
40 | * @sync_audio_rate: set n/cts based on the sample rate |
34 | * struct i915_audio_component_ops - Ops implemented by i915 driver, called by hda driver |
41 | */ |
35 | */ |
- | 36 | struct i915_audio_component_ops { |
|
- | 37 | /** |
|
- | 38 | * @owner: i915 module |
|
42 | struct i915_audio_component_ops { |
39 | */ |
- | 40 | struct module *owner; |
|
- | 41 | /** |
|
- | 42 | * @get_power: get the POWER_DOMAIN_AUDIO power well |
|
- | 43 | * |
|
- | 44 | * Request the power well to be turned on. |
|
43 | struct module *owner; |
45 | */ |
- | 46 | void (*get_power)(struct device *); |
|
- | 47 | /** |
|
- | 48 | * @put_power: put the POWER_DOMAIN_AUDIO power well |
|
- | 49 | * |
|
- | 50 | * Allow the power well to be turned off. |
|
44 | void (*get_power)(struct device *); |
51 | */ |
- | 52 | void (*put_power)(struct device *); |
|
- | 53 | /** |
|
- | 54 | * @codec_wake_override: Enable/disable codec wake signal |
|
45 | void (*put_power)(struct device *); |
55 | */ |
- | 56 | void (*codec_wake_override)(struct device *, bool enable); |
|
- | 57 | /** |
|
- | 58 | * @get_cdclk_freq: Get the Core Display Clock in kHz |
|
46 | void (*codec_wake_override)(struct device *, bool enable); |
59 | */ |
- | 60 | int (*get_cdclk_freq)(struct device *); |
|
- | 61 | /** |
|
- | 62 | * @sync_audio_rate: set n/cts based on the sample rate |
|
- | 63 | * |
|
- | 64 | * Called from audio driver. After audio driver sets the |
|
- | 65 | * sample rate, it will call this function to set n/cts |
|
47 | int (*get_cdclk_freq)(struct device *); |
66 | */ |
- | 67 | int (*sync_audio_rate)(struct device *, int port, int rate); |
|
- | 68 | /** |
|
- | 69 | * @get_eld: fill the audio state and ELD bytes for the given port |
|
- | 70 | * |
|
- | 71 | * Called from audio driver to get the HDMI/DP audio state of the given |
|
- | 72 | * digital port, and also fetch ELD bytes to the given pointer. |
|
- | 73 | * |
|
- | 74 | * It returns the byte size of the original ELD (not the actually |
|
- | 75 | * copied size), zero for an invalid ELD, or a negative error code. |
|
- | 76 | * |
|
- | 77 | * Note that the returned size may be over @max_bytes. Then it |
|
- | 78 | * implies that only a part of ELD has been copied to the buffer. |
|
- | 79 | */ |
|
- | 80 | int (*get_eld)(struct device *, int port, bool *enabled, |
|
48 | int (*sync_audio_rate)(struct device *, int port, int rate); |
81 | unsigned char *buf, int max_bytes); |
Line -... | Line 82... | ||
- | 82 | }; |
|
- | 83 | ||
- | 84 | /** |
|
49 | }; |
85 | * struct i915_audio_component_audio_ops - Ops implemented by hda driver, called by i915 driver |
- | 86 | */ |
|
- | 87 | struct i915_audio_component_audio_ops { |
|
- | 88 | /** |
|
50 | 89 | * @audio_ptr: Pointer to be used in call to pin_eld_notify |
|
51 | struct i915_audio_component_audio_ops { |
90 | */ |
52 | void *audio_ptr; |
91 | void *audio_ptr; |
- | 92 | /** |
|
53 | /** |
93 | * @pin_eld_notify: Notify the HDA driver that pin sense and/or ELD information has changed |
54 | * Call from i915 driver, notifying the HDA driver that |
94 | * |
55 | * pin sense and/or ELD information has changed. |
95 | * Called when the i915 driver has set up audio pipeline or has just |
- | 96 | * begun to tear it down. This allows the HDA driver to update its |
|
56 | * @audio_ptr: HDA driver object |
97 | * status accordingly (even when the HDA controller is in power save |
57 | * @port: Which port has changed (PORTA / PORTB / PORTC etc) |
98 | * mode). |
58 | */ |
99 | */ |
Line 59... | Line 100... | ||
59 | void (*pin_eld_notify)(void *audio_ptr, int port); |
100 | void (*pin_eld_notify)(void *audio_ptr, int port); |
60 | }; |
101 | }; |
61 | - | ||
62 | /** |
- | |
63 | * struct i915_audio_component - used for audio video interaction |
- | |
64 | * @dev: the device from gfx driver |
- | |
65 | * @aud_sample_rate: the array of audio sample rate per port |
102 | |
66 | * @ops: callback for audio driver calling |
103 | /** |
- | 104 | * struct i915_audio_component - Used for direct communication between i915 and hda drivers |
|
- | 105 | */ |
|
- | 106 | struct i915_audio_component { |
|
67 | * @audio_ops: Call from i915 driver |
107 | /** |
- | 108 | * @dev: i915 device, used as parameter for ops |
|
- | 109 | */ |
|
- | 110 | struct device *dev; |
|
68 | */ |
111 | /** |
- | 112 | * @aud_sample_rate: the array of audio sample rate per port |
|
- | 113 | */ |
|
69 | struct i915_audio_component { |
114 | int aud_sample_rate[MAX_PORTS]; |
70 | struct device *dev; |
115 | /** |
- | 116 | * @ops: Ops implemented by i915 driver, called by hda driver |
|
- | 117 | */ |
|
71 | int aud_sample_rate[MAX_PORTS]; |
118 | const struct i915_audio_component_ops *ops; |
72 | 119 | /** |
|
73 | const struct i915_audio_component_ops *ops; |
120 | * @audio_ops: Ops implemented by hda driver, called by i915 driver |
Line 74... | Line 121... | ||
74 | 121 | */ |