1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35#ifndef _ATOMFIRMWARE_H_
36#define _ATOMFIRMWARE_H_
37
38enum atom_bios_header_version_def{
39 ATOM_MAJOR_VERSION =0x0003,
40 ATOM_MINOR_VERSION =0x0003,
41};
42
43#ifdef _H2INC
44 #ifndef uint32_t
45 typedef unsigned long uint32_t;
46 #endif
47
48 #ifndef uint16_t
49 typedef unsigned short uint16_t;
50 #endif
51
52 #ifndef uint8_t
53 typedef unsigned char uint8_t;
54 #endif
55#endif
56
57enum atom_crtc_def{
58 ATOM_CRTC1 =0,
59 ATOM_CRTC2 =1,
60 ATOM_CRTC3 =2,
61 ATOM_CRTC4 =3,
62 ATOM_CRTC5 =4,
63 ATOM_CRTC6 =5,
64 ATOM_CRTC_INVALID =0xff,
65};
66
67enum atom_ppll_def{
68 ATOM_PPLL0 =2,
69 ATOM_GCK_DFS =8,
70 ATOM_FCH_CLK =9,
71 ATOM_DP_DTO =11,
72 ATOM_COMBOPHY_PLL0 =20,
73 ATOM_COMBOPHY_PLL1 =21,
74 ATOM_COMBOPHY_PLL2 =22,
75 ATOM_COMBOPHY_PLL3 =23,
76 ATOM_COMBOPHY_PLL4 =24,
77 ATOM_COMBOPHY_PLL5 =25,
78 ATOM_PPLL_INVALID =0xff,
79};
80
81
82enum atom_dig_def{
83 ASIC_INT_DIG1_ENCODER_ID =0x03,
84 ASIC_INT_DIG2_ENCODER_ID =0x09,
85 ASIC_INT_DIG3_ENCODER_ID =0x0a,
86 ASIC_INT_DIG4_ENCODER_ID =0x0b,
87 ASIC_INT_DIG5_ENCODER_ID =0x0c,
88 ASIC_INT_DIG6_ENCODER_ID =0x0d,
89 ASIC_INT_DIG7_ENCODER_ID =0x0e,
90};
91
92
93enum atom_encode_mode_def
94{
95 ATOM_ENCODER_MODE_DP =0,
96 ATOM_ENCODER_MODE_DP_SST =0,
97 ATOM_ENCODER_MODE_LVDS =1,
98 ATOM_ENCODER_MODE_DVI =2,
99 ATOM_ENCODER_MODE_HDMI =3,
100 ATOM_ENCODER_MODE_DP_AUDIO =5,
101 ATOM_ENCODER_MODE_DP_MST =5,
102 ATOM_ENCODER_MODE_CRT =15,
103 ATOM_ENCODER_MODE_DVO =16,
104};
105
106enum atom_encoder_refclk_src_def{
107 ENCODER_REFCLK_SRC_P1PLL =0,
108 ENCODER_REFCLK_SRC_P2PLL =1,
109 ENCODER_REFCLK_SRC_P3PLL =2,
110 ENCODER_REFCLK_SRC_EXTCLK =3,
111 ENCODER_REFCLK_SRC_INVALID =0xff,
112};
113
114enum atom_scaler_def{
115 ATOM_SCALER_DISABLE =0,
116 ATOM_SCALER_CENTER =1,
117 ATOM_SCALER_EXPANSION =2,
118};
119
120enum atom_operation_def{
121 ATOM_DISABLE = 0,
122 ATOM_ENABLE = 1,
123 ATOM_INIT = 7,
124 ATOM_GET_STATUS = 8,
125};
126
127enum atom_embedded_display_op_def{
128 ATOM_LCD_BL_OFF = 2,
129 ATOM_LCD_BL_OM = 3,
130 ATOM_LCD_BL_BRIGHTNESS_CONTROL = 4,
131 ATOM_LCD_SELFTEST_START = 5,
132 ATOM_LCD_SELFTEST_STOP = 6,
133};
134
135enum atom_spread_spectrum_mode{
136 ATOM_SS_CENTER_OR_DOWN_MODE_MASK = 0x01,
137 ATOM_SS_DOWN_SPREAD_MODE = 0x00,
138 ATOM_SS_CENTRE_SPREAD_MODE = 0x01,
139 ATOM_INT_OR_EXT_SS_MASK = 0x02,
140 ATOM_INTERNAL_SS_MASK = 0x00,
141 ATOM_EXTERNAL_SS_MASK = 0x02,
142};
143
144
145enum atom_panel_bit_per_color{
146 PANEL_BPC_UNDEFINE =0x00,
147 PANEL_6BIT_PER_COLOR =0x01,
148 PANEL_8BIT_PER_COLOR =0x02,
149 PANEL_10BIT_PER_COLOR =0x03,
150 PANEL_12BIT_PER_COLOR =0x04,
151 PANEL_16BIT_PER_COLOR =0x05,
152};
153
154
155enum atom_voltage_type
156{
157 VOLTAGE_TYPE_VDDC = 1,
158 VOLTAGE_TYPE_MVDDC = 2,
159 VOLTAGE_TYPE_MVDDQ = 3,
160 VOLTAGE_TYPE_VDDCI = 4,
161 VOLTAGE_TYPE_VDDGFX = 5,
162 VOLTAGE_TYPE_PCC = 6,
163 VOLTAGE_TYPE_MVPP = 7,
164 VOLTAGE_TYPE_LEDDPM = 8,
165 VOLTAGE_TYPE_PCC_MVDD = 9,
166 VOLTAGE_TYPE_PCIE_VDDC = 10,
167 VOLTAGE_TYPE_PCIE_VDDR = 11,
168 VOLTAGE_TYPE_GENERIC_I2C_1 = 0x11,
169 VOLTAGE_TYPE_GENERIC_I2C_2 = 0x12,
170 VOLTAGE_TYPE_GENERIC_I2C_3 = 0x13,
171 VOLTAGE_TYPE_GENERIC_I2C_4 = 0x14,
172 VOLTAGE_TYPE_GENERIC_I2C_5 = 0x15,
173 VOLTAGE_TYPE_GENERIC_I2C_6 = 0x16,
174 VOLTAGE_TYPE_GENERIC_I2C_7 = 0x17,
175 VOLTAGE_TYPE_GENERIC_I2C_8 = 0x18,
176 VOLTAGE_TYPE_GENERIC_I2C_9 = 0x19,
177 VOLTAGE_TYPE_GENERIC_I2C_10 = 0x1A,
178};
179
180enum atom_dgpu_vram_type {
181 ATOM_DGPU_VRAM_TYPE_GDDR5 = 0x50,
182 ATOM_DGPU_VRAM_TYPE_HBM2 = 0x60,
183 ATOM_DGPU_VRAM_TYPE_GDDR6 = 0x70,
184};
185
186enum atom_dp_vs_preemph_def{
187 DP_VS_LEVEL0_PREEMPH_LEVEL0 = 0x00,
188 DP_VS_LEVEL1_PREEMPH_LEVEL0 = 0x01,
189 DP_VS_LEVEL2_PREEMPH_LEVEL0 = 0x02,
190 DP_VS_LEVEL3_PREEMPH_LEVEL0 = 0x03,
191 DP_VS_LEVEL0_PREEMPH_LEVEL1 = 0x08,
192 DP_VS_LEVEL1_PREEMPH_LEVEL1 = 0x09,
193 DP_VS_LEVEL2_PREEMPH_LEVEL1 = 0x0a,
194 DP_VS_LEVEL0_PREEMPH_LEVEL2 = 0x10,
195 DP_VS_LEVEL1_PREEMPH_LEVEL2 = 0x11,
196 DP_VS_LEVEL0_PREEMPH_LEVEL3 = 0x18,
197};
198
199
200
201
202
203
204
205
206
207
208#pragma pack(1)
209
210enum atombios_image_offset{
211OFFSET_TO_ATOM_ROM_HEADER_POINTER =0x00000048,
212OFFSET_TO_ATOM_ROM_IMAGE_SIZE =0x00000002,
213OFFSET_TO_ATOMBIOS_ASIC_BUS_MEM_TYPE =0x94,
214MAXSIZE_OF_ATOMBIOS_ASIC_BUS_MEM_TYPE =20,
215OFFSET_TO_GET_ATOMBIOS_NUMBER_OF_STRINGS =0x2f,
216OFFSET_TO_GET_ATOMBIOS_STRING_START =0x6e,
217};
218
219
220
221
222
223
224
225struct atom_common_table_header
226{
227 uint16_t structuresize;
228 uint8_t format_revision;
229 uint8_t content_revision;
230};
231
232
233
234
235struct atom_rom_header_v2_2
236{
237 struct atom_common_table_header table_header;
238 uint8_t atom_bios_string[4];
239 uint16_t bios_segment_address;
240 uint16_t protectedmodeoffset;
241 uint16_t configfilenameoffset;
242 uint16_t crc_block_offset;
243 uint16_t vbios_bootupmessageoffset;
244 uint16_t int10_offset;
245 uint16_t pcibusdevinitcode;
246 uint16_t iobaseaddress;
247 uint16_t subsystem_vendor_id;
248 uint16_t subsystem_id;
249 uint16_t pci_info_offset;
250 uint16_t masterhwfunction_offset;
251 uint16_t masterdatatable_offset;
252 uint16_t reserved;
253 uint32_t pspdirtableoffset;
254};
255
256
257
258
259
260
261
262
263
264struct atom_master_list_of_command_functions_v2_1{
265 uint16_t asic_init;
266 uint16_t cmd_function1;
267 uint16_t cmd_function2;
268 uint16_t cmd_function3;
269 uint16_t digxencodercontrol;
270 uint16_t cmd_function5;
271 uint16_t cmd_function6;
272 uint16_t cmd_function7;
273 uint16_t cmd_function8;
274 uint16_t cmd_function9;
275 uint16_t setengineclock;
276 uint16_t setmemoryclock;
277 uint16_t setpixelclock;
278 uint16_t enabledisppowergating;
279 uint16_t cmd_function14;
280 uint16_t cmd_function15;
281 uint16_t cmd_function16;
282 uint16_t cmd_function17;
283 uint16_t cmd_function18;
284 uint16_t cmd_function19;
285 uint16_t cmd_function20;
286 uint16_t cmd_function21;
287 uint16_t cmd_function22;
288 uint16_t cmd_function23;
289 uint16_t cmd_function24;
290 uint16_t cmd_function25;
291 uint16_t cmd_function26;
292 uint16_t cmd_function27;
293 uint16_t cmd_function28;
294 uint16_t cmd_function29;
295 uint16_t cmd_function30;
296 uint16_t cmd_function31;
297 uint16_t cmd_function32;
298 uint16_t cmd_function33;
299 uint16_t blankcrtc;
300 uint16_t enablecrtc;
301 uint16_t cmd_function36;
302 uint16_t cmd_function37;
303 uint16_t cmd_function38;
304 uint16_t cmd_function39;
305 uint16_t cmd_function40;
306 uint16_t getsmuclockinfo;
307 uint16_t selectcrtc_source;
308 uint16_t cmd_function43;
309 uint16_t cmd_function44;
310 uint16_t cmd_function45;
311 uint16_t setdceclock;
312 uint16_t getmemoryclock;
313 uint16_t getengineclock;
314 uint16_t setcrtc_usingdtdtiming;
315 uint16_t externalencodercontrol;
316 uint16_t cmd_function51;
317 uint16_t cmd_function52;
318 uint16_t cmd_function53;
319 uint16_t processi2cchanneltransaction;
320 uint16_t cmd_function55;
321 uint16_t cmd_function56;
322 uint16_t cmd_function57;
323 uint16_t cmd_function58;
324 uint16_t cmd_function59;
325 uint16_t computegpuclockparam;
326 uint16_t cmd_function61;
327 uint16_t cmd_function62;
328 uint16_t dynamicmemorysettings;
329 uint16_t memorytraining;
330 uint16_t cmd_function65;
331 uint16_t cmd_function66;
332 uint16_t setvoltage;
333 uint16_t cmd_function68;
334 uint16_t readefusevalue;
335 uint16_t cmd_function70;
336 uint16_t cmd_function71;
337 uint16_t cmd_function72;
338 uint16_t cmd_function73;
339 uint16_t cmd_function74;
340 uint16_t cmd_function75;
341 uint16_t dig1transmittercontrol;
342 uint16_t cmd_function77;
343 uint16_t processauxchanneltransaction;
344 uint16_t cmd_function79;
345 uint16_t getvoltageinfo;
346};
347
348struct atom_master_command_function_v2_1
349{
350 struct atom_common_table_header table_header;
351 struct atom_master_list_of_command_functions_v2_1 listofcmdfunctions;
352};
353
354
355
356
357struct atom_function_attribute
358{
359 uint16_t ws_in_bytes:8;
360 uint16_t ps_in_bytes:7;
361 uint16_t updated_by_util:1;
362};
363
364
365
366
367
368
369
370struct atom_rom_hw_function_header
371{
372 struct atom_common_table_header func_header;
373 struct atom_function_attribute func_attrib;
374};
375
376
377
378
379
380
381
382struct atom_master_list_of_data_tables_v2_1{
383 uint16_t utilitypipeline;
384 uint16_t multimedia_info;
385 uint16_t smc_dpm_info;
386 uint16_t sw_datatable3;
387 uint16_t firmwareinfo;
388 uint16_t sw_datatable5;
389 uint16_t lcd_info;
390 uint16_t sw_datatable7;
391 uint16_t smu_info;
392 uint16_t sw_datatable9;
393 uint16_t sw_datatable10;
394 uint16_t vram_usagebyfirmware;
395 uint16_t gpio_pin_lut;
396 uint16_t sw_datatable13;
397 uint16_t gfx_info;
398 uint16_t powerplayinfo;
399 uint16_t sw_datatable16;
400 uint16_t sw_datatable17;
401 uint16_t sw_datatable18;
402 uint16_t sw_datatable19;
403 uint16_t sw_datatable20;
404 uint16_t sw_datatable21;
405 uint16_t displayobjectinfo;
406 uint16_t indirectioaccess;
407 uint16_t umc_info;
408 uint16_t sw_datatable25;
409 uint16_t sw_datatable26;
410 uint16_t dce_info;
411 uint16_t vram_info;
412 uint16_t sw_datatable29;
413 uint16_t integratedsysteminfo;
414 uint16_t asic_profiling_info;
415 uint16_t voltageobject_info;
416 uint16_t sw_datatable33;
417 uint16_t sw_datatable34;
418};
419
420
421struct atom_master_data_table_v2_1
422{
423 struct atom_common_table_header table_header;
424 struct atom_master_list_of_data_tables_v2_1 listOfdatatables;
425};
426
427
428struct atom_dtd_format
429{
430 uint16_t pixclk;
431 uint16_t h_active;
432 uint16_t h_blanking_time;
433 uint16_t v_active;
434 uint16_t v_blanking_time;
435 uint16_t h_sync_offset;
436 uint16_t h_sync_width;
437 uint16_t v_sync_offset;
438 uint16_t v_syncwidth;
439 uint16_t reserved;
440 uint16_t reserved0;
441 uint8_t h_border;
442 uint8_t v_border;
443 uint16_t miscinfo;
444 uint8_t atom_mode_id;
445 uint8_t refreshrate;
446};
447
448
449enum atom_dtd_format_modemiscinfo{
450 ATOM_HSYNC_POLARITY = 0x0002,
451 ATOM_VSYNC_POLARITY = 0x0004,
452 ATOM_H_REPLICATIONBY2 = 0x0010,
453 ATOM_V_REPLICATIONBY2 = 0x0020,
454 ATOM_INTERLACE = 0x0080,
455 ATOM_COMPOSITESYNC = 0x0040,
456};
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471struct atom_firmware_info_v3_1
472{
473 struct atom_common_table_header table_header;
474 uint32_t firmware_revision;
475 uint32_t bootup_sclk_in10khz;
476 uint32_t bootup_mclk_in10khz;
477 uint32_t firmware_capability;
478 uint32_t main_call_parser_entry;
479 uint32_t bios_scratch_reg_startaddr;
480 uint16_t bootup_vddc_mv;
481 uint16_t bootup_vddci_mv;
482 uint16_t bootup_mvddc_mv;
483 uint16_t bootup_vddgfx_mv;
484 uint8_t mem_module_id;
485 uint8_t coolingsolution_id;
486 uint8_t reserved1[2];
487 uint32_t mc_baseaddr_high;
488 uint32_t mc_baseaddr_low;
489 uint32_t reserved2[6];
490};
491
492
493enum atombios_firmware_capability
494{
495 ATOM_FIRMWARE_CAP_FIRMWARE_POSTED = 0x00000001,
496 ATOM_FIRMWARE_CAP_GPU_VIRTUALIZATION = 0x00000002,
497 ATOM_FIRMWARE_CAP_WMI_SUPPORT = 0x00000040,
498 ATOM_FIRMWARE_CAP_HWEMU_ENABLE = 0x00000080,
499 ATOM_FIRMWARE_CAP_HWEMU_UMC_CFG = 0x00000100,
500 ATOM_FIRMWARE_CAP_SRAM_ECC = 0x00000200,
501 ATOM_FIRMWARE_CAP_ENABLE_2STAGE_BIST_TRAINING = 0x00000400,
502};
503
504enum atom_cooling_solution_id{
505 AIR_COOLING = 0x00,
506 LIQUID_COOLING = 0x01
507};
508
509struct atom_firmware_info_v3_2 {
510 struct atom_common_table_header table_header;
511 uint32_t firmware_revision;
512 uint32_t bootup_sclk_in10khz;
513 uint32_t bootup_mclk_in10khz;
514 uint32_t firmware_capability;
515 uint32_t main_call_parser_entry;
516 uint32_t bios_scratch_reg_startaddr;
517 uint16_t bootup_vddc_mv;
518 uint16_t bootup_vddci_mv;
519 uint16_t bootup_mvddc_mv;
520 uint16_t bootup_vddgfx_mv;
521 uint8_t mem_module_id;
522 uint8_t coolingsolution_id;
523 uint8_t reserved1[2];
524 uint32_t mc_baseaddr_high;
525 uint32_t mc_baseaddr_low;
526 uint8_t board_i2c_feature_id;
527 uint8_t board_i2c_feature_gpio_id;
528 uint8_t board_i2c_feature_slave_addr;
529 uint8_t reserved3;
530 uint16_t bootup_mvddq_mv;
531 uint16_t bootup_mvpp_mv;
532 uint32_t zfbstartaddrin16mb;
533 uint32_t reserved2[3];
534};
535
536struct atom_firmware_info_v3_3
537{
538 struct atom_common_table_header table_header;
539 uint32_t firmware_revision;
540 uint32_t bootup_sclk_in10khz;
541 uint32_t bootup_mclk_in10khz;
542 uint32_t firmware_capability;
543 uint32_t main_call_parser_entry;
544 uint32_t bios_scratch_reg_startaddr;
545 uint16_t bootup_vddc_mv;
546 uint16_t bootup_vddci_mv;
547 uint16_t bootup_mvddc_mv;
548 uint16_t bootup_vddgfx_mv;
549 uint8_t mem_module_id;
550 uint8_t coolingsolution_id;
551 uint8_t reserved1[2];
552 uint32_t mc_baseaddr_high;
553 uint32_t mc_baseaddr_low;
554 uint8_t board_i2c_feature_id;
555 uint8_t board_i2c_feature_gpio_id;
556 uint8_t board_i2c_feature_slave_addr;
557 uint8_t reserved3;
558 uint16_t bootup_mvddq_mv;
559 uint16_t bootup_mvpp_mv;
560 uint32_t zfbstartaddrin16mb;
561 uint32_t pplib_pptable_id;
562 uint32_t reserved2[2];
563};
564
565
566
567
568
569
570
571struct lcd_info_v2_1
572{
573 struct atom_common_table_header table_header;
574 struct atom_dtd_format lcd_timing;
575 uint16_t backlight_pwm;
576 uint16_t special_handle_cap;
577 uint16_t panel_misc;
578 uint16_t lvds_max_slink_pclk;
579 uint16_t lvds_ss_percentage;
580 uint16_t lvds_ss_rate_10hz;
581 uint8_t pwr_on_digon_to_de;
582 uint8_t pwr_on_de_to_vary_bl;
583 uint8_t pwr_down_vary_bloff_to_de;
584 uint8_t pwr_down_de_to_digoff;
585 uint8_t pwr_off_delay;
586 uint8_t pwr_on_vary_bl_to_blon;
587 uint8_t pwr_down_bloff_to_vary_bloff;
588 uint8_t panel_bpc;
589 uint8_t dpcd_edp_config_cap;
590 uint8_t dpcd_max_link_rate;
591 uint8_t dpcd_max_lane_count;
592 uint8_t dpcd_max_downspread;
593 uint8_t min_allowed_bl_level;
594 uint8_t max_allowed_bl_level;
595 uint8_t bootup_bl_level;
596 uint8_t dplvdsrxid;
597 uint32_t reserved1[8];
598};
599
600
601enum atom_lcd_info_panel_misc{
602 ATOM_PANEL_MISC_FPDI =0x0002,
603};
604
605
606enum atom_lcd_info_dptolvds_rx_id
607{
608 eDP_TO_LVDS_RX_DISABLE = 0x00,
609 eDP_TO_LVDS_COMMON_ID = 0x01,
610 eDP_TO_LVDS_REALTEK_ID = 0x02,
611};
612
613
614
615
616
617
618
619
620struct atom_gpio_pin_assignment
621{
622 uint32_t data_a_reg_index;
623 uint8_t gpio_bitshift;
624 uint8_t gpio_mask_bitshift;
625 uint8_t gpio_id;
626 uint8_t reserved;
627};
628
629
630enum atom_gpio_pin_assignment_gpio_id {
631 I2C_HW_LANE_MUX =0x0f,
632 I2C_HW_ENGINE_ID_MASK =0x70,
633 I2C_HW_CAP =0x80,
634
635
636
637 PCIE_VDDC_CONTROL_GPIO_PINID = 56,
638
639 PP_AC_DC_SWITCH_GPIO_PINID = 60,
640
641 VDDC_VRHOT_GPIO_PINID = 61,
642
643 VDDC_PCC_GPIO_PINID = 62,
644
645 EFUSE_CUT_ENABLE_GPIO_PINID = 63,
646
647 DRAM_SELF_REFRESH_GPIO_PINID = 64,
648
649 THERMAL_INT_OUTPUT_GPIO_PINID =65,
650};
651
652
653struct atom_gpio_pin_lut_v2_1
654{
655 struct atom_common_table_header table_header;
656
657 struct atom_gpio_pin_assignment gpio_pin[8];
658};
659
660
661
662
663
664
665
666
667struct vram_usagebyfirmware_v2_1
668{
669 struct atom_common_table_header table_header;
670 uint32_t start_address_in_kb;
671 uint16_t used_by_firmware_in_kb;
672 uint16_t used_by_driver_in_kb;
673};
674
675
676
677
678
679
680
681
682enum atom_object_record_type_id
683{
684 ATOM_I2C_RECORD_TYPE =1,
685 ATOM_HPD_INT_RECORD_TYPE =2,
686 ATOM_OBJECT_GPIO_CNTL_RECORD_TYPE =9,
687 ATOM_CONNECTOR_HPDPIN_LUT_RECORD_TYPE =16,
688 ATOM_CONNECTOR_AUXDDC_LUT_RECORD_TYPE =17,
689 ATOM_ENCODER_CAP_RECORD_TYPE=20,
690 ATOM_BRACKET_LAYOUT_RECORD_TYPE=21,
691 ATOM_CONNECTOR_FORCED_TMDS_CAP_RECORD_TYPE=22,
692 ATOM_RECORD_END_TYPE =0xFF,
693};
694
695struct atom_common_record_header
696{
697 uint8_t record_type;
698 uint8_t record_size;
699};
700
701struct atom_i2c_record
702{
703 struct atom_common_record_header record_header;
704 uint8_t i2c_id;
705 uint8_t i2c_slave_addr;
706};
707
708struct atom_hpd_int_record
709{
710 struct atom_common_record_header record_header;
711 uint8_t pin_id;
712 uint8_t plugin_pin_state;
713};
714
715
716enum atom_encoder_caps_def
717{
718 ATOM_ENCODER_CAP_RECORD_HBR2 =0x01,
719 ATOM_ENCODER_CAP_RECORD_MST_EN =0x01,
720 ATOM_ENCODER_CAP_RECORD_HBR2_EN =0x02,
721 ATOM_ENCODER_CAP_RECORD_HDMI6Gbps_EN =0x04,
722 ATOM_ENCODER_CAP_RECORD_HBR3_EN =0x08,
723 ATOM_ENCODER_CAP_RECORD_USB_C_TYPE =0x100,
724};
725
726struct atom_encoder_caps_record
727{
728 struct atom_common_record_header record_header;
729 uint32_t encodercaps;
730};
731
732enum atom_connector_caps_def
733{
734 ATOM_CONNECTOR_CAP_INTERNAL_DISPLAY = 0x01,
735 ATOM_CONNECTOR_CAP_INTERNAL_DISPLAY_BL = 0x02,
736};
737
738struct atom_disp_connector_caps_record
739{
740 struct atom_common_record_header record_header;
741 uint32_t connectcaps;
742};
743
744
745struct atom_gpio_pin_control_pair
746{
747 uint8_t gpio_id;
748 uint8_t gpio_pinstate;
749};
750
751struct atom_object_gpio_cntl_record
752{
753 struct atom_common_record_header record_header;
754 uint8_t flag;
755 uint8_t number_of_pins;
756 struct atom_gpio_pin_control_pair gpio[1];
757};
758
759
760enum atom_gpio_pin_control_pinstate_def
761{
762 GPIO_PIN_TYPE_INPUT = 0x00,
763 GPIO_PIN_TYPE_OUTPUT = 0x10,
764 GPIO_PIN_TYPE_HW_CONTROL = 0x20,
765
766
767 GPIO_PIN_OUTPUT_STATE_MASK = 0x01,
768 GPIO_PIN_OUTPUT_STATE_SHIFT = 0,
769 GPIO_PIN_STATE_ACTIVE_LOW = 0x0,
770 GPIO_PIN_STATE_ACTIVE_HIGH = 0x1,
771};
772
773
774
775enum atom_glsync_record_gpio_index_def
776{
777 ATOM_GPIO_INDEX_GLSYNC_REFCLK = 0,
778 ATOM_GPIO_INDEX_GLSYNC_HSYNC = 1,
779 ATOM_GPIO_INDEX_GLSYNC_VSYNC = 2,
780 ATOM_GPIO_INDEX_GLSYNC_SWAP_REQ = 3,
781 ATOM_GPIO_INDEX_GLSYNC_SWAP_GNT = 4,
782 ATOM_GPIO_INDEX_GLSYNC_INTERRUPT = 5,
783 ATOM_GPIO_INDEX_GLSYNC_V_RESET = 6,
784 ATOM_GPIO_INDEX_GLSYNC_SWAP_CNTL = 7,
785 ATOM_GPIO_INDEX_GLSYNC_SWAP_SEL = 8,
786 ATOM_GPIO_INDEX_GLSYNC_MAX = 9,
787};
788
789
790struct atom_connector_hpdpin_lut_record
791{
792 struct atom_common_record_header record_header;
793 uint8_t hpd_pin_map[8];
794};
795
796struct atom_connector_auxddc_lut_record
797{
798 struct atom_common_record_header record_header;
799 uint8_t aux_ddc_map[8];
800};
801
802struct atom_connector_forced_tmds_cap_record
803{
804 struct atom_common_record_header record_header;
805
806 uint8_t maxtmdsclkrate_in2_5mhz;
807 uint8_t reserved;
808};
809
810struct atom_connector_layout_info
811{
812 uint16_t connectorobjid;
813 uint8_t connector_type;
814 uint8_t position;
815};
816
817
818enum atom_connector_layout_info_connector_type_def
819{
820 CONNECTOR_TYPE_DVI_D = 1,
821
822 CONNECTOR_TYPE_HDMI = 4,
823 CONNECTOR_TYPE_DISPLAY_PORT = 5,
824 CONNECTOR_TYPE_MINI_DISPLAY_PORT = 6,
825};
826
827struct atom_bracket_layout_record
828{
829 struct atom_common_record_header record_header;
830 uint8_t bracketlen;
831 uint8_t bracketwidth;
832 uint8_t conn_num;
833 uint8_t reserved;
834 struct atom_connector_layout_info conn_info[1];
835};
836
837enum atom_display_device_tag_def{
838 ATOM_DISPLAY_LCD1_SUPPORT = 0x0002,
839 ATOM_DISPLAY_DFP1_SUPPORT = 0x0008,
840 ATOM_DISPLAY_DFP2_SUPPORT = 0x0080,
841 ATOM_DISPLAY_DFP3_SUPPORT = 0x0200,
842 ATOM_DISPLAY_DFP4_SUPPORT = 0x0400,
843 ATOM_DISPLAY_DFP5_SUPPORT = 0x0800,
844 ATOM_DISPLAY_DFP6_SUPPORT = 0x0040,
845 ATOM_DISPLAY_DFPx_SUPPORT = 0x0ec8,
846};
847
848struct atom_display_object_path_v2
849{
850 uint16_t display_objid;
851 uint16_t disp_recordoffset;
852 uint16_t encoderobjid;
853 uint16_t extencoderobjid;
854 uint16_t encoder_recordoffset;
855 uint16_t extencoder_recordoffset;
856 uint16_t device_tag;
857 uint8_t priority_id;
858 uint8_t reserved;
859};
860
861struct display_object_info_table_v1_4
862{
863 struct atom_common_table_header table_header;
864 uint16_t supporteddevices;
865 uint8_t number_of_path;
866 uint8_t reserved;
867 struct atom_display_object_path_v2 display_path[8];
868};
869
870
871
872
873
874
875
876struct atom_display_controller_info_v4_1
877{
878 struct atom_common_table_header table_header;
879 uint32_t display_caps;
880 uint32_t bootup_dispclk_10khz;
881 uint16_t dce_refclk_10khz;
882 uint16_t i2c_engine_refclk_10khz;
883 uint16_t dvi_ss_percentage;
884 uint16_t dvi_ss_rate_10hz;
885 uint16_t hdmi_ss_percentage;
886 uint16_t hdmi_ss_rate_10hz;
887 uint16_t dp_ss_percentage;
888 uint16_t dp_ss_rate_10hz;
889 uint8_t dvi_ss_mode;
890 uint8_t hdmi_ss_mode;
891 uint8_t dp_ss_mode;
892 uint8_t ss_reserved;
893 uint8_t hardcode_mode_num;
894 uint8_t reserved1[3];
895 uint16_t dpphy_refclk_10khz;
896 uint16_t reserved2;
897 uint8_t dceip_min_ver;
898 uint8_t dceip_max_ver;
899 uint8_t max_disp_pipe_num;
900 uint8_t max_vbios_active_disp_pipe_num;
901 uint8_t max_ppll_num;
902 uint8_t max_disp_phy_num;
903 uint8_t max_aux_pairs;
904 uint8_t remotedisplayconfig;
905 uint8_t reserved3[8];
906};
907
908
909struct atom_display_controller_info_v4_2
910{
911 struct atom_common_table_header table_header;
912 uint32_t display_caps;
913 uint32_t bootup_dispclk_10khz;
914 uint16_t dce_refclk_10khz;
915 uint16_t i2c_engine_refclk_10khz;
916 uint16_t dvi_ss_percentage;
917 uint16_t dvi_ss_rate_10hz;
918 uint16_t hdmi_ss_percentage;
919 uint16_t hdmi_ss_rate_10hz;
920 uint16_t dp_ss_percentage;
921 uint16_t dp_ss_rate_10hz;
922 uint8_t dvi_ss_mode;
923 uint8_t hdmi_ss_mode;
924 uint8_t dp_ss_mode;
925 uint8_t ss_reserved;
926 uint8_t dfp_hardcode_mode_num;
927 uint8_t dfp_hardcode_refreshrate;
928 uint8_t vga_hardcode_mode_num;
929 uint8_t vga_hardcode_refreshrate;
930 uint16_t dpphy_refclk_10khz;
931 uint16_t reserved2;
932 uint8_t dcnip_min_ver;
933 uint8_t dcnip_max_ver;
934 uint8_t max_disp_pipe_num;
935 uint8_t max_vbios_active_disp_pipe_num;
936 uint8_t max_ppll_num;
937 uint8_t max_disp_phy_num;
938 uint8_t max_aux_pairs;
939 uint8_t remotedisplayconfig;
940 uint8_t reserved3[8];
941};
942
943
944enum dce_info_caps_def
945{
946
947 DCE_INFO_CAPS_FORCE_DISPDEV_CONNECTED =0x02,
948
949 DCE_INFO_CAPS_DISABLE_DFP_DP_HBR2 =0x04,
950
951 DCE_INFO_CAPS_ENABLE_INTERLAC_TIMING =0x08,
952
953};
954
955
956
957
958
959
960struct atom_ext_display_path
961{
962 uint16_t device_tag;
963 uint16_t device_acpi_enum;
964 uint16_t connectorobjid;
965 uint8_t auxddclut_index;
966 uint8_t hpdlut_index;
967 uint16_t ext_encoder_objid;
968 uint8_t channelmapping;
969 uint8_t chpninvert;
970 uint16_t caps;
971 uint16_t reserved;
972};
973
974
975enum ext_display_path_cap_def
976{
977 EXT_DISPLAY_PATH_CAPS__HBR2_DISABLE =0x0001,
978 EXT_DISPLAY_PATH_CAPS__DP_FIXED_VS_EN =0x0002,
979 EXT_DISPLAY_PATH_CAPS__EXT_CHIP_MASK =0x007C,
980};
981
982struct atom_external_display_connection_info
983{
984 struct atom_common_table_header table_header;
985 uint8_t guid[16];
986 struct atom_ext_display_path path[7];
987 uint8_t checksum;
988 uint8_t stereopinid;
989 uint8_t remotedisplayconfig;
990 uint8_t edptolvdsrxid;
991 uint8_t fixdpvoltageswing;
992 uint8_t reserved[3];
993};
994
995
996
997
998
999
1000
1001struct atom_camera_dphy_timing_param
1002{
1003 uint8_t profile_id;
1004 uint32_t param;
1005};
1006
1007struct atom_camera_dphy_elec_param
1008{
1009 uint16_t param[3];
1010};
1011
1012struct atom_camera_module_info
1013{
1014 uint8_t module_id;
1015 uint8_t module_name[8];
1016 struct atom_camera_dphy_timing_param timingparam[6];
1017};
1018
1019struct atom_camera_flashlight_info
1020{
1021 uint8_t flashlight_id;
1022 uint8_t name[8];
1023};
1024
1025struct atom_camera_data
1026{
1027 uint32_t versionCode;
1028 struct atom_camera_module_info cameraInfo[3];
1029 struct atom_camera_flashlight_info flashInfo;
1030 struct atom_camera_dphy_elec_param dphy_param;
1031 uint32_t crc_val;
1032};
1033
1034
1035struct atom_14nm_dpphy_dvihdmi_tuningset
1036{
1037 uint32_t max_symclk_in10khz;
1038 uint8_t encoder_mode;
1039 uint8_t phy_sel;
1040 uint16_t margindeemph;
1041 uint8_t deemph_6db_4;
1042 uint8_t boostadj;
1043 uint8_t tx_driver_fifty_ohms;
1044 uint8_t deemph_sel;
1045};
1046
1047struct atom_14nm_dpphy_dp_setting{
1048 uint8_t dp_vs_pemph_level;
1049 uint16_t margindeemph;
1050 uint8_t deemph_6db_4;
1051 uint8_t boostadj;
1052};
1053
1054struct atom_14nm_dpphy_dp_tuningset{
1055 uint8_t phy_sel;
1056 uint8_t version;
1057 uint16_t table_size;
1058 uint16_t reserved;
1059 struct atom_14nm_dpphy_dp_setting dptuning[10];
1060};
1061
1062struct atom_14nm_dig_transmitter_info_header_v4_0{
1063 struct atom_common_table_header table_header;
1064 uint16_t pcie_phy_tmds_hdmi_macro_settings_offset;
1065 uint16_t uniphy_vs_emph_lookup_table_offset;
1066 uint16_t uniphy_xbar_settings_table_offset;
1067};
1068
1069struct atom_14nm_combphy_tmds_vs_set
1070{
1071 uint8_t sym_clk;
1072 uint8_t dig_mode;
1073 uint8_t phy_sel;
1074 uint16_t common_mar_deemph_nom__margin_deemph_val;
1075 uint8_t common_seldeemph60__deemph_6db_4_val;
1076 uint8_t cmd_bus_global_for_tx_lane0__boostadj_val ;
1077 uint8_t common_zcalcode_ctrl__tx_driver_fifty_ohms_val;
1078 uint8_t margin_deemph_lane0__deemph_sel_val;
1079};
1080
1081struct atom_i2c_reg_info {
1082 uint8_t ucI2cRegIndex;
1083 uint8_t ucI2cRegVal;
1084};
1085
1086struct atom_hdmi_retimer_redriver_set {
1087 uint8_t HdmiSlvAddr;
1088 uint8_t HdmiRegNum;
1089 uint8_t Hdmi6GRegNum;
1090 struct atom_i2c_reg_info HdmiRegSetting[9];
1091 struct atom_i2c_reg_info Hdmi6GhzRegSetting[3];
1092};
1093
1094struct atom_integrated_system_info_v1_11
1095{
1096 struct atom_common_table_header table_header;
1097 uint32_t vbios_misc;
1098 uint32_t gpucapinfo;
1099 uint32_t system_config;
1100 uint32_t cpucapinfo;
1101 uint16_t gpuclk_ss_percentage;
1102 uint16_t gpuclk_ss_type;
1103 uint16_t lvds_ss_percentage;
1104 uint16_t lvds_ss_rate_10hz;
1105 uint16_t hdmi_ss_percentage;
1106 uint16_t hdmi_ss_rate_10hz;
1107 uint16_t dvi_ss_percentage;
1108 uint16_t dvi_ss_rate_10hz;
1109 uint16_t dpphy_override;
1110 uint16_t lvds_misc;
1111 uint16_t backlight_pwm_hz;
1112 uint8_t memorytype;
1113 uint8_t umachannelnumber;
1114 uint8_t pwr_on_digon_to_de;
1115 uint8_t pwr_on_de_to_vary_bl;
1116 uint8_t pwr_down_vary_bloff_to_de;
1117 uint8_t pwr_down_de_to_digoff;
1118 uint8_t pwr_off_delay;
1119 uint8_t pwr_on_vary_bl_to_blon;
1120 uint8_t pwr_down_bloff_to_vary_bloff;
1121 uint8_t min_allowed_bl_level;
1122 uint8_t htc_hyst_limit;
1123 uint8_t htc_tmp_limit;
1124 uint8_t reserved1;
1125 uint8_t reserved2;
1126 struct atom_external_display_connection_info extdispconninfo;
1127 struct atom_14nm_dpphy_dvihdmi_tuningset dvi_tuningset;
1128 struct atom_14nm_dpphy_dvihdmi_tuningset hdmi_tuningset;
1129 struct atom_14nm_dpphy_dvihdmi_tuningset hdmi6g_tuningset;
1130 struct atom_14nm_dpphy_dp_tuningset dp_tuningset;
1131 struct atom_14nm_dpphy_dp_tuningset dp_hbr3_tuningset;
1132 struct atom_camera_data camera_info;
1133 struct atom_hdmi_retimer_redriver_set dp0_retimer_set;
1134 struct atom_hdmi_retimer_redriver_set dp1_retimer_set;
1135 struct atom_hdmi_retimer_redriver_set dp2_retimer_set;
1136 struct atom_hdmi_retimer_redriver_set dp3_retimer_set;
1137 struct atom_14nm_dpphy_dp_tuningset dp_hbr_tuningset;
1138 struct atom_14nm_dpphy_dp_tuningset dp_hbr2_tuningset;
1139 struct atom_14nm_dpphy_dp_tuningset edp_tuningset;
1140 uint32_t reserved[66];
1141};
1142
1143
1144
1145enum atom_system_vbiosmisc_def{
1146 INTEGRATED_SYSTEM_INFO__GET_EDID_CALLBACK_FUNC_SUPPORT = 0x01,
1147};
1148
1149
1150
1151enum atom_system_gpucapinf_def{
1152 SYS_INFO_GPUCAPS__ENABEL_DFS_BYPASS = 0x10,
1153};
1154
1155
1156enum atom_sysinfo_dpphy_override_def{
1157 ATOM_ENABLE_DVI_TUNINGSET = 0x01,
1158 ATOM_ENABLE_HDMI_TUNINGSET = 0x02,
1159 ATOM_ENABLE_HDMI6G_TUNINGSET = 0x04,
1160 ATOM_ENABLE_DP_TUNINGSET = 0x08,
1161 ATOM_ENABLE_DP_HBR3_TUNINGSET = 0x10,
1162};
1163
1164
1165enum atom_sys_info_lvds_misc_def
1166{
1167 SYS_INFO_LVDS_MISC_888_FPDI_MODE =0x01,
1168 SYS_INFO_LVDS_MISC_888_BPC_MODE =0x04,
1169 SYS_INFO_LVDS_MISC_OVERRIDE_EN =0x08,
1170};
1171
1172
1173
1174enum atom_dmi_t17_mem_type_def{
1175 OtherMemType = 0x01,
1176 UnknownMemType,
1177 DramMemType,
1178 EdramMemType,
1179 VramMemType,
1180 SramMemType,
1181 RamMemType,
1182 RomMemType,
1183 FlashMemType,
1184 EepromMemType,
1185 FepromMemType,
1186 EpromMemType,
1187 CdramMemType,
1188 ThreeDramMemType,
1189 SdramMemType,
1190 SgramMemType,
1191 RdramMemType,
1192 DdrMemType,
1193 Ddr2MemType,
1194 Ddr2FbdimmMemType,
1195 Ddr3MemType = 0x18,
1196 Fbd2MemType,
1197 Ddr4MemType,
1198 LpDdrMemType,
1199 LpDdr2MemType,
1200 LpDdr3MemType,
1201 LpDdr4MemType,
1202};
1203
1204
1205
1206struct atom_fusion_system_info_v4
1207{
1208 struct atom_integrated_system_info_v1_11 sysinfo;
1209 uint32_t powerplayinfo[256];
1210};
1211
1212
1213
1214
1215
1216
1217
1218
1219struct atom_gfx_info_v2_2
1220{
1221 struct atom_common_table_header table_header;
1222 uint8_t gfxip_min_ver;
1223 uint8_t gfxip_max_ver;
1224 uint8_t max_shader_engines;
1225 uint8_t max_tile_pipes;
1226 uint8_t max_cu_per_sh;
1227 uint8_t max_sh_per_se;
1228 uint8_t max_backends_per_se;
1229 uint8_t max_texture_channel_caches;
1230 uint32_t regaddr_cp_dma_src_addr;
1231 uint32_t regaddr_cp_dma_src_addr_hi;
1232 uint32_t regaddr_cp_dma_dst_addr;
1233 uint32_t regaddr_cp_dma_dst_addr_hi;
1234 uint32_t regaddr_cp_dma_command;
1235 uint32_t regaddr_cp_status;
1236 uint32_t regaddr_rlc_gpu_clock_32;
1237 uint32_t rlc_gpu_timer_refclk;
1238};
1239
1240struct atom_gfx_info_v2_3 {
1241 struct atom_common_table_header table_header;
1242 uint8_t gfxip_min_ver;
1243 uint8_t gfxip_max_ver;
1244 uint8_t max_shader_engines;
1245 uint8_t max_tile_pipes;
1246 uint8_t max_cu_per_sh;
1247 uint8_t max_sh_per_se;
1248 uint8_t max_backends_per_se;
1249 uint8_t max_texture_channel_caches;
1250 uint32_t regaddr_cp_dma_src_addr;
1251 uint32_t regaddr_cp_dma_src_addr_hi;
1252 uint32_t regaddr_cp_dma_dst_addr;
1253 uint32_t regaddr_cp_dma_dst_addr_hi;
1254 uint32_t regaddr_cp_dma_command;
1255 uint32_t regaddr_cp_status;
1256 uint32_t regaddr_rlc_gpu_clock_32;
1257 uint32_t rlc_gpu_timer_refclk;
1258 uint8_t active_cu_per_sh;
1259 uint8_t active_rb_per_se;
1260 uint16_t gcgoldenoffset;
1261 uint32_t rm21_sram_vmin_value;
1262};
1263
1264struct atom_gfx_info_v2_4
1265{
1266 struct atom_common_table_header table_header;
1267 uint8_t gfxip_min_ver;
1268 uint8_t gfxip_max_ver;
1269 uint8_t max_shader_engines;
1270 uint8_t reserved;
1271 uint8_t max_cu_per_sh;
1272 uint8_t max_sh_per_se;
1273 uint8_t max_backends_per_se;
1274 uint8_t max_texture_channel_caches;
1275 uint32_t regaddr_cp_dma_src_addr;
1276 uint32_t regaddr_cp_dma_src_addr_hi;
1277 uint32_t regaddr_cp_dma_dst_addr;
1278 uint32_t regaddr_cp_dma_dst_addr_hi;
1279 uint32_t regaddr_cp_dma_command;
1280 uint32_t regaddr_cp_status;
1281 uint32_t regaddr_rlc_gpu_clock_32;
1282 uint32_t rlc_gpu_timer_refclk;
1283 uint8_t active_cu_per_sh;
1284 uint8_t active_rb_per_se;
1285 uint16_t gcgoldenoffset;
1286 uint16_t gc_num_gprs;
1287 uint16_t gc_gsprim_buff_depth;
1288 uint16_t gc_parameter_cache_depth;
1289 uint16_t gc_wave_size;
1290 uint16_t gc_max_waves_per_simd;
1291 uint16_t gc_lds_size;
1292 uint8_t gc_num_max_gs_thds;
1293 uint8_t gc_gs_table_depth;
1294 uint8_t gc_double_offchip_lds_buffer;
1295 uint8_t gc_max_scratch_slots_per_cu;
1296 uint32_t sram_rm_fuses_val;
1297 uint32_t sram_custom_rm_fuses_val;
1298};
1299
1300
1301
1302
1303
1304
1305struct atom_smu_info_v3_1
1306{
1307 struct atom_common_table_header table_header;
1308 uint8_t smuip_min_ver;
1309 uint8_t smuip_max_ver;
1310 uint8_t smu_rsd1;
1311 uint8_t gpuclk_ss_mode;
1312 uint16_t sclk_ss_percentage;
1313 uint16_t sclk_ss_rate_10hz;
1314 uint16_t gpuclk_ss_percentage;
1315 uint16_t gpuclk_ss_rate_10hz;
1316 uint32_t core_refclk_10khz;
1317 uint8_t ac_dc_gpio_bit;
1318 uint8_t ac_dc_polarity;
1319 uint8_t vr0hot_gpio_bit;
1320 uint8_t vr0hot_polarity;
1321 uint8_t vr1hot_gpio_bit;
1322 uint8_t vr1hot_polarity;
1323 uint8_t fw_ctf_gpio_bit;
1324 uint8_t fw_ctf_polarity;
1325};
1326
1327struct atom_smu_info_v3_2 {
1328 struct atom_common_table_header table_header;
1329 uint8_t smuip_min_ver;
1330 uint8_t smuip_max_ver;
1331 uint8_t smu_rsd1;
1332 uint8_t gpuclk_ss_mode;
1333 uint16_t sclk_ss_percentage;
1334 uint16_t sclk_ss_rate_10hz;
1335 uint16_t gpuclk_ss_percentage;
1336 uint16_t gpuclk_ss_rate_10hz;
1337 uint32_t core_refclk_10khz;
1338 uint8_t ac_dc_gpio_bit;
1339 uint8_t ac_dc_polarity;
1340 uint8_t vr0hot_gpio_bit;
1341 uint8_t vr0hot_polarity;
1342 uint8_t vr1hot_gpio_bit;
1343 uint8_t vr1hot_polarity;
1344 uint8_t fw_ctf_gpio_bit;
1345 uint8_t fw_ctf_polarity;
1346 uint8_t pcc_gpio_bit;
1347 uint8_t pcc_gpio_polarity;
1348 uint16_t smugoldenoffset;
1349 uint32_t gpupll_vco_freq_10khz;
1350 uint32_t bootup_smnclk_10khz;
1351 uint32_t bootup_socclk_10khz;
1352 uint32_t bootup_mp0clk_10khz;
1353 uint32_t bootup_mp1clk_10khz;
1354 uint32_t bootup_lclk_10khz;
1355 uint32_t bootup_dcefclk_10khz;
1356 uint32_t ctf_threshold_override_value;
1357 uint32_t reserved[5];
1358};
1359
1360struct atom_smu_info_v3_3 {
1361 struct atom_common_table_header table_header;
1362 uint8_t smuip_min_ver;
1363 uint8_t smuip_max_ver;
1364 uint8_t waflclk_ss_mode;
1365 uint8_t gpuclk_ss_mode;
1366 uint16_t sclk_ss_percentage;
1367 uint16_t sclk_ss_rate_10hz;
1368 uint16_t gpuclk_ss_percentage;
1369 uint16_t gpuclk_ss_rate_10hz;
1370 uint32_t core_refclk_10khz;
1371 uint8_t ac_dc_gpio_bit;
1372 uint8_t ac_dc_polarity;
1373 uint8_t vr0hot_gpio_bit;
1374 uint8_t vr0hot_polarity;
1375 uint8_t vr1hot_gpio_bit;
1376 uint8_t vr1hot_polarity;
1377 uint8_t fw_ctf_gpio_bit;
1378 uint8_t fw_ctf_polarity;
1379 uint8_t pcc_gpio_bit;
1380 uint8_t pcc_gpio_polarity;
1381 uint16_t smugoldenoffset;
1382 uint32_t gpupll_vco_freq_10khz;
1383 uint32_t bootup_smnclk_10khz;
1384 uint32_t bootup_socclk_10khz;
1385 uint32_t bootup_mp0clk_10khz;
1386 uint32_t bootup_mp1clk_10khz;
1387 uint32_t bootup_lclk_10khz;
1388 uint32_t bootup_dcefclk_10khz;
1389 uint32_t ctf_threshold_override_value;
1390 uint32_t syspll3_0_vco_freq_10khz;
1391 uint32_t syspll3_1_vco_freq_10khz;
1392 uint32_t bootup_fclk_10khz;
1393 uint32_t bootup_waflclk_10khz;
1394 uint32_t smu_info_caps;
1395 uint16_t waflclk_ss_percentage;
1396 uint16_t smuinitoffset;
1397 uint32_t reserved;
1398};
1399
1400
1401
1402
1403
1404
1405struct atom_smc_dpm_info_v4_1
1406{
1407 struct atom_common_table_header table_header;
1408 uint8_t liquid1_i2c_address;
1409 uint8_t liquid2_i2c_address;
1410 uint8_t vr_i2c_address;
1411 uint8_t plx_i2c_address;
1412
1413 uint8_t liquid_i2c_linescl;
1414 uint8_t liquid_i2c_linesda;
1415 uint8_t vr_i2c_linescl;
1416 uint8_t vr_i2c_linesda;
1417
1418 uint8_t plx_i2c_linescl;
1419 uint8_t plx_i2c_linesda;
1420 uint8_t vrsensorpresent;
1421 uint8_t liquidsensorpresent;
1422
1423 uint16_t maxvoltagestepgfx;
1424 uint16_t maxvoltagestepsoc;
1425
1426 uint8_t vddgfxvrmapping;
1427 uint8_t vddsocvrmapping;
1428 uint8_t vddmem0vrmapping;
1429 uint8_t vddmem1vrmapping;
1430
1431 uint8_t gfxulvphasesheddingmask;
1432 uint8_t soculvphasesheddingmask;
1433 uint8_t padding8_v[2];
1434
1435 uint16_t gfxmaxcurrent;
1436 uint8_t gfxoffset;
1437 uint8_t padding_telemetrygfx;
1438
1439 uint16_t socmaxcurrent;
1440 uint8_t socoffset;
1441 uint8_t padding_telemetrysoc;
1442
1443 uint16_t mem0maxcurrent;
1444 uint8_t mem0offset;
1445 uint8_t padding_telemetrymem0;
1446
1447 uint16_t mem1maxcurrent;
1448 uint8_t mem1offset;
1449 uint8_t padding_telemetrymem1;
1450
1451 uint8_t acdcgpio;
1452 uint8_t acdcpolarity;
1453 uint8_t vr0hotgpio;
1454 uint8_t vr0hotpolarity;
1455
1456 uint8_t vr1hotgpio;
1457 uint8_t vr1hotpolarity;
1458 uint8_t padding1;
1459 uint8_t padding2;
1460
1461 uint8_t ledpin0;
1462 uint8_t ledpin1;
1463 uint8_t ledpin2;
1464 uint8_t padding8_4;
1465
1466 uint8_t pllgfxclkspreadenabled;
1467 uint8_t pllgfxclkspreadpercent;
1468 uint16_t pllgfxclkspreadfreq;
1469
1470 uint8_t uclkspreadenabled;
1471 uint8_t uclkspreadpercent;
1472 uint16_t uclkspreadfreq;
1473
1474 uint8_t socclkspreadenabled;
1475 uint8_t socclkspreadpercent;
1476 uint16_t socclkspreadfreq;
1477
1478 uint8_t acggfxclkspreadenabled;
1479 uint8_t acggfxclkspreadpercent;
1480 uint16_t acggfxclkspreadfreq;
1481
1482 uint8_t Vr2_I2C_address;
1483 uint8_t padding_vr2[3];
1484
1485 uint32_t boardreserved[9];
1486};
1487
1488
1489
1490
1491
1492
1493struct atom_smc_dpm_info_v4_3
1494{
1495 struct atom_common_table_header table_header;
1496 uint8_t liquid1_i2c_address;
1497 uint8_t liquid2_i2c_address;
1498 uint8_t vr_i2c_address;
1499 uint8_t plx_i2c_address;
1500
1501 uint8_t liquid_i2c_linescl;
1502 uint8_t liquid_i2c_linesda;
1503 uint8_t vr_i2c_linescl;
1504 uint8_t vr_i2c_linesda;
1505
1506 uint8_t plx_i2c_linescl;
1507 uint8_t plx_i2c_linesda;
1508 uint8_t vrsensorpresent;
1509 uint8_t liquidsensorpresent;
1510
1511 uint16_t maxvoltagestepgfx;
1512 uint16_t maxvoltagestepsoc;
1513
1514 uint8_t vddgfxvrmapping;
1515 uint8_t vddsocvrmapping;
1516 uint8_t vddmem0vrmapping;
1517 uint8_t vddmem1vrmapping;
1518
1519 uint8_t gfxulvphasesheddingmask;
1520 uint8_t soculvphasesheddingmask;
1521 uint8_t externalsensorpresent;
1522 uint8_t padding8_v;
1523
1524 uint16_t gfxmaxcurrent;
1525 uint8_t gfxoffset;
1526 uint8_t padding_telemetrygfx;
1527
1528 uint16_t socmaxcurrent;
1529 uint8_t socoffset;
1530 uint8_t padding_telemetrysoc;
1531
1532 uint16_t mem0maxcurrent;
1533 uint8_t mem0offset;
1534 uint8_t padding_telemetrymem0;
1535
1536 uint16_t mem1maxcurrent;
1537 uint8_t mem1offset;
1538 uint8_t padding_telemetrymem1;
1539
1540 uint8_t acdcgpio;
1541 uint8_t acdcpolarity;
1542 uint8_t vr0hotgpio;
1543 uint8_t vr0hotpolarity;
1544
1545 uint8_t vr1hotgpio;
1546 uint8_t vr1hotpolarity;
1547 uint8_t padding1;
1548 uint8_t padding2;
1549
1550 uint8_t ledpin0;
1551 uint8_t ledpin1;
1552 uint8_t ledpin2;
1553 uint8_t padding8_4;
1554
1555 uint8_t pllgfxclkspreadenabled;
1556 uint8_t pllgfxclkspreadpercent;
1557 uint16_t pllgfxclkspreadfreq;
1558
1559 uint8_t uclkspreadenabled;
1560 uint8_t uclkspreadpercent;
1561 uint16_t uclkspreadfreq;
1562
1563 uint8_t fclkspreadenabled;
1564 uint8_t fclkspreadpercent;
1565 uint16_t fclkspreadfreq;
1566
1567 uint8_t fllgfxclkspreadenabled;
1568 uint8_t fllgfxclkspreadpercent;
1569 uint16_t fllgfxclkspreadfreq;
1570
1571 uint32_t boardreserved[10];
1572};
1573
1574struct smudpm_i2ccontrollerconfig_t {
1575 uint32_t enabled;
1576 uint32_t slaveaddress;
1577 uint32_t controllerport;
1578 uint32_t controllername;
1579 uint32_t thermalthrottler;
1580 uint32_t i2cprotocol;
1581 uint32_t i2cspeed;
1582};
1583
1584struct atom_smc_dpm_info_v4_4
1585{
1586 struct atom_common_table_header table_header;
1587 uint32_t i2c_padding[3];
1588
1589 uint16_t maxvoltagestepgfx;
1590 uint16_t maxvoltagestepsoc;
1591
1592 uint8_t vddgfxvrmapping;
1593 uint8_t vddsocvrmapping;
1594 uint8_t vddmem0vrmapping;
1595 uint8_t vddmem1vrmapping;
1596
1597 uint8_t gfxulvphasesheddingmask;
1598 uint8_t soculvphasesheddingmask;
1599 uint8_t externalsensorpresent;
1600 uint8_t padding8_v;
1601
1602 uint16_t gfxmaxcurrent;
1603 uint8_t gfxoffset;
1604 uint8_t padding_telemetrygfx;
1605
1606 uint16_t socmaxcurrent;
1607 uint8_t socoffset;
1608 uint8_t padding_telemetrysoc;
1609
1610 uint16_t mem0maxcurrent;
1611 uint8_t mem0offset;
1612 uint8_t padding_telemetrymem0;
1613
1614 uint16_t mem1maxcurrent;
1615 uint8_t mem1offset;
1616 uint8_t padding_telemetrymem1;
1617
1618
1619 uint8_t acdcgpio;
1620 uint8_t acdcpolarity;
1621 uint8_t vr0hotgpio;
1622 uint8_t vr0hotpolarity;
1623
1624 uint8_t vr1hotgpio;
1625 uint8_t vr1hotpolarity;
1626 uint8_t padding1;
1627 uint8_t padding2;
1628
1629
1630 uint8_t ledpin0;
1631 uint8_t ledpin1;
1632 uint8_t ledpin2;
1633 uint8_t padding8_4;
1634
1635
1636 uint8_t pllgfxclkspreadenabled;
1637 uint8_t pllgfxclkspreadpercent;
1638 uint16_t pllgfxclkspreadfreq;
1639
1640
1641 uint8_t uclkspreadenabled;
1642 uint8_t uclkspreadpercent;
1643 uint16_t uclkspreadfreq;
1644
1645
1646 uint8_t fclkspreadenabled;
1647 uint8_t fclkspreadpercent;
1648 uint16_t fclkspreadfreq;
1649
1650
1651 uint8_t fllgfxclkspreadenabled;
1652 uint8_t fllgfxclkspreadpercent;
1653 uint16_t fllgfxclkspreadfreq;
1654
1655
1656 struct smudpm_i2ccontrollerconfig_t i2ccontrollers[7];
1657
1658
1659 uint32_t boardreserved[10];
1660};
1661
1662enum smudpm_v4_5_i2ccontrollername_e{
1663 SMC_V4_5_I2C_CONTROLLER_NAME_VR_GFX = 0,
1664 SMC_V4_5_I2C_CONTROLLER_NAME_VR_SOC,
1665 SMC_V4_5_I2C_CONTROLLER_NAME_VR_VDDCI,
1666 SMC_V4_5_I2C_CONTROLLER_NAME_VR_MVDD,
1667 SMC_V4_5_I2C_CONTROLLER_NAME_LIQUID0,
1668 SMC_V4_5_I2C_CONTROLLER_NAME_LIQUID1,
1669 SMC_V4_5_I2C_CONTROLLER_NAME_PLX,
1670 SMC_V4_5_I2C_CONTROLLER_NAME_SPARE,
1671 SMC_V4_5_I2C_CONTROLLER_NAME_COUNT,
1672};
1673
1674enum smudpm_v4_5_i2ccontrollerthrottler_e{
1675 SMC_V4_5_I2C_CONTROLLER_THROTTLER_TYPE_NONE = 0,
1676 SMC_V4_5_I2C_CONTROLLER_THROTTLER_VR_GFX,
1677 SMC_V4_5_I2C_CONTROLLER_THROTTLER_VR_SOC,
1678 SMC_V4_5_I2C_CONTROLLER_THROTTLER_VR_VDDCI,
1679 SMC_V4_5_I2C_CONTROLLER_THROTTLER_VR_MVDD,
1680 SMC_V4_5_I2C_CONTROLLER_THROTTLER_LIQUID0,
1681 SMC_V4_5_I2C_CONTROLLER_THROTTLER_LIQUID1,
1682 SMC_V4_5_I2C_CONTROLLER_THROTTLER_PLX,
1683 SMC_V4_5_I2C_CONTROLLER_THROTTLER_COUNT,
1684};
1685
1686enum smudpm_v4_5_i2ccontrollerprotocol_e{
1687 SMC_V4_5_I2C_CONTROLLER_PROTOCOL_VR_0,
1688 SMC_V4_5_I2C_CONTROLLER_PROTOCOL_VR_1,
1689 SMC_V4_5_I2C_CONTROLLER_PROTOCOL_TMP_0,
1690 SMC_V4_5_I2C_CONTROLLER_PROTOCOL_TMP_1,
1691 SMC_V4_5_I2C_CONTROLLER_PROTOCOL_SPARE_0,
1692 SMC_V4_5_I2C_CONTROLLER_PROTOCOL_SPARE_1,
1693 SMC_V4_5_I2C_CONTROLLER_PROTOCOL_COUNT,
1694};
1695
1696struct smudpm_i2c_controller_config_v2
1697{
1698 uint8_t Enabled;
1699 uint8_t Speed;
1700 uint8_t Padding[2];
1701 uint32_t SlaveAddress;
1702 uint8_t ControllerPort;
1703 uint8_t ControllerName;
1704 uint8_t ThermalThrotter;
1705 uint8_t I2cProtocol;
1706};
1707
1708struct atom_smc_dpm_info_v4_5
1709{
1710 struct atom_common_table_header table_header;
1711
1712
1713 struct smudpm_i2c_controller_config_v2 I2cControllers[8];
1714
1715
1716 uint16_t MaxVoltageStepGfx;
1717 uint16_t MaxVoltageStepSoc;
1718
1719 uint8_t VddGfxVrMapping;
1720 uint8_t VddSocVrMapping;
1721 uint8_t VddMem0VrMapping;
1722 uint8_t VddMem1VrMapping;
1723
1724 uint8_t GfxUlvPhaseSheddingMask;
1725 uint8_t SocUlvPhaseSheddingMask;
1726 uint8_t ExternalSensorPresent;
1727 uint8_t Padding8_V;
1728
1729
1730 uint16_t GfxMaxCurrent;
1731 uint8_t GfxOffset;
1732 uint8_t Padding_TelemetryGfx;
1733 uint16_t SocMaxCurrent;
1734 uint8_t SocOffset;
1735 uint8_t Padding_TelemetrySoc;
1736
1737 uint16_t Mem0MaxCurrent;
1738 uint8_t Mem0Offset;
1739 uint8_t Padding_TelemetryMem0;
1740
1741 uint16_t Mem1MaxCurrent;
1742 uint8_t Mem1Offset;
1743 uint8_t Padding_TelemetryMem1;
1744
1745
1746 uint8_t AcDcGpio;
1747 uint8_t AcDcPolarity;
1748 uint8_t VR0HotGpio;
1749 uint8_t VR0HotPolarity;
1750
1751 uint8_t VR1HotGpio;
1752 uint8_t VR1HotPolarity;
1753 uint8_t GthrGpio;
1754 uint8_t GthrPolarity;
1755
1756
1757 uint8_t LedPin0;
1758 uint8_t LedPin1;
1759 uint8_t LedPin2;
1760 uint8_t padding8_4;
1761
1762
1763 uint8_t PllGfxclkSpreadEnabled;
1764 uint8_t PllGfxclkSpreadPercent;
1765 uint16_t PllGfxclkSpreadFreq;
1766
1767
1768 uint8_t DfllGfxclkSpreadEnabled;
1769 uint8_t DfllGfxclkSpreadPercent;
1770 uint16_t DfllGfxclkSpreadFreq;
1771
1772
1773 uint8_t UclkSpreadEnabled;
1774 uint8_t UclkSpreadPercent;
1775 uint16_t UclkSpreadFreq;
1776
1777
1778 uint8_t SoclkSpreadEnabled;
1779 uint8_t SocclkSpreadPercent;
1780 uint16_t SocclkSpreadFreq;
1781
1782
1783 uint16_t TotalBoardPower;
1784 uint16_t BoardPadding;
1785
1786
1787 uint32_t MvddRatio;
1788
1789 uint32_t BoardReserved[9];
1790
1791};
1792
1793struct atom_smc_dpm_info_v4_6
1794{
1795 struct atom_common_table_header table_header;
1796
1797 uint32_t i2c_padding[3];
1798
1799 uint16_t maxvoltagestepgfx;
1800 uint16_t maxvoltagestepsoc;
1801
1802 uint8_t vddgfxvrmapping;
1803 uint8_t vddsocvrmapping;
1804 uint8_t vddmemvrmapping;
1805 uint8_t boardvrmapping;
1806
1807 uint8_t gfxulvphasesheddingmask;
1808 uint8_t externalsensorpresent;
1809 uint8_t padding8_v[2];
1810
1811
1812 uint16_t gfxmaxcurrent;
1813 uint8_t gfxoffset;
1814 uint8_t padding_telemetrygfx;
1815
1816 uint16_t socmaxcurrent;
1817 uint8_t socoffset;
1818 uint8_t padding_telemetrysoc;
1819
1820 uint16_t memmaxcurrent;
1821 uint8_t memoffset;
1822 uint8_t padding_telemetrymem;
1823
1824 uint16_t boardmaxcurrent;
1825 uint8_t boardoffset;
1826 uint8_t padding_telemetryboardinput;
1827
1828
1829 uint8_t vr0hotgpio;
1830 uint8_t vr0hotpolarity;
1831 uint8_t vr1hotgpio;
1832 uint8_t vr1hotpolarity;
1833
1834
1835 uint8_t pllgfxclkspreadenabled;
1836 uint8_t pllgfxclkspreadpercent;
1837 uint16_t pllgfxclkspreadfreq;
1838
1839
1840 uint8_t uclkspreadenabled;
1841 uint8_t uclkspreadpercent;
1842 uint16_t uclkspreadfreq;
1843
1844
1845 uint8_t fclkspreadenabled;
1846 uint8_t fclkspreadpercent;
1847 uint16_t fclkspreadfreq;
1848
1849
1850
1851 uint8_t fllgfxclkspreadenabled;
1852 uint8_t fllgfxclkspreadpercent;
1853 uint16_t fllgfxclkspreadfreq;
1854
1855
1856 struct smudpm_i2c_controller_config_v2 i2ccontrollers[8];
1857
1858
1859 uint32_t memorychannelenabled;
1860
1861 uint8_t drambitwidth;
1862 uint8_t paddingmem[3];
1863
1864
1865 uint16_t totalboardpower;
1866 uint16_t boardpadding;
1867
1868
1869 uint8_t xgmilinkspeed[4];
1870 uint8_t xgmilinkwidth[4];
1871
1872 uint16_t xgmifclkfreq[4];
1873 uint16_t xgmisocvoltage[4];
1874
1875
1876 uint32_t boardreserved[10];
1877};
1878
1879
1880
1881
1882
1883
1884struct atom_asic_profiling_info_v4_1
1885{
1886 struct atom_common_table_header table_header;
1887 uint32_t maxvddc;
1888 uint32_t minvddc;
1889 uint32_t avfs_meannsigma_acontant0;
1890 uint32_t avfs_meannsigma_acontant1;
1891 uint32_t avfs_meannsigma_acontant2;
1892 uint16_t avfs_meannsigma_dc_tol_sigma;
1893 uint16_t avfs_meannsigma_platform_mean;
1894 uint16_t avfs_meannsigma_platform_sigma;
1895 uint32_t gb_vdroop_table_cksoff_a0;
1896 uint32_t gb_vdroop_table_cksoff_a1;
1897 uint32_t gb_vdroop_table_cksoff_a2;
1898 uint32_t gb_vdroop_table_ckson_a0;
1899 uint32_t gb_vdroop_table_ckson_a1;
1900 uint32_t gb_vdroop_table_ckson_a2;
1901 uint32_t avfsgb_fuse_table_cksoff_m1;
1902 uint32_t avfsgb_fuse_table_cksoff_m2;
1903 uint32_t avfsgb_fuse_table_cksoff_b;
1904 uint32_t avfsgb_fuse_table_ckson_m1;
1905 uint32_t avfsgb_fuse_table_ckson_m2;
1906 uint32_t avfsgb_fuse_table_ckson_b;
1907 uint16_t max_voltage_0_25mv;
1908 uint8_t enable_gb_vdroop_table_cksoff;
1909 uint8_t enable_gb_vdroop_table_ckson;
1910 uint8_t enable_gb_fuse_table_cksoff;
1911 uint8_t enable_gb_fuse_table_ckson;
1912 uint16_t psm_age_comfactor;
1913 uint8_t enable_apply_avfs_cksoff_voltage;
1914 uint8_t reserved;
1915 uint32_t dispclk2gfxclk_a;
1916 uint32_t dispclk2gfxclk_b;
1917 uint32_t dispclk2gfxclk_c;
1918 uint32_t pixclk2gfxclk_a;
1919 uint32_t pixclk2gfxclk_b;
1920 uint32_t pixclk2gfxclk_c;
1921 uint32_t dcefclk2gfxclk_a;
1922 uint32_t dcefclk2gfxclk_b;
1923 uint32_t dcefclk2gfxclk_c;
1924 uint32_t phyclk2gfxclk_a;
1925 uint32_t phyclk2gfxclk_b;
1926 uint32_t phyclk2gfxclk_c;
1927};
1928
1929struct atom_asic_profiling_info_v4_2 {
1930 struct atom_common_table_header table_header;
1931 uint32_t maxvddc;
1932 uint32_t minvddc;
1933 uint32_t avfs_meannsigma_acontant0;
1934 uint32_t avfs_meannsigma_acontant1;
1935 uint32_t avfs_meannsigma_acontant2;
1936 uint16_t avfs_meannsigma_dc_tol_sigma;
1937 uint16_t avfs_meannsigma_platform_mean;
1938 uint16_t avfs_meannsigma_platform_sigma;
1939 uint32_t gb_vdroop_table_cksoff_a0;
1940 uint32_t gb_vdroop_table_cksoff_a1;
1941 uint32_t gb_vdroop_table_cksoff_a2;
1942 uint32_t gb_vdroop_table_ckson_a0;
1943 uint32_t gb_vdroop_table_ckson_a1;
1944 uint32_t gb_vdroop_table_ckson_a2;
1945 uint32_t avfsgb_fuse_table_cksoff_m1;
1946 uint32_t avfsgb_fuse_table_cksoff_m2;
1947 uint32_t avfsgb_fuse_table_cksoff_b;
1948 uint32_t avfsgb_fuse_table_ckson_m1;
1949 uint32_t avfsgb_fuse_table_ckson_m2;
1950 uint32_t avfsgb_fuse_table_ckson_b;
1951 uint16_t max_voltage_0_25mv;
1952 uint8_t enable_gb_vdroop_table_cksoff;
1953 uint8_t enable_gb_vdroop_table_ckson;
1954 uint8_t enable_gb_fuse_table_cksoff;
1955 uint8_t enable_gb_fuse_table_ckson;
1956 uint16_t psm_age_comfactor;
1957 uint8_t enable_apply_avfs_cksoff_voltage;
1958 uint8_t reserved;
1959 uint32_t dispclk2gfxclk_a;
1960 uint32_t dispclk2gfxclk_b;
1961 uint32_t dispclk2gfxclk_c;
1962 uint32_t pixclk2gfxclk_a;
1963 uint32_t pixclk2gfxclk_b;
1964 uint32_t pixclk2gfxclk_c;
1965 uint32_t dcefclk2gfxclk_a;
1966 uint32_t dcefclk2gfxclk_b;
1967 uint32_t dcefclk2gfxclk_c;
1968 uint32_t phyclk2gfxclk_a;
1969 uint32_t phyclk2gfxclk_b;
1970 uint32_t phyclk2gfxclk_c;
1971 uint32_t acg_gb_vdroop_table_a0;
1972 uint32_t acg_gb_vdroop_table_a1;
1973 uint32_t acg_gb_vdroop_table_a2;
1974 uint32_t acg_avfsgb_fuse_table_m1;
1975 uint32_t acg_avfsgb_fuse_table_m2;
1976 uint32_t acg_avfsgb_fuse_table_b;
1977 uint8_t enable_acg_gb_vdroop_table;
1978 uint8_t enable_acg_gb_fuse_table;
1979 uint32_t acg_dispclk2gfxclk_a;
1980 uint32_t acg_dispclk2gfxclk_b;
1981 uint32_t acg_dispclk2gfxclk_c;
1982 uint32_t acg_pixclk2gfxclk_a;
1983 uint32_t acg_pixclk2gfxclk_b;
1984 uint32_t acg_pixclk2gfxclk_c;
1985 uint32_t acg_dcefclk2gfxclk_a;
1986 uint32_t acg_dcefclk2gfxclk_b;
1987 uint32_t acg_dcefclk2gfxclk_c;
1988 uint32_t acg_phyclk2gfxclk_a;
1989 uint32_t acg_phyclk2gfxclk_b;
1990 uint32_t acg_phyclk2gfxclk_c;
1991};
1992
1993
1994
1995
1996
1997
1998struct atom_multimedia_info_v2_1
1999{
2000 struct atom_common_table_header table_header;
2001 uint8_t uvdip_min_ver;
2002 uint8_t uvdip_max_ver;
2003 uint8_t vceip_min_ver;
2004 uint8_t vceip_max_ver;
2005 uint16_t uvd_enc_max_input_width_pixels;
2006 uint16_t uvd_enc_max_input_height_pixels;
2007 uint16_t vce_enc_max_input_width_pixels;
2008 uint16_t vce_enc_max_input_height_pixels;
2009 uint32_t uvd_enc_max_bandwidth;
2010 uint32_t vce_enc_max_bandwidth;
2011};
2012
2013
2014
2015
2016
2017
2018
2019struct atom_umc_info_v3_1
2020{
2021 struct atom_common_table_header table_header;
2022 uint32_t ucode_version;
2023 uint32_t ucode_rom_startaddr;
2024 uint32_t ucode_length;
2025 uint16_t umc_reg_init_offset;
2026 uint16_t customer_ucode_name_offset;
2027 uint16_t mclk_ss_percentage;
2028 uint16_t mclk_ss_rate_10hz;
2029 uint8_t umcip_min_ver;
2030 uint8_t umcip_max_ver;
2031 uint8_t vram_type;
2032 uint8_t umc_config;
2033 uint32_t mem_refclk_10khz;
2034};
2035
2036
2037enum atom_umc_config_def {
2038 UMC_CONFIG__ENABLE_1KB_INTERLEAVE_MODE = 0x00000001,
2039 UMC_CONFIG__DEFAULT_MEM_ECC_ENABLE = 0x00000002,
2040 UMC_CONFIG__ENABLE_HBM_LANE_REPAIR = 0x00000004,
2041 UMC_CONFIG__ENABLE_BANK_HARVESTING = 0x00000008,
2042 UMC_CONFIG__ENABLE_PHY_REINIT = 0x00000010,
2043 UMC_CONFIG__DISABLE_UCODE_CHKSTATUS = 0x00000020,
2044};
2045
2046struct atom_umc_info_v3_2
2047{
2048 struct atom_common_table_header table_header;
2049 uint32_t ucode_version;
2050 uint32_t ucode_rom_startaddr;
2051 uint32_t ucode_length;
2052 uint16_t umc_reg_init_offset;
2053 uint16_t customer_ucode_name_offset;
2054 uint16_t mclk_ss_percentage;
2055 uint16_t mclk_ss_rate_10hz;
2056 uint8_t umcip_min_ver;
2057 uint8_t umcip_max_ver;
2058 uint8_t vram_type;
2059 uint8_t umc_config;
2060 uint32_t mem_refclk_10khz;
2061 uint32_t pstate_uclk_10khz[4];
2062 uint16_t umcgoldenoffset;
2063 uint16_t densitygoldenoffset;
2064};
2065
2066struct atom_umc_info_v3_3
2067{
2068 struct atom_common_table_header table_header;
2069 uint32_t ucode_reserved;
2070 uint32_t ucode_rom_startaddr;
2071 uint32_t ucode_length;
2072 uint16_t umc_reg_init_offset;
2073 uint16_t customer_ucode_name_offset;
2074 uint16_t mclk_ss_percentage;
2075 uint16_t mclk_ss_rate_10hz;
2076 uint8_t umcip_min_ver;
2077 uint8_t umcip_max_ver;
2078 uint8_t vram_type;
2079 uint8_t umc_config;
2080 uint32_t mem_refclk_10khz;
2081 uint32_t pstate_uclk_10khz[4];
2082 uint16_t umcgoldenoffset;
2083 uint16_t densitygoldenoffset;
2084 uint32_t reserved[4];
2085};
2086
2087
2088
2089
2090
2091
2092struct atom_vram_module_v9 {
2093
2094 uint32_t memory_size;
2095 uint32_t channel_enable;
2096 uint32_t max_mem_clk;
2097 uint16_t reserved[3];
2098 uint16_t mem_voltage;
2099 uint16_t vram_module_size;
2100 uint8_t ext_memory_id;
2101 uint8_t memory_type;
2102 uint8_t channel_num;
2103 uint8_t channel_width;
2104 uint8_t density;
2105 uint8_t tunningset_id;
2106 uint8_t vender_rev_id;
2107 uint8_t refreshrate;
2108 uint8_t hbm_ven_rev_id;
2109 uint8_t vram_rsd2;
2110 char dram_pnstring[20];
2111};
2112
2113struct atom_vram_info_header_v2_3 {
2114 struct atom_common_table_header table_header;
2115 uint16_t mem_adjust_tbloffset;
2116 uint16_t mem_clk_patch_tbloffset;
2117 uint16_t mc_adjust_pertile_tbloffset;
2118 uint16_t mc_phyinit_tbloffset;
2119 uint16_t dram_data_remap_tbloffset;
2120 uint16_t tmrs_seq_offset;
2121 uint16_t post_ucode_init_offset;
2122 uint16_t vram_rsd2;
2123 uint8_t vram_module_num;
2124 uint8_t umcip_min_ver;
2125 uint8_t umcip_max_ver;
2126 uint8_t mc_phy_tile_num;
2127 struct atom_vram_module_v9 vram_module[16];
2128};
2129
2130struct atom_umc_register_addr_info{
2131 uint32_t umc_register_addr:24;
2132 uint32_t umc_reg_type_ind:1;
2133 uint32_t umc_reg_rsvd:7;
2134};
2135
2136
2137enum atom_umc_register_addr_info_flag{
2138 b3ATOM_UMC_REG_ADD_INFO_INDIRECT_ACCESS =0x01,
2139};
2140
2141union atom_umc_register_addr_info_access
2142{
2143 struct atom_umc_register_addr_info umc_reg_addr;
2144 uint32_t u32umc_reg_addr;
2145};
2146
2147struct atom_umc_reg_setting_id_config{
2148 uint32_t memclockrange:24;
2149 uint32_t mem_blk_id:8;
2150};
2151
2152union atom_umc_reg_setting_id_config_access
2153{
2154 struct atom_umc_reg_setting_id_config umc_id_access;
2155 uint32_t u32umc_id_access;
2156};
2157
2158struct atom_umc_reg_setting_data_block{
2159 union atom_umc_reg_setting_id_config_access block_id;
2160 uint32_t u32umc_reg_data[1];
2161};
2162
2163struct atom_umc_init_reg_block{
2164 uint16_t umc_reg_num;
2165 uint16_t reserved;
2166 union atom_umc_register_addr_info_access umc_reg_list[1];
2167 struct atom_umc_reg_setting_data_block umc_reg_setting_list[1];
2168};
2169
2170struct atom_vram_module_v10 {
2171
2172 uint32_t memory_size;
2173 uint32_t channel_enable;
2174 uint32_t max_mem_clk;
2175 uint16_t reserved[3];
2176 uint16_t mem_voltage;
2177 uint16_t vram_module_size;
2178 uint8_t ext_memory_id;
2179 uint8_t memory_type;
2180 uint8_t channel_num;
2181 uint8_t channel_width;
2182 uint8_t density;
2183 uint8_t tunningset_id;
2184 uint8_t vender_rev_id;
2185 uint8_t refreshrate;
2186 uint8_t vram_flags;
2187 uint8_t vram_rsd2;
2188 uint16_t gddr6_mr10;
2189 uint16_t gddr6_mr1;
2190 uint16_t gddr6_mr2;
2191 uint16_t gddr6_mr7;
2192 char dram_pnstring[20];
2193};
2194
2195struct atom_vram_info_header_v2_4 {
2196 struct atom_common_table_header table_header;
2197 uint16_t mem_adjust_tbloffset;
2198 uint16_t mem_clk_patch_tbloffset;
2199 uint16_t mc_adjust_pertile_tbloffset;
2200 uint16_t mc_phyinit_tbloffset;
2201 uint16_t dram_data_remap_tbloffset;
2202 uint16_t reserved;
2203 uint16_t post_ucode_init_offset;
2204 uint16_t vram_rsd2;
2205 uint8_t vram_module_num;
2206 uint8_t umcip_min_ver;
2207 uint8_t umcip_max_ver;
2208 uint8_t mc_phy_tile_num;
2209 struct atom_vram_module_v10 vram_module[16];
2210};
2211
2212
2213
2214
2215
2216
2217struct atom_i2c_data_entry
2218{
2219 uint16_t i2c_reg_index;
2220 uint16_t i2c_reg_data;
2221};
2222
2223struct atom_voltage_object_header_v4{
2224 uint8_t voltage_type;
2225 uint8_t voltage_mode;
2226 uint16_t object_size;
2227};
2228
2229
2230enum atom_voltage_object_mode
2231{
2232 VOLTAGE_OBJ_GPIO_LUT = 0,
2233 VOLTAGE_OBJ_VR_I2C_INIT_SEQ = 3,
2234 VOLTAGE_OBJ_PHASE_LUT = 4,
2235 VOLTAGE_OBJ_SVID2 = 7,
2236 VOLTAGE_OBJ_EVV = 8,
2237 VOLTAGE_OBJ_MERGED_POWER = 9,
2238};
2239
2240struct atom_i2c_voltage_object_v4
2241{
2242 struct atom_voltage_object_header_v4 header;
2243 uint8_t regulator_id;
2244 uint8_t i2c_id;
2245 uint8_t i2c_slave_addr;
2246 uint8_t i2c_control_offset;
2247 uint8_t i2c_flag;
2248 uint8_t i2c_speed;
2249 uint8_t reserved[2];
2250 struct atom_i2c_data_entry i2cdatalut[1];
2251};
2252
2253
2254enum atom_i2c_voltage_control_flag
2255{
2256 VOLTAGE_DATA_ONE_BYTE = 0,
2257 VOLTAGE_DATA_TWO_BYTE = 1,
2258};
2259
2260
2261struct atom_voltage_gpio_map_lut
2262{
2263 uint32_t voltage_gpio_reg_val;
2264 uint16_t voltage_level_mv;
2265};
2266
2267struct atom_gpio_voltage_object_v4
2268{
2269 struct atom_voltage_object_header_v4 header;
2270 uint8_t gpio_control_id;
2271 uint8_t gpio_entry_num;
2272 uint8_t phase_delay_us;
2273 uint8_t reserved;
2274 uint32_t gpio_mask_val;
2275 struct atom_voltage_gpio_map_lut voltage_gpio_lut[1];
2276};
2277
2278struct atom_svid2_voltage_object_v4
2279{
2280 struct atom_voltage_object_header_v4 header;
2281 uint8_t loadline_psi1;
2282 uint8_t psi0_l_vid_thresd;
2283 uint8_t psi0_enable;
2284 uint8_t maxvstep;
2285 uint8_t telemetry_offset;
2286 uint8_t telemetry_gain;
2287 uint16_t reserved1;
2288};
2289
2290struct atom_merged_voltage_object_v4
2291{
2292 struct atom_voltage_object_header_v4 header;
2293 uint8_t merged_powerrail_type;
2294 uint8_t reserved[3];
2295};
2296
2297union atom_voltage_object_v4{
2298 struct atom_gpio_voltage_object_v4 gpio_voltage_obj;
2299 struct atom_i2c_voltage_object_v4 i2c_voltage_obj;
2300 struct atom_svid2_voltage_object_v4 svid2_voltage_obj;
2301 struct atom_merged_voltage_object_v4 merged_voltage_obj;
2302};
2303
2304struct atom_voltage_objects_info_v4_1
2305{
2306 struct atom_common_table_header table_header;
2307 union atom_voltage_object_v4 voltage_object[1];
2308};
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323struct asic_init_engine_parameters
2324{
2325 uint32_t sclkfreqin10khz:24;
2326 uint32_t engineflag:8;
2327};
2328
2329struct asic_init_mem_parameters
2330{
2331 uint32_t mclkfreqin10khz:24;
2332 uint32_t memflag:8;
2333};
2334
2335struct asic_init_parameters_v2_1
2336{
2337 struct asic_init_engine_parameters engineparam;
2338 struct asic_init_mem_parameters memparam;
2339};
2340
2341struct asic_init_ps_allocation_v2_1
2342{
2343 struct asic_init_parameters_v2_1 param;
2344 uint32_t reserved[16];
2345};
2346
2347
2348enum atom_asic_init_engine_flag
2349{
2350 b3NORMAL_ENGINE_INIT = 0,
2351 b3SRIOV_SKIP_ASIC_INIT = 0x02,
2352 b3SRIOV_LOAD_UCODE = 0x40,
2353};
2354
2355enum atom_asic_init_mem_flag
2356{
2357 b3NORMAL_MEM_INIT = 0,
2358 b3DRAM_SELF_REFRESH_EXIT =0x20,
2359};
2360
2361
2362
2363
2364
2365
2366
2367struct set_engine_clock_parameters_v2_1
2368{
2369 uint32_t sclkfreqin10khz:24;
2370 uint32_t sclkflag:8;
2371 uint32_t reserved[10];
2372};
2373
2374struct set_engine_clock_ps_allocation_v2_1
2375{
2376 struct set_engine_clock_parameters_v2_1 clockinfo;
2377 uint32_t reserved[10];
2378};
2379
2380
2381enum atom_set_engine_mem_clock_flag
2382{
2383 b3NORMAL_CHANGE_CLOCK = 0,
2384 b3FIRST_TIME_CHANGE_CLOCK = 0x08,
2385 b3STORE_DPM_TRAINGING = 0x40,
2386};
2387
2388
2389
2390
2391
2392
2393struct get_engine_clock_parameter
2394{
2395 uint32_t sclk_10khz;
2396 uint32_t reserved;
2397};
2398
2399
2400
2401
2402
2403
2404struct set_memory_clock_parameters_v2_1
2405{
2406 uint32_t mclkfreqin10khz:24;
2407 uint32_t mclkflag:8;
2408 uint32_t reserved[10];
2409};
2410
2411struct set_memory_clock_ps_allocation_v2_1
2412{
2413 struct set_memory_clock_parameters_v2_1 clockinfo;
2414 uint32_t reserved[10];
2415};
2416
2417
2418
2419
2420
2421
2422
2423struct get_memory_clock_parameter
2424{
2425 uint32_t mclk_10khz;
2426 uint32_t reserved;
2427};
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437struct set_voltage_parameters_v1_4
2438{
2439 uint8_t voltagetype;
2440 uint8_t command;
2441 uint16_t vlevel_mv;
2442};
2443
2444
2445enum atom_set_voltage_command{
2446 ATOM_SET_VOLTAGE = 0,
2447 ATOM_INIT_VOLTAGE_REGULATOR = 3,
2448 ATOM_SET_VOLTAGE_PHASE = 4,
2449 ATOM_GET_LEAKAGE_ID = 8,
2450};
2451
2452struct set_voltage_ps_allocation_v1_4
2453{
2454 struct set_voltage_parameters_v1_4 setvoltageparam;
2455 uint32_t reserved[10];
2456};
2457
2458
2459
2460
2461
2462
2463
2464
2465
2466enum atom_gpu_clock_type
2467{
2468 COMPUTE_GPUCLK_INPUT_FLAG_DEFAULT_GPUCLK =0x00,
2469 COMPUTE_GPUCLK_INPUT_FLAG_GFXCLK =0x01,
2470 COMPUTE_GPUCLK_INPUT_FLAG_UCLK =0x02,
2471};
2472
2473struct compute_gpu_clock_input_parameter_v1_8
2474{
2475 uint32_t gpuclock_10khz:24;
2476 uint32_t gpu_clock_type:8;
2477 uint32_t reserved[5];
2478};
2479
2480
2481struct compute_gpu_clock_output_parameter_v1_8
2482{
2483 uint32_t gpuclock_10khz:24;
2484 uint32_t dfs_did:8;
2485 uint32_t pll_fb_mult;
2486 uint32_t pll_ss_fbsmult;
2487 uint16_t pll_ss_slew_frac;
2488 uint8_t pll_ss_enable;
2489 uint8_t reserved;
2490 uint32_t reserved1[2];
2491};
2492
2493
2494
2495
2496
2497
2498
2499
2500
2501struct read_efuse_input_parameters_v3_1
2502{
2503 uint16_t efuse_start_index;
2504 uint8_t reserved;
2505 uint8_t bitslen;
2506};
2507
2508
2509union read_efuse_value_parameters_v3_1
2510{
2511 struct read_efuse_input_parameters_v3_1 efuse_info;
2512 uint32_t efusevalue;
2513};
2514
2515
2516
2517
2518
2519
2520
2521struct atom_get_smu_clock_info_parameters_v3_1
2522{
2523 uint8_t syspll_id;
2524 uint8_t clk_id;
2525 uint8_t command;
2526 uint8_t dfsdid;
2527};
2528
2529enum atom_get_smu_clock_info_command
2530{
2531 GET_SMU_CLOCK_INFO_V3_1_GET_CLOCK_FREQ = 0,
2532 GET_SMU_CLOCK_INFO_V3_1_GET_PLLVCO_FREQ = 1,
2533 GET_SMU_CLOCK_INFO_V3_1_GET_PLLREFCLK_FREQ = 2,
2534};
2535
2536enum atom_smu9_syspll0_clock_id
2537{
2538 SMU9_SYSPLL0_SMNCLK_ID = 0,
2539 SMU9_SYSPLL0_SOCCLK_ID = 1,
2540 SMU9_SYSPLL0_MP0CLK_ID = 2,
2541 SMU9_SYSPLL0_MP1CLK_ID = 3,
2542 SMU9_SYSPLL0_LCLK_ID = 4,
2543 SMU9_SYSPLL0_DCLK_ID = 5,
2544 SMU9_SYSPLL0_VCLK_ID = 6,
2545 SMU9_SYSPLL0_ECLK_ID = 7,
2546 SMU9_SYSPLL0_DCEFCLK_ID = 8,
2547 SMU9_SYSPLL0_DPREFCLK_ID = 10,
2548 SMU9_SYSPLL0_DISPCLK_ID = 11,
2549};
2550
2551enum atom_smu11_syspll_id {
2552 SMU11_SYSPLL0_ID = 0,
2553 SMU11_SYSPLL1_0_ID = 1,
2554 SMU11_SYSPLL1_1_ID = 2,
2555 SMU11_SYSPLL1_2_ID = 3,
2556 SMU11_SYSPLL2_ID = 4,
2557 SMU11_SYSPLL3_0_ID = 5,
2558 SMU11_SYSPLL3_1_ID = 6,
2559};
2560
2561enum atom_smu11_syspll0_clock_id {
2562 SMU11_SYSPLL0_ECLK_ID = 0,
2563 SMU11_SYSPLL0_SOCCLK_ID = 1,
2564 SMU11_SYSPLL0_MP0CLK_ID = 2,
2565 SMU11_SYSPLL0_DCLK_ID = 3,
2566 SMU11_SYSPLL0_VCLK_ID = 4,
2567 SMU11_SYSPLL0_DCEFCLK_ID = 5,
2568};
2569
2570enum atom_smu11_syspll1_0_clock_id {
2571 SMU11_SYSPLL1_0_UCLKA_ID = 0,
2572};
2573
2574enum atom_smu11_syspll1_1_clock_id {
2575 SMU11_SYSPLL1_0_UCLKB_ID = 0,
2576};
2577
2578enum atom_smu11_syspll1_2_clock_id {
2579 SMU11_SYSPLL1_0_FCLK_ID = 0,
2580};
2581
2582enum atom_smu11_syspll2_clock_id {
2583 SMU11_SYSPLL2_GFXCLK_ID = 0,
2584};
2585
2586enum atom_smu11_syspll3_0_clock_id {
2587 SMU11_SYSPLL3_0_WAFCLK_ID = 0,
2588 SMU11_SYSPLL3_0_DISPCLK_ID = 1,
2589 SMU11_SYSPLL3_0_DPREFCLK_ID = 2,
2590};
2591
2592enum atom_smu11_syspll3_1_clock_id {
2593 SMU11_SYSPLL3_1_MP1CLK_ID = 0,
2594 SMU11_SYSPLL3_1_SMNCLK_ID = 1,
2595 SMU11_SYSPLL3_1_LCLK_ID = 2,
2596};
2597
2598struct atom_get_smu_clock_info_output_parameters_v3_1
2599{
2600 union {
2601 uint32_t smu_clock_freq_hz;
2602 uint32_t syspllvcofreq_10khz;
2603 uint32_t sysspllrefclk_10khz;
2604 }atom_smu_outputclkfreq;
2605};
2606
2607
2608
2609
2610
2611
2612
2613
2614
2615enum atom_dynamic_memory_setting_command
2616{
2617 COMPUTE_MEMORY_PLL_PARAM = 1,
2618 COMPUTE_ENGINE_PLL_PARAM = 2,
2619 ADJUST_MC_SETTING_PARAM = 3,
2620};
2621
2622
2623struct dynamic_mclk_settings_parameters_v2_1
2624{
2625 uint32_t mclk_10khz:24;
2626 uint32_t command:8;
2627 uint32_t reserved;
2628};
2629
2630
2631struct dynamic_sclk_settings_parameters_v2_1
2632{
2633 uint32_t sclk_10khz:24;
2634 uint32_t command:8;
2635 uint32_t mclk_10khz;
2636 uint32_t reserved;
2637};
2638
2639union dynamic_memory_settings_parameters_v2_1
2640{
2641 struct dynamic_mclk_settings_parameters_v2_1 mclk_setting;
2642 struct dynamic_sclk_settings_parameters_v2_1 sclk_setting;
2643};
2644
2645
2646
2647
2648
2649
2650
2651
2652
2653enum atom_umc6_0_ucode_function_call_enum_id
2654{
2655 UMC60_UCODE_FUNC_ID_REINIT = 0,
2656 UMC60_UCODE_FUNC_ID_ENTER_SELFREFRESH = 1,
2657 UMC60_UCODE_FUNC_ID_EXIT_SELFREFRESH = 2,
2658};
2659
2660
2661struct memory_training_parameters_v2_1
2662{
2663 uint8_t ucode_func_id;
2664 uint8_t ucode_reserved[3];
2665 uint32_t reserved[5];
2666};
2667
2668
2669
2670
2671
2672
2673
2674
2675struct set_pixel_clock_parameter_v1_7
2676{
2677 uint32_t pixclk_100hz;
2678
2679 uint8_t pll_id;
2680 uint8_t encoderobjid;
2681
2682 uint8_t encoder_mode;
2683 uint8_t miscinfo;
2684 uint8_t crtc_id;
2685 uint8_t deep_color_ratio;
2686 uint8_t reserved1[2];
2687 uint32_t reserved2;
2688};
2689
2690
2691enum atom_set_pixel_clock_v1_7_misc_info
2692{
2693 PIXEL_CLOCK_V7_MISC_FORCE_PROG_PPLL = 0x01,
2694 PIXEL_CLOCK_V7_MISC_PROG_PHYPLL = 0x02,
2695 PIXEL_CLOCK_V7_MISC_YUV420_MODE = 0x04,
2696 PIXEL_CLOCK_V7_MISC_DVI_DUALLINK_EN = 0x08,
2697 PIXEL_CLOCK_V7_MISC_REF_DIV_SRC = 0x30,
2698 PIXEL_CLOCK_V7_MISC_REF_DIV_SRC_XTALIN = 0x00,
2699 PIXEL_CLOCK_V7_MISC_REF_DIV_SRC_PCIE = 0x10,
2700 PIXEL_CLOCK_V7_MISC_REF_DIV_SRC_GENLK = 0x20,
2701 PIXEL_CLOCK_V7_MISC_REF_DIV_SRC_REFPAD = 0x30,
2702 PIXEL_CLOCK_V7_MISC_ATOMIC_UPDATE = 0x40,
2703 PIXEL_CLOCK_V7_MISC_FORCE_SS_DIS = 0x80,
2704};
2705
2706
2707enum atom_set_pixel_clock_v1_7_deepcolor_ratio
2708{
2709 PIXEL_CLOCK_V7_DEEPCOLOR_RATIO_DIS = 0x00,
2710 PIXEL_CLOCK_V7_DEEPCOLOR_RATIO_5_4 = 0x01,
2711 PIXEL_CLOCK_V7_DEEPCOLOR_RATIO_3_2 = 0x02,
2712 PIXEL_CLOCK_V7_DEEPCOLOR_RATIO_2_1 = 0x03,
2713};
2714
2715
2716
2717
2718
2719
2720
2721
2722struct set_dce_clock_parameters_v2_1
2723{
2724 uint32_t dceclk_10khz;
2725 uint8_t dceclktype;
2726 uint8_t dceclksrc;
2727 uint8_t dceclkflag;
2728 uint8_t crtc_id;
2729};
2730
2731
2732enum atom_set_dce_clock_clock_type
2733{
2734 DCE_CLOCK_TYPE_DISPCLK = 0,
2735 DCE_CLOCK_TYPE_DPREFCLK = 1,
2736 DCE_CLOCK_TYPE_PIXELCLK = 2,
2737};
2738
2739
2740enum atom_set_dce_clock_dprefclk_flag
2741{
2742 DCE_CLOCK_FLAG_PLL_REFCLK_SRC_MASK = 0x03,
2743 DCE_CLOCK_FLAG_PLL_REFCLK_SRC_GENERICA = 0x00,
2744 DCE_CLOCK_FLAG_PLL_REFCLK_SRC_GENLK = 0x01,
2745 DCE_CLOCK_FLAG_PLL_REFCLK_SRC_PCIE = 0x02,
2746 DCE_CLOCK_FLAG_PLL_REFCLK_SRC_XTALIN = 0x03,
2747};
2748
2749
2750enum atom_set_dce_clock_pixclk_flag
2751{
2752 DCE_CLOCK_FLAG_PCLK_DEEPCOLOR_RATIO_MASK = 0x03,
2753 DCE_CLOCK_FLAG_PCLK_DEEPCOLOR_RATIO_DIS = 0x00,
2754 DCE_CLOCK_FLAG_PCLK_DEEPCOLOR_RATIO_5_4 = 0x01,
2755 DCE_CLOCK_FLAG_PCLK_DEEPCOLOR_RATIO_3_2 = 0x02,
2756 DCE_CLOCK_FLAG_PCLK_DEEPCOLOR_RATIO_2_1 = 0x03,
2757 DCE_CLOCK_FLAG_PIXCLK_YUV420_MODE = 0x04,
2758};
2759
2760struct set_dce_clock_ps_allocation_v2_1
2761{
2762 struct set_dce_clock_parameters_v2_1 param;
2763 uint32_t ulReserved[2];
2764};
2765
2766
2767
2768
2769
2770struct blank_crtc_parameters
2771{
2772 uint8_t crtc_id;
2773 uint8_t blanking;
2774 uint16_t reserved;
2775 uint32_t reserved1;
2776};
2777
2778enum atom_blank_crtc_command
2779{
2780 ATOM_BLANKING = 1,
2781 ATOM_BLANKING_OFF = 0,
2782};
2783
2784
2785
2786
2787struct enable_crtc_parameters
2788{
2789 uint8_t crtc_id;
2790 uint8_t enable;
2791 uint8_t padding[2];
2792};
2793
2794
2795
2796
2797
2798struct enable_disp_power_gating_parameters_v2_1
2799{
2800 uint8_t disp_pipe_id;
2801 uint8_t enable;
2802 uint8_t padding[2];
2803};
2804
2805struct enable_disp_power_gating_ps_allocation
2806{
2807 struct enable_disp_power_gating_parameters_v2_1 param;
2808 uint32_t ulReserved[4];
2809};
2810
2811
2812
2813
2814struct set_crtc_using_dtd_timing_parameters
2815{
2816 uint16_t h_size;
2817 uint16_t h_blanking_time;
2818 uint16_t v_size;
2819 uint16_t v_blanking_time;
2820 uint16_t h_syncoffset;
2821 uint16_t h_syncwidth;
2822 uint16_t v_syncoffset;
2823 uint16_t v_syncwidth;
2824 uint16_t modemiscinfo;
2825 uint8_t h_border;
2826 uint8_t v_border;
2827 uint8_t crtc_id;
2828 uint8_t encoder_mode;
2829 uint8_t padding[2];
2830};
2831
2832
2833
2834
2835
2836struct process_i2c_channel_transaction_parameters
2837{
2838 uint8_t i2cspeed_khz;
2839 union {
2840 uint8_t regindex;
2841 uint8_t status;
2842 } regind_status;
2843 uint16_t i2c_data_out;
2844 uint8_t flag;
2845 uint8_t trans_bytes;
2846 uint8_t slave_addr;
2847 uint8_t i2c_id;
2848};
2849
2850
2851enum atom_process_i2c_flag
2852{
2853 HW_I2C_WRITE = 1,
2854 HW_I2C_READ = 0,
2855 I2C_2BYTE_ADDR = 0x02,
2856 HW_I2C_SMBUS_BYTE_WR = 0x04,
2857};
2858
2859
2860enum atom_process_i2c_status
2861{
2862 HW_ASSISTED_I2C_STATUS_FAILURE =2,
2863 HW_ASSISTED_I2C_STATUS_SUCCESS =1,
2864};
2865
2866
2867
2868
2869
2870
2871struct process_aux_channel_transaction_parameters_v1_2
2872{
2873 uint16_t aux_request;
2874 uint16_t dataout;
2875 uint8_t channelid;
2876 union {
2877 uint8_t reply_status;
2878 uint8_t aux_delay;
2879 } aux_status_delay;
2880 uint8_t dataout_len;
2881 uint8_t hpd_id;
2882};
2883
2884
2885
2886
2887
2888
2889struct select_crtc_source_parameters_v2_3
2890{
2891 uint8_t crtc_id;
2892 uint8_t encoder_id;
2893 uint8_t encode_mode;
2894 uint8_t dst_bpc;
2895};
2896
2897
2898
2899
2900
2901
2902
2903enum atom_dig_encoder_control_action
2904{
2905 ATOM_ENCODER_CMD_DISABLE_DIG = 0,
2906 ATOM_ENCODER_CMD_ENABLE_DIG = 1,
2907 ATOM_ENCODER_CMD_DP_LINK_TRAINING_START = 0x08,
2908 ATOM_ENCODER_CMD_DP_LINK_TRAINING_PATTERN1 = 0x09,
2909 ATOM_ENCODER_CMD_DP_LINK_TRAINING_PATTERN2 = 0x0a,
2910 ATOM_ENCODER_CMD_DP_LINK_TRAINING_PATTERN3 = 0x13,
2911 ATOM_ENCODER_CMD_DP_LINK_TRAINING_COMPLETE = 0x0b,
2912 ATOM_ENCODER_CMD_DP_VIDEO_OFF = 0x0c,
2913 ATOM_ENCODER_CMD_DP_VIDEO_ON = 0x0d,
2914 ATOM_ENCODER_CMD_SETUP_PANEL_MODE = 0x10,
2915 ATOM_ENCODER_CMD_DP_LINK_TRAINING_PATTERN4 = 0x14,
2916 ATOM_ENCODER_CMD_STREAM_SETUP = 0x0F,
2917 ATOM_ENCODER_CMD_LINK_SETUP = 0x11,
2918 ATOM_ENCODER_CMD_ENCODER_BLANK = 0x12,
2919};
2920
2921
2922enum atom_dig_encoder_control_panelmode
2923{
2924 DP_PANEL_MODE_DISABLE = 0x00,
2925 DP_PANEL_MODE_ENABLE_eDP_MODE = 0x01,
2926 DP_PANEL_MODE_ENABLE_LVLINK_MODE = 0x11,
2927};
2928
2929
2930enum atom_dig_encoder_control_v5_digid
2931{
2932 ATOM_ENCODER_CONFIG_V5_DIG0_ENCODER = 0x00,
2933 ATOM_ENCODER_CONFIG_V5_DIG1_ENCODER = 0x01,
2934 ATOM_ENCODER_CONFIG_V5_DIG2_ENCODER = 0x02,
2935 ATOM_ENCODER_CONFIG_V5_DIG3_ENCODER = 0x03,
2936 ATOM_ENCODER_CONFIG_V5_DIG4_ENCODER = 0x04,
2937 ATOM_ENCODER_CONFIG_V5_DIG5_ENCODER = 0x05,
2938 ATOM_ENCODER_CONFIG_V5_DIG6_ENCODER = 0x06,
2939 ATOM_ENCODER_CONFIG_V5_DIG7_ENCODER = 0x07,
2940};
2941
2942struct dig_encoder_stream_setup_parameters_v1_5
2943{
2944 uint8_t digid;
2945 uint8_t action;
2946 uint8_t digmode;
2947 uint8_t lanenum;
2948 uint32_t pclk_10khz;
2949 uint8_t bitpercolor;
2950 uint8_t dplinkrate_270mhz;
2951 uint8_t reserved[2];
2952};
2953
2954struct dig_encoder_link_setup_parameters_v1_5
2955{
2956 uint8_t digid;
2957 uint8_t action;
2958 uint8_t digmode;
2959 uint8_t lanenum;
2960 uint8_t symclk_10khz;
2961 uint8_t hpd_sel;
2962 uint8_t digfe_sel;
2963 uint8_t reserved[2];
2964};
2965
2966struct dp_panel_mode_set_parameters_v1_5
2967{
2968 uint8_t digid;
2969 uint8_t action;
2970 uint8_t panelmode;
2971 uint8_t reserved1;
2972 uint32_t reserved2[2];
2973};
2974
2975struct dig_encoder_generic_cmd_parameters_v1_5
2976{
2977 uint8_t digid;
2978 uint8_t action;
2979 uint8_t reserved1[2];
2980 uint32_t reserved2[2];
2981};
2982
2983union dig_encoder_control_parameters_v1_5
2984{
2985 struct dig_encoder_generic_cmd_parameters_v1_5 cmd_param;
2986 struct dig_encoder_stream_setup_parameters_v1_5 stream_param;
2987 struct dig_encoder_link_setup_parameters_v1_5 link_param;
2988 struct dp_panel_mode_set_parameters_v1_5 dppanel_param;
2989};
2990
2991
2992
2993
2994
2995
2996struct dig_transmitter_control_parameters_v1_6
2997{
2998 uint8_t phyid;
2999 uint8_t action;
3000 union {
3001 uint8_t digmode;
3002 uint8_t dplaneset;
3003 } mode_laneset;
3004 uint8_t lanenum;
3005 uint32_t symclk_10khz;
3006 uint8_t hpdsel;
3007 uint8_t digfe_sel;
3008 uint8_t connobj_id;
3009 uint8_t reserved;
3010 uint32_t reserved1;
3011};
3012
3013struct dig_transmitter_control_ps_allocation_v1_6
3014{
3015 struct dig_transmitter_control_parameters_v1_6 param;
3016 uint32_t reserved[4];
3017};
3018
3019
3020enum atom_dig_transmitter_control_action
3021{
3022 ATOM_TRANSMITTER_ACTION_DISABLE = 0,
3023 ATOM_TRANSMITTER_ACTION_ENABLE = 1,
3024 ATOM_TRANSMITTER_ACTION_LCD_BLOFF = 2,
3025 ATOM_TRANSMITTER_ACTION_LCD_BLON = 3,
3026 ATOM_TRANSMITTER_ACTION_BL_BRIGHTNESS_CONTROL = 4,
3027 ATOM_TRANSMITTER_ACTION_LCD_SELFTEST_START = 5,
3028 ATOM_TRANSMITTER_ACTION_LCD_SELFTEST_STOP = 6,
3029 ATOM_TRANSMITTER_ACTION_INIT = 7,
3030 ATOM_TRANSMITTER_ACTION_DISABLE_OUTPUT = 8,
3031 ATOM_TRANSMITTER_ACTION_ENABLE_OUTPUT = 9,
3032 ATOM_TRANSMITTER_ACTION_SETUP = 10,
3033 ATOM_TRANSMITTER_ACTION_SETUP_VSEMPH = 11,
3034 ATOM_TRANSMITTER_ACTION_POWER_ON = 12,
3035 ATOM_TRANSMITTER_ACTION_POWER_OFF = 13,
3036};
3037
3038
3039enum atom_dig_transmitter_control_digfe_sel
3040{
3041 ATOM_TRANMSITTER_V6__DIGA_SEL = 0x01,
3042 ATOM_TRANMSITTER_V6__DIGB_SEL = 0x02,
3043 ATOM_TRANMSITTER_V6__DIGC_SEL = 0x04,
3044 ATOM_TRANMSITTER_V6__DIGD_SEL = 0x08,
3045 ATOM_TRANMSITTER_V6__DIGE_SEL = 0x10,
3046 ATOM_TRANMSITTER_V6__DIGF_SEL = 0x20,
3047 ATOM_TRANMSITTER_V6__DIGG_SEL = 0x40,
3048};
3049
3050
3051
3052enum atom_dig_transmitter_control_hpd_sel
3053{
3054 ATOM_TRANSMITTER_V6_NO_HPD_SEL = 0x00,
3055 ATOM_TRANSMITTER_V6_HPD1_SEL = 0x01,
3056 ATOM_TRANSMITTER_V6_HPD2_SEL = 0x02,
3057 ATOM_TRANSMITTER_V6_HPD3_SEL = 0x03,
3058 ATOM_TRANSMITTER_V6_HPD4_SEL = 0x04,
3059 ATOM_TRANSMITTER_V6_HPD5_SEL = 0x05,
3060 ATOM_TRANSMITTER_V6_HPD6_SEL = 0x06,
3061};
3062
3063
3064enum atom_dig_transmitter_control_dplaneset
3065{
3066 DP_LANE_SET__0DB_0_4V = 0x00,
3067 DP_LANE_SET__0DB_0_6V = 0x01,
3068 DP_LANE_SET__0DB_0_8V = 0x02,
3069 DP_LANE_SET__0DB_1_2V = 0x03,
3070 DP_LANE_SET__3_5DB_0_4V = 0x08,
3071 DP_LANE_SET__3_5DB_0_6V = 0x09,
3072 DP_LANE_SET__3_5DB_0_8V = 0x0a,
3073 DP_LANE_SET__6DB_0_4V = 0x10,
3074 DP_LANE_SET__6DB_0_6V = 0x11,
3075 DP_LANE_SET__9_5DB_0_4V = 0x18,
3076};
3077
3078
3079
3080
3081
3082
3083
3084struct external_encoder_control_parameters_v2_4
3085{
3086 uint16_t pixelclock_10khz;
3087 uint8_t config;
3088 uint8_t action;
3089 uint8_t encodermode;
3090 uint8_t lanenum;
3091 uint8_t bitpercolor;
3092 uint8_t hpd_id;
3093};
3094
3095
3096
3097enum external_encoder_control_action_def
3098{
3099 EXTERNAL_ENCODER_ACTION_V3_DISABLE_OUTPUT = 0x00,
3100 EXTERNAL_ENCODER_ACTION_V3_ENABLE_OUTPUT = 0x01,
3101 EXTERNAL_ENCODER_ACTION_V3_ENCODER_INIT = 0x07,
3102 EXTERNAL_ENCODER_ACTION_V3_ENCODER_SETUP = 0x0f,
3103 EXTERNAL_ENCODER_ACTION_V3_ENCODER_BLANKING_OFF = 0x10,
3104 EXTERNAL_ENCODER_ACTION_V3_ENCODER_BLANKING = 0x11,
3105 EXTERNAL_ENCODER_ACTION_V3_DACLOAD_DETECTION = 0x12,
3106 EXTERNAL_ENCODER_ACTION_V3_DDC_SETUP = 0x14,
3107};
3108
3109
3110enum external_encoder_control_v2_4_config_def
3111{
3112 EXTERNAL_ENCODER_CONFIG_V3_DPLINKRATE_MASK = 0x03,
3113 EXTERNAL_ENCODER_CONFIG_V3_DPLINKRATE_1_62GHZ = 0x00,
3114 EXTERNAL_ENCODER_CONFIG_V3_DPLINKRATE_2_70GHZ = 0x01,
3115 EXTERNAL_ENCODER_CONFIG_V3_DPLINKRATE_5_40GHZ = 0x02,
3116 EXTERNAL_ENCODER_CONFIG_V3_DPLINKRATE_3_24GHZ = 0x03,
3117 EXTERNAL_ENCODER_CONFIG_V3_ENCODER_SEL_MAKS = 0x70,
3118 EXTERNAL_ENCODER_CONFIG_V3_ENCODER1 = 0x00,
3119 EXTERNAL_ENCODER_CONFIG_V3_ENCODER2 = 0x10,
3120 EXTERNAL_ENCODER_CONFIG_V3_ENCODER3 = 0x20,
3121};
3122
3123struct external_encoder_control_ps_allocation_v2_4
3124{
3125 struct external_encoder_control_parameters_v2_4 sExtEncoder;
3126 uint32_t reserved[2];
3127};
3128
3129
3130
3131
3132
3133
3134
3135
3136
3137struct amd_acpi_description_header{
3138 uint32_t signature;
3139 uint32_t tableLength;
3140 uint8_t revision;
3141 uint8_t checksum;
3142 uint8_t oemId[6];
3143 uint8_t oemTableId[8];
3144 uint32_t oemRevision;
3145 uint32_t creatorId;
3146 uint32_t creatorRevision;
3147};
3148
3149struct uefi_acpi_vfct{
3150 struct amd_acpi_description_header sheader;
3151 uint8_t tableUUID[16];
3152 uint32_t vbiosimageoffset;
3153 uint32_t lib1Imageoffset;
3154 uint32_t reserved[4];
3155};
3156
3157struct vfct_image_header{
3158 uint32_t pcibus;
3159 uint32_t pcidevice;
3160 uint32_t pcifunction;
3161 uint16_t vendorid;
3162 uint16_t deviceid;
3163 uint16_t ssvid;
3164 uint16_t ssid;
3165 uint32_t revision;
3166 uint32_t imagelength;
3167};
3168
3169
3170struct gop_vbios_content {
3171 struct vfct_image_header vbiosheader;
3172 uint8_t vbioscontent[1];
3173};
3174
3175struct gop_lib1_content {
3176 struct vfct_image_header lib1header;
3177 uint8_t lib1content[1];
3178};
3179
3180
3181
3182
3183
3184
3185
3186
3187
3188
3189
3190enum scratch_register_def{
3191 ATOM_DEVICE_CONNECT_INFO_DEF = 0,
3192 ATOM_BL_BRI_LEVEL_INFO_DEF = 2,
3193 ATOM_ACTIVE_INFO_DEF = 3,
3194 ATOM_LCD_INFO_DEF = 4,
3195 ATOM_DEVICE_REQ_INFO_DEF = 5,
3196 ATOM_ACC_CHANGE_INFO_DEF = 6,
3197 ATOM_PRE_OS_MODE_INFO_DEF = 7,
3198 ATOM_PRE_OS_ASSERTION_DEF = 8,
3199 ATOM_INTERNAL_TIMER_INFO_DEF = 10,
3200};
3201
3202enum scratch_device_connect_info_bit_def{
3203 ATOM_DISPLAY_LCD1_CONNECT =0x0002,
3204 ATOM_DISPLAY_DFP1_CONNECT =0x0008,
3205 ATOM_DISPLAY_DFP2_CONNECT =0x0080,
3206 ATOM_DISPLAY_DFP3_CONNECT =0x0200,
3207 ATOM_DISPLAY_DFP4_CONNECT =0x0400,
3208 ATOM_DISPLAY_DFP5_CONNECT =0x0800,
3209 ATOM_DISPLAY_DFP6_CONNECT =0x0040,
3210 ATOM_DISPLAY_DFPx_CONNECT =0x0ec8,
3211 ATOM_CONNECT_INFO_DEVICE_MASK =0x0fff,
3212};
3213
3214enum scratch_bl_bri_level_info_bit_def{
3215 ATOM_CURRENT_BL_LEVEL_SHIFT =0x8,
3216#ifndef _H2INC
3217 ATOM_CURRENT_BL_LEVEL_MASK =0x0000ff00,
3218 ATOM_DEVICE_DPMS_STATE =0x00010000,
3219#endif
3220};
3221
3222enum scratch_active_info_bits_def{
3223 ATOM_DISPLAY_LCD1_ACTIVE =0x0002,
3224 ATOM_DISPLAY_DFP1_ACTIVE =0x0008,
3225 ATOM_DISPLAY_DFP2_ACTIVE =0x0080,
3226 ATOM_DISPLAY_DFP3_ACTIVE =0x0200,
3227 ATOM_DISPLAY_DFP4_ACTIVE =0x0400,
3228 ATOM_DISPLAY_DFP5_ACTIVE =0x0800,
3229 ATOM_DISPLAY_DFP6_ACTIVE =0x0040,
3230 ATOM_ACTIVE_INFO_DEVICE_MASK =0x0fff,
3231};
3232
3233enum scratch_device_req_info_bits_def{
3234 ATOM_DISPLAY_LCD1_REQ =0x0002,
3235 ATOM_DISPLAY_DFP1_REQ =0x0008,
3236 ATOM_DISPLAY_DFP2_REQ =0x0080,
3237 ATOM_DISPLAY_DFP3_REQ =0x0200,
3238 ATOM_DISPLAY_DFP4_REQ =0x0400,
3239 ATOM_DISPLAY_DFP5_REQ =0x0800,
3240 ATOM_DISPLAY_DFP6_REQ =0x0040,
3241 ATOM_REQ_INFO_DEVICE_MASK =0x0fff,
3242};
3243
3244enum scratch_acc_change_info_bitshift_def{
3245 ATOM_ACC_CHANGE_ACC_MODE_SHIFT =4,
3246 ATOM_ACC_CHANGE_LID_STATUS_SHIFT =6,
3247};
3248
3249enum scratch_acc_change_info_bits_def{
3250 ATOM_ACC_CHANGE_ACC_MODE =0x00000010,
3251 ATOM_ACC_CHANGE_LID_STATUS =0x00000040,
3252};
3253
3254enum scratch_pre_os_mode_info_bits_def{
3255 ATOM_PRE_OS_MODE_MASK =0x00000003,
3256 ATOM_PRE_OS_MODE_VGA =0x00000000,
3257 ATOM_PRE_OS_MODE_VESA =0x00000001,
3258 ATOM_PRE_OS_MODE_GOP =0x00000002,
3259 ATOM_PRE_OS_MODE_PIXEL_DEPTH =0x0000000C,
3260 ATOM_PRE_OS_MODE_PIXEL_FORMAT_MASK=0x000000F0,
3261 ATOM_PRE_OS_MODE_8BIT_PAL_EN =0x00000100,
3262 ATOM_ASIC_INIT_COMPLETE =0x00000200,
3263#ifndef _H2INC
3264 ATOM_PRE_OS_MODE_NUMBER_MASK =0xFFFF0000,
3265#endif
3266};
3267
3268
3269
3270
3271
3272
3273
3274
3275
3276#include "atomfirmwareid.h"
3277#pragma pack()
3278
3279#endif
3280
3281