| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- /*
- * Copyright (c) 2016 Freescale Semiconductor, Inc.
- * Copyright 2016-2022 NXP
- * All rights reserved.
- *
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
- #ifndef RPMSG_PLATFORM_H_
- #define RPMSG_PLATFORM_H_
- #include <stdint.h>
- /* RPMSG MU channel index */
- #define RPMSG_MU_CHANNEL (1)
- /*
- * Linux requires the ALIGN to 0x1000(4KB) instead of 0x80
- */
- #ifndef VRING_ALIGN
- #define VRING_ALIGN (0x1000U)
- #endif
- /* contains pool of descriptors and two circular buffers */
- #ifndef VRING_SIZE
- #define VRING_SIZE (0x8000UL)
- #endif
- /* define shared memory space for VRINGS per one channel */
- #define RL_VRING_OVERHEAD (2UL * VRING_SIZE)
- #define RL_GET_VQ_ID(link_id, queue_id) (((queue_id)&0x1U) | (((link_id) << 1U) & 0xFFFFFFFEU))
- #define RL_GET_LINK_ID(id) (((id)&0xFFFFFFFEU) >> 1U)
- #define RL_GET_Q_ID(id) ((id)&0x1U)
- #define RL_PLATFORM_IMX7ULP_M4_SRTM_LINK_ID (0U)
- #define RL_PLATFORM_IMX7ULP_M4_USER_LINK_ID (1U)
- #define RL_PLATFORM_HIGHEST_LINK_ID (1U)
- /* platform interrupt related functions */
- int32_t platform_init_interrupt(uint32_t vector_id, void *isr_data);
- int32_t platform_deinit_interrupt(uint32_t vector_id);
- int32_t platform_interrupt_enable(uint32_t vector_id);
- int32_t platform_interrupt_disable(uint32_t vector_id);
- int32_t platform_in_isr(void);
- void platform_notify(uint32_t vector_id);
- /* platform low-level time-delay (busy loop) */
- void platform_time_delay(uint32_t num_msec);
- /* platform memory functions */
- void platform_map_mem_region(uint32_t vrt_addr, uint32_t phy_addr, uint32_t size, uint32_t flags);
- void platform_cache_all_flush_invalidate(void);
- void platform_cache_disable(void);
- uintptr_t platform_vatopa(void *addr);
- void *platform_patova(uintptr_t addr);
- /* platform init/deinit */
- int32_t platform_init(void);
- int32_t platform_deinit(void);
- #endif /* RPMSG_PLATFORM_H_ */
|