.. | .. |
---|
177 | 177 | VOLTAGE_TYPE_GENERIC_I2C_10 = 0x1A, |
---|
178 | 178 | }; |
---|
179 | 179 | |
---|
180 | | -enum atom_dgpu_vram_type{ |
---|
| 180 | +enum atom_dgpu_vram_type { |
---|
181 | 181 | ATOM_DGPU_VRAM_TYPE_GDDR5 = 0x50, |
---|
182 | | - ATOM_DGPU_VRAM_TYPE_HBM = 0x60, |
---|
| 182 | + ATOM_DGPU_VRAM_TYPE_HBM2 = 0x60, |
---|
| 183 | + ATOM_DGPU_VRAM_TYPE_GDDR6 = 0x70, |
---|
183 | 184 | }; |
---|
184 | 185 | |
---|
185 | 186 | enum atom_dp_vs_preemph_def{ |
---|
.. | .. |
---|
491 | 492 | /* Total 32bit cap indication */ |
---|
492 | 493 | enum atombios_firmware_capability |
---|
493 | 494 | { |
---|
494 | | - ATOM_FIRMWARE_CAP_FIRMWARE_POSTED = 0x00000001, |
---|
495 | | - ATOM_FIRMWARE_CAP_GPU_VIRTUALIZATION = 0x00000002, |
---|
496 | | - ATOM_FIRMWARE_CAP_WMI_SUPPORT = 0x00000040, |
---|
| 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, |
---|
497 | 502 | }; |
---|
498 | 503 | |
---|
499 | 504 | enum atom_cooling_solution_id{ |
---|
.. | .. |
---|
526 | 531 | uint16_t bootup_mvpp_mv; |
---|
527 | 532 | uint32_t zfbstartaddrin16mb; |
---|
528 | 533 | uint32_t reserved2[3]; |
---|
| 534 | +}; |
---|
| 535 | + |
---|
| 536 | +struct 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; // enum atombios_firmware_capability |
---|
| 543 | + uint32_t main_call_parser_entry; /* direct address of main parser call in VBIOS binary. */ |
---|
| 544 | + uint32_t bios_scratch_reg_startaddr; // 1st bios scratch register dword address |
---|
| 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; /*0: Air cooling; 1: Liquid cooling ... */ |
---|
| 551 | + uint8_t reserved1[2]; |
---|
| 552 | + uint32_t mc_baseaddr_high; |
---|
| 553 | + uint32_t mc_baseaddr_low; |
---|
| 554 | + uint8_t board_i2c_feature_id; // enum of atom_board_i2c_feature_id_def |
---|
| 555 | + uint8_t board_i2c_feature_gpio_id; // i2c id find in gpio_lut data table 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; // if pplib_pptable_id!=0, pplib get powerplay table inside driver instead of from VBIOS |
---|
| 562 | + uint32_t reserved2[2]; |
---|
| 563 | +}; |
---|
| 564 | + |
---|
| 565 | +struct atom_firmware_info_v3_4 { |
---|
| 566 | + struct atom_common_table_header table_header; |
---|
| 567 | + uint32_t firmware_revision; |
---|
| 568 | + uint32_t bootup_sclk_in10khz; |
---|
| 569 | + uint32_t bootup_mclk_in10khz; |
---|
| 570 | + uint32_t firmware_capability; // enum atombios_firmware_capability |
---|
| 571 | + uint32_t main_call_parser_entry; /* direct address of main parser call in VBIOS binary. */ |
---|
| 572 | + uint32_t bios_scratch_reg_startaddr; // 1st bios scratch register dword address |
---|
| 573 | + uint16_t bootup_vddc_mv; |
---|
| 574 | + uint16_t bootup_vddci_mv; |
---|
| 575 | + uint16_t bootup_mvddc_mv; |
---|
| 576 | + uint16_t bootup_vddgfx_mv; |
---|
| 577 | + uint8_t mem_module_id; |
---|
| 578 | + uint8_t coolingsolution_id; /*0: Air cooling; 1: Liquid cooling ... */ |
---|
| 579 | + uint8_t reserved1[2]; |
---|
| 580 | + uint32_t mc_baseaddr_high; |
---|
| 581 | + uint32_t mc_baseaddr_low; |
---|
| 582 | + uint8_t board_i2c_feature_id; // enum of atom_board_i2c_feature_id_def |
---|
| 583 | + uint8_t board_i2c_feature_gpio_id; // i2c id find in gpio_lut data table gpio_id |
---|
| 584 | + uint8_t board_i2c_feature_slave_addr; |
---|
| 585 | + uint8_t reserved3; |
---|
| 586 | + uint16_t bootup_mvddq_mv; |
---|
| 587 | + uint16_t bootup_mvpp_mv; |
---|
| 588 | + uint32_t zfbstartaddrin16mb; |
---|
| 589 | + uint32_t pplib_pptable_id; // if pplib_pptable_id!=0, pplib get powerplay table inside driver instead of from VBIOS |
---|
| 590 | + uint32_t mvdd_ratio; // mvdd_raio = (real mvdd in power rail)*1000/(mvdd_output_from_svi2) |
---|
| 591 | + uint16_t hw_bootup_vddgfx_mv; // hw default vddgfx voltage level decide by board strap |
---|
| 592 | + uint16_t hw_bootup_vddc_mv; // hw default vddc voltage level decide by board strap |
---|
| 593 | + uint16_t hw_bootup_mvddc_mv; // hw default mvddc voltage level decide by board strap |
---|
| 594 | + uint16_t hw_bootup_vddci_mv; // hw default vddci voltage level decide by board strap |
---|
| 595 | + uint32_t maco_pwrlimit_mw; // bomaco mode power limit in unit of m-watt |
---|
| 596 | + uint32_t usb_pwrlimit_mw; // power limit when USB is enable in unit of m-watt |
---|
| 597 | + uint32_t fw_reserved_size_in_kb; // VBIOS reserved extra fw size in unit of kb. |
---|
| 598 | + uint32_t reserved[5]; |
---|
529 | 599 | }; |
---|
530 | 600 | |
---|
531 | 601 | /* |
---|
.. | .. |
---|
686 | 756 | ATOM_ENCODER_CAP_RECORD_HBR2_EN =0x02, // DP1.2 HBR2 setting is qualified and HBR2 can be enabled |
---|
687 | 757 | ATOM_ENCODER_CAP_RECORD_HDMI6Gbps_EN =0x04, // HDMI2.0 6Gbps enable or not. |
---|
688 | 758 | ATOM_ENCODER_CAP_RECORD_HBR3_EN =0x08, // DP1.3 HBR3 is supported by board. |
---|
| 759 | + ATOM_ENCODER_CAP_RECORD_USB_C_TYPE =0x100, // the DP connector is a USB-C type. |
---|
689 | 760 | }; |
---|
690 | 761 | |
---|
691 | 762 | struct atom_encoder_caps_record |
---|
.. | .. |
---|
870 | 941 | uint8_t reserved3[8]; |
---|
871 | 942 | }; |
---|
872 | 943 | |
---|
873 | | - |
---|
874 | 944 | struct atom_display_controller_info_v4_2 |
---|
875 | 945 | { |
---|
876 | 946 | struct atom_common_table_header table_header; |
---|
.. | .. |
---|
905 | 975 | uint8_t reserved3[8]; |
---|
906 | 976 | }; |
---|
907 | 977 | |
---|
| 978 | +struct atom_display_controller_info_v4_4 { |
---|
| 979 | + struct atom_common_table_header table_header; |
---|
| 980 | + uint32_t display_caps; |
---|
| 981 | + uint32_t bootup_dispclk_10khz; |
---|
| 982 | + uint16_t dce_refclk_10khz; |
---|
| 983 | + uint16_t i2c_engine_refclk_10khz; |
---|
| 984 | + uint16_t dvi_ss_percentage; // in unit of 0.001% |
---|
| 985 | + uint16_t dvi_ss_rate_10hz; |
---|
| 986 | + uint16_t hdmi_ss_percentage; // in unit of 0.001% |
---|
| 987 | + uint16_t hdmi_ss_rate_10hz; |
---|
| 988 | + uint16_t dp_ss_percentage; // in unit of 0.001% |
---|
| 989 | + uint16_t dp_ss_rate_10hz; |
---|
| 990 | + uint8_t dvi_ss_mode; // enum of atom_spread_spectrum_mode |
---|
| 991 | + uint8_t hdmi_ss_mode; // enum of atom_spread_spectrum_mode |
---|
| 992 | + uint8_t dp_ss_mode; // enum of atom_spread_spectrum_mode |
---|
| 993 | + uint8_t ss_reserved; |
---|
| 994 | + uint8_t dfp_hardcode_mode_num; // DFP hardcode mode number defined in StandardVESA_TimingTable when EDID is not available |
---|
| 995 | + uint8_t dfp_hardcode_refreshrate;// DFP hardcode mode refreshrate defined in StandardVESA_TimingTable when EDID is not available |
---|
| 996 | + uint8_t vga_hardcode_mode_num; // VGA hardcode mode number defined in StandardVESA_TimingTable when EDID is not avablable |
---|
| 997 | + uint8_t vga_hardcode_refreshrate;// VGA hardcode mode number defined in StandardVESA_TimingTable when EDID is not avablable |
---|
| 998 | + uint16_t dpphy_refclk_10khz; |
---|
| 999 | + uint16_t hw_chip_id; |
---|
| 1000 | + uint8_t dcnip_min_ver; |
---|
| 1001 | + uint8_t dcnip_max_ver; |
---|
| 1002 | + uint8_t max_disp_pipe_num; |
---|
| 1003 | + uint8_t max_vbios_active_disp_pipum; |
---|
| 1004 | + uint8_t max_ppll_num; |
---|
| 1005 | + uint8_t max_disp_phy_num; |
---|
| 1006 | + uint8_t max_aux_pairs; |
---|
| 1007 | + uint8_t remotedisplayconfig; |
---|
| 1008 | + uint32_t dispclk_pll_vco_freq; |
---|
| 1009 | + uint32_t dp_ref_clk_freq; |
---|
| 1010 | + uint32_t max_mclk_chg_lat; // Worst case blackout duration for a memory clock frequency (p-state) change, units of 100s of ns (0.1 us) |
---|
| 1011 | + uint32_t max_sr_exit_lat; // Worst case memory self refresh exit time, units of 100ns of ns (0.1us) |
---|
| 1012 | + uint32_t max_sr_enter_exit_lat; // Worst case memory self refresh entry followed by immediate exit time, units of 100ns of ns (0.1us) |
---|
| 1013 | + uint16_t dc_golden_table_offset; // point of struct of atom_dc_golden_table_vxx |
---|
| 1014 | + uint16_t dc_golden_table_ver; |
---|
| 1015 | + uint32_t reserved3[3]; |
---|
| 1016 | +}; |
---|
| 1017 | + |
---|
| 1018 | +struct atom_dc_golden_table_v1 |
---|
| 1019 | +{ |
---|
| 1020 | + uint32_t aux_dphy_rx_control0_val; |
---|
| 1021 | + uint32_t aux_dphy_tx_control_val; |
---|
| 1022 | + uint32_t aux_dphy_rx_control1_val; |
---|
| 1023 | + uint32_t dc_gpio_aux_ctrl_0_val; |
---|
| 1024 | + uint32_t dc_gpio_aux_ctrl_1_val; |
---|
| 1025 | + uint32_t dc_gpio_aux_ctrl_2_val; |
---|
| 1026 | + uint32_t dc_gpio_aux_ctrl_3_val; |
---|
| 1027 | + uint32_t dc_gpio_aux_ctrl_4_val; |
---|
| 1028 | + uint32_t dc_gpio_aux_ctrl_5_val; |
---|
| 1029 | + uint32_t reserved[23]; |
---|
| 1030 | +}; |
---|
908 | 1031 | |
---|
909 | 1032 | enum dce_info_caps_def |
---|
910 | 1033 | { |
---|
.. | .. |
---|
937 | 1060 | }; |
---|
938 | 1061 | |
---|
939 | 1062 | //usCaps |
---|
940 | | -enum ext_display_path_cap_def |
---|
941 | | -{ |
---|
942 | | - EXT_DISPLAY_PATH_CAPS__HBR2_DISABLE =0x0001, |
---|
943 | | - EXT_DISPLAY_PATH_CAPS__DP_FIXED_VS_EN =0x0002, |
---|
944 | | - EXT_DISPLAY_PATH_CAPS__EXT_CHIP_MASK =0x007C, |
---|
| 1063 | +enum ext_display_path_cap_def { |
---|
| 1064 | + EXT_DISPLAY_PATH_CAPS__HBR2_DISABLE = 0x0001, |
---|
| 1065 | + EXT_DISPLAY_PATH_CAPS__DP_FIXED_VS_EN = 0x0002, |
---|
| 1066 | + EXT_DISPLAY_PATH_CAPS__EXT_CHIP_MASK = 0x007C, |
---|
| 1067 | + EXT_DISPLAY_PATH_CAPS__HDMI20_PI3EQX1204 = (0x01 << 2), //PI redriver chip |
---|
| 1068 | + EXT_DISPLAY_PATH_CAPS__HDMI20_TISN65DP159RSBT = (0x02 << 2), //TI retimer chip |
---|
| 1069 | + EXT_DISPLAY_PATH_CAPS__HDMI20_PARADE_PS175 = (0x03 << 2) //Parade DP->HDMI recoverter chip |
---|
945 | 1070 | }; |
---|
946 | 1071 | |
---|
947 | 1072 | struct atom_external_display_connection_info |
---|
.. | .. |
---|
1043 | 1168 | uint8_t margin_deemph_lane0__deemph_sel_val; |
---|
1044 | 1169 | }; |
---|
1045 | 1170 | |
---|
| 1171 | +struct atom_DCN_dpphy_dvihdmi_tuningset |
---|
| 1172 | +{ |
---|
| 1173 | + uint32_t max_symclk_in10khz; |
---|
| 1174 | + uint8_t encoder_mode; //atom_encode_mode_def, =2: DVI, =3: HDMI mode |
---|
| 1175 | + uint8_t phy_sel; //bit vector of phy, bit0= phya, bit1=phyb, ....bit5 = phyf |
---|
| 1176 | + uint8_t tx_eq_main; // map to RDPCSTX_PHY_FUSE0/1/2/3[5:0](EQ_MAIN) |
---|
| 1177 | + uint8_t tx_eq_pre; // map to RDPCSTX_PHY_FUSE0/1/2/3[11:6](EQ_PRE) |
---|
| 1178 | + uint8_t tx_eq_post; // map to RDPCSTX_PHY_FUSE0/1/2/3[17:12](EQ_POST) |
---|
| 1179 | + uint8_t reserved1; |
---|
| 1180 | + uint8_t tx_vboost_lvl; // tx_vboost_lvl, map to RDPCSTX_PHY_CNTL0.RDPCS_PHY_TX_VBOOST_LVL |
---|
| 1181 | + uint8_t reserved2; |
---|
| 1182 | +}; |
---|
| 1183 | + |
---|
| 1184 | +struct atom_DCN_dpphy_dp_setting{ |
---|
| 1185 | + uint8_t dp_vs_pemph_level; //enum of atom_dp_vs_preemph_def |
---|
| 1186 | + uint8_t tx_eq_main; // map to RDPCSTX_PHY_FUSE0/1/2/3[5:0](EQ_MAIN) |
---|
| 1187 | + uint8_t tx_eq_pre; // map to RDPCSTX_PHY_FUSE0/1/2/3[11:6](EQ_PRE) |
---|
| 1188 | + uint8_t tx_eq_post; // map to RDPCSTX_PHY_FUSE0/1/2/3[17:12](EQ_POST) |
---|
| 1189 | + uint8_t tx_vboost_lvl; // tx_vboost_lvl, map to RDPCSTX_PHY_CNTL0.RDPCS_PHY_TX_VBOOST_LVL |
---|
| 1190 | +}; |
---|
| 1191 | + |
---|
| 1192 | +struct atom_DCN_dpphy_dp_tuningset{ |
---|
| 1193 | + uint8_t phy_sel; // bit vector of phy, bit0= phya, bit1=phyb, ....bit5 = phyf |
---|
| 1194 | + uint8_t version; |
---|
| 1195 | + uint16_t table_size; // size of atom_14nm_dpphy_dp_setting |
---|
| 1196 | + uint16_t reserved; |
---|
| 1197 | + struct atom_DCN_dpphy_dp_setting dptunings[10]; |
---|
| 1198 | +}; |
---|
| 1199 | + |
---|
1046 | 1200 | struct atom_i2c_reg_info { |
---|
1047 | 1201 | uint8_t ucI2cRegIndex; |
---|
1048 | 1202 | uint8_t ucI2cRegVal; |
---|
.. | .. |
---|
1105 | 1259 | uint32_t reserved[66]; |
---|
1106 | 1260 | }; |
---|
1107 | 1261 | |
---|
| 1262 | +struct atom_integrated_system_info_v1_12 |
---|
| 1263 | +{ |
---|
| 1264 | + struct atom_common_table_header table_header; |
---|
| 1265 | + uint32_t vbios_misc; //enum of atom_system_vbiosmisc_def |
---|
| 1266 | + uint32_t gpucapinfo; //enum of atom_system_gpucapinf_def |
---|
| 1267 | + uint32_t system_config; |
---|
| 1268 | + uint32_t cpucapinfo; |
---|
| 1269 | + uint16_t gpuclk_ss_percentage; //unit of 0.001%, 1000 mean 1% |
---|
| 1270 | + uint16_t gpuclk_ss_type; |
---|
| 1271 | + uint16_t lvds_ss_percentage; //unit of 0.001%, 1000 mean 1% |
---|
| 1272 | + uint16_t lvds_ss_rate_10hz; |
---|
| 1273 | + uint16_t hdmi_ss_percentage; //unit of 0.001%, 1000 mean 1% |
---|
| 1274 | + uint16_t hdmi_ss_rate_10hz; |
---|
| 1275 | + uint16_t dvi_ss_percentage; //unit of 0.001%, 1000 mean 1% |
---|
| 1276 | + uint16_t dvi_ss_rate_10hz; |
---|
| 1277 | + uint16_t dpphy_override; // bit vector, enum of atom_sysinfo_dpphy_override_def |
---|
| 1278 | + uint16_t lvds_misc; // enum of atom_sys_info_lvds_misc_def |
---|
| 1279 | + uint16_t backlight_pwm_hz; // pwm frequency in hz |
---|
| 1280 | + uint8_t memorytype; // enum of atom_dmi_t17_mem_type_def, APU memory type indication. |
---|
| 1281 | + uint8_t umachannelnumber; // number of memory channels |
---|
| 1282 | + uint8_t pwr_on_digon_to_de; // all pwr sequence numbers below are in uint of 4ms // |
---|
| 1283 | + uint8_t pwr_on_de_to_vary_bl; |
---|
| 1284 | + uint8_t pwr_down_vary_bloff_to_de; |
---|
| 1285 | + uint8_t pwr_down_de_to_digoff; |
---|
| 1286 | + uint8_t pwr_off_delay; |
---|
| 1287 | + uint8_t pwr_on_vary_bl_to_blon; |
---|
| 1288 | + uint8_t pwr_down_bloff_to_vary_bloff; |
---|
| 1289 | + uint8_t min_allowed_bl_level; |
---|
| 1290 | + uint8_t htc_hyst_limit; |
---|
| 1291 | + uint8_t htc_tmp_limit; |
---|
| 1292 | + uint8_t reserved1; |
---|
| 1293 | + uint8_t reserved2; |
---|
| 1294 | + struct atom_external_display_connection_info extdispconninfo; |
---|
| 1295 | + struct atom_DCN_dpphy_dvihdmi_tuningset TMDS_tuningset; |
---|
| 1296 | + struct atom_DCN_dpphy_dvihdmi_tuningset hdmiCLK5_tuningset; |
---|
| 1297 | + struct atom_DCN_dpphy_dvihdmi_tuningset hdmiCLK8_tuningset; |
---|
| 1298 | + struct atom_DCN_dpphy_dp_tuningset rbr_tuningset; // rbr 1.62G dp tuning set |
---|
| 1299 | + struct atom_DCN_dpphy_dp_tuningset hbr3_tuningset; // HBR3 dp tuning set |
---|
| 1300 | + struct atom_camera_data camera_info; |
---|
| 1301 | + struct atom_hdmi_retimer_redriver_set dp0_retimer_set; //for DP0 |
---|
| 1302 | + struct atom_hdmi_retimer_redriver_set dp1_retimer_set; //for DP1 |
---|
| 1303 | + struct atom_hdmi_retimer_redriver_set dp2_retimer_set; //for DP2 |
---|
| 1304 | + struct atom_hdmi_retimer_redriver_set dp3_retimer_set; //for DP3 |
---|
| 1305 | + struct atom_DCN_dpphy_dp_tuningset hbr_tuningset; //hbr 2.7G dp tuning set |
---|
| 1306 | + struct atom_DCN_dpphy_dp_tuningset hbr2_tuningset; //hbr2 5.4G dp turnig set |
---|
| 1307 | + struct atom_DCN_dpphy_dp_tuningset edp_tunings; //edp tuning set |
---|
| 1308 | + struct atom_DCN_dpphy_dvihdmi_tuningset hdmiCLK6_tuningset; |
---|
| 1309 | + uint32_t reserved[63]; |
---|
| 1310 | +}; |
---|
1108 | 1311 | |
---|
1109 | 1312 | // system_config |
---|
1110 | 1313 | enum atom_system_vbiosmisc_def{ |
---|
.. | .. |
---|
1226 | 1429 | uint32_t rm21_sram_vmin_value; |
---|
1227 | 1430 | }; |
---|
1228 | 1431 | |
---|
1229 | | -struct atom_gfx_info_v2_4 { |
---|
| 1432 | +struct atom_gfx_info_v2_4 |
---|
| 1433 | +{ |
---|
1230 | 1434 | struct atom_common_table_header table_header; |
---|
1231 | 1435 | uint8_t gfxip_min_ver; |
---|
1232 | 1436 | uint8_t gfxip_max_ver; |
---|
1233 | | - uint8_t gc_num_se; |
---|
1234 | | - uint8_t max_tile_pipes; |
---|
1235 | | - uint8_t gc_num_cu_per_sh; |
---|
1236 | | - uint8_t gc_num_sh_per_se; |
---|
1237 | | - uint8_t gc_num_rb_per_se; |
---|
1238 | | - uint8_t gc_num_tccs; |
---|
| 1437 | + uint8_t max_shader_engines; |
---|
| 1438 | + uint8_t reserved; |
---|
| 1439 | + uint8_t max_cu_per_sh; |
---|
| 1440 | + uint8_t max_sh_per_se; |
---|
| 1441 | + uint8_t max_backends_per_se; |
---|
| 1442 | + uint8_t max_texture_channel_caches; |
---|
1239 | 1443 | uint32_t regaddr_cp_dma_src_addr; |
---|
1240 | 1444 | uint32_t regaddr_cp_dma_src_addr_hi; |
---|
1241 | 1445 | uint32_t regaddr_cp_dma_dst_addr; |
---|
.. | .. |
---|
1325 | 1529 | struct atom_common_table_header table_header; |
---|
1326 | 1530 | uint8_t smuip_min_ver; |
---|
1327 | 1531 | uint8_t smuip_max_ver; |
---|
1328 | | - uint8_t smu_rsd1; |
---|
| 1532 | + uint8_t waflclk_ss_mode; |
---|
1329 | 1533 | uint8_t gpuclk_ss_mode; |
---|
1330 | 1534 | uint16_t sclk_ss_percentage; |
---|
1331 | 1535 | uint16_t sclk_ss_rate_10hz; |
---|
.. | .. |
---|
1355 | 1559 | uint32_t syspll3_1_vco_freq_10khz; |
---|
1356 | 1560 | uint32_t bootup_fclk_10khz; |
---|
1357 | 1561 | uint32_t bootup_waflclk_10khz; |
---|
1358 | | - uint32_t reserved[3]; |
---|
| 1562 | + uint32_t smu_info_caps; |
---|
| 1563 | + uint16_t waflclk_ss_percentage; // in unit of 0.001% |
---|
| 1564 | + uint16_t smuinitoffset; |
---|
| 1565 | + uint32_t reserved; |
---|
1359 | 1566 | }; |
---|
1360 | 1567 | |
---|
1361 | 1568 | /* |
---|
.. | .. |
---|
1444 | 1651 | uint8_t padding_vr2[3]; |
---|
1445 | 1652 | |
---|
1446 | 1653 | uint32_t boardreserved[9]; |
---|
| 1654 | +}; |
---|
| 1655 | + |
---|
| 1656 | +/* |
---|
| 1657 | + *************************************************************************** |
---|
| 1658 | + Data Table smc_dpm_info structure |
---|
| 1659 | + *************************************************************************** |
---|
| 1660 | + */ |
---|
| 1661 | +struct atom_smc_dpm_info_v4_3 |
---|
| 1662 | +{ |
---|
| 1663 | + struct atom_common_table_header table_header; |
---|
| 1664 | + uint8_t liquid1_i2c_address; |
---|
| 1665 | + uint8_t liquid2_i2c_address; |
---|
| 1666 | + uint8_t vr_i2c_address; |
---|
| 1667 | + uint8_t plx_i2c_address; |
---|
| 1668 | + |
---|
| 1669 | + uint8_t liquid_i2c_linescl; |
---|
| 1670 | + uint8_t liquid_i2c_linesda; |
---|
| 1671 | + uint8_t vr_i2c_linescl; |
---|
| 1672 | + uint8_t vr_i2c_linesda; |
---|
| 1673 | + |
---|
| 1674 | + uint8_t plx_i2c_linescl; |
---|
| 1675 | + uint8_t plx_i2c_linesda; |
---|
| 1676 | + uint8_t vrsensorpresent; |
---|
| 1677 | + uint8_t liquidsensorpresent; |
---|
| 1678 | + |
---|
| 1679 | + uint16_t maxvoltagestepgfx; |
---|
| 1680 | + uint16_t maxvoltagestepsoc; |
---|
| 1681 | + |
---|
| 1682 | + uint8_t vddgfxvrmapping; |
---|
| 1683 | + uint8_t vddsocvrmapping; |
---|
| 1684 | + uint8_t vddmem0vrmapping; |
---|
| 1685 | + uint8_t vddmem1vrmapping; |
---|
| 1686 | + |
---|
| 1687 | + uint8_t gfxulvphasesheddingmask; |
---|
| 1688 | + uint8_t soculvphasesheddingmask; |
---|
| 1689 | + uint8_t externalsensorpresent; |
---|
| 1690 | + uint8_t padding8_v; |
---|
| 1691 | + |
---|
| 1692 | + uint16_t gfxmaxcurrent; |
---|
| 1693 | + uint8_t gfxoffset; |
---|
| 1694 | + uint8_t padding_telemetrygfx; |
---|
| 1695 | + |
---|
| 1696 | + uint16_t socmaxcurrent; |
---|
| 1697 | + uint8_t socoffset; |
---|
| 1698 | + uint8_t padding_telemetrysoc; |
---|
| 1699 | + |
---|
| 1700 | + uint16_t mem0maxcurrent; |
---|
| 1701 | + uint8_t mem0offset; |
---|
| 1702 | + uint8_t padding_telemetrymem0; |
---|
| 1703 | + |
---|
| 1704 | + uint16_t mem1maxcurrent; |
---|
| 1705 | + uint8_t mem1offset; |
---|
| 1706 | + uint8_t padding_telemetrymem1; |
---|
| 1707 | + |
---|
| 1708 | + uint8_t acdcgpio; |
---|
| 1709 | + uint8_t acdcpolarity; |
---|
| 1710 | + uint8_t vr0hotgpio; |
---|
| 1711 | + uint8_t vr0hotpolarity; |
---|
| 1712 | + |
---|
| 1713 | + uint8_t vr1hotgpio; |
---|
| 1714 | + uint8_t vr1hotpolarity; |
---|
| 1715 | + uint8_t padding1; |
---|
| 1716 | + uint8_t padding2; |
---|
| 1717 | + |
---|
| 1718 | + uint8_t ledpin0; |
---|
| 1719 | + uint8_t ledpin1; |
---|
| 1720 | + uint8_t ledpin2; |
---|
| 1721 | + uint8_t padding8_4; |
---|
| 1722 | + |
---|
| 1723 | + uint8_t pllgfxclkspreadenabled; |
---|
| 1724 | + uint8_t pllgfxclkspreadpercent; |
---|
| 1725 | + uint16_t pllgfxclkspreadfreq; |
---|
| 1726 | + |
---|
| 1727 | + uint8_t uclkspreadenabled; |
---|
| 1728 | + uint8_t uclkspreadpercent; |
---|
| 1729 | + uint16_t uclkspreadfreq; |
---|
| 1730 | + |
---|
| 1731 | + uint8_t fclkspreadenabled; |
---|
| 1732 | + uint8_t fclkspreadpercent; |
---|
| 1733 | + uint16_t fclkspreadfreq; |
---|
| 1734 | + |
---|
| 1735 | + uint8_t fllgfxclkspreadenabled; |
---|
| 1736 | + uint8_t fllgfxclkspreadpercent; |
---|
| 1737 | + uint16_t fllgfxclkspreadfreq; |
---|
| 1738 | + |
---|
| 1739 | + uint32_t boardreserved[10]; |
---|
| 1740 | +}; |
---|
| 1741 | + |
---|
| 1742 | +struct smudpm_i2ccontrollerconfig_t { |
---|
| 1743 | + uint32_t enabled; |
---|
| 1744 | + uint32_t slaveaddress; |
---|
| 1745 | + uint32_t controllerport; |
---|
| 1746 | + uint32_t controllername; |
---|
| 1747 | + uint32_t thermalthrottler; |
---|
| 1748 | + uint32_t i2cprotocol; |
---|
| 1749 | + uint32_t i2cspeed; |
---|
| 1750 | +}; |
---|
| 1751 | + |
---|
| 1752 | +struct atom_smc_dpm_info_v4_4 |
---|
| 1753 | +{ |
---|
| 1754 | + struct atom_common_table_header table_header; |
---|
| 1755 | + uint32_t i2c_padding[3]; |
---|
| 1756 | + |
---|
| 1757 | + uint16_t maxvoltagestepgfx; |
---|
| 1758 | + uint16_t maxvoltagestepsoc; |
---|
| 1759 | + |
---|
| 1760 | + uint8_t vddgfxvrmapping; |
---|
| 1761 | + uint8_t vddsocvrmapping; |
---|
| 1762 | + uint8_t vddmem0vrmapping; |
---|
| 1763 | + uint8_t vddmem1vrmapping; |
---|
| 1764 | + |
---|
| 1765 | + uint8_t gfxulvphasesheddingmask; |
---|
| 1766 | + uint8_t soculvphasesheddingmask; |
---|
| 1767 | + uint8_t externalsensorpresent; |
---|
| 1768 | + uint8_t padding8_v; |
---|
| 1769 | + |
---|
| 1770 | + uint16_t gfxmaxcurrent; |
---|
| 1771 | + uint8_t gfxoffset; |
---|
| 1772 | + uint8_t padding_telemetrygfx; |
---|
| 1773 | + |
---|
| 1774 | + uint16_t socmaxcurrent; |
---|
| 1775 | + uint8_t socoffset; |
---|
| 1776 | + uint8_t padding_telemetrysoc; |
---|
| 1777 | + |
---|
| 1778 | + uint16_t mem0maxcurrent; |
---|
| 1779 | + uint8_t mem0offset; |
---|
| 1780 | + uint8_t padding_telemetrymem0; |
---|
| 1781 | + |
---|
| 1782 | + uint16_t mem1maxcurrent; |
---|
| 1783 | + uint8_t mem1offset; |
---|
| 1784 | + uint8_t padding_telemetrymem1; |
---|
| 1785 | + |
---|
| 1786 | + |
---|
| 1787 | + uint8_t acdcgpio; |
---|
| 1788 | + uint8_t acdcpolarity; |
---|
| 1789 | + uint8_t vr0hotgpio; |
---|
| 1790 | + uint8_t vr0hotpolarity; |
---|
| 1791 | + |
---|
| 1792 | + uint8_t vr1hotgpio; |
---|
| 1793 | + uint8_t vr1hotpolarity; |
---|
| 1794 | + uint8_t padding1; |
---|
| 1795 | + uint8_t padding2; |
---|
| 1796 | + |
---|
| 1797 | + |
---|
| 1798 | + uint8_t ledpin0; |
---|
| 1799 | + uint8_t ledpin1; |
---|
| 1800 | + uint8_t ledpin2; |
---|
| 1801 | + uint8_t padding8_4; |
---|
| 1802 | + |
---|
| 1803 | + |
---|
| 1804 | + uint8_t pllgfxclkspreadenabled; |
---|
| 1805 | + uint8_t pllgfxclkspreadpercent; |
---|
| 1806 | + uint16_t pllgfxclkspreadfreq; |
---|
| 1807 | + |
---|
| 1808 | + |
---|
| 1809 | + uint8_t uclkspreadenabled; |
---|
| 1810 | + uint8_t uclkspreadpercent; |
---|
| 1811 | + uint16_t uclkspreadfreq; |
---|
| 1812 | + |
---|
| 1813 | + |
---|
| 1814 | + uint8_t fclkspreadenabled; |
---|
| 1815 | + uint8_t fclkspreadpercent; |
---|
| 1816 | + uint16_t fclkspreadfreq; |
---|
| 1817 | + |
---|
| 1818 | + |
---|
| 1819 | + uint8_t fllgfxclkspreadenabled; |
---|
| 1820 | + uint8_t fllgfxclkspreadpercent; |
---|
| 1821 | + uint16_t fllgfxclkspreadfreq; |
---|
| 1822 | + |
---|
| 1823 | + |
---|
| 1824 | + struct smudpm_i2ccontrollerconfig_t i2ccontrollers[7]; |
---|
| 1825 | + |
---|
| 1826 | + |
---|
| 1827 | + uint32_t boardreserved[10]; |
---|
| 1828 | +}; |
---|
| 1829 | + |
---|
| 1830 | +enum smudpm_v4_5_i2ccontrollername_e{ |
---|
| 1831 | + SMC_V4_5_I2C_CONTROLLER_NAME_VR_GFX = 0, |
---|
| 1832 | + SMC_V4_5_I2C_CONTROLLER_NAME_VR_SOC, |
---|
| 1833 | + SMC_V4_5_I2C_CONTROLLER_NAME_VR_VDDCI, |
---|
| 1834 | + SMC_V4_5_I2C_CONTROLLER_NAME_VR_MVDD, |
---|
| 1835 | + SMC_V4_5_I2C_CONTROLLER_NAME_LIQUID0, |
---|
| 1836 | + SMC_V4_5_I2C_CONTROLLER_NAME_LIQUID1, |
---|
| 1837 | + SMC_V4_5_I2C_CONTROLLER_NAME_PLX, |
---|
| 1838 | + SMC_V4_5_I2C_CONTROLLER_NAME_SPARE, |
---|
| 1839 | + SMC_V4_5_I2C_CONTROLLER_NAME_COUNT, |
---|
| 1840 | +}; |
---|
| 1841 | + |
---|
| 1842 | +enum smudpm_v4_5_i2ccontrollerthrottler_e{ |
---|
| 1843 | + SMC_V4_5_I2C_CONTROLLER_THROTTLER_TYPE_NONE = 0, |
---|
| 1844 | + SMC_V4_5_I2C_CONTROLLER_THROTTLER_VR_GFX, |
---|
| 1845 | + SMC_V4_5_I2C_CONTROLLER_THROTTLER_VR_SOC, |
---|
| 1846 | + SMC_V4_5_I2C_CONTROLLER_THROTTLER_VR_VDDCI, |
---|
| 1847 | + SMC_V4_5_I2C_CONTROLLER_THROTTLER_VR_MVDD, |
---|
| 1848 | + SMC_V4_5_I2C_CONTROLLER_THROTTLER_LIQUID0, |
---|
| 1849 | + SMC_V4_5_I2C_CONTROLLER_THROTTLER_LIQUID1, |
---|
| 1850 | + SMC_V4_5_I2C_CONTROLLER_THROTTLER_PLX, |
---|
| 1851 | + SMC_V4_5_I2C_CONTROLLER_THROTTLER_COUNT, |
---|
| 1852 | +}; |
---|
| 1853 | + |
---|
| 1854 | +enum smudpm_v4_5_i2ccontrollerprotocol_e{ |
---|
| 1855 | + SMC_V4_5_I2C_CONTROLLER_PROTOCOL_VR_0, |
---|
| 1856 | + SMC_V4_5_I2C_CONTROLLER_PROTOCOL_VR_1, |
---|
| 1857 | + SMC_V4_5_I2C_CONTROLLER_PROTOCOL_TMP_0, |
---|
| 1858 | + SMC_V4_5_I2C_CONTROLLER_PROTOCOL_TMP_1, |
---|
| 1859 | + SMC_V4_5_I2C_CONTROLLER_PROTOCOL_SPARE_0, |
---|
| 1860 | + SMC_V4_5_I2C_CONTROLLER_PROTOCOL_SPARE_1, |
---|
| 1861 | + SMC_V4_5_I2C_CONTROLLER_PROTOCOL_COUNT, |
---|
| 1862 | +}; |
---|
| 1863 | + |
---|
| 1864 | +struct smudpm_i2c_controller_config_v2 |
---|
| 1865 | +{ |
---|
| 1866 | + uint8_t Enabled; |
---|
| 1867 | + uint8_t Speed; |
---|
| 1868 | + uint8_t Padding[2]; |
---|
| 1869 | + uint32_t SlaveAddress; |
---|
| 1870 | + uint8_t ControllerPort; |
---|
| 1871 | + uint8_t ControllerName; |
---|
| 1872 | + uint8_t ThermalThrotter; |
---|
| 1873 | + uint8_t I2cProtocol; |
---|
| 1874 | +}; |
---|
| 1875 | + |
---|
| 1876 | +struct atom_smc_dpm_info_v4_5 |
---|
| 1877 | +{ |
---|
| 1878 | + struct atom_common_table_header table_header; |
---|
| 1879 | + // SECTION: BOARD PARAMETERS |
---|
| 1880 | + // I2C Control |
---|
| 1881 | + struct smudpm_i2c_controller_config_v2 I2cControllers[8]; |
---|
| 1882 | + |
---|
| 1883 | + // SVI2 Board Parameters |
---|
| 1884 | + uint16_t MaxVoltageStepGfx; // In mV(Q2) Max voltage step that SMU will request. Multiple steps are taken if voltage change exceeds this value. |
---|
| 1885 | + uint16_t MaxVoltageStepSoc; // In mV(Q2) Max voltage step that SMU will request. Multiple steps are taken if voltage change exceeds this value. |
---|
| 1886 | + |
---|
| 1887 | + uint8_t VddGfxVrMapping; // Use VR_MAPPING* bitfields |
---|
| 1888 | + uint8_t VddSocVrMapping; // Use VR_MAPPING* bitfields |
---|
| 1889 | + uint8_t VddMem0VrMapping; // Use VR_MAPPING* bitfields |
---|
| 1890 | + uint8_t VddMem1VrMapping; // Use VR_MAPPING* bitfields |
---|
| 1891 | + |
---|
| 1892 | + uint8_t GfxUlvPhaseSheddingMask; // set this to 1 to set PSI0/1 to 1 in ULV mode |
---|
| 1893 | + uint8_t SocUlvPhaseSheddingMask; // set this to 1 to set PSI0/1 to 1 in ULV mode |
---|
| 1894 | + uint8_t ExternalSensorPresent; // External RDI connected to TMON (aka TEMP IN) |
---|
| 1895 | + uint8_t Padding8_V; |
---|
| 1896 | + |
---|
| 1897 | + // Telemetry Settings |
---|
| 1898 | + uint16_t GfxMaxCurrent; // in Amps |
---|
| 1899 | + uint8_t GfxOffset; // in Amps |
---|
| 1900 | + uint8_t Padding_TelemetryGfx; |
---|
| 1901 | + uint16_t SocMaxCurrent; // in Amps |
---|
| 1902 | + uint8_t SocOffset; // in Amps |
---|
| 1903 | + uint8_t Padding_TelemetrySoc; |
---|
| 1904 | + |
---|
| 1905 | + uint16_t Mem0MaxCurrent; // in Amps |
---|
| 1906 | + uint8_t Mem0Offset; // in Amps |
---|
| 1907 | + uint8_t Padding_TelemetryMem0; |
---|
| 1908 | + |
---|
| 1909 | + uint16_t Mem1MaxCurrent; // in Amps |
---|
| 1910 | + uint8_t Mem1Offset; // in Amps |
---|
| 1911 | + uint8_t Padding_TelemetryMem1; |
---|
| 1912 | + |
---|
| 1913 | + // GPIO Settings |
---|
| 1914 | + uint8_t AcDcGpio; // GPIO pin configured for AC/DC switching |
---|
| 1915 | + uint8_t AcDcPolarity; // GPIO polarity for AC/DC switching |
---|
| 1916 | + uint8_t VR0HotGpio; // GPIO pin configured for VR0 HOT event |
---|
| 1917 | + uint8_t VR0HotPolarity; // GPIO polarity for VR0 HOT event |
---|
| 1918 | + |
---|
| 1919 | + uint8_t VR1HotGpio; // GPIO pin configured for VR1 HOT event |
---|
| 1920 | + uint8_t VR1HotPolarity; // GPIO polarity for VR1 HOT event |
---|
| 1921 | + uint8_t GthrGpio; // GPIO pin configured for GTHR Event |
---|
| 1922 | + uint8_t GthrPolarity; // replace GPIO polarity for GTHR |
---|
| 1923 | + |
---|
| 1924 | + // LED Display Settings |
---|
| 1925 | + uint8_t LedPin0; // GPIO number for LedPin[0] |
---|
| 1926 | + uint8_t LedPin1; // GPIO number for LedPin[1] |
---|
| 1927 | + uint8_t LedPin2; // GPIO number for LedPin[2] |
---|
| 1928 | + uint8_t padding8_4; |
---|
| 1929 | + |
---|
| 1930 | + // GFXCLK PLL Spread Spectrum |
---|
| 1931 | + uint8_t PllGfxclkSpreadEnabled; // on or off |
---|
| 1932 | + uint8_t PllGfxclkSpreadPercent; // Q4.4 |
---|
| 1933 | + uint16_t PllGfxclkSpreadFreq; // kHz |
---|
| 1934 | + |
---|
| 1935 | + // GFXCLK DFLL Spread Spectrum |
---|
| 1936 | + uint8_t DfllGfxclkSpreadEnabled; // on or off |
---|
| 1937 | + uint8_t DfllGfxclkSpreadPercent; // Q4.4 |
---|
| 1938 | + uint16_t DfllGfxclkSpreadFreq; // kHz |
---|
| 1939 | + |
---|
| 1940 | + // UCLK Spread Spectrum |
---|
| 1941 | + uint8_t UclkSpreadEnabled; // on or off |
---|
| 1942 | + uint8_t UclkSpreadPercent; // Q4.4 |
---|
| 1943 | + uint16_t UclkSpreadFreq; // kHz |
---|
| 1944 | + |
---|
| 1945 | + // SOCCLK Spread Spectrum |
---|
| 1946 | + uint8_t SoclkSpreadEnabled; // on or off |
---|
| 1947 | + uint8_t SocclkSpreadPercent; // Q4.4 |
---|
| 1948 | + uint16_t SocclkSpreadFreq; // kHz |
---|
| 1949 | + |
---|
| 1950 | + // Total board power |
---|
| 1951 | + uint16_t TotalBoardPower; //Only needed for TCP Estimated case, where TCP = TGP+Total Board Power |
---|
| 1952 | + uint16_t BoardPadding; |
---|
| 1953 | + |
---|
| 1954 | + // Mvdd Svi2 Div Ratio Setting |
---|
| 1955 | + uint32_t MvddRatio; // This is used for MVDD Vid workaround. It has 16 fractional bits (Q16.16) |
---|
| 1956 | + |
---|
| 1957 | + uint32_t BoardReserved[9]; |
---|
| 1958 | + |
---|
| 1959 | +}; |
---|
| 1960 | + |
---|
| 1961 | +struct atom_smc_dpm_info_v4_6 |
---|
| 1962 | +{ |
---|
| 1963 | + struct atom_common_table_header table_header; |
---|
| 1964 | + // section: board parameters |
---|
| 1965 | + uint32_t i2c_padding[3]; // old i2c control are moved to new area |
---|
| 1966 | + |
---|
| 1967 | + uint16_t maxvoltagestepgfx; // in mv(q2) max voltage step that smu will request. multiple steps are taken if voltage change exceeds this value. |
---|
| 1968 | + uint16_t maxvoltagestepsoc; // in mv(q2) max voltage step that smu will request. multiple steps are taken if voltage change exceeds this value. |
---|
| 1969 | + |
---|
| 1970 | + uint8_t vddgfxvrmapping; // use vr_mapping* bitfields |
---|
| 1971 | + uint8_t vddsocvrmapping; // use vr_mapping* bitfields |
---|
| 1972 | + uint8_t vddmemvrmapping; // use vr_mapping* bitfields |
---|
| 1973 | + uint8_t boardvrmapping; // use vr_mapping* bitfields |
---|
| 1974 | + |
---|
| 1975 | + uint8_t gfxulvphasesheddingmask; // set this to 1 to set psi0/1 to 1 in ulv mode |
---|
| 1976 | + uint8_t externalsensorpresent; // external rdi connected to tmon (aka temp in) |
---|
| 1977 | + uint8_t padding8_v[2]; |
---|
| 1978 | + |
---|
| 1979 | + // telemetry settings |
---|
| 1980 | + uint16_t gfxmaxcurrent; // in amps |
---|
| 1981 | + uint8_t gfxoffset; // in amps |
---|
| 1982 | + uint8_t padding_telemetrygfx; |
---|
| 1983 | + |
---|
| 1984 | + uint16_t socmaxcurrent; // in amps |
---|
| 1985 | + uint8_t socoffset; // in amps |
---|
| 1986 | + uint8_t padding_telemetrysoc; |
---|
| 1987 | + |
---|
| 1988 | + uint16_t memmaxcurrent; // in amps |
---|
| 1989 | + uint8_t memoffset; // in amps |
---|
| 1990 | + uint8_t padding_telemetrymem; |
---|
| 1991 | + |
---|
| 1992 | + uint16_t boardmaxcurrent; // in amps |
---|
| 1993 | + uint8_t boardoffset; // in amps |
---|
| 1994 | + uint8_t padding_telemetryboardinput; |
---|
| 1995 | + |
---|
| 1996 | + // gpio settings |
---|
| 1997 | + uint8_t vr0hotgpio; // gpio pin configured for vr0 hot event |
---|
| 1998 | + uint8_t vr0hotpolarity; // gpio polarity for vr0 hot event |
---|
| 1999 | + uint8_t vr1hotgpio; // gpio pin configured for vr1 hot event |
---|
| 2000 | + uint8_t vr1hotpolarity; // gpio polarity for vr1 hot event |
---|
| 2001 | + |
---|
| 2002 | + // gfxclk pll spread spectrum |
---|
| 2003 | + uint8_t pllgfxclkspreadenabled; // on or off |
---|
| 2004 | + uint8_t pllgfxclkspreadpercent; // q4.4 |
---|
| 2005 | + uint16_t pllgfxclkspreadfreq; // khz |
---|
| 2006 | + |
---|
| 2007 | + // uclk spread spectrum |
---|
| 2008 | + uint8_t uclkspreadenabled; // on or off |
---|
| 2009 | + uint8_t uclkspreadpercent; // q4.4 |
---|
| 2010 | + uint16_t uclkspreadfreq; // khz |
---|
| 2011 | + |
---|
| 2012 | + // fclk spread spectrum |
---|
| 2013 | + uint8_t fclkspreadenabled; // on or off |
---|
| 2014 | + uint8_t fclkspreadpercent; // q4.4 |
---|
| 2015 | + uint16_t fclkspreadfreq; // khz |
---|
| 2016 | + |
---|
| 2017 | + |
---|
| 2018 | + // gfxclk fll spread spectrum |
---|
| 2019 | + uint8_t fllgfxclkspreadenabled; // on or off |
---|
| 2020 | + uint8_t fllgfxclkspreadpercent; // q4.4 |
---|
| 2021 | + uint16_t fllgfxclkspreadfreq; // khz |
---|
| 2022 | + |
---|
| 2023 | + // i2c controller structure |
---|
| 2024 | + struct smudpm_i2c_controller_config_v2 i2ccontrollers[8]; |
---|
| 2025 | + |
---|
| 2026 | + // memory section |
---|
| 2027 | + uint32_t memorychannelenabled; // for dram use only, max 32 channels enabled bit mask. |
---|
| 2028 | + |
---|
| 2029 | + uint8_t drambitwidth; // for dram use only. see dram bit width type defines |
---|
| 2030 | + uint8_t paddingmem[3]; |
---|
| 2031 | + |
---|
| 2032 | + // total board power |
---|
| 2033 | + uint16_t totalboardpower; //only needed for tcp estimated case, where tcp = tgp+total board power |
---|
| 2034 | + uint16_t boardpadding; |
---|
| 2035 | + |
---|
| 2036 | + // section: xgmi training |
---|
| 2037 | + uint8_t xgmilinkspeed[4]; |
---|
| 2038 | + uint8_t xgmilinkwidth[4]; |
---|
| 2039 | + |
---|
| 2040 | + uint16_t xgmifclkfreq[4]; |
---|
| 2041 | + uint16_t xgmisocvoltage[4]; |
---|
| 2042 | + |
---|
| 2043 | + // reserved |
---|
| 2044 | + uint32_t boardreserved[10]; |
---|
| 2045 | +}; |
---|
| 2046 | + |
---|
| 2047 | +struct atom_smc_dpm_info_v4_7 |
---|
| 2048 | +{ |
---|
| 2049 | + struct atom_common_table_header table_header; |
---|
| 2050 | + // SECTION: BOARD PARAMETERS |
---|
| 2051 | + // I2C Control |
---|
| 2052 | + struct smudpm_i2c_controller_config_v2 I2cControllers[8]; |
---|
| 2053 | + |
---|
| 2054 | + // SVI2 Board Parameters |
---|
| 2055 | + uint16_t MaxVoltageStepGfx; // In mV(Q2) Max voltage step that SMU will request. Multiple steps are taken if voltage change exceeds this value. |
---|
| 2056 | + uint16_t MaxVoltageStepSoc; // In mV(Q2) Max voltage step that SMU will request. Multiple steps are taken if voltage change exceeds this value. |
---|
| 2057 | + |
---|
| 2058 | + uint8_t VddGfxVrMapping; // Use VR_MAPPING* bitfields |
---|
| 2059 | + uint8_t VddSocVrMapping; // Use VR_MAPPING* bitfields |
---|
| 2060 | + uint8_t VddMem0VrMapping; // Use VR_MAPPING* bitfields |
---|
| 2061 | + uint8_t VddMem1VrMapping; // Use VR_MAPPING* bitfields |
---|
| 2062 | + |
---|
| 2063 | + uint8_t GfxUlvPhaseSheddingMask; // set this to 1 to set PSI0/1 to 1 in ULV mode |
---|
| 2064 | + uint8_t SocUlvPhaseSheddingMask; // set this to 1 to set PSI0/1 to 1 in ULV mode |
---|
| 2065 | + uint8_t ExternalSensorPresent; // External RDI connected to TMON (aka TEMP IN) |
---|
| 2066 | + uint8_t Padding8_V; |
---|
| 2067 | + |
---|
| 2068 | + // Telemetry Settings |
---|
| 2069 | + uint16_t GfxMaxCurrent; // in Amps |
---|
| 2070 | + uint8_t GfxOffset; // in Amps |
---|
| 2071 | + uint8_t Padding_TelemetryGfx; |
---|
| 2072 | + uint16_t SocMaxCurrent; // in Amps |
---|
| 2073 | + uint8_t SocOffset; // in Amps |
---|
| 2074 | + uint8_t Padding_TelemetrySoc; |
---|
| 2075 | + |
---|
| 2076 | + uint16_t Mem0MaxCurrent; // in Amps |
---|
| 2077 | + uint8_t Mem0Offset; // in Amps |
---|
| 2078 | + uint8_t Padding_TelemetryMem0; |
---|
| 2079 | + |
---|
| 2080 | + uint16_t Mem1MaxCurrent; // in Amps |
---|
| 2081 | + uint8_t Mem1Offset; // in Amps |
---|
| 2082 | + uint8_t Padding_TelemetryMem1; |
---|
| 2083 | + |
---|
| 2084 | + // GPIO Settings |
---|
| 2085 | + uint8_t AcDcGpio; // GPIO pin configured for AC/DC switching |
---|
| 2086 | + uint8_t AcDcPolarity; // GPIO polarity for AC/DC switching |
---|
| 2087 | + uint8_t VR0HotGpio; // GPIO pin configured for VR0 HOT event |
---|
| 2088 | + uint8_t VR0HotPolarity; // GPIO polarity for VR0 HOT event |
---|
| 2089 | + |
---|
| 2090 | + uint8_t VR1HotGpio; // GPIO pin configured for VR1 HOT event |
---|
| 2091 | + uint8_t VR1HotPolarity; // GPIO polarity for VR1 HOT event |
---|
| 2092 | + uint8_t GthrGpio; // GPIO pin configured for GTHR Event |
---|
| 2093 | + uint8_t GthrPolarity; // replace GPIO polarity for GTHR |
---|
| 2094 | + |
---|
| 2095 | + // LED Display Settings |
---|
| 2096 | + uint8_t LedPin0; // GPIO number for LedPin[0] |
---|
| 2097 | + uint8_t LedPin1; // GPIO number for LedPin[1] |
---|
| 2098 | + uint8_t LedPin2; // GPIO number for LedPin[2] |
---|
| 2099 | + uint8_t padding8_4; |
---|
| 2100 | + |
---|
| 2101 | + // GFXCLK PLL Spread Spectrum |
---|
| 2102 | + uint8_t PllGfxclkSpreadEnabled; // on or off |
---|
| 2103 | + uint8_t PllGfxclkSpreadPercent; // Q4.4 |
---|
| 2104 | + uint16_t PllGfxclkSpreadFreq; // kHz |
---|
| 2105 | + |
---|
| 2106 | + // GFXCLK DFLL Spread Spectrum |
---|
| 2107 | + uint8_t DfllGfxclkSpreadEnabled; // on or off |
---|
| 2108 | + uint8_t DfllGfxclkSpreadPercent; // Q4.4 |
---|
| 2109 | + uint16_t DfllGfxclkSpreadFreq; // kHz |
---|
| 2110 | + |
---|
| 2111 | + // UCLK Spread Spectrum |
---|
| 2112 | + uint8_t UclkSpreadEnabled; // on or off |
---|
| 2113 | + uint8_t UclkSpreadPercent; // Q4.4 |
---|
| 2114 | + uint16_t UclkSpreadFreq; // kHz |
---|
| 2115 | + |
---|
| 2116 | + // SOCCLK Spread Spectrum |
---|
| 2117 | + uint8_t SoclkSpreadEnabled; // on or off |
---|
| 2118 | + uint8_t SocclkSpreadPercent; // Q4.4 |
---|
| 2119 | + uint16_t SocclkSpreadFreq; // kHz |
---|
| 2120 | + |
---|
| 2121 | + // Total board power |
---|
| 2122 | + uint16_t TotalBoardPower; //Only needed for TCP Estimated case, where TCP = TGP+Total Board Power |
---|
| 2123 | + uint16_t BoardPadding; |
---|
| 2124 | + |
---|
| 2125 | + // Mvdd Svi2 Div Ratio Setting |
---|
| 2126 | + uint32_t MvddRatio; // This is used for MVDD Vid workaround. It has 16 fractional bits (Q16.16) |
---|
| 2127 | + |
---|
| 2128 | + // GPIO pins for I2C communications with 2nd controller for Input Telemetry Sequence |
---|
| 2129 | + uint8_t GpioI2cScl; // Serial Clock |
---|
| 2130 | + uint8_t GpioI2cSda; // Serial Data |
---|
| 2131 | + uint16_t GpioPadding; |
---|
| 2132 | + |
---|
| 2133 | + // Additional LED Display Settings |
---|
| 2134 | + uint8_t LedPin3; // GPIO number for LedPin[3] - PCIE GEN Speed |
---|
| 2135 | + uint8_t LedPin4; // GPIO number for LedPin[4] - PMFW Error Status |
---|
| 2136 | + uint16_t LedEnableMask; |
---|
| 2137 | + |
---|
| 2138 | + // Power Limit Scalars |
---|
| 2139 | + uint8_t PowerLimitScalar[4]; //[PPT_THROTTLER_COUNT] |
---|
| 2140 | + |
---|
| 2141 | + uint8_t MvddUlvPhaseSheddingMask; |
---|
| 2142 | + uint8_t VddciUlvPhaseSheddingMask; |
---|
| 2143 | + uint8_t Padding8_Psi1; |
---|
| 2144 | + uint8_t Padding8_Psi2; |
---|
| 2145 | + |
---|
| 2146 | + uint32_t BoardReserved[5]; |
---|
| 2147 | +}; |
---|
| 2148 | + |
---|
| 2149 | +struct smudpm_i2c_controller_config_v3 |
---|
| 2150 | +{ |
---|
| 2151 | + uint8_t Enabled; |
---|
| 2152 | + uint8_t Speed; |
---|
| 2153 | + uint8_t SlaveAddress; |
---|
| 2154 | + uint8_t ControllerPort; |
---|
| 2155 | + uint8_t ControllerName; |
---|
| 2156 | + uint8_t ThermalThrotter; |
---|
| 2157 | + uint8_t I2cProtocol; |
---|
| 2158 | + uint8_t PaddingConfig; |
---|
| 2159 | +}; |
---|
| 2160 | + |
---|
| 2161 | +struct atom_smc_dpm_info_v4_9 |
---|
| 2162 | +{ |
---|
| 2163 | + struct atom_common_table_header table_header; |
---|
| 2164 | + |
---|
| 2165 | + //SECTION: Gaming Clocks |
---|
| 2166 | + //uint32_t GamingClk[6]; |
---|
| 2167 | + |
---|
| 2168 | + // SECTION: I2C Control |
---|
| 2169 | + struct smudpm_i2c_controller_config_v3 I2cControllers[16]; |
---|
| 2170 | + |
---|
| 2171 | + uint8_t GpioScl; // GPIO Number for SCL Line, used only for CKSVII2C1 |
---|
| 2172 | + uint8_t GpioSda; // GPIO Number for SDA Line, used only for CKSVII2C1 |
---|
| 2173 | + uint8_t FchUsbPdSlaveAddr; //For requesting USB PD controller S-states via FCH I2C when entering PME turn off |
---|
| 2174 | + uint8_t I2cSpare; |
---|
| 2175 | + |
---|
| 2176 | + // SECTION: SVI2 Board Parameters |
---|
| 2177 | + uint8_t VddGfxVrMapping; // Use VR_MAPPING* bitfields |
---|
| 2178 | + uint8_t VddSocVrMapping; // Use VR_MAPPING* bitfields |
---|
| 2179 | + uint8_t VddMem0VrMapping; // Use VR_MAPPING* bitfields |
---|
| 2180 | + uint8_t VddMem1VrMapping; // Use VR_MAPPING* bitfields |
---|
| 2181 | + |
---|
| 2182 | + uint8_t GfxUlvPhaseSheddingMask; // set this to 1 to set PSI0/1 to 1 in ULV mode |
---|
| 2183 | + uint8_t SocUlvPhaseSheddingMask; // set this to 1 to set PSI0/1 to 1 in ULV mode |
---|
| 2184 | + uint8_t VddciUlvPhaseSheddingMask; // set this to 1 to set PSI0/1 to 1 in ULV mode |
---|
| 2185 | + uint8_t MvddUlvPhaseSheddingMask; // set this to 1 to set PSI0/1 to 1 in ULV mode |
---|
| 2186 | + |
---|
| 2187 | + // SECTION: Telemetry Settings |
---|
| 2188 | + uint16_t GfxMaxCurrent; // in Amps |
---|
| 2189 | + uint8_t GfxOffset; // in Amps |
---|
| 2190 | + uint8_t Padding_TelemetryGfx; |
---|
| 2191 | + |
---|
| 2192 | + uint16_t SocMaxCurrent; // in Amps |
---|
| 2193 | + uint8_t SocOffset; // in Amps |
---|
| 2194 | + uint8_t Padding_TelemetrySoc; |
---|
| 2195 | + |
---|
| 2196 | + uint16_t Mem0MaxCurrent; // in Amps |
---|
| 2197 | + uint8_t Mem0Offset; // in Amps |
---|
| 2198 | + uint8_t Padding_TelemetryMem0; |
---|
| 2199 | + |
---|
| 2200 | + uint16_t Mem1MaxCurrent; // in Amps |
---|
| 2201 | + uint8_t Mem1Offset; // in Amps |
---|
| 2202 | + uint8_t Padding_TelemetryMem1; |
---|
| 2203 | + |
---|
| 2204 | + uint32_t MvddRatio; // This is used for MVDD Svi2 Div Ratio workaround. It has 16 fractional bits (Q16.16) |
---|
| 2205 | + |
---|
| 2206 | + // SECTION: GPIO Settings |
---|
| 2207 | + uint8_t AcDcGpio; // GPIO pin configured for AC/DC switching |
---|
| 2208 | + uint8_t AcDcPolarity; // GPIO polarity for AC/DC switching |
---|
| 2209 | + uint8_t VR0HotGpio; // GPIO pin configured for VR0 HOT event |
---|
| 2210 | + uint8_t VR0HotPolarity; // GPIO polarity for VR0 HOT event |
---|
| 2211 | + |
---|
| 2212 | + uint8_t VR1HotGpio; // GPIO pin configured for VR1 HOT event |
---|
| 2213 | + uint8_t VR1HotPolarity; // GPIO polarity for VR1 HOT event |
---|
| 2214 | + uint8_t GthrGpio; // GPIO pin configured for GTHR Event |
---|
| 2215 | + uint8_t GthrPolarity; // replace GPIO polarity for GTHR |
---|
| 2216 | + |
---|
| 2217 | + // LED Display Settings |
---|
| 2218 | + uint8_t LedPin0; // GPIO number for LedPin[0] |
---|
| 2219 | + uint8_t LedPin1; // GPIO number for LedPin[1] |
---|
| 2220 | + uint8_t LedPin2; // GPIO number for LedPin[2] |
---|
| 2221 | + uint8_t LedEnableMask; |
---|
| 2222 | + |
---|
| 2223 | + uint8_t LedPcie; // GPIO number for PCIE results |
---|
| 2224 | + uint8_t LedError; // GPIO number for Error Cases |
---|
| 2225 | + uint8_t LedSpare1[2]; |
---|
| 2226 | + |
---|
| 2227 | + // SECTION: Clock Spread Spectrum |
---|
| 2228 | + |
---|
| 2229 | + // GFXCLK PLL Spread Spectrum |
---|
| 2230 | + uint8_t PllGfxclkSpreadEnabled; // on or off |
---|
| 2231 | + uint8_t PllGfxclkSpreadPercent; // Q4.4 |
---|
| 2232 | + uint16_t PllGfxclkSpreadFreq; // kHz |
---|
| 2233 | + |
---|
| 2234 | + // GFXCLK DFLL Spread Spectrum |
---|
| 2235 | + uint8_t DfllGfxclkSpreadEnabled; // on or off |
---|
| 2236 | + uint8_t DfllGfxclkSpreadPercent; // Q4.4 |
---|
| 2237 | + uint16_t DfllGfxclkSpreadFreq; // kHz |
---|
| 2238 | + |
---|
| 2239 | + // UCLK Spread Spectrum |
---|
| 2240 | + uint8_t UclkSpreadEnabled; // on or off |
---|
| 2241 | + uint8_t UclkSpreadPercent; // Q4.4 |
---|
| 2242 | + uint16_t UclkSpreadFreq; // kHz |
---|
| 2243 | + |
---|
| 2244 | + // FCLK Spread Spectrum |
---|
| 2245 | + uint8_t FclkSpreadEnabled; // on or off |
---|
| 2246 | + uint8_t FclkSpreadPercent; // Q4.4 |
---|
| 2247 | + uint16_t FclkSpreadFreq; // kHz |
---|
| 2248 | + |
---|
| 2249 | + // Section: Memory Config |
---|
| 2250 | + uint32_t MemoryChannelEnabled; // For DRAM use only, Max 32 channels enabled bit mask. |
---|
| 2251 | + |
---|
| 2252 | + uint8_t DramBitWidth; // For DRAM use only. See Dram Bit width type defines |
---|
| 2253 | + uint8_t PaddingMem1[3]; |
---|
| 2254 | + |
---|
| 2255 | + // Section: Total Board Power |
---|
| 2256 | + uint16_t TotalBoardPower; //Only needed for TCP Estimated case, where TCP = TGP+Total Board Power |
---|
| 2257 | + uint16_t BoardPowerPadding; |
---|
| 2258 | + |
---|
| 2259 | + // SECTION: XGMI Training |
---|
| 2260 | + uint8_t XgmiLinkSpeed [4]; |
---|
| 2261 | + uint8_t XgmiLinkWidth [4]; |
---|
| 2262 | + |
---|
| 2263 | + uint16_t XgmiFclkFreq [4]; |
---|
| 2264 | + uint16_t XgmiSocVoltage [4]; |
---|
| 2265 | + |
---|
| 2266 | + // SECTION: Board Reserved |
---|
| 2267 | + |
---|
| 2268 | + uint32_t BoardReserved[16]; |
---|
| 2269 | + |
---|
1447 | 2270 | }; |
---|
1448 | 2271 | |
---|
1449 | 2272 | /* |
---|
.. | .. |
---|
1603 | 2426 | uint32_t mem_refclk_10khz; |
---|
1604 | 2427 | }; |
---|
1605 | 2428 | |
---|
| 2429 | +// umc_info.umc_config |
---|
| 2430 | +enum atom_umc_config_def { |
---|
| 2431 | + UMC_CONFIG__ENABLE_1KB_INTERLEAVE_MODE = 0x00000001, |
---|
| 2432 | + UMC_CONFIG__DEFAULT_MEM_ECC_ENABLE = 0x00000002, |
---|
| 2433 | + UMC_CONFIG__ENABLE_HBM_LANE_REPAIR = 0x00000004, |
---|
| 2434 | + UMC_CONFIG__ENABLE_BANK_HARVESTING = 0x00000008, |
---|
| 2435 | + UMC_CONFIG__ENABLE_PHY_REINIT = 0x00000010, |
---|
| 2436 | + UMC_CONFIG__DISABLE_UCODE_CHKSTATUS = 0x00000020, |
---|
| 2437 | +}; |
---|
| 2438 | + |
---|
| 2439 | +struct atom_umc_info_v3_2 |
---|
| 2440 | +{ |
---|
| 2441 | + struct atom_common_table_header table_header; |
---|
| 2442 | + uint32_t ucode_version; |
---|
| 2443 | + uint32_t ucode_rom_startaddr; |
---|
| 2444 | + uint32_t ucode_length; |
---|
| 2445 | + uint16_t umc_reg_init_offset; |
---|
| 2446 | + uint16_t customer_ucode_name_offset; |
---|
| 2447 | + uint16_t mclk_ss_percentage; |
---|
| 2448 | + uint16_t mclk_ss_rate_10hz; |
---|
| 2449 | + uint8_t umcip_min_ver; |
---|
| 2450 | + uint8_t umcip_max_ver; |
---|
| 2451 | + uint8_t vram_type; //enum of atom_dgpu_vram_type |
---|
| 2452 | + uint8_t umc_config; |
---|
| 2453 | + uint32_t mem_refclk_10khz; |
---|
| 2454 | + uint32_t pstate_uclk_10khz[4]; |
---|
| 2455 | + uint16_t umcgoldenoffset; |
---|
| 2456 | + uint16_t densitygoldenoffset; |
---|
| 2457 | +}; |
---|
| 2458 | + |
---|
| 2459 | +struct atom_umc_info_v3_3 |
---|
| 2460 | +{ |
---|
| 2461 | + struct atom_common_table_header table_header; |
---|
| 2462 | + uint32_t ucode_reserved; |
---|
| 2463 | + uint32_t ucode_rom_startaddr; |
---|
| 2464 | + uint32_t ucode_length; |
---|
| 2465 | + uint16_t umc_reg_init_offset; |
---|
| 2466 | + uint16_t customer_ucode_name_offset; |
---|
| 2467 | + uint16_t mclk_ss_percentage; |
---|
| 2468 | + uint16_t mclk_ss_rate_10hz; |
---|
| 2469 | + uint8_t umcip_min_ver; |
---|
| 2470 | + uint8_t umcip_max_ver; |
---|
| 2471 | + uint8_t vram_type; //enum of atom_dgpu_vram_type |
---|
| 2472 | + uint8_t umc_config; |
---|
| 2473 | + uint32_t mem_refclk_10khz; |
---|
| 2474 | + uint32_t pstate_uclk_10khz[4]; |
---|
| 2475 | + uint16_t umcgoldenoffset; |
---|
| 2476 | + uint16_t densitygoldenoffset; |
---|
| 2477 | + uint32_t reserved[4]; |
---|
| 2478 | +}; |
---|
1606 | 2479 | |
---|
1607 | 2480 | /* |
---|
1608 | 2481 | *************************************************************************** |
---|
1609 | 2482 | Data Table vram_info structure |
---|
1610 | 2483 | *************************************************************************** |
---|
1611 | 2484 | */ |
---|
1612 | | -struct atom_vram_module_v9 |
---|
1613 | | -{ |
---|
| 2485 | +struct atom_vram_module_v9 { |
---|
1614 | 2486 | // Design Specific Values |
---|
1615 | 2487 | uint32_t memory_size; // Total memory size in unit of MB for CONFIG_MEMSIZE zeros |
---|
1616 | | - uint32_t channel_enable; // for 32 channel ASIC usage |
---|
1617 | | - uint32_t umcch_addrcfg; |
---|
1618 | | - uint32_t umcch_addrsel; |
---|
1619 | | - uint32_t umcch_colsel; |
---|
| 2488 | + uint32_t channel_enable; // bit vector, each bit indicate specific channel enable or not |
---|
| 2489 | + uint32_t max_mem_clk; // max memory clock of this memory in unit of 10kHz, =0 means it is not defined |
---|
| 2490 | + uint16_t reserved[3]; |
---|
| 2491 | + uint16_t mem_voltage; // mem_voltage |
---|
1620 | 2492 | uint16_t vram_module_size; // Size of atom_vram_module_v9 |
---|
1621 | 2493 | uint8_t ext_memory_id; // Current memory module ID |
---|
1622 | 2494 | uint8_t memory_type; // enum of atom_dgpu_vram_type |
---|
.. | .. |
---|
1626 | 2498 | uint8_t tunningset_id; // MC phy registers set per. |
---|
1627 | 2499 | uint8_t vender_rev_id; // [7:4] Revision, [3:0] Vendor code |
---|
1628 | 2500 | uint8_t refreshrate; // [1:0]=RefreshFactor (00=8ms, 01=16ms, 10=32ms,11=64ms) |
---|
1629 | | - uint16_t vram_rsd2; // reserved |
---|
| 2501 | + uint8_t hbm_ven_rev_id; // hbm_ven_rev_id |
---|
| 2502 | + uint8_t vram_rsd2; // reserved |
---|
1630 | 2503 | char dram_pnstring[20]; // part number end with '0'. |
---|
1631 | 2504 | }; |
---|
1632 | 2505 | |
---|
1633 | | - |
---|
1634 | | -struct atom_vram_info_header_v2_3 |
---|
1635 | | -{ |
---|
1636 | | - struct atom_common_table_header table_header; |
---|
| 2506 | +struct atom_vram_info_header_v2_3 { |
---|
| 2507 | + struct atom_common_table_header table_header; |
---|
1637 | 2508 | uint16_t mem_adjust_tbloffset; // offset of atom_umc_init_reg_block structure for memory vendor specific UMC adjust setting |
---|
1638 | 2509 | uint16_t mem_clk_patch_tbloffset; // offset of atom_umc_init_reg_block structure for memory clock specific UMC setting |
---|
1639 | 2510 | uint16_t mc_adjust_pertile_tbloffset; // offset of atom_umc_init_reg_block structure for Per Byte Offset Preset Settings |
---|
1640 | 2511 | uint16_t mc_phyinit_tbloffset; // offset of atom_umc_init_reg_block structure for MC phy init set |
---|
1641 | 2512 | uint16_t dram_data_remap_tbloffset; // reserved for now |
---|
1642 | | - uint16_t vram_rsd2[3]; |
---|
| 2513 | + uint16_t tmrs_seq_offset; // offset of HBM tmrs |
---|
| 2514 | + uint16_t post_ucode_init_offset; // offset of atom_umc_init_reg_block structure for MC phy init after MC uCode complete umc init |
---|
| 2515 | + uint16_t vram_rsd2; |
---|
1643 | 2516 | uint8_t vram_module_num; // indicate number of VRAM module |
---|
1644 | | - uint8_t vram_rsd1[2]; |
---|
| 2517 | + uint8_t umcip_min_ver; |
---|
| 2518 | + uint8_t umcip_max_ver; |
---|
1645 | 2519 | uint8_t mc_phy_tile_num; // indicate the MCD tile number which use in DramDataRemapTbl and usMcAdjustPerTileTblOffset |
---|
1646 | 2520 | struct atom_vram_module_v9 vram_module[16]; // just for allocation, real number of blocks is in ucNumOfVRAMModule; |
---|
1647 | 2521 | }; |
---|
.. | .. |
---|
1686 | 2560 | struct atom_umc_reg_setting_data_block umc_reg_setting_list[1]; |
---|
1687 | 2561 | }; |
---|
1688 | 2562 | |
---|
| 2563 | +struct atom_vram_module_v10 { |
---|
| 2564 | + // Design Specific Values |
---|
| 2565 | + uint32_t memory_size; // Total memory size in unit of MB for CONFIG_MEMSIZE zeros |
---|
| 2566 | + uint32_t channel_enable; // bit vector, each bit indicate specific channel enable or not |
---|
| 2567 | + uint32_t max_mem_clk; // max memory clock of this memory in unit of 10kHz, =0 means it is not defined |
---|
| 2568 | + uint16_t reserved[3]; |
---|
| 2569 | + uint16_t mem_voltage; // mem_voltage |
---|
| 2570 | + uint16_t vram_module_size; // Size of atom_vram_module_v9 |
---|
| 2571 | + uint8_t ext_memory_id; // Current memory module ID |
---|
| 2572 | + uint8_t memory_type; // enum of atom_dgpu_vram_type |
---|
| 2573 | + uint8_t channel_num; // Number of mem. channels supported in this module |
---|
| 2574 | + uint8_t channel_width; // CHANNEL_16BIT/CHANNEL_32BIT/CHANNEL_64BIT |
---|
| 2575 | + uint8_t density; // _8Mx32, _16Mx32, _16Mx16, _32Mx16 |
---|
| 2576 | + uint8_t tunningset_id; // MC phy registers set per |
---|
| 2577 | + uint8_t vender_rev_id; // [7:4] Revision, [3:0] Vendor code |
---|
| 2578 | + uint8_t refreshrate; // [1:0]=RefreshFactor (00=8ms, 01=16ms, 10=32ms,11=64ms) |
---|
| 2579 | + uint8_t vram_flags; // bit0= bankgroup enable |
---|
| 2580 | + uint8_t vram_rsd2; // reserved |
---|
| 2581 | + uint16_t gddr6_mr10; // gddr6 mode register10 value |
---|
| 2582 | + uint16_t gddr6_mr1; // gddr6 mode register1 value |
---|
| 2583 | + uint16_t gddr6_mr2; // gddr6 mode register2 value |
---|
| 2584 | + uint16_t gddr6_mr7; // gddr6 mode register7 value |
---|
| 2585 | + char dram_pnstring[20]; // part number end with '0' |
---|
| 2586 | +}; |
---|
| 2587 | + |
---|
| 2588 | +struct atom_vram_info_header_v2_4 { |
---|
| 2589 | + struct atom_common_table_header table_header; |
---|
| 2590 | + uint16_t mem_adjust_tbloffset; // offset of atom_umc_init_reg_block structure for memory vendor specific UMC adjust setting |
---|
| 2591 | + uint16_t mem_clk_patch_tbloffset; // offset of atom_umc_init_reg_block structure for memory clock specific UMC setting |
---|
| 2592 | + uint16_t mc_adjust_pertile_tbloffset; // offset of atom_umc_init_reg_block structure for Per Byte Offset Preset Settings |
---|
| 2593 | + uint16_t mc_phyinit_tbloffset; // offset of atom_umc_init_reg_block structure for MC phy init set |
---|
| 2594 | + uint16_t dram_data_remap_tbloffset; // reserved for now |
---|
| 2595 | + uint16_t reserved; // offset of reserved |
---|
| 2596 | + uint16_t post_ucode_init_offset; // offset of atom_umc_init_reg_block structure for MC phy init after MC uCode complete umc init |
---|
| 2597 | + uint16_t vram_rsd2; |
---|
| 2598 | + uint8_t vram_module_num; // indicate number of VRAM module |
---|
| 2599 | + uint8_t umcip_min_ver; |
---|
| 2600 | + uint8_t umcip_max_ver; |
---|
| 2601 | + uint8_t mc_phy_tile_num; // indicate the MCD tile number which use in DramDataRemapTbl and usMcAdjustPerTileTblOffset |
---|
| 2602 | + struct atom_vram_module_v10 vram_module[16]; // just for allocation, real number of blocks is in ucNumOfVRAMModule; |
---|
| 2603 | +}; |
---|
| 2604 | + |
---|
| 2605 | +struct atom_vram_module_v11 { |
---|
| 2606 | + // Design Specific Values |
---|
| 2607 | + uint32_t memory_size; // Total memory size in unit of MB for CONFIG_MEMSIZE zeros |
---|
| 2608 | + uint32_t channel_enable; // bit vector, each bit indicate specific channel enable or not |
---|
| 2609 | + uint16_t mem_voltage; // mem_voltage |
---|
| 2610 | + uint16_t vram_module_size; // Size of atom_vram_module_v9 |
---|
| 2611 | + uint8_t ext_memory_id; // Current memory module ID |
---|
| 2612 | + uint8_t memory_type; // enum of atom_dgpu_vram_type |
---|
| 2613 | + uint8_t channel_num; // Number of mem. channels supported in this module |
---|
| 2614 | + uint8_t channel_width; // CHANNEL_16BIT/CHANNEL_32BIT/CHANNEL_64BIT |
---|
| 2615 | + uint8_t density; // _8Mx32, _16Mx32, _16Mx16, _32Mx16 |
---|
| 2616 | + uint8_t tunningset_id; // MC phy registers set per. |
---|
| 2617 | + uint16_t reserved[4]; // reserved |
---|
| 2618 | + uint8_t vender_rev_id; // [7:4] Revision, [3:0] Vendor code |
---|
| 2619 | + uint8_t refreshrate; // [1:0]=RefreshFactor (00=8ms, 01=16ms, 10=32ms,11=64ms) |
---|
| 2620 | + uint8_t vram_flags; // bit0= bankgroup enable |
---|
| 2621 | + uint8_t vram_rsd2; // reserved |
---|
| 2622 | + uint16_t gddr6_mr10; // gddr6 mode register10 value |
---|
| 2623 | + uint16_t gddr6_mr0; // gddr6 mode register0 value |
---|
| 2624 | + uint16_t gddr6_mr1; // gddr6 mode register1 value |
---|
| 2625 | + uint16_t gddr6_mr2; // gddr6 mode register2 value |
---|
| 2626 | + uint16_t gddr6_mr4; // gddr6 mode register4 value |
---|
| 2627 | + uint16_t gddr6_mr7; // gddr6 mode register7 value |
---|
| 2628 | + uint16_t gddr6_mr8; // gddr6 mode register8 value |
---|
| 2629 | + char dram_pnstring[40]; // part number end with '0'. |
---|
| 2630 | +}; |
---|
| 2631 | + |
---|
| 2632 | +struct atom_gddr6_ac_timing_v2_5 { |
---|
| 2633 | + uint32_t u32umc_id_access; |
---|
| 2634 | + uint8_t RL; |
---|
| 2635 | + uint8_t WL; |
---|
| 2636 | + uint8_t tRAS; |
---|
| 2637 | + uint8_t tRC; |
---|
| 2638 | + |
---|
| 2639 | + uint16_t tREFI; |
---|
| 2640 | + uint8_t tRFC; |
---|
| 2641 | + uint8_t tRFCpb; |
---|
| 2642 | + |
---|
| 2643 | + uint8_t tRREFD; |
---|
| 2644 | + uint8_t tRCDRD; |
---|
| 2645 | + uint8_t tRCDWR; |
---|
| 2646 | + uint8_t tRP; |
---|
| 2647 | + |
---|
| 2648 | + uint8_t tRRDS; |
---|
| 2649 | + uint8_t tRRDL; |
---|
| 2650 | + uint8_t tWR; |
---|
| 2651 | + uint8_t tWTRS; |
---|
| 2652 | + |
---|
| 2653 | + uint8_t tWTRL; |
---|
| 2654 | + uint8_t tFAW; |
---|
| 2655 | + uint8_t tCCDS; |
---|
| 2656 | + uint8_t tCCDL; |
---|
| 2657 | + |
---|
| 2658 | + uint8_t tCRCRL; |
---|
| 2659 | + uint8_t tCRCWL; |
---|
| 2660 | + uint8_t tCKE; |
---|
| 2661 | + uint8_t tCKSRE; |
---|
| 2662 | + |
---|
| 2663 | + uint8_t tCKSRX; |
---|
| 2664 | + uint8_t tRTPS; |
---|
| 2665 | + uint8_t tRTPL; |
---|
| 2666 | + uint8_t tMRD; |
---|
| 2667 | + |
---|
| 2668 | + uint8_t tMOD; |
---|
| 2669 | + uint8_t tXS; |
---|
| 2670 | + uint8_t tXHP; |
---|
| 2671 | + uint8_t tXSMRS; |
---|
| 2672 | + |
---|
| 2673 | + uint32_t tXSH; |
---|
| 2674 | + |
---|
| 2675 | + uint8_t tPD; |
---|
| 2676 | + uint8_t tXP; |
---|
| 2677 | + uint8_t tCPDED; |
---|
| 2678 | + uint8_t tACTPDE; |
---|
| 2679 | + |
---|
| 2680 | + uint8_t tPREPDE; |
---|
| 2681 | + uint8_t tREFPDE; |
---|
| 2682 | + uint8_t tMRSPDEN; |
---|
| 2683 | + uint8_t tRDSRE; |
---|
| 2684 | + |
---|
| 2685 | + uint8_t tWRSRE; |
---|
| 2686 | + uint8_t tPPD; |
---|
| 2687 | + uint8_t tCCDMW; |
---|
| 2688 | + uint8_t tWTRTR; |
---|
| 2689 | + |
---|
| 2690 | + uint8_t tLTLTR; |
---|
| 2691 | + uint8_t tREFTR; |
---|
| 2692 | + uint8_t VNDR; |
---|
| 2693 | + uint8_t reserved[9]; |
---|
| 2694 | +}; |
---|
| 2695 | + |
---|
| 2696 | +struct atom_gddr6_bit_byte_remap { |
---|
| 2697 | + uint32_t dphy_byteremap; //mmUMC_DPHY_ByteRemap |
---|
| 2698 | + uint32_t dphy_bitremap0; //mmUMC_DPHY_BitRemap0 |
---|
| 2699 | + uint32_t dphy_bitremap1; //mmUMC_DPHY_BitRemap1 |
---|
| 2700 | + uint32_t dphy_bitremap2; //mmUMC_DPHY_BitRemap2 |
---|
| 2701 | + uint32_t aphy_bitremap0; //mmUMC_APHY_BitRemap0 |
---|
| 2702 | + uint32_t aphy_bitremap1; //mmUMC_APHY_BitRemap1 |
---|
| 2703 | + uint32_t phy_dram; //mmUMC_PHY_DRAM |
---|
| 2704 | +}; |
---|
| 2705 | + |
---|
| 2706 | +struct atom_gddr6_dram_data_remap { |
---|
| 2707 | + uint32_t table_size; |
---|
| 2708 | + uint8_t phyintf_ck_inverted[8]; //UMC_PHY_PHYINTF_CNTL.INV_CK |
---|
| 2709 | + struct atom_gddr6_bit_byte_remap bit_byte_remap[16]; |
---|
| 2710 | +}; |
---|
| 2711 | + |
---|
| 2712 | +struct atom_vram_info_header_v2_5 { |
---|
| 2713 | + struct atom_common_table_header table_header; |
---|
| 2714 | + uint16_t mem_adjust_tbloffset; // offset of atom_umc_init_reg_block structure for memory vendor specific UMC adjust settings |
---|
| 2715 | + uint16_t gddr6_ac_timing_offset; // offset of atom_gddr6_ac_timing_v2_5 structure for memory clock specific UMC settings |
---|
| 2716 | + uint16_t mc_adjust_pertile_tbloffset; // offset of atom_umc_init_reg_block structure for Per Byte Offset Preset Settings |
---|
| 2717 | + uint16_t mc_phyinit_tbloffset; // offset of atom_umc_init_reg_block structure for MC phy init set |
---|
| 2718 | + uint16_t dram_data_remap_tbloffset; // offset of atom_gddr6_dram_data_remap array to indicate DRAM data lane to GPU mapping |
---|
| 2719 | + uint16_t reserved; // offset of reserved |
---|
| 2720 | + uint16_t post_ucode_init_offset; // offset of atom_umc_init_reg_block structure for MC phy init after MC uCode complete umc init |
---|
| 2721 | + uint16_t strobe_mode_patch_tbloffset; // offset of atom_umc_init_reg_block structure for Strobe Mode memory clock specific UMC settings |
---|
| 2722 | + uint8_t vram_module_num; // indicate number of VRAM module |
---|
| 2723 | + uint8_t umcip_min_ver; |
---|
| 2724 | + uint8_t umcip_max_ver; |
---|
| 2725 | + uint8_t mc_phy_tile_num; // indicate the MCD tile number which use in DramDataRemapTbl and usMcAdjustPerTileTblOffset |
---|
| 2726 | + struct atom_vram_module_v11 vram_module[16]; // just for allocation, real number of blocks is in ucNumOfVRAMModule; |
---|
| 2727 | +}; |
---|
1689 | 2728 | |
---|
1690 | 2729 | /* |
---|
1691 | 2730 | *************************************************************************** |
---|