1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */ 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * Copyright (c) 2022 Rockchip Electronics Co., Ltd. 4*4882a593Smuzhiyun */ 5*4882a593Smuzhiyun #ifndef ROCKCHIP_RPMSG_H 6*4882a593Smuzhiyun #define ROCKCHIP_RPMSG_H 7*4882a593Smuzhiyun 8*4882a593Smuzhiyun /* rpmsg flag bit definition 9*4882a593Smuzhiyun * bit 0: Set 1 to indicate remote processor is ready 10*4882a593Smuzhiyun * bit 1: Set 1 to use reserved memory region as shared DMA pool 11*4882a593Smuzhiyun * bit 2: Set 1 to use cached share memory as vring buffer 12*4882a593Smuzhiyun */ 13*4882a593Smuzhiyun #define RPMSG_REMOTE_IS_READY BIT(0) 14*4882a593Smuzhiyun #define RPMSG_SHARED_DMA_POOL BIT(1) 15*4882a593Smuzhiyun #define RPMSG_CACHED_VRING BIT(2) 16*4882a593Smuzhiyun 17*4882a593Smuzhiyun #define RPMSG_VIRTIO_RPMSG_F_NS BIT(0) 18*4882a593Smuzhiyun 19*4882a593Smuzhiyun #define RPMSG_BUF_PAYLOAD_SIZE (496UL) 20*4882a593Smuzhiyun /* rpmsg buffer size is formed by payload size and struct rpmsg_hdr */ 21*4882a593Smuzhiyun #define RPMSG_BUF_SIZE (RPMSG_BUF_PAYLOAD_SIZE + 16UL) 22*4882a593Smuzhiyun /* rpmsg buffer count for each direction */ 23*4882a593Smuzhiyun #define RPMSG_BUF_COUNT (64UL) 24*4882a593Smuzhiyun /* rpmsg endpoint size is equal to rpmsg buffer size */ 25*4882a593Smuzhiyun #define RPMSG_EPT_SIZE RPMSG_BUF_SIZE 26*4882a593Smuzhiyun 27*4882a593Smuzhiyun #define RPMSG_MAX_INSTANCE_NUM (12U) 28*4882a593Smuzhiyun #define RPMSG_MAX_LINK_ID (0xFFU) 29*4882a593Smuzhiyun 30*4882a593Smuzhiyun #define RPMSG_MBOX_MAGIC (0x524D5347U) 31*4882a593Smuzhiyun 32*4882a593Smuzhiyun /* Linux requires the ALIGN to 0x1000(4KB) */ 33*4882a593Smuzhiyun #define RPMSG_VRING_ALIGN (0x1000UL) 34*4882a593Smuzhiyun /* contains pool of descriptors and two circular buffers */ 35*4882a593Smuzhiyun #define RPMSG_VRING_SIZE (0x8000UL) 36*4882a593Smuzhiyun /* size of 2 * RPMSG_VRING_SIZE */ 37*4882a593Smuzhiyun #define RPMSG_VRING_OVERHEAD (2UL * RPMSG_VRING_SIZE) 38*4882a593Smuzhiyun 39*4882a593Smuzhiyun /* link_id: 4 bit master cpu_id and 4 bit remote_id */ 40*4882a593Smuzhiyun #define RPMSG_GET_M_CPU_ID(link_id) (((link_id) & 0xF0U) >> 4U) 41*4882a593Smuzhiyun #define RPMSG_GET_R_CPU_ID(link_id) ((link_id) & 0xFU) 42*4882a593Smuzhiyun 43*4882a593Smuzhiyun #endif /* ROCKCHIP_RPMSG_H */ 44