/* SPDX-License-Identifier: GPL-2.0-only
*
* Copyright ( c ) 2021 , MediaTek Inc .
* Copyright ( c ) 2021 - 2022 , Intel Corporation .
*
* Authors :
* Amir Hanania < amir . hanania @ intel . com >
* Haijun Liu < haijun . liu @ mediatek . com >
* Moises Veleta < moises . veleta @ intel . com >
* Ricardo Martinez < ricardo . martinez @ linux . intel . com >
*
* Contributors :
* Chiranjeevi Rapolu < chiranjeevi . rapolu @ intel . com >
* Eliot Lee < eliot . lee @ intel . com >
* Sreehari Kancharla < sreehari . kancharla @ intel . com >
*/
#ifndef __T7XX_PORT_PROXY_H__
#define __T7XX_PORT_PROXY_H__
#include <linux/bits.h>
#include <linux/device.h>
#include <linux/skbuff.h>
#include <linux/types.h>
#include "t7xx_hif_cldma.h"
#include "t7xx_modem_ops.h"
#include "t7xx_port.h"
#define MTK_QUEUES 16
#define RX_QUEUE_MAXLEN 32
#define CTRL_QUEUE_MAXLEN 16
enum port_cfg_id {
PORT_CFG_ID_INVALID,
PORT_CFG_ID_NORMAL,
PORT_CFG_ID_EARLY,
};
struct port_proxy {
int port_count;
struct list_head rx_ch_ports[PORT_CH_ID_MASK + 1 ];
struct list_head queue_ports[CLDMA_NUM][MTK_QUEUES];
struct device *dev;
enum port_cfg_id cfg_id;
struct t7xx_port ports[];
};
struct ccci_header {
__le32 packet_header;
__le32 packet_len;
__le32 status;
__le32 ex_msg;
};
/* Coupled with HW - indicates if there is data following the CCCI header or not */
#define CCCI_HEADER_NO_DATA 0 xffffffff
#define CCCI_H_AST_BIT BIT(31 )
#define CCCI_H_SEQ_FLD GENMASK(30 , 16 )
#define CCCI_H_CHN_FLD GENMASK(15 , 0 )
struct ctrl_msg_header {
__le32 ctrl_msg_id;
__le32 ex_msg;
__le32 data_length;
};
/* Control identification numbers for AP<->MD messages */
#define CTL_ID_HS1_MSG 0 x0
#define CTL_ID_HS2_MSG 0 x1
#define CTL_ID_HS3_MSG 0 x2
#define CTL_ID_MD_EX 0 x4
#define CTL_ID_DRV_VER_ERROR 0 x5
#define CTL_ID_MD_EX_ACK 0 x6
#define CTL_ID_MD_EX_PASS 0 x8
#define CTL_ID_PORT_ENUM 0 x9
/* Modem exception check identification code - "EXCP" */
#define MD_EX_CHK_ID 0 x45584350
/* Modem exception check acknowledge identification code - "EREC" */
#define MD_EX_CHK_ACK_ID 0 x45524543
#define PORT_INFO_RSRVD GENMASK(31 , 16 )
#define PORT_INFO_ENFLG BIT(15 )
#define PORT_INFO_CH_ID GENMASK(14 , 0 )
#define PORT_ENUM_VER 0
#define PORT_ENUM_HEAD_PATTERN 0 x5a5a5a5a
#define PORT_ENUM_TAIL_PATTERN 0 xa5a5a5a5
#define PORT_ENUM_VER_MISMATCH 0 x00657272
/* Port operations mapping */
extern struct port_ops wwan_sub_port_ops;
extern struct port_ops ctl_port_ops;
#ifdef CONFIG_WWAN_DEBUGFS
extern struct port_ops t7xx_trace_port_ops;
#endif
void t7xx_proxy_debug_ports_show(struct t7xx_pci_dev *t7xx_dev, bool show);
void t7xx_port_proxy_reset(struct port_proxy *port_prox);
void t7xx_port_proxy_uninit(struct port_proxy *port_prox);
int t7xx_port_proxy_init(struct t7xx_modem *md);
void t7xx_port_proxy_md_status_notify(struct port_proxy *port_prox, unsigned int state);
int t7xx_port_enum_msg_handler(struct t7xx_modem *md, void *msg);
int t7xx_port_proxy_chl_enable_disable(struct port_proxy *port_prox, unsigned int ch_id,
bool en_flag);
void t7xx_port_proxy_set_cfg(struct t7xx_modem *md, enum port_cfg_id cfg_id);
int t7xx_port_proxy_recv_skb(struct cldma_queue *queue, struct sk_buff *skb);
int t7xx_port_proxy_recv_skb_from_dedicated_queue(struct cldma_queue *queue, struct sk_buff *skb);
#endif /* __T7XX_PORT_PROXY_H__ */
Messung V0.5 in Prozent C=94 H=100 G=96
¤ Dauer der Verarbeitung: 0.10 Sekunden
(vorverarbeitet am 2026-10-11)
¤
*© Formatika GbR, Deutschland