123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 |
- #ifndef ZEPHYR_INCLUDE_IRQ_NEXTLEVEL_H_
- #define ZEPHYR_INCLUDE_IRQ_NEXTLEVEL_H_
- #ifdef __cplusplus
- extern "C" {
- #endif
- typedef void (*irq_next_level_func_t)(const struct device *dev,
- unsigned int irq);
- typedef unsigned int (*irq_next_level_get_state_t)(const struct device *dev);
- typedef void (*irq_next_level_priority_t)(const struct device *dev,
- unsigned int irq, unsigned int prio,
- uint32_t flags);
- typedef int (*irq_next_level_get_line_state_t)(const struct device *dev,
- unsigned int irq);
- struct irq_next_level_api {
- irq_next_level_func_t intr_enable;
- irq_next_level_func_t intr_disable;
- irq_next_level_get_state_t intr_get_state;
- irq_next_level_priority_t intr_set_priority;
- irq_next_level_get_line_state_t intr_get_line_state;
- };
- static inline void irq_enable_next_level(const struct device *dev,
- uint32_t irq)
- {
- const struct irq_next_level_api *api =
- (const struct irq_next_level_api *)dev->api;
- api->intr_enable(dev, irq);
- }
- static inline void irq_disable_next_level(const struct device *dev,
- uint32_t irq)
- {
- const struct irq_next_level_api *api =
- (const struct irq_next_level_api *)dev->api;
- api->intr_disable(dev, irq);
- }
- static inline unsigned int irq_is_enabled_next_level(const struct device *dev)
- {
- const struct irq_next_level_api *api =
- (const struct irq_next_level_api *)dev->api;
- return api->intr_get_state(dev);
- }
- static inline void irq_set_priority_next_level(const struct device *dev,
- uint32_t irq,
- uint32_t prio, uint32_t flags)
- {
- const struct irq_next_level_api *api =
- (const struct irq_next_level_api *)dev->api;
- if (api->intr_set_priority)
- api->intr_set_priority(dev, irq, prio, flags);
- }
- static inline unsigned int irq_line_is_enabled_next_level(const struct device *dev,
- unsigned int irq)
- {
- const struct irq_next_level_api *api =
- (const struct irq_next_level_api *)dev->api;
- return api->intr_get_line_state(dev, irq);
- }
- #ifdef __cplusplus
- }
- #endif
- #endif
|