svn commit: r366826 - stable/12/sys/dev/usb/controller

Andriy Gapon avg at FreeBSD.org
Mon Oct 19 06:44:07 UTC 2020


Author: avg
Date: Mon Oct 19 06:44:07 2020
New Revision: 366826
URL: https://svnweb.freebsd.org/changeset/base/366826

Log:
  MFC r365401: musb/allwinner: add H3 support

Modified:
  stable/12/sys/dev/usb/controller/musb_otg_allwinner.c
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/sys/dev/usb/controller/musb_otg_allwinner.c
==============================================================================
--- stable/12/sys/dev/usb/controller/musb_otg_allwinner.c	Mon Oct 19 02:12:32 2020	(r366825)
+++ stable/12/sys/dev/usb/controller/musb_otg_allwinner.c	Mon Oct 19 06:44:07 2020	(r366826)
@@ -71,6 +71,7 @@ __FBSDID("$FreeBSD$");
 #endif
 
 #define	DRD_EP_MAX		5
+#define	DRD_EP_MAX_H3		4
 
 #define	MUSB2_REG_AWIN_VEND0	0x0043
 #define	VEND0_PIO_MODE		0
@@ -89,12 +90,13 @@ static struct ofw_compat_data compat_data[] = {
 	{ "allwinner,sun4i-a10-musb",	AWUSB_OKAY },
 	{ "allwinner,sun6i-a31-musb",	AWUSB_OKAY },
 	{ "allwinner,sun8i-a33-musb",	AWUSB_OKAY | AWUSB_NO_CONFDATA },
+	{ "allwinner,sun8i-h3-musb",	AWUSB_OKAY | AWUSB_NO_CONFDATA },
 	{ NULL,				0 }
 };
 
 static const struct musb_otg_ep_cfg musbotg_ep_allwinner[] = {
 	{
-		.ep_end = 5,
+		.ep_end = DRD_EP_MAX,
 		.ep_fifosz_shift = 9,
 		.ep_fifosz_reg = MUSB2_VAL_FIFOSZ_512,
 	},
@@ -103,6 +105,17 @@ static const struct musb_otg_ep_cfg musbotg_ep_allwinn
 	},
 };
 
+static const struct musb_otg_ep_cfg musbotg_ep_allwinner_h3[] = {
+	{
+		.ep_end = DRD_EP_MAX_H3,
+		.ep_fifosz_shift = 9,
+		.ep_fifosz_reg = MUSB2_VAL_FIFOSZ_512,
+	},
+	{
+		.ep_end = -1,
+	},
+};
+
 struct awusbdrd_softc {
 	struct musbotg_softc	sc;
 	struct resource		*res[2];
@@ -445,8 +458,13 @@ awusbdrd_attach(device_t dev)
 	sc->sc.sc_id = 0;
 	sc->sc.sc_platform_data = sc;
 	sc->sc.sc_mode = MUSB2_HOST_MODE;	/* XXX HOST vs DEVICE mode */
-	sc->sc.sc_ep_max = DRD_EP_MAX;
-	sc->sc.sc_ep_cfg = musbotg_ep_allwinner;
+	if (ofw_bus_is_compatible(dev, "allwinner,sun8i-h3-musb")) {
+		sc->sc.sc_ep_cfg = musbotg_ep_allwinner_h3;
+		sc->sc.sc_ep_max = DRD_EP_MAX_H3;
+	} else {
+		sc->sc.sc_ep_cfg = musbotg_ep_allwinner;
+		sc->sc.sc_ep_max = DRD_EP_MAX;
+	}
 
 	error = bus_setup_intr(dev, sc->res[1], INTR_MPSAFE | INTR_TYPE_BIO,
 	    NULL, awusbdrd_intr, sc, &sc->sc.sc_intr_hdl);


More information about the svn-src-all mailing list