From f7a2ff4f8d1291d4170d1c3653da0da31fd88c62 Mon Sep 17 00:00:00 2001 From: Tomasz Bursztyka Date: Tue, 16 Mar 2021 09:33:41 +0100 Subject: [PATCH] drivers: Fixing the 2 drivers for PCIe IRQ connection Now these 2 drivers should be working properly in case of IRQ remapping. Signed-off-by: Tomasz Bursztyka --- drivers/i2c/i2c_dw.c | 5 +++-- drivers/serial/uart_ns16550.c | 19 ++++++++++--------- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/drivers/i2c/i2c_dw.c b/drivers/i2c/i2c_dw.c index e21507be2ae..797ad41501d 100644 --- a/drivers/i2c/i2c_dw.c +++ b/drivers/i2c/i2c_dw.c @@ -690,7 +690,7 @@ static int i2c_dw_initialize(const struct device *dev) static void i2c_config_##n(const struct device *port) \ { \ ARG_UNUSED(port); \ - IRQ_CONNECT(DT_INST_IRQN(n), DT_INST_IRQ(n, priority), \ + IRQ_CONNECT(DT_INST_IRQN(n), DT_INST_IRQ(n, priority), \ i2c_dw_isr, DEVICE_DT_INST_GET(n), \ I2C_DW_IRQ_FLAGS(n)); \ irq_enable(DT_INST_IRQN(n)); \ @@ -709,7 +709,8 @@ static int i2c_dw_initialize(const struct device *dev) if (irq == PCIE_CONF_INTR_IRQ_NONE) { \ return; \ } \ - irq_connect_dynamic(irq, DT_INST_IRQ(n, priority), \ + pcie_connect_dynamic_irq(DT_INST_REG_ADDR(n), irq, \ + DT_INST_IRQ(n, priority), \ (void (*)(const void *))i2c_dw_isr, \ DEVICE_DT_INST_GET(n), \ I2C_DW_IRQ_FLAGS(n)); \ diff --git a/drivers/serial/uart_ns16550.c b/drivers/serial/uart_ns16550.c index 704310abce3..13a5b71600e 100644 --- a/drivers/serial/uart_ns16550.c +++ b/drivers/serial/uart_ns16550.c @@ -1043,14 +1043,14 @@ static const struct uart_driver_api uart_ns16550_driver_api = { _CONCAT(UART_NS16550_IRQ_FLAGS_SENSE, DT_INST_IRQ_HAS_CELL(n, sense))(n) /* not PCI(e) */ -#define UART_NS16550_IRQ_CONFIG_PCIE0(n) \ - static void irq_config_func##n(const struct device *dev) \ - { \ - ARG_UNUSED(dev); \ - IRQ_CONNECT(DT_INST_IRQN(n), DT_INST_IRQ(n, priority), \ - uart_ns16550_isr, DEVICE_DT_INST_GET(n), \ - UART_NS16550_IRQ_FLAGS(n)); \ - irq_enable(DT_INST_IRQN(n)); \ +#define UART_NS16550_IRQ_CONFIG_PCIE0(n) \ + static void irq_config_func##n(const struct device *dev) \ + { \ + ARG_UNUSED(dev); \ + IRQ_CONNECT(DT_INST_IRQN(n), DT_INST_IRQ(n, priority), \ + uart_ns16550_isr, DEVICE_DT_INST_GET(n), \ + UART_NS16550_IRQ_FLAGS(n)); \ + irq_enable(DT_INST_IRQN(n)); \ } /* PCI(e) with auto IRQ detection */ @@ -1066,7 +1066,8 @@ static const struct uart_driver_api uart_ns16550_driver_api = { if (irq == PCIE_CONF_INTR_IRQ_NONE) { \ return; \ } \ - irq_connect_dynamic(irq, DT_INST_IRQ(n, priority), \ + pcie_connect_dynamic_irq(DT_INST_REG_ADDR(n), irq, \ + DT_INST_IRQ(n, priority), \ (void (*)(const void *))uart_ns16550_isr, \ DEVICE_DT_INST_GET(n), \ UART_NS16550_IRQ_FLAGS(n)); \