Message ID | 20200828145629.540954-1-a.heider@gmail.com |
---|---|
State | Accepted |
Commit | 7757c85199f57e71d5021670ff1d317e0c622f89 |
Delegated to: | Stefan Roese |
Headers | show |
Series | phy: marvell: a3700: add sata comphy on lane 2 with invert option | expand |
On Friday 28 August 2020 16:56:29 Andre Heider wrote: > From: zachary <zhangzg@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 <zhangzg@marvell.com> > Signed-off-by: Ken Ma <make@marvell.com> > Reviewed-on: http://vgitil04.il.marvell.com:8080/53601 > Reviewed-by: Igal Liberman <igall@marvell.com> > Tested-by: Igal Liberman <igall@marvell.com> > [a.heider: adapt to mainline] > Signed-off-by: Andre Heider <a.heider@gmail.com> Tested-by: Pali Rohár <pali@kernel.org> > --- > > This is based on the downstream patch: > https://github.com/MarvellEmbeddedProcessors/u-boot-marvell/commit/0a5b159806baa0746b6449920e450498bc269ba7 > > Fixes SATA on my espressobin v5. Thanks! It really fixed SATA support on EspressoBin v5 test unit. > 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); > -- > 2.28.0 >
On 28.08.20 16:56, Andre Heider wrote: > From: zachary <zhangzg@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 <zhangzg@marvell.com> > Signed-off-by: Ken Ma <make@marvell.com> > Reviewed-on: http://vgitil04.il.marvell.com:8080/53601 > Reviewed-by: Igal Liberman <igall@marvell.com> > Tested-by: Igal Liberman <igall@marvell.com> > [a.heider: adapt to mainline] > Signed-off-by: Andre Heider <a.heider@gmail.com> Reviewed-by: Stefan Roese <sr@denx.de> 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
On 04.09.20 10:57, Stefan Roese wrote: > On 28.08.20 16:56, Andre Heider wrote: >> From: zachary <zhangzg@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 <zhangzg@marvell.com> >> Signed-off-by: Ken Ma <make@marvell.com> >> Reviewed-on: http://vgitil04.il.marvell.com:8080/53601 >> Reviewed-by: Igal Liberman <igall@marvell.com> >> Tested-by: Igal Liberman <igall@marvell.com> >> [a.heider: adapt to mainline] >> Signed-off-by: Andre Heider <a.heider@gmail.com> > > Reviewed-by: Stefan Roese <sr@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
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);