Message ID | 1363609781-4045-4-git-send-email-vbyravarasu@nvidia.com |
---|---|
State | Superseded, archived |
Headers | show |
On 03/18/2013 06:29 AM, Venu Byravarasu wrote: > Added a new PHY mode to support OTG. > Obtained Tegra USB PHY mode using DT property. > diff --git a/drivers/usb/phy/tegra_usb_phy.c b/drivers/usb/phy/tegra_usb_phy.c > @@ -713,6 +712,16 @@ struct tegra_usb_phy *tegra_usb_phy_open(struct device *dev, int instance, > else > phy->is_ulpi_phy = true; > > + err = of_property_match_string(np, "dr_mode", "otg"); > + if (err < 0) { > + err = of_property_match_string(np, "dr_mode", "gadget"); > + if (err < 0) The binding says the 3 legal values for this property are "host", "peripheral", or "otg". This agrees with the usage in Documentation/devicetree/bindings/usb/fsl-usb.txt and drivers/usb/host/fsl-mph-dr-of.c. So, "gadget" is not something the code should be checking for. I'm sure I pointed this out before. -- To unsubscribe from this list: send the line "unsubscribe linux-tegra" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
> -----Original Message----- > From: Stephen Warren [mailto:swarren@wwwdotorg.org] > Sent: Wednesday, March 20, 2013 1:29 AM > To: Venu Byravarasu > Cc: gregkh@linuxfoundation.org; stern@rowland.harvard.edu; > balbi@ti.com; linux-usb@vger.kernel.org; linux-kernel@vger.kernel.org; > linux-tegra@vger.kernel.org; devicetree-discuss@lists.ozlabs.org > Subject: Re: [PATCH 3/7] usb: phy: tegra: Get PHY mode using DT > > On 03/18/2013 06:29 AM, Venu Byravarasu wrote: > > Added a new PHY mode to support OTG. > > Obtained Tegra USB PHY mode using DT property. > > > diff --git a/drivers/usb/phy/tegra_usb_phy.c > b/drivers/usb/phy/tegra_usb_phy.c > > > @@ -713,6 +712,16 @@ struct tegra_usb_phy > *tegra_usb_phy_open(struct device *dev, int instance, > > else > > phy->is_ulpi_phy = true; > > > > + err = of_property_match_string(np, "dr_mode", "otg"); > > + if (err < 0) { > > + err = of_property_match_string(np, "dr_mode", "gadget"); > > + if (err < 0) > > The binding says the 3 legal values for this property are "host", > "peripheral", or "otg". This agrees with the usage in > Documentation/devicetree/bindings/usb/fsl-usb.txt and > drivers/usb/host/fsl-mph-dr-of.c. So, "gadget" is not something the code > should be checking for. Agree, will correct it. > > I'm sure I pointed this out before. -- To unsubscribe from this list: send the line "unsubscribe linux-tegra" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/usb/host/ehci-tegra.c b/drivers/usb/host/ehci-tegra.c index 568aecc..7afb962 100644 --- a/drivers/usb/host/ehci-tegra.c +++ b/drivers/usb/host/ehci-tegra.c @@ -732,8 +732,7 @@ static int tegra_ehci_probe(struct platform_device *pdev) } tegra->phy = tegra_usb_phy_open(&pdev->dev, instance, hcd->regs, - pdata->phy_config, - TEGRA_USB_PHY_MODE_HOST); + pdata->phy_config); if (IS_ERR(tegra->phy)) { dev_err(&pdev->dev, "Failed to open USB phy\n"); err = -ENXIO; diff --git a/drivers/usb/phy/tegra_usb_phy.c b/drivers/usb/phy/tegra_usb_phy.c index 5487d38..93abd68 100644 --- a/drivers/usb/phy/tegra_usb_phy.c +++ b/drivers/usb/phy/tegra_usb_phy.c @@ -688,7 +688,7 @@ static int tegra_usb_phy_suspend(struct usb_phy *x, int suspend) } struct tegra_usb_phy *tegra_usb_phy_open(struct device *dev, int instance, - void __iomem *regs, void *config, enum tegra_usb_phy_mode phy_mode) + void __iomem *regs, void *config) { struct tegra_usb_phy *phy; unsigned long parent_rate; @@ -703,7 +703,6 @@ struct tegra_usb_phy *tegra_usb_phy_open(struct device *dev, int instance, phy->instance = instance; phy->regs = regs; phy->config = config; - phy->mode = phy_mode; phy->dev = dev; phy->is_legacy_phy = of_property_read_bool(np, "nvidia,has-legacy-mode"); @@ -713,6 +712,16 @@ struct tegra_usb_phy *tegra_usb_phy_open(struct device *dev, int instance, else phy->is_ulpi_phy = true; + err = of_property_match_string(np, "dr_mode", "otg"); + if (err < 0) { + err = of_property_match_string(np, "dr_mode", "gadget"); + if (err < 0) + phy->mode = TEGRA_USB_PHY_MODE_HOST; + else + phy->mode = TEGRA_USB_PHY_MODE_DEVICE; + } else + phy->mode = TEGRA_USB_PHY_MODE_OTG; + if (!phy->config) { if (phy->is_ulpi_phy) { pr_err("%s: ulpi phy configuration missing", __func__); diff --git a/include/linux/usb/tegra_usb_phy.h b/include/linux/usb/tegra_usb_phy.h index 9ebebe9..a7af923 100644 --- a/include/linux/usb/tegra_usb_phy.h +++ b/include/linux/usb/tegra_usb_phy.h @@ -42,6 +42,7 @@ enum tegra_usb_phy_port_speed { enum tegra_usb_phy_mode { TEGRA_USB_PHY_MODE_DEVICE, TEGRA_USB_PHY_MODE_HOST, + TEGRA_USB_PHY_MODE_OTG, }; struct tegra_xtal_freq; @@ -64,7 +65,7 @@ struct tegra_usb_phy { }; struct tegra_usb_phy *tegra_usb_phy_open(struct device *dev, int instance, - void __iomem *regs, void *config, enum tegra_usb_phy_mode phy_mode); + void __iomem *regs, void *config); void tegra_usb_phy_preresume(struct usb_phy *phy);
Added a new PHY mode to support OTG. Obtained Tegra USB PHY mode using DT property. Signed-off-by: Venu Byravarasu <vbyravarasu@nvidia.com> --- drivers/usb/host/ehci-tegra.c | 3 +-- drivers/usb/phy/tegra_usb_phy.c | 13 +++++++++++-- include/linux/usb/tegra_usb_phy.h | 3 ++- 3 files changed, 14 insertions(+), 5 deletions(-)