diff options
Diffstat (limited to 'src/mainboard/amd')
-rw-r--r-- | src/mainboard/amd/birman/devicetree_phoenix.cb | 21 | ||||
-rw-r--r-- | src/mainboard/amd/birman/port_descriptors_phoenix.c | 212 |
2 files changed, 180 insertions, 53 deletions
diff --git a/src/mainboard/amd/birman/devicetree_phoenix.cb b/src/mainboard/amd/birman/devicetree_phoenix.cb index 9cebaab357..ff54e1f89f 100644 --- a/src/mainboard/amd/birman/devicetree_phoenix.cb +++ b/src/mainboard/amd/birman/devicetree_phoenix.cb @@ -151,16 +151,23 @@ chip soc/amd/phoenix .PhyP3CpmP4Support = 0, }" - register "gpp_clk_config[0]" = "GPP_CLK_REQ" - register "gpp_clk_config[1]" = "GPP_CLK_REQ" - register "gpp_clk_config[2]" = "GPP_CLK_OFF" - register "gpp_clk_config[3]" = "GPP_CLK_REQ" + register "gpp_clk_config[0]" = "GPP_CLK_REQ" # MXM + register "gpp_clk_config[1]" = "GPP_CLK_REQ" # NVMe SSD1 + register "gpp_clk_config[2]" = "GPP_CLK_REQ" # NVMe SSD0 + register "gpp_clk_config[3]" = "GPP_CLK_REQ" # WLAN + register "gpp_clk_config[4]" = "GPP_CLK_REQ" # WWAN + register "gpp_clk_config[5]" = "GPP_CLK_REQ" # SD + register "gpp_clk_config[6]" = "GPP_CLK_REQ" # GBE device domain 0 on device ref iommu on end - device ref gpp_bridge_2_1 on end # GBE - device ref gpp_bridge_2_2 on end # WIFI - device ref gpp_bridge_2_3 on end # NVMe SSD + device ref gpp_bridge_1_1 on end # MXM + device ref gpp_bridge_1_2 on end # NVMe SSD1 + device ref gpp_bridge_1_3 on end # GBE + device ref gpp_bridge_2_1 on end # SD + device ref gpp_bridge_2_2 on end # WWAN + device ref gpp_bridge_2_3 on end # WIFI + device ref gpp_bridge_2_4 on end # NVMe SSD0 device ref gpp_bridge_a on # Internal GPP Bridge 0 to Bus A device ref gfx on end # Internal GPU (GFX) device ref gfx_hda on end # Display HD Audio Controller (GFXAZ) diff --git a/src/mainboard/amd/birman/port_descriptors_phoenix.c b/src/mainboard/amd/birman/port_descriptors_phoenix.c index df961bfce6..d254eea030 100644 --- a/src/mainboard/amd/birman/port_descriptors_phoenix.c +++ b/src/mainboard/amd/birman/port_descriptors_phoenix.c @@ -4,52 +4,136 @@ #include <device/i2c_simple.h> #include <gpio.h> #include <soc/platform_descriptors.h> +#include <soc/soc_util.h> #include <types.h> -/* TODO: Update for birman */ - -static const fsp_dxio_descriptor birman_dxio_descriptors[] = { - { - .engine_type = PCIE_ENGINE, - .port_present = true, - .start_logical_lane = 0, - .end_logical_lane = 0, - .device_number = 2, - .function_number = 1, - .link_speed_capability = GEN3, - .turn_off_unused_lanes = true, - .link_aspm = 2, - .link_hotplug = 3, - .clk_req = CLK_REQ3, - }, - { - .engine_type = PCIE_ENGINE, - .port_present = true, - .start_logical_lane = 1, - .end_logical_lane = 1, - .device_number = 2, - .function_number = 2, - .link_speed_capability = GEN3, - .turn_off_unused_lanes = true, - .link_aspm = 2, - .link_hotplug = 3, - .clk_req = CLK_REQ1, - }, - { - .engine_type = PCIE_ENGINE, - .port_present = true, - .start_logical_lane = 2, - .end_logical_lane = 3, - .device_number = 2, - .function_number = 3, - .link_speed_capability = GEN3, - .turn_off_unused_lanes = true, - .link_aspm = 2, - .link_hotplug = 3, - .gpio_group_id = GPIO_27, - .clk_req = CLK_REQ0, - }, -}; +#define phx_mxm_dxio_descriptor { \ + .engine_type = PCIE_ENGINE, \ + .port_present = CONFIG(ENABLE_EVAL_CARD), \ + .start_logical_lane = 0, \ + .end_logical_lane = 7, \ + .device_number = 1, \ + .function_number = 1, \ + .link_speed_capability = GEN3, \ + .turn_off_unused_lanes = true, \ + .link_aspm = ASPM_L1, \ + .link_hotplug = 0, \ + .clk_req = CLK_REQ0, \ +} + +/* TODO: verify on hardware */ +#define phx2_mxm_dxio_descriptor { \ + .engine_type = PCIE_ENGINE, \ + .port_present = CONFIG(ENABLE_EVAL_CARD), \ + .start_logical_lane = 0, \ + .end_logical_lane = 3, \ + .device_number = 1, \ + .function_number = 1, \ + .link_speed_capability = GEN3, \ + .turn_off_unused_lanes = true, \ + .link_aspm = ASPM_L1, \ + .link_hotplug = 0, \ + .clk_req = CLK_REQ0, \ +} + +#define phx_ssd1_dxio_descriptor { \ + .engine_type = PCIE_ENGINE, \ + .port_present = !CONFIG(DISABLE_DT_M2), \ + .start_logical_lane = 8, \ + .end_logical_lane = 11, \ + .device_number = 1, \ + .function_number = 2, \ + .link_speed_capability = GEN3, \ + .turn_off_unused_lanes = true, \ + .link_aspm = ASPM_L1, \ + .link_hotplug = 0, \ + .clk_req = CLK_REQ1, \ +} + +/* TODO: verify on hardware */ +#define phx2_ssd1_dxio_descriptor { \ + .engine_type = PCIE_ENGINE, \ + .port_present = true, \ + .start_logical_lane = 8, \ + .end_logical_lane = 9, \ + .device_number = 1, \ + .function_number = 2, \ + .link_speed_capability = GEN3, \ + .turn_off_unused_lanes = true, \ + .link_aspm = ASPM_L1, \ + .link_hotplug = 0, \ + .clk_req = CLK_REQ1, \ +} + +#define gbe_dxio_descriptor { \ + .engine_type = PCIE_ENGINE, \ + .port_present = true, \ + .start_logical_lane = 12, \ + .end_logical_lane = 12, \ + .device_number = 1, \ + .function_number = 3, \ + .link_speed_capability = GEN3, \ + .turn_off_unused_lanes = true, \ + .link_aspm = ASPM_L1, \ + .link_hotplug = 0, \ + .clk_req = CLK_REQ6, \ +} + +#define sd_dxio_descriptor { \ + .engine_type = PCIE_ENGINE, \ + .port_present = true, \ + .start_logical_lane = 13, \ + .end_logical_lane = 13, \ + .device_number = 2, \ + .function_number = 1, \ + .link_speed_capability = GEN3, \ + .turn_off_unused_lanes = true, \ + .link_aspm = ASPM_L1, \ + .link_hotplug = 0, \ + .clk_req = CLK_REQ5, \ +} + +#define wwan_dxio_descriptor { \ + .engine_type = PCIE_ENGINE, \ + .port_present = true, \ + .start_logical_lane = 14, \ + .end_logical_lane = CONFIG(WWAN01) ? 15 : 14, \ + .device_number = 2, \ + .function_number = 2, \ + .link_speed_capability = GEN3, \ + .turn_off_unused_lanes = true, \ + .link_aspm = ASPM_L1, \ + .link_hotplug = 0, \ + .clk_req = CLK_REQ4, \ +} + +#define wlan_dxio_descriptor { \ + .engine_type = PCIE_ENGINE, \ + .port_present = true, \ + .start_logical_lane = 15, \ + .end_logical_lane = CONFIG(WLAN01) ? 14 : 15, \ + .device_number = 2, \ + .function_number = 3, \ + .link_speed_capability = GEN3, \ + .turn_off_unused_lanes = true, \ + .link_aspm = ASPM_L1, \ + .link_hotplug = 0, \ + .clk_req = CLK_REQ3, \ +} + +#define ssd0_dxio_descriptor { \ + .engine_type = PCIE_ENGINE, \ + .port_present = true, \ + .start_logical_lane = 16, \ + .end_logical_lane = 19, \ + .device_number = 2, \ + .function_number = 4, \ + .link_speed_capability = GEN3, \ + .turn_off_unused_lanes = true, \ + .link_aspm = ASPM_L1, \ + .link_hotplug = 0, \ + .clk_req = CLK_REQ2, \ +} static fsp_ddi_descriptor birman_ddi_descriptors[] = { { /* DDI0 - eDP */ @@ -123,8 +207,44 @@ void mainboard_get_dxio_ddi_descriptors( { birman_ddi_descriptors[1].connector_type = get_ddi1_type(); - *dxio_descs = birman_dxio_descriptors; - *dxio_num = ARRAY_SIZE(birman_dxio_descriptors); + enum soc_type type = get_soc_type(); + + if (type == SOC_PHOENIX) { + printk(BIOS_DEBUG, "Using PHX DXIO\n"); + static const fsp_dxio_descriptor birman_phx_dxio_descriptors[] = { + phx_mxm_dxio_descriptor, + phx_ssd1_dxio_descriptor, + gbe_dxio_descriptor, + sd_dxio_descriptor, +#if CONFIG(WLAN0_WWAN0) || CONFIG(WWAN01) + wwan_dxio_descriptor, +#endif +#if CONFIG(WLAN0_WWAN0) || CONFIG(WLAN01) + wlan_dxio_descriptor, +#endif + ssd0_dxio_descriptor, + }; + *dxio_descs = birman_phx_dxio_descriptors; + *dxio_num = ARRAY_SIZE(birman_phx_dxio_descriptors); + } else { + printk(BIOS_DEBUG, "Using PHX2 DXIO\n"); + static const fsp_dxio_descriptor birman_phx2_dxio_descriptors[] = { + phx2_mxm_dxio_descriptor, + phx2_ssd1_dxio_descriptor, + gbe_dxio_descriptor, + sd_dxio_descriptor, +#if CONFIG(WLAN0_WWAN0) || CONFIG(WWAN01) + wwan_dxio_descriptor, +#endif +#if CONFIG(WLAN0_WWAN0) || CONFIG(WLAN01) + wlan_dxio_descriptor, +#endif + ssd0_dxio_descriptor, + }; + *dxio_descs = birman_phx2_dxio_descriptors; + *dxio_num = ARRAY_SIZE(birman_phx2_dxio_descriptors); + } + *ddi_descs = birman_ddi_descriptors; *ddi_num = ARRAY_SIZE(birman_ddi_descriptors); } |