Message ID | 1421815892-13160-1-git-send-email-jy0922.shim@samsung.com |
---|---|
State | Accepted |
Delegated to: | Minkyu Kang |
Headers | show |
On 21/01/15 13:51, Joonyoung Shim wrote: > 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> > --- > I used "usbdev" instead of "usbdrd" on function name because registers > name prefix is usbdev_. > > arch/arm/cpu/armv7/exynos/power.c | 28 ++++++++++++++++++++++++++-- > 1 file changed, 26 insertions(+), 2 deletions(-) > > diff --git a/arch/arm/cpu/armv7/exynos/power.c b/arch/arm/cpu/armv7/exynos/power.c > index 1520d64..1b12051 100644 > --- a/arch/arm/cpu/armv7/exynos/power.c > +++ b/arch/arm/cpu/armv7/exynos/power.c > @@ -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) > applied to u-boot-samsung. Thank, Minkyu Kang.
diff --git a/arch/arm/cpu/armv7/exynos/power.c b/arch/arm/cpu/armv7/exynos/power.c index 1520d64..1b12051 100644 --- a/arch/arm/cpu/armv7/exynos/power.c +++ b/arch/arm/cpu/armv7/exynos/power.c @@ -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)
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> --- I used "usbdev" instead of "usbdrd" on function name because registers name prefix is usbdev_. arch/arm/cpu/armv7/exynos/power.c | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-)