1 /* SPDX-License-Identifier: BSD-2-Clause */
2 /*
3  * Copyright 2022-2023 NXP
4  *
5  * Brief   Qemu Virt platform configuration.
6  */
7 
8 #ifndef PLATFORM_CONFIG_H
9 #define PLATFORM_CONFIG_H
10 
11 #include <mm/generic_ram_layout.h>
12 
13 /* The stack pointer is always kept 16-byte aligned */
14 #define STACK_ALIGNMENT		16
15 
16 /* DRAM */
17 #ifndef DRAM_BASE
18 #define DRAM_BASE		0x80000000
19 #define DRAM_SIZE		0x10000000
20 #endif
21 
22 /* CLINT */
23 #ifndef CLINT_BASE
24 #define CLINT_BASE		0x02000000
25 #endif
26 
27 /* PLIC */
28 #ifndef PLIC_BASE
29 #define PLIC_BASE		0x0c000000
30 #define PLIC_REG_SIZE		0x1000
31 #define PLIC_NUM_SOURCES	0x7f
32 #endif
33 
34 /* UART */
35 #ifndef UART0_BASE
36 #define UART0_BASE		0x10000000
37 #endif
38 #define UART0_IRQ		0x0a
39 
40 /* RTC */
41 #ifndef RTC_BASE
42 #define RTC_BASE		0x101000
43 #endif
44 #define RTC_IRQ			0x0b
45 
46 /* VIRTIO MMIOs */
47 #define NUM_VIRTIO_MMIOS	8
48 
49 #ifndef VIRTIO_MMIO1
50 #define VIRTIO_MMIO1		0x10001000
51 #define VIRTIO_MMIO1_IRQ	0x01
52 #endif
53 
54 #ifndef VIRTIO_MMIO2
55 #define VIRTIO_MMIO2		0x10002000
56 #define VIRTIO_MMIO2_IRQ	0x02
57 #endif
58 
59 #ifndef VIRTIO_MMIO3
60 #define VIRTIO_MMIO3		0x10003000
61 #define VIRTIO_MMIO3_IRQ	0x03
62 #endif
63 
64 #ifndef VIRTIO_MMIO4
65 #define VIRTIO_MMIO4		0x10004000
66 #define VIRTIO_MMIO4_IRQ	0x04
67 #endif
68 
69 #ifndef VIRTIO_MMIO5
70 #define VIRTIO_MMIO5		0x10005000
71 #define VIRTIO_MMIO5_IRQ	0x05
72 #endif
73 
74 #ifndef VIRTIO_MMIO6
75 #define VIRTIO_MMIO6		0x10006000
76 #define VIRTIO_MMIO6_IRQ	0x06
77 #endif
78 
79 #ifndef VIRTIO_MMIO7
80 #define VIRTIO_MMIO7		0x10007000
81 #define VIRTIO_MMIO7_IRQ	0x07
82 #endif
83 
84 #ifndef VIRTIO_MMIO8
85 #define VIRTIO_MMIO8		0x10008000
86 #define VIRTIO_MMIO8_IRQ	0x08
87 #endif
88 
89 #ifdef CFG_RISCV_MTIME_RATE
90 #define RISCV_MTIME_RATE CFG_RISCV_MTIME_RATE
91 #else
92 #define RISCV_MTIME_RATE 1000000
93 #endif
94 
95 #endif /*PLATFORM_CONFIG_H*/
96