[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v7 6/9] ppc/pnv: Use resettable interface to reset child I2C buse
From: |
Glenn Miles |
Subject: |
[PATCH v7 6/9] ppc/pnv: Use resettable interface to reset child I2C buses |
Date: |
Thu, 25 Jan 2024 16:48:15 -0600 |
The QEMU I2C buses and devices use the resettable
interface for resetting while the PNV I2C controller
and parent buses and devices have not yet transitioned
to this new interface and use the old reset strategy.
This was preventing the I2C buses and devices wired
to the PNV I2C controller from being reset.
The short term fix for this is to have the PNV I2C
Controller's reset function explicitly call the resettable
interface function, bus_cold_reset(), on all child
I2C buses.
The long term fix should be to transition all PNV parent
devices and buses to use the resettable interface so that
all child buses and devices are automatically reset.
Reviewed-by: Cédric Le Goater <clg@kaod.org>
Signed-off-by: Glenn Miles <milesg@linux.vnet.ibm.com>
---
No changes from previous version
hw/ppc/pnv_i2c.c | 15 ++++++++++++++-
1 file changed, 14 insertions(+), 1 deletion(-)
diff --git a/hw/ppc/pnv_i2c.c b/hw/ppc/pnv_i2c.c
index 656a48eebe..774946d6b2 100644
--- a/hw/ppc/pnv_i2c.c
+++ b/hw/ppc/pnv_i2c.c
@@ -629,6 +629,19 @@ static int pnv_i2c_dt_xscom(PnvXScomInterface *dev, void
*fdt,
return 0;
}
+static void pnv_i2c_sys_reset(void *dev)
+{
+ int port;
+ PnvI2C *i2c = PNV_I2C(dev);
+
+ pnv_i2c_reset(dev);
+
+ /* reset all buses connected to this i2c controller */
+ for (port = 0; port < i2c->num_busses; port++) {
+ bus_cold_reset(BUS(i2c->busses[port]));
+ }
+}
+
static void pnv_i2c_realize(DeviceState *dev, Error **errp)
{
PnvI2C *i2c = PNV_I2C(dev);
@@ -654,7 +667,7 @@ static void pnv_i2c_realize(DeviceState *dev, Error **errp)
fifo8_create(&i2c->fifo, PNV_I2C_FIFO_SIZE);
- qemu_register_reset(pnv_i2c_reset, dev);
+ qemu_register_reset(pnv_i2c_sys_reset, dev);
qdev_init_gpio_out(DEVICE(dev), &i2c->psi_irq, 1);
}
--
2.31.1
- [PATCH v7 0/9] Add powernv10 I2C devices and tests, Glenn Miles, 2024/01/25
- [PATCH v7 3/9] ppc/pnv: New powernv10-rainier machine type, Glenn Miles, 2024/01/25
- [PATCH v7 4/9] ppc/pnv: Add pca9552 to powernv10-rainier for PCIe hotplug power control, Glenn Miles, 2024/01/25
- [PATCH v7 8/9] ppc/pnv: Add a pca9554 I2C device to powernv10-rainier, Glenn Miles, 2024/01/25
- [PATCH v7 5/9] ppc/pnv: Wire up pca9552 GPIO pins for PCIe hotplug power control, Glenn Miles, 2024/01/25
- [PATCH v7 2/9] misc/pca9552: Let external devices set pca9552 inputs, Glenn Miles, 2024/01/25
- [PATCH v7 6/9] ppc/pnv: Use resettable interface to reset child I2C buses,
Glenn Miles <=
- [PATCH v7 1/9] misc/pca9552: Fix inverted input status, Glenn Miles, 2024/01/25
- [PATCH v7 7/9] misc: Add a pca9554 GPIO device model, Glenn Miles, 2024/01/25
- [PATCH v7 9/9] ppc/pnv: Test pnv i2c master and connected devices, Glenn Miles, 2024/01/25