/* * Copyright (c) 2013-2018,2020, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and * only version 2 as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * */ #ifndef __LINUX_BLUETOOTH_POWER_H #define __LINUX_BLUETOOTH_POWER_H /* * voltage regulator information required for configuring the * bluetooth chipset */ struct bt_power_vreg_data { /* voltage regulator handle */ struct regulator *reg; /* regulator name */ const char *name; /* voltage levels to be set */ unsigned int low_vol_level; unsigned int high_vol_level; /* current level to be set */ unsigned int load_uA; /* * is set voltage supported for this regulator? * false => set voltage is not supported * true => set voltage is supported * * Some regulators (like gpio-regulators, LVS (low voltage swtiches) * PMIC regulators) dont have the capability to call * regulator_set_voltage or regulator_set_optimum_mode * Use this variable to indicate if its a such regulator or not */ bool set_voltage_sup; /* is this regulator enabled? */ bool is_enabled; }; struct bt_power_clk_data { /* clock regulator handle */ struct clk *clk; /* clock name */ const char *name; /* is this clock enabled? */ bool is_enabled; }; /* * Platform data for the bluetooth power driver. */ struct bluetooth_power_platform_data { /* Bluetooth reset gpio */ int bt_gpio_sys_rst; /* Bluetooth 3p3 gpio */ int bt_gpio_3p3_en; /* Bluetooth 1p3 gpio */ int bt_gpio_1p3_en; struct device *slim_dev; /* VDDIO voltage regulator */ struct bt_power_vreg_data *vreg_info; /* bluetooth reference clock */ struct bt_power_clk_data *bt_chip_clk; /* Optional: Bluetooth power setup function */ int (*bt_power_setup)(int); }; int bt_register_slimdev(struct device *dev); int get_chipset_version(void); #define BT_CMD_SLIM_TEST 0xbfac #define BT_CMD_PWR_CTRL 0xbfad #define BT_CMD_CHIPSET_VERS 0xbfae #endif /* __LINUX_BLUETOOTH_POWER_H */