62 lines
1.9 KiB
C
Executable file
62 lines
1.9 KiB
C
Executable file
/* SPDX-License-Identifier: GPL-2.0 */
|
|
/*
|
|
* Copyright (C) 2021 Samsung Electronics.
|
|
*
|
|
*/
|
|
|
|
#ifndef __CPIF_NETRX_MNG_H__
|
|
#define __CPIF_NETRX_MNG_H__
|
|
|
|
#include "modem_prj.h"
|
|
#include "link_device_memory.h"
|
|
#include "cpif_page.h"
|
|
#include "cpif_vmapper.h"
|
|
|
|
struct cpif_addr_pair {
|
|
u64 cp_addr; /* cp address */
|
|
void *ap_addr; /* ap virtual address */
|
|
|
|
struct page *page; /* page holding the ap address */
|
|
u64 page_order;
|
|
|
|
struct list_head addr_item;
|
|
};
|
|
|
|
struct cpif_netrx_mng {
|
|
u64 num_packet;
|
|
u64 frag_size;
|
|
u64 total_buf_size;
|
|
|
|
struct cpif_va_mapper *desc_map;
|
|
struct cpif_va_mapper *data_map;
|
|
|
|
struct cpif_page_pool *data_pool;
|
|
struct list_head data_addr_list;
|
|
spinlock_t lock;
|
|
|
|
/* contains pre-unmapped AP addr which couldn't be delivered to kernel yet */
|
|
void *already_retrieved;
|
|
};
|
|
|
|
#if IS_ENABLED(CONFIG_EXYNOS_CPIF_IOMMU)
|
|
struct cpif_netrx_mng *cpif_create_netrx_mng(struct cpif_addr_pair *desc_addr_pair,
|
|
u64 desc_size, u64 databuf_cp_pbase,
|
|
u64 max_packet_size, u64 num_packet);
|
|
void cpif_exit_netrx_mng(struct cpif_netrx_mng *cm);
|
|
void cpif_init_netrx_mng(struct cpif_netrx_mng *cm);
|
|
struct cpif_addr_pair *cpif_map_rx_buf(struct cpif_netrx_mng *cm);
|
|
void *cpif_unmap_rx_buf(struct cpif_netrx_mng *cm,
|
|
u64 cp_data_paddr, bool free);
|
|
#else
|
|
static inline struct cpif_netrx_mng *cpif_create_netrx_mng(
|
|
struct cpif_addr_pair *desc_addr_pair,
|
|
u64 desc_size, u64 databuf_cp_pbase,
|
|
u64 max_packet_size, u64 num_packet) { return NULL; }
|
|
static inline void cpif_exit_netrx_mng(struct cpif_netrx_mng *cm) { return; }
|
|
static inline void cpif_init_netrx_mng(struct cpif_netrx_mng *cm) { return; }
|
|
static inline struct cpif_addr_pair *cpif_map_rx_buf(struct cpif_netrx_mng *cm)
|
|
{ return NULL; }
|
|
static inline void *cpif_unmap_rx_buf(struct cpif_netrx_mng *cm,
|
|
u64 cp_data_paddr, bool free) {return NULL; }
|
|
#endif
|
|
#endif /* __CPIF_NETRX_MNG_H__ */
|