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.przyw...@arm.com>
---
 arch/arm/mach-sunxi/Kconfig           |  1 +
 drivers/phy/allwinner/phy-sun4i-usb.c | 12 ++++++++++++
 2 files changed, 13 insertions(+)

diff --git a/arch/arm/mach-sunxi/Kconfig b/arch/arm/mach-sunxi/Kconfig
index 16d41b83af..3a3b673430 100644
--- a/arch/arm/mach-sunxi/Kconfig
+++ b/arch/arm/mach-sunxi/Kconfig
@@ -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)"
diff --git a/drivers/phy/allwinner/phy-sun4i-usb.c 
b/drivers/phy/allwinner/phy-sun4i-usb.c
index 5e8f87717f..f7309057b9 100644
--- a/drivers/phy/allwinner/phy-sun4i-usb.c
+++ b/drivers/phy/allwinner/phy-sun4i-usb.c
@@ -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},
-- 
2.14.5

Reply via email to