#include <linux/clk.h>
#include <linux/iopoll.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/platform_device.h>
#include <linux/property.h>
#include <linux/spmi.h>
#define SWINF_IDLE …
#define SWINF_WFVLDCLR …
#define GET_SWINF(x) …
#define PMIF_CMD_REG_0 …
#define PMIF_CMD_REG …
#define PMIF_CMD_EXT_REG …
#define PMIF_CMD_EXT_REG_LONG …
#define PMIF_DELAY_US …
#define PMIF_TIMEOUT_US …
#define PMIF_CHAN_OFFSET …
#define PMIF_MAX_CLKS …
#define SPMI_OP_ST_BUSY …
struct ch_reg { … };
struct pmif_data { … };
struct pmif { … };
static const char * const pmif_clock_names[] = …;
enum pmif_regs { … };
static const u32 mt6873_regs[] = …;
static const u32 mt8195_regs[] = …;
enum spmi_regs { … };
static const u32 mt6873_spmi_regs[] = …;
static const u32 mt8195_spmi_regs[] = …;
static u32 pmif_readl(struct pmif *arb, enum pmif_regs reg)
{ … }
static void pmif_writel(struct pmif *arb, u32 val, enum pmif_regs reg)
{ … }
static void mtk_spmi_writel(struct pmif *arb, u32 val, enum spmi_regs reg)
{ … }
static bool pmif_is_fsm_vldclr(struct pmif *arb)
{ … }
static int pmif_arb_cmd(struct spmi_controller *ctrl, u8 opc, u8 sid)
{ … }
static int pmif_spmi_read_cmd(struct spmi_controller *ctrl, u8 opc, u8 sid,
u16 addr, u8 *buf, size_t len)
{ … }
static int pmif_spmi_write_cmd(struct spmi_controller *ctrl, u8 opc, u8 sid,
u16 addr, const u8 *buf, size_t len)
{ … }
static const struct pmif_data mt6873_pmif_arb = …;
static const struct pmif_data mt8195_pmif_arb = …;
static int mtk_spmi_probe(struct platform_device *pdev)
{ … }
static void mtk_spmi_remove(struct platform_device *pdev)
{ … }
static const struct of_device_id mtk_spmi_match_table[] = …;
MODULE_DEVICE_TABLE(of, mtk_spmi_match_table);
static struct platform_driver mtk_spmi_driver = …;
module_platform_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;