mb/google/zork: Add Bluetooth reset gpios to devicetree
Add bluetooth reset gpio 143 to dalboz baseboard devicetree Add bluetooth reset gpio 14 to trembyle baseboard devicetree Remove bluetooth reset_gpio when not supported on a specific board variant. BUG=b:157580724 TEST=Boot Ezkinil with Realtek 8822CE, observe log [ 12.240720] Bluetooth: af_bluetooth.c:bt_init() HCI device and connection manager initialized [ 12.249272] Bluetooth: hci_sock.c:hci_sock_init() HCI socket layer initialized [ 12.256520] Bluetooth: l2cap_sock.c:l2cap_init_sockets() L2CAP socket layer initialized [ 12.264575] Bluetooth: sco.c:sco_init() SCO socket layer initialized [ 12.273700] usb 3-2: GPIO lookup for consumer reset [ 12.273702] usb 3-2: using ACPI for GPIO lookup [ 12.273705] acpi device:18: GPIO: looking up reset-gpios [ 12.273707] acpi device:18: GPIO: looking up reset-gpio [ 12.273711] acpi device:18: GPIO: _DSD returned device:18 0 0 0 [ 12.273737] gpio gpiochip0: Persistence not supported for GPIO 14 [ 12.273960] usbcore: registered new interface driver btusb Change-Id: I14e3ef099d5b8f48c915b41284039b3508dec975 Signed-off-by: Rob Barnes <robbarnes@google.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/42832 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Furquan Shaikh <furquan@google.com>
This commit is contained in:
parent
a223e65db2
commit
56e889cedb
|
@ -135,6 +135,7 @@ static void mainboard_configure_gpios(void)
|
||||||
static void mainboard_devtree_update(void)
|
static void mainboard_devtree_update(void)
|
||||||
{
|
{
|
||||||
variant_audio_update();
|
variant_audio_update();
|
||||||
|
variant_bluetooth_update();
|
||||||
variant_devtree_update();
|
variant_devtree_update();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -235,6 +235,7 @@ chip soc/amd/picasso
|
||||||
chip drivers/usb/acpi
|
chip drivers/usb/acpi
|
||||||
register "desc" = ""Bluetooth""
|
register "desc" = ""Bluetooth""
|
||||||
register "type" = "UPC_TYPE_INTERNAL"
|
register "type" = "UPC_TYPE_INTERNAL"
|
||||||
|
register "reset_gpio" = "ACPI_GPIO_OUTPUT_ACTIVE_HIGH(GPIO_143)"
|
||||||
device usb 2.5 on end
|
device usb 2.5 on end
|
||||||
end
|
end
|
||||||
chip drivers/usb/acpi
|
chip drivers/usb/acpi
|
||||||
|
|
|
@ -263,6 +263,7 @@ chip soc/amd/picasso
|
||||||
chip drivers/usb/acpi
|
chip drivers/usb/acpi
|
||||||
register "desc" = ""Bluetooth""
|
register "desc" = ""Bluetooth""
|
||||||
register "type" = "UPC_TYPE_INTERNAL"
|
register "type" = "UPC_TYPE_INTERNAL"
|
||||||
|
register "reset_gpio" = "ACPI_GPIO_OUTPUT_ACTIVE_HIGH(GPIO_14)"
|
||||||
device usb 2.5 on end
|
device usb 2.5 on end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -282,6 +283,7 @@ chip soc/amd/picasso
|
||||||
chip drivers/usb/acpi
|
chip drivers/usb/acpi
|
||||||
register "desc" = ""Bluetooth""
|
register "desc" = ""Bluetooth""
|
||||||
register "type" = "UPC_TYPE_INTERNAL"
|
register "type" = "UPC_TYPE_INTERNAL"
|
||||||
|
register "reset_gpio" = "ACPI_GPIO_OUTPUT_ACTIVE_HIGH(GPIO_14)"
|
||||||
device usb 2.1 on end
|
device usb 2.1 on end
|
||||||
end
|
end
|
||||||
chip drivers/usb/acpi
|
chip drivers/usb/acpi
|
||||||
|
|
|
@ -35,6 +35,8 @@ const struct soc_amd_gpio *variant_sleep_gpio_table(size_t *size, int slp_typ);
|
||||||
void variant_devtree_update(void);
|
void variant_devtree_update(void);
|
||||||
/* Update audio configuration in devicetree during ramstage. */
|
/* Update audio configuration in devicetree during ramstage. */
|
||||||
void variant_audio_update(void);
|
void variant_audio_update(void);
|
||||||
|
/* Update bluetooth configuration in devicetree during ramstage. */
|
||||||
|
void variant_bluetooth_update(void);
|
||||||
/* Configure PCIe GPIOs as per variant sequencing requirements. */
|
/* Configure PCIe GPIOs as per variant sequencing requirements. */
|
||||||
void variant_pcie_gpio_configure(void);
|
void variant_pcie_gpio_configure(void);
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,10 @@
|
||||||
|
|
||||||
#include <acpi/acpi_device.h>
|
#include <acpi/acpi_device.h>
|
||||||
#include <baseboard/variants.h>
|
#include <baseboard/variants.h>
|
||||||
|
#include <console/console.h>
|
||||||
|
#include <device/device.h>
|
||||||
#include <drivers/amd/i2s_machine_dev/chip.h>
|
#include <drivers/amd/i2s_machine_dev/chip.h>
|
||||||
|
#include <drivers/usb/acpi/chip.h>
|
||||||
#include <ec/google/chromeec/ec.h>
|
#include <ec/google/chromeec/ec.h>
|
||||||
#include <soc/gpio.h>
|
#include <soc/gpio.h>
|
||||||
#include <soc/pci_devs.h>
|
#include <soc/pci_devs.h>
|
||||||
|
@ -47,3 +50,88 @@ void variant_audio_update(void)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static const struct device_path xhci0_bt_path[] = {
|
||||||
|
{
|
||||||
|
.type = DEVICE_PATH_PCI,
|
||||||
|
.pci.devfn = PCIE_GPP_A_DEVFN
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.type = DEVICE_PATH_PCI,
|
||||||
|
.pci.devfn = XHCI0_DEVFN
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.type = DEVICE_PATH_USB,
|
||||||
|
.usb.port_type = 0,
|
||||||
|
.usb.port_id = 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.type = DEVICE_PATH_USB,
|
||||||
|
.usb.port_type = 2,
|
||||||
|
.usb.port_id = 5
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
static const struct device_path xhci1_bt_path[] = {
|
||||||
|
{
|
||||||
|
.type = DEVICE_PATH_PCI,
|
||||||
|
.pci.devfn = PCIE_GPP_A_DEVFN
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.type = DEVICE_PATH_PCI,
|
||||||
|
.pci.devfn = XHCI1_DEVFN
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.type = DEVICE_PATH_USB,
|
||||||
|
.usb.port_type = 0,
|
||||||
|
.usb.port_id = 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.type = DEVICE_PATH_USB,
|
||||||
|
.usb.port_type = 2,
|
||||||
|
.usb.port_id = 1
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Removes reset_gpio from bluetooth device in device tree.
|
||||||
|
*
|
||||||
|
* The bluetooth device may be on XHCI0 or XHCI1 depending on SOC.
|
||||||
|
* There's no harm in removing from both here.
|
||||||
|
*/
|
||||||
|
static void baseboard_remove_bluetooth_reset_gpio(void)
|
||||||
|
{
|
||||||
|
const struct device *xhci0_bt_dev, *xhci1_bt_dev;
|
||||||
|
struct drivers_usb_acpi_config *xhci0_bt_cfg, *xhci1_bt_cfg;
|
||||||
|
|
||||||
|
xhci0_bt_dev = find_dev_nested_path(
|
||||||
|
pci_root_bus(), xhci0_bt_path, ARRAY_SIZE(xhci0_bt_path));
|
||||||
|
if (!xhci0_bt_dev) {
|
||||||
|
printk(BIOS_ERR, "%s: Failed to find bluetooth device on XHCI0!", __func__);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
/* config_of dies on failure, so a NULL check is not required */
|
||||||
|
xhci0_bt_cfg = config_of(xhci0_bt_dev);
|
||||||
|
xhci0_bt_cfg->reset_gpio.pin_count = 0;
|
||||||
|
|
||||||
|
/* There's no bluetooth device on XHCI1 on Dalboz */
|
||||||
|
if (CONFIG(BOARD_GOOGLE_BASEBOARD_DALBOZ))
|
||||||
|
return;
|
||||||
|
|
||||||
|
xhci1_bt_dev = find_dev_nested_path(
|
||||||
|
pci_root_bus(), xhci1_bt_path, ARRAY_SIZE(xhci1_bt_path));
|
||||||
|
if (!xhci1_bt_dev) {
|
||||||
|
printk(BIOS_ERR, "%s: Failed to find bluetooth device on XHCI1!", __func__);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
xhci1_bt_cfg = config_of(xhci1_bt_dev);
|
||||||
|
xhci1_bt_cfg->reset_gpio.pin_count = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void variant_bluetooth_update(void)
|
||||||
|
{
|
||||||
|
if (CONFIG(BOARD_GOOGLE_BASEBOARD_DALBOZ) || variant_uses_v3_schematics())
|
||||||
|
return;
|
||||||
|
|
||||||
|
baseboard_remove_bluetooth_reset_gpio();
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue