100 lines
2.8 KiB
C
Executable file
100 lines
2.8 KiB
C
Executable file
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
/*
|
|
* Copyright (c) 2016-2021, The Linux Foundation. All rights reserved.
|
|
*/
|
|
|
|
#ifndef __LINUX_BLUETOOTH_POWER_H
|
|
#define __LINUX_BLUETOOTH_POWER_H
|
|
|
|
#include <linux/types.h>
|
|
#if 0 //SS-LSI
|
|
#include <linux/mailbox_client.h>
|
|
#include <linux/mailbox/qmp.h>
|
|
#endif
|
|
|
|
/*
|
|
* voltage regulator information required for configuring the
|
|
* bluetooth chipset
|
|
*/
|
|
enum bt_power_modes {
|
|
BT_POWER_DISABLE = 0,
|
|
BT_POWER_ENABLE,
|
|
BT_POWER_RETENTION
|
|
};
|
|
|
|
struct log_index {
|
|
int init;
|
|
int crash;
|
|
};
|
|
|
|
struct bt_power_vreg_data {
|
|
struct regulator *reg; /* voltage regulator handle */
|
|
const char *name; /* regulator name */
|
|
u32 min_vol; /* min voltage level */
|
|
u32 max_vol; /* max voltage level */
|
|
u32 load_curr; /* current */
|
|
bool is_enabled; /* is this regulator enabled? */
|
|
bool is_retention_supp; /* does this regulator support retention mode */
|
|
struct log_index indx; /* Index for reg. w.r.t init & crash */
|
|
};
|
|
|
|
struct bt_power {
|
|
char compatible[32];
|
|
struct bt_power_vreg_data *vregs;
|
|
int num_vregs;
|
|
};
|
|
|
|
struct bt_power_clk_data {
|
|
struct clk *clk; /* clock regulator handle */
|
|
const char *name; /* clock name */
|
|
bool is_enabled; /* is this clock enabled? */
|
|
};
|
|
|
|
/*
|
|
* Platform data for the bluetooth power driver.
|
|
*/
|
|
struct btpower_platform_data {
|
|
struct platform_device *pdev;
|
|
int bt_gpio_sys_rst; /* Bluetooth reset gpio */
|
|
int wl_gpio_sys_rst; /* Wlan reset gpio */
|
|
int bt_gpio_sw_ctrl; /* Bluetooth sw_ctrl gpio */
|
|
int bt_gpio_debug; /* Bluetooth debug gpio */
|
|
int xo_gpio_clk; /* XO clock gpio*/
|
|
//SS-LSI OOB
|
|
/* Bluetooth bt_wake */
|
|
int bt_gpio_bt_wake;
|
|
/* Bluetooth bt_host_wake */
|
|
int bt_gpio_host_wake;
|
|
/* Bluetooth irq */
|
|
int irq;
|
|
struct device *slim_dev;
|
|
struct bt_power_vreg_data *vreg_info; /* VDDIO voltage regulator */
|
|
struct bt_power_clk_data *bt_chip_clk; /* bluetooth reference clock */
|
|
int (*bt_power_setup)(int id); /* Bluetooth power setup function */
|
|
char compatible[32]; /*Bluetooth SoC name */
|
|
int num_vregs;
|
|
#if 0 //SS-LSI
|
|
struct mbox_client mbox_client_data;
|
|
struct mbox_chan *mbox_chan;
|
|
const char *vreg_ipa;
|
|
#else // SS-LSI Pamir
|
|
struct regulator *bt_vdd; /* WL_BUCK_EN for 0.95v , 1.35v power rails*/
|
|
#endif
|
|
};
|
|
|
|
int btpower_register_slimdev(struct device *dev);
|
|
int btpower_get_chipset_version(void);
|
|
int btpower_aop_mbox_init(struct btpower_platform_data *pdata);
|
|
|
|
#define BT_CMD_SLIM_TEST 0xbfac
|
|
#define BT_CMD_PWR_CTRL 0xbfad
|
|
#define BT_CMD_CHIPSET_VERS 0xbfae
|
|
#define BT_CMD_GET_CHIPSET_ID 0xbfaf
|
|
#define BT_CMD_CHECK_SW_CTRL 0xbfb0
|
|
#define BT_CMD_GETVAL_POWER_SRCS 0xbfb1
|
|
#define BT_CMD_SET_IPA_TCS_INFO 0xbfc0
|
|
|
|
/* total number of power src */
|
|
#define BT_POWER_SRC_SIZE 28
|
|
|
|
#endif /* __LINUX_BLUETOOTH_POWER_H */
|