@@ -171,6 +171,9 @@ static int espi_kbc_setup(const struct device *dev)
171171 kbc_reg -> VWCTRL1 = (0x01 << KBC_VWCTRL1_IRQNUM_Pos ) | KBC_VWCTRL1_ACTEN ;
172172 kbc_reg -> INTEN = KBC_INTEN_IBFINTEN | KBC_INTEN_OBFINTEN ;
173173
174+ NVIC_ClearPendingIRQ (DT_IRQ_BY_NAME (DT_DRV_INST (0 ), kbc_ibf , irq ));
175+ NVIC_ClearPendingIRQ (DT_IRQ_BY_NAME (DT_DRV_INST (0 ), kbc_obe , irq ));
176+
174177 /* IBF */
175178 IRQ_CONNECT (DT_IRQ_BY_NAME (DT_DRV_INST (0 ), kbc_ibf , irq ),
176179 DT_IRQ_BY_NAME (DT_DRV_INST (0 ), kbc_ibf , priority ), kbc_ibf_isr ,
@@ -365,6 +368,8 @@ static int espi_acpi_setup(const struct device *dev)
365368 acpi_reg -> VWCTRL1 = (0x00UL << ACPI_VWCTRL1_IRQNUM_Pos ) | ACPI_VWCTRL1_ACTEN ;
366369 acpi_reg -> INTEN = ACPI_INTEN_IBFINTEN | ACPI_INTEN_OBFINTEN ;
367370
371+ NVIC_ClearPendingIRQ (DT_IRQ_BY_NAME (DT_DRV_INST (0 ), acpi_ibf , irq ));
372+
368373 /* IBF */
369374 IRQ_CONNECT (DT_IRQ_BY_NAME (DT_DRV_INST (0 ), acpi_ibf , irq ),
370375 DT_IRQ_BY_NAME (DT_DRV_INST (0 ), acpi_ibf , priority ), acpi_ibf_isr ,
@@ -505,6 +510,8 @@ static int espi_promt0_setup(const struct device *dev)
505510 promt0_reg -> VWCTRL1 = ACPI_VWCTRL1_ACTEN ;
506511 promt0_reg -> INTEN = ACPI_INTEN_IBFINTEN ;
507512
513+ NVIC_ClearPendingIRQ (DT_IRQ_BY_NAME (DT_DRV_INST (0 ), promt0_ibf , irq ));
514+
508515 /* IBF */
509516 IRQ_CONNECT (DT_IRQ_BY_NAME (DT_DRV_INST (0 ), promt0_ibf , irq ),
510517 DT_IRQ_BY_NAME (DT_DRV_INST (0 ), promt0_ibf , priority ), promt0_ibf_isr ,
@@ -645,6 +652,8 @@ static void espi_periph_ch_setup(const struct device *dev)
645652
646653 espi_reg -> EPINTEN = ESPI_EPINTEN_CFGCHGEN | ESPI_EPINTEN_MEMWREN | ESPI_EPINTEN_MEMRDEN ;
647654
655+ NVIC_ClearPendingIRQ (DT_IRQ_BY_NAME (DT_NODELABEL (espi0 ), periph_ch , irq ));
656+
648657 IRQ_CONNECT (DT_IRQ_BY_NAME (DT_DRV_INST (0 ), periph_ch , irq ),
649658 DT_IRQ_BY_NAME (DT_DRV_INST (0 ), periph_ch , priority ), espi_periph_ch_isr ,
650659 DEVICE_DT_GET (DT_DRV_INST (0 )), 0 );
@@ -697,6 +706,8 @@ static int espi_peri_ch_port80_setup(const struct device *dev)
697706 port80_reg -> CFG = PORT80_CFG_CLRFLG | PORT80_CFG_THREEN ;
698707 port80_reg -> INTEN = PORT80_INTEN_THREINTEN ;
699708
709+ NVIC_ClearPendingIRQ (DT_IRQ_BY_NAME (DT_DRV_INST (0 ), port80 , irq ));
710+
700711 IRQ_CONNECT (DT_IRQ_BY_NAME (DT_DRV_INST (0 ), port80 , irq ),
701712 DT_IRQ_BY_NAME (DT_DRV_INST (0 ), port80 , priority ), espi_port80_isr ,
702713 DEVICE_DT_GET (DT_DRV_INST (0 )), 0 );
@@ -1528,6 +1539,19 @@ static void espi_vw_ch_setup(const struct device *dev)
15281539
15291540 espi_reg -> EVRXINTEN = (ESPI_EVRXINTEN_CFGCHGEN | ESPI_EVRXINTEN_RXCHGEN );
15301541
1542+ NVIC_ClearPendingIRQ (DT_IRQ_BY_NAME (DT_DRV_INST (0 ), vw_ch , irq ));
1543+ NVIC_ClearPendingIRQ (DT_IRQ_BY_NAME (DT_DRV_INST (0 ), vw_idx2 , irq ));
1544+ NVIC_ClearPendingIRQ (DT_IRQ_BY_NAME (DT_DRV_INST (0 ), vw_idx3 , irq ));
1545+ NVIC_ClearPendingIRQ (DT_IRQ_BY_NAME (DT_DRV_INST (0 ), vw_idx7 , irq ));
1546+ NVIC_ClearPendingIRQ (DT_IRQ_BY_NAME (DT_DRV_INST (0 ), vw_idx41 , irq ));
1547+ NVIC_ClearPendingIRQ (DT_IRQ_BY_NAME (DT_DRV_INST (0 ), vw_idx42 , irq ));
1548+ NVIC_ClearPendingIRQ (DT_IRQ_BY_NAME (DT_DRV_INST (0 ), vw_idx43 , irq ));
1549+ NVIC_ClearPendingIRQ (DT_IRQ_BY_NAME (DT_DRV_INST (0 ), vw_idx44 , irq ));
1550+ NVIC_ClearPendingIRQ (DT_IRQ_BY_NAME (DT_DRV_INST (0 ), vw_idx47 , irq ));
1551+ NVIC_ClearPendingIRQ (DT_IRQ_BY_NAME (DT_DRV_INST (0 ), vw_idx4a , irq ));
1552+ NVIC_ClearPendingIRQ (DT_IRQ_BY_NAME (DT_DRV_INST (0 ), vw_idx51 , irq ));
1553+ NVIC_ClearPendingIRQ (DT_IRQ_BY_NAME (DT_DRV_INST (0 ), vw_idx61 , irq ));
1554+
15311555 IRQ_CONNECT (DT_IRQ_BY_NAME (DT_DRV_INST (0 ), vw_ch , irq ),
15321556 DT_IRQ_BY_NAME (DT_DRV_INST (0 ), vw_ch , priority ), espi_vw_ch_isr ,
15331557 DEVICE_DT_GET (DT_DRV_INST (0 )), 0 );
@@ -1871,6 +1895,10 @@ static int espi_oob_ch_setup(const struct device *dev)
18711895 k_sem_init (& espi_data -> oob_rx_lock , 0 , 1 );
18721896#endif
18731897
1898+ NVIC_ClearPendingIRQ (DT_IRQ_BY_NAME (DT_DRV_INST (0 ), oob_tx , irq ));
1899+ NVIC_ClearPendingIRQ (DT_IRQ_BY_NAME (DT_DRV_INST (0 ), oob_rx , irq ));
1900+ NVIC_ClearPendingIRQ (DT_IRQ_BY_NAME (DT_DRV_INST (0 ), oob_chg , irq ));
1901+
18741902 /* Tx */
18751903 IRQ_CONNECT (DT_IRQ_BY_NAME (DT_DRV_INST (0 ), oob_tx , irq ),
18761904 DT_IRQ_BY_NAME (DT_DRV_INST (0 ), oob_tx , priority ), espi_oob_tx_isr ,
@@ -2082,6 +2110,9 @@ static int espi_flash_ch_setup(const struct device *dev)
20822110
20832111 k_sem_init (& espi_data -> flash_lock , 0 , 1 );
20842112
2113+ NVIC_ClearPendingIRQ (DT_IRQ_BY_NAME (DT_DRV_INST (0 ), maf_tr , irq ));
2114+ NVIC_ClearPendingIRQ (DT_IRQ_BY_NAME (DT_DRV_INST (0 ), flash_chg , irq ));
2115+
20852116 /* MAF Tr */
20862117 IRQ_CONNECT (DT_IRQ_BY_NAME (DT_DRV_INST (0 ), maf_tr , irq ),
20872118 DT_IRQ_BY_NAME (DT_DRV_INST (0 ), maf_tr , priority ), espi_maf_tr_isr ,
@@ -2277,6 +2308,8 @@ static void espi_bus_reset_setup(const struct device *dev)
22772308 espi_reg -> ERSTCFG = ESPI_ERSTCFG_RSTMONEN | ESPI_ERSTCFG_RSTINTEN ;
22782309 }
22792310
2311+ NVIC_ClearPendingIRQ (DT_IRQ_BY_NAME (DT_DRV_INST (0 ), bus_rst , irq ));
2312+
22802313 IRQ_CONNECT (DT_IRQ_BY_NAME (DT_DRV_INST (0 ), bus_rst , irq ),
22812314 DT_IRQ_BY_NAME (DT_DRV_INST (0 ), bus_rst , priority ), espi_rst_isr ,
22822315 DEVICE_DT_GET (DT_DRV_INST (0 )), 0 );
0 commit comments