summaryrefslogtreecommitdiffstats
path: root/meta-agl-refhw-gen3/recipes-kernel
diff options
context:
space:
mode:
Diffstat (limited to 'meta-agl-refhw-gen3/recipes-kernel')
-rw-r--r--meta-agl-refhw-gen3/recipes-kernel/linux/files/0001-Add-support-for-TI-WL1837.patch233
-rw-r--r--meta-agl-refhw-gen3/recipes-kernel/linux/files/0002-revert-e233201a.patch47
-rw-r--r--meta-agl-refhw-gen3/recipes-kernel/linux/files/refhw-rcar.cfg28
-rw-r--r--meta-agl-refhw-gen3/recipes-kernel/linux/linux-renesas_%.bbappend2
4 files changed, 299 insertions, 11 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;
diff --git a/meta-agl-refhw-gen3/recipes-kernel/linux/files/0002-revert-e233201a.patch b/meta-agl-refhw-gen3/recipes-kernel/linux/files/0002-revert-e233201a.patch
new file mode 100644
index 0000000..76039be
--- /dev/null
+++ b/meta-agl-refhw-gen3/recipes-kernel/linux/files/0002-revert-e233201a.patch
@@ -0,0 +1,47 @@
+Revert "wl18xx: do not invert IRQ on WLxxxx side"
+
+This reverts commit 2bcfc394307ae164cbbdff74b902af61dc0181b4.
+The hard-coded assumption that the IRQ inversion logic is not
+needed breaks non-Kingfisher users, specifically the WLAN card
+for the AGL reference hardware board.
+
+Signed-off-by: Scott Murray <scott.murray@konsulko.com>
+
+---
+ drivers/net/wireless/ti/wl18xx/main.c | 8 --------
+ 1 file changed, 8 deletions(-)
+
+diff --git a/drivers/net/wireless/ti/wl18xx/main.c b/drivers/net/wireless/ti/wl18xx/main.c
+index 764987101116..0b3cf8477c6c 100644
+--- a/drivers/net/wireless/ti/wl18xx/main.c
++++ b/drivers/net/wireless/ti/wl18xx/main.c
+@@ -865,9 +865,7 @@ static int wl18xx_pre_upload(struct wl1271 *wl)
+ {
+ u32 tmp;
+ int ret;
+-#if 0
+ u16 irq_invert;
+-#endif
+
+ BUILD_BUG_ON(sizeof(struct wl18xx_mac_and_phy_params) >
+ WL18XX_PHY_INIT_MEM_SIZE);
+@@ -920,11 +918,6 @@ static int wl18xx_pre_upload(struct wl1271 *wl)
+ if (ret < 0)
+ goto out;
+
+-#if 0
+- /* We have level translator with inversion on IRQ line so we
+- * set IRQ_TYPE_EDGE_FALLING in DTS, but we do not need to
+- * invert IRQ logic on WLxxxx side!
+- */
+ ret = irq_get_trigger_type(wl->irq);
+ if ((ret == IRQ_TYPE_LEVEL_LOW) || (ret == IRQ_TYPE_EDGE_FALLING)) {
+ wl1271_info("using inverted interrupt logic: %d", ret);
+@@ -944,7 +937,6 @@ static int wl18xx_pre_upload(struct wl1271 *wl)
+
+ ret = wlcore_set_partition(wl, &wl->ptable[PART_PHY_INIT]);
+ }
+-#endif
+
+ out:
+ return ret;
diff --git a/meta-agl-refhw-gen3/recipes-kernel/linux/files/refhw-rcar.cfg b/meta-agl-refhw-gen3/recipes-kernel/linux/files/refhw-rcar.cfg
index fc8afbc..9fa24e9 100644
--- a/meta-agl-refhw-gen3/recipes-kernel/linux/files/refhw-rcar.cfg
+++ b/meta-agl-refhw-gen3/recipes-kernel/linux/files/refhw-rcar.cfg
@@ -3,25 +3,31 @@ CONFIG_USB_NET_AX88179_178A=y
CONFIG_GPIO_SYSFS=y
-CONFIG_RFKILL=y
-
CONFIG_CAN=y
CONFIG_CAN_DEV=y
CONFIG_CAN_RCAR_CANFD=y
-CONFIG_BT=y
-CONFIG_BT_QCA=y
-CONFIG_BT_HCIUART=y
+CONFIG_BT=m
+CONFIG_BT_RFCOMM=m
+CONFIG_BT_BNEP=m
+CONFIG_BT_HIDP=m
+
+CONFIG_BT_HCIUART=m
CONFIG_BT_HCIUART_SERDEV=y
CONFIG_BT_HCIUART_H4=y
-CONFIG_BT_HCIUART_QCA=y
+CONFIG_BT_HCIUART_BCSP=y
+CONFIG_BT_HCIUART_LL=y
+CONFIG_BT_HCIUART_BCM=y
-CONFIG_CFG80211=y
+CONFIG_WEXT_CORE=y
+CONFIG_WEXT_PROC=y
+CONFIG_CFG80211_WEXT=y
CONFIG_MAC80211=y
-CONFIG_ATH_COMMON=y
-CONFIG_WLAN_VENDOR_ATH=y
-CONFIG_ATH10K=y
-CONFIG_ATH10K_PCI=m
+CONFIG_WLAN=y
+CONFIG_WLCORE=m
+CONFIG_WLCORE_SDIO=m
+CONFIG_WL18xx=m
+CONFIG_SND_SOC_WL18XX=y
CONFIG_USB_GADGET=y
CONFIG_USB_RENESAS_USB3=y
diff --git a/meta-agl-refhw-gen3/recipes-kernel/linux/linux-renesas_%.bbappend b/meta-agl-refhw-gen3/recipes-kernel/linux/linux-renesas_%.bbappend
index 82c4a2a..325e507 100644
--- a/meta-agl-refhw-gen3/recipes-kernel/linux/linux-renesas_%.bbappend
+++ b/meta-agl-refhw-gen3/recipes-kernel/linux/linux-renesas_%.bbappend
@@ -4,6 +4,8 @@ SRC_URI_append = " \
file://0001-create-r8a7795-usb-ovc-pinmux-groups.patch \
file://0001-add-agl-refhw.patch \
file://0003-rcar3-dw-hdmi-cec-mute.patch \
+ file://0001-Add-support-for-TI-WL1837.patch \
+ file://0002-revert-e233201a.patch \
file://refhw-rcar.cfg \
"