ramips: add support for VoCore2
authorAndrew Yong <me@ndoo.sg>
Sun, 8 Jan 2017 06:30:10 +0000 (14:30 +0800)
committerMathias Kresin <dev@kresin.me>
Fri, 13 Jan 2017 07:32:35 +0000 (08:32 +0100)
This patch adds support for the VoCore VoCore2 and its complementary
"ultimate" dock.

Specifications:
- SoC: MediaTek MT7628AN (580MHz, ramips)
- RAM: 128MB DDR2 166MHz
- Storage: 16MB NOR SPI flash onboard + microSD slot on dock
- Wireless: Built into MT7628AN (mt76) with 1T1R firmware on VoCore2
            boards with onboard 1x chip antenna
- Ethernet: 1x100M (port0) on dock, 1x100M (port2) on PCB header
- Dock hardware:
  - USB 2.0 socket
  - MicroSD socket
  - 100Mbps Ethernet x1
  - 3.5mm headphone jack (TRRS) connected to Everest Semi ES8388 I2S
    DAC/ADC (support WIP)
  - Micro USB for power and console (UART2)

Initial installation:
- VoCore2 comes preinstalled with a fork of OpenWrt CC and AP on
  SSID "VoCore2"
- Connect to VoCore2 by Ethernet or Wi-Fi
- `ssh root@192.168.1.1` (password is "vocore")
- scp/wget/etc. LEDE sysupgrade.bin to VoCore2
- `sysupgrade -n <your image>.bin` (don't keep old config, as the
  original firmware uses Ralink SDK Wi-Fi drivers and not
  mt76+mac80211)
- after sysupgrade completes, Wi-Fi will be disabled by default so use
  Ethernet or the micro USB console to configure Wi-Fi again

Signed-off-by: Andrew Yong <me@ndoo.sg>
target/linux/ramips/base-files/etc/board.d/01_leds
target/linux/ramips/base-files/etc/board.d/02_network
target/linux/ramips/base-files/etc/diag.sh
target/linux/ramips/base-files/lib/ramips.sh
target/linux/ramips/base-files/lib/upgrade/platform.sh
target/linux/ramips/dts/VOCORE2.dts [new file with mode: 0644]
target/linux/ramips/image/mt7628.mk

index 0ebf471802655a20feac352654a68d36c4816408..3d3aa0ac01a54faeaedf1af7577bdd6ddc2de6b2 100755 (executable)
@@ -311,6 +311,9 @@ vocore)
        ucidef_set_led_netdev "eth" "ETH" "$board:orange:eth" "eth0"
        set_wifi_led "$board:green:status"
        ;;
+vocore2)
+       set_wifi_led "$board:fuchsia:status"
+       ;;
 w502u)
        set_usb_led "$board:blue:usb"
        set_wifi_led "rt2800pci-phy0::radio"
index daf9b33a74424a8f1e74d58ad4dc7d76bbfae20d..e84a52d4a6a1c276030d55547081fb997a7ecb1b 100755 (executable)
@@ -249,6 +249,10 @@ ramips_setup_interfaces()
                ucidef_add_switch "switch0" \
                        "1:lan" "2:lan" "3:lan" "4:lan" "5:wan" "0@eth0"
                ;;
+       vocore2)
+               ucidef_add_switch "switch0" \
+                       "0:lan" "2:lan" "6t@eth0"
+               ;;
        f5d8235-v1|\
        tew-714tru|\
        v11st-fe|\
index a22be5e3d49e8ca65bdb5b49daf46d0e8f2fc223..0b5bfeb5895d626a8211cbcef4285d02ee8a0218 100644 (file)
@@ -206,6 +206,9 @@ get_status_led() {
        v22rw-2x2)
                status_led="$board:green:security"
                ;;
+       vocore2)
+               status_led="$board:fuchsia:status"
+               ;;
        w306r-v20|\
        witi|\
        zbt-wr8305rt)
index 9b82b2a5c11b6fdfc6abda0d3006274adb144749..895f3ae2244cf2a2815eb774229184bef6a7060d 100755 (executable)
@@ -475,6 +475,9 @@ ramips_board_detect() {
        *"VoCore (16M)")
                name="vocore-16M"
                ;;
+       *"VoCore2")
+               name="vocore2"
+               ;;
        *"VR500")
                name="vr500"
                ;;
index c097cfa218052b1898f99fba4f659423d1808b3b..ce2c2221f22d7893a869f6081ad1863193601891 100755 (executable)
@@ -133,6 +133,7 @@ platform_check_image() {
        ur-336un|\
        v22rw-2x2|\
        vocore|\
+       vocore2|\
        vr500|\
        w150m|\
        w2914nsv2|\
diff --git a/target/linux/ramips/dts/VOCORE2.dts b/target/linux/ramips/dts/VOCORE2.dts
new file mode 100644 (file)
index 0000000..297cd1b
--- /dev/null
@@ -0,0 +1,123 @@
+/dts-v1/;
+
+#include "mt7628an.dtsi"
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+
+/ {
+       compatible = "vocore,VoCore2", "mediatek,mt7628an-soc";
+       model = "VoCore2";
+
+       chosen {
+               bootargs = "console=ttyS2,115200";
+       };
+
+       memory@0 {
+               device_type = "memory";
+               reg = <0x0 0x4000000>;
+       };
+
+       gpio-leds {
+               compatible = "gpio-leds";
+
+               status {
+                       label = "vocore2:fuchsia:status";
+                       gpios = <&gpio1 12 GPIO_ACTIVE_LOW>;
+               };
+       };
+};
+
+&pinctrl {
+       state_default: pinctrl0 {
+               gpio {
+                       ralink,group = "refclk", "gpio";
+                       ralink,function = "gpio";
+               };
+
+               agpio {
+                       ralink,group = "agpio";
+                       ralink,function = "uart2";
+               };
+       };
+
+       uart1_pins: uart1 {
+               uart1 {
+                       ralink,group = "uart1";
+                       ralink,function = "uart1";
+               };
+       };
+
+       uart2_pins: uart2 {
+               uart2 {
+                       ralink,group = "spis";
+                       ralink,function = "pwm";
+               };
+       };
+};
+
+&wmac {
+       status = "okay";
+       ralink,mtd-eeprom = <&factory 0x4>;
+};
+
+&spi0 {
+       status = "okay";
+
+       m25p80@0 {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               compatible = "jedec,spi-nor";
+               reg = <0>;
+               spi-max-frequency = <10000000>;
+               m25p,chunked-io = <32>;
+
+               partition@0 {
+                       label = "u-boot";
+                       reg = <0x0 0x30000>;
+                       read-only;
+               };
+
+               partition@30000 {
+                       label = "u-boot-env";
+                       reg = <0x30000 0x10000>;
+                       read-only;
+               };
+
+               factory: partition@40000 {
+                       label = "factory";
+                       reg = <0x40000 0x10000>;
+                       read-only;
+               };
+
+               partition@50000 {
+                       label = "firmware";
+                       reg = <0x50000 0xfb0000>;
+               };
+       };
+};
+
+&esw {
+       mediatek,portmap = <0x7>;
+       mediatek,portdisable = <0x3a>;
+};
+
+&i2s {
+       status = "okay";
+};
+
+&gdma {
+       status = "okay";
+};
+
+&pwm {
+       status = "okay";
+};
+
+&uart1 {
+       status = "okay";
+};
+
+&uart2 {
+       status = "okay";
+};
index 7a7ddce3c928122025f6db98921b370feaed0790..4502588c80ee90b22cadd3f21c6f044b9a368090 100644 (file)
@@ -19,6 +19,15 @@ define Device/miwifi-nano
 endef
 TARGET_DEVICES += miwifi-nano
 
+define Device/vocore2
+  DTS := VOCORE2
+  IMAGE_SIZE := $(ralink_default_fw_size_16M)
+  DEVICE_TITLE := VoCore VoCore2
+  DEVICE_PACKAGES := kmod-usb2 kmod-usb-ohci kmod-usb-ledtrig-usbport \
+    kmod-sdhci kmod-sdhci-mt7620
+endef
+TARGET_DEVICES += vocore2
+
 define Device/wl-wn575a3
   DTS := WL-WN575A3
   IMAGE_SIZE := $(ralink_default_fw_size_8M)