On 04.09.20 10:57, Stefan Roese wrote:
On 28.08.20 16:56, Andre Heider wrote:
From: zachary <zhan...@marvell.com>

- This patch moves sata phy powerup from dedicate phy to compphy
   and adds invert option for sata powerup routine.

Change-Id: I1b4e8753e2b2c14c6efa97bca2ffc7d2553d8a90
Signed-off-by: zachary <zhan...@marvell.com>
Signed-off-by: Ken Ma <m...@marvell.com>
Reviewed-on: http://vgitil04.il.marvell.com:8080/53601
Reviewed-by: Igal Liberman <ig...@marvell.com>
Tested-by: Igal Liberman <ig...@marvell.com>
[a.heider: adapt to mainline]
Signed-off-by: Andre Heider <a.hei...@gmail.com>

Reviewed-by: Stefan Roese <s...@denx.de>

Applied to u-boot-marvell/master

Thanks,
Stefan

Thanks,
Stefan

---

This is based on the downstream patch:
https://github.com/MarvellEmbeddedProcessors/u-boot-marvell/commit/0a5b159806baa0746b6449920e450498bc269ba7

Fixes SATA on my espressobin v5.

  drivers/phy/marvell/comphy_a3700.c | 33 +++++++++++++-----------------
  1 file changed, 14 insertions(+), 19 deletions(-)

diff --git a/drivers/phy/marvell/comphy_a3700.c b/drivers/phy/marvell/comphy_a3700.c
index dc188c44e0..4606de6f48 100644
--- a/drivers/phy/marvell/comphy_a3700.c
+++ b/drivers/phy/marvell/comphy_a3700.c
@@ -273,16 +273,23 @@ static void reg_set_indirect(u32 reg, u16 data, u16 mask)
   *
   * return: 1 if PLL locked (OK), 0 otherwise (FAIL)
   */
-static int comphy_sata_power_up(void)
+static int comphy_sata_power_up(u32 invert)
  {
      int ret;
+    u32 data = 0;
      debug_enter();
      /*
-     * 0. Swap SATA TX lines
+     * 0. Check the Polarity invert bits
       */
-    reg_set_indirect(vphy_sync_pattern_reg, bs_txd_inv, bs_txd_inv);
+    if (invert & PHY_POLARITY_TXD_INVERT)
+        data |= bs_txd_inv;
+
+    if (invert & PHY_POLARITY_RXD_INVERT)
+        data |= bs_rxd_inv;
+
+    reg_set_indirect(vphy_sync_pattern_reg, data, bs_txd_inv | bs_rxd_inv);
      /*
       * 1. Select 40-bit data width width
@@ -924,22 +931,6 @@ void comphy_dedicated_phys_init(void)
          }
      }
-    node = fdt_node_offset_by_compatible(blob, -1,
-                         "marvell,armada-3700-ahci");
-    if (node > 0) {
-        if (fdtdec_get_is_enabled(blob, node)) {
-            ret = comphy_sata_power_up();
-            if (!ret)
-                printf("Failed to initialize SATA PHY\n");
-            else
-                debug("SATA PHY init succeed\n");
-        } else {
-            debug("SATA node is disabled\n");
-        }
-    }  else {
-        debug("No SATA node in DT\n");
-    }
-
      node = fdt_node_offset_by_compatible(blob, -1,
                           "marvell,armada-8k-sdhci");
      if (node <= 0) {
@@ -1007,6 +998,10 @@ int comphy_a3700_init(struct chip_serdes_phy_config *chip_cfg,
                              comphy_map->invert);
              break;
+        case PHY_TYPE_SATA0:
+            ret = comphy_sata_power_up(comphy_map->invert);
+            break;
+
          default:
              debug("Unknown SerDes type, skip initialize SerDes %d\n",
                    lane);



Viele Grüße,
Stefan



Viele Grüße,
Stefan

--
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-51 Fax: (+49)-8142-66989-80 Email: s...@denx.de

Reply via email to