Lines Matching refs:gpio
22 #define PINMUX_OFFSET(gpio) ((gpio) * 4) argument
23 #define PINCONF_OFFSET(gpio) ((gpio) * 4) argument
55 static void gpio_set_bit(uintptr_t base, unsigned int reg, int gpio, bool set) in gpio_set_bit() argument
57 unsigned int offset = IPROC_GPIO_REG(gpio, reg); in gpio_set_bit()
58 unsigned int shift = IPROC_GPIO_SHIFT(gpio); in gpio_set_bit()
70 static bool gpio_get_bit(uintptr_t base, unsigned int reg, int gpio) in gpio_get_bit() argument
72 unsigned int offset = IPROC_GPIO_REG(gpio, reg); in gpio_get_bit()
73 unsigned int shift = IPROC_GPIO_SHIFT(gpio); in gpio_get_bit()
78 static void mux_to_gpio(struct iproc_gpio *g, int gpio) in mux_to_gpio() argument
82 mmio_write_32(g->pinmux_base + PINMUX_OFFSET(gpio), in mux_to_gpio()
86 static void set_direction(int gpio, int direction) in set_direction() argument
91 assert(gpio < g->nr_gpios); in set_direction()
93 mux_to_gpio(g, gpio); in set_direction()
94 gpio_set_bit(g->base, IPROC_GPIO_OUT_EN_OFFSET, gpio, dir); in set_direction()
97 static int get_direction(int gpio) in get_direction() argument
102 assert(gpio < g->nr_gpios); in get_direction()
104 mux_to_gpio(g, gpio); in get_direction()
105 dir = gpio_get_bit(g->base, IPROC_GPIO_OUT_EN_OFFSET, gpio) ? in get_direction()
111 static int get_value(int gpio) in get_value() argument
116 assert(gpio < g->nr_gpios); in get_value()
118 mux_to_gpio(g, gpio); in get_value()
124 offset = gpio_get_bit(g->base, IPROC_GPIO_OUT_EN_OFFSET, gpio) ? in get_value()
127 return gpio_get_bit(g->base, offset, gpio); in get_value()
130 static void set_value(int gpio, int val) in set_value() argument
134 assert(gpio < g->nr_gpios); in set_value()
136 mux_to_gpio(g, gpio); in set_value()
139 gpio_set_bit(g->base, IPROC_GPIO_OUT_EN_OFFSET, gpio, true); in set_value()
140 gpio_set_bit(g->base, IPROC_GPIO_DATA_OUT_OFFSET, gpio, !!(val)); in set_value()
143 static int get_pull(int gpio) in get_pull() argument
148 assert(gpio < g->nr_gpios); in get_pull()
149 mux_to_gpio(g, gpio); in get_pull()
153 val = mmio_read_32(g->pinconf_base + PINCONF_OFFSET(gpio)); in get_pull()
164 if (!gpio_get_bit(g->base, IPROC_GPIO_RES_EN_OFFSET, gpio)) in get_pull()
167 return gpio_get_bit(g->base, IPROC_GPIO_PAD_RES_OFFSET, gpio) ? in get_pull()
171 static void set_pull(int gpio, int pull) in set_pull() argument
176 assert(gpio < g->nr_gpios); in set_pull()
177 mux_to_gpio(g, gpio); in set_pull()
181 val = mmio_read_32(g->pinconf_base + PINCONF_OFFSET(gpio)); in set_pull()
194 mmio_write_32(g->pinconf_base + PINCONF_OFFSET(gpio), val); in set_pull()
199 gpio_set_bit(g->base, IPROC_GPIO_RES_EN_OFFSET, gpio, false); in set_pull()
204 gpio_set_bit(g->base, IPROC_GPIO_RES_EN_OFFSET, gpio, true); in set_pull()
205 gpio_set_bit(g->base, IPROC_GPIO_PAD_RES_OFFSET, gpio, in set_pull()