1 /*
2  * Xilinx Processor System MIO / EMIO GPIO controller driver
3  *
4  * Driver private data declarations, parent (IRQ handler) module
5  *
6  * Copyright (c) 2022, Weidmueller Interface GmbH & Co. KG
7  * SPDX-License-Identifier: Apache-2.0
8  */
9 
10 #ifndef _ZEPHYR_DRIVERS_GPIO_GPIO_XLNX_PS_H_
11 #define _ZEPHYR_DRIVERS_GPIO_GPIO_XLNX_PS_H_
12 
13 /* Type definitions */
14 
15 /* IRQ handler function type */
16 typedef void (*gpio_xlnx_ps_config_irq_t)(const struct device *dev);
17 
18 /**
19  * @brief Run-time modifiable device data structure.
20  *
21  * This struct contains all data of the PS GPIO controller parent
22  * (IRQ handler) which is modifiable at run-time.
23  */
24 struct gpio_xlnx_ps_dev_data {
25 	struct gpio_driver_data common;
26 };
27 
28 /**
29  * @brief Constant device configuration data structure.
30  *
31  * This struct contains all data of the PS GPIO controller parent
32  * which is required for proper operation (such as base memory
33  * addresses, references to all associated banks etc.) which don't
34  * have to and therefore cannot be modified at run-time.
35  */
36 struct gpio_xlnx_ps_dev_cfg {
37 	struct gpio_driver_config common;
38 
39 	uint32_t base_addr;
40 	const struct device *const *bank_devices;
41 	uint32_t num_banks;
42 	gpio_xlnx_ps_config_irq_t config_func;
43 };
44 
45 #endif /* _ZEPHYR_DRIVERS_GPIO_GPIO_XLNX_PS_H_ */
46