/* 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 #if 0 //SS-LSI #include #include #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 */