aboutsummaryrefslogtreecommitdiffstats
path: root/meta-agl-refhw-gen3/recipes-kernel/linux/files/0001-Add-support-for-TI-WL1837.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-agl-refhw-gen3/recipes-kernel/linux/files/0001-Add-support-for-TI-WL1837.patch')
-rw-r--r--meta-agl-refhw-gen3/recipes-kernel/linux/files/0001-Add-support-for-TI-WL1837.patch233
1 files changed, 233 insertions, 0 deletions
diff --git a/meta-agl-refhw-gen3/recipes-kernel/linux/files/0001-Add-support-for-TI-WL1837.patch b/meta-agl-refhw-gen3/recipes-kernel/linux/files/0001-Add-support-for-TI-WL1837.patch
new file mode 100644
index 0000000..cfd1276
--- /dev/null
+++ b/meta-agl-refhw-gen3/recipes-kernel/linux/files/0001-Add-support-for-TI-WL1837.patch
@@ -0,0 +1,233 @@
+Add support for TI WL1837
+
+This patch adds description of TI WL1837 and links interfaces
+to communicate with the IC.
+
+Signed-off-by: ito.yoshiki001 <ito.yoshiki001@jp.panasonic.com>
+
+Reworked:
+- WL1837 specific devicetree configuration moved to the board
+ specific r8a7795-agl-refhw.dts from agl-refhw-common.dtsi.
+- Switched to HCI_LL driver for BT support to match other upstream
+ users and prepare for btwilink driver going away (dropped in 5.5
+ upstream).
+- WLAN_PWR_EN enabling moved to GPIO initialization to work around
+ BT initialization problems.
+- Update sound configuration to enable WL1837 BT audio, and disable
+ the HDMI1 audio left over from the original Salvator-X devicetree.
+ The latter is clean up, as HDMI1 as defined uses a SSI that
+ conflicts with the ak4613 configuration.
+
+Signed-off-by: Scott Murray <scott.murray@konsulko.com>
+---
+ arch/arm64/boot/dts/renesas/agl-refhw-common.dtsi | 37 +++++++---
+ arch/arm64/boot/dts/renesas/r8a7795-agl-refhw.dts | 84 ++++++++++++++++++-----
+ 2 files changed, 94 insertions(+), 27 deletions(-)
+
+diff --git a/arch/arm64/boot/dts/renesas/agl-refhw-common.dtsi b/arch/arm64/boot/dts/renesas/agl-refhw-common.dtsi
+index 796ac4c078e0..6f34b54c6ce1 100644
+--- a/arch/arm64/boot/dts/renesas/agl-refhw-common.dtsi
++++ b/arch/arm64/boot/dts/renesas/agl-refhw-common.dtsi
+@@ -183,6 +183,18 @@
+ 1800000 0>;
+ };
+
++ wlan_en: regulator-wlan_en {
++ compatible = "regulator-fixed";
++
++ regulator-name = "wlan-en-regulator";
++ regulator-min-microvolt = <3300000>;
++ regulator-max-microvolt = <3300000>;
++
++ gpio = <&gpio7 2 GPIO_ACTIVE_HIGH>;
++ startup-delay-us = <70000>;
++ enable-active-high;
++ };
++
+ hdmi0-out {
+ compatible = "hdmi-connector";
+ label = "HDMI0 OUT";
+@@ -672,7 +684,8 @@
+ };
+
+ sound_pins: sound {
+- groups = "ssi349_ctrl", "ssi3_data", "ssi4_data";
++ groups = "ssi349_ctrl", "ssi3_data", "ssi4_data",
++ "ssi78_ctrl", "ssi7_data", "ssi8_data";
+ function = "ssi";
+ };
+
+@@ -827,24 +840,28 @@
+ };
+
+ &sdhi3 {
++ /* Default WLAN card configuration */
+ pinctrl-0 = <&sdhi3_pins>;
+- pinctrl-1 = <&sdhi3_pins_uhs>;
+- pinctrl-names = "default", "state_uhs";
++ pinctrl-names = "default";
+
+- vmmc-supply = <&vcc_sdhi3>;
+- vqmmc-supply = <&vccq_sdhi3>;
+- cd-gpios = <&gpio4 15 GPIO_ACTIVE_LOW>;
+- wp-gpios = <&gpio4 16 GPIO_ACTIVE_HIGH>;
++ vmmc-supply = <&wlan_en>;
+ bus-width = <4>;
+- sd-uhs-sdr50;
+- sd-uhs-sdr104;
+- status = "okay";
++ no-1-8-v;
++ non-removable;
++ cap-power-off-card;
++ keep-power-in-suspend;
++
++ /* leave disabled by default */
+ };
+
+ &ssi4 {
+ shared-pin;
+ };
+
++&ssi8 {
++ shared-pin;
++};
++
+ &usb_extal_clk {
+ clock-frequency = <50000000>;
+ };
+diff --git a/arch/arm64/boot/dts/renesas/r8a7795-agl-refhw.dts b/arch/arm64/boot/dts/renesas/r8a7795-agl-refhw.dts
+index 83638a6228c0..97cc6e08ee8f 100644
+--- a/arch/arm64/boot/dts/renesas/r8a7795-agl-refhw.dts
++++ b/arch/arm64/boot/dts/renesas/r8a7795-agl-refhw.dts
+@@ -119,6 +119,23 @@
+ };
+ };
+
++ sound_wl18xx {
++ compatible = "audio-graph-card";
++ label = "wl18xx";
++
++ dais = <&rsnd_port2>;
++ };
++
++ wl18xx_pcm {
++ compatible = "ti,wl18xx-pcm";
++ status = "okay";
++
++ port {
++ wl18xx_endpoint: endpoint {
++ remote-endpoint = <&rsnd_for_wl18xx>;
++ };
++ };
++ };
+ };
+
+ &adsp {
+@@ -155,8 +172,14 @@
+
+ &sound_card {
+ dais = <&rsnd_port0 /* ak4613 */
+- &rsnd_port1 /* HDMI0 */
+- &rsnd_port2>; /* HDMI1 */
++ &rsnd_port1>; /* HDMI0 */
++};
++
++&hscif0 {
++ bluetooth {
++ compatible = "ti,wl1837-st";
++ enable-gpios = <&gpio7 3 GPIO_ACTIVE_HIGH>;
++ };
+ };
+
+ &hdmi0 {
+@@ -192,12 +215,6 @@
+ remote-endpoint = <&hdmi1_con>;
+ };
+ };
+- port@2 {
+- reg = <2>;
+- dw_hdmi1_snd_in: endpoint {
+- remote-endpoint = <&rsnd_endpoint2>;
+- };
+- };
+ };
+ };
+
+@@ -215,8 +232,11 @@
+ };
+
+ &rcar_sound {
++ /* Multi DAI */
++ #sound-dai-cells = <1>;
++
+ ports {
+- /* rsnd_port0 is on salvator-common */
++ /* rsnd_port0 is in agl-refhw-common */
+ rsnd_port1: port@1 {
+ reg = <1>;
+ rsnd_endpoint1: endpoint {
+@@ -231,14 +251,15 @@
+ };
+ rsnd_port2: port@2 {
+ reg = <2>;
+- rsnd_endpoint2: endpoint {
+- remote-endpoint = <&dw_hdmi1_snd_in>;
++ rsnd_for_wl18xx: endpoint {
++ remote-endpoint = <&wl18xx_endpoint>;
+
+- dai-format = "i2s";
+- bitclock-master = <&rsnd_endpoint2>;
+- frame-master = <&rsnd_endpoint2>;
++ simple-audio-card,format = "i2s";
++ bitclock-master = <&wl18xx_endpoint>;
++ frame-master = <&wl18xx_endpoint>;
+
+- playback = <&ssi3>;
++ playback = <&ssi7>;
++ capture = <&ssi8>;
+ };
+ };
+ };
+@@ -373,11 +394,40 @@
+ };
+
+ &sdhi3 {
+- /delete-property/ wp-gpios;
+- non-removable;
++ status = "okay";
++
++ max-frequency = <50000000>;
++
++ #address-cells = <1>;
++ #size-cells = <0>;
++ wlcore: wlcore@2 {
++ compatible = "ti,wl1837";
++ reg = <2>;
++ interrupt-parent = <&gpio1>;
++ interrupts = <25 IRQ_TYPE_EDGE_FALLING>;
++ };
+ };
+
+ &gpio6 {
++ /*
++ * Enable WLAN_PWR_EN right from boot to get reliable BT
++ * initialization, as doing it at SDHI initialization
++ * does not seem to do so, no matter how much BT_EN is
++ * delayed.
++ *
++ * This is perhaps not ideal per the requirements described
++ * in the "Level Shifting WL18xx/WL18xxMOD/WL18xxQ I/Os"
++ * document (SWRA448A)[1], but the BT UART seems unusable
++ * otherwise.
++ *
++ * [1] https://www.ti.com/lit/an/swra448a/swra448a.pdf
++ */
++ wlan-pwr-en {
++ gpio-hog;
++ gpios = <9 GPIO_ACTIVE_HIGH>;
++ output-high;
++ };
++
+ /* Enable the CAN 1 & 2 transceivers */
+ can-1-transceiver-stb {
+ gpio-hog;