coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
bluetooth.c
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 
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  */
16 void 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  */
27 bool 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  */
50 {
51  return get_uint_option("bluetooth", true);
52 }
bool h8_has_bdc(const struct device *dev)
Definition: bluetooth.c:27
bool h8_bluetooth_nv_enable(void)
Definition: bluetooth.c:49
void h8_bluetooth_enable(int on)
Definition: bluetooth.c:16
#define printk(level,...)
Definition: stdlib.h:16
void ec_set_bit(u8 addr, u8 bit)
Definition: ec.c:133
void ec_clr_bit(u8 addr, u8 bit)
Definition: ec.c:138
int get_gpio(int community_base, int pad0_offset)
Definition: gpio_support.c:148
#define BIOS_INFO
BIOS_INFO - Expected events.
Definition: loglevel.h:113
unsigned int get_uint_option(const char *name, const unsigned int fallback)
Definition: option.c:116
Definition: device.h:107
DEVTREE_CONST void * chip_info
Definition: device.h:164
u8 has_bdc_detection
Definition: chip.h:35