/*
 * 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 **bank_devices;
	uint32_t num_banks;
	gpio_xlnx_ps_config_irq_t config_func;
};

#endif /* _ZEPHYR_DRIVERS_GPIO_GPIO_XLNX_PS_H_ */
