.. | .. |
---|
52 | 52 | u8 backlight_level; /* panel backlight level (0-255) */ |
---|
53 | 53 | } __packed; |
---|
54 | 54 | |
---|
| 55 | +struct atif_qbtc_arguments { |
---|
| 56 | + u16 size; /* structure size in bytes (includes size field) */ |
---|
| 57 | + u8 requested_display; /* which display is requested */ |
---|
| 58 | +} __packed; |
---|
| 59 | + |
---|
| 60 | +#define ATIF_QBTC_MAX_DATA_POINTS 99 |
---|
| 61 | + |
---|
| 62 | +struct atif_qbtc_data_point { |
---|
| 63 | + u8 luminance; /* luminance in percent */ |
---|
| 64 | + u8 ipnut_signal; /* input signal in range 0-255 */ |
---|
| 65 | +} __packed; |
---|
| 66 | + |
---|
| 67 | +struct atif_qbtc_output { |
---|
| 68 | + u16 size; /* structure size in bytes (includes size field) */ |
---|
| 69 | + u16 flags; /* all zeroes */ |
---|
| 70 | + u8 error_code; /* error code */ |
---|
| 71 | + u8 ac_level; /* default brightness on AC power */ |
---|
| 72 | + u8 dc_level; /* default brightness on DC power */ |
---|
| 73 | + u8 min_input_signal; /* max input signal in range 0-255 */ |
---|
| 74 | + u8 max_input_signal; /* min input signal in range 0-255 */ |
---|
| 75 | + u8 number_of_points; /* number of data points */ |
---|
| 76 | + struct atif_qbtc_data_point data_points[ATIF_QBTC_MAX_DATA_POINTS]; |
---|
| 77 | +} __packed; |
---|
| 78 | + |
---|
55 | 79 | #define ATIF_NOTIFY_MASK 0x3 |
---|
56 | 80 | #define ATIF_NOTIFY_NONE 0 |
---|
57 | 81 | #define ATIF_NOTIFY_81 1 |
---|
.. | .. |
---|
126 | 150 | * DWORD - supported functions bit vector |
---|
127 | 151 | */ |
---|
128 | 152 | /* Notifications mask */ |
---|
129 | | -# define ATIF_DISPLAY_SWITCH_REQUEST_SUPPORTED (1 << 0) |
---|
130 | | -# define ATIF_EXPANSION_MODE_CHANGE_REQUEST_SUPPORTED (1 << 1) |
---|
131 | 153 | # define ATIF_THERMAL_STATE_CHANGE_REQUEST_SUPPORTED (1 << 2) |
---|
132 | 154 | # define ATIF_FORCED_POWER_STATE_CHANGE_REQUEST_SUPPORTED (1 << 3) |
---|
133 | 155 | # define ATIF_SYSTEM_POWER_SOURCE_CHANGE_REQUEST_SUPPORTED (1 << 4) |
---|
134 | | -# define ATIF_DISPLAY_CONF_CHANGE_REQUEST_SUPPORTED (1 << 5) |
---|
135 | | -# define ATIF_PX_GFX_SWITCH_REQUEST_SUPPORTED (1 << 6) |
---|
136 | 156 | # define ATIF_PANEL_BRIGHTNESS_CHANGE_REQUEST_SUPPORTED (1 << 7) |
---|
137 | 157 | # define ATIF_DGPU_DISPLAY_EVENT_SUPPORTED (1 << 8) |
---|
| 158 | +# define ATIF_GPU_PACKAGE_POWER_LIMIT_REQUEST_SUPPORTED (1 << 12) |
---|
138 | 159 | /* supported functions vector */ |
---|
139 | 160 | # define ATIF_GET_SYSTEM_PARAMETERS_SUPPORTED (1 << 0) |
---|
140 | 161 | # define ATIF_GET_SYSTEM_BIOS_REQUESTS_SUPPORTED (1 << 1) |
---|
141 | | -# define ATIF_SELECT_ACTIVE_DISPLAYS_SUPPORTED (1 << 2) |
---|
142 | | -# define ATIF_GET_LID_STATE_SUPPORTED (1 << 3) |
---|
143 | | -# define ATIF_GET_TV_STANDARD_FROM_CMOS_SUPPORTED (1 << 4) |
---|
144 | | -# define ATIF_SET_TV_STANDARD_IN_CMOS_SUPPORTED (1 << 5) |
---|
145 | | -# define ATIF_GET_PANEL_EXPANSION_MODE_FROM_CMOS_SUPPORTED (1 << 6) |
---|
146 | | -# define ATIF_SET_PANEL_EXPANSION_MODE_IN_CMOS_SUPPORTED (1 << 7) |
---|
147 | 162 | # define ATIF_TEMPERATURE_CHANGE_NOTIFICATION_SUPPORTED (1 << 12) |
---|
148 | | -# define ATIF_GET_GRAPHICS_DEVICE_TYPES_SUPPORTED (1 << 14) |
---|
| 163 | +# define ATIF_QUERY_BACKLIGHT_TRANSFER_CHARACTERISTICS_SUPPORTED (1 << 15) |
---|
| 164 | +# define ATIF_READY_TO_UNDOCK_NOTIFICATION_SUPPORTED (1 << 16) |
---|
149 | 165 | # define ATIF_GET_EXTERNAL_GPU_INFORMATION_SUPPORTED (1 << 20) |
---|
150 | 166 | #define ATIF_FUNCTION_GET_SYSTEM_PARAMETERS 0x1 |
---|
151 | 167 | /* ARG0: ATIF_FUNCTION_GET_SYSTEM_PARAMETERS |
---|
.. | .. |
---|
170 | 186 | * n (0xd0-0xd9) is specified in notify command code. |
---|
171 | 187 | * bit 2: |
---|
172 | 188 | * 1 - lid changes not reported though int10 |
---|
| 189 | + * bit 3: |
---|
| 190 | + * 1 - system bios controls overclocking |
---|
| 191 | + * bit 4: |
---|
| 192 | + * 1 - enable overclocking |
---|
173 | 193 | */ |
---|
174 | 194 | #define ATIF_FUNCTION_GET_SYSTEM_BIOS_REQUESTS 0x2 |
---|
175 | 195 | /* ARG0: ATIF_FUNCTION_GET_SYSTEM_BIOS_REQUESTS |
---|
.. | .. |
---|
177 | 197 | * OUTPUT: |
---|
178 | 198 | * WORD - structure size in bytes (includes size field) |
---|
179 | 199 | * DWORD - pending sbios requests |
---|
180 | | - * BYTE - panel expansion mode |
---|
| 200 | + * BYTE - reserved (all zeroes) |
---|
181 | 201 | * BYTE - thermal state: target gfx controller |
---|
182 | 202 | * BYTE - thermal state: state id (0: exit state, non-0: state) |
---|
183 | 203 | * BYTE - forced power state: target gfx controller |
---|
184 | | - * BYTE - forced power state: state id |
---|
| 204 | + * BYTE - forced power state: state id (0: forced state, non-0: state) |
---|
185 | 205 | * BYTE - system power source |
---|
186 | 206 | * BYTE - panel backlight level (0-255) |
---|
| 207 | + * BYTE - GPU package power limit: target gfx controller |
---|
| 208 | + * DWORD - GPU package power limit: value (24:8 fractional format, Watts) |
---|
187 | 209 | */ |
---|
188 | 210 | /* pending sbios requests */ |
---|
189 | | -# define ATIF_DISPLAY_SWITCH_REQUEST (1 << 0) |
---|
190 | | -# define ATIF_EXPANSION_MODE_CHANGE_REQUEST (1 << 1) |
---|
191 | 211 | # define ATIF_THERMAL_STATE_CHANGE_REQUEST (1 << 2) |
---|
192 | 212 | # define ATIF_FORCED_POWER_STATE_CHANGE_REQUEST (1 << 3) |
---|
193 | 213 | # define ATIF_SYSTEM_POWER_SOURCE_CHANGE_REQUEST (1 << 4) |
---|
194 | | -# define ATIF_DISPLAY_CONF_CHANGE_REQUEST (1 << 5) |
---|
195 | | -# define ATIF_PX_GFX_SWITCH_REQUEST (1 << 6) |
---|
196 | 214 | # define ATIF_PANEL_BRIGHTNESS_CHANGE_REQUEST (1 << 7) |
---|
197 | 215 | # define ATIF_DGPU_DISPLAY_EVENT (1 << 8) |
---|
198 | | -/* panel expansion mode */ |
---|
199 | | -# define ATIF_PANEL_EXPANSION_DISABLE 0 |
---|
200 | | -# define ATIF_PANEL_EXPANSION_FULL 1 |
---|
201 | | -# define ATIF_PANEL_EXPANSION_ASPECT 2 |
---|
| 216 | +# define ATIF_GPU_PACKAGE_POWER_LIMIT_REQUEST (1 << 12) |
---|
202 | 217 | /* target gfx controller */ |
---|
203 | 218 | # define ATIF_TARGET_GFX_SINGLE 0 |
---|
204 | 219 | # define ATIF_TARGET_GFX_PX_IGPU 1 |
---|
.. | .. |
---|
208 | 223 | # define ATIF_POWER_SOURCE_DC 2 |
---|
209 | 224 | # define ATIF_POWER_SOURCE_RESTRICTED_AC_1 3 |
---|
210 | 225 | # define ATIF_POWER_SOURCE_RESTRICTED_AC_2 4 |
---|
211 | | -#define ATIF_FUNCTION_SELECT_ACTIVE_DISPLAYS 0x3 |
---|
212 | | -/* ARG0: ATIF_FUNCTION_SELECT_ACTIVE_DISPLAYS |
---|
213 | | - * ARG1: |
---|
214 | | - * WORD - structure size in bytes (includes size field) |
---|
215 | | - * WORD - selected displays |
---|
216 | | - * WORD - connected displays |
---|
217 | | - * OUTPUT: |
---|
218 | | - * WORD - structure size in bytes (includes size field) |
---|
219 | | - * WORD - selected displays |
---|
220 | | - */ |
---|
221 | | -# define ATIF_LCD1 (1 << 0) |
---|
222 | | -# define ATIF_CRT1 (1 << 1) |
---|
223 | | -# define ATIF_TV (1 << 2) |
---|
224 | | -# define ATIF_DFP1 (1 << 3) |
---|
225 | | -# define ATIF_CRT2 (1 << 4) |
---|
226 | | -# define ATIF_LCD2 (1 << 5) |
---|
227 | | -# define ATIF_DFP2 (1 << 7) |
---|
228 | | -# define ATIF_CV (1 << 8) |
---|
229 | | -# define ATIF_DFP3 (1 << 9) |
---|
230 | | -# define ATIF_DFP4 (1 << 10) |
---|
231 | | -# define ATIF_DFP5 (1 << 11) |
---|
232 | | -# define ATIF_DFP6 (1 << 12) |
---|
233 | | -#define ATIF_FUNCTION_GET_LID_STATE 0x4 |
---|
234 | | -/* ARG0: ATIF_FUNCTION_GET_LID_STATE |
---|
235 | | - * ARG1: none |
---|
236 | | - * OUTPUT: |
---|
237 | | - * WORD - structure size in bytes (includes size field) |
---|
238 | | - * BYTE - lid state (0: open, 1: closed) |
---|
239 | | - * |
---|
240 | | - * GET_LID_STATE only works at boot and resume, for general lid |
---|
241 | | - * status, use the kernel provided status |
---|
242 | | - */ |
---|
243 | | -#define ATIF_FUNCTION_GET_TV_STANDARD_FROM_CMOS 0x5 |
---|
244 | | -/* ARG0: ATIF_FUNCTION_GET_TV_STANDARD_FROM_CMOS |
---|
245 | | - * ARG1: none |
---|
246 | | - * OUTPUT: |
---|
247 | | - * WORD - structure size in bytes (includes size field) |
---|
248 | | - * BYTE - 0 |
---|
249 | | - * BYTE - TV standard |
---|
250 | | - */ |
---|
251 | | -# define ATIF_TV_STD_NTSC 0 |
---|
252 | | -# define ATIF_TV_STD_PAL 1 |
---|
253 | | -# define ATIF_TV_STD_PALM 2 |
---|
254 | | -# define ATIF_TV_STD_PAL60 3 |
---|
255 | | -# define ATIF_TV_STD_NTSCJ 4 |
---|
256 | | -# define ATIF_TV_STD_PALCN 5 |
---|
257 | | -# define ATIF_TV_STD_PALN 6 |
---|
258 | | -# define ATIF_TV_STD_SCART_RGB 9 |
---|
259 | | -#define ATIF_FUNCTION_SET_TV_STANDARD_IN_CMOS 0x6 |
---|
260 | | -/* ARG0: ATIF_FUNCTION_SET_TV_STANDARD_IN_CMOS |
---|
261 | | - * ARG1: |
---|
262 | | - * WORD - structure size in bytes (includes size field) |
---|
263 | | - * BYTE - 0 |
---|
264 | | - * BYTE - TV standard |
---|
265 | | - * OUTPUT: none |
---|
266 | | - */ |
---|
267 | | -#define ATIF_FUNCTION_GET_PANEL_EXPANSION_MODE_FROM_CMOS 0x7 |
---|
268 | | -/* ARG0: ATIF_FUNCTION_GET_PANEL_EXPANSION_MODE_FROM_CMOS |
---|
269 | | - * ARG1: none |
---|
270 | | - * OUTPUT: |
---|
271 | | - * WORD - structure size in bytes (includes size field) |
---|
272 | | - * BYTE - panel expansion mode |
---|
273 | | - */ |
---|
274 | | -#define ATIF_FUNCTION_SET_PANEL_EXPANSION_MODE_IN_CMOS 0x8 |
---|
275 | | -/* ARG0: ATIF_FUNCTION_SET_PANEL_EXPANSION_MODE_IN_CMOS |
---|
276 | | - * ARG1: |
---|
277 | | - * WORD - structure size in bytes (includes size field) |
---|
278 | | - * BYTE - panel expansion mode |
---|
279 | | - * OUTPUT: none |
---|
280 | | - */ |
---|
281 | 226 | #define ATIF_FUNCTION_TEMPERATURE_CHANGE_NOTIFICATION 0xD |
---|
282 | 227 | /* ARG0: ATIF_FUNCTION_TEMPERATURE_CHANGE_NOTIFICATION |
---|
283 | 228 | * ARG1: |
---|
.. | .. |
---|
286 | 231 | * BYTE - current temperature (degress Celsius) |
---|
287 | 232 | * OUTPUT: none |
---|
288 | 233 | */ |
---|
289 | | -#define ATIF_FUNCTION_GET_GRAPHICS_DEVICE_TYPES 0xF |
---|
290 | | -/* ARG0: ATIF_FUNCTION_GET_GRAPHICS_DEVICE_TYPES |
---|
291 | | - * ARG1: none |
---|
| 234 | +#define ATIF_FUNCTION_QUERY_BRIGHTNESS_TRANSFER_CHARACTERISTICS 0x10 |
---|
| 235 | +/* ARG0: ATIF_FUNCTION_QUERY_BRIGHTNESS_TRANSFER_CHARACTERISTICS |
---|
| 236 | + * ARG1: |
---|
| 237 | + * WORD - structure size in bytes (includes size field) |
---|
| 238 | + * BYTE - requested display |
---|
292 | 239 | * OUTPUT: |
---|
293 | | - * WORD - number of gfx devices |
---|
294 | | - * WORD - device structure size in bytes (excludes device size field) |
---|
295 | | - * DWORD - flags \ |
---|
296 | | - * WORD - bus number } repeated structure |
---|
297 | | - * WORD - device number / |
---|
| 240 | + * WORD - structure size in bytes (includes size field) |
---|
| 241 | + * WORD - flags (currently all 16 bits are reserved) |
---|
| 242 | + * BYTE - error code (on failure, disregard all below fields) |
---|
| 243 | + * BYTE - AC level (default brightness in percent when machine has full power) |
---|
| 244 | + * BYTE - DC level (default brightness in percent when machine is on battery) |
---|
| 245 | + * BYTE - min input signal, in range 0-255, corresponding to 0% backlight |
---|
| 246 | + * BYTE - max input signal, in range 0-255, corresponding to 100% backlight |
---|
| 247 | + * BYTE - number of reported data points |
---|
| 248 | + * BYTE - luminance level in percent \ repeated structure |
---|
| 249 | + * BYTE - input signal in range 0-255 / does not have entries for 0% and 100% |
---|
298 | 250 | */ |
---|
299 | | -/* flags */ |
---|
300 | | -# define ATIF_PX_REMOVABLE_GRAPHICS_DEVICE (1 << 0) |
---|
301 | | -# define ATIF_XGP_PORT (1 << 1) |
---|
302 | | -# define ATIF_VGA_ENABLED_GRAPHICS_DEVICE (1 << 2) |
---|
303 | | -# define ATIF_XGP_PORT_IN_DOCK (1 << 3) |
---|
| 251 | +/* requested display */ |
---|
| 252 | +# define ATIF_QBTC_REQUEST_LCD1 0 |
---|
| 253 | +# define ATIF_QBTC_REQUEST_CRT1 1 |
---|
| 254 | +# define ATIF_QBTC_REQUEST_DFP1 3 |
---|
| 255 | +# define ATIF_QBTC_REQUEST_CRT2 4 |
---|
| 256 | +# define ATIF_QBTC_REQUEST_LCD2 5 |
---|
| 257 | +# define ATIF_QBTC_REQUEST_DFP2 7 |
---|
| 258 | +# define ATIF_QBTC_REQUEST_DFP3 9 |
---|
| 259 | +# define ATIF_QBTC_REQUEST_DFP4 10 |
---|
| 260 | +# define ATIF_QBTC_REQUEST_DFP5 11 |
---|
| 261 | +# define ATIF_QBTC_REQUEST_DFP6 12 |
---|
| 262 | +/* error code */ |
---|
| 263 | +# define ATIF_QBTC_ERROR_CODE_SUCCESS 0 |
---|
| 264 | +# define ATIF_QBTC_ERROR_CODE_FAILURE 1 |
---|
| 265 | +# define ATIF_QBTC_ERROR_CODE_DEVICE_NOT_SUPPORTED 2 |
---|
| 266 | +#define ATIF_FUNCTION_READY_TO_UNDOCK_NOTIFICATION 0x11 |
---|
| 267 | +/* ARG0: ATIF_FUNCTION_READY_TO_UNDOCK_NOTIFICATION |
---|
| 268 | + * ARG1: none |
---|
| 269 | + * OUTPUT: none |
---|
| 270 | + */ |
---|
304 | 271 | #define ATIF_FUNCTION_GET_EXTERNAL_GPU_INFORMATION 0x15 |
---|
305 | 272 | /* ARG0: ATIF_FUNCTION_GET_EXTERNAL_GPU_INFORMATION |
---|
306 | 273 | * ARG1: none |
---|