Module Name:    src
Committed By:   jmcneill
Date:           Sat Jun 30 18:20:35 UTC 2018

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

Log Message:
Use syscon API


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/sys/arch/arm/rockchip/rk_gmac.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_gmac.c
diff -u src/sys/arch/arm/rockchip/rk_gmac.c:1.4 src/sys/arch/arm/rockchip/rk_gmac.c:1.5
--- src/sys/arch/arm/rockchip/rk_gmac.c:1.4	Sat Jun 30 16:28:14 2018
+++ src/sys/arch/arm/rockchip/rk_gmac.c	Sat Jun 30 18:20:35 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: rk_gmac.c,v 1.4 2018/06/30 16:28:14 jmcneill Exp $ */
+/* $NetBSD: rk_gmac.c,v 1.5 2018/06/30 18:20:35 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2018 Jared McNeill <[email protected]>
@@ -28,7 +28,7 @@
 
 #include <sys/cdefs.h>
 
-__KERNEL_RCSID(0, "$NetBSD: rk_gmac.c,v 1.4 2018/06/30 16:28:14 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rk_gmac.c,v 1.5 2018/06/30 18:20:35 jmcneill Exp $");
 
 #include <sys/param.h>
 #include <sys/bus.h>
@@ -47,6 +47,7 @@ __KERNEL_RCSID(0, "$NetBSD: rk_gmac.c,v 
 #include <dev/ic/dwc_gmac_reg.h>
 
 #include <dev/fdt/fdtvar.h>
+#include <dev/fdt/syscon.h>
 
 #define	RK3328_GRF_MAC_CON0	0x0900
 #define	 RK3328_GRF_MAC_CON0_RXDLY	__BITS(13,7)
@@ -73,7 +74,7 @@ static const char * compatible[] = {
 
 struct rk_gmac_softc {
 	struct dwc_gmac_softc	sc_base;
-	bus_space_handle_t	sc_grf_bsh;
+	struct syscon		*sc_syscon;
 };
 
 static int
@@ -119,23 +120,24 @@ rk3328_gmac_set_mode_rgmii(struct dwc_gm
 	struct rk_gmac_softc * const rk_sc = (struct rk_gmac_softc *)sc;
 	uint32_t write_mask, write_val;
 
+	syscon_lock(rk_sc->sc_syscon);
+
 	write_mask = (RK3328_GRF_MAC_CON1_MODE | RK3328_GRF_MAC_CON1_SEL) << 16;
 	write_val = __SHIFTIN(RK3328_GRF_MAC_CON1_SEL_RGMII, RK3328_GRF_MAC_CON1_SEL);
-	bus_space_write_4(sc->sc_bst, rk_sc->sc_grf_bsh, RK3328_GRF_MAC_CON1,
-	    write_mask | write_val);
+	syscon_write_4(rk_sc->sc_syscon, RK3328_GRF_MAC_CON1, write_mask | write_val);
 
 #if notyet
 	write_mask = (RK3328_GRF_MAC_CON0_TXDLY | RK3328_GRF_MAC_CON0_RXDLY) << 16;
 	write_val = __SHIFTIN(tx_delay, RK3328_GRF_MAC_CON0_TXDLY) |
 		    __SHIFTIN(rx_delay, RK3328_GRF_MAC_CON0_RXDLY);
-	bus_space_write_4(sc->sc_bst, rk_sc->sc_grf_bsh, RK3328_GRF_MAC_CON0,
-	    write_mask | write_val);
+	syscon_write_4(rk_sc->sc_syscon, RK3328_GRF_MAC_CON0, write_mask | write_val);
 
 	write_mask = (RK3328_GRF_MAC_CON1_RXDLY_EN | RK3328_GRF_MAC_CON1_TXDLY_EN) << 16;
 	write_val = RK3328_GRF_MAC_CON1_RXDLY_EN | RK3328_GRF_MAC_CON1_TXDLY_EN;
-	bus_space_write_4(sc->sc_bst, rk_sc->sc_grf_bsh, RK3328_GRF_MAC_CON1,
-	    write_mask | write_val);
+	syscon_write_4(rk_sc->sc_syscon, RK3328_GRF_MAC_CON1, write_mask | write_val);
 #endif
+
+	syscon_unlock(rk_sc->sc_syscon);
 }
 
 static void
@@ -156,9 +158,11 @@ rk3328_gmac_set_speed_rgmii(struct dwc_g
 		break;
 	}
 
-	bus_space_write_4(sc->sc_bst, rk_sc->sc_grf_bsh, RK3328_GRF_MAC_CON1,
+	syscon_lock(rk_sc->sc_syscon);
+	syscon_write_4(rk_sc->sc_syscon, RK3328_GRF_MAC_CON1,
 	    (RK3328_GRF_MAC_CON1_CLKSEL << 16) |
 	    __SHIFTIN(RK3328_GRF_MAC_CON1_CLKSEL_125M, RK3328_GRF_MAC_CON1_CLKSEL));
+	syscon_unlock(rk_sc->sc_syscon);
 }
 
 static int
@@ -240,8 +244,8 @@ rk_gmac_attach(device_t parent, device_t
 	const int phandle = faa->faa_phandle;
 	const char *phy_mode;
 	char intrstr[128];
-	bus_addr_t addr, grf_addr;
-	bus_size_t size, grf_size;
+	bus_addr_t addr;
+	bus_size_t size;
 	u_int tx_delay, rx_delay;
 
 	if (fdtbus_get_reg(phandle, 0, &addr, &size) != 0) {
@@ -249,17 +253,9 @@ rk_gmac_attach(device_t parent, device_t
 		return;
 	}
 
-	const int grf_phandle = fdtbus_get_phandle(phandle, "rockchip,grf");
-	if (grf_phandle == -1) {
-		aprint_error(": couldn't get grf phandle\n");
-		return;
-	}
-	if (fdtbus_get_reg(grf_phandle, 0, &grf_addr, &grf_size) != 0) {
-		aprint_error(": couldn't get grf registers\n");
-		return;
-	}
-	if (bus_space_map(faa->faa_bst, grf_addr, grf_size, 0, &rk_sc->sc_grf_bsh) != 0) {
-		aprint_error(": couldn't map grf registers\n");
+	rk_sc->sc_syscon = fdtbus_syscon_acquire(phandle, "rockchip,grf");
+	if (rk_sc->sc_syscon == NULL) {
+		aprint_error(": couldn't get grf syscon\n");
 		return;
 	}
 

Reply via email to