usb: s3c-hsotg: Use the new Exynos USB phy driver with the generic phy framework
authorKamil Debski <k.debski@samsung.com>
Wed, 31 Jul 2013 10:04:33 +0000 (12:04 +0200)
committerChanho Park <chanho61.park@samsung.com>
Tue, 18 Nov 2014 02:44:41 +0000 (11:44 +0900)
Change the used phy driver to the new Exynos USB phy driver that uses the
generic phy framework.

Signed-off-by: Kamil Debski <k.debski@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
drivers/usb/gadget/s3c-hsotg.c

index afcd326..0ec467f 100644 (file)
@@ -30,6 +30,7 @@
 #include <linux/clk.h>
 #include <linux/regulator/consumer.h>
 #include <linux/of_platform.h>
+#include <linux/phy/phy.h>
 
 #include <linux/usb/ch9.h>
 #include <linux/usb/gadget.h>
@@ -133,6 +134,7 @@ struct s3c_hsotg_ep {
 /**
  * struct s3c_hsotg - driver state.
  * @dev: The parent device supplied to the probe function
+
  * @driver: USB gadget driver
  * @phy: The otg phy transceiver structure for phy control.
  * @plat: The platform specific configuration data. This can be removed once
@@ -156,7 +158,7 @@ struct s3c_hsotg_ep {
 struct s3c_hsotg {
        struct device            *dev;
        struct usb_gadget_driver *driver;
-       struct usb_phy          *phy;
+       struct phy               *phy;
        struct s3c_hsotg_plat    *plat;
 
        spinlock_t              lock;
@@ -2823,14 +2825,11 @@ static void s3c_hsotg_phy_enable(struct s3c_hsotg *hsotg)
 
        dev_dbg(hsotg->dev, "pdev 0x%p\n", pdev);
 
-       if (hsotg->phy) {
-               struct usb_otg *otg = hsotg->phy->otg;
-               if (otg && otg->set_host)
-                       otg->set_host(otg, NULL);
-               usb_phy_init(hsotg->phy);
-       }
+       if (hsotg->phy)
+               phy_power_on(hsotg->phy);
        else if (hsotg->plat->phy_init)
                hsotg->plat->phy_init(pdev, hsotg->plat->phy_type);
+
 }
 
 /**
@@ -2845,7 +2844,7 @@ static void s3c_hsotg_phy_disable(struct s3c_hsotg *hsotg)
        struct platform_device *pdev = to_platform_device(hsotg->dev);
 
        if (hsotg->phy)
-               usb_phy_shutdown(hsotg->phy);
+               phy_power_off(hsotg->phy);
        else if (hsotg->plat->phy_exit)
                hsotg->plat->phy_exit(pdev, hsotg->plat->phy_type);
 }
@@ -3455,7 +3454,7 @@ static void s3c_hsotg_delete_debug(struct s3c_hsotg *hsotg)
 static int s3c_hsotg_probe(struct platform_device *pdev)
 {
        struct s3c_hsotg_plat *plat = pdev->dev.platform_data;
-       struct usb_phy *phy;
+       struct phy *phy;
        struct device *dev = &pdev->dev;
        struct s3c_hsotg_ep *eps;
        struct s3c_hsotg *hsotg;
@@ -3470,7 +3469,7 @@ static int s3c_hsotg_probe(struct platform_device *pdev)
                return -ENOMEM;
        }
 
-       phy = devm_usb_get_phy(dev, USB_PHY_TYPE_USB2);
+       phy = devm_phy_get(&pdev->dev, "device");
        if (IS_ERR(phy)) {
                /* Fallback for pdata */
                plat = pdev->dev.platform_data;