kernel_samsung_a53x/drivers/soc/samsung/cpif/dit.h
2024-06-15 16:02:09 -03:00

71 lines
2.3 KiB
C
Executable file

/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (c) 2020 Samsung Electronics Co., Ltd.
* http://www.samsung.com/
*
* EXYNOS DIT(Direct IP Translator) Driver support
*
*/
#ifndef __DIT_H__
#define __DIT_H__
#include "modem_utils.h"
#include "modem_toe_device.h"
enum dit_direction {
DIT_DIR_TX,
DIT_DIR_RX,
DIT_DIR_MAX
};
enum dit_init_type {
DIT_INIT_NORMAL = 0,
DIT_INIT_RETRY,
DIT_INIT_DEINIT,
};
enum dit_store_type {
DIT_STORE_NONE = 0,
DIT_STORE_BACKUP,
DIT_STORE_RESTORE,
};
int dit_init(struct link_device *ld, enum dit_init_type type, enum dit_store_type store);
int dit_get_irq_affinity(void);
int dit_set_irq_affinity(int affinity);
int dit_set_pktproc_queue_num(enum dit_direction dir, u32 queue_num);
int dit_set_buf_size(enum dit_direction dir, u32 size);
int dit_set_pktproc_base(enum dit_direction dir, phys_addr_t base);
int dit_set_desc_ring_len(enum dit_direction dir, u32 len);
int dit_get_src_usage(enum dit_direction dir, u32 *usage);
#if IS_ENABLED(CONFIG_EXYNOS_DIT)
int dit_enqueue_src_desc_ring(
enum dit_direction dir, u8 *src, unsigned long src_paddr,
u16 len, u8 ch_id, bool csum);
int dit_enqueue_src_desc_ring_skb(enum dit_direction dir, struct sk_buff *skb);
int dit_kick(enum dit_direction dir, bool retry);
bool dit_check_dir_use_queue(enum dit_direction dir, unsigned int queue_num);
int dit_reset_dst_wp_rp(enum dit_direction dir);
struct net_device *dit_get_netdev(void);
bool dit_support_clat(void);
bool dit_hal_set_clat_info(struct mem_link_device *mld, struct clat_info *clat);
#else
static inline int dit_enqueue_src_desc_ring(
enum dit_direction dir, u8 *src, unsigned long src_paddr,
u16 len, u8 ch_id, bool csum) { return -1; }
static inline int dit_enqueue_src_desc_ring_skb(
enum dit_direction dir, struct sk_buff *skb) { return -1; }
static inline int dit_kick(enum dit_direction dir, bool retry) { return -1; }
static inline bool dit_check_dir_use_queue(
enum dit_direction dir, unsigned int queue_num) { return false; }
static inline int dit_reset_dst_wp_rp(enum dit_direction dir) { return -1; }
static inline struct net_device *dit_get_netdev(void) { return NULL; }
static inline bool dit_support_clat(void) { return false; }
static inline bool dit_hal_set_clat_info(struct mem_link_device *mld, struct clat_info *clat)
{ return false; }
#endif
#endif /* __DIT_H__ */