diff --git a/drivers/espi/espi_mchp_xec_v2.c b/drivers/espi/espi_mchp_xec_v2.c index af4c4b4c8d5..99f880b6907 100644 --- a/drivers/espi/espi_mchp_xec_v2.c +++ b/drivers/espi/espi_mchp_xec_v2.c @@ -851,6 +851,10 @@ static void espi_pc_isr(const struct device *dev) { struct espi_iom_regs *regs = ESPI_XEC_REG_BASE(dev); uint32_t status = regs->PCSTS; + struct espi_event evt = { .evt_type = ESPI_BUS_EVENT_CHANNEL_READY, + .evt_details = ESPI_CHANNEL_PERIPHERAL, + .evt_data = 0 }; + struct espi_xec_data *data = (struct espi_xec_data *)(dev->data); LOG_DBG("%s %x", __func__, status); if (status & MCHP_ESPI_PC_STS_BUS_ERR) { @@ -866,6 +870,16 @@ static void espi_pc_isr(const struct device *dev) regs->PCSTS = MCHP_ESPI_PC_STS_EN_CHG; } + if (status & MCHP_ESPI_PC_STS_BM_EN_CHG) { + if (status & MCHP_ESPI_PC_STS_BM_EN) { + evt.evt_data = ESPI_PC_EVT_BUS_MASTER_ENABLE; + LOG_WRN("%s BM change %x", __func__, status); + espi_send_callbacks(&data->callbacks, dev, evt); + } + + regs->PCSTS = MCHP_ESPI_PC_STS_BM_EN_CHG; + } + xec_espi_bus_intr_clr(dev, pc_girq_idx); }