zephyr/drivers/serial/uart_nxp_s32_linflexd.h
Manuel Argüelles bda3b101d3 serial: nxp_s32: use instance-based DT macros
At present, many of the NXP S32 shim drivers do not make use of
devicetree instance-based macros because the NXP S32 HAL relies on an
index-based approach, requiring knowledge of the peripheral instance
index during both compilation and runtime, and this index might not
align with the devicetree instance index.

The proposed solution in this patch eliminates this limitation by
determining the peripheral instance index during compilation
through macrobatics and defining the driver's ISR within the shim
driver itself.

Note that for some peripheral instances is needed to redefine the
HAL macros of the peripheral base address, since the naming is not
uniform for all instances.

Signed-off-by: Manuel Argüelles <manuel.arguelles@nxp.com>
2023-11-08 10:06:46 +01:00

39 lines
890 B
C

/*
* Copyright 2022-2023 NXP
*
* SPDX-License-Identifier: Apache-2.0
*/
#ifndef ZEPHYR_DRIVERS_SERIAL_UART_S32_LINFLEXD_H_
#define ZEPHYR_DRIVERS_SERIAL_UART_S32_LINFLEXD_H_
struct uart_nxp_s32_config {
uint32_t instance;
LINFLEXD_Type *base;
const struct pinctrl_dev_config *pincfg;
Linflexd_Uart_Ip_UserConfigType hw_cfg;
};
#ifdef CONFIG_UART_INTERRUPT_DRIVEN
struct uart_nxp_s32_int {
bool tx_fifo_busy;
bool rx_fifo_busy;
bool irq_tx_enable;
bool irq_rx_enable;
uint8_t rx_fifo_data;
};
#endif
#ifdef CONFIG_UART_INTERRUPT_DRIVEN
struct uart_nxp_s32_data {
struct uart_nxp_s32_int int_data;
uart_irq_callback_user_data_t callback;
void *cb_data;
};
#endif /* CONFIG_UART_INTERRUPT_DRIVEN */
extern Linflexd_Uart_Ip_StateStructureType
Linflexd_Uart_Ip_apStateStructure[LINFLEXD_UART_IP_NUMBER_OF_INSTANCES];
#endif /* ZEPHYR_DRIVERS_SERIAL_UART_S32_LINFLEXD_H_ */