Squashed backup commit (no shallow-clone history issues) of xiaomi-mt6833-dev/kernel_xiaomi_mt6833 (lineage-23.2 branch, upstream commit 9eece662e) plus all fixes applied to get everpal_defconfig building clean against a modern (GCC 15.2.0) toolchain -- see the previous commit message on the lineage-23.2 branch (also in this repo history is not available here since this is a squashed snapshot; full incremental history lives in the local DL380 checkout and the upstream GitHub remote). Upstream: https://github.com/xiaomi-mt6833-dev/kernel_xiaomi_mt6833 (lineage-23.2)
164 lines
3.6 KiB
C
164 lines
3.6 KiB
C
/*
|
|
* Copyright (C) 2019 MediaTek Inc.
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License version 2 as
|
|
* published by the Free Software Foundation.
|
|
*
|
|
* 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 http://www.gnu.org/licenses/gpl-2.0.html for more details.
|
|
*/
|
|
#ifndef __PORT_UDC__
|
|
#define __PORT_UDC__
|
|
#include "ccci_core.h"
|
|
#include "udc.h"
|
|
#include "port_t.h"
|
|
#include "udc_zlib.h"
|
|
|
|
/* #define UDC_DATA_DUMP */
|
|
|
|
#define UDC_API_RESP_ID 0xFFFF0000
|
|
|
|
void udc_cmd_handler(struct port_t *port, struct sk_buff *skb);
|
|
int get_udc_prio(struct sk_buff *skb);
|
|
|
|
/**
|
|
* @brief Compression request (descriptor) for UDC compression
|
|
*
|
|
**/
|
|
|
|
struct udc_comp_req_t {
|
|
u16 seg_len:13; /* segment length */
|
|
u16 rsvd1:3;
|
|
u16 buf_type:1; /* 0:non-cache 1:cache */
|
|
u16 sit_type:1; /* SIT_Type = PRI (0)/NML (1) */
|
|
u16 sdu_idx:12; /* sdu_idx in corresponding SIT */
|
|
u16 rst:1; /* indicate whether to reset UDC buffer before compression */
|
|
u16 con:1; /* indicate the last segment of an SDU (cont = 0) */
|
|
u32 seg_phy_addr;/* comp_req_table offset */
|
|
} __packed;
|
|
|
|
/**
|
|
* @brief Compression result (meta) of UDC compression
|
|
*
|
|
**/
|
|
|
|
struct udc_comp_rslt_t {
|
|
u32 cmp_len:13; /* compressed data length */
|
|
u32 cksm:4; /* UDC buffer checksum */
|
|
u32 sit_type:1; /* which is copied from cmp_req */
|
|
u32 sdu_idx:12; /* which is copied from cmp_req */
|
|
u32 rst:1; /* indicate whether to set FR bit in UDC header */
|
|
u32 udc:1; /* indicate whether to set FU bit in UDC header */
|
|
u32 cmp_addr; /* comp_rslt_table offset */
|
|
} __packed;
|
|
|
|
/* udc cmd interface */
|
|
enum ccci_udc_cmd_e {
|
|
UDC_CMD_ACTV = 0,
|
|
UDC_CMD_ACTV_DONE = UDC_CMD_ACTV | 0xFFFF0000,
|
|
UDC_CMD_DEACTV = 1,
|
|
UDC_CMD_DEACTV_DONE = UDC_CMD_DEACTV | 0xFFFF0000,
|
|
UDC_CMD_KICK = 2,
|
|
UDC_CMD_KICK_DONE = UDC_CMD_KICK | 0xFFFF0000,
|
|
UDC_CMD_DISC = 3,
|
|
UDC_CMD_DISC_DONE = UDC_CMD_DISC | 0xFFFF0000,
|
|
};
|
|
|
|
enum ccci_udc_error {
|
|
/* udc default error 1-6 */
|
|
CMP_BUF_FULL = 7,
|
|
CMP_RSLT_FULL,
|
|
CMP_ZERO_LEN,
|
|
CMP_INST_ID_ERR,
|
|
};
|
|
|
|
enum ccci_udc_buf_sz_e {
|
|
UDC_BUF_SZ_2_KBYTES = 11,
|
|
UDC_BUF_SZ_4_KBYTES = 12,
|
|
UDC_BUF_SZ_8_KBTES = 13,
|
|
};
|
|
|
|
struct ccci_udc_deactv_param_t {
|
|
struct ccci_header header;
|
|
u32 udc_inst_id;
|
|
u32 udc_cmd;
|
|
} __packed;
|
|
|
|
enum ccci_udc_cmd_rslt_e {
|
|
UDC_CMD_RSLT_OK = 0,
|
|
UDC_ERROR_CMP_BUF_FULL,
|
|
UDC_ERROR_CMP_RSLT_FULL,
|
|
|
|
UDC_GENERAL_ERR = 0xFE,
|
|
UDC_ERROR_PARA,
|
|
};
|
|
|
|
struct ccci_udc_cmd_rsp_t {
|
|
struct ccci_header header;
|
|
u32 udc_inst_id;
|
|
u32 udc_cmd;
|
|
u32 rslt;
|
|
} __packed;
|
|
|
|
struct ccci_udc_actv_param_t {
|
|
struct ccci_header header;
|
|
u32 udc_inst_id;
|
|
u32 udc_cmd;
|
|
u32 buf_sz;
|
|
u32 dict_opt;
|
|
u32 num_shm_mask_bits;
|
|
} __packed;
|
|
|
|
struct ccci_udc_comm_param_t {
|
|
struct ccci_header header;
|
|
u32 udc_inst_id;
|
|
u32 udc_cmd;
|
|
u32 comm_para;
|
|
} __packed;
|
|
|
|
struct ccci_udc_disc_param_t {
|
|
struct ccci_header header;
|
|
u32 udc_inst_id;
|
|
u32 udc_cmd;
|
|
u32 new_req_r;
|
|
} __packed;
|
|
|
|
struct ccci_udc_kick_param_t {
|
|
struct ccci_header header;
|
|
u32 udc_inst_id;
|
|
u32 udc_cmd;
|
|
u32 exp_tmr;/* (unit: milliscond) */
|
|
} __packed;
|
|
/* udc cmd end */
|
|
|
|
/*
|
|
*struct ap_md_rw_index {
|
|
* unsigned int read;
|
|
* unsigned int write;
|
|
*} __packed;
|
|
*/
|
|
struct ap_md_rw_index {
|
|
struct {
|
|
unsigned int read;
|
|
unsigned int write;
|
|
} md_des_ins0;
|
|
struct {
|
|
unsigned int read;
|
|
unsigned int write;
|
|
} ap_resp_ins0;
|
|
struct {
|
|
unsigned int read;
|
|
unsigned int write;
|
|
} md_des_ins1;
|
|
struct {
|
|
unsigned int read;
|
|
unsigned int write;
|
|
} ap_resp_ins1;
|
|
} __packed;
|
|
|
|
#endif /*__PORT_UDC__*/
|
|
|