EXYNOS5: Add function to enable exynos5420 usbdev phy ctrl
authorJoonyoung Shim <jy0922.shim@samsung.com>
Wed, 21 Jan 2015 04:51:32 +0000 (13:51 +0900)
committerMinkyu Kang <mk7.kang@samsung.com>
Fri, 13 Feb 2015 08:19:55 +0000 (17:19 +0900)
Exynos5420 has different registers with other exynos5 SoCs to control
usb device phy, so need separated function to enable exynos5420 usb
device phy.

Signed-off-by: Joonyoung Shim <jy0922.shim@samsung.com>
Signed-off-by: Minkyu Kang <mk7.kang@samsung.com>
arch/arm/cpu/armv7/exynos/power.c

index 1520d642c5d0d944fac86dbfdf531d97081ce095..1b12051656e26405667e21aa65e499a559eba23c 100644 (file)
@@ -102,10 +102,34 @@ static void exynos5_set_usbdrd_phy_ctrl(unsigned int enable)
        }
 }
 
+static void exynos5420_set_usbdev_phy_ctrl(unsigned int enable)
+{
+       struct exynos5420_power *power =
+               (struct exynos5420_power *)samsung_get_base_power();
+
+       if (enable) {
+               /* Enabling USBDEV_PHY */
+               setbits_le32(&power->usbdev_phy_control,
+                               POWER_USB_DRD_PHY_CTRL_EN);
+               setbits_le32(&power->usbdev1_phy_control,
+                               POWER_USB_DRD_PHY_CTRL_EN);
+       } else {
+               /* Disabling USBDEV_PHY */
+               clrbits_le32(&power->usbdev_phy_control,
+                               POWER_USB_DRD_PHY_CTRL_EN);
+               clrbits_le32(&power->usbdev1_phy_control,
+                               POWER_USB_DRD_PHY_CTRL_EN);
+       }
+}
+
 void set_usbdrd_phy_ctrl(unsigned int enable)
 {
-       if (cpu_is_exynos5())
-               exynos5_set_usbdrd_phy_ctrl(enable);
+       if (cpu_is_exynos5()) {
+               if (proid_is_exynos5420() || proid_is_exynos5800())
+                       exynos5420_set_usbdev_phy_ctrl(enable);
+               else
+                       exynos5_set_usbdrd_phy_ctrl(enable);
+       }
 }
 
 static void exynos5_dp_phy_control(unsigned int enable)