2018-05-07 08:10:49 +00:00
|
|
|
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
|
2018-05-06 08:20:11 +00:00
|
|
|
#include <dt-bindings/clock/ath79-clk.h>
|
|
|
|
#include "ath79.dtsi"
|
|
|
|
|
|
|
|
/ {
|
|
|
|
compatible = "qca,qca9557";
|
|
|
|
|
|
|
|
#address-cells = <1>;
|
|
|
|
#size-cells = <1>;
|
|
|
|
|
|
|
|
cpus {
|
|
|
|
#address-cells = <1>;
|
|
|
|
#size-cells = <0>;
|
|
|
|
|
|
|
|
cpu@0 {
|
|
|
|
device_type = "cpu";
|
2018-06-18 17:22:13 +00:00
|
|
|
compatible = "mips,mips74Kc";
|
2018-05-06 08:20:11 +00:00
|
|
|
clocks = <&pll ATH79_CLK_CPU>;
|
|
|
|
reg = <0>;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
2018-06-18 17:22:13 +00:00
|
|
|
extosc: ref {
|
|
|
|
compatible = "fixed-clock";
|
|
|
|
#clock-cells = <0>;
|
|
|
|
clock-output-names = "ref";
|
|
|
|
clock-frequency = <40000000>;
|
|
|
|
};
|
|
|
|
|
2018-05-06 08:20:11 +00:00
|
|
|
ahb {
|
|
|
|
apb {
|
|
|
|
ddr_ctrl: memory-controller@18000000 {
|
|
|
|
compatible = "qca,ar9557-ddr-controller",
|
|
|
|
"qca,ar7240-ddr-controller";
|
|
|
|
reg = <0x18000000 0x100>;
|
|
|
|
|
|
|
|
#qca,ddr-wb-channel-cells = <1>;
|
|
|
|
};
|
|
|
|
|
|
|
|
uart: uart@18020000 {
|
|
|
|
compatible = "ns16550a";
|
|
|
|
reg = <0x18020000 0x20>;
|
|
|
|
|
|
|
|
interrupts = <3>;
|
|
|
|
|
|
|
|
clocks = <&pll ATH79_CLK_REF>;
|
|
|
|
clock-names = "uart";
|
|
|
|
|
|
|
|
reg-io-width = <4>;
|
|
|
|
reg-shift = <2>;
|
|
|
|
no-loopback-test;
|
|
|
|
|
|
|
|
status = "disabled";
|
|
|
|
};
|
|
|
|
|
2018-12-06 09:07:30 +00:00
|
|
|
usb_phy0: usb-phy0@18030000 {
|
2018-06-18 17:22:13 +00:00
|
|
|
compatible ="qca,qca9550-usb-phy", "qca,ar7200-usb-phy";
|
2018-12-06 09:07:30 +00:00
|
|
|
reg = <0x18030000 4>, <0x18030004 4>;
|
2018-06-18 17:22:13 +00:00
|
|
|
|
|
|
|
reset-names = "usb-phy", "usb-suspend-override";
|
|
|
|
resets = <&rst 4>, <&rst 3>;
|
|
|
|
|
|
|
|
#phy-cells = <0>;
|
|
|
|
|
|
|
|
status = "disabled";
|
|
|
|
};
|
|
|
|
|
2018-12-06 09:07:30 +00:00
|
|
|
usb_phy1: usb-phy1@18030010 {
|
2018-06-18 17:22:13 +00:00
|
|
|
compatible = "qca,qca9550-usb-phy", "qca,ar7200-usb-phy";
|
2018-12-06 09:07:30 +00:00
|
|
|
reg = <0x18030010 4>, <0x18030014 4>;
|
2018-06-18 17:22:13 +00:00
|
|
|
|
|
|
|
reset-names = "usb-phy", "usb-suspend-override";
|
|
|
|
resets = <&rst2 4>, <&rst2 3>;
|
|
|
|
|
|
|
|
#phy-cells = <0>;
|
|
|
|
|
|
|
|
status = "disabled";
|
|
|
|
};
|
|
|
|
|
2018-05-06 08:20:11 +00:00
|
|
|
gpio: gpio@18040000 {
|
|
|
|
compatible = "qca,ar9557-gpio",
|
|
|
|
"qca,ar9340-gpio";
|
|
|
|
reg = <0x18040000 0x28>;
|
|
|
|
|
|
|
|
interrupts = <2>;
|
|
|
|
ngpios = <24>;
|
|
|
|
|
|
|
|
gpio-controller;
|
|
|
|
#gpio-cells = <2>;
|
|
|
|
|
|
|
|
interrupt-controller;
|
|
|
|
#interrupt-cells = <2>;
|
|
|
|
};
|
|
|
|
|
|
|
|
pinmux: pinmux@1804002c {
|
|
|
|
compatible = "pinctrl-single";
|
|
|
|
|
2018-12-24 16:44:03 +00:00
|
|
|
reg = <0x1804002c 0x44>;
|
2018-05-06 08:20:11 +00:00
|
|
|
|
|
|
|
#size-cells = <0>;
|
|
|
|
|
|
|
|
pinctrl-single,bit-per-mux;
|
|
|
|
pinctrl-single,register-width = <32>;
|
|
|
|
pinctrl-single,function-mask = <0x1>;
|
|
|
|
#pinctrl-cells = <2>;
|
|
|
|
|
|
|
|
jtag_disable_pins: pinmux_jtag_disable_pins {
|
|
|
|
pinctrl-single,bits = <0x40 0x2 0x2>;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
pll: pll-controller@18050000 {
|
|
|
|
compatible = "qca,ar9557-pll",
|
2018-08-06 14:21:02 +00:00
|
|
|
"qca,qca9550-pll", "syscon";
|
2018-06-18 17:22:13 +00:00
|
|
|
reg = <0x18050000 0x50>;
|
2018-05-06 08:20:11 +00:00
|
|
|
|
|
|
|
#clock-cells = <1>;
|
|
|
|
clock-output-names = "cpu", "ddr", "ahb";
|
2018-06-18 17:22:13 +00:00
|
|
|
|
|
|
|
clocks = <&extosc>;
|
2018-05-06 08:20:11 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
wdt: wdt@18060008 {
|
|
|
|
compatible = "qca,ar7130-wdt";
|
|
|
|
reg = <0x18060008 0x8>;
|
|
|
|
|
|
|
|
interrupts = <4>;
|
|
|
|
|
|
|
|
clocks = <&pll ATH79_CLK_AHB>;
|
|
|
|
clock-names = "wdt";
|
|
|
|
};
|
|
|
|
|
|
|
|
rst: reset-controller@1806001c {
|
2018-06-18 17:22:13 +00:00
|
|
|
compatible = "qca,qca9550-reset",
|
2018-12-06 09:07:30 +00:00
|
|
|
"qca,ar7100-reset";
|
2018-05-06 08:20:11 +00:00
|
|
|
reg = <0x1806001c 0x4>;
|
|
|
|
|
|
|
|
#reset-cells = <1>;
|
|
|
|
interrupt-parent = <&cpuintc>;
|
|
|
|
|
2018-08-06 05:11:13 +00:00
|
|
|
intc2: interrupt-controller2 {
|
2018-06-19 06:16:28 +00:00
|
|
|
compatible = "qca,ar9340-intc";
|
|
|
|
|
|
|
|
interrupt-parent = <&cpuintc>;
|
|
|
|
interrupts = <2>;
|
|
|
|
|
|
|
|
interrupt-controller;
|
|
|
|
#interrupt-cells = <1>;
|
|
|
|
|
|
|
|
qca,int-status-addr = <0xac>;
|
|
|
|
qca,pending-bits = <0xf>, /* wmac */
|
|
|
|
<0x1f0>; /* pcie rc 0 */
|
|
|
|
};
|
|
|
|
|
2018-08-06 05:11:13 +00:00
|
|
|
intc3: interrupt-controller3 {
|
2018-06-19 06:16:28 +00:00
|
|
|
compatible = "qca,ar9340-intc";
|
2018-05-06 08:20:11 +00:00
|
|
|
|
2018-06-19 06:16:28 +00:00
|
|
|
interrupt-parent = <&cpuintc>;
|
2018-05-06 08:20:11 +00:00
|
|
|
interrupts = <3>;
|
|
|
|
|
|
|
|
interrupt-controller;
|
|
|
|
#interrupt-cells = <1>;
|
|
|
|
|
2018-06-19 06:16:28 +00:00
|
|
|
qca,int-status-addr = <0xac>;
|
|
|
|
qca,pending-bits = <0x1f000>, /* pcie rc 1 */
|
2018-05-06 08:20:11 +00:00
|
|
|
<0x1000000>, /* usb1 */
|
|
|
|
<0x10000000>; /* usb2 */
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
2018-06-18 17:22:13 +00:00
|
|
|
rst2: reset-controller@180600c0 {
|
|
|
|
compatible = "qca,qca9550-reset",
|
|
|
|
"qca,ar7100-reset",
|
|
|
|
"simple-bus";
|
|
|
|
reg = <0x180600c0 0x4>;
|
|
|
|
|
|
|
|
#reset-cells = <1>;
|
|
|
|
};
|
2019-06-21 10:25:12 +00:00
|
|
|
};
|
2018-06-18 17:22:13 +00:00
|
|
|
|
ath79: add support for ZyXEL NBG6716
Attention: Kernel partition size has been enlarged to 4MB.
To switch, you must update to latest ar71xx-nand snapshort and flash the
sysupgrade-4M-Kernel.bin:
zcat openwrt-ath79-nand-zyxel_nbg6716-squashfs-sysupgrade-4M-Kernel.bin | mtd -r -e ubi write - firmware; reboot -f
You will end up with a fresh config if you do not inject config into the image.
The NBG6716 may come with 128MB or 256MB NAND. ar71xx was able to use all, but
ath79 can only use the first 128MB. Therefore the complete NAND needs to be
overwritten. If not, the old UBI may make problems and lead to reboot loop.
Access the real u-boot shell:
ZyXEL uses a proprietary loader/shell on top of u-boot: "ZyXEL zloader v2.02"
When the device is starting up, the user can enter the the loader shell
by simply pressing a key within the 3 seconds once the following string
appears on the serial console:
| Hit any key to stop autoboot: 3
The user is then dropped to a locked shell.
|NBG6716> HELP
|ATEN x[,y] set BootExtension Debug Flag (y=password)
|ATSE x show the seed of password generator
|ATSH dump manufacturer related data in ROM
|ATRT [x,y,z,u] RAM read/write test (x=level, y=start addr, z=end addr, u=iterations)
|ATGO boot up whole system
|ATUR x upgrade RAS image (filename)
|NBG6716>
In order to escape/unlock a password challenge has to be passed.
Note: the value is dynamic! you have to calculate your own!
First use ATSE $MODELNAME (MODELNAME is the hostname in u-boot env)
to get the challange value/seed.
|NBG6716> ATSE NBG6716
|012345678901
This seed/value can be converted to the password with the help of this
bash script (Thanks to http://www.adslayuda.com/Zyxel650-9.html authors):
- tool.sh -
ror32() {
echo $(( ($1 >> $2) | (($1 << (32 - $2) & (2**32-1)) ) ))
}
v="0x$1"
a="0x${v:2:6}"
b=$(( $a + 0x10F0A563))
c=$(( 0x${v:12:14} & 7 ))
p=$(( $(ror32 $b $c) ^ $a ))
printf "ATEN 1,%X\n" $p
- end of tool.sh -
|# bash ./tool.sh 012345678901
|
|ATEN 1,879C711
copy and paste the result into the shell to unlock zloader.
|NBG6716> ATEN 1,0046B0017430
If the entered code was correct the shell will change to
use the ATGU command to enter the real u-boot shell.
|NBG6716> ATGU
|NBG6716#
Signed-off-by: André Valentin <avalentin@marcant.net>
2019-10-23 09:30:30 +00:00
|
|
|
nand: nand@1b800200 {
|
|
|
|
compatible = "qca,ar934x-nand";
|
|
|
|
reg = <0x1b800200 0xb8>;
|
|
|
|
|
|
|
|
interrupts = <21>;
|
|
|
|
interrupt-parent = <&miscintc>;
|
|
|
|
|
|
|
|
resets = <&rst 14>;
|
|
|
|
reset-names = "nand";
|
|
|
|
|
|
|
|
nand-ecc-mode = "hw";
|
|
|
|
|
|
|
|
#address-cells = <1>;
|
|
|
|
#size-cells = <0>;
|
|
|
|
|
|
|
|
status = "disabled";
|
|
|
|
};
|
|
|
|
|
2019-06-21 10:25:12 +00:00
|
|
|
gmac: gmac@18070000 {
|
|
|
|
compatible = "qca,qca9550-gmac";
|
|
|
|
reg = <0x18070000 0x58>;
|
|
|
|
};
|
2018-06-19 06:16:28 +00:00
|
|
|
|
2019-06-21 10:25:12 +00:00
|
|
|
pcie0: pcie-controller@180c0000 {
|
|
|
|
compatible = "qcom,ar7240-pci";
|
|
|
|
#address-cells = <3>;
|
|
|
|
#size-cells = <2>;
|
|
|
|
bus-range = <0x0 0x0>;
|
|
|
|
reg = <0x180c0000 0x1000>, /* CRP */
|
|
|
|
<0x180f0000 0x100>, /* CTRL */
|
|
|
|
<0x14000000 0x1000>; /* CFG */
|
|
|
|
reg-names = "crp_base", "ctrl_base", "cfg_base";
|
|
|
|
ranges = <0x2000000 0 0x10000000 0x10000000 0 0x02000000 /* pci memory */
|
|
|
|
0x1000000 0 0x00000000 0x0000000 0 0x000001>; /* io space */
|
|
|
|
interrupt-parent = <&intc2>;
|
|
|
|
interrupts = <1>;
|
2018-06-19 06:16:28 +00:00
|
|
|
|
2019-06-21 10:25:12 +00:00
|
|
|
interrupt-controller;
|
|
|
|
#interrupt-cells = <1>;
|
2018-06-19 06:16:28 +00:00
|
|
|
|
2019-06-21 10:25:12 +00:00
|
|
|
interrupt-map-mask = <0 0 0 1>;
|
|
|
|
interrupt-map = <0 0 0 0 &pcie0 0>;
|
|
|
|
status = "disabled";
|
|
|
|
};
|
2018-05-06 08:20:11 +00:00
|
|
|
|
2019-06-21 10:25:12 +00:00
|
|
|
wmac: wmac@18100000 {
|
|
|
|
compatible = "qca,qca9550-wmac";
|
|
|
|
reg = <0x18100000 0x10000>;
|
2018-05-06 08:20:11 +00:00
|
|
|
|
2019-06-21 10:25:12 +00:00
|
|
|
interrupt-parent = <&intc2>;
|
|
|
|
interrupts = <0>;
|
2018-06-18 17:22:13 +00:00
|
|
|
|
2019-06-21 10:25:12 +00:00
|
|
|
status = "disabled";
|
|
|
|
};
|
2018-07-17 09:09:13 +00:00
|
|
|
|
2019-06-21 10:25:12 +00:00
|
|
|
pcie1: pcie-controller@18250000 {
|
|
|
|
compatible = "qcom,ar7240-pci";
|
|
|
|
#address-cells = <3>;
|
|
|
|
#size-cells = <2>;
|
|
|
|
bus-range = <0x0 0x0>;
|
|
|
|
reg = <0x18250000 0x1000>, /* CRP */
|
|
|
|
<0x18280000 0x100>, /* CTRL */
|
|
|
|
<0x16000000 0x1000>; /* CFG */
|
|
|
|
reg-names = "crp_base", "ctrl_base", "cfg_base";
|
|
|
|
ranges = <0x2000000 0 0x12000000 0x12000000 0 0x02000000 /* pci memory */
|
|
|
|
0x1000000 0 0x00000000 0x0000001 0 0x000001>; /* io space */
|
|
|
|
interrupt-parent = <&intc3>;
|
|
|
|
interrupts = <0>;
|
2018-06-18 17:22:13 +00:00
|
|
|
|
2019-06-21 10:25:12 +00:00
|
|
|
interrupt-controller;
|
|
|
|
#interrupt-cells = <1>;
|
2018-06-18 17:22:13 +00:00
|
|
|
|
2019-06-21 10:25:12 +00:00
|
|
|
interrupt-map-mask = <0 0 0 1>;
|
|
|
|
interrupt-map = <0 0 0 0 &pcie1 0>;
|
|
|
|
status = "disabled";
|
2018-05-06 08:20:11 +00:00
|
|
|
};
|
|
|
|
|
2018-06-18 17:22:13 +00:00
|
|
|
usb0: usb@1b000000 {
|
|
|
|
compatible = "generic-ehci";
|
|
|
|
reg = <0x1b000000 0x1fc>;
|
|
|
|
|
|
|
|
interrupt-parent = <&intc3>;
|
|
|
|
interrupts = <1>;
|
|
|
|
resets = <&rst 5>;
|
|
|
|
reset-names = "usb-host";
|
|
|
|
|
|
|
|
has-transaction-translator;
|
|
|
|
caps-offset = <0x100>;
|
|
|
|
|
|
|
|
phy-names = "usb-phy0";
|
|
|
|
phys = <&usb_phy0>;
|
|
|
|
|
|
|
|
status = "disabled";
|
|
|
|
};
|
|
|
|
|
|
|
|
usb1: usb@1b400000 {
|
|
|
|
compatible = "generic-ehci";
|
|
|
|
reg = <0x1b400000 0x1fc>;
|
|
|
|
|
|
|
|
interrupt-parent = <&intc3>;
|
|
|
|
interrupts = <2>;
|
|
|
|
resets = <&rst2 5>;
|
|
|
|
reset-names = "usb-host";
|
|
|
|
|
|
|
|
has-transaction-translator;
|
|
|
|
caps-offset = <0x100>;
|
|
|
|
|
|
|
|
phy-names = "usb-phy1";
|
|
|
|
phys = <&usb_phy1>;
|
|
|
|
|
|
|
|
status = "disabled";
|
2019-10-27 15:44:40 +00:00
|
|
|
};
|
2018-06-18 17:22:13 +00:00
|
|
|
|
2018-05-06 08:20:11 +00:00
|
|
|
spi: spi@1f000000 {
|
2020-02-05 12:25:45 +00:00
|
|
|
compatible = "qca,ar934x-spi";
|
|
|
|
reg = <0x1f000000 0x1c>;
|
2018-05-06 08:20:11 +00:00
|
|
|
|
|
|
|
clocks = <&pll ATH79_CLK_AHB>;
|
|
|
|
|
|
|
|
status = "disabled";
|
|
|
|
|
|
|
|
#address-cells = <1>;
|
|
|
|
#size-cells = <0>;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
&mdio0 {
|
2019-01-27 12:54:47 +00:00
|
|
|
compatible = "qca,ar9340-mdio";
|
2018-05-06 08:20:11 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
ð0 {
|
2019-01-27 12:54:47 +00:00
|
|
|
compatible = "qca,qca9550-eth", "syscon";
|
2018-05-06 08:20:11 +00:00
|
|
|
|
2018-08-06 14:21:02 +00:00
|
|
|
pll-reg = <0 0x28 0>;
|
|
|
|
pll-handle = <&pll>;
|
|
|
|
|
2018-08-09 14:10:13 +00:00
|
|
|
pll-data = <0x16000000 0x00000101 0x00001616>;
|
2018-05-06 08:20:11 +00:00
|
|
|
phy-mode = "rgmii";
|
|
|
|
|
2019-01-27 12:54:47 +00:00
|
|
|
resets = <&rst 9>, <&rst 22>;
|
|
|
|
reset-names = "mac", "mdio";
|
2018-05-06 08:20:11 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
&mdio1 {
|
2019-01-27 12:54:47 +00:00
|
|
|
compatible = "qca,ar9340-mdio";
|
2018-05-06 08:20:11 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
ð1 {
|
2019-01-27 12:54:47 +00:00
|
|
|
compatible = "qca,qca9550-eth", "syscon";
|
2018-05-06 08:20:11 +00:00
|
|
|
|
2018-08-06 14:21:02 +00:00
|
|
|
pll-reg = <0 0x48 0>;
|
|
|
|
pll-handle = <&pll>;
|
|
|
|
|
2018-08-09 14:10:13 +00:00
|
|
|
pll-data = <0x16000000 0x00000101 0x00001616>;
|
2018-05-06 08:20:11 +00:00
|
|
|
phy-mode = "sgmii";
|
|
|
|
|
2019-01-27 12:54:47 +00:00
|
|
|
resets = <&rst 13>, <&rst 23>;
|
|
|
|
reset-names = "mac", "mdio";
|
2018-05-06 08:20:11 +00:00
|
|
|
};
|