Lines Matching full:pin

17 #define NRF_GPIO_INDEX(pin) (pin)  argument
18 #define NRF_GPIO_PORT(pin) (NRF_P0) argument
19 #define NRF_GPIO_MASK(pin) (1 << NRF_GPIO_INDEX(pin)) argument
38 rt_int16_t pin; member
45 static void nrf_pin_mode(struct rt_device *device, rt_base_t pin, rt_base_t mode) in nrf_pin_mode() argument
50 int index = NRF_GPIO_INDEX(pin); in nrf_pin_mode()
73 port = NRF_GPIO_PORT(pin); in nrf_pin_mode()
79 port->DIRSET = NRF_GPIO_MASK(pin); in nrf_pin_mode()
80 port->OUTCLR = NRF_GPIO_MASK(pin); in nrf_pin_mode()
85 port->DIRCLR = NRF_GPIO_MASK(pin); in nrf_pin_mode()
89 static void nrf_pin_write(struct rt_device *device, rt_base_t pin, rt_base_t value) in nrf_pin_write() argument
93 port = NRF_GPIO_PORT(pin); in nrf_pin_write()
96 port->OUTSET = NRF_GPIO_MASK(pin); in nrf_pin_write()
100 port->OUTCLR = NRF_GPIO_MASK(pin); in nrf_pin_write()
104 static int nrf_pin_read(struct rt_device *device, rt_base_t pin) in nrf_pin_read() argument
107 port = NRF_GPIO_PORT(pin); in nrf_pin_read()
109 return (port->DIR & NRF_GPIO_MASK(pin)) ? in nrf_pin_read()
110 (port->OUT >> NRF_GPIO_INDEX(pin)) & 1UL : in nrf_pin_read()
111 (port->IN >> NRF_GPIO_INDEX(pin)) & 1UL; in nrf_pin_read()
117 * Handles the gpio interrupt attached to a gpio pin.
146 gpio_port = NRF_GPIO_PORT(nrf_gpio_irqs[i].pin); in nrf_gpio_irq_handler()
147 pin_index = NRF_GPIO_INDEX(nrf_gpio_irqs[i].pin); in nrf_gpio_irq_handler()
160 * different than pin state). in nrf_gpio_irq_handler()
162 pin_state = (gpio_state >> nrf_gpio_irqs[i].pin) & 0x01; in nrf_gpio_irq_handler()
231 * Find out whether we have an GPIOTE pin event to use.
248 * Find the GPIOTE event which handles this pin.
250 static int nrf_gpio_find_pin(int pin) in nrf_gpio_find_pin() argument
257 if (nrf_gpio_irqs[i].func && nrf_gpio_irqs[i].pin == pin) in nrf_gpio_find_pin()
263 pin = pin << GPIOTE_CONFIG_PSEL_Pos; in nrf_gpio_find_pin()
268 (NRF_GPIOTE->CONFIG[i] & NRF_GPIOTE_PIN_MASK) == pin) in nrf_gpio_find_pin()
278 static rt_err_t nrf_pin_attach_irq(struct rt_device *device, rt_int32_t pin, in nrf_pin_attach_irq() argument
293 nrf_gpio_irqs[i].pin = pin; in nrf_pin_attach_irq()
326 conf |= pin << GPIOTE_CONFIG_PSEL_Pos; in nrf_pin_attach_irq()
337 static rt_err_t nrf_pin_detach_irq(struct rt_device *device, rt_int32_t pin) in nrf_pin_detach_irq() argument
343 i = nrf_gpio_find_pin(pin); in nrf_pin_detach_irq()
348 /* disable pin irq */ in nrf_pin_detach_irq()
349 rt_pin_irq_enable(pin, 0); in nrf_pin_detach_irq()
364 static rt_err_t nrf_pin_irq_enable(struct rt_device *device, rt_base_t pin, rt_uint32_t enabled) in nrf_pin_irq_enable() argument
372 i = nrf_gpio_find_pin(pin); in nrf_pin_irq_enable()
379 nrf_gpio = NRF_GPIO_PORT(pin); in nrf_pin_irq_enable()
380 pin_index = NRF_GPIO_INDEX(pin); in nrf_pin_irq_enable()
386 * Always set initial SENSE to opposite of current pin state to avoid in nrf_pin_irq_enable()
446 ret = rt_device_pin_register("pin", &nrf_pin_ops, RT_NULL); in rt_hw_pin_init()