blob: e08b842bc0f04a3537c66cf11ef67780773813ed [file] [log] [blame] [edit]
/*
* Xilinx Processor System MIO / EMIO GPIO controller driver
*
* Driver private data declarations, parent (IRQ handler) module
*
* Copyright (c) 2022, Weidmueller Interface GmbH & Co. KG
* SPDX-License-Identifier: Apache-2.0
*/
#ifndef _ZEPHYR_DRIVERS_GPIO_GPIO_XLNX_PS_H_
#define _ZEPHYR_DRIVERS_GPIO_GPIO_XLNX_PS_H_
/* Type definitions */
/* IRQ handler function type */
typedef void (*gpio_xlnx_ps_config_irq_t)(const struct device *dev);
/**
* @brief Run-time modifiable device data structure.
*
* This struct contains all data of the PS GPIO controller parent
* (IRQ handler) which is modifiable at run-time.
*/
struct gpio_xlnx_ps_dev_data {
struct gpio_driver_data common;
};
/**
* @brief Constant device configuration data structure.
*
* This struct contains all data of the PS GPIO controller parent
* which is required for proper operation (such as base memory
* addresses, references to all associated banks etc.) which don't
* have to and therefore cannot be modified at run-time.
*/
struct gpio_xlnx_ps_dev_cfg {
struct gpio_driver_config common;
uint32_t base_addr;
const struct device *const *bank_devices;
uint32_t num_banks;
gpio_xlnx_ps_config_irq_t config_func;
};
#endif /* _ZEPHYR_DRIVERS_GPIO_GPIO_XLNX_PS_H_ */