kernel_samsung_a34x-permissive/drivers/misc/mediatek/include/mt-plat/mtk-clkbuf-bridge.h
2024-04-28 15:49:01 +02:00

81 lines
2.1 KiB
C
Executable file

/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (c) 2019 MediaTek Inc.
*/
#ifndef __MTK_CLK_BUF_BRIDGE_H__
#define __MTK_CLK_BUF_BRIDGE_H__
enum clk_buf_ret_type {
CLK_BUF_DISABLE = 0,
CLK_BUF_ENABLE = 1,
CLK_BUF_NOT_SUPPORT = 2,
CLK_BUF_OK = 3,
CLK_BUF_FAIL = 4,
};
/* clk_buf_id: users of clock buffer */
#ifndef _clk_buf_id_
#define _clk_buf_id_
enum clk_buf_id {
CLK_BUF_BB_MD = 0,
CLK_BUF_CONN,
CLK_BUF_NFC,
CLK_BUF_RF,
CLK_BUF_UFS = 6,
CLK_BUF_INVALID
};
#endif
/* xo_id: clock buffer list */
#ifndef _xo_id_
#define _xo_id_
enum xo_id {
XO_SOC = 0,
XO_WCN,
XO_NFC,
XO_CEL,
XO_AUD, /* Disabled */
XO_PD, /* Disabled */
XO_EXT, /* UFS */
XO_NUMBER
};
#endif
enum {
BBLPM_SKIP = (1 << 0),
BBLPM_WCN = (1 << XO_WCN),
BBLPM_NFC = (1 << XO_NFC),
BBLPM_CEL = (1 << XO_CEL),
BBLPM_EXT = (1 << XO_EXT),
};
/*******************************************************************************
* Bridging from platform -> clkbuf.ko
******************************************************************************/
typedef u8 (*clk_buf_bridge_get_xo_ctrl_cb)(enum xo_id);
typedef int (*clk_buf_bridge_get_enter_bblpm_cond_cb)(u32 *bblpm_cond);
typedef int (*clk_buf_bridge_set_xo_ctrl_cb)(enum clk_buf_id, bool);
typedef int (*clk_buf_bridge_set_flight_mode_cb)(bool);
typedef int (*clk_buf_bridge_set_bblpm_cb)(bool);
typedef void (*clk_buf_bridge_dump_log_cb)(void);
struct clk_buf_bridge {
clk_buf_bridge_get_xo_ctrl_cb get_xo_ctrl_cb;
clk_buf_bridge_get_enter_bblpm_cond_cb get_bblpm_enter_cond_cb;
clk_buf_bridge_set_xo_ctrl_cb set_xo_ctrl_cb;
clk_buf_bridge_set_flight_mode_cb set_flight_mode_cb;
clk_buf_bridge_set_bblpm_cb set_bblpm_cb;
clk_buf_bridge_dump_log_cb dump_log_cb;
};
void clk_buf_export_platform_bridge_register(struct clk_buf_bridge *cb);
void clk_buf_export_platform_bridge_unregister(void);
extern enum clk_buf_ret_type clk_buf_ctrl(enum clk_buf_id id, bool onoff);
extern enum clk_buf_ret_type clk_buf_set_by_flightmode(bool on);
extern void clk_buf_control_bblpm(bool on);
extern void clk_buf_dump_clkbuf_log(void);
extern u8 clk_buf_get_xo_en_sta(enum xo_id id);
extern u32 clk_buf_bblpm_enter_cond(void);
#endif