kernel_samsung_a53x/include/soc/samsung/shm_ipc.h
2024-06-15 16:02:09 -03:00

57 lines
2.4 KiB
C
Executable file

/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (C) 2014-2019, Samsung Electronics.
*
* This software is licensed under the terms of the GNU General Public
* License version 2, as published by the Free Software Foundation, and
* may be copied, distributed, and modified under those terms.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
*/
#ifndef __SHMEM_IPC_H__
#define __SHMEM_IPC_H__
#define MAX_CP_NUM 2
#if IS_ENABLED(CONFIG_SHM_IPC)
int cp_shmem_get_mem_map_on_cp_flag(u32 cp_num);
void __iomem *cp_shmem_get_region(u32 cp, u32 idx);
void __iomem *cp_shmem_get_nc_region(unsigned long base, u32 size);
void cp_shmem_release_region(u32 cp, u32 idx);
void cp_shmem_release_rmem(u32 cp, u32 idx, u32 headroom);
unsigned long cp_shmem_get_base(u32 cp, u32 idx);
u32 cp_shmem_get_size(u32 cp, u32 idx);
/* Legacy functions */
unsigned long shm_get_msi_base(void);
void __iomem *shm_get_vss_region(void);
unsigned long shm_get_vss_base(void);
u32 shm_get_vss_size(void);
void __iomem *shm_get_vparam_region(void);
unsigned long shm_get_vparam_base(void);
u32 shm_get_vparam_size(void);
#else /* CONFIG_SHM_IPC */
static inline int cp_shmem_get_mem_map_on_cp_flag(u32 cp_num) { return 0; }
static inline void __iomem *cp_shmem_get_region(u32 cp, u32 idx) { return NULL; }
static inline void __iomem *cp_shmem_get_nc_region(unsigned long base, u32 size) { return NULL; }
static inline void cp_shmem_release_region(u32 cp, u32 idx) { return; }
static inline void cp_shmem_release_rmem(u32 cp, u32 idx, u32 headroom) { return; }
static inline unsigned long cp_shmem_get_base(u32 cp, u32 idx) { return 0; }
static inline u32 cp_shmem_get_size(u32 cp, u32 idx) { return 0; }
/* Legacy functions */
static inline unsigned long shm_get_msi_base(void) { return 0; }
static inline void __iomem *shm_get_vss_region(void) { return NULL;}
static inline unsigned long shm_get_vss_base(void) { return 0; }
static inline u32 shm_get_vss_size(void) { return 0; }
static inline void __iomem *shm_get_vparam_region(void) { return NULL; }
static inline unsigned long shm_get_vparam_base(void) { return 0; }
static inline u32 shm_get_vparam_size(void) { return 0; }
#endif /* CONFIG_SHM_IPC */
#endif /* __SHMEM_IPC_H__ */