Lines Matching +full:lpc3220 +full:- +full:gpio
1 // SPDX-License-Identifier: GPL-2.0-or-later
3 * GPIO driver for LPC32xx SoC
14 #include <linux/gpio/driver.h>
81 * GPIO names
170 return __raw_readl(group->reg_base + offset); in gpreg_read()
175 __raw_writel(val, group->reg_base + offset); in gpreg_write()
183 group->gpio_grp->dir_clr); in __set_gpio_dir_p012()
186 group->gpio_grp->dir_set); in __set_gpio_dir_p012()
195 gpreg_write(group, u, group->gpio_grp->dir_clr); in __set_gpio_dir_p3()
197 gpreg_write(group, u, group->gpio_grp->dir_set); in __set_gpio_dir_p3()
205 group->gpio_grp->outp_set); in __set_gpio_level_p012()
208 group->gpio_grp->outp_clr); in __set_gpio_level_p012()
217 gpreg_write(group, u, group->gpio_grp->outp_set); in __set_gpio_level_p3()
219 gpreg_write(group, u, group->gpio_grp->outp_clr); in __set_gpio_level_p3()
226 gpreg_write(group, GPO3_PIN_TO_BIT(pin), group->gpio_grp->outp_set); in __set_gpo_level_p3()
228 gpreg_write(group, GPO3_PIN_TO_BIT(pin), group->gpio_grp->outp_clr); in __set_gpo_level_p3()
234 return GPIO012_PIN_IN_SEL(gpreg_read(group, group->gpio_grp->inp_state), in __get_gpio_state_p012()
241 int state = gpreg_read(group, group->gpio_grp->inp_state); in __get_gpio_state_p3()
244 * P3 GPIO pin input mapping is not contiguous, GPIOP3-0..4 is mapped in __get_gpio_state_p3()
245 * to bits 10..14, while GPIOP3-5 is mapped to bit 24. in __get_gpio_state_p3()
253 return GPI3_PIN_IN_SEL(gpreg_read(group, group->gpio_grp->inp_state), pin); in __get_gpi_state_p3()
259 return GPO3_PIN_IN_SEL(gpreg_read(group, group->gpio_grp->outp_state), pin); in __get_gpo_state_p3()
263 * GPIO primitives.
376 if (pin < chip->ngpio) in lpc32xx_gpio_request()
379 return -EINVAL; in lpc32xx_gpio_request()
384 return -ENXIO; in lpc32xx_gpio_to_irq_p01()
389 return -ENXIO; in lpc32xx_gpio_to_irq_gpio_p3()
394 return -ENXIO; in lpc32xx_gpio_to_irq_gpi_p3()
495 u32 bank = gpiospec->args[0]; in lpc32xx_of_xlate()
498 return -EINVAL; in lpc32xx_of_xlate()
501 *flags = gpiospec->args[2]; in lpc32xx_of_xlate()
502 return gpiospec->args[1]; in lpc32xx_of_xlate()
515 lpc32xx_gpiochip[i].chip.parent = &pdev->dev; in lpc32xx_gpio_probe()
516 if (pdev->dev.of_node) { in lpc32xx_gpio_probe()
521 devm_gpiochip_add_data(&pdev->dev, &lpc32xx_gpiochip[i].chip, in lpc32xx_gpio_probe()
529 { .compatible = "nxp,lpc3220-gpio", },
536 .name = "lpc32xx-gpio",
546 MODULE_DESCRIPTION("GPIO driver for LPC32xx SoC");