aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/ipq40xx/files/arch/arm
diff options
context:
space:
mode:
authorStefan Schake <stefan.schake@devolo.de>2020-10-02 14:32:55 +0200
committerPetr Štetiar <ynezz@true.cz>2020-12-22 20:55:40 +0100
commitd3c88811942a9dc9bbb01ca0443ae9cd790d1988 (patch)
tree26c2065707446480d9a664591452ea1bf3269e05 /target/linux/ipq40xx/files/arch/arm
parentceb612e463fc0dc6fbd7be66dc1a244544213c24 (diff)
downloadupstream-d3c88811942a9dc9bbb01ca0443ae9cd790d1988.tar.gz
upstream-d3c88811942a9dc9bbb01ca0443ae9cd790d1988.tar.bz2
upstream-d3c88811942a9dc9bbb01ca0443ae9cd790d1988.zip
ipq40xx: add support for devolo Magic 2 WiFi next
SOC: IPQ4018 / QCA Dakota CPU: Quad-Core ARMv7 Processor rev 5 (v71) Cortex-A7 DRAM: 256 MiB NOR: 32 MiB ETH: Qualcomm Atheros QCA8075 (2 ports) PLC: MaxLinear G.hn 88LX5152 WLAN1: Qualcomm Atheros QCA4018 2.4GHz 802.11bgn 2:2x2 WLAN2: Qualcomm Atheros QCA4018 5GHz 802.11a/n/ac 2:2x2 INPUT: RESET, WiFi, PLC Button LEDS: red/white home, white WiFi To modify a retail device to run OpenWRT firmware: 1) Setup a TFTP server on IP address 192.168.0.100 and copy the OpenWRT initramfs (initramfs-fit-uImage.itb) to the TFTP root as 'uploadfile'. 2) Power on the device while pressing the recessed reset button next to the Ethernet ports. This causes the bootloader to retrieve and start the initramfs. 3) Once the initramfs is booted, the device will come up with IP 192.168.1.1. You can then connect through SSH (allow some time for the first connection). 4) On the device shell, run 'fw_printenv' to show the U-boot environment. Backup this information since it contains device unique factory data. 5) Change the boot command to support booting OpenWRT: # fw_setenv bootcmd 'sf probe && sf read 0x84000000 0x180000 0x400000 && bootm' 6) Change directory to /tmp, download the sysupgrade (e.g. through wget) and install it with sysupgrade. The device will reboot into OpenWRT. Notice that there is currently no support for booting the G.hn chip. This requires userland software we lack the rights to share right now. Signed-off-by: Stefan Schake <stefan.schake@devolo.de>
Diffstat (limited to 'target/linux/ipq40xx/files/arch/arm')
-rw-r--r--target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4018-magic-2-wifi-next.dts268
1 files changed, 268 insertions, 0 deletions
diff --git a/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4018-magic-2-wifi-next.dts b/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4018-magic-2-wifi-next.dts
new file mode 100644
index 0000000000..2709aef502
--- /dev/null
+++ b/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4018-magic-2-wifi-next.dts
@@ -0,0 +1,268 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+#include "qcom-ipq4019.dtsi"
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+
+/ {
+ model = "devolo Magic 2 WiFi next";
+ compatible = "devolo,magic-2-wifi-next";
+
+ memory {
+ device_type = "memory";
+ reg = <0x80000000 0x10000000>;
+ };
+
+ soc {
+ rng@22000 {
+ status = "okay";
+ };
+
+ mdio@90000 {
+ status = "okay";
+ pinctrl-0 = <&mdio_pins>;
+ pinctrl-names = "default";
+ reset-gpios = <&tlmm 59 GPIO_ACTIVE_LOW>;
+ reset-delay-us = <2000>;
+
+ /delete-node/ ethernet-phy@0;
+ /delete-node/ ethernet-phy@1;
+ };
+
+ ess-psgmii@98000 {
+ status = "okay";
+ };
+
+ crypto@8e3a000 {
+ status = "okay";
+ };
+
+ watchdog@b017000 {
+ status = "okay";
+ };
+
+ ess-switch@c000000 {
+ status = "okay";
+ switch_lan_bmp = <0x3e>;
+ switch_wan_bmp = <0x0>;
+ };
+
+ edma@c080000 {
+ status = "okay";
+ qcom,num_gmac = <3>;
+
+ gmac0 {
+ qcom,phy_mdio_addr = <3>;
+ qcom,poll_required = <1>;
+ /delete-property/ qcom,forced_speed;
+ /delete-property/ qcom,forced_duplex;
+ vlan_tag = <1 0x10>;
+ };
+
+ gmac1 {
+ qcom,phy_mdio_addr = <2>;
+ qcom,poll_required = <1>;
+ /delete-property/ qcom,forced_speed;
+ /delete-property/ qcom,forced_duplex;
+ vlan_tag = <1 0x08>;
+ };
+
+ gmac2 {
+ local-mac-address = [00 00 00 00 00 00];
+ qcom,phy_mdio_addr = <4>;
+ qcom,poll_required = <1>;
+ /delete-property/ qcom,forced_speed;
+ /delete-property/ qcom,forced_duplex;
+ vlan_tag = <1 0x20>;
+ };
+ };
+
+ gpio_export {
+ compatible = "gpio-export";
+ #size-cells = <0>;
+
+ plc {
+ gpio-export,name = "plc-enable";
+ gpio-export,output = <1>;
+ gpios = <&tlmm 63 GPIO_ACTIVE_HIGH>;
+ };
+ };
+
+ };
+
+ keys {
+ compatible = "gpio-keys";
+
+ wlan {
+ label = "WLAN";
+ gpios = <&tlmm 5 GPIO_ACTIVE_LOW>;
+ linux,code = <KEY_WPS_BUTTON>;
+ };
+
+ reset {
+ label = "Reset";
+ gpios = <&tlmm 0 GPIO_ACTIVE_HIGH>;
+ linux,code = <KEY_RESTART>;
+ };
+ };
+
+ leds {
+ compatible = "gpio-leds";
+
+ status_dlan {
+ label = "white:dlan";
+ gpios = <&tlmm 4 GPIO_ACTIVE_LOW>;
+ default-state = "keep";
+ };
+
+ status_wlan {
+ label = "white:wlan";
+ gpios = <&tlmm 58 GPIO_ACTIVE_LOW>;
+ default-state = "keep";
+ };
+
+ error_dlan {
+ label = "red:dlan";
+ gpios = <&tlmm 3 GPIO_ACTIVE_HIGH>;
+ default-state = "keep";
+ };
+ };
+};
+
+&tlmm {
+ spi_0_pins: spi_0_pinmux {
+ mux {
+ function = "blsp_spi0";
+ pins = "gpio55", "gpio56", "gpio57";
+ drive-strength = <12>;
+ bias-disable;
+ };
+
+ mux_cs {
+ function = "gpio";
+ pins = "gpio54";
+ drive-strength = <2>;
+ bias-disable;
+ output-high;
+ };
+ };
+
+ mdio_pins: mdio_pinmux {
+ mux_1 {
+ pins = "gpio53";
+ function = "mdio";
+ bias-pull-up;
+ };
+ mux_2 {
+ pins = "gpio52";
+ function = "mdc";
+ bias-pull-up;
+ };
+ };
+
+ serial_pins: serial_pinmux {
+ mux {
+ pins = "gpio61", "gpio60";
+ function = "blsp_uart0";
+ bias-disable;
+ };
+ };
+
+ button_pins: button_pinmux {
+ mux {
+ function = "gpio";
+ pins = "gpio0", "gpio5";
+ bias-disable;
+ input;
+ };
+ };
+};
+
+&cryptobam {
+ status = "okay";
+};
+
+&blsp_dma {
+ status = "okay";
+};
+
+&blsp1_uart1 {
+ pinctrl-0 = <&serial_pins>;
+ pinctrl-names = "default";
+ status = "okay";
+};
+
+&wifi0 {
+ status = "okay";
+ qcom,ath10k-calibration-variant = "devolo,magic-2-wifi-next";
+};
+
+&wifi1 {
+ status = "okay";
+ qcom,ath10k-calibration-variant = "devolo,magic-2-wifi-next";
+};
+
+&blsp1_spi1 {
+ pinctrl-0 = <&spi_0_pins>;
+ pinctrl-names = "default";
+ status = "okay";
+ cs-gpios = <&tlmm 54 GPIO_ACTIVE_HIGH>;
+
+ flash@0 {
+ compatible = "jedec,spi-nor";
+ reg = <0>;
+ linux,modalias = "n25q128a11";
+ spi-max-frequency = <24000000>;
+
+ partitions {
+ compatible = "fixed-partitions";
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ partition@0 {
+ label = "SBL1";
+ reg = <0x00000000 0x00040000>;
+ read-only;
+ };
+ partition@40000 {
+ label = "MIBIB";
+ reg = <0x00040000 0x00020000>;
+ read-only;
+ };
+ partition@60000 {
+ label = "QSEE";
+ reg = <0x00060000 0x00060000>;
+ read-only;
+ };
+ partition@c0000 {
+ label = "CDT";
+ reg = <0x000c0000 0x00010000>;
+ read-only;
+ };
+ partition@d0000 {
+ label = "DDRPARAMS";
+ reg = <0x000d0000 0x00010000>;
+ read-only;
+ };
+ partition@e0000 {
+ label = "APPSBLENV"; /* uboot env*/
+ reg = <0x000e0000 0x00010000>;
+ };
+ partition@f0000 {
+ label = "APPSBL"; /* uboot */
+ reg = <0x000f0000 0x00080000>;
+ read-only;
+ };
+ partition@170000 {
+ label = "ART";
+ reg = <0x00170000 0x00010000>;
+ read-only;
+ };
+ firmware@180000 {
+ compatible = "denx,fit";
+ label = "firmware";
+ reg = <0x00180000 0x01a80000>;
+ };
+ };
+ };
+};