kernel-brax3-ubuntu-touch/drivers/misc/mediatek/include/mt-plat/mtk_wcn_cmb_stub.h
erascape f319b992b1 kernel-5.15: Initial import brax3 UT kernel
* halium configs enabled

Signed-off-by: erascape <erascape@proton.me>
2025-09-23 15:17:10 +00:00

190 lines
6.4 KiB
C

/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (c) 2019 MediaTek Inc.
*/
/*! \file
* \brief Declaration of library functions
*
* Any definitions in this file will be shared among GLUE Layer
* and internal Driver Stack.
*/
#ifndef _MTK_WCN_CMB_STUB_H_
#define _MTK_WCN_CMB_STUB_H_
#include <linux/pm.h>
/*******************************************************************************
* C O M P I L E R F L A G S
*******************************************************************************
*/
/*******************************************************************************
* M A C R O S
*******************************************************************************
*/
/* Audio GPIO naming style for 73/75/77 */
/* #define MTK_WCN_CMB_AUD_IO_NAMING_STYLE_0 1 */
/* Audio GPIO naming style for 89/8135 */
/* #define MTK_WCN_CMB_AUD_IO_NAMING_STYLE_1 1 */
/* Audio GPIO naming style for 6592 */
/* #define MTK_WCN_CMB_AUD_IO_NAMING_STYLE_2 1 */
/* Audio GPIO naming style for 6595 */
#define MTK_WCN_CMB_AUD_IO_NAMING_STYLE_3 1
#define MTK_WCN_CMB_FOR_SDIO_1V_AUTOK 1
/*******************************************************************************
* E X T E R N A L R E F E R E N C E S
*******************************************************************************
*/
/*******************************************************************************
* C O N S T A N T S
*******************************************************************************
*/
/*******************************************************************************
* D A T A T Y P E S
*******************************************************************************
*/
enum CMB_STUB_AIF_X {
CMB_STUB_AIF_0 = 0, /* 0000: BT_PCM_OFF & FM analog (line in/out) */
CMB_STUB_AIF_1 = 1, /* 0001: BT_PCM_ON & FM analog (in/out) */
CMB_STUB_AIF_2 = 2, /* 0010: BT_PCM_OFF & FM digital (I2S) */
CMB_STUB_AIF_3 = 3, /* 0011: BT_PCM_ON & FM digital (I2S) */
/* invalid in 73evb & 1.2 phone configuration */
CMB_STUB_AIF_4 = 4, /* 0100: BT_I2S & FM disable */
/* in special projects, e.g. protea */
CMB_STUB_AIF_MAX = 5,
};
/*COMBO_CHIP_AUDIO_PIN_CTRL*/
enum CMB_STUB_AIF_CTRL {
CMB_STUB_AIF_CTRL_DIS = 0,
CMB_STUB_AIF_CTRL_EN = 1,
CMB_STUB_AIF_CTRL_MAX = 2,
};
enum COMBO_FUNC_TYPE {
COMBO_FUNC_TYPE_BT = 0,
COMBO_FUNC_TYPE_FM = 1,
COMBO_FUNC_TYPE_GPS = 2,
COMBO_FUNC_TYPE_WIFI = 3,
COMBO_FUNC_TYPE_WMT = 4,
COMBO_FUNC_TYPE_STP = 5,
COMBO_FUNC_TYPE_NUM = 6
};
enum COMBO_IF {
COMBO_IF_UART = 0,
COMBO_IF_MSDC = 1,
COMBO_IF_BTIF = 2,
COMBO_IF_MAX,
};
typedef void (*wmt_bgf_eirq_cb) (void);
typedef int (*wmt_aif_ctrl_cb) (enum CMB_STUB_AIF_X, enum CMB_STUB_AIF_CTRL);
typedef void (*wmt_func_ctrl_cb) (unsigned int, unsigned int);
typedef signed long (*wmt_thermal_query_cb) (void);
typedef int (*wmt_trigger_assert_cb) (void);
typedef int (*wmt_deep_idle_ctrl_cb) (unsigned int);
typedef int (*wmt_func_do_reset) (unsigned int);
/* for DVFS driver do 1v autok */
#if MTK_WCN_CMB_FOR_SDIO_1V_AUTOK
typedef unsigned int (*wmt_get_drv_status)(unsigned int);
#endif
typedef void (*wmt_clock_fail_dump_cb) (void);
typedef void (*msdc_sdio_irq_handler_t) (void *); /* external irq handler */
typedef void (*pm_callback_t) (pm_message_t state, void *data);
struct sdio_ops {
void (*sdio_request_eirq)(msdc_sdio_irq_handler_t irq_handler,
void *data);
void (*sdio_enable_eirq)(void);
void (*sdio_disable_eirq)(void);
void (*sdio_register_pm)(pm_callback_t pm_cb, void *data);
};
struct _CMB_STUB_CB_ {
unsigned int size; /* structure size */
/*wmt_bgf_eirq_cb bgf_eirq_cb; */
/* remove bgf_eirq_cb from stub. handle it in platform */
wmt_aif_ctrl_cb aif_ctrl_cb;
wmt_func_ctrl_cb func_ctrl_cb;
wmt_thermal_query_cb thermal_query_cb;
wmt_trigger_assert_cb trigger_assert_cb;
wmt_deep_idle_ctrl_cb deep_idle_ctrl_cb;
wmt_func_do_reset wmt_do_reset_cb;
#if MTK_WCN_CMB_FOR_SDIO_1V_AUTOK
wmt_get_drv_status get_drv_status_cb;
#endif
wmt_clock_fail_dump_cb clock_fail_dump_cb;
};
/*******************************************************************************
* P U B L I C D A T A
*******************************************************************************
*/
/*******************************************************************************
* P R I V A T E D A T A
*******************************************************************************
*/
/*******************************************************************************
* F U N C T I O N D E C L A R A T I O N S
*******************************************************************************
*/
extern struct sdio_ops mt_sdio_ops[4];
extern int mtk_wcn_cmb_stub_reg(struct _CMB_STUB_CB_ *p_stub_cb);
extern int mtk_wcn_cmb_stub_unreg(void);
extern int mtk_wcn_cmb_stub_aif_ctrl(enum CMB_STUB_AIF_X state,
enum CMB_STUB_AIF_CTRL ctrl);
static inline int mtk_wcn_cmb_stub_audio_ctrl(enum CMB_STUB_AIF_X state)
{
/* return mtk_wcn_cmb_stub_aif_ctrl(state, 1); */
return 0;
}
extern int mt_combo_plt_enter_deep_idle(enum COMBO_IF src);
extern int mt_combo_plt_exit_deep_idle(enum COMBO_IF src);
/* Use new mtk_wcn_stub APIs instead of old mt_combo ones for kernel to control
* function on/off.
*/
extern void mtk_wcn_cmb_stub_func_ctrl(unsigned int type, unsigned int on);
extern int mtk_wcn_cmb_stub_query_ctrl(void);
extern int mtk_wcn_cmb_stub_trigger_assert(void);
extern void mtk_wcn_cmb_stub_clock_fail_dump(void);
extern int board_sdio_ctrl(unsigned int sdio_port_num, unsigned int on);
extern int mtk_wcn_sdio_irq_flag_set(int falg);
#if MTK_WCN_CMB_FOR_SDIO_1V_AUTOK
extern int mtk_wcn_cmb_stub_1vautok_for_dvfs(void);
#endif
extern int mtk_wcn_wmt_chipid_query(void);
extern void mtk_wcn_wmt_set_chipid(int chipid);
/* mtk_uart_pdn_enable -- request uart port enter/exit deep idle mode,
* this API is defined in uart driver
*
* @ port - uart port name, Eg: "ttyMT0", "ttyMT1", "ttyMT2"
* @ enable - "1", enable deep idle; "0", disable deep idle
*
* Return 0 if success, else -1
*/
extern unsigned int mtk_uart_pdn_enable(char *port, int enable);
/*******************************************************************************
* F U N C T I O N S
*******************************************************************************
*/
#endif /* _MTK_WCN_CMB_STUB_H_ */