phy: sun4i-usb: Align H6 initialization logic with the kernel
authorRoman Stratiienko <r.stratiienko@gmail.com>
Tue, 12 May 2020 18:24:49 +0000 (21:24 +0300)
committerJagan Teki <jagan@amarulasolutions.com>
Mon, 1 Jun 2020 17:07:51 +0000 (22:37 +0530)
H6 SOC needs additional initialization of PHY registers. Corresponding
changes can be found in the kernel patch [1].

Without this changes there is no enumeration of 'musb' gadget.

[1] - https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=ae409cc7c3cdb9ac4a1dba3eae70efec3d6b6c79

Fixes: 35fa673e0e5f ("sunxi: phy: Add USB PHY support for Allwinner H6")
Signed-off-by: Roman Stratiienko <r.stratiienko@gmail.com>
Reviewed-by: Jagan Teki <jagan@amarulasolutions.com>
drivers/phy/allwinner/phy-sun4i-usb.c

index b4bae22c2cf4f6b8f52f71f55cd970ca3cba9832..f050645044c9905327c29cd0ccd3aa9b29767ce2 100644 (file)
@@ -282,7 +282,8 @@ static int sun4i_usb_phy_init(struct phy *phy)
                return ret;
        }
 
-       if (data->cfg->type == sun8i_a83t_phy) {
+       if (data->cfg->type == sun8i_a83t_phy ||
+           data->cfg->type == sun50i_h6_phy) {
                if (phy->id == 0) {
                        val = readl(data->base + data->cfg->phyctl_offset);
                        val |= PHY_CTL_VBUSVLDEXT;
@@ -324,7 +325,8 @@ static int sun4i_usb_phy_exit(struct phy *phy)
        int ret;
 
        if (phy->id == 0) {
-               if (data->cfg->type == sun8i_a83t_phy) {
+               if (data->cfg->type == sun8i_a83t_phy ||
+                   data->cfg->type == sun50i_h6_phy) {
                        void __iomem *phyctl = data->base +
                                data->cfg->phyctl_offset;