Skip to content

Commit

Permalink
ARM: dts: rockchip: Add brcm bluetooth for rk3288-veyron
Browse files Browse the repository at this point in the history
This enables the Broadcom uart bluetooth driver on uart0 and gives it
ownership of its gpios. In order to use this, you must enable the
following kconfig options:
- CONFIG_BT_HCIUART_BCM
- CONFIG_SERIAL_DEV

This is applicable to rk3288-veyron series boards that use the bcm43540
wifi+bt chips.

As part of this change, also refactor the pinctrl across the various
boards. All the boards using broadcom bluetooth shouldn't touch the
bt_dev_wake pin.

Signed-off-by: Abhishek Pandit-Subedi <abhishekpandit@chromium.org>
Reviewed-by: Matthias Kaehlcke <mka@chromium.org>
Link: https://lore.kernel.org/r/20191127223909.253873-2-abhishekpandit@chromium.org
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
  • Loading branch information
Abhishek Pandit-Subedi authored and Heiko Stuebner committed Dec 10, 2019
1 parent e42617b commit 8784692
Show file tree
Hide file tree
Showing 11 changed files with 155 additions and 75 deletions.
9 changes: 9 additions & 0 deletions arch/arm/boot/dts/rk3288-veyron-brain.dts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@

/dts-v1/;
#include "rk3288-veyron.dtsi"
#include "rk3288-veyron-broadcom-bluetooth.dtsi"

/ {
model = "Google Brain";
Expand Down Expand Up @@ -40,6 +41,14 @@
};

&pinctrl {
pinctrl-names = "default";
pinctrl-0 = <
/* Common for sleep and wake, but no owners */
&ddr0_retention
&ddrio_pwroff
&global_pwroff
>;

hdmi {
vcc50_hdmi_en: vcc50-hdmi-en {
rockchip,pins = <7 RK_PA2 RK_FUNC_GPIO &pcfg_pull_none>;
Expand Down
22 changes: 22 additions & 0 deletions arch/arm/boot/dts/rk3288-veyron-broadcom-bluetooth.dtsi
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
* Google Veyron (and derivatives) fragment for the Broadcom 43450 bluetooth
* chip.
*
* Copyright 2019 Google, Inc
*/

&uart0 {
bluetooth {
pinctrl-names = "default";
pinctrl-0 = <&bt_host_wake_l>, <&bt_enable_l>,
<&bt_dev_wake>;

compatible = "brcm,bcm43540-bt";
host-wakeup-gpios = <&gpio4 RK_PD7 GPIO_ACTIVE_HIGH>;
shutdown-gpios = <&gpio4 RK_PD5 GPIO_ACTIVE_HIGH>;
device-wakeup-gpios = <&gpio4 RK_PD2 GPIO_ACTIVE_HIGH>;
max-speed = <3000000>;
brcm,bt-pcm-int-params = [01 02 00 01 01];
};
};
21 changes: 0 additions & 21 deletions arch/arm/boot/dts/rk3288-veyron-chromebook.dtsi
Original file line number Diff line number Diff line change
Expand Up @@ -136,27 +136,6 @@
};

&pinctrl {
pinctrl-0 = <
/* Common for sleep and wake, but no owners */
&ddr0_retention
&ddrio_pwroff
&global_pwroff

/* Wake only */
&suspend_l_wake
&bt_dev_wake_awake
>;
pinctrl-1 = <
/* Common for sleep and wake, but no owners */
&ddr0_retention
&ddrio_pwroff
&global_pwroff

/* Sleep only */
&suspend_l_sleep
&bt_dev_wake_sleep
>;

buttons {
ap_lid_int_l: ap-lid-int-l {
rockchip,pins = <0 RK_PA6 RK_FUNC_GPIO &pcfg_pull_up>;
Expand Down
2 changes: 0 additions & 2 deletions arch/arm/boot/dts/rk3288-veyron-fievel.dts
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,6 @@
"google,veyron-fievel-rev0", "google,veyron-fievel",
"google,veyron", "rockchip,rk3288";

/delete-node/ bt-activity;

vccsys: vccsys {
compatible = "regulator-fixed";
regulator-name = "vccsys";
Expand Down
22 changes: 22 additions & 0 deletions arch/arm/boot/dts/rk3288-veyron-jaq.dts
Original file line number Diff line number Diff line change
Expand Up @@ -273,6 +273,28 @@
};

&pinctrl {
pinctrl-names = "default", "sleep";
pinctrl-0 = <
/* Common for sleep and wake, but no owners */
&ddr0_retention
&ddrio_pwroff
&global_pwroff

/* Wake only */
&suspend_l_wake
&bt_dev_wake_awake
>;
pinctrl-1 = <
/* Common for sleep and wake, but no owners */
&ddr0_retention
&ddrio_pwroff
&global_pwroff

/* Sleep only */
&suspend_l_sleep
&bt_dev_wake_sleep
>;

buck-5v {
drv_5v: drv-5v {
rockchip,pins = <7 RK_PC5 RK_FUNC_GPIO &pcfg_pull_none>;
Expand Down
22 changes: 22 additions & 0 deletions arch/arm/boot/dts/rk3288-veyron-jerry.dts
Original file line number Diff line number Diff line change
Expand Up @@ -418,6 +418,28 @@
};

&pinctrl {
pinctrl-names = "default", "sleep";
pinctrl-0 = <
/* Common for sleep and wake, but no owners */
&ddr0_retention
&ddrio_pwroff
&global_pwroff

/* Wake only */
&suspend_l_wake
&bt_dev_wake_awake
>;
pinctrl-1 = <
/* Common for sleep and wake, but no owners */
&ddr0_retention
&ddrio_pwroff
&global_pwroff

/* Sleep only */
&suspend_l_sleep
&bt_dev_wake_sleep
>;

buck-5v {
drv_5v: drv-5v {
rockchip,pins = <7 RK_PC5 RK_FUNC_GPIO &pcfg_pull_none>;
Expand Down
9 changes: 9 additions & 0 deletions arch/arm/boot/dts/rk3288-veyron-mickey.dts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@

/dts-v1/;
#include "rk3288-veyron.dtsi"
#include "rk3288-veyron-broadcom-bluetooth.dtsi"

/ {
model = "Google Mickey";
Expand Down Expand Up @@ -411,6 +412,14 @@
};

&pinctrl {
pinctrl-names = "default";
pinctrl-0 = <
/* Common for sleep and wake, but no owners */
&ddr0_retention
&ddrio_pwroff
&global_pwroff
>;

hdmi {
power_hdmi_on: power-hdmi-on {
rockchip,pins = <7 RK_PB3 RK_FUNC_GPIO &pcfg_pull_none>;
Expand Down
21 changes: 21 additions & 0 deletions arch/arm/boot/dts/rk3288-veyron-minnie.dts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@

/dts-v1/;
#include "rk3288-veyron-chromebook.dtsi"
#include "rk3288-veyron-broadcom-bluetooth.dtsi"

/ {
model = "Google Minnie";
Expand Down Expand Up @@ -344,6 +345,26 @@
};

&pinctrl {
pinctrl-names = "default", "sleep";
pinctrl-0 = <
/* Common for sleep and wake, but no owners */
&ddr0_retention
&ddrio_pwroff
&global_pwroff

/* Wake only */
&suspend_l_wake
>;
pinctrl-1 = <
/* Common for sleep and wake, but no owners */
&ddr0_retention
&ddrio_pwroff
&global_pwroff

/* Sleep only */
&suspend_l_sleep
>;

buck-5v {
drv_5v: drv-5v {
rockchip,pins = <7 RK_PC5 RK_FUNC_GPIO &pcfg_pull_none>;
Expand Down
22 changes: 22 additions & 0 deletions arch/arm/boot/dts/rk3288-veyron-pinky.dts
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,28 @@
};

&pinctrl {
pinctrl-names = "default", "sleep";
pinctrl-0 = <
/* Common for sleep and wake, but no owners */
&ddr0_retention
&ddrio_pwroff
&global_pwroff

/* Wake only */
&suspend_l_wake
&bt_dev_wake_awake
>;
pinctrl-1 = <
/* Common for sleep and wake, but no owners */
&ddr0_retention
&ddrio_pwroff
&global_pwroff

/* Sleep only */
&suspend_l_sleep
&bt_dev_wake_sleep
>;

/delete-node/ lcd;

backlight {
Expand Down
21 changes: 21 additions & 0 deletions arch/arm/boot/dts/rk3288-veyron-speedy.dts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@

/dts-v1/;
#include "rk3288-veyron-chromebook.dtsi"
#include "rk3288-veyron-broadcom-bluetooth.dtsi"
#include "cros-ec-sbs.dtsi"

/ {
Expand Down Expand Up @@ -279,6 +280,26 @@
};

&pinctrl {
pinctrl-names = "default", "sleep";
pinctrl-0 = <
/* Common for sleep and wake, but no owners */
&ddr0_retention
&ddrio_pwroff
&global_pwroff

/* Wake only */
&suspend_l_wake
>;
pinctrl-1 = <
/* Common for sleep and wake, but no owners */
&ddr0_retention
&ddrio_pwroff
&global_pwroff

/* Sleep only */
&suspend_l_sleep
>;

buck-5v {
drv_5v: drv-5v {
rockchip,pins = <7 RK_PC5 RK_FUNC_GPIO &pcfg_pull_none>;
Expand Down
59 changes: 7 additions & 52 deletions arch/arm/boot/dts/rk3288-veyron.dtsi
Original file line number Diff line number Diff line change
Expand Up @@ -23,30 +23,6 @@
reg = <0x0 0x0 0x0 0x80000000>;
};

bt_activity: bt-activity {
compatible = "gpio-keys";
pinctrl-names = "default";
pinctrl-0 = <&bt_host_wake>;

/*
* HACK: until we have an LPM driver, we'll use an
* ugly GPIO key to allow Bluetooth to wake from S3.
* This is expected to only be used by BT modules that
* use UART for comms. For BT modules that talk over
* SDIO we should use a wakeup mechanism related to SDIO.
*
* Use KEY_RESERVED here since that will work as a wakeup but
* doesn't get reported to higher levels (so doesn't confuse
* Chrome).
*/
bt-wake {
label = "BT Wakeup";
gpios = <&gpio4 RK_PD7 GPIO_ACTIVE_HIGH>;
linux,code = <KEY_RESERVED>;
wakeup-source;
};

};

power_button: power-button {
compatible = "gpio-keys";
Expand Down Expand Up @@ -82,22 +58,17 @@
clocks = <&rk808 RK808_CLKOUT1>;
clock-names = "ext_clock";
pinctrl-names = "default";
pinctrl-0 = <&bt_enable_l>, <&wifi_enable_h>;
pinctrl-0 = <&wifi_enable_h>;

/*
* Depending on the actual card populated GPIO4 D4 and D5
* Depending on the actual card populated GPIO4 D4
* correspond to one of these signals on the module:
*
* D4:
* - SDIO_RESET_L_WL_REG_ON
* - PDN (power down when low)
*
* D5:
* - BT_I2S_WS_BT_RFDISABLE_L
* - No connect
*/
reset-gpios = <&gpio4 RK_PD4 GPIO_ACTIVE_LOW>,
<&gpio4 RK_PD5 GPIO_ACTIVE_LOW>;
reset-gpios = <&gpio4 RK_PD4 GPIO_ACTIVE_LOW>;
};

vcc_5v: vcc-5v {
Expand Down Expand Up @@ -481,26 +452,6 @@
};

&pinctrl {
pinctrl-names = "default", "sleep";
pinctrl-0 = <
/* Common for sleep and wake, but no owners */
&ddr0_retention
&ddrio_pwroff
&global_pwroff

/* Wake only */
&bt_dev_wake_awake
>;
pinctrl-1 = <
/* Common for sleep and wake, but no owners */
&ddr0_retention
&ddrio_pwroff
&global_pwroff

/* Sleep only */
&bt_dev_wake_sleep
>;

pcfg_pull_none_drv_8ma: pcfg-pull-none-drv-8ma {
bias-disable;
drive-strength = <8>;
Expand Down Expand Up @@ -622,6 +573,10 @@
bt_dev_wake_awake: bt-dev-wake-awake {
rockchip,pins = <4 RK_PD2 RK_FUNC_GPIO &pcfg_output_high>;
};

bt_dev_wake: bt-dev-wake {
rockchip,pins = <4 RK_PD2 RK_FUNC_GPIO &pcfg_pull_none>;
};
};

tpm {
Expand Down

0 comments on commit 8784692

Please sign in to comment.