Lines Matching +full:pin +full:- +full:val

1 /*-
54 #define LBGGPIOCM_READ(sc, reg) p2sb_port_read_4(sc->p2sb, sc->port, reg)
55 #define LBGGPIOCM_WRITE(sc, reg, val) \ argument
56 p2sb_port_write_4(sc->p2sb, sc->port, reg, val)
57 #define LBGGPIOCM_LOCK(sc) p2sb_lock(sc->p2sb)
58 #define LBGGPIOCM_UNLOCK(sc) p2sb_unlock(sc->p2sb)
107 for (i = 0; i < sc->community->ngroups; ++i) in lbggpiocm_get_group()
108 if (sc->community->groups[i].dev == child) in lbggpiocm_get_group()
109 return (&sc->community->groups[i]); in lbggpiocm_get_group()
115 lbggpiocm_getpad(struct lbggpiocm_softc *sc, uint32_t pin) in lbggpiocm_getpad() argument
118 if (pin >= sc->community->npins) in lbggpiocm_getpad()
121 return (sc->community->pad_off + 2 * 4 * pin); in lbggpiocm_getpad()
132 return (group->npins); in lbggpiocm_get_group_npins()
133 return (-1); in lbggpiocm_get_group_npins()
144 return (group->grpname); in lbggpiocm_get_group_name()
149 lbggpiocm_pin2cpin(struct lbggpiocm_softc *sc, device_t child, uint32_t pin) in lbggpiocm_pin2cpin() argument
155 return (pin + group->pins_off); in lbggpiocm_pin2cpin()
156 return (-1); in lbggpiocm_pin2cpin()
160 lbggpiocm_pin_setflags(device_t dev, device_t child, uint32_t pin, uint32_t flags) in lbggpiocm_pin_setflags() argument
173 rpin = lbggpiocm_pin2cpin(sc, child, pin); in lbggpiocm_pin_setflags()
197 lbggpiocm_pin_get(device_t dev, device_t child, uint32_t pin, uint32_t *value) in lbggpiocm_pin_get() argument
200 uint32_t padreg, val; in lbggpiocm_pin_get() local
206 rpin = lbggpiocm_pin2cpin(sc, child, pin); in lbggpiocm_pin_get()
213 val = LBGGPIOCM_READ(sc, padreg); in lbggpiocm_pin_get()
216 if (!(val & PADCFG0_GPIOTXDIS)) in lbggpiocm_pin_get()
217 *value = !!(val & PADCFG0_GPIOTXSTATE); in lbggpiocm_pin_get()
219 *value = !!(val & PADCFG0_GPIORXSTATE); in lbggpiocm_pin_get()
225 lbggpiocm_pin_set(device_t dev, device_t child, uint32_t pin, uint32_t value) in lbggpiocm_pin_set() argument
231 rpin = lbggpiocm_pin2cpin(sc, child, pin); in lbggpiocm_pin_set()
252 lbggpiocm_pin_toggle(device_t dev, device_t child, uint32_t pin) in lbggpiocm_pin_toggle() argument
258 rpin = lbggpiocm_pin2cpin(sc, child, pin); in lbggpiocm_pin_toggle()
280 sc->p2sb = device_get_parent(dev); in lbggpiocm_probe()
283 sc->port = p2sb_get_port(sc->p2sb, unit); in lbggpiocm_probe()
284 sc->community = &lbg_communities[unit]; in lbggpiocm_probe()
285 if (sc->port < 0) in lbggpiocm_probe()
288 device_set_desc(dev, sc->community->name); in lbggpiocm_probe()
301 if (sc->community->npins == 0) in lbggpiocm_attach()
305 sc->community->pad_off = LBGGPIOCM_READ(sc, PADBAR); in lbggpiocm_attach()
308 npins = sc->community->npins; in lbggpiocm_attach()
309 for (i = 0; i < nitems(sc->community->groups) && npins > 0; ++i) { in lbggpiocm_attach()
310 group = &sc->community->groups[i]; in lbggpiocm_attach()
312 group->groupid = i; in lbggpiocm_attach()
313 group->grpname = sc->community->grpnames[i]; in lbggpiocm_attach()
314 group->pins_off = i * MAX_PAD_PER_GROUP; in lbggpiocm_attach()
315 group->npins = npins < MAX_PAD_PER_GROUP ? npins : in lbggpiocm_attach()
317 npins -= group->npins; in lbggpiocm_attach()
318 group->dev = device_add_child(dev, "gpio", -1); in lbggpiocm_attach()
320 sc->community->ngroups = i; in lbggpiocm_attach()