Lines Matching refs:gpio
108 static int xlp_gpio_get_reg(void __iomem *addr, unsigned gpio) in xlp_gpio_get_reg() argument
112 pos = gpio % XLP_GPIO_REGSZ; in xlp_gpio_get_reg()
113 regset = (gpio / XLP_GPIO_REGSZ) * 4; in xlp_gpio_get_reg()
117 static void xlp_gpio_set_reg(void __iomem *addr, unsigned gpio, int state) in xlp_gpio_set_reg() argument
121 pos = gpio % XLP_GPIO_REGSZ; in xlp_gpio_set_reg()
122 regset = (gpio / XLP_GPIO_REGSZ) * 4; in xlp_gpio_set_reg()
216 int gpio, regoff; in xlp_gpio_generic_handler() local
223 for_each_set_bit(gpio, priv->gpio_enabled_mask, XLP_MAX_NR_GPIO) { in xlp_gpio_generic_handler()
224 if (regoff != gpio / XLP_GPIO_REGSZ) { in xlp_gpio_generic_handler()
225 regoff = gpio / XLP_GPIO_REGSZ; in xlp_gpio_generic_handler()
229 if (gpio_stat & BIT(gpio % XLP_GPIO_REGSZ)) in xlp_gpio_generic_handler()
231 priv->chip.irqdomain, gpio)); in xlp_gpio_generic_handler()
236 static int xlp_gpio_dir_output(struct gpio_chip *gc, unsigned gpio, int state) in xlp_gpio_dir_output() argument
240 BUG_ON(gpio >= gc->ngpio); in xlp_gpio_dir_output()
241 xlp_gpio_set_reg(priv->gpio_out_en, gpio, 0x1); in xlp_gpio_dir_output()
246 static int xlp_gpio_dir_input(struct gpio_chip *gc, unsigned gpio) in xlp_gpio_dir_input() argument
250 BUG_ON(gpio >= gc->ngpio); in xlp_gpio_dir_input()
251 xlp_gpio_set_reg(priv->gpio_out_en, gpio, 0x0); in xlp_gpio_dir_input()
256 static int xlp_gpio_get(struct gpio_chip *gc, unsigned gpio) in xlp_gpio_get() argument
260 BUG_ON(gpio >= gc->ngpio); in xlp_gpio_get()
261 return xlp_gpio_get_reg(priv->gpio_paddrv, gpio); in xlp_gpio_get()
264 static void xlp_gpio_set(struct gpio_chip *gc, unsigned gpio, int state) in xlp_gpio_set() argument
268 BUG_ON(gpio >= gc->ngpio); in xlp_gpio_set()
269 xlp_gpio_set_reg(priv->gpio_paddrv, gpio, state); in xlp_gpio_set()