Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- root@beaglebone:~/testBela# git diff resources/
- diff --git a/resources/rproc-build/common/resource_table_empty.h b/resources/rproc-build/common/resource_table_empty.h
- index 07e97d9b..e240d507 100644
- --- a/resources/rproc-build/common/resource_table_empty.h
- +++ b/resources/rproc-build/common/resource_table_empty.h
- @@ -1,17 +1,34 @@
- /*
- - * ======== resource_table_empty.h ========
- + * Copyright (C) 2016 Texas Instruments Incorporated - http://www.ti.com/
- *
- - * Define the resource table entries for all PRU cores. This will be
- - * incorporated into corresponding base images, and used by the remoteproc
- - * on the host-side to allocated/reserve resources. Note the remoteproc
- - * driver requires that all PRU firmware be built with a resource table.
- *
- - * This file contains an empty resource table. It can be used either as:
- + * Redistribution and use in source and binary forms, with or without
- + * modification, are permitted provided that the following conditions
- + * are met:
- *
- - * 1) A template, or
- - * 2) As-is if a PRU application does not need to configure PRU_INTC
- - * or interact with the rpmsg driver
- + * * Redistributions of source code must retain the above copyright
- + * notice, this list of conditions and the following disclaimer.
- *
- + * * Redistributions in binary form must reproduce the above copyright
- + * notice, this list of conditions and the following disclaimer in the
- + * documentation and/or other materials provided with the
- + * distribution.
- + *
- + * * Neither the name of Texas Instruments Incorporated nor the names of
- + * its contributors may be used to endorse or promote products derived
- + * from this software without specific prior written permission.
- + *
- + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
- #ifndef _RSC_TABLE_PRU_H_
- @@ -19,21 +36,104 @@
- #include <stddef.h>
- #include <rsc_types.h>
- +#include "pru_virtio_ids.h"
- +
- +/*
- + * Sizes of the virtqueues (expressed in number of buffers supported,
- + * and must be power of 2)
- + */
- +#define PRU_RPMSG_VQ0_SIZE 16
- +#define PRU_RPMSG_VQ1_SIZE 16
- +
- +/*
- + * The feature bitmap for virtio rpmsg
- + */
- +#define VIRTIO_RPMSG_F_NS 0 //name service notifications
- +
- +/* This firmware supports name service notifications as one of its features */
- +#define RPMSG_PRU_C0_FEATURES (1 << VIRTIO_RPMSG_F_NS)
- +
- +/* Definition for unused interrupts */
- +#define HOST_UNUSED 255
- +
- +/* Mapping sysevts to a channel. Each pair contains a sysevt, channel. */
- +// struct ch_map pru_intc_map[] = { {16, 2},
- +// {17, 0},
- +// };
- +struct ch_map pru_intc_map[] = { {55, 2},
- + {54, 2},
- +};
- +
- struct my_resource_table {
- struct resource_table base;
- - uint32_t offset[1]; /* Should match 'num' in actual definition */
- + uint32_t offset[2]; /* Should match 'num' in actual definition */
- +
- + /* rpmsg vdev entry */
- + struct fw_rsc_vdev rpmsg_vdev;
- + struct fw_rsc_vdev_vring rpmsg_vring0;
- + struct fw_rsc_vdev_vring rpmsg_vring1;
- +
- + /* intc definition */
- + struct fw_rsc_custom pru_ints;
- };
- -#pragma DATA_SECTION(pru_remoteproc_ResourceTable, ".resource_table")
- -#pragma RETAIN(pru_remoteproc_ResourceTable)
- -struct my_resource_table pru_remoteproc_ResourceTable = {
- - 1, /* we're the first version that implements this */
- - 0, /* number of entries in the table */
- +#pragma DATA_SECTION(resourceTable, ".resource_table")
- +#pragma RETAIN(resourceTable)
- +struct my_resource_table resourceTable = {
- + 1, /* Resource table version: only version 1 is supported by the current driver */
- + 2, /* number of entries in the table */
- 0, 0, /* reserved, must be zero */
- - 0, /* offset[0] */
- + /* offsets to entries */
- + {
- + offsetof(struct my_resource_table, rpmsg_vdev),
- + offsetof(struct my_resource_table, pru_ints),
- + },
- +
- + /* rpmsg vdev entry */
- + {
- + (uint32_t)TYPE_VDEV, //type
- + (uint32_t)VIRTIO_ID_RPMSG, //id
- + (uint32_t)0, //notifyid
- + (uint32_t)RPMSG_PRU_C0_FEATURES, //dfeatures
- + (uint32_t)0, //gfeatures
- + (uint32_t)0, //config_len
- + (uint8_t)0, //status
- + (uint8_t)2, //num_of_vrings, only two is supported
- + { (uint8_t)0, (uint8_t)0 }, //reserved
- + /* no config data */
- + },
- + /* the two vrings */
- + {
- + 0, //da, will be populated by host, can't pass it in
- + 16, //align (bytes),
- + PRU_RPMSG_VQ0_SIZE, //num of descriptors
- + 0, //notifyid, will be populated, can't pass right now
- + 0 //reserved
- + },
- + {
- + 0, //da, will be populated by host, can't pass it in
- + 16, //align (bytes),
- + PRU_RPMSG_VQ1_SIZE, //num of descriptors
- + 0, //notifyid, will be populated, can't pass right now
- + 0 //reserved
- + },
- +
- + {
- + TYPE_CUSTOM, TYPE_PRU_INTS,
- + sizeof(struct fw_rsc_custom_ints),
- + { /* PRU_INTS version */
- + 0x0000,
- + /* Channel-to-host mapping, 255 for unused */
- + 0, HOST_UNUSED, 2, HOST_UNUSED, HOST_UNUSED,
- + HOST_UNUSED, HOST_UNUSED, HOST_UNUSED, HOST_UNUSED, HOST_UNUSED,
- + /* Number of evts being mapped to channels */
- + (sizeof(pru_intc_map) / sizeof(struct ch_map)),
- + /* Pointer to the structure containing mapped events */
- + pru_intc_map,
- + },
- + },
- };
- #endif /* _RSC_TABLE_PRU_H_ */
- -
- diff --git a/resources/rproc-build/rproc-template.c b/resources/rproc-build/rproc-template.c
- index 3553316f..30ae35a1 100644
- --- a/resources/rproc-build/rproc-template.c
- +++ b/resources/rproc-build/rproc-template.c
- @@ -2,6 +2,7 @@
- void _c_int00(void)
- {
- + // pru_rpmsg_init();
- __asm__ __volatile__
- (
- #include "included_assembly.h"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement