xemu/hw/ppc
Cédric Le Goater 263b81ee15 ppc/pnv: Add an I2C controller model
The more recent IBM power processors have an embedded I2C
controller that is accessible by software via the XSCOM
address space.

Each instance of the I2C controller is capable of controlling
multiple I2C buses (one at a time).  Prior to beginning a
transaction on an I2C bus, the bus must be selected by writing
the port number associated with the bus into the PORT_NUM
field of the MODE register.  Once an I2C bus is selected,
the status of the bus can be determined by reading the
Status and Extended Status registers.

I2C bus transactions can be started by writing a command to
the Command register and reading/writing data from/to the
FIFO register.

Not supported :

 . 10 bit I2C addresses
 . Multimaster
 . Slave

Signed-off-by: Cédric Le Goater <clg@kaod.org>
[milesg: Split wiring to powernv9 into its own commit]
[milesg: Added more detail to commit message]
[milesg: Added SPDX Licensed Identifier to new files]
[milesg: updated copyright dates]
[milesg: Added use of g_autofree]
[milesg: Added NULL check after pnv_i2c_get_bus]
Signed-off-by: Glenn Miles <milesg@linux.vnet.ibm.com>
Acked-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Message-ID: <20231016222013.3739530-2-milesg@linux.vnet.ibm.com>
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
2023-11-07 15:49:41 -03:00
..
Kconfig hw/ppc: Add emulation of AmigaOne XE board 2023-11-07 15:49:13 -03:00
amigaone.c hw/ppc: Add emulation of AmigaOne XE board 2023-11-07 15:49:13 -03:00
e500-ccsr.h Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
e500.c accel/tcg: Replace CPUState.env_ptr with cpu_env() 2023-10-04 11:03:54 -07:00
e500.h hw/ppc/e500: Add Freescale eSDHC to e500plat 2022-12-21 14:17:55 -03:00
e500plat.c hw/ppc: Use MachineClass->default_nic in the ppc machines 2023-05-22 09:44:22 +02:00
fdt.c target/ppc: Split page size information into a separate allocation 2018-04-27 18:05:22 +10:00
fw_cfg.c hw/ppc: Implement fw_cfg_arch_key_name() 2019-05-23 14:10:31 +02:00
mac_newworld.c hw/ppc: Use MachineClass->default_nic in the ppc machines 2023-05-22 09:44:22 +02:00
mac_oldworld.c hw/ppc: Reset timebase facilities on machine reset 2023-09-06 11:19:33 +02:00
meson.build ppc/pnv: Add an I2C controller model 2023-11-07 15:49:41 -03:00
mpc8544_guts.c ppc/ppc4xx: Convert printfs() 2022-01-04 07:55:34 +01:00
mpc8544ds.c hw/ppc: Use MachineClass->default_nic in the ppc machines 2023-05-22 09:44:22 +02:00
pef.c migration: simplify blockers 2023-10-20 08:51:41 +02:00
pegasos2.c vt82c686 machines: Support machine-default audiodev with fallback 2023-10-03 10:29:40 +02:00
pnv.c hw/ppc/pnv: Do not use SysBus API to map local MMIO region 2023-10-19 23:13:28 +02:00
pnv_bmc.c Remove qemu-common.h include from most units 2022-04-06 14:31:55 +02:00
pnv_core.c hw/ppc: Reset timebase facilities on machine reset 2023-09-06 11:19:33 +02:00
pnv_homer.c include/hw/ppc: Split pnv_chip.h off pnv.h 2023-01-20 07:25:10 +01:00
pnv_i2c.c ppc/pnv: Add an I2C controller model 2023-11-07 15:49:41 -03:00
pnv_lpc.c bulk: Remove pointless QOM casts 2023-06-05 20:48:34 +02:00
pnv_occ.c bulk: Remove pointless QOM casts 2023-06-05 20:48:34 +02:00
pnv_pnor.c block: Change blk_{pread,pwrite}() param order 2022-07-12 12:14:56 +02:00
pnv_psi.c pnv/psi: Clean up local variable shadowing 2023-09-29 10:07:17 +02:00
pnv_sbe.c bulk: Remove pointless QOM casts 2023-06-05 20:48:34 +02:00
pnv_xscom.c hw/ppc/pnv_xscom: Do not use SysBus API to map local MMIO region 2023-10-19 23:13:28 +02:00
ppc.c ppc: spelling fixes 2023-09-20 07:54:34 +03:00
ppc4xx_devs.c ppc4xx_sdram: Move ppc4xx_sdram_banks() to ppc4xx_sdram.c 2022-10-28 13:15:23 -03:00
ppc4xx_pci.c ppc4xx_pci: Add define for ppc4xx-host-bridge type name 2023-07-07 04:47:49 -03:00
ppc4xx_sdram.c *: Add missing includes of qemu/error-report.h 2023-03-22 15:06:57 +00:00
ppc405.h ppc4xx_sdram: QOM'ify 2022-10-17 16:15:09 -03:00
ppc405_boards.c ppc4xx_sdram: Rename functions to prevent name clashes 2022-10-17 16:15:09 -03:00
ppc405_uc.c Drop duplicate #include 2023-02-08 07:28:05 +01:00
ppc440.h ppc440: Remove ppc460ex_pcie_init legacy init function 2023-07-07 04:47:49 -03:00
ppc440_bamboo.c ppc/{bamboo, virtex_ml507}: Remove useless dependency on ppc405.h header 2023-10-21 15:00:22 +03:00
ppc440_pcix.c hw/pci: modify pci_setup_iommu() to set PCIIOMMUOps 2023-11-03 09:20:31 +01:00
ppc440_uc.c hw/ppc/ppc440_uc: Remove dead l2sram_update_mappings() 2023-10-21 15:00:22 +03:00
ppc_booke.c Use g_new() & friends where that makes obvious sense 2022-03-21 15:44:44 +01:00
ppce500_spin.c target/ppc: Restrict KVM-specific fields from ArchCPU 2023-06-28 14:27:59 +02:00
prep.c hw/ppc: Support machine-default audiodev with fallback 2023-10-03 10:29:40 +02:00
prep_systemio.c ppc: spelling fixes 2023-09-20 07:54:34 +03:00
rs6000_mc.c Do not include hw/boards.h if it's not really necessary 2021-05-02 17:24:51 +02:00
sam460ex.c ppc440_pcix: Rename QOM type define abd move it to common header 2023-07-07 04:47:49 -03:00
spapr.c migration: Hack to maintain backwards compatibility for ppc 2023-11-01 16:13:58 +01:00
spapr_caps.c spapr: TCG allow up to 8-thread SMT on POWER8 and newer CPUs 2023-06-25 22:41:30 +02:00
spapr_cpu_core.c hw/ppc: Reset timebase facilities on machine reset 2023-09-06 11:19:33 +02:00
spapr_drc.c spapr/drc: Clean up local variable shadowing in prop_get_fdt() 2023-09-29 10:07:18 +02:00
spapr_events.c migration: simplify blockers 2023-10-20 08:51:41 +02:00
spapr_hcall.c ppc: spelling fixes 2023-09-20 07:54:34 +03:00
spapr_iommu.c hw/ppc: use g_free() in spapr_tce_table_post_load() 2023-09-08 13:08:52 +03:00
spapr_irq.c spapr/xics: Drop unused argument to xics_kvm_has_broken_disconnect() 2020-12-14 15:50:55 +11:00
spapr_nested.c ppc/spapr: Move spapr nested HV to a new file 2023-06-25 22:41:30 +02:00
spapr_numa.c spapr: Remove support for NVIDIA V100 GPU with NVLink2 2023-09-18 07:25:28 -03:00
spapr_nvdimm.c migration: Use vmstate_register_any() 2023-11-01 16:13:58 +01:00
spapr_ovec.c spapr: Improve handling of memory unplug with old guests 2021-01-19 10:20:29 +11:00
spapr_pci.c hw/pci: modify pci_setup_iommu() to set PCIIOMMUOps 2023-11-03 09:20:31 +01:00
spapr_pci_vfio.c vfio/container: Move IBM EEH related functions into spapr_pci_vfio.c 2023-11-06 13:23:23 +01:00
spapr_rng.c Do not include cpu.h if it's not really necessary 2021-05-02 17:24:51 +02:00
spapr_rtas.c migration: simplify blockers 2023-10-20 08:51:41 +02:00
spapr_rtas_ddw.c spapr/ddw: Implement 64bit query extension 2022-07-06 10:22:37 -03:00
spapr_rtc.c rtc: Have event RTC_CHANGE identify the RTC by QOM path 2022-02-28 11:39:35 +01:00
spapr_softmmu.c *: Add missing includes of qemu/error-report.h 2023-03-22 15:06:57 +00:00
spapr_tpm_proxy.c Remove qemu-common.h include from most units 2022-04-06 14:31:55 +02:00
spapr_vio.c hw/ppc/spapr_vio: Realize SPAPR_VIO_BRIDGE device before accessing it 2023-10-19 23:13:28 +02:00
spapr_vof.c Remove qemu-common.h include from most units 2022-04-06 14:31:55 +02:00
trace-events ppc4xx_sdram: Generalise bank setup 2022-10-28 13:15:23 -03:00
trace.h trace: switch position of headers to what Meson requires 2020-08-21 06:18:24 -04:00
virtex_ml507.c ppc/{bamboo, virtex_ml507}: Remove useless dependency on ppc405.h header 2023-10-21 15:00:22 +03:00
vof.c ppc/vof: Fix missed fields in VOF cleanup 2023-09-06 11:19:33 +02:00