From: Heikki Krogerus <heikki.kroge...@linux.intel.com>

By using the unified device property interface, the function
can be made available for all platforms and not just the
ones using DT.

Signed-off-by: Heikki Krogerus <heikki.kroge...@linux.intel.com>
Signed-off-by: Felipe Balbi <ba...@ti.com>
(cherry picked from commit 06e7114f0d8297278eb24f4e9bee3393a94bd8ce)
Signed-off-by: Wan Ahmad Zainie <wan.ahmad.zainie.wan.moha...@intel.com>

Conflicts:
        drivers/usb/musb/sunxi.c
Resolved. Deleted. This file does not exist in 4.1.y.
---
 drivers/usb/chipidea/core.c     |  2 +-
 drivers/usb/common/common.c     | 15 ++++-----------
 drivers/usb/dwc2/platform.c     |  2 +-
 drivers/usb/dwc3/core.c         |  2 +-
 drivers/usb/dwc3/dwc3-st.c      |  2 +-
 drivers/usb/musb/musb_dsps.c    |  2 +-
 drivers/usb/phy/phy-msm-usb.c   |  2 +-
 drivers/usb/phy/phy-tegra-usb.c |  2 +-
 include/linux/usb/of.h          |  6 ------
 include/linux/usb/otg.h         |  9 +++++++++
 10 files changed, 20 insertions(+), 24 deletions(-)

diff --git a/drivers/usb/chipidea/core.c b/drivers/usb/chipidea/core.c
index 029859a..b0e79e6 100644
--- a/drivers/usb/chipidea/core.c
+++ b/drivers/usb/chipidea/core.c
@@ -566,7 +566,7 @@ static int ci_get_platdata(struct device *dev,
                platdata->phy_mode = of_usb_get_phy_mode(dev->of_node);
 
        if (!platdata->dr_mode)
-               platdata->dr_mode = of_usb_get_dr_mode(dev->of_node);
+               platdata->dr_mode = usb_get_dr_mode(dev);
 
        if (platdata->dr_mode == USB_DR_MODE_UNKNOWN)
                platdata->dr_mode = USB_DR_MODE_OTG;
diff --git a/drivers/usb/common/common.c b/drivers/usb/common/common.c
index b25a111..673d530 100644
--- a/drivers/usb/common/common.c
+++ b/drivers/usb/common/common.c
@@ -99,7 +99,6 @@ const char *usb_state_string(enum usb_device_state state)
 }
 EXPORT_SYMBOL_GPL(usb_state_string);
 
-#ifdef CONFIG_OF
 static const char *const usb_dr_modes[] = {
        [USB_DR_MODE_UNKNOWN]           = "",
        [USB_DR_MODE_HOST]              = "host",
@@ -107,19 +106,12 @@ static const char *const usb_dr_modes[] = {
        [USB_DR_MODE_OTG]               = "otg",
 };
 
-/**
- * of_usb_get_dr_mode - Get dual role mode for given device_node
- * @np:        Pointer to the given device_node
- *
- * The function gets phy interface string from property 'dr_mode',
- * and returns the correspondig enum usb_dr_mode
- */
-enum usb_dr_mode of_usb_get_dr_mode(struct device_node *np)
+enum usb_dr_mode usb_get_dr_mode(struct device *dev)
 {
        const char *dr_mode;
        int err, i;
 
-       err = of_property_read_string(np, "dr_mode", &dr_mode);
+       err = device_property_read_string(dev, "dr_mode", &dr_mode);
        if (err < 0)
                return USB_DR_MODE_UNKNOWN;
 
@@ -129,8 +121,9 @@ enum usb_dr_mode of_usb_get_dr_mode(struct device_node *np)
 
        return USB_DR_MODE_UNKNOWN;
 }
-EXPORT_SYMBOL_GPL(of_usb_get_dr_mode);
+EXPORT_SYMBOL_GPL(usb_get_dr_mode);
 
+#ifdef CONFIG_OF
 /**
  * of_usb_host_tpl_support - to get if Targeted Peripheral List is supported
  * for given targeted hosts (non-PC hosts)
diff --git a/drivers/usb/dwc2/platform.c b/drivers/usb/dwc2/platform.c
index 185663e..d6f620f 100644
--- a/drivers/usb/dwc2/platform.c
+++ b/drivers/usb/dwc2/platform.c
@@ -214,7 +214,7 @@ static int dwc2_driver_probe(struct platform_device *dev)
        dev_dbg(&dev->dev, "mapped PA %08lx to VA %p\n",
                (unsigned long)res->start, hsotg->regs);
 
-       hsotg->dr_mode = of_usb_get_dr_mode(dev->dev.of_node);
+       hsotg->dr_mode = usb_get_dr_mode(&dev->dev);
 
        /*
         * Attempt to find a generic PHY, then look for an old style
diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
index 43b8c1c..c649596 100644
--- a/drivers/usb/dwc3/core.c
+++ b/drivers/usb/dwc3/core.c
@@ -878,6 +878,7 @@ static int dwc3_probe(struct platform_device *pdev)
        hird_threshold = 12;
 
        dwc->maximum_speed = usb_get_maximum_speed(dev);
+       dwc->dr_mode = usb_get_dr_mode(dev);
 
        if (node) {
                dwc->has_lpm_erratum = of_property_read_bool(node,
@@ -893,7 +894,6 @@ static int dwc3_probe(struct platform_device *pdev)
 
                dwc->needs_fifo_resize = of_property_read_bool(node,
                                "tx-fifo-resize");
-               dwc->dr_mode = of_usb_get_dr_mode(node);
 
                dwc->disable_scramble_quirk = of_property_read_bool(node,
                                "snps,disable_scramble_quirk");
diff --git a/drivers/usb/dwc3/dwc3-st.c b/drivers/usb/dwc3/dwc3-st.c
index 8e66449..a3f3384 100644
--- a/drivers/usb/dwc3/dwc3-st.c
+++ b/drivers/usb/dwc3/dwc3-st.c
@@ -272,7 +272,7 @@ static int st_dwc3_probe(struct platform_device *pdev)
                goto undo_softreset;
        }
 
-       dwc3_data->dr_mode = of_usb_get_dr_mode(child_pdev->dev.of_node);
+       dwc3_data->dr_mode = usb_get_dr_mode(&child_pdev->dev);
 
        /*
         * Configure the USB port as device or host according to the static
diff --git a/drivers/usb/musb/musb_dsps.c b/drivers/usb/musb/musb_dsps.c
index 85b694f..56c0355 100644
--- a/drivers/usb/musb/musb_dsps.c
+++ b/drivers/usb/musb/musb_dsps.c
@@ -666,7 +666,7 @@ static int get_musb_port_mode(struct device *dev)
 {
        enum usb_dr_mode mode;
 
-       mode = of_usb_get_dr_mode(dev->of_node);
+       mode = usb_get_dr_mode(dev);
        switch (mode) {
        case USB_DR_MODE_HOST:
                return MUSB_PORT_MODE_HOST;
diff --git a/drivers/usb/phy/phy-msm-usb.c b/drivers/usb/phy/phy-msm-usb.c
index c9156be..1dce97f 100644
--- a/drivers/usb/phy/phy-msm-usb.c
+++ b/drivers/usb/phy/phy-msm-usb.c
@@ -1462,7 +1462,7 @@ static int msm_otg_read_dt(struct platform_device *pdev, 
struct msm_otg *motg)
        if (IS_ERR(motg->phy_rst))
                motg->phy_rst = NULL;
 
-       pdata->mode = of_usb_get_dr_mode(node);
+       pdata->mode = usb_get_dr_mode(&pdev->dev);
        if (pdata->mode == USB_DR_MODE_UNKNOWN)
                pdata->mode = USB_DR_MODE_OTG;
 
diff --git a/drivers/usb/phy/phy-tegra-usb.c b/drivers/usb/phy/phy-tegra-usb.c
index ab025b0..5fe4a57 100644
--- a/drivers/usb/phy/phy-tegra-usb.c
+++ b/drivers/usb/phy/phy-tegra-usb.c
@@ -1029,7 +1029,7 @@ static int tegra_usb_phy_probe(struct platform_device 
*pdev)
        }
 
        if (of_find_property(np, "dr_mode", NULL))
-               tegra_phy->mode = of_usb_get_dr_mode(np);
+               tegra_phy->mode = usb_get_dr_mode(&pdev->dev);
        else
                tegra_phy->mode = USB_DR_MODE_HOST;
 
diff --git a/include/linux/usb/of.h b/include/linux/usb/of.h
index ff23fea..c3fe9e4 100644
--- a/include/linux/usb/of.h
+++ b/include/linux/usb/of.h
@@ -12,16 +12,10 @@
 #include <linux/usb/phy.h>
 
 #if IS_ENABLED(CONFIG_OF)
-enum usb_dr_mode of_usb_get_dr_mode(struct device_node *np);
 bool of_usb_host_tpl_support(struct device_node *np);
 int of_usb_update_otg_caps(struct device_node *np,
                        struct usb_otg_caps *otg_caps);
 #else
-static inline enum usb_dr_mode of_usb_get_dr_mode(struct device_node *np)
-{
-       return USB_DR_MODE_UNKNOWN;
-}
-
 static inline bool of_usb_host_tpl_support(struct device_node *np)
 {
        return false;
diff --git a/include/linux/usb/otg.h b/include/linux/usb/otg.h
index 52661c5..b27ebae 100644
--- a/include/linux/usb/otg.h
+++ b/include/linux/usb/otg.h
@@ -104,4 +104,13 @@ enum usb_dr_mode {
        USB_DR_MODE_OTG,
 };
 
+/**
+ * usb_get_dr_mode - Get dual role mode for given device
+ * @dev: Pointer to the given device
+ *
+ * The function gets phy interface string from property 'dr_mode',
+ * and returns the correspondig enum usb_dr_mode
+ */
+extern enum usb_dr_mode usb_get_dr_mode(struct device *dev);
+
 #endif /* __LINUX_USB_OTG_H */
-- 
1.9.1

-- 
_______________________________________________
linux-yocto mailing list
linux-yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/linux-yocto

Reply via email to