Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 28 Jun 2022 13:04:21 GMT
From:      "Bjoern A. Zeeb" <bz@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Subject:   git: b11f52f4db44 - main - USB: dwc3: use device_{has,get}_property()
Message-ID:  <202206281304.25SD4LNr050830@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch main has been updated by bz:

URL: https://cgit.FreeBSD.org/src/commit/?id=b11f52f4db4420f69da537e5ed9b54b7c4fef093

commit b11f52f4db4420f69da537e5ed9b54b7c4fef093
Author:     Bjoern A. Zeeb <bz@FreeBSD.org>
AuthorDate: 2021-11-29 19:26:52 +0000
Commit:     Bjoern A. Zeeb <bz@FreeBSD.org>
CommitDate: 2022-06-28 13:02:11 +0000

    USB: dwc3: use device_{has,get}_property()
    
    Switch the driver to use device based functions which will work not
    only with FDT but also ACPI.
    
    While here make dr_mode a local variable as it is only used during
    probe and not needed later in the softc.
    
    MFC after:      2 weeks
    Reviewed by:    mw
    Differential Revision: https://reviews.freebsd.org/D33170
---
 sys/dev/usb/controller/dwc3.c | 34 +++++++++++++++++++---------------
 1 file changed, 19 insertions(+), 15 deletions(-)

diff --git a/sys/dev/usb/controller/dwc3.c b/sys/dev/usb/controller/dwc3.c
index 9847afb952eb..a3c84b40101a 100644
--- a/sys/dev/usb/controller/dwc3.c
+++ b/sys/dev/usb/controller/dwc3.c
@@ -73,7 +73,6 @@ static struct ofw_compat_data compat_data[] = {
 struct snps_dwc3_softc {
 	struct xhci_softc	sc;
 	device_t		dev;
-	char			dr_mode[16];
 	struct resource *	mem_res;
 	bus_space_tag_t		bst;
 	bus_space_handle_t	bsh;
@@ -244,39 +243,38 @@ snps_dwc3_do_quirks(struct snps_dwc3_softc *sc)
 	uint32_t reg;
 
 	reg = DWC3_READ(sc, DWC3_GUSB2PHYCFG0);
-	if (OF_hasprop(sc->node, "snps,dis-u2-freeclk-exists-quirk"))
+	if (device_has_property(sc->dev, "snps,dis-u2-freeclk-exists-quirk"))
 		reg &= ~DWC3_GUSB2PHYCFG0_U2_FREECLK_EXISTS;
 	else
 		reg |= DWC3_GUSB2PHYCFG0_U2_FREECLK_EXISTS;
-	if (OF_hasprop(sc->node, "snps,dis_u2_susphy_quirk"))
+	if (device_has_property(sc->dev, "snps,dis_u2_susphy_quirk"))
 		reg &= ~DWC3_GUSB2PHYCFG0_SUSPENDUSB20;
 	else
 		reg |= DWC3_GUSB2PHYCFG0_SUSPENDUSB20;
-	if (OF_hasprop(sc->node, "snps,dis_enblslpm_quirk"))
+	if (device_has_property(sc->dev, "snps,dis_enblslpm_quirk"))
 		reg &= ~DWC3_GUSB2PHYCFG0_ENBLSLPM;
 	else
 		reg |= DWC3_GUSB2PHYCFG0_ENBLSLPM;
-
 	DWC3_WRITE(sc, DWC3_GUSB2PHYCFG0, reg);
 
 	reg = DWC3_READ(sc, DWC3_GUCTL1);
-	if (OF_hasprop(sc->node, "snps,dis-tx-ipgap-linecheck-quirk"))
+	if (device_has_property(sc->dev, "snps,dis-tx-ipgap-linecheck-quirk"))
 		reg |= DWC3_GUCTL1_TX_IPGAP_LINECHECK_DIS;
 	DWC3_WRITE(sc, DWC3_GUCTL1, reg);
 
 	reg = DWC3_READ(sc, DWC3_GUSB3PIPECTL0);
-	if (OF_hasprop(sc->node, "snps,dis-del-phy-power-chg-quirk"))
+	if (device_has_property(sc->dev, "snps,dis-del-phy-power-chg-quirk"))
 		reg |= DWC3_GUSB3PIPECTL0_DELAYP1TRANS;
-	if (OF_hasprop(sc->node, "snps,dis_rxdet_inp3_quirk"))
+	if (device_has_property(sc->dev, "snps,dis_rxdet_inp3_quirk"))
 		reg |= DWC3_GUSB3PIPECTL0_DISRXDETINP3;
 	DWC3_WRITE(sc, DWC3_GUSB3PIPECTL0, reg);
-
 }
 
 static int
 snps_dwc3_probe(device_t dev)
 {
-	struct snps_dwc3_softc *sc;
+	char dr_mode[16];
+	ssize_t s;
 
 	if (!ofw_bus_status_okay(dev))
 		return (ENXIO);
@@ -284,11 +282,16 @@ snps_dwc3_probe(device_t dev)
 	if (ofw_bus_search_compatible(dev, compat_data)->ocd_data == 0)
 		return (ENXIO);
 
-	sc = device_get_softc(dev);
-	sc->node = ofw_bus_get_node(dev);
-	OF_getprop(sc->node, "dr_mode", sc->dr_mode, sizeof(sc->dr_mode));
-	if (strcmp(sc->dr_mode, "host") != 0) {
-		device_printf(dev, "Only host mode is supported\n");
+	s = device_get_property(dev, "dr_mode", dr_mode, sizeof(dr_mode),
+	    DEVICE_PROP_BUFFER);
+	if (s == -1) {
+		device_printf(dev, "Cannot determine dr_mode\n");
+		return (ENXIO);
+	}
+	if (strcmp(dr_mode, "host") != 0) {
+		device_printf(dev,
+		    "Found dr_mode '%s' but only 'host' supported. s=%zd\n",
+		    dr_mode, s);
 		return (ENXIO);
 	}
 
@@ -318,6 +321,7 @@ snps_dwc3_attach(device_t dev)
 		device_printf(dev, "snps id: %x\n", DWC3_READ(sc, DWC3_GSNPSID));
 
 	/* Get the phys */
+	sc->node = ofw_bus_get_node(dev);
 	phy_get_by_ofw_name(dev, sc->node, "usb2-phy", &sc->usb2_phy);
 	phy_get_by_ofw_name(dev, sc->node, "usb3-phy", &sc->usb3_phy);
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202206281304.25SD4LNr050830>