]> rtime.felk.cvut.cz Git - jailhouse.git/blob - configs/jetson-tk1.c
README/configs: Improve Jetson TK1 documentation
[jailhouse.git] / configs / jetson-tk1.c
1 /*
2  * Jailhouse, a Linux-based partitioning hypervisor
3  *
4  * Test configuration for Jetson TK1 board
5  * (NVIDIA Tegra K1 quad-core Cortex-A15, 2G RAM)
6  *
7  * Copyright (c) Siemens AG, 2015
8  *
9  * Authors:
10  *  Jan Kiszka <jan.kiszka@siemens.com>
11  *
12  * This work is licensed under the terms of the GNU GPL, version 2.  See
13  * the COPYING file in the top-level directory.
14  *
15  * NOTE: Add "mem=1984M vmalloc=512M" to the kernel command line.
16  */
17
18 #include <linux/types.h>
19 #include <jailhouse/cell-config.h>
20
21 #define ARRAY_SIZE(a) sizeof(a) / sizeof(a[0])
22
23 struct {
24         struct jailhouse_system header;
25         __u64 cpus[1];
26         struct jailhouse_memory mem_regions[10];
27         struct jailhouse_irqchip irqchips[1];
28 } __attribute__((packed)) config = {
29         .header = {
30                 .hypervisor_memory = {
31                         .phys_start = 0xfc000000,
32                         .size = 0x4000000 - 0x100000, /* -1MB (PSCI) */
33                 },
34                 .debug_uart = {
35                         .phys_start = 0x70006000,
36                         .size = 0x1000,
37                         .flags = JAILHOUSE_MEM_IO,
38                 },
39                 .root_cell = {
40                         .name = "Jetson-TK1",
41
42                         .cpu_set_size = sizeof(config.cpus),
43                         .num_memory_regions = ARRAY_SIZE(config.mem_regions),
44                         .num_irqchips = 1,
45                 },
46         },
47
48         .cpus = {
49                 0xf,
50         },
51
52         .mem_regions = {
53                 /* PCIe */ {
54                         .phys_start = 0x01000000,
55                         .virt_start = 0x01000000,
56                         .size = 0x3f000000,
57                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
58                                 JAILHOUSE_MEM_IO,
59                 },
60                 /* HACK: Legacy Interrupt Controller */ {
61                         .phys_start = 0x60004000,
62                         .virt_start = 0x60004000,
63                         .size = 0x00001000,
64                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
65                                 JAILHOUSE_MEM_IO,
66                 },
67                 /* HACK: Clock and Reset Controller */ {
68                         .phys_start = 0x60006000,
69                         .virt_start = 0x60006000,
70                         .size = 0x00001000,
71                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
72                                 JAILHOUSE_MEM_IO,
73                 },
74                 /* I2C5/6, SPI */ {
75                         .phys_start = 0x7000d000,
76                         .virt_start = 0x7000d000,
77                         .size = 0x00001000,
78                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
79                                 JAILHOUSE_MEM_IO,
80                 },
81                 /* HACK: Memory Controller */ {
82                         .phys_start = 0x70019000,
83                         .virt_start = 0x70019000,
84                         .size = 0x00001000,
85                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
86                                 JAILHOUSE_MEM_IO,
87                 },
88                 /* MMC0/1 */ {
89                         .phys_start = 0x700b0000,
90                         .virt_start = 0x700b0000,
91                         .size = 0x00001000,
92                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
93                                 JAILHOUSE_MEM_IO,
94                 },
95                 /* RTC + PMC */ {
96                         .phys_start = 0x7000e000,
97                         .virt_start = 0x7000e000,
98                         .size = 0x00001000,
99                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
100                                 JAILHOUSE_MEM_IO,
101                 },
102                 /* USB */ {
103                         .phys_start = 0x7d004000,
104                         .virt_start = 0x7d004000,
105                         .size = 0x00008000,
106                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
107                                 JAILHOUSE_MEM_IO,
108                 },
109                 /* UART */ {
110                         .phys_start = 0x70006000,
111                         .virt_start = 0x70006000,
112                         .size = 0x1000,
113                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
114                                 JAILHOUSE_MEM_IO,
115                 },
116                 /* RAM */ {
117                         .phys_start = 0x80000000,
118                         .virt_start = 0x80000000,
119                         .size = 0x7c000000,
120                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
121                                 JAILHOUSE_MEM_EXECUTE,
122                 },
123         },
124         .irqchips = {
125                 /* GIC */ {
126                         .address = 0x50041000,
127                         .pin_bitmap = 0xffffffffffffffff,
128                 },
129         },
130 };