From mboxrd@z Thu Jan 1 00:00:00 1970 From: patrice.chotard at st.com Date: Wed, 24 May 2017 15:01:57 +0200 Subject: [U-Boot] [PATCH v4 11/11] usb: host: ohci-generic: add generic PHY support In-Reply-To: <1495630917-25272-1-git-send-email-patrice.chotard@st.com> References: <1495630917-25272-1-git-send-email-patrice.chotard@st.com> Message-ID: <1495630917-25272-12-git-send-email-patrice.chotard@st.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de From: Patrice Chotard Extend ohci-generic driver with generic PHY framework Signed-off-by: Patrice Chotard --- v4: _ use generic_phy_valid() before generic_phy_exit() call v3: _ extract in this patch the PHY support add-on from previous patch 5 drivers/usb/host/ohci-generic.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/drivers/usb/host/ohci-generic.c b/drivers/usb/host/ohci-generic.c index 3f41015..b028465 100644 --- a/drivers/usb/host/ohci-generic.c +++ b/drivers/usb/host/ohci-generic.c @@ -6,6 +6,8 @@ #include #include +#include +#include #include #include #include "ohci.h" @@ -18,6 +20,7 @@ struct generic_ohci { ohci_t ohci; struct clk *clocks; struct reset_ctl *resets; + struct phy phy; int clock_count; int reset_count; }; @@ -84,10 +87,30 @@ static int ohci_usb_probe(struct udevice *dev) } } + err = generic_phy_get_by_index(dev, 0, &priv->phy); + if (err) { + if (err != -ENOENT) { + error("failed to get usb phy\n"); + goto reset_err; + } + } else { + err = generic_phy_init(&priv->phy); + if (err) { + error("failed to init usb phy\n"); + goto reset_err; + } + } + err = ohci_register(dev, regs); if (!err) return err; + if (generic_phy_valid(&priv->phy)) { + ret = generic_phy_exit(&priv->phy); + if (ret) + return ret; + } + reset_err: ret = reset_assert_all(priv->resets, priv->reset_count); if (ret) @@ -109,6 +132,12 @@ static int ohci_usb_remove(struct udevice *dev) if (ret) return ret; + if (generic_phy_valid(&priv->phy)) { + ret = generic_phy_exit(&priv->phy); + if (ret) + return ret; + } + ret = reset_assert_all(priv->resets, priv->reset_count); if (ret) return ret; -- 1.9.1