]> Git Repo - qemu.git/blame - include/hw/pci-host/designware.h
works with less than base ISA qemu-system-riscv32 -M virt -bios none -kernel output...
[qemu.git] / include / hw / pci-host / designware.h
CommitLineData
d64e5eab
AS
1/*
2 * Copyright (c) 2017, Impinj, Inc.
3 *
4 * Designware PCIe IP block emulation
5 *
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
61f3c91a 9 * version 2.1 of the License, or (at your option) any later version.
d64e5eab
AS
10 *
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
15 *
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, see
18 * <http://www.gnu.org/licenses/>.
19 */
20
21#ifndef DESIGNWARE_H
22#define DESIGNWARE_H
23
d64e5eab 24#include "hw/sysbus.h"
d64e5eab 25#include "hw/pci/pci_bridge.h"
db1015e9 26#include "qom/object.h"
d64e5eab
AS
27
28#define TYPE_DESIGNWARE_PCIE_HOST "designware-pcie-host"
8063396b 29OBJECT_DECLARE_SIMPLE_TYPE(DesignwarePCIEHost, DESIGNWARE_PCIE_HOST)
d64e5eab
AS
30
31#define TYPE_DESIGNWARE_PCIE_ROOT "designware-pcie-root"
8063396b 32OBJECT_DECLARE_SIMPLE_TYPE(DesignwarePCIERoot, DESIGNWARE_PCIE_ROOT)
d64e5eab
AS
33
34struct DesignwarePCIERoot;
d64e5eab
AS
35
36typedef struct DesignwarePCIEViewport {
37 DesignwarePCIERoot *root;
38
39 MemoryRegion cfg;
40 MemoryRegion mem;
41
42 uint64_t base;
43 uint64_t target;
44 uint32_t limit;
45 uint32_t cr[2];
46
47 bool inbound;
48} DesignwarePCIEViewport;
49
50typedef struct DesignwarePCIEMSIBank {
51 uint32_t enable;
52 uint32_t mask;
53 uint32_t status;
54} DesignwarePCIEMSIBank;
55
56typedef struct DesignwarePCIEMSI {
57 uint64_t base;
58 MemoryRegion iomem;
59
60#define DESIGNWARE_PCIE_NUM_MSI_BANKS 1
61
62 DesignwarePCIEMSIBank intr[DESIGNWARE_PCIE_NUM_MSI_BANKS];
63} DesignwarePCIEMSI;
64
65struct DesignwarePCIERoot {
66 PCIBridge parent_obj;
67
68 uint32_t atu_viewport;
69
70#define DESIGNWARE_PCIE_VIEWPORT_OUTBOUND 0
71#define DESIGNWARE_PCIE_VIEWPORT_INBOUND 1
72#define DESIGNWARE_PCIE_NUM_VIEWPORTS 4
73
74 DesignwarePCIEViewport viewports[2][DESIGNWARE_PCIE_NUM_VIEWPORTS];
75 DesignwarePCIEMSI msi;
76};
77
db1015e9 78struct DesignwarePCIEHost {
d64e5eab
AS
79 PCIHostState parent_obj;
80
81 DesignwarePCIERoot root;
82
83 struct {
84 AddressSpace address_space;
85 MemoryRegion address_space_root;
86
87 MemoryRegion memory;
88 MemoryRegion io;
89
90 qemu_irq irqs[4];
91 } pci;
92
93 MemoryRegion mmio;
db1015e9 94};
d64e5eab 95
6834c3f4 96#endif /* DESIGNWARE_H */
This page took 0.261401 seconds and 5 git commands to generate.