qemu-e2k/include
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
..
authz Prefer 'on' | 'off' over 'yes' | 'no' for bool options 2021-01-29 17:07:53 +00:00
block block/block-copy: block_copy(): add timeout_ns parameter 2022-06-29 10:56:12 +03:00
chardev Clean up ill-advised or unusual header guards 2022-05-11 16:50:01 +02:00
crypto crypto: Introduce akcipher crypto class 2022-05-26 11:41:47 +01:00
disas target/loongarch: Add disassembler 2022-06-06 18:09:03 +00:00
exec gdbstub: Adjust gdb_syscall_complete_cb declaration 2022-06-28 04:35:52 +05:30
fpu Clean up decorations and whitespace around header guards 2022-05-11 16:50:32 +02:00
hw hw/misc/aspeed: Add PECI controller 2022-06-30 09:21:14 +02:00
io io: add a QIOChannelNull equivalent to /dev/null 2022-06-22 18:11:21 +01:00
libdecnumber Replace config-time define HOST_WORDS_BIGENDIAN 2022-04-06 10:50:37 +02:00
migration migration: Remove load_state_old and minimum_version_id_old 2022-03-02 18:20:45 +00:00
monitor qmp: add filtering of statistics by name 2022-06-14 16:50:30 +02:00
net Replace config-time define HOST_WORDS_BIGENDIAN 2022-04-06 10:50:37 +02:00
qapi include: move qdict_{crumple,flatten} declarations 2022-04-21 17:03:51 +04:00
qemu trivial patches pull request 20220629 2022-06-30 04:49:40 +05:30
qom qom/object: Remove circular include dependency 2022-06-28 10:53:32 +02:00
scsi scsi: inline sg_io_sense_from_errno() into the callers. 2021-03-06 11:42:56 +01:00
semihosting semihosting: Create semihost_sys_poll_one 2022-06-28 04:41:37 +05:30
standard-headers linux-headers: Update to v5.18-rc6 2022-05-13 08:20:11 -06:00
sysemu block: get rid of blk->guest_block_size 2022-06-24 17:07:06 +02:00
tcg tcg: Add tcg_gen_mov_ptr 2022-06-02 08:09:46 -07:00
ui ui: Deliver refresh rate via QemuUIInfo 2022-06-14 10:34:37 +02:00
user Clean up decorations and whitespace around header guards 2022-05-11 16:50:32 +02:00
elf.h elf: Add machine type value for LoongArch 2021-12-21 13:17:06 -08:00
glib-compat.h compiler.h: replace QEMU_NORETURN with G_NORETURN 2022-04-21 17:03:51 +04:00
qemu-io.h Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
qemu-main.h Simplify softmmu/main.c 2022-04-21 16:56:55 +04:00