zynq: fix resource table and linker script for v4.9 kernel
authorWendy Liang <jliang@xilinx.com>
Mon, 6 Feb 2017 20:01:02 +0000 (12:01 -0800)
committerWendy Liang <jliang@xilinx.com>
Mon, 6 Feb 2017 20:01:02 +0000 (12:01 -0800)
This patch fix the following to make Zynq work with v4.9 kernel
* remove carveout resource, as we do support master to allocate
  firmware memory, instead we need to predefine the firmware memory
  for this platform.
* use proc_mem to declare the remote memory
* fix the linker script not to include the memory for vrings and
  shared buffers.

Signed-off-by: Wendy Liang <jliang@xilinx.com>
apps/machine/zynq7/rsc_table.c
apps/machine/zynq7/rsc_table.h
apps/system/generic/machine/zynq7/linker_remote.ld

index 25f864238db0cadabc89ecda8a28bcc1d87eef34..959d49fbe83fe39dce34f966deecee451e3cdd83 100644 (file)
@@ -48,8 +48,6 @@
 #define VIRTIO_RPMSG_F_NS           0
 
 /* Resource table entries */
-#define ELF_START                   0x00000000
-#define ELF_END                     0x08000000
 #define NUM_VRINGS                  0x02
 #define VRING_ALIGN                 0x1000
 #define RING_TX                     0x08000000
@@ -57,8 +55,6 @@
 #define VRING_SIZE                  256
 
 #define NUM_TABLE_ENTRIES           2
-#define CARVEOUT_SRC_OFFSETS        offsetof(struct remote_resource_table, elf_cout),
-#define CARVEOUT_SRC                { RSC_CARVEOUT, ELF_START, ELF_START, ELF_END, 0, 0, "ELF_COUT", },
 
 
 struct remote_resource_table __resource resources = {
@@ -72,13 +68,12 @@ struct remote_resource_table __resource resources = {
 
        /* Offsets of rsc entries */
        {
-        CARVEOUT_SRC_OFFSETS
+        offsetof(struct remote_resource_table, rproc_mem),
         offsetof(struct remote_resource_table, rpmsg_vdev),
         },
 
-       /* End of ELF file */
-       CARVEOUT_SRC
-           /* Virtio device entry */
+       {RSC_RPROC_MEM, 0x200000, 0x200000, 0x100000, 0},
+        /* Virtio device entry */
        {RSC_VDEV, VIRTIO_ID_RPMSG_, 0, RPMSG_IPU_C0_FEATURES, 0, 0, 0,
         NUM_VRINGS, {0, 0},
         },
index 29a41fa53d78990550642c33e9109941033ff255..cd22e3f9077fe3dc4d382a5a651f28e814f79958 100644 (file)
@@ -42,8 +42,8 @@ struct remote_resource_table {
        unsigned int num;
        unsigned int reserved[2];
        unsigned int offset[NO_RESOURCE_ENTRIES];
-       /* text carveout entry */
-       struct fw_rsc_carveout elf_cout;
+       /* rproc memory entry */
+       struct fw_rsc_rproc_mem rproc_mem;
        /* rpmsg vdev entry */
        struct fw_rsc_vdev rpmsg_vdev;
        struct fw_rsc_vdev_vring rpmsg_vring0;
index 4e311e9af37a55924943491242d79d5169639d11..1f1501ce3e1de71554a9611bf8a2b559394fed82 100644 (file)
@@ -23,7 +23,7 @@ _UNDEF_STACK_SIZE = DEFINED(_UNDEF_STACK_SIZE) ? _UNDEF_STACK_SIZE : 1024;
 
 MEMORY
 {
-   ps7_ddr_0_S_AXI_BASEADDR : ORIGIN = 0x00100000, LENGTH = 0x08000000
+   ps7_ddr_0_S_AXI_BASEADDR : ORIGIN = 0x00100000, LENGTH = 0x00080000
    ps7_ram_0_S_AXI_BASEADDR : ORIGIN = 0x00000000, LENGTH = 0x00030000
    ps7_ram_1_S_AXI_BASEADDR : ORIGIN = 0xFFFF0000, LENGTH = 0x0000FE00
 }