Lines Matching +full:reg +full:- +full:addr

1 /*-
61 { "allwinner,sun7i-a20", 1 },
62 { "allwinner,sun6i-a31", 1 },
63 { "allwinner,sun6i-a31s", 1 },
68 aw_ccu_check_addr(struct aw_ccu_softc *sc, bus_addr_t addr, in aw_ccu_check_addr() argument
71 if (addr >= CCU_BASE && addr < (CCU_BASE + CCU_SIZE)) { in aw_ccu_check_addr()
72 *poff = addr - CCU_BASE; in aw_ccu_check_addr()
73 *pbsh = sc->bsh; in aw_ccu_check_addr()
80 aw_ccu_write_4(device_t dev, bus_addr_t addr, uint32_t val) in aw_ccu_write_4() argument
84 bus_size_t reg; in aw_ccu_write_4() local
88 if (aw_ccu_check_addr(sc, addr, &bsh, &reg) != 0) in aw_ccu_write_4()
91 mtx_assert(&sc->mtx, MA_OWNED); in aw_ccu_write_4()
92 bus_space_write_4(sc->bst, bsh, reg, val); in aw_ccu_write_4()
98 aw_ccu_read_4(device_t dev, bus_addr_t addr, uint32_t *val) in aw_ccu_read_4() argument
102 bus_size_t reg; in aw_ccu_read_4() local
106 if (aw_ccu_check_addr(sc, addr, &bsh, &reg) != 0) in aw_ccu_read_4()
109 mtx_assert(&sc->mtx, MA_OWNED); in aw_ccu_read_4()
110 *val = bus_space_read_4(sc->bst, bsh, reg); in aw_ccu_read_4()
116 aw_ccu_modify_4(device_t dev, bus_addr_t addr, uint32_t clr, uint32_t set) in aw_ccu_modify_4() argument
120 bus_size_t reg; in aw_ccu_modify_4() local
125 if (aw_ccu_check_addr(sc, addr, &bsh, &reg) != 0) in aw_ccu_modify_4()
128 mtx_assert(&sc->mtx, MA_OWNED); in aw_ccu_modify_4()
129 val = bus_space_read_4(sc->bst, bsh, reg); in aw_ccu_modify_4()
132 bus_space_write_4(sc->bst, bsh, reg, val); in aw_ccu_modify_4()
143 mtx_lock(&sc->mtx); in aw_ccu_device_lock()
152 mtx_unlock(&sc->mtx); in aw_ccu_device_unlock()
162 for (compat = compat_data; compat->ocd_str != NULL; compat++) in aw_ccu_search_compatible()
163 if (ofw_bus_node_is_compatible(root, compat->ocd_str)) in aw_ccu_search_compatible()
179 if (aw_ccu_search_compatible()->ocd_data == 0) in aw_ccu_probe()
199 sc->flags = aw_ccu_search_compatible()->ocd_data; in aw_ccu_attach()
202 * Map registers. The DT doesn't have a "reg" property in aw_ccu_attach()
203 * for the /clocks node and child nodes have conflicting "reg" in aw_ccu_attach()
206 sc->bst = bus_get_bus_tag(dev); in aw_ccu_attach()
207 error = bus_space_map(sc->bst, CCU_BASE, CCU_SIZE, 0, in aw_ccu_attach()
208 &sc->bsh); in aw_ccu_attach()
214 mtx_init(&sc->mtx, device_get_nameunit(dev), NULL, MTX_DEF); in aw_ccu_attach()
218 cdev = simplebus_add_device(dev, child, 0, NULL, -1, NULL); in aw_ccu_attach()