Module Name:    src
Committed By:   jmcneill
Date:           Sat Jun 30 18:07:32 UTC 2018

Modified Files:
        src/sys/arch/arm/rockchip: rk_usb.c

Log Message:
Use syscon API


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/sys/arch/arm/rockchip/rk_usb.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/arm/rockchip/rk_usb.c
diff -u src/sys/arch/arm/rockchip/rk_usb.c:1.2 src/sys/arch/arm/rockchip/rk_usb.c:1.3
--- src/sys/arch/arm/rockchip/rk_usb.c:1.2	Wed Jun 20 20:12:51 2018
+++ src/sys/arch/arm/rockchip/rk_usb.c	Sat Jun 30 18:07:32 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: rk_usb.c,v 1.2 2018/06/20 20:12:51 jmcneill Exp $ */
+/* $NetBSD: rk_usb.c,v 1.3 2018/06/30 18:07:32 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2018 Jared McNeill <jmcne...@invisible.ca>
@@ -28,7 +28,7 @@
 
 #include <sys/cdefs.h>
 
-__KERNEL_RCSID(0, "$NetBSD: rk_usb.c,v 1.2 2018/06/20 20:12:51 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rk_usb.c,v 1.3 2018/06/30 18:07:32 jmcneill Exp $");
 
 #include <sys/param.h>
 #include <sys/bus.h>
@@ -41,13 +41,14 @@ __KERNEL_RCSID(0, "$NetBSD: rk_usb.c,v 1
 #include <dev/clk/clk_backend.h>
 
 #include <dev/fdt/fdtvar.h>
+#include <dev/fdt/syscon.h>
 
 static int rk_usb_match(device_t, cfdata_t, void *);
 static void rk_usb_attach(device_t, device_t, void *);
 
-#define	CON0_REG	0x00
-#define	CON1_REG	0x04
-#define	CON2_REG	0x08
+#define	CON0_REG	0x100
+#define	CON1_REG	0x104
+#define	CON2_REG	0x108
 #define	 USBPHY_COMMONONN	__BIT(4)
 
 enum rk_usb_type {
@@ -61,24 +62,17 @@ static const struct of_compat_data compa
 
 struct rk_usb_clk {
 	struct clk		base;
-	bus_size_t		reg;
 };
 
 struct rk_usb_softc {
 	device_t		sc_dev;
-	bus_space_tag_t		sc_bst;
-	bus_space_handle_t	sc_bsh;
+	struct syscon		*sc_syscon;
 	enum rk_usb_type	sc_type;
 
 	struct clk_domain	sc_clkdom;
 	struct rk_usb_clk	sc_usbclk;
 };
 
-#define USB_READ(sc, reg)			\
-	bus_space_read_4((sc)->sc_bst, (sc)->sc_bsh, (reg))
-#define USB_WRITE(sc, reg, val)			\
-	bus_space_write_4((sc)->sc_bst, (sc)->sc_bsh, (reg), (val))
-
 CFATTACH_DECL_NEW(rk_usb, sizeof(struct rk_usb_softc),
 	rk_usb_match, rk_usb_attach, NULL, NULL);
 
@@ -111,7 +105,10 @@ rk_usb_clk_enable(void *priv, struct clk
 
 	const uint32_t write_mask = USBPHY_COMMONONN << 16;
 	const uint32_t write_val = 0;
-	USB_WRITE(sc, CON2_REG, write_mask | write_val);
+
+	syscon_lock(sc->sc_syscon);
+	syscon_write_4(sc->sc_syscon, CON2_REG, write_mask | write_val);
+	syscon_unlock(sc->sc_syscon);
 
 	return 0;
 }
@@ -123,7 +120,10 @@ rk_usb_clk_disable(void *priv, struct cl
 
 	const uint32_t write_mask = USBPHY_COMMONONN << 16;
 	const uint32_t write_val = USBPHY_COMMONONN;
-	USB_WRITE(sc, CON2_REG, write_mask | write_val);
+
+	syscon_lock(sc->sc_syscon);
+	syscon_write_4(sc->sc_syscon, CON2_REG, write_mask | write_val);
+	syscon_unlock(sc->sc_syscon);
 
 	return 0;
 }
@@ -165,23 +165,13 @@ rk_usb_attach(device_t parent, device_t 
 	struct rk_usb_softc * const sc = device_private(self);
 	struct fdt_attach_args * const faa = aux;
 	const int phandle = faa->faa_phandle;
-	bus_addr_t grf_addr, phy_addr, phy_size;
 	int child;
 
 	sc->sc_dev = self;
-	sc->sc_bst = faa->faa_bst;
 	sc->sc_type = of_search_compatible(phandle, compat_data)->data;
-
-	if (fdtbus_get_reg(OF_parent(phandle), 0, &grf_addr, NULL) != 0) {
-		aprint_error(": couldn't get grf registers\n");
-		return;
-	}
-	if (fdtbus_get_reg(phandle, 0, &phy_addr, &phy_size) != 0) {
-		aprint_error(": couldn't get phy registers\n");
-		return;
-	}
-	if (bus_space_map(sc->sc_bst, grf_addr + phy_addr, phy_size, 0, &sc->sc_bsh) != 0) {
-		aprint_error(": couldn't map phy registers\n");
+	sc->sc_syscon = fdtbus_syscon_lookup(OF_parent(phandle));
+	if (sc->sc_syscon == NULL) {
+		aprint_error(": couldn't get grf syscon\n");
 		return;
 	}
 
@@ -252,7 +242,10 @@ rk_usbphy_otg_enable(device_t dev, void 
 
 	const uint32_t write_mask = 0x1ffU << 16;
 	const uint32_t write_val = enable ? 0 : 0x1d1;
-	USB_WRITE(usb_sc, CON0_REG, write_mask | write_val);
+
+	syscon_lock(usb_sc->sc_syscon);
+	syscon_write_4(usb_sc->sc_syscon, CON0_REG, write_mask | write_val);
+	syscon_unlock(usb_sc->sc_syscon);
 
 	return 0;
 }
@@ -264,7 +257,10 @@ rk_usbphy_host_enable(device_t dev, void
 
 	const uint32_t write_mask = 0x1ffU << 16;
 	const uint32_t write_val = enable ? 0 : 0x1d1;
-	USB_WRITE(usb_sc, CON1_REG, write_mask | write_val);
+
+	syscon_lock(usb_sc->sc_syscon);
+	syscon_write_4(usb_sc->sc_syscon, CON1_REG, write_mask | write_val);
+	syscon_unlock(usb_sc->sc_syscon);
 
 	return 0;
 }

Reply via email to