arm: mvebu: turris_omnia: Define only one serdes map variable
authorPali Rohár <pali@kernel.org>
Wed, 2 Mar 2022 11:47:54 +0000 (12:47 +0100)
committerStefan Roese <sr@denx.de>
Mon, 2 May 2022 05:28:25 +0000 (07:28 +0200)
By default use primary serdes map with PCIe function in combined
miniPCIe/mSATA slot. When SATA is detected change serdes map variable at
runtime.

Signed-off-by: Pali Rohár <pali@kernel.org>
board/CZ.NIC/turris_omnia/turris_omnia.c

index 28a3f2b825499344f68cb286d6e1b8a1809855c7..25902742e3d3fc6ad99e826ff58e0e3e1def51f1 100644 (file)
@@ -86,7 +86,7 @@ enum status_word_bits {
 #define OMNIA_GPP_POL_LOW      0x0
 #define OMNIA_GPP_POL_MID      0x0
 
-static struct serdes_map board_serdes_map_pex[] = {
+static struct serdes_map board_serdes_map[] = {
        {PEX0, SERDES_SPEED_5_GBPS, PEX_ROOT_COMPLEX_X1, 0, 0},
        {USB3_HOST0, SERDES_SPEED_5_GBPS, SERDES_DEFAULT_MODE, 0, 0},
        {PEX1, SERDES_SPEED_5_GBPS, PEX_ROOT_COMPLEX_X1, 0, 0},
@@ -95,15 +95,6 @@ static struct serdes_map board_serdes_map_pex[] = {
        {SGMII2, SERDES_SPEED_1_25_GBPS, SERDES_DEFAULT_MODE, 0, 0}
 };
 
-static struct serdes_map board_serdes_map_sata[] = {
-       {SATA0, SERDES_SPEED_6_GBPS, SERDES_DEFAULT_MODE, 0, 0},
-       {USB3_HOST0, SERDES_SPEED_5_GBPS, SERDES_DEFAULT_MODE, 0, 0},
-       {PEX1, SERDES_SPEED_5_GBPS, PEX_ROOT_COMPLEX_X1, 0, 0},
-       {USB3_HOST1, SERDES_SPEED_5_GBPS, SERDES_DEFAULT_MODE, 0, 0},
-       {PEX2, SERDES_SPEED_5_GBPS, PEX_ROOT_COMPLEX_X1, 0, 0},
-       {SGMII2, SERDES_SPEED_1_25_GBPS, SERDES_DEFAULT_MODE, 0, 0}
-};
-
 static struct udevice *omnia_get_i2c_chip(const char *name, uint addr,
                                          uint offset_len)
 {
@@ -249,13 +240,15 @@ void *env_sf_get_env_addr(void)
 int hws_board_topology_load(struct serdes_map **serdes_map_array, u8 *count)
 {
        if (omnia_detect_sata()) {
-               *serdes_map_array = board_serdes_map_sata;
-               *count = ARRAY_SIZE(board_serdes_map_sata);
-       } else {
-               *serdes_map_array = board_serdes_map_pex;
-               *count = ARRAY_SIZE(board_serdes_map_pex);
+               /* Change SerDes for first mPCIe port (mSATA) from PCIe to SATA */
+               board_serdes_map[0].serdes_type = SATA0;
+               board_serdes_map[0].serdes_speed = SERDES_SPEED_6_GBPS;
+               board_serdes_map[0].serdes_mode = SERDES_DEFAULT_MODE;
        }
 
+       *serdes_map_array = board_serdes_map;
+       *count = ARRAY_SIZE(board_serdes_map);
+
        return 0;
 }