1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 3 #include <southbridge/intel/common/gpio.h> 4 #include <console/console.h> 5 #include <device/device.h> 6 #include <ec/acpi/ec.h> 7 #include <option.h> 8 #include <types.h> 9 10 #include "h8.h" 11 #include "chip.h" 12 13 /* 14 * Controls BDC (Bluetooth daughter card) power. 15 */ h8_bluetooth_enable(int on)16void h8_bluetooth_enable(int on) 17 { 18 if (on) 19 ec_set_bit(0x3a, 4); 20 else 21 ec_clr_bit(0x3a, 4); 22 } 23 24 /* 25 * Detect BDC on supported MBs. 26 */ h8_has_bdc(const struct device * dev)27bool h8_has_bdc(const struct device *dev) 28 { 29 struct ec_lenovo_h8_config *conf = dev->chip_info; 30 31 if (!conf->has_bdc_detection) { 32 printk(BIOS_INFO, "H8: BDC detection not implemented. " 33 "Assuming BDC installed\n"); 34 return true; 35 } 36 37 if (get_gpio(conf->bdc_gpio_num) == conf->bdc_gpio_lvl) { 38 printk(BIOS_INFO, "H8: BDC installed\n"); 39 return true; 40 } 41 42 printk(BIOS_INFO, "H8: BDC not installed\n"); 43 return false; 44 } 45 46 /* 47 * Return BDC NVRAM setting. 48 */ h8_bluetooth_nv_enable(void)49bool h8_bluetooth_nv_enable(void) 50 { 51 return get_uint_option("bluetooth", true); 52 } 53