blob: 58ebd6dd0ff71bbd196549da72d8834233461fdb [file] [log] [blame]
/*
* QEMU PowerPC PowerNV Proxy PHB model
*
* Copyright (c) 2022, IBM Corporation.
*
* This code is licensed under the GPL version 2 or later. See the
* COPYING file in the top-level directory.
*/
#ifndef PCI_HOST_PNV_PHB_H
#define PCI_HOST_PNV_PHB_H
#include "hw/pci/pcie_host.h"
#include "hw/pci/pcie_port.h"
#include "qom/object.h"
typedef struct PnvChip PnvChip;
typedef struct PnvPhb4PecState PnvPhb4PecState;
struct PnvPHB {
PCIExpressHost parent_obj;
uint32_t chip_id;
uint32_t phb_id;
uint32_t version;
char bus_path[8];
PnvChip *chip;
PnvPhb4PecState *pec;
/* The PHB backend (PnvPHB3, PnvPHB4 ...) being used */
Object *backend;
};
#define TYPE_PNV_PHB "pnv-phb"
OBJECT_DECLARE_SIMPLE_TYPE(PnvPHB, PNV_PHB)
/*
* PHB PCIe Root port
*/
#define PNV_PHB3_DEVICE_ID 0x03dc
#define PNV_PHB4_DEVICE_ID 0x04c1
#define PNV_PHB5_DEVICE_ID 0x0652
typedef struct PnvPHBRootPort {
PCIESlot parent_obj;
uint32_t version;
} PnvPHBRootPort;
#define TYPE_PNV_PHB_ROOT_PORT "pnv-phb-root-port"
OBJECT_DECLARE_SIMPLE_TYPE(PnvPHBRootPort, PNV_PHB_ROOT_PORT)
#endif /* PCI_HOST_PNV_PHB_H */