On 02/10/2024 14:08, Karl Chan wrote: > Add device tree source for Linksys EA9350 V3 which is a WiFi router based on the IPQ5018 SoC. > > As of now , only the UART,USB,USB LED,buttons is working.The front PWM LED require the IPQ PWM driver.Therefore the PWM LED isn't configed in the tree. > > Also The original firmware from Linksys can only boot ARM32 kernels. > > As of now There seems to be no way to boot ARM64 kernels on those device. > > However, it is possible to use this device tree by compiling an ARM32 kernel instead. > > Signed-off-by: Karl Chan <exxxxkc@xxxxxxxxxxxxxxx> > --- > arch/arm64/boot/dts/qcom/Makefile | 1 + > .../boot/dts/qcom/ipq5018-linksys-jamaica.dts | 114 ++++++++++++++++++ > 2 files changed, 115 insertions(+) > create mode 100644 arch/arm64/boot/dts/qcom/ipq5018-linksys-jamaica.dts > > diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile > index ae002c7cf126..9ddc1b695478 100644 > --- a/arch/arm64/boot/dts/qcom/Makefile > +++ b/arch/arm64/boot/dts/qcom/Makefile > @@ -12,6 +12,7 @@ dtb-$(CONFIG_ARCH_QCOM) += apq8096-db820c.dtb > dtb-$(CONFIG_ARCH_QCOM) += apq8096-ifc6640.dtb > dtb-$(CONFIG_ARCH_QCOM) += ipq5018-rdp432-c2.dtb > dtb-$(CONFIG_ARCH_QCOM) += ipq5018-tplink-archer-ax55-v1.dtb > +dtb-$(CONFIG_ARCH_QCOM) += ipq5018-linksys-jamaica.dtb > dtb-$(CONFIG_ARCH_QCOM) += ipq5332-rdp441.dtb > dtb-$(CONFIG_ARCH_QCOM) += ipq5332-rdp442.dtb > dtb-$(CONFIG_ARCH_QCOM) += ipq5332-rdp468.dtb > diff --git a/arch/arm64/boot/dts/qcom/ipq5018-linksys-jamaica.dts b/arch/arm64/boot/dts/qcom/ipq5018-linksys-jamaica.dts > new file mode 100644 > index 000000000000..b6cb88884193 > --- /dev/null > +++ b/arch/arm64/boot/dts/qcom/ipq5018-linksys-jamaica.dts > @@ -0,0 +1,114 @@ > +// SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause > + > +/dts-v1/; > + > +/* > + * NOTE: The original firmware from Linksys can only boot ARM32 kernels. > + * > + * As of now There seems to be no way to boot ARM64 kernels on those device. > + * > + * However, it is possible to use this device tree by compiling an ARM32 kernel > + * instead. For clarity and build testing this device tree is maintained next > + * to the other IPQ5018 device trees. However, it is actually used through > + * arch/arm/boot/dts/qcom/qcom-ipq5018-linksys-jamaica.dts > + */ > + > +#include "ipq5018.dtsi" > +#include <dt-bindings/input/input.h> > +#include <dt-bindings/leds/common.h> > +#include <dt-bindings/gpio/gpio.h> > + > + Just one blank line. > +/ { > + model = "Linksys EA9350 V3"; > + compatible = "linksys,jamaica", "qcom,ipq5018"; Please put bindings patch before users. > + > + aliases { > + serial0 = &blsp1_uart1; > + }; > + > + chosen { > + stdout-path = "serial0:115200n8"; > + }; > + > + leds { > + compatible = "gpio-leds"; > + pinctrl-0 = <&led_pins>; > + pinctrl-names = "default"; > + > + led-0 { > + color = <LED_COLOR_ID_WHITE>; > + function = LED_FUNCTION_USB; > + gpios = <&tlmm 19 GPIO_ACTIVE_HIGH>; > + }; > + Drop blank line. > + }; > + > + gpio-keys { > + compatible = "gpio-keys"; > + pinctrl-0 = <&button_pins>; > + pinctrl-names = "default"; > + > + button-0 { > + label = "reset"; > + linux,code = <KEY_RESTART>; > + gpios = <&tlmm 28 GPIO_ACTIVE_LOW>; > + debounce-interval = <60>; > + }; > + > + button-1 { > + label = "wps"; > + linux,code = <KEY_WPS_BUTTON>; > + gpios = <&tlmm 27 GPIO_ACTIVE_LOW>; > + debounce-interval = <60>; > + }; > + }; > + Drop blank line. > +}; > + > +&blsp1_uart1 { > + pinctrl-0 = <&uart1_pins>; > + pinctrl-names = "default"; > + status = "okay"; > +}; > + > +&sleep_clk { > + clock-frequency = <32000>; > +}; > + > +&usbphy0 { > + status = "okay"; > +}; > + > +&usb { > + status = "okay"; > +}; > + > +&usb_dwc { > + dr_mode = "host"; > +}; > + > +&tlmm { Keep alphabetical order (or tlmm goes to the end). > + button_pins: button-pins-state { > + pins = "gpio27", "gpio28"; > + function = "gpio"; > + drive-strength = <8>; > + bias-pull-up; > + }; > + > + led_pins: led-pins-state { > + pins = "gpio19"; > + function = "gpio"; > + drive-strength = <2>; > + bias-disable; > + }; > + Drop blank line. > +}; > + > +&sleep_clk { > + clock-frequency = <32000>; > +}; > + > +&xo_board_clk { > + clock-frequency = <24000000>; > +}; Best regards, Krzysztof