qemu/hw/arm
Peter Delevoryas 55c57023b7 hw/misc/aspeed: Add PECI controller
This introduces a really basic PECI controller that responses to
commands by always setting the response code to success and then raising
an interrupt to indicate the command is done. This helps avoid getting
hit with constant errors if the driver continuously attempts to send a
command and keeps timing out.

The AST2400 and AST2500 only included registers up to 0x5C, not 0xFC.
They supported PECI 1.1, 2.0, and 3.0. The AST2600 and AST1030 support
PECI 4.0, which includes more read/write buffer registers from 0x80 to
0xFC to support 64-byte mode.

This patch doesn't attempt to handle that, or to create a different
version of the controller for the different generations, since it's only
implementing functionality that is common to all generations.

The basic sequence of events is that the firmware will read and write to
various registers and then trigger a command by setting the FIRE bit in
the command register (similar to the I2C controller).

Then the firmware waits for an interrupt from the PECI controller,
expecting the interrupt status register to be filled in with info on
what happened. If the command was transmitted and received successfully,
then response codes from the host CPU will be found in the data buffer
registers.

Signed-off-by: Peter Delevoryas <pdel@fb.com>
Reviewed-by: Cédric Le Goater <clg@kaod.org>
Message-Id: <20220630045133.32251-12-me@pjd.dev>
[ clg: s/sysbus_mmio_map/aspeed_mmio_map/ ]
Signed-off-by: Cédric Le Goater <clg@kaod.org>
2022-06-30 09:21:14 +02:00
..
allwinner-a10.c arm/allwinner-a10: replace snprintf() with g_strdup_printf() 2022-04-21 17:03:51 +04:00
allwinner-h3.c hw/arm: allwinner: Don't enable PSCI conduit when booting guest in EL3 2022-02-08 10:56:27 +00:00
armsse.c arm: Remove system_clock_scale global 2021-09-01 11:08:21 +01:00
armv7m.c hw/core/loader: return image sizes as ssize_t 2022-06-10 09:31:42 +10:00
aspeed.c hw/arm/aspeed: firework: add I2C MUXes for VR channels 2022-06-30 09:21:13 +02:00
aspeed_ast10x0.c hw/misc/aspeed: Add PECI controller 2022-06-30 09:21:14 +02:00
aspeed_ast2600.c hw/misc/aspeed: Add PECI controller 2022-06-30 09:21:14 +02:00
aspeed_soc.c hw/misc/aspeed: Add PECI controller 2022-06-30 09:21:14 +02:00
bcm2835_peripherals.c hw/arm: Add basic power management to raspi. 2021-07-02 11:48:36 +01:00
bcm2836.c Do not include cpu.h if it's not really necessary 2021-05-02 17:24:51 +02:00
boot.c hw/core/loader: return image sizes as ssize_t 2022-06-10 09:31:42 +10:00
collie.c Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
cubieboard.c hw: Replace trivial drive_get_next() by drive_get() 2021-12-15 08:38:16 +01:00
digic.c arm/digic: replace snprintf() with g_strdup_printf() 2022-04-21 17:03:51 +04:00
digic_boards.c hw/arm: Don't include qemu-common.h unnecessarily 2021-12-15 10:35:26 +00:00
exynos4_boards.c hw/arm/boot: Drop nb_cpus field from arm_boot_info 2022-02-08 10:56:28 +00:00
exynos4210.c hw/arm/exynos4210: Drop Exynos4210Irq struct 2022-04-21 11:37:04 +01:00
fsl-imx6.c Add the ability to change the FEC PHY MDIO device number on i.MX6 processor 2020-07-13 14:36:08 +01:00
fsl-imx6ul.c hw/arm: imx: Don't enable PSCI conduit when booting guest in EL3 2022-02-08 10:56:27 +00:00
fsl-imx7.c hw/arm: imx: Don't enable PSCI conduit when booting guest in EL3 2022-02-08 10:56:27 +00:00
fsl-imx25.c Do not include exec/address-spaces.h if it's not really necessary 2021-05-02 17:24:51 +02:00
fsl-imx31.c Do not include cpu.h if it's not really necessary 2021-05-02 17:24:51 +02:00
gumstix.c hw/arm/gumstix: Simplify since the machines are little-endian only 2020-03-05 16:09:14 +00:00
highbank.c hw/arm/boot: Drop nb_cpus field from arm_boot_info 2022-02-08 10:56:28 +00:00
imx25_pdk.c hw/arm/boot: Drop nb_cpus field from arm_boot_info 2022-02-08 10:56:28 +00:00
integratorcp.c hw: Replace trivial drive_get_next() by drive_get() 2021-12-15 08:38:16 +01:00
Kconfig hw/arm/aspeed: Add MAX31785 Fan controllers 2022-06-30 09:21:13 +02:00
kzm.c hw/arm/boot: Drop nb_cpus field from arm_boot_info 2022-02-08 10:56:28 +00:00
mainstone.c qtest: delete superfluous inclusions of qtest.h 2021-03-09 06:03:53 +01:00
mcimx6ul-evk.c hw/arm/boot: Drop nb_cpus field from arm_boot_info 2022-02-08 10:56:28 +00:00
mcimx7d-sabre.c hw/arm/boot: Drop nb_cpus field from arm_boot_info 2022-02-08 10:56:28 +00:00
meson.build aspeed/soc : Add AST1030 support 2022-05-02 17:03:03 +02:00
microbit.c hw/arm: Display CPU type in machine description 2021-02-03 10:15:51 +00:00
mps2-tz.c hw/arm/mps2-tz.c: Update AN547 documentation URL 2022-03-02 19:27:36 +00:00
mps2.c hw/arm/mps2.c: Mark internal-only I2C buses as 'full' 2021-09-13 21:01:08 +01:00
msf2-soc.c arm: Remove system_clock_scale global 2021-09-01 11:08:21 +01:00
msf2-som.c hw: Replace trivial drive_get_next() by drive_get() 2021-12-15 08:38:16 +01:00
musca.c arm: Update infocenter.arm.com URLs 2021-02-11 11:50:14 +00:00
musicpal.c ptimer: Rename PTIMER_POLICY_DEFAULT to PTIMER_POLICY_LEGACY 2022-05-19 16:19:03 +01:00
netduino2.c arm: Remove system_clock_scale global 2021-09-01 11:08:21 +01:00
netduinoplus2.c arm: Remove system_clock_scale global 2021-09-01 11:08:21 +01:00
npcm7xx.c hw/arm/boot: Drop nb_cpus field from arm_boot_info 2022-02-08 10:56:28 +00:00
npcm7xx_boards.c hw/arm: Use bit fields for NPCM7XX PWRON STRAPs 2022-04-21 11:37:05 +01:00
nrf51_soc.c arm: Remove system_clock_scale global 2021-09-01 11:08:21 +01:00
nseries.c machine: use QAPI struct for boot configuration 2022-05-12 12:29:43 +02:00
omap1.c exec/exec-all: Move 'qemu/log.h' include in units requiring it 2022-02-21 10:18:06 +01:00
omap2.c Do not include hw/boards.h if it's not really necessary 2021-05-02 17:24:51 +02:00
omap_sx1.c hw/arm: Use memory_region_init_rom() with read-only regions 2020-03-17 15:18:46 +01:00
orangepi.c hw/arm/boot: Drop nb_cpus field from arm_boot_info 2022-02-08 10:56:28 +00:00
palm.c Do not include exec/address-spaces.h if it's not really necessary 2021-05-02 17:24:51 +02:00
pxa2xx.c hw/i2c: add asynchronous send 2022-06-30 09:21:14 +02:00
pxa2xx_gpio.c Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
pxa2xx_pic.c target/arm: Replace sentinels with ARRAY_SIZE in cpregs.h 2022-05-05 09:35:50 +01:00
raspi.c hw/arm/boot: Drop nb_cpus field from arm_boot_info 2022-02-08 10:56:28 +00:00
realview.c hw/arm/realview: replace 'qemu_split_irq' with 'TYPE_SPLIT_IRQ' 2022-04-21 11:37:04 +01:00
sabrelite.c hw/arm/boot: Drop nb_cpus field from arm_boot_info 2022-02-08 10:56:28 +00:00
sbsa-ref.c hw/arm: add versioning to sbsa-ref machine DT 2022-05-09 11:47:54 +01:00
smmu-common.c dma: Let dma_memory_read/write() take MemTxAttrs argument 2021-12-30 17:16:32 +01:00
smmu-internal.h hw/arm/smmuv3: Fix SMMU_CMD_CFGI_STE_RANGE handling 2021-03-12 12:40:10 +00:00
smmuv3-internal.h hw/arm/smmuv3: Advertise support for SMMUv3.2-BBML2 2022-04-28 13:59:23 +01:00
smmuv3.c hw/arm/smmuv3: Advertise support for SMMUv3.2-BBML2 2022-04-28 13:59:23 +01:00
spitz.c hw/i2c: Rename i2c_set_slave_address() -> i2c_slave_set_address() 2021-07-08 14:15:01 -05:00
stellaris.c hw/arm/stellaris: replace 'qemu_split_irq' with 'TYPE_SPLIT_IRQ' 2022-04-21 11:37:04 +01:00
stm32f100_soc.c hw/arm/stm32f100: Wire up sysclk and refclk 2021-09-01 11:08:19 +01:00
stm32f205_soc.c hw/arm/stm32f205: Wire up sysclk and refclk 2021-09-01 11:08:19 +01:00
stm32f405_soc.c hw/arm: Don't include qemu-common.h unnecessarily 2021-12-15 10:35:26 +00:00
stm32vldiscovery.c arm: Remove system_clock_scale global 2021-09-01 11:08:21 +01:00
strongarm.c rtc: Move RTC function prototypes to their own header 2022-01-28 14:29:46 +00:00
strongarm.h hw/arm/collie: Create the RAM in the board 2019-10-22 17:44:01 +01:00
tosa.c hw/ssi: Rename SSI 'slave' as 'peripheral' 2020-12-10 12:15:03 -05:00
trace-events docs: fix references to docs/devel/tracing.rst 2021-06-02 06:51:09 +02:00
trace.h trace: switch position of headers to what Meson requires 2020-08-21 06:18:24 -04:00
versatilepb.c hw/arm/versatilepb hw/arm/vexpress: Replace drive_get_next() by drive_get() 2021-12-15 08:38:16 +01:00
vexpress.c hw/arm/boot: Drop nb_cpus field from arm_boot_info 2022-02-08 10:56:28 +00:00
virt-acpi-build.c hw/arm/virt: Drop superfluous checks against highmem 2022-01-20 11:47:53 +00:00
virt.c target/arm: Extend arm_pamax to more than aarch64 2022-06-27 11:18:17 +01:00
xilinx_zynq.c hw/arm/boot: Drop nb_cpus field from arm_boot_info 2022-02-08 10:56:28 +00:00
xlnx-versal-virt.c hw/core: Move the ARM sysbus-fdt to core 2022-04-29 10:48:26 +10:00
xlnx-versal.c hw/arm: versal: Connect the CRL 2022-04-21 11:37:03 +01:00
xlnx-zcu102.c hw/arm/xlnx-zcu102: Don't enable PSCI conduit when booting guest in EL3 2022-02-08 10:56:27 +00:00
xlnx-zynqmp.c xlnx-zynqmp: fix the irq mapping for the display port and its dma 2022-06-08 19:38:48 +01:00
z2.c hw/arm: Constify VMStateDescription 2021-05-02 17:24:50 +02:00