Add support for TI AM625 Starter Kit platform along with eMMC and non-eMMC
Linux inmate cell configurations.

Signed-off-by: Matt Ranostay <mranos...@ti.com>
---
 configs/arm64/dts/inmate-k3-am625-sk-emmc.dts |  28 ++
 configs/arm64/dts/inmate-k3-am625-sk.dts      | 163 +++++++++
 configs/arm64/k3-am625-inmate-demo.c          |  72 ++++
 configs/arm64/k3-am625-sk-linux-demo.c        | 220 ++++++++++++
 configs/arm64/k3-am625-sk.c                   | 317 ++++++++++++++++++
 5 files changed, 800 insertions(+)
 create mode 100644 configs/arm64/dts/inmate-k3-am625-sk-emmc.dts
 create mode 100644 configs/arm64/dts/inmate-k3-am625-sk.dts
 create mode 100644 configs/arm64/k3-am625-inmate-demo.c
 create mode 100644 configs/arm64/k3-am625-sk-linux-demo.c
 create mode 100644 configs/arm64/k3-am625-sk.c

diff --git a/configs/arm64/dts/inmate-k3-am625-sk-emmc.dts 
b/configs/arm64/dts/inmate-k3-am625-sk-emmc.dts
new file mode 100644
index 00000000..2fb07d52
--- /dev/null
+++ b/configs/arm64/dts/inmate-k3-am625-sk-emmc.dts
@@ -0,0 +1,28 @@
+/dts-v1/;
+
+#include "inmate-k3-am625-sk.dts"
+
+/ {
+       sdhci0: mmc@fa10000 {
+               compatible = "ti,am62-sdhci";
+               reg = <0x0 0xfa10000 0x0 0x260>, <0x0 0xfa18000 0x0 0x134>;
+               power-domains = <&k3_pds 57 1>;
+               clocks = <&k3_clks 57 5>, <&k3_clks 57 6>;
+               clock-names = "clk_ahb", "clk_xin";
+               interrupts = <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>;
+               mmc-ddr-1_8v;
+               mmc-hs200-1_8v;
+               ti,otap-del-sel-legacy = <0x0>;
+               ti,otap-del-sel-mmc-hs = <0x0>;
+               ti,otap-del-sel-ddr52 = <0x9>;
+               ti,otap-del-sel-hs200 = <0x6>;
+       };
+};
+
+&sdhci0 {
+       /* eMMC */
+       non-removable;
+       ti,driver-strength-ohm = <50>;
+       bus-width = <8>;
+       disable-wp;
+};
diff --git a/configs/arm64/dts/inmate-k3-am625-sk.dts 
b/configs/arm64/dts/inmate-k3-am625-sk.dts
new file mode 100644
index 00000000..c1455073
--- /dev/null
+++ b/configs/arm64/dts/inmate-k3-am625-sk.dts
@@ -0,0 +1,163 @@
+/dts-v1/;
+
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+
+/ {
+       model = "Texas Instruments AM625 Inmate Model";
+       compatible = "ti,am625-evm", "ti,am625";
+       interrupt-parent = <&gic500>;
+       #address-cells = <2>;
+       #size-cells = <2>;
+
+       aliases {
+               serial1 = &main_uart1;
+       };
+
+       chosen {
+               stdout-path = "serial1:115200n8";
+       };
+
+       memory@e0000000 {
+               device_type = "memory";
+               reg = <0x0 0xe0000000 0x0 0x1fff0000>;
+       };
+
+       hypervisor {
+               compatible = "jailhouse,cell";
+       };
+
+       psci: psci {
+               compatible = "arm,psci-1.0";
+               method = "smc";
+       };
+
+       cpus: cpus {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               cpu1: cpu@1 {
+                       compatible = "arm,cortex-a53";
+                       reg = <0x001>;
+                       device_type = "cpu";
+                       enable-method = "psci";
+               };
+
+               cpu2: cpu@2 {
+                       compatible = "arm,cortex-a53";
+                       reg = <0x002>;
+                       device_type = "cpu";
+                       enable-method = "psci";
+               };
+
+               cpu3: cpu@3 {
+                       compatible = "arm,cortex-a53";
+                       reg = <0x003>;
+                       device_type = "cpu";
+                       enable-method = "psci";
+               };
+
+       };
+
+       pmu: pmu {
+               compatible = "arm,armv8-pmuv3";
+               /* Recommendation from GIC500 TRM Table A.3 */
+               interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
+       };
+
+       a53_timer0: timer-cl0-cpu0 {
+               compatible = "arm,armv8-timer";
+               interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW>, /* cntpsirq */
+                            <GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>, /* cntpnsirq */
+                            <GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>, /* cntvirq */
+                            <GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>; /* cnthpirq */
+       };
+
+       cbass_main: interconnect@f0000 {
+               compatible = "simple-bus";
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges;
+
+               gic500: interrupt-controller@1800000 {
+                       compatible = "arm,gic-v3";
+                       #interrupt-cells = <3>;
+                       interrupt-controller;
+                       reg = <0x00 0x01800000 0x00 0x10000>,   /* GICD */
+                             <0x00 0x01880000 0x00 0xC0000>;   /* GICR */
+                       interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
+               };
+
+               main_uart1: serial@2810000 {
+                       compatible = "ti,am64-uart", "ti,am654-uart";
+                       reg = <0x00 0x02810000 0x00 0x100>;
+                       interrupts = <GIC_SPI 179 IRQ_TYPE_LEVEL_HIGH>;
+                       power-domains = <&k3_pds 152 1>;
+                       current-speed = <115200>;
+                       clock-frequency = <48000000>;
+               };
+
+               pci@76000000 {
+                       compatible = "pci-host-ecam-generic";
+                       device_type = "pci";
+                       bus-range = <0 0>;
+                       #address-cells = <3>;
+                       #size-cells = <2>;
+                       #interrupt-cells = <1>;
+                       interrupt-map-mask = <0 0 0 7>;
+                       interrupt-map =
+                       <0 0 0 1 &gic500 GIC_SPI 157 IRQ_TYPE_EDGE_RISING>,
+                       <0 0 0 2 &gic500 GIC_SPI 158 IRQ_TYPE_EDGE_RISING>,
+                       <0 0 0 3 &gic500 GIC_SPI 159 IRQ_TYPE_EDGE_RISING>,
+                       <0 0 0 4 &gic500 GIC_SPI 160 IRQ_TYPE_EDGE_RISING>;
+                       reg = <0x0 0x76000000 0x0 0x100000>;
+                       ranges =
+                       <0x02000000 0x00 0x10000000 0x0 0x10000000 0x00 
0x20000>;
+               };
+
+               dmss: bus@48000000 {
+                       compatible = "simple-mfd";
+                       #address-cells = <2>;
+                       #size-cells = <2>;
+                       dma-ranges;
+                       ranges = <0x00 0x48000000 0x00 0x48000000 0x00 
0x06400000>;
+
+                       ti,sci-dev-id = <25>;
+
+                       secure_proxy_main: mailbox@4d000000 {
+                               compatible = "ti,am654-secure-proxy";
+                               #mbox-cells = <1>;
+                               reg-names = "target_data", "rt", "scfg";
+                               reg = <0x00 0x4d000000 0x00 0x80000>,
+                                     <0x00 0x4a600000 0x00 0x80000>,
+                                     <0x00 0x4a400000 0x00 0x80000>;
+                               interrupt-names = "rx_014";
+                               interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
+                       };
+               };
+
+               dmsc: system-controller@44043000 {
+                       compatible = "ti,k2g-sci";
+                       ti,host-id = <13>;
+                       mbox-names = "rx", "tx";
+                       mboxes = <&secure_proxy_main 14>,
+                                <&secure_proxy_main 15>;
+                       reg-names = "debug_messages";
+                       reg = <0x00 0x44043000 0x00 0xfe0>;
+
+                       k3_pds: power-controller {
+                               compatible = "ti,sci-pm-domain";
+                               #power-domain-cells = <2>;
+                       };
+
+                       k3_clks: clock-controller {
+                               compatible = "ti,k2g-sci-clk";
+                               #clock-cells = <2>;
+                       };
+
+                       k3_reset: reset-controller {
+                               compatible = "ti,sci-reset";
+                               #reset-cells = <2>;
+                       };
+               };
+       };
+};
diff --git a/configs/arm64/k3-am625-inmate-demo.c 
b/configs/arm64/k3-am625-inmate-demo.c
new file mode 100644
index 00000000..65cf4a7f
--- /dev/null
+++ b/configs/arm64/k3-am625-inmate-demo.c
@@ -0,0 +1,72 @@
+/*
+ * Jailhouse, a Linux-based partitioning hypervisor
+ *
+ * Configuration for demo inmate on K3 based platforms.
+ * 1CPU, 64K RAM, 1 serial port(MCU UART 0).
+ *
+ * Copyright (c) 2019, 2022 Texas Instruments Incorporated - http://www.ti.com/
+ *
+ * Authors:
+ *  Nikhil Devshatwar <nikhil...@ti.com>
+ *  Lokesh Vutla <lokeshvu...@ti.com>
+ *  Matt Ranostay <mranos...@ti.com>
+ *
+ * This work is licensed under the terms of the GNU GPL, version 2.  See
+ * the COPYING file in the top-level directory.
+ */
+
+#include <jailhouse/types.h>
+#include <jailhouse/cell-config.h>
+
+struct {
+       struct jailhouse_cell_desc cell;
+       __u64 cpus[1];
+       struct jailhouse_memory mem_regions[3];
+} __attribute__((packed)) config = {
+       .cell = {
+               .signature = JAILHOUSE_CELL_DESC_SIGNATURE,
+               .revision = JAILHOUSE_CONFIG_REVISION,
+               .name = "inmate-demo",
+               .flags = JAILHOUSE_CELL_PASSIVE_COMMREG,
+
+               .cpu_set_size = sizeof(config.cpus),
+               .num_memory_regions = ARRAY_SIZE(config.mem_regions),
+               .num_irqchips = 0,
+               .num_pci_devices = 0,
+
+               .console = {
+                       .address = 0x02810000,
+                       .divider = 0x1b,
+                       .type = JAILHOUSE_CON_TYPE_8250,
+                       .flags = JAILHOUSE_CON_ACCESS_MMIO |
+                                JAILHOUSE_CON_REGDIST_4,
+               },
+       },
+
+       .cpus = {
+               0x4,
+       },
+
+       .mem_regions = {
+               /* MCU UART0 */ {
+                       .phys_start = 0x02810000,
+                       .virt_start = 0x02810000,
+                       .size = 0x10000,
+                       .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
+                               JAILHOUSE_MEM_IO,
+               },
+               /* RAM */ {
+                       .phys_start = 0xe0000000,
+                       .virt_start = 0,
+                       .size = 0x00010000,
+                       .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
+                               JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_LOADABLE,
+               },
+               /* communication region */ {
+                       .virt_start = 0x80000000,
+                       .size = 0x00001000,
+                       .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
+                               JAILHOUSE_MEM_COMM_REGION,
+               },
+       }
+};
diff --git a/configs/arm64/k3-am625-sk-linux-demo.c 
b/configs/arm64/k3-am625-sk-linux-demo.c
new file mode 100644
index 00000000..81f4e880
--- /dev/null
+++ b/configs/arm64/k3-am625-sk-linux-demo.c
@@ -0,0 +1,220 @@
+/*
+ * Jailhouse, a Linux-based partitioning hypervisor
+ *
+ * Configuration for Linux inmate on AM625 based platforms
+ * 3 CPUs, 512MB RAM, 1 serial port (MAIN UART1)
+ *
+ * Copyright (c) 2022 Texas Instruments Incorporated - http://www.ti.com/
+ *
+ * Authors:
+ *  Matt Ranostay <mranos...@ti.com>
+ *
+ * This work is licensed under the terms of the GNU GPL, version 2.  See
+ * the COPYING file in the top-level directory.
+ */
+
+#include <jailhouse/types.h>
+#include <jailhouse/cell-config.h>
+
+#ifndef CONFIG_INMATE_BASE
+#define CONFIG_INMATE_BASE 0x0000000
+#endif
+
+struct {
+       struct jailhouse_cell_desc cell;
+       __u64 cpus[1];
+       struct jailhouse_memory mem_regions[18];
+       struct jailhouse_irqchip irqchips[3];
+       struct jailhouse_pci_device pci_devices[2];
+} __attribute__((packed)) config = {
+       .cell = {
+               .signature = JAILHOUSE_CELL_DESC_SIGNATURE,
+               .revision = JAILHOUSE_CONFIG_REVISION,
+               .name = "k3-am625-sk-linux-demo",
+               .flags = JAILHOUSE_CELL_PASSIVE_COMMREG,
+
+               .cpu_set_size = sizeof(config.cpus),
+               .num_memory_regions = ARRAY_SIZE(config.mem_regions),
+               .num_irqchips = ARRAY_SIZE(config.irqchips),
+               .num_pci_devices = ARRAY_SIZE(config.pci_devices),
+               .cpu_reset_address = 0x0,
+               .vpci_irq_base = 189 - 32,
+
+               .console = {
+                       .address = 0x02810000,
+                       .divider = 0x1b,
+                       .type = JAILHOUSE_CON_TYPE_8250,
+                       .flags = JAILHOUSE_CON_ACCESS_MMIO |
+                                JAILHOUSE_CON_REGDIST_4,
+               },
+       },
+
+       .cpus = {
+               0xe,
+       },
+
+       .mem_regions = {
+               /* IVSHMEM shared memory regions for 00:00.0 (demo) */
+               {
+                       .phys_start = 0xdfa00000,
+                       .virt_start = 0xdfa00000,
+                       .size = 0x10000,
+                       .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_ROOTSHARED,
+               },
+               {
+                       .phys_start = 0xdfa10000,
+                       .virt_start = 0xdfa10000,
+                       .size = 0x10000,
+                       .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
+                               JAILHOUSE_MEM_ROOTSHARED,
+               },
+               /* Peer 0 */ {
+                       .phys_start = 0xdfa20000,
+                       .virt_start = 0xdfa20000,
+                       .size = 0x10000,
+                       .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_ROOTSHARED,
+               },
+               /* Peer 1 */ {
+                       .phys_start = 0xdfa30000,
+                       .virt_start = 0xdfa30000,
+                       .size = 0x10000,
+                       .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_ROOTSHARED,
+               },
+               /* Peer 2 */ {
+                       .phys_start = 0xdfa40000,
+                       .virt_start = 0xdfa40000,
+                       .size = 0x10000,
+                       .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
+                               JAILHOUSE_MEM_ROOTSHARED,
+               },
+               /* IVSHMEM shared memory region for 00:01.0 */
+               JAILHOUSE_SHMEM_NET_REGIONS(0xdfb00000, 1),
+               /* RAM load */ {
+                       .phys_start = 0xffff0000,
+                       .virt_start = 0x0,
+                       .size = 0x10000,        /* 64KB */
+                       .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
+                               JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA |
+                               JAILHOUSE_MEM_LOADABLE,
+               },
+               /* RAM load */ {
+                       .phys_start = 0xe0000000,
+                       .virt_start = 0xe0000000,
+                       .size = 0x1fff0000,     /* (512MB - 64KB) */
+                       .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
+                               JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA |
+                               JAILHOUSE_MEM_LOADABLE,
+               },
+               /* MCU UART0 */ {
+                       .phys_start = 0x02810000,
+                       .virt_start = 0x02810000,
+                       .size = 0x10000,
+                       .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
+                               JAILHOUSE_MEM_IO,
+               },
+#ifdef CONFIG_ENABLE_AM625_INMATE_CELL_EMMC
+               /* sdhci0 */ {
+                       .phys_start = 0x0fa10000,
+                       .virt_start = 0x0fa10000,
+                       .size = 0x1000,
+                       .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
+                               JAILHOUSE_MEM_IO,
+               },
+               /* sdhci0 */ {
+                       .phys_start = 0x0fa18000,
+                       .virt_start = 0x0fa18000,
+                       .size = 0x1000,
+                       .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
+                               JAILHOUSE_MEM_IO,
+               },
+#endif
+               /* main sproxy target_data host_id=A53_3 */ {
+                       .phys_start = 0x4d00e000,
+                       .virt_start = 0x4d00e000,
+                       .size = 0x3000,
+                       .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
+                               JAILHOUSE_MEM_IO,
+               },
+               /* main sproxy rt host_id=A53_3 */ {
+                       .phys_start = 0x4a60e000,
+                       .virt_start = 0x4a60e000,
+                       .size = 0x3000,
+                       .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
+                               JAILHOUSE_MEM_IO,
+               },
+               /* main sproxy scfg host_id=A53_3 */ {
+                       .phys_start = 0x4a40e000,
+                       .virt_start = 0x4a40e000,
+                       .size = 0x3000,
+                       .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
+                               JAILHOUSE_MEM_IO,
+               },
+               /* communication region */ {
+                       .virt_start = 0x80000000,
+                       .size = 0x1000,
+                       .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
+                               JAILHOUSE_MEM_COMM_REGION,
+               },
+       },
+
+       .irqchips = {
+               /*
+                * offset = (SPI_NR + 32 - base) / 32
+                * bit = (SPI_NR + 32 - base) % 32
+                */
+               {
+                       .address = 0x01800000,
+                       .pin_base = 32,
+                       .pin_bitmap = {
+                       0,
+                       /* sproxy rx_014 */
+                       1 << (67 - 64),
+                       0, 0
+                       },
+               },
+               {
+                       .address = 0x01800000,
+                       .pin_base = 160,
+                       .pin_bitmap = {
+#ifdef CONFIG_ENABLE_AM625_INMATE_CELL_EMMC
+                       /* sdhc */
+                       1 << (165 - 160) |
+#endif
+                       /* vpci */
+                       1 << (189 - 160) |
+                       1 << (190 - 160),
+                       /* uart */
+                       1 << (211 - 192),
+                       0, 0,
+                       },
+               },
+               {
+                       .address = 0x01800000,
+                       .pin_base = 544,
+                       .pin_bitmap = {
+                       0, 0, 0, 0,
+                       },
+               },
+       },
+
+       .pci_devices = {
+               /* 00:00.0 */ {
+                       .type = JAILHOUSE_PCI_TYPE_IVSHMEM,
+                       .bdf = 0 << 3,
+                       .bar_mask = JAILHOUSE_IVSHMEM_BAR_MASK_INTX_64K,
+                       .shmem_regions_start = 0,
+                       .shmem_dev_id = 2,
+                       .shmem_peers = 3,
+                       .shmem_protocol = JAILHOUSE_SHMEM_PROTO_UNDEFINED,
+               },
+               /* 00:01.0 */ {
+                       .type = JAILHOUSE_PCI_TYPE_IVSHMEM,
+                       .bdf = 1 << 3,
+                       .bar_mask = JAILHOUSE_IVSHMEM_BAR_MASK_INTX_64K,
+                       .shmem_regions_start = 5,
+                       .shmem_dev_id = 1,
+                       .shmem_peers = 2,
+                       .shmem_protocol = JAILHOUSE_SHMEM_PROTO_VETH,
+               },
+       },
+};
diff --git a/configs/arm64/k3-am625-sk.c b/configs/arm64/k3-am625-sk.c
new file mode 100644
index 00000000..2e5c3aef
--- /dev/null
+++ b/configs/arm64/k3-am625-sk.c
@@ -0,0 +1,317 @@
+/*
+ * Jailhouse, a Linux-based partitioning hypervisor
+ *
+ * Copyright (c) 2022 Texas Instruments Incorporated - http://www.ti.com/
+ *
+ * Configuration for K3 based AM625 EVM
+ *
+ * Authors:
+ *  Matt Ranostay <mranos...@ti.com>
+ *
+ * This work is licensed under the terms of the GNU GPL, version 2.  See
+ * the COPYING file in the top-level directory.
+ */
+
+#include <jailhouse/types.h>
+#include <jailhouse/cell-config.h>
+
+struct {
+       struct jailhouse_system header;
+       __u64 cpus[1];
+       struct jailhouse_memory mem_regions[31];
+       struct jailhouse_irqchip irqchips[5];
+       struct jailhouse_pci_device pci_devices[2];
+} __attribute__((packed)) config = {
+       .header = {
+               .signature = JAILHOUSE_SYSTEM_SIGNATURE,
+               .revision = JAILHOUSE_CONFIG_REVISION,
+               .flags = JAILHOUSE_SYS_VIRTUAL_DEBUG_CONSOLE,
+               .hypervisor_memory = {
+                       .phys_start = 0xdfc00000,
+                       .size = 0x400000,
+               },
+               .debug_console = {
+                       .address = 0x02800000,
+                       .size = 0x1000,
+                       .type = JAILHOUSE_CON_TYPE_8250,
+                       .flags = JAILHOUSE_CON_ACCESS_MMIO |
+                                JAILHOUSE_CON_REGDIST_4,
+               },
+               .platform_info = {
+                       .pci_mmconfig_base = 0x76000000,
+                       .pci_mmconfig_end_bus = 0,
+                       .pci_is_virtual = 1,
+                       .pci_domain = 1,
+                       .arm = {
+                               .gic_version = 3,
+                               .gicd_base = 0x01800000,
+                               .gicr_base = 0x01880000,
+                               .maintenance_irq = 25,
+                       },
+               },
+               .root_cell = {
+                       .name = "k3-am625-sk",
+
+                       .cpu_set_size = sizeof(config.cpus),
+                       .num_memory_regions = ARRAY_SIZE(config.mem_regions),
+                       .num_irqchips = ARRAY_SIZE(config.irqchips),
+                       .num_pci_devices = ARRAY_SIZE(config.pci_devices),
+                       .vpci_irq_base = 180 - 32,
+               },
+       },
+
+       .cpus = {
+               0xf,
+       },
+
+       .mem_regions = {
+               /* IVSHMEM shared memory regions for 00:00.0 (demo) */
+               {
+                       .phys_start = 0xdfa00000,
+                       .virt_start = 0xdfa00000,
+                       .size = 0x10000,
+                       .flags = JAILHOUSE_MEM_READ,
+               },
+               {
+                       .phys_start = 0xdfa10000,
+                       .virt_start = 0xdfa10000,
+                       .size = 0x10000,
+                       .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
+               },
+               /* Peer 0 */ {
+                       .phys_start = 0xdfa20000,
+                       .virt_start = 0xdfa20000,
+                       .size = 0x10000,
+                       .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
+               },
+               /* Peer 1 */ {
+                       .phys_start = 0xdfa30000,
+                       .virt_start = 0xdfa30000,
+                       .size = 0x10000,
+                       .flags = JAILHOUSE_MEM_READ,
+               },
+               /* Peer 2 */ {
+                       .phys_start = 0xdfa40000,
+                       .virt_start = 0xdfa40000,
+                       .size = 0x10000,
+                       .flags = JAILHOUSE_MEM_READ,
+               },
+               /* IVSHMEM shared memory region for 00:01.0 */
+               JAILHOUSE_SHMEM_NET_REGIONS(0xdfb00000, 0),
+               {
+                       .phys_start = 0x01810000,
+                       .virt_start = 0x01810000,
+                       .size = 0x00070000,
+                       .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
+                               JAILHOUSE_MEM_IO,
+               },
+               {
+                       .phys_start = 0x018a0000,
+                       .virt_start = 0x018a0000,
+                       .size = 0x00060000,
+                       .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
+                               JAILHOUSE_MEM_IO,
+               },
+               /* RAM */ {
+                       .phys_start = 0x80000000,
+                       .virt_start = 0x80000000,
+                       .size = 0x5fa00000,
+                       .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
+                               JAILHOUSE_MEM_EXECUTE,
+               },
+               /* RAM. Reserved for inmates */ {
+                       .phys_start = 0xe0000000,
+                       .virt_start = 0xe0000000,
+                       .size = 0x20000000,
+                       .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
+                               JAILHOUSE_MEM_EXECUTE,
+               },
+               /* ctrl mmr */ {
+                       .phys_start = 0x000f0000,
+                       .virt_start = 0x000f0000,
+                       .size = 0x00030000,
+                       .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
+                               JAILHOUSE_MEM_IO,
+               },
+               /* GPIO */ {
+                       .phys_start = 0x00600000,
+                       .virt_start = 0x00600000,
+                       .size = 0x00002000,
+                       .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
+                               JAILHOUSE_MEM_IO,
+               },
+               /* GPU */ {
+                       .phys_start = 0x0fd00000,
+                       .virt_start = 0x0fd00000,
+                       .size = 0x00020000,
+                       .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
+                               JAILHOUSE_MEM_IO,
+               },
+               /* TimeSync Router */ {
+                       .phys_start = 0x00a40000,
+                       .virt_start = 0x00a40000,
+                       .size = 0x00001000,
+                       .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
+                               JAILHOUSE_MEM_IO,
+               },
+               /* First peripheral window, 1 of 2 */ {
+                       .phys_start = 0x01000000,
+                       .virt_start = 0x01000000,
+                       .size = 0x00800000,
+                       .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
+                               JAILHOUSE_MEM_IO,
+               },
+               /* First peripheral window, 2 of 2 */ {
+                       .phys_start = 0x01900000,
+                       .virt_start = 0x01900000,
+                       .size = 0x01229000,
+                       .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
+                               JAILHOUSE_MEM_IO,
+               },
+               /* Second peripheral window */ {
+                       .phys_start = 0x0e000000,
+                       .virt_start = 0x0e000000,
+                       .size = 0x01d00000,
+                       .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
+                               JAILHOUSE_MEM_IO,
+               },
+               /* Third peripheral window */ {
+                       .phys_start = 0x20000000,
+                       .virt_start = 0x20000000,
+                       .size = 0x0a008000,
+                       .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
+                               JAILHOUSE_MEM_IO,
+               },
+               /* OCSRAM */ {
+                       .phys_start = 0x70000000,
+                       .virt_start = 0x70000000,
+                       .size = 0x00010000,
+                       .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
+                               JAILHOUSE_MEM_IO,
+               },
+               /* DSS */ {
+                       .phys_start = 0x30200000,
+                       .virt_start = 0x30200000,
+                       .size = 0x00010000,
+                       .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
+                               JAILHOUSE_MEM_IO,
+               },
+               /* DMSS */ {
+                       .phys_start = 0x48000000,
+                       .virt_start = 0x48000000,
+                       .size = 0x06400000,
+                       .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
+                               JAILHOUSE_MEM_IO,
+               },
+               /* PRUSS-M */ {
+                       .phys_start = 0x30040000,
+                       .virt_start = 0x30040000,
+                       .size = 0x00080000,
+                       .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
+                               JAILHOUSE_MEM_IO,
+               },
+               /* USB */ {
+                       .phys_start = 0x31000000,
+                       .virt_start = 0x31000000,
+                       .size = 0x00050000,
+                       .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
+                               JAILHOUSE_MEM_IO,
+               },
+               /* USB */ {
+                       .phys_start = 0x31100000,
+                       .virt_start = 0x31100000,
+                       .size = 0x00050000,
+                       .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
+                               JAILHOUSE_MEM_IO,
+               },
+               /* CPSW */ {
+                       .phys_start = 0x08000000,
+                       .virt_start = 0x08000000,
+                       .size = 0x00200000,
+                       .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
+                               JAILHOUSE_MEM_IO,
+               },
+               /* First Wake Up Domain */ {
+                       .phys_start = 0x2b000000,
+                       .virt_start = 0x2b000000,
+                       .size = 0x00301000,
+                       .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
+                               JAILHOUSE_MEM_IO,
+               },
+               /* Second Wake Up Domain */ {
+                       .phys_start = 0x43000000,
+                       .virt_start = 0x43000000,
+                       .size = 0x00020000,
+                       .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
+                               JAILHOUSE_MEM_IO,
+               },
+               /* MCU Domain Range */ {
+                       .phys_start = 0x04000000,
+                       .virt_start = 0x04000000,
+                       .size = 0x01ff2000,
+                       .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
+                               JAILHOUSE_MEM_IO,
+               },
+       },
+
+       .irqchips = {
+               {
+                       .address = 0x01800000,
+                       .pin_base = 32,
+                       .pin_bitmap = {
+                               0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+                       },
+               },
+               {
+                       .address = 0x01800000,
+                       .pin_base = 160,
+                       .pin_bitmap = {
+                               0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+                       },
+               },
+               {
+                       .address = 0x01800000,
+                       .pin_base = 288,
+                       .pin_bitmap = {
+                               0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+                       },
+               },
+               {
+                       .address = 0x01800000,
+                       .pin_base = 416,
+                       .pin_bitmap = {
+                               0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+                       },
+               },
+               {
+                       .address = 0x01800000,
+                       .pin_base = 544,
+                       .pin_bitmap = {
+                               0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+                       },
+               },
+       },
+
+       .pci_devices = {
+               /* 0001:00:00.0 */ {
+                       .type = JAILHOUSE_PCI_TYPE_IVSHMEM,
+                       .domain = 1,
+                       .bdf = 0 << 3,
+                       .bar_mask = JAILHOUSE_IVSHMEM_BAR_MASK_INTX_64K,
+                       .shmem_regions_start = 0,
+                       .shmem_dev_id = 0,
+                       .shmem_peers = 3,
+                       .shmem_protocol = JAILHOUSE_SHMEM_PROTO_UNDEFINED,
+               },
+               /* 0001:00:01.0 */ {
+                       .type = JAILHOUSE_PCI_TYPE_IVSHMEM,
+                       .domain = 1,
+                       .bdf = 1 << 3,
+                       .bar_mask = JAILHOUSE_IVSHMEM_BAR_MASK_INTX_64K,
+                       .shmem_regions_start = 5,
+                       .shmem_dev_id = 0,
+                       .shmem_peers = 2,
+                       .shmem_protocol = JAILHOUSE_SHMEM_PROTO_VETH,
+               },
+       },
+};
-- 
2.30.2

-- 
You received this message because you are subscribed to the Google Groups 
"Jailhouse" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to jailhouse-dev+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/jailhouse-dev/20220427025419.3485-1-mranostay%40ti.com.

Reply via email to