On 03/14/2018 05:48 PM, [email protected] wrote: > From: Patrice Chotard <[email protected]> > > Factorize PHY get/init/poweron and PHY poweroff/exit operations > into separate function, it simplify the error path.
FYI, it's "factor out", not "factorize" . > Signed-off-by: Patrice Chotard <[email protected]> > --- > drivers/usb/host/ohci-generic.c | 99 > ++++++++++++++++++++++++----------------- > 1 file changed, 59 insertions(+), 40 deletions(-) > > diff --git a/drivers/usb/host/ohci-generic.c b/drivers/usb/host/ohci-generic.c > index 4843b4ac859f..590fe4ca740f 100644 > --- a/drivers/usb/host/ohci-generic.c > +++ b/drivers/usb/host/ohci-generic.c > @@ -25,6 +25,56 @@ struct generic_ohci { > int reset_count; /* number of reset in reset list */ > }; > > +static int ohci_setup_phy(struct udevice *dev, int index) > +{ > + struct generic_ohci *priv = dev_get_priv(dev); > + int ret; > + > + ret = generic_phy_get_by_index(dev, index, &priv->phy); > + if (ret) { > + if (ret != -ENOENT) { > + dev_err(dev, "failed to get usb phy\n"); > + return ret; > + } > + } else { > + ret = generic_phy_init(&priv->phy); > + if (ret) { > + dev_err(dev, "failed to init usb phy\n"); > + return ret; > + } > + > + ret = generic_phy_power_on(&priv->phy); > + if (ret) { > + dev_err(dev, "failed to power on usb phy\n"); > + return generic_phy_exit(&priv->phy); > + } > + } > + > + return 0; > +} > + > +static int ohci_shutdown_phy(struct udevice *dev) > +{ > + struct generic_ohci *priv = dev_get_priv(dev); > + int ret = 0; > + > + if (generic_phy_valid(&priv->phy)) { > + ret = generic_phy_power_off(&priv->phy); > + if (ret) { > + dev_err(dev, "failed to power off usb phy\n"); > + return ret; > + } > + > + ret = generic_phy_exit(&priv->phy); > + if (ret) { > + dev_err(dev, "failed to power off usb phy\n"); > + return ret; > + } > + } > + > + return 0; > +} > + > static int ohci_usb_probe(struct udevice *dev) > { > struct ohci_regs *regs = (struct ohci_regs *)devfdt_get_addr(dev); > @@ -85,26 +135,10 @@ static int ohci_usb_probe(struct udevice *dev) > goto clk_err; > } > > - err = generic_phy_get_by_index(dev, 0, &priv->phy); > - if (err) { > - if (err != -ENOENT) { > - pr_err("failed to get usb phy\n"); > - goto reset_err; > - } > - } else { > - > - err = generic_phy_init(&priv->phy); > - if (err) { > - pr_err("failed to init usb phy\n"); > - goto reset_err; > - } > + err = ohci_setup_phy(dev, 0); > + if (err) > > - err = generic_phy_power_on(&priv->phy); > - if (err) { > - dev_err(dev, "failed to power on usb phy\n"); > - goto phy_power_err; > - } > - } > + goto reset_err; > > err = ohci_register(dev, regs); > if (err) > @@ -113,18 +147,9 @@ static int ohci_usb_probe(struct udevice *dev) > return 0; > > phy_err: > - if (generic_phy_valid(&priv->phy)) { > - ret = generic_phy_power_off(&priv->phy); > - if (ret) > - dev_err(dev, "failed to power off usb phy\n"); > - } > - > -phy_power_err: > - if (generic_phy_valid(&priv->phy)) { > - ret = generic_phy_exit(&priv->phy); > - if (ret) > - pr_err("failed to release phy\n"); > - } > + ret = ohci_shutdown_phy(dev); > + if (ret) > + dev_err(dev, "failed to shutdown usb phy\n"); > > reset_err: > ret = reset_release_all(priv->resets, priv->reset_count); > @@ -147,15 +172,9 @@ static int ohci_usb_remove(struct udevice *dev) > if (ret) > return ret; > > - if (generic_phy_valid(&priv->phy)) { > - ret = generic_phy_power_off(&priv->phy); > - if (ret) > - return ret; > - > - ret = generic_phy_exit(&priv->phy); > - if (ret) > - return ret; > - } > + ret = ohci_shutdown_phy(dev); > + if (ret) > + return ret; > > ret = reset_release_all(priv->resets, priv->reset_count); > if (ret) > -- Best regards, Marek Vasut _______________________________________________ U-Boot mailing list [email protected] https://lists.denx.de/listinfo/u-boot

