xref: /openbmc/qemu/include/hw/pci-host/ls7a.h (revision 63731c346f071a77e1bb1789bef1ac9d592b6d4f)
10f4fcf18SXiaojuan Yang /* SPDX-License-Identifier: GPL-2.0-or-later */
20f4fcf18SXiaojuan Yang /*
30f4fcf18SXiaojuan Yang  * QEMU LoongArch CPU
40f4fcf18SXiaojuan Yang  *
50f4fcf18SXiaojuan Yang  * Copyright (c) 2021 Loongson Technology Corporation Limited
60f4fcf18SXiaojuan Yang  */
70f4fcf18SXiaojuan Yang 
80f4fcf18SXiaojuan Yang #ifndef HW_LS7A_H
90f4fcf18SXiaojuan Yang #define HW_LS7A_H
100f4fcf18SXiaojuan Yang 
110f4fcf18SXiaojuan Yang #include "hw/pci-host/pam.h"
120f4fcf18SXiaojuan Yang #include "qemu/units.h"
130f4fcf18SXiaojuan Yang #include "qemu/range.h"
140f4fcf18SXiaojuan Yang #include "qom/object.h"
150f4fcf18SXiaojuan Yang 
1674725231SXiaojuan Yang #define VIRT_PCI_MEM_BASE        0x40000000UL
1774725231SXiaojuan Yang #define VIRT_PCI_MEM_SIZE        0x40000000UL
1874725231SXiaojuan Yang #define VIRT_PCI_IO_OFFSET       0x4000
1974725231SXiaojuan Yang #define VIRT_PCI_CFG_BASE        0x20000000
2074725231SXiaojuan Yang #define VIRT_PCI_CFG_SIZE        0x08000000
2174725231SXiaojuan Yang #define VIRT_PCI_IO_BASE         0x18004000UL
2274725231SXiaojuan Yang #define VIRT_PCI_IO_SIZE         0xC000
23249ad85aSXiaojuan Yang 
2474725231SXiaojuan Yang #define VIRT_PCH_REG_BASE        0x10000000UL
2574725231SXiaojuan Yang #define VIRT_IOAPIC_REG_BASE     (VIRT_PCH_REG_BASE)
2674725231SXiaojuan Yang #define VIRT_PCH_MSI_ADDR_LOW    0x2FF00000UL
272904f50aSSong Gao #define VIRT_PCH_REG_SIZE        0x400
28572d45e5SSong Gao #define VIRT_PCH_MSI_SIZE        0x8
290f4fcf18SXiaojuan Yang 
300f4fcf18SXiaojuan Yang /*
31456eb81fSBibo Mao  * GSI_BASE is hard-coded with 64 in linux kernel, else kernel fails to boot
32456eb81fSBibo Mao  * 0  - 15  GSI for ISA devices even if there is no ISA devices
33456eb81fSBibo Mao  * 16 - 63  GSI for CPU devices such as timers/perf monitor etc
34456eb81fSBibo Mao  * 64 -     GSI for external devices
350f4fcf18SXiaojuan Yang  */
36f4d10ce8STianrui Zhao #define VIRT_PCH_PIC_IRQ_NUM     32
37456eb81fSBibo Mao #define VIRT_GSI_BASE            64
3874725231SXiaojuan Yang #define VIRT_DEVICE_IRQS         16
39*b3d4ef83SJason A. Donenfeld #define VIRT_UART_COUNT          4
40456eb81fSBibo Mao #define VIRT_UART_IRQ            (VIRT_GSI_BASE + 2)
4174725231SXiaojuan Yang #define VIRT_UART_BASE           0x1fe001e0
42*b3d4ef83SJason A. Donenfeld #define VIRT_UART_SIZE           0x100
43*b3d4ef83SJason A. Donenfeld #define VIRT_RTC_IRQ             (VIRT_GSI_BASE + 6)
4474725231SXiaojuan Yang #define VIRT_MISC_REG_BASE       (VIRT_PCH_REG_BASE + 0x00080000)
4574725231SXiaojuan Yang #define VIRT_RTC_REG_BASE        (VIRT_MISC_REG_BASE + 0x00050100)
4674725231SXiaojuan Yang #define VIRT_RTC_LEN             0x100
47*b3d4ef83SJason A. Donenfeld #define VIRT_SCI_IRQ             (VIRT_GSI_BASE + 7)
48a1f7d78eSXiaojuan Yang 
49a1f7d78eSXiaojuan Yang #define VIRT_PLATFORM_BUS_BASEADDRESS   0x16000000
50a1f7d78eSXiaojuan Yang #define VIRT_PLATFORM_BUS_SIZE          0x2000000
51a1f7d78eSXiaojuan Yang #define VIRT_PLATFORM_BUS_NUM_IRQS      2
52*b3d4ef83SJason A. Donenfeld #define VIRT_PLATFORM_BUS_IRQ           (VIRT_GSI_BASE + 8)
530f4fcf18SXiaojuan Yang #endif
54