Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/arch/arm/rockchip Use syscon API.



details:   https://anonhg.NetBSD.org/src/rev/4484371f37c4
branches:  trunk
changeset: 833549:4484371f37c4
user:      jmcneill <jmcneill%NetBSD.org@localhost>
date:      Sat Jun 30 17:54:07 2018 +0000

description:
Use syscon API.

diffstat:

 sys/arch/arm/rockchip/rk_cru.c     |  20 +++++---------------
 sys/arch/arm/rockchip/rk_cru.h     |  12 ++++--------
 sys/arch/arm/rockchip/rk_cru_mux.c |  26 +++++++++++++++++---------
 sys/arch/arm/rockchip/rk_cru_pll.c |   9 ++++++---
 4 files changed, 32 insertions(+), 35 deletions(-)

diffs (171 lines):

diff -r a58623f148e2 -r 4484371f37c4 sys/arch/arm/rockchip/rk_cru.c
--- a/sys/arch/arm/rockchip/rk_cru.c    Sat Jun 30 17:30:37 2018 +0000
+++ b/sys/arch/arm/rockchip/rk_cru.c    Sat Jun 30 17:54:07 2018 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: rk_cru.c,v 1.3 2018/06/26 17:44:04 jmcneill Exp $ */
+/* $NetBSD: rk_cru.c,v 1.4 2018/06/30 17:54:07 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2018 Jared McNeill <jmcneill%invisible.ca@localhost>
@@ -30,7 +30,7 @@
 #include "opt_fdt_arm.h"
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: rk_cru.c,v 1.3 2018/06/26 17:44:04 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rk_cru.c,v 1.4 2018/06/30 17:54:07 jmcneill Exp $");
 
 #include <sys/param.h>
 #include <sys/bus.h>
@@ -300,19 +300,9 @@
        int i;
 
        if (of_hasprop(sc->sc_phandle, "rockchip,grf")) {
-               const int grf_phandle = fdtbus_get_phandle(sc->sc_phandle, "rockchip,grf");
-               if (grf_phandle == -1) {
-                       aprint_error(": couldn't get grf phandle\n");
-                       return ENXIO;
-               }
-
-               if (fdtbus_get_reg(grf_phandle, 0, &addr, &size) != 0) {
-                       aprint_error(": couldn't get grf registers\n");
-                       return ENXIO;
-               }
-
-               if (bus_space_map(sc->sc_bst, addr, size, 0, &sc->sc_bsh_grf) != 0) {
-                       aprint_error(": couldn't map registers\n");
+               sc->sc_grf = fdtbus_syscon_acquire(sc->sc_phandle, "rockchip,grf");
+               if (sc->sc_grf == NULL) {
+                       aprint_error(": couldn't get grf syscon\n");
                        return ENXIO;
                }
        }
diff -r a58623f148e2 -r 4484371f37c4 sys/arch/arm/rockchip/rk_cru.h
--- a/sys/arch/arm/rockchip/rk_cru.h    Sat Jun 30 17:30:37 2018 +0000
+++ b/sys/arch/arm/rockchip/rk_cru.h    Sat Jun 30 17:54:07 2018 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: rk_cru.h,v 1.1 2018/06/16 00:19:04 jmcneill Exp $ */
+/* $NetBSD: rk_cru.h,v 1.2 2018/06/30 17:54:07 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2018 Jared McNeill <jmcneill%invisible.ca@localhost>
@@ -30,6 +30,7 @@
 #define _ARM_RK_CRU_H
 
 #include <dev/clk/clk_backend.h>
+#include <dev/fdt/syscon.h>
 
 struct rk_cru_softc;
 struct rk_cru_clk;
@@ -293,7 +294,7 @@
        int                     sc_phandle;
        bus_space_tag_t         sc_bst;
        bus_space_handle_t      sc_bsh;
-       bus_space_handle_t      sc_bsh_grf;
+       struct syscon           *sc_grf;
 
        struct clk_domain       sc_clkdom;
 
@@ -311,11 +312,6 @@
 #define CRU_WRITE(sc, reg, val)        \
        bus_space_write_4((sc)->sc_bst, (sc)->sc_bsh, (reg), (val))
 
-#define        GRF_READ(sc, reg)       \
-       bus_space_read_4((sc)->sc_bst, (sc)->sc_bsh_grf, (reg))
-#define GRF_WRITE(sc, reg, val)        \
-       bus_space_write_4((sc)->sc_bst, (sc)->sc_bsh_grf, (reg), (val))
-
-#define        HAS_GRF(sc)     ((sc)->sc_bsh_grf != 0)
+#define        HAS_GRF(sc)     ((sc)->sc_grf != NULL)
 
 #endif /* _ARM_RK_CRU_H */
diff -r a58623f148e2 -r 4484371f37c4 sys/arch/arm/rockchip/rk_cru_mux.c
--- a/sys/arch/arm/rockchip/rk_cru_mux.c        Sat Jun 30 17:30:37 2018 +0000
+++ b/sys/arch/arm/rockchip/rk_cru_mux.c        Sat Jun 30 17:54:07 2018 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: rk_cru_mux.c,v 1.1 2018/06/16 00:19:04 jmcneill Exp $ */
+/* $NetBSD: rk_cru_mux.c,v 1.2 2018/06/30 17:54:07 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2018 Jared McNeill <jmcneill%invisible.ca@localhost>
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: rk_cru_mux.c,v 1.1 2018/06/16 00:19:04 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rk_cru_mux.c,v 1.2 2018/06/30 17:54:07 jmcneill Exp $");
 
 #include <sys/param.h>
 #include <sys/bus.h>
@@ -42,13 +42,19 @@
 {
        struct rk_cru_mux *mux = &clk->u.mux;
        const bool mux_grf = (mux->flags & RK_MUX_GRF) != 0;
+       uint32_t val;
 
        KASSERT(clk->type == RK_CRU_MUX);
 
-       if (mux_grf && !HAS_GRF(sc))
-               return NULL;
-
-       const uint32_t val = mux_grf ? GRF_READ(sc, mux->reg) : CRU_READ(sc, mux->reg);
+       if (mux_grf) {
+               if (!HAS_GRF(sc))
+                       return NULL;
+               syscon_lock(sc->sc_grf);
+               val = syscon_read_4(sc->sc_grf, mux->reg);
+               syscon_unlock(sc->sc_grf);
+       } else {
+               val = CRU_READ(sc, mux->reg);
+       }
        const u_int index = __SHIFTOUT(val, mux->mask);
 
        return mux->parents[index];
@@ -71,9 +77,11 @@
                        const uint32_t write_mask = mux->mask << 16;
                        const uint32_t write_val = __SHIFTIN(index, mux->mask);
 
-                       if (mux_grf)
-                               GRF_WRITE(sc, mux->reg, write_mask | write_val);
-                       else
+                       if (mux_grf) {
+                               syscon_lock(sc->sc_grf);
+                               syscon_write_4(sc->sc_grf, mux->reg, write_mask | write_val);
+                               syscon_unlock(sc->sc_grf);
+                       } else
                                CRU_WRITE(sc, mux->reg, write_mask | write_val);
 
                        return 0;
diff -r a58623f148e2 -r 4484371f37c4 sys/arch/arm/rockchip/rk_cru_pll.c
--- a/sys/arch/arm/rockchip/rk_cru_pll.c        Sat Jun 30 17:30:37 2018 +0000
+++ b/sys/arch/arm/rockchip/rk_cru_pll.c        Sat Jun 30 17:54:07 2018 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: rk_cru_pll.c,v 1.2 2018/06/16 13:24:04 jmcneill Exp $ */
+/* $NetBSD: rk_cru_pll.c,v 1.3 2018/06/30 17:54:07 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2018 Jared McNeill <jmcneill%invisible.ca@localhost>
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: rk_cru_pll.c,v 1.2 2018/06/16 13:24:04 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rk_cru_pll.c,v 1.3 2018/06/30 17:54:07 jmcneill Exp $");
 
 #include <sys/param.h>
 #include <sys/bus.h>
@@ -146,11 +146,14 @@
        const uint32_t write_val = pll->mode_mask;
        CRU_WRITE(sc, pll->mode_reg, write_mask | write_val);
 
+       syscon_lock(sc->sc_grf);
        for (retry = 1000; retry > 0; retry--) {
-               if (GRF_READ(sc, GRF_SOC_STATUS0) & pll->lock_mask)
+               if (syscon_read_4(sc->sc_grf, GRF_SOC_STATUS0) & pll->lock_mask)
                        break;
                delay(1);
        }
+       syscon_unlock(sc->sc_grf);
+
        if (retry == 0)
                device_printf(sc->sc_dev, "WARNING: %s failed to lock\n",
                    clk->base.name);



Home | Main Index | Thread Index | Old Index