/* * Jailhouse, a Linux-based partitioning hypervisor * * Configuration for uart-demo inmate on AM57XX-EVM: * * Copyright (c) Texas Instruments, Inc. * * Authors: * Vitaly Andrianiov * * This work is licensed under the terms of the GNU GPL, version 2. See * the COPYING file in the top-level directory. */ #include #include #define ARRAY_SIZE(a) sizeof(a) / sizeof(a[0]) struct { struct jailhouse_cell_desc cell; __u64 cpus[1]; struct jailhouse_memory mem_regions[16]; struct jailhouse_irqchip irqchips[2]; } __attribute__((packed)) config = { .cell = { .signature = JAILHOUSE_CELL_DESC_SIGNATURE, .revision = JAILHOUSE_CONFIG_REVISION, .name = "AM5728-RTOS-SHMEM", .flags = JAILHOUSE_CELL_PASSIVE_COMMREG, .num_irqchips = ARRAY_SIZE(config.irqchips), .cpu_set_size = sizeof(config.cpus), .num_memory_regions = ARRAY_SIZE(config.mem_regions), }, .cpus = { 0x2, }, .mem_regions = { /* GPMC */ { .phys_start = 0x08000000, .virt_start = 0x08000000, .size = 0x40000, /* 256 KiB */ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_IO | JAILHOUSE_MEM_ROOTSHARED, }, /* SYS EDMA TPCC */ { .phys_start = 0x43300000, .virt_start = 0x43300000, .size = 0x100000, /* 1 MB */ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_IO | JAILHOUSE_MEM_ROOTSHARED, }, /* UART... */ { .phys_start = 0x48020000, .virt_start = 0x48020000, .size = 0x1000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_IO | JAILHOUSE_MEM_ROOTSHARED, }, /* GPIO, I2C */ { .phys_start = 0x48050000, .virt_start = 0x48050000, .size = 0x40000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_IO | JAILHOUSE_MEM_ROOTSHARED, }, /* McSPI1 */ { .phys_start = 0x48098000, .virt_start = 0x48098000, .size = 0x1000, /* 4 KiB */ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_IO | JAILHOUSE_MEM_ROOTSHARED, }, /* McSPI2 */ { .phys_start = 0x4809A000, .virt_start = 0x4809A000, .size = 0x1000, /* 4 KiB */ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_IO | JAILHOUSE_MEM_ROOTSHARED, }, /* McSPI3 */ { .phys_start = 0x480B8000, .virt_start = 0x480B8000, .size = 0x1000, /* 4 KiB */ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_IO | JAILHOUSE_MEM_ROOTSHARED, }, /* McSPI4 */ { .phys_start = 0x480BA000, .virt_start = 0x480BA000, .size = 0x1000, /* 4 KiB */ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_IO | JAILHOUSE_MEM_ROOTSHARED, }, /* MMC1 */ { .phys_start = 0x4809C000, .virt_start = 0x4809C000, .size = 0x2000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_IO | JAILHOUSE_MEM_ROOTSHARED, }, /* L4_CFG */ { .phys_start = 0x4a000000, .virt_start = 0x4a000000, .size = 0xE10000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_IO | JAILHOUSE_MEM_ROOTSHARED, }, /* GPIO1 */ { .phys_start = 0x4ae10000, .virt_start = 0x4ae10000, .size = 0x40000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_IO | JAILHOUSE_MEM_ROOTSHARED, }, /* PRUSS */ { .phys_start = 0x4b200000, .virt_start = 0x4b200000, .size = 0x100000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_IO | JAILHOUSE_MEM_ROOTSHARED, }, /* GPMC Config registers */ { .phys_start = 0x50000000, .virt_start = 0x50000000, .size = 0x1000000, /* 16 MiB */ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_IO | JAILHOUSE_MEM_ROOTSHARED, }, /* RAM loader */ { .phys_start = 0xad000000, .virt_start = 0x0, .size = 0x10000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_LOADABLE, }, /* RAM RTOS 224MB*/ { .phys_start = 0xa0000000, .virt_start = 0x80000000, .size = 0xd000000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_LOADABLE, }, /* communication region */ { .phys_start = 0xAEF00000, .virt_start = 0xAEF00000, .size = 0x00100000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_IO | JAILHOUSE_MEM_ROOTSHARED, }, }, .irqchips = { /* GIC */ { .address = 0x48211000, .pin_base = 32, .pin_bitmap = { 0x20000000, /* GPIO1_IRQ_1: 29 */ 0, 0x4, /* SPI2: 66 */ 0 }, }, /* GIC 2 */ { .address = 0x48211000, .pin_base = 160, .pin_bitmap = { 0x000003c0, /* PRU interrupts: 134 135 136 137 */ }, }, } };