diff options
author | Venu Byravarasu <vbyravarasu@nvidia.com> | 2013-05-16 10:12:59 -0400 |
---|---|---|
committer | Felipe Balbi <balbi@ti.com> | 2013-05-29 19:46:46 -0400 |
commit | 9cd9384c73395f6ce78e1b9d529bc9f294fd5223 (patch) | |
tree | 8e521b70da4a9db260c8f72b1624df884694730c /drivers | |
parent | 9e69fae1a89e543949fe81603f7229463b8061de (diff) |
usb: phy: tegra: Get PHY mode using DT
Added a new PHY mode to support OTG.
Obtained Tegra USB PHY mode using DT property.
Signed-off-by: Venu Byravarasu <vbyravarasu@nvidia.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/usb/host/ehci-tegra.c | 1 | ||||
-rw-r--r-- | drivers/usb/phy/phy-tegra-usb.c | 13 |
2 files changed, 11 insertions, 3 deletions
diff --git a/drivers/usb/host/ehci-tegra.c b/drivers/usb/host/ehci-tegra.c index 59d111bf44a9..d64199044b4a 100644 --- a/drivers/usb/host/ehci-tegra.c +++ b/drivers/usb/host/ehci-tegra.c | |||
@@ -736,7 +736,6 @@ static int tegra_ehci_probe(struct platform_device *pdev) | |||
736 | 736 | ||
737 | tegra->phy = tegra_usb_phy_open(&pdev->dev, instance, hcd->regs, | 737 | tegra->phy = tegra_usb_phy_open(&pdev->dev, instance, hcd->regs, |
738 | pdata->phy_config, | 738 | pdata->phy_config, |
739 | TEGRA_USB_PHY_MODE_HOST, | ||
740 | tegra_ehci_set_pts, | 739 | tegra_ehci_set_pts, |
741 | tegra_ehci_set_phcd); | 740 | tegra_ehci_set_phcd); |
742 | if (IS_ERR(tegra->phy)) { | 741 | if (IS_ERR(tegra->phy)) { |
diff --git a/drivers/usb/phy/phy-tegra-usb.c b/drivers/usb/phy/phy-tegra-usb.c index 8bcc12f6804a..0ff1f3e03b1e 100644 --- a/drivers/usb/phy/phy-tegra-usb.c +++ b/drivers/usb/phy/phy-tegra-usb.c | |||
@@ -687,7 +687,7 @@ static int tegra_usb_phy_suspend(struct usb_phy *x, int suspend) | |||
687 | } | 687 | } |
688 | 688 | ||
689 | struct tegra_usb_phy *tegra_usb_phy_open(struct device *dev, int instance, | 689 | struct tegra_usb_phy *tegra_usb_phy_open(struct device *dev, int instance, |
690 | void __iomem *regs, void *config, enum tegra_usb_phy_mode phy_mode, | 690 | void __iomem *regs, void *config, |
691 | void (*set_pts)(struct usb_phy *x, u8 pts_val), | 691 | void (*set_pts)(struct usb_phy *x, u8 pts_val), |
692 | void (*set_phcd)(struct usb_phy *x, bool enable)) | 692 | void (*set_phcd)(struct usb_phy *x, bool enable)) |
693 | 693 | ||
@@ -705,7 +705,6 @@ struct tegra_usb_phy *tegra_usb_phy_open(struct device *dev, int instance, | |||
705 | phy->instance = instance; | 705 | phy->instance = instance; |
706 | phy->regs = regs; | 706 | phy->regs = regs; |
707 | phy->config = config; | 707 | phy->config = config; |
708 | phy->mode = phy_mode; | ||
709 | phy->dev = dev; | 708 | phy->dev = dev; |
710 | phy->is_legacy_phy = | 709 | phy->is_legacy_phy = |
711 | of_property_read_bool(np, "nvidia,has-legacy-mode"); | 710 | of_property_read_bool(np, "nvidia,has-legacy-mode"); |
@@ -717,6 +716,16 @@ struct tegra_usb_phy *tegra_usb_phy_open(struct device *dev, int instance, | |||
717 | else | 716 | else |
718 | phy->is_ulpi_phy = true; | 717 | phy->is_ulpi_phy = true; |
719 | 718 | ||
719 | err = of_property_match_string(np, "dr_mode", "otg"); | ||
720 | if (err < 0) { | ||
721 | err = of_property_match_string(np, "dr_mode", "peripheral"); | ||
722 | if (err < 0) | ||
723 | phy->mode = TEGRA_USB_PHY_MODE_HOST; | ||
724 | else | ||
725 | phy->mode = TEGRA_USB_PHY_MODE_DEVICE; | ||
726 | } else | ||
727 | phy->mode = TEGRA_USB_PHY_MODE_OTG; | ||
728 | |||
720 | if (!phy->config) { | 729 | if (!phy->config) { |
721 | if (phy->is_ulpi_phy) { | 730 | if (phy->is_ulpi_phy) { |
722 | pr_err("%s: ulpi phy configuration missing", __func__); | 731 | pr_err("%s: ulpi phy configuration missing", __func__); |