phy: marvell: a3700: Return correct error code when power up fails

Subroutines in comphy_usb2_power_up() and comphy_sgmii_power_up() functions
may fail. In this case, do not continue execution of current function and
instead jump to the end. Return value in 'ret' variable is already set.

Signed-off-by: Pali Rohár <pali@kernel.org>
Reviewed-by: Stefan Roese <sr@denx.de>
This commit is contained in:
Pali Rohár 2021-09-24 16:11:57 +02:00 committed by Stefan Roese
parent 4ca474d306
commit 021a98a2d6

View file

@ -594,24 +594,30 @@ static int comphy_usb2_power_up(u8 usb32)
rb_usb2phy_pllcal_done, /* value */
rb_usb2phy_pllcal_done, /* mask */
POLL_32B_REG); /* 32bit */
if (!ret)
if (!ret) {
printf("Failed to end USB2 PLL calibration\n");
goto out;
}
/* Assert impedance calibration done */
ret = comphy_poll_reg(USB2_PHY_CAL_CTRL_ADDR(usb32),
rb_usb2phy_impcal_done, /* value */
rb_usb2phy_impcal_done, /* mask */
POLL_32B_REG); /* 32bit */
if (!ret)
if (!ret) {
printf("Failed to end USB2 impedance calibration\n");
goto out;
}
/* Assert squetch calibration done */
ret = comphy_poll_reg(USB2_PHY_RX_CHAN_CTRL1_ADDR(usb32),
rb_usb2phy_sqcal_done, /* value */
rb_usb2phy_sqcal_done, /* mask */
POLL_32B_REG); /* 32bit */
if (!ret)
if (!ret) {
printf("Failed to end USB2 unknown calibration\n");
goto out;
}
/* Assert PLL is ready */
ret = comphy_poll_reg(USB2_PHY_PLL_CTRL0_ADDR(usb32),
@ -619,9 +625,12 @@ static int comphy_usb2_power_up(u8 usb32)
rb_usb2phy_pll_ready, /* mask */
POLL_32B_REG); /* 32bit */
if (!ret)
if (!ret) {
printf("Failed to lock USB2 PLL\n");
goto out;
}
out:
debug_exit();
return ret;
@ -873,8 +882,10 @@ static int comphy_sgmii_power_up(u32 lane, u32 speed, u32 invert)
rb_pll_ready_tx | rb_pll_ready_rx, /* value */
rb_pll_ready_tx | rb_pll_ready_rx, /* mask */
POLL_32B_REG); /* 32bit */
if (!ret)
if (!ret) {
printf("Failed to lock PLL for SGMII PHY %d\n", lane);
goto out;
}
/*
* 21. Set COMPHY input port PIN_TX_IDLE=0
@ -895,14 +906,17 @@ static int comphy_sgmii_power_up(u32 lane, u32 speed, u32 invert)
rb_rx_init_done, /* value */
rb_rx_init_done, /* mask */
POLL_32B_REG); /* 32bit */
if (!ret)
if (!ret) {
printf("Failed to init RX of SGMII PHY %d\n", lane);
goto out;
}
/*
* Restore saved selector.
*/
reg_set(COMPHY_SEL_ADDR, saved_selector, 0xFFFFFFFF);
out:
debug_exit();
return ret;