phy: sun4i-usb: Add Allwinner R40 support
authorAndre Przywara <andre.przywara@arm.com>
Wed, 1 Jan 2020 23:44:48 +0000 (23:44 +0000)
committerJagan Teki <jagan@amarulasolutions.com>
Fri, 24 Jan 2020 17:36:50 +0000 (23:06 +0530)
Since every Allwinner USB PHY seems to be slightly different from each
other, we need to add the compatible string and the respective data
structure to make it work on the R40/V40 SoC.
Nothing spectacular this time, just one less USB controller than the H3.
Copied from the Linux kernel.

Signed-off-by: Andre Przywara <andre.przywara@arm.com>
Reviewed-by: Jagan Teki <jagan@amarulasolutions.com>
arch/arm/mach-sunxi/Kconfig
drivers/phy/allwinner/phy-sun4i-usb.c

index 16d41b83afe189e7d55fcbf6eb19dd2405573bac..3a3b6734301e3dae2d11431b35b0e58dfb89fdca 100644 (file)
@@ -250,6 +250,7 @@ config MACH_SUN8I_R40
        select SUPPORT_SPL
        select SUNXI_DRAM_DW
        select SUNXI_DRAM_DW_32BIT
+       select PHY_SUN4I_USB
 
 config MACH_SUN8I_V3S
        bool "sun8i (Allwinner V3s)"
index 5e8f87717f8f59874ad6b6d472a8762b7011bfb9..f7309057b9124ae6f7a185616110fa8eb98b3135 100644 (file)
@@ -73,6 +73,7 @@ enum sun4i_usb_phy_type {
        sun8i_a33_phy,
        sun8i_a83t_phy,
        sun8i_h3_phy,
+       sun8i_r40_phy,
        sun8i_v3s_phy,
        sun50i_a64_phy,
        sun50i_h6_phy,
@@ -571,6 +572,16 @@ static const struct sun4i_usb_phy_cfg sun8i_h3_cfg = {
        .phy0_dual_route = true,
 };
 
+static const struct sun4i_usb_phy_cfg sun8i_r40_cfg = {
+       .num_phys = 3,
+       .type = sun8i_r40_phy,
+       .disc_thresh = 3,
+       .phyctl_offset = REG_PHYCTL_A33,
+       .dedicated_clocks = true,
+       .enable_pmu_unk1 = true,
+       .phy0_dual_route = true,
+};
+
 static const struct sun4i_usb_phy_cfg sun8i_v3s_cfg = {
        .num_phys = 1,
        .type = sun8i_v3s_phy,
@@ -611,6 +622,7 @@ static const struct udevice_id sun4i_usb_phy_ids[] = {
        { .compatible = "allwinner,sun8i-a33-usb-phy", .data = (ulong)&sun8i_a33_cfg },
        { .compatible = "allwinner,sun8i-a83t-usb-phy", .data = (ulong)&sun8i_a83t_cfg },
        { .compatible = "allwinner,sun8i-h3-usb-phy", .data = (ulong)&sun8i_h3_cfg },
+       { .compatible = "allwinner,sun8i-r40-usb-phy", .data = (ulong)&sun8i_r40_cfg },
        { .compatible = "allwinner,sun8i-v3s-usb-phy", .data = (ulong)&sun8i_v3s_cfg },
        { .compatible = "allwinner,sun50i-a64-usb-phy", .data = (ulong)&sun50i_a64_cfg},
        { .compatible = "allwinner,sun50i-h6-usb-phy", .data = (ulong)&sun50i_h6_cfg},