73 lines
1.8 KiB
C
73 lines
1.8 KiB
C
|
|
/*
|
||
|
|
* Copyright (c) 2014, Mentor Graphics Corporation
|
||
|
|
* All rights reserved.
|
||
|
|
* Copyright (c) 2015 Xilinx, Inc. All rights reserved.
|
||
|
|
*
|
||
|
|
* SPDX-License-Identifier: BSD-3-Clause
|
||
|
|
*/
|
||
|
|
|
||
|
|
/* This file populates resource table for BM remote
|
||
|
|
* for use by the Linux Master */
|
||
|
|
|
||
|
|
#include <openamp/open_amp.h>
|
||
|
|
#include "rsc_table.h"
|
||
|
|
#include "platform_info.h"
|
||
|
|
|
||
|
|
/* Place resource table in special ELF section */
|
||
|
|
/* Redefine __section for section name with token */
|
||
|
|
#define __section_t(S) __attribute__((__section__(#S)))
|
||
|
|
#define __resource __section_t(.resource_table)
|
||
|
|
|
||
|
|
#define RPMSG_IPU_C0_FEATURES 1
|
||
|
|
|
||
|
|
/* VirtIO rpmsg device id */
|
||
|
|
#define VIRTIO_ID_RPMSG_ 7
|
||
|
|
|
||
|
|
/* Remote supports Name Service announcement */
|
||
|
|
#define VIRTIO_RPMSG_F_NS 0
|
||
|
|
|
||
|
|
/* Resource table entries */
|
||
|
|
#define NUM_VRINGS 0x02
|
||
|
|
#define VRING_ALIGN 0x1000
|
||
|
|
#define RING_TX 0x08000000
|
||
|
|
#define RING_RX 0x08004000
|
||
|
|
#define VRING_SIZE 256
|
||
|
|
|
||
|
|
#define NUM_TABLE_ENTRIES 2
|
||
|
|
|
||
|
|
|
||
|
|
struct remote_resource_table __resource resources = {
|
||
|
|
/* Version */
|
||
|
|
1,
|
||
|
|
|
||
|
|
/* NUmber of table entries */
|
||
|
|
NUM_TABLE_ENTRIES,
|
||
|
|
/* reserved fields */
|
||
|
|
{0, 0,},
|
||
|
|
|
||
|
|
/* Offsets of rsc entries */
|
||
|
|
{
|
||
|
|
offsetof(struct remote_resource_table, rproc_mem),
|
||
|
|
offsetof(struct remote_resource_table, rpmsg_vdev),
|
||
|
|
},
|
||
|
|
|
||
|
|
{RSC_RPROC_MEM, SHARED_MEM_PA, SHARED_MEM_PA, SHARED_MEM_SIZE, 0},
|
||
|
|
|
||
|
|
/* Virtio device entry */
|
||
|
|
{
|
||
|
|
RSC_VDEV, VIRTIO_ID_RPMSG_, 0, RPMSG_IPU_C0_FEATURES, 0, 0, 0,
|
||
|
|
NUM_VRINGS, {0, 0},
|
||
|
|
},
|
||
|
|
|
||
|
|
/* Vring rsc entry - part of vdev rsc entry */
|
||
|
|
{RING_TX, VRING_ALIGN, VRING_SIZE, 1, 0},
|
||
|
|
{RING_RX, VRING_ALIGN, VRING_SIZE, 2, 0},
|
||
|
|
};
|
||
|
|
|
||
|
|
void *get_resource_table (int rsc_id, int *len)
|
||
|
|
{
|
||
|
|
(void) rsc_id;
|
||
|
|
*len = sizeof(resources);
|
||
|
|
return &resources;
|
||
|
|
}
|