Message ID | 20231120235112.1951342-11-milesg@linux.vnet.ibm.com |
---|---|
State | New |
Headers | show |
Series | Add powernv10 I2C devices and tests | expand |
On 11/21/23 00:51, Glenn Miles wrote: > For powernv10-rainier, the Power Hypervisor code expects to see a > pca9554 device connected to the 3rd PNV I2C engine on port 1 at I2C > address 0x25 (or left-justified address of 0x4A). This is used by > the hypervisor code to detect if a "Cable Card" is present. > > Signed-off-by: Glenn Miles <milesg@linux.vnet.ibm.com> Reviewed-by: Cédric Le Goater <clg@kaod.org> Thanks, C. > --- > > Changes from previous version: > - Code moved from pnv_chip_power10_realize to pnv_rainier_i2c_init > > hw/misc/Kconfig | 4 ++++ > hw/misc/meson.build | 1 + > hw/ppc/Kconfig | 1 + > hw/ppc/pnv.c | 6 ++++++ > 4 files changed, 12 insertions(+) > > diff --git a/hw/misc/Kconfig b/hw/misc/Kconfig > index cc8a8c1418..c347a132c2 100644 > --- a/hw/misc/Kconfig > +++ b/hw/misc/Kconfig > @@ -34,6 +34,10 @@ config PCA9552 > bool > depends on I2C > > +config PCA9554 > + bool > + depends on I2C > + > config I2C_ECHO > bool > default y if TEST_DEVICES > diff --git a/hw/misc/meson.build b/hw/misc/meson.build > index 36c20d5637..c39410e4a7 100644 > --- a/hw/misc/meson.build > +++ b/hw/misc/meson.build > @@ -4,6 +4,7 @@ system_ss.add(when: 'CONFIG_FW_CFG_DMA', if_true: files('vmcoreinfo.c')) > system_ss.add(when: 'CONFIG_ISA_DEBUG', if_true: files('debugexit.c')) > system_ss.add(when: 'CONFIG_ISA_TESTDEV', if_true: files('pc-testdev.c')) > system_ss.add(when: 'CONFIG_PCA9552', if_true: files('pca9552.c')) > +system_ss.add(when: 'CONFIG_PCA9554', if_true: files('pca9554.c')) > system_ss.add(when: 'CONFIG_PCI_TESTDEV', if_true: files('pci-testdev.c')) > system_ss.add(when: 'CONFIG_UNIMP', if_true: files('unimp.c')) > system_ss.add(when: 'CONFIG_EMPTY_SLOT', if_true: files('empty_slot.c')) > diff --git a/hw/ppc/Kconfig b/hw/ppc/Kconfig > index f77ca773cf..2302778265 100644 > --- a/hw/ppc/Kconfig > +++ b/hw/ppc/Kconfig > @@ -33,6 +33,7 @@ config POWERNV > select FDT_PPC > select PCI_POWERNV > select PCA9552 > + select PCA9554 > > config PPC405 > bool > diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c > index c29a136465..54ebef789e 100644 > --- a/hw/ppc/pnv.c > +++ b/hw/ppc/pnv.c > @@ -1918,6 +1918,12 @@ static void pnv_rainier_i2c_init(PnvMachineState *pnv) > qdev_get_gpio_in(DEVICE(hotplug), 8)); > qdev_connect_gpio_out(DEVICE(hotplug), 4, > qdev_get_gpio_in(DEVICE(hotplug), 9)); > + > + /* > + * Add a PCA9554 I2C device for cable card presence detection > + * to engine 2, bus 1, address 0x25 > + */ > + i2c_slave_create_simple(chip10->i2c[2].busses[1], "pca9554", 0x25); > } > } >
diff --git a/hw/misc/Kconfig b/hw/misc/Kconfig index cc8a8c1418..c347a132c2 100644 --- a/hw/misc/Kconfig +++ b/hw/misc/Kconfig @@ -34,6 +34,10 @@ config PCA9552 bool depends on I2C +config PCA9554 + bool + depends on I2C + config I2C_ECHO bool default y if TEST_DEVICES diff --git a/hw/misc/meson.build b/hw/misc/meson.build index 36c20d5637..c39410e4a7 100644 --- a/hw/misc/meson.build +++ b/hw/misc/meson.build @@ -4,6 +4,7 @@ system_ss.add(when: 'CONFIG_FW_CFG_DMA', if_true: files('vmcoreinfo.c')) system_ss.add(when: 'CONFIG_ISA_DEBUG', if_true: files('debugexit.c')) system_ss.add(when: 'CONFIG_ISA_TESTDEV', if_true: files('pc-testdev.c')) system_ss.add(when: 'CONFIG_PCA9552', if_true: files('pca9552.c')) +system_ss.add(when: 'CONFIG_PCA9554', if_true: files('pca9554.c')) system_ss.add(when: 'CONFIG_PCI_TESTDEV', if_true: files('pci-testdev.c')) system_ss.add(when: 'CONFIG_UNIMP', if_true: files('unimp.c')) system_ss.add(when: 'CONFIG_EMPTY_SLOT', if_true: files('empty_slot.c')) diff --git a/hw/ppc/Kconfig b/hw/ppc/Kconfig index f77ca773cf..2302778265 100644 --- a/hw/ppc/Kconfig +++ b/hw/ppc/Kconfig @@ -33,6 +33,7 @@ config POWERNV select FDT_PPC select PCI_POWERNV select PCA9552 + select PCA9554 config PPC405 bool diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c index c29a136465..54ebef789e 100644 --- a/hw/ppc/pnv.c +++ b/hw/ppc/pnv.c @@ -1918,6 +1918,12 @@ static void pnv_rainier_i2c_init(PnvMachineState *pnv) qdev_get_gpio_in(DEVICE(hotplug), 8)); qdev_connect_gpio_out(DEVICE(hotplug), 4, qdev_get_gpio_in(DEVICE(hotplug), 9)); + + /* + * Add a PCA9554 I2C device for cable card presence detection + * to engine 2, bus 1, address 0x25 + */ + i2c_slave_create_simple(chip10->i2c[2].busses[1], "pca9554", 0x25); } }
For powernv10-rainier, the Power Hypervisor code expects to see a pca9554 device connected to the 3rd PNV I2C engine on port 1 at I2C address 0x25 (or left-justified address of 0x4A). This is used by the hypervisor code to detect if a "Cable Card" is present. Signed-off-by: Glenn Miles <milesg@linux.vnet.ibm.com> --- Changes from previous version: - Code moved from pnv_chip_power10_realize to pnv_rainier_i2c_init hw/misc/Kconfig | 4 ++++ hw/misc/meson.build | 1 + hw/ppc/Kconfig | 1 + hw/ppc/pnv.c | 6 ++++++ 4 files changed, 12 insertions(+)