qemu/include/hw/ppc/pnv_adu.h
Nicholas Piggin 24bd283bcc ppc/pnv: Implement ADU access to LPC space
One of the functions of the ADU is indirect memory access engines that
send and receive data via ADU registers.

This implements the ADU LPC memory access functionality sufficiently
for IBM proprietary firmware to access the UART and print characters
to the serial port as it does on real hardware.

This requires a linkage between adu and lpc, which allows adu to
perform memory access in the lpc space.

Reviewed-by: Cédric Le Goater <clg@kaod.org>
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
2024-07-26 09:21:06 +10:00

33 lines
633 B
C

/*
* QEMU PowerPC PowerNV Emulation of some ADU behaviour
*
* Copyright (c) 2024, IBM Corporation.
*
* SPDX-License-Identifier: GPL-2.0-or-later
*/
#ifndef PPC_PNV_ADU_H
#define PPC_PNV_ADU_H
#include "hw/ppc/pnv.h"
#include "hw/ppc/pnv_lpc.h"
#include "hw/qdev-core.h"
#define TYPE_PNV_ADU "pnv-adu"
OBJECT_DECLARE_TYPE(PnvADU, PnvADUClass, PNV_ADU)
struct PnvADU {
DeviceState xd;
/* LPCMC (LPC Master Controller) access engine */
PnvLpcController *lpc;
uint64_t lpc_base_reg;
uint64_t lpc_cmd_reg;
uint64_t lpc_data_reg;
MemoryRegion xscom_regs;
};
#endif /* PPC_PNV_ADU_H */