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);
> }
> }
>