Zephyr API Documentation  3.6.99
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
shared_irq.h
Go to the documentation of this file.
1/* shared_irq - Shared interrupt driver */
2
3/*
4 * Copyright (c) 2015 - 2023 Intel corporation
5 *
6 * SPDX-License-Identifier: Apache-2.0
7 */
8
9#ifndef ZEPHYR_INCLUDE_SHARED_IRQ_H_
10#define ZEPHYR_INCLUDE_SHARED_IRQ_H_
11
12
13#ifdef __cplusplus
14extern "C" {
15#endif
16
17typedef int (*isr_t)(const struct device *dev, unsigned int irq_number);
18
19/* driver API definition */
20typedef int (*shared_irq_register_t)(const struct device *dev,
21 isr_t isr_func,
22 const struct device *isr_dev);
23typedef int (*shared_irq_enable_t)(const struct device *dev,
24 const struct device *isr_dev);
25typedef int (*shared_irq_disable_t)(const struct device *dev,
26 const struct device *isr_dev);
27
32};
33
40static inline int shared_irq_isr_register(const struct device *dev,
41 isr_t isr_func,
42 const struct device *isr_dev)
43{
44 const struct shared_irq_driver_api *api =
45 (const struct shared_irq_driver_api *)dev->api;
46
47 return api->isr_register(dev, isr_func, isr_dev);
48}
49
55static inline int shared_irq_enable(const struct device *dev,
56 const struct device *isr_dev)
57{
58 const struct shared_irq_driver_api *api =
59 (const struct shared_irq_driver_api *)dev->api;
60
61 return api->enable(dev, isr_dev);
62}
63
69static inline int shared_irq_disable(const struct device *dev,
70 const struct device *isr_dev)
71{
72 const struct shared_irq_driver_api *api =
73 (const struct shared_irq_driver_api *)dev->api;
74
75 return api->disable(dev, isr_dev);
76}
77
78#ifdef __cplusplus
79}
80#endif
81
82#endif /* ZEPHYR_INCLUDE_SHARED_IRQ_H_ */
int(* shared_irq_enable_t)(const struct device *dev, const struct device *isr_dev)
Definition: shared_irq.h:23
int(* shared_irq_disable_t)(const struct device *dev, const struct device *isr_dev)
Definition: shared_irq.h:25
static int shared_irq_isr_register(const struct device *dev, isr_t isr_func, const struct device *isr_dev)
Register a device ISR.
Definition: shared_irq.h:40
static int shared_irq_disable(const struct device *dev, const struct device *isr_dev)
Disable ISR for device.
Definition: shared_irq.h:69
int(* shared_irq_register_t)(const struct device *dev, isr_t isr_func, const struct device *isr_dev)
Definition: shared_irq.h:20
static int shared_irq_enable(const struct device *dev, const struct device *isr_dev)
Enable ISR for device.
Definition: shared_irq.h:55
int(* isr_t)(const struct device *dev, unsigned int irq_number)
Definition: shared_irq.h:17
Runtime device structure (in ROM) per driver instance.
Definition: device.h:399
const void * api
Address of the API structure exposed by the device instance.
Definition: device.h:405
Definition: shared_irq.h:28
shared_irq_disable_t disable
Definition: shared_irq.h:31
shared_irq_enable_t enable
Definition: shared_irq.h:30
shared_irq_register_t isr_register
Definition: shared_irq.h:29