ath79: Port PowerCloud Systems CR5000 support
authorDaniel F. Dickinson <cshored@thecshore.com>
Fri, 20 Jul 2018 20:52:46 +0000 (16:52 -0400)
committerJohn Crispin <john@phrozen.org>
Mon, 30 Jul 2018 08:43:31 +0000 (10:43 +0200)
Add ath79 arch support for PowerCloud Systems CR5000.  Previously
supported under ar71xx (however there are some errors in that support;
to be fixed shortly).

Info:

* This board is based on the Atheros DB120 reference design, but doesn't
  use the on-board switch.  Instead it attachs GMAC0 to an AR8327 switch.
* It only uses GMAC0 and the WAN is simply a VLAN in the stock firmware.
* It has 64MB RAM and 8MB flash.
* In the dts version we get rid of using 'open-drain' for the AR8327
  LED controls.
* As with the platform data version we disable JTAG as this conflicts
  with one of the pair of GPIO's required for the power/status LED
  (GPIO2 and GPIO4 are used for this LED).
* The pcie card wifi has an EEPROM but gets it's MAC address from
  the ART partition.
* The SoC wifi (2.4 GHz) is all from the ART.
* The USB is support comes from the SoC.

NB. This is actually an AR9342 rather than AR9344 but we use the 9344
definitions because there are no relevant differences for this board.

NB: Building only images that don't support reverting to the old
cloud-based firmware as the Skydog cloud service for the CR5000 no
longer exists.

Signed-off-by: Daniel F. Dickinson <cshored@thecshore.com>
target/linux/ath79/base-files/etc/board.d/01_leds
target/linux/ath79/base-files/etc/board.d/02_network
target/linux/ath79/dts/ar9344_pcs_cr5000.dts [new file with mode: 0644]
target/linux/ath79/image/generic.mk

index d8312a9b89217b575b806a013b19ee1d9cd9d9f7..e8f4e1d14ea55b371b90c1c16412b80903152158 100755 (executable)
@@ -28,6 +28,11 @@ case "$board" in
        ucidef_set_led_switch "lan1" "LAN1" "netgear:green:lan1" "switch0" "0x02" "0x0f"
        ucidef_set_led_switch "lan2" "LAN2" "netgear:green:lan2" "switch0" "0x04" "0x0f"
        ;;
+
+"pcs,cr5000")
+       ucidef_set_led_usbdev "usb" "USB" "pcs:white:wps" "1-1"
+       ;;
+
 "tplink,re450-v2")
        ucidef_set_led_netdev "lan_data" "LAN Data" "tp-link:green:lan_data" "eth0" "tx rx"
        ucidef_set_led_netdev "lan_link" "LAN Link" "tp-link:green:lan_link" "eth0" "link"
index c5e23e4e50107476d4046c3098d4ef528d290f72..ca023f702f7860a357fe4d5b9d5a8a791b8e64ea 100755 (executable)
@@ -43,6 +43,11 @@ ath79_setup_interfaces()
                "0@eth1" "1:lan" "2:lan" "3:lan:3" "4:lan:4"
                ;;
 
+       "pcs,cr5000")
+               ucidef_add_switch "switch0" \
+                       "0@eth0" "1:lan" "2:lan" "3:lan" "4:lan" "5:wan"
+               ;;
+
        "tplink,tl-archer-c7-v2")
                ucidef_set_interfaces_lan_wan "eth1.1" "eth0.2"
                ucidef_add_switch "switch0" \
diff --git a/target/linux/ath79/dts/ar9344_pcs_cr5000.dts b/target/linux/ath79/dts/ar9344_pcs_cr5000.dts
new file mode 100644 (file)
index 0000000..0d38a35
--- /dev/null
@@ -0,0 +1,226 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/dts-v1/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+
+#include "ar9344.dtsi"
+
+/ {
+       model = "PowerCloud Systems CR5000";
+       compatible = "pcs,cr5000", "qca,ar9344";
+
+       aliases {
+               serial0 = &uart;
+               led-status = &status;
+       };
+
+
+       keys {
+               compatible = "gpio-keys-polled";
+               poll-interval = <20>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               pinctrl-names = "default";
+                pinctrl-0 = <&jtag_disable_pins>;
+
+               reset {
+                       label = "Reset button";
+                       linux,code = <KEY_RESTART>;
+                       gpios = <&gpio 17 GPIO_ACTIVE_LOW>;
+                       debounce-interval = <60>;
+               };
+
+               wps {
+                       label = "WPS button";
+                       linux,code = <KEY_WPS_BUTTON>;
+                       gpios = <&gpio 16 GPIO_ACTIVE_LOW>;
+                       debounce-interval = <60>;
+               };
+       };
+
+       leds {
+               compatible = "gpio-leds";
+
+               status: power {
+                       label = "pcs:amber:power";
+                       gpios = <&gpio 2 GPIO_ACTIVE_LOW>,
+                               <&gpio 4 GPIO_ACTIVE_LOW>;
+                       default-state = "on";
+               };
+
+               wlan2g {
+                       label = "pcs:blue:wlan";
+                       gpios = <&gpio 14 GPIO_ACTIVE_LOW>;
+                       default-state = "off";
+                       linux,default-trigger = "phy0tpt";
+               };
+
+               wps_white {
+                       label = "pcs:white:wps";
+                       gpios = <&gpio 12 GPIO_ACTIVE_LOW>;
+                       default-state = "off";
+               };
+       };
+
+};
+
+&ref {
+       clock-frequency = <25000000>;
+};
+
+&uart {
+       status = "okay";
+};
+
+&gpio {
+       status = "okay";
+};
+
+&spi {
+       num-cs = <1>;
+
+       status = "okay";
+
+       flash@0 {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               compatible = "jedec,spi-nor";
+               reg = <0>;
+               spi-max-frequency = <25000000>;
+
+               partitions {
+                       compatible = "fixed-partitions";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       uboot: partition@0 {
+                               label = "u-boot";
+                               reg = <0x000000 0x040000>;
+                               read-only;
+                       };
+
+                       partition@40000 {
+                               label = "u-boot-env";
+                               reg = <0x040000 0x010000>;
+                               read-only;
+                       };
+
+                       partition@50000 {
+                               label = "firmware";
+                               reg = <0x050000 0x07a0000>;
+                       };
+
+                       art: partition@7f0000 {
+                               label = "art";
+                               reg = <0x7f0000 0x010000>;
+                               read-only;
+                       };
+               };
+       };
+};
+
+&usb {
+       status = "okay";
+
+       port@1 {
+               reg = <1>;
+               #trigger-source-cells = <0>;
+
+               hub_port1: port@1 {
+                       reg = <1>;
+                       #trigger-source-cells = <0>;
+               };
+       };
+
+};
+
+&usb_phy {
+       status = "okay";
+};
+
+&pcie {
+       status = "okay";
+
+        ath9k: wifi@168c,0030 {
+               compatible = "168c,0030";
+               mtd-mac-address = <&art 0x5002>;
+               #gpio-cells = <2>;
+               gpio-controller;
+        };
+};
+
+&mdio0 {
+       status = "okay";
+
+       phy-mask = <0>;
+
+       phy0: ethernet-phy@0 {
+               reg = <0>;
+               phy-mode = "rgmii";
+                qca,ar8327-initvals = <
+                       0x04 0x07600000 /* PORT0 PAD MODE CTRL */
+                       0x10 0x81000080 /* POWER_ON_STRAP */
+                       0x50 0xcc35cc35 /* LED_CTRL0 */
+                       0x54 0xca35ca35 /* LED_CTRL1 */
+                       0x58 0xc935c935 /* LED_CTRL2 */
+                       0x5c 0x03ffff00 /* LED_CTRL3 */
+                       0x7c 0x0000007e /* PORT0_STATUS */
+               >;
+       };
+};
+
+&eth0 {
+       status = "okay";
+
+       /* default for ar934x, except for 1000M */
+       pll-data = <0x06000000 0x00000101 0x00001616>;
+
+       mtd-mac-address = <&art 0x0>;
+
+       phy-mode = "rgmii";
+       phy-handle = <&phy0>;
+
+
+       aliases {
+               ag0 = &eth1;
+       };
+
+       port@0 {
+               compatible = "swconfig,port";
+               swconfig,segment = "lan";
+               swconfig,portmap = <1 1>;
+       };
+
+       port@1 {
+               compatible = "swconfig,port";
+               swconfig,segment = "lan";
+               swconfig,portmap = <2 2>;
+       };
+
+       port@2 {
+               compatible = "swconfig,port";
+               swconfig,segment = "lan";
+               swconfig,portmap = <3 3>;
+       };
+
+       port@3 {
+               compatible = "swconfig,port";
+               swconfig,segment = "lan";
+               swconfig,portmap = <4 4>;
+       };
+
+       port@4 {
+               compatible = "swconfig,port";
+               swconfig,segment = "wan";
+               swconfig,portmap = <5 5>;
+       };
+
+};
+
+&wmac {
+       status = "okay";
+
+       mtd-cal-data = <&art 0x1000>;
+       mtd-mac-address = <&art 0x1002>;
+};
index fbec180496b940911546dd31341020fc524a6cfd..d8897784eadfebd7c3db083074c1b85fa1ecfe14 100644 (file)
@@ -66,6 +66,16 @@ define Device/openmesh_om5p-ac-v2
 endef
 TARGET_DEVICES += openmesh_om5p-ac-v2
 
+define Device/pcs_cr5000
+  ATH_SOC := ar9344
+  DEVICE_TITLE := PowerCloud Systems CR5000
+  DEVICE_PACKAGES := kmod-usb2 kmod-usb-ledtrig-usbport kmod-usb-core
+  IMAGE_SIZE := 7808k
+  IMAGES := sysupgrade.bin
+  SUPPORTED_DEVICES += cr5000
+endef
+TARGET_DEVICES += pcs_cr5000
+
 define Device/netgear_wndr3800
   ATH_SOC := ar7161
   DEVICE_TITLE := NETGEAR WNDR3800