This patch adds the wifi to the ASUS Tinker Board (S) machines. Unfortunatly neither the Tinker Board nor the Tinker Board S schematic indicate how the WiFi is wired up on these devices. The WiFi is provided by the RTL8723BS device, that has sdio WiFi and UART Bluetooth. This patch just adds the WiFi interface. With no schematic, most of the wiring has been derived from the ASUS patch to Debian: https://github.com/TinkerBoard/debian_kernel/commit/6a3128ade33f758887048578ada61a4b7ab8e678 In conjunction with the pin out of the RTL8723BS device: http://files.pine64.org/doc/datasheet/pine64/RTL8723BS.pdf http://cit.odessa.ua/media/pdf/Intel-Compute-Stick/FN-Link_F23BDSM25-W1.pdf The only unusual part is that to bring the card up, both the pins RK_PD3 and RK_PD4 need to be pulled. Why this needs to be done is not clear, best explaination is that they are connected to the RTL8723BS pins WL_DIS# and BT_DIS#, which the data sheet vaguely says: Shared with GPIO9 This Pin Can Externally Shutdown the RTL8723BS WLAN function when BT_DISn is Pulled Low. When this pin deasserted, SDIO interface will be disabled. This pin can also support the WLAN Ra dio-off function with host interface remaining connected. Anyway extensive testing the TheSaint on ArchLinux Arm Forum https://archlinuxarm.org/forum/viewtopic.php?f=44&t=13064&start=120#p60548 Signed-off-by: David Summers <beagleboard@xxxxxxxxxxxxxxxxxxx> Signed-off-by: Stefan Wahren <stefan.wahren@xxxxxxxx> --- arch/arm/boot/dts/rk3288-tinker.dtsi | 39 +++++++++++++++++++++++++--- 1 file changed, 36 insertions(+), 3 deletions(-) diff --git a/arch/arm/boot/dts/rk3288-tinker.dtsi b/arch/arm/boot/dts/rk3288-tinker.dtsi index fceaeed44e34..e1796f340eef 100644 --- a/arch/arm/boot/dts/rk3288-tinker.dtsi +++ b/arch/arm/boot/dts/rk3288-tinker.dtsi @@ -3,8 +3,9 @@ * Copyright (c) 2017 Fuzhou Rockchip Electronics Co., Ltd. */ #include "rk3288.dtsi" #include <dt-bindings/input/input.h> +#include <dt-bindings/clock/rockchip,rk808.h> / { chosen { @@ -98,6 +97,15 @@ startup-delay-us = <100000>; vin-supply = <&vcc_io>; }; + + sdio_pwrseq: sdio-pwrseq { + compatible = "mmc-pwrseq-simple"; + clocks = <&rk808 RK808_CLKOUT1>; + clock-names = "ext_clock"; + pinctrl-names = "default"; + pinctrl-0 = <&wifi_enable>; + reset-gpios = <&gpio4 RK_PD3 GPIO_ACTIVE_LOW>, <&gpio4 RK_PD4 GPIO_ACTIVE_LOW>; + }; }; &cpu0 { @@ -337,8 +345,8 @@ &io_domains { status = "okay"; - sdcard-supply = <&vccio_sd>; + wifi-supply = <&vcc_18>; }; &pinctrl { @@ -417,6 +425,12 @@ rockchip,pins = <7 8 RK_FUNC_GPIO &pcfg_pull_none>; }; }; + + sdio { + wifi_enable: wifi-enable { + rockchip,pins = <4 RK_PD3 RK_FUNC_GPIO &pcfg_pull_none>, <4 RK_PD4 RK_FUNC_GPIO &pcfg_pull_none>; + }; + }; }; &pwm0 { @@ -440,6 +454,25 @@ vqmmc-supply = <&vccio_sd>; }; +&sdio0 { + bus-width = <4>; + cap-sd-highspeed; + cap-sdio-irq; + keep-power-in-suspend; + mmc-pwrseq = <&sdio_pwrseq>; + non-removable; + pinctrl-names = "default"; + pinctrl-0 = <&sdio0_bus4>, <&sdio0_cmd>, <&sdio0_clk>, <&sdio0_int>; + max-frequency = <50000000>; + sd-uhs-sdr12; + sd-uhs-sdr25; + sd-uhs-sdr50; + sd-uhs-ddr50; + vmmc-supply = <&vcc_io>; + vqmmc-supply = <&vcc_18>; + status = "okay"; +}; + &tsadc { rockchip,hw-tshut-mode = <1>; /* tshut mode 0:CRU 1:GPIO */ rockchip,hw-tshut-polarity = <1>; /* tshut polarity 0:LOW 1:HIGH */ -- beagleboard@xxxxxxxxxxxxxxxxxxx