usb: dwc-meson-g12a: Add support for USB on AXG SoCs
authorNeil Armstrong <narmstrong@baylibre.com>
Thu, 17 Sep 2020 06:59:47 +0000 (08:59 +0200)
committerFelipe Balbi <balbi@kernel.org>
Fri, 2 Oct 2020 06:57:39 +0000 (09:57 +0300)
The Amlogic AXG is close to the GXL Glue but with a single OTG PHY.

It needs the same init sequence as GXL & GXM, but it seems it doesn't need
the host disconnect bit.

Reviewed-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
Reviewed-by: Kevin Hilman <khilman@baylibre.com>
Signed-off-by: Felipe Balbi <balbi@kernel.org>
drivers/usb/dwc3/dwc3-meson-g12a.c

index a966e4d..417e053 100644 (file)
@@ -127,6 +127,7 @@ static const char * const meson_g12a_phy_names[] = {
 /*
  * Amlogic A1 has a single physical PHY, in slot 1, but still has the
  * two U2 PHY controls register blocks like G12A.
+ * AXG has the similar scheme, thus needs the same tweak.
  * Handling the first PHY on slot 1 would need a large amount of code
  * changes, and the current management is generic enough to handle it
  * correctly when only the "usb2-phy1" phy is specified on-par with the
@@ -215,6 +216,19 @@ static struct dwc3_meson_g12a_drvdata gxm_drvdata = {
        .usb_post_init = dwc3_meson_gxl_usb_post_init,
 };
 
+static struct dwc3_meson_g12a_drvdata axg_drvdata = {
+       .otg_switch_supported = true,
+       .clks = meson_gxl_clocks,
+       .num_clks = ARRAY_SIZE(meson_gxl_clocks),
+       .phy_names = meson_a1_phy_names,
+       .num_phys = ARRAY_SIZE(meson_a1_phy_names),
+       .setup_regmaps = dwc3_meson_gxl_setup_regmaps,
+       .usb2_init_phy = dwc3_meson_gxl_usb2_init_phy,
+       .set_phy_mode = dwc3_meson_gxl_set_phy_mode,
+       .usb_init = dwc3_meson_g12a_usb_init,
+       .usb_post_init = dwc3_meson_gxl_usb_post_init,
+};
+
 static struct dwc3_meson_g12a_drvdata g12a_drvdata = {
        .otg_switch_supported = true,
        .clks = meson_g12a_clocks,
@@ -924,6 +938,10 @@ static const struct of_device_id dwc3_meson_g12a_match[] = {
                .data = &gxm_drvdata,
        },
        {
+               .compatible = "amlogic,meson-axg-usb-ctrl",
+               .data = &axg_drvdata,
+       },
+       {
                .compatible = "amlogic,meson-g12a-usb-ctrl",
                .data = &g12a_drvdata,
        },