LCOV - code coverage report
Current view: top level - zephyr/drivers/interrupt_controller - gpio_intc_stm32.h Coverage Total Hit
Test: new.info Lines: 80.0 % 10 8
Test Date: 2025-09-05 22:20:39

            Line data    Source code
       1            0 : /*
       2              :  * Copyright (c) 2016 Open-RnD Sp. z o.o.
       3              :  * Copyright (c) 2024 STMicroelectronics
       4              :  *
       5              :  * SPDX-License-Identifier: Apache-2.0
       6              :  */
       7              : 
       8              : /**
       9              :  * @brief GPIO interrupt controller API for STM32 MCUs
      10              :  *
      11              :  * This API is used to interact with the GPIO interrupt controller
      12              :  * of STM32 microcontrollers.
      13              :  */
      14              : 
      15              : #ifndef ZEPHYR_DRIVERS_INTERRUPT_CONTROLLER_GPIO_INTC_STM32_H_
      16              : #define ZEPHYR_DRIVERS_INTERRUPT_CONTROLLER_GPIO_INTC_STM32_H_
      17              : 
      18              : #include <zephyr/types.h>
      19              : #include <zephyr/drivers/gpio.h>
      20              : 
      21              : /**
      22              :  * @brief Opaque type representing a GPIO interrupt line
      23              :  */
      24            1 : typedef uint32_t stm32_gpio_irq_line_t;
      25              : 
      26              : /**
      27              :  * @brief Get the GPIO interrupt line value corresponding
      28              :  *        to specified @p pin of GPIO port @p port
      29              :  */
      30            1 : stm32_gpio_irq_line_t stm32_gpio_intc_get_pin_irq_line(uint32_t port, gpio_pin_t pin);
      31              : 
      32              : /**
      33              :  * @brief Enable GPIO interrupts for specified line
      34              :  *
      35              :  * @param line  GPIO interrupt line
      36              :  */
      37            1 : void stm32_gpio_intc_enable_line(stm32_gpio_irq_line_t line);
      38              : 
      39              : /**
      40              :  * @brief Disable GPIO interrupts for specified line
      41              :  *
      42              :  * @param line  GPIO interrupt line
      43              :  */
      44            1 : void stm32_gpio_intc_disable_line(stm32_gpio_irq_line_t line);
      45              : 
      46              : /**
      47              :  * @brief GPIO interrupt trigger flags
      48              :  */
      49            0 : enum stm32_gpio_irq_trigger {
      50              :         /* No trigger */
      51              :         STM32_GPIO_IRQ_TRIG_NONE  = 0x0,
      52              :         /* Trigger on rising edge */
      53              :         STM32_GPIO_IRQ_TRIG_RISING  = 0x1,
      54              :         /* Trigger on falling edge */
      55              :         STM32_GPIO_IRQ_TRIG_FALLING = 0x2,
      56              :         /* Trigger on both rising and falling edge */
      57              :         STM32_GPIO_IRQ_TRIG_BOTH = 0x3,
      58              :         /* Trigger on high level */
      59              :         STM32_GPIO_IRQ_TRIG_HIGH_LEVEL = 0x4,
      60              :         /* Trigger on low level */
      61              :         STM32_GPIO_IRQ_TRIG_LOW_LEVEL = 0x5
      62              : };
      63              : 
      64              : /**
      65              :  * @brief Select trigger for interrupt on specified GPIO line
      66              :  *
      67              :  * @param line  GPIO interrupt line
      68              :  * @param trg   Interrupt trigger (see @ref stm32_gpio_irq_trigger)
      69              :  */
      70            1 : void stm32_gpio_intc_select_line_trigger(stm32_gpio_irq_line_t line, uint32_t trg);
      71              : 
      72              : /**
      73              :  * @brief GPIO interrupt callback function signature
      74              :  *
      75              :  * @param pin   GPIO pin on which interrupt occurred
      76              :  * @param user  @p data provided to @ref stm32_gpio_intc_set_irq_callback
      77              :  *
      78              :  * @note This callback is invoked in ISR context.
      79              :  */
      80            1 : typedef void (*stm32_gpio_irq_cb_t)(gpio_port_pins_t pin, void *user);
      81              : 
      82              : /**
      83              :  * @brief Set callback invoked when an interrupt occurs on specified GPIO line
      84              :  *
      85              :  * @param line  GPIO interrupt line
      86              :  * @param cb    Interrupt callback function
      87              :  * @param user  Custom user data for usage by the callback
      88              :  * @returns 0 on success, -EBUSY if a callback is already set for @p line
      89              :  */
      90            1 : int stm32_gpio_intc_set_irq_callback(stm32_gpio_irq_line_t line,
      91              :                                         stm32_gpio_irq_cb_t cb, void *user);
      92              : 
      93              : /**
      94              :  * @brief Removes the interrupt callback of specified EXTI line
      95              :  *
      96              :  * @param line  EXTI interrupt line
      97              :  */
      98            1 : void stm32_gpio_intc_remove_irq_callback(stm32_gpio_irq_line_t line);
      99              : 
     100              : /** Hardware-specific API extensions */
     101              : 
     102              : #if defined(CONFIG_EXTI_STM32)  /* EXTI-specific extensions */
     103              : /**
     104              :  * @brief Set which GPIO port triggers events on specified EXTI line.
     105              :  *
     106              :  * @param line  EXTI line number (= pin number)
     107              :  * @param port  GPIO port number (STM32_PORTA, STM32_PORTB, ...)
     108              :  */
     109              : void stm32_exti_set_line_src_port(gpio_pin_t line, uint32_t port);
     110              : 
     111              : /**
     112              :  * @brief Get port which is triggering events on specified EXTI line.
     113              :  *
     114              :  * @param line  EXTI line number (= pin number)
     115              :  * @returns GPIO port number (STM32_PORTA, STM32_PORTB, ...)
     116              :  */
     117              : uint32_t stm32_exti_get_line_src_port(gpio_pin_t line);
     118              : #endif /* CONFIG_EXTI_STM32 */
     119              : 
     120              : #endif /* ZEPHYR_DRIVERS_INTERRUPT_CONTROLLER_GPIO_INTC_STM32_H_ */
        

Generated by: LCOV version 2.0-1