Subversion Repositories Kolibri OS

Rev

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
	 */