ramips: Add support for D-Link DCH-M225
authorMichael Lee <igvtee@gmail.com>
Mon, 2 May 2016 03:57:40 +0000 (11:57 +0800)
committerJohn Crispin <john@phrozen.org>
Mon, 11 Jul 2016 12:19:47 +0000 (14:19 +0200)
D-Link DCH-M225 is based on Mediatek MT7620 with 64MB ram, 8MB flash,
3.5mm audio out support. but no ethernet and usb ports.
so you must default enable wifi.

Signed-off-by: Michael Lee <igvtee@gmail.com>
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/etc/uci-defaults/09_fix-seama-header
target/linux/ramips/base-files/lib/ramips.sh
target/linux/ramips/base-files/lib/upgrade/platform.sh
target/linux/ramips/dts/DCH-M225.dts [new file with mode: 0644]
target/linux/ramips/dts/mt7620a.dtsi
target/linux/ramips/image/mt7620.mk

index 0e30ba076dfed0dd60fe79aaa8b5984b8151dc3e..695b0c1e7d882e599d2deaf483b4d0251da08a9c 100755 (executable)
@@ -100,6 +100,10 @@ d105)
 db-wrt01)
        ucidef_set_led_default "power" "power" "$board:orange:power" "1"
        ;;
+dch-m225)
+       ucidef_set_led_default "power" "POWER" "$board:geeen:power" "1"
+       ucidef_set_led_default "status" "STATUS" "$board:red:status" "0"
+       ;;
 dcs-930l-b1)
        ucidef_set_led_default "power" "POWER" "$board:red:power" "1"
        ucidef_set_led_netdev "wifi" "WiFi" "$board:blue:wps"
index f8b8ec66bdc791dcf3ddb2ff3bfc595c400275a7..c1c5f81ebe5f147add956b9cf9ad5acf14c22644 100755 (executable)
@@ -166,6 +166,7 @@ ramips_setup_interfaces()
                ;;
        cs-qr10|\
        d105|\
+       dch-m225|\
        hpm|\
        mzk-ex300np|\
        mzk-ex750np|\
@@ -285,6 +286,9 @@ ramips_setup_macs()
                wan_mac=$(mtd_get_mac_binary devdata 7)
                ;;
        cy-swr1100|\
+       dch-m225)
+               lan_mac=$(mtd_get_mac_ascii factory lanmac)
+               ;;
        dir-645)
                lan_mac=$(mtd_get_mac_ascii nvram lanmac)
                wan_mac=$(mtd_get_mac_ascii nvram wanmac)
index e9d623d106733af5844881b5e5b9697248780357..da0cecd34441aeac2350f1fdeec867bc4460b5a4 100644 (file)
@@ -19,6 +19,7 @@ get_status_led() {
        asl26555|\
        br-6425|\
        br-6475nd|\
+       dch-m225|\
        dir-860l-b1|\
        e1700|\
        fonera20n|\
index 7a0a325d4b6b698625c37fbcb139b168362641ee..f8d408deda8b59285b9aeec147550f46eb8bf9a3 100644 (file)
@@ -15,6 +15,7 @@ board=$(ramips_board_name)
 
 case "$board" in
 cy-swr1100 | \
+dch-m225 | \
 dir-645 | \
 dir-860l-b1)
        fix_seama_header
index b6ccd5ace331c5a1e6c66e2dece296394dcbb925..565d5138cb264fb1b554610eea9f880305e5defb 100755 (executable)
@@ -106,6 +106,9 @@ ramips_board_detect() {
        *"DB-WRT01")
                name="db-wrt01"
                ;;
+       *"DCH-M225")
+               name="dch-m225"
+               ;;
        *"DCS-930")
                name="dcs-930"
                ;;
index c4d3c0136713f70f5775c048109a037ae66ab83d..88547ca0833b2466b62d7f6f17e57250c99e4496 100755 (executable)
@@ -193,6 +193,7 @@ platform_check_image() {
                return 0
                ;;
        cy-swr1100|\
+       dch-m225|\
        dir-610-a1|\
        dir-645|\
        dir-860l-b1)
diff --git a/target/linux/ramips/dts/DCH-M225.dts b/target/linux/ramips/dts/DCH-M225.dts
new file mode 100644 (file)
index 0000000..3c2de8d
--- /dev/null
@@ -0,0 +1,184 @@
+/dts-v1/;
+
+/include/ "mt7620a.dtsi"
+
+/ {
+       compatible = "dlink,dch-m225", "ralink,mt7620a-soc";
+       model = "D-Link DCH-M225";
+
+       gpio-keys-polled {
+               compatible = "gpio-keys-polled";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               poll-interval = <100>;
+
+               wps {
+                       label = "wps";
+                       gpios = <&gpio0 11 1>;
+                       linux,code = <0x211>;
+               };
+
+               reset {
+                       label = "reset";
+                       gpios = <&gpio1 2 1>;
+                       linux,code = <0x198>;
+               };
+       };
+
+       gpio-leds {
+               compatible = "gpio-leds";
+
+               power {
+                       label = "dch-m225:green:power";
+                       gpios = <&gpio1 5 1>;
+               };
+
+               status {
+                       label = "dch-m225:red:status";
+                       gpios = <&gpio1 0 1>;
+               };
+       };
+
+       sound {
+               compatible = "simple-audio-card";
+               simple-audio-card,name = "Audio-I2S";
+               simple-audio-card,format = "i2s";
+               simple-audio-card,bitclock-master = <&dailink0_master>;
+               simple-audio-card,frame-master = <&dailink0_master>;
+               simple-audio-card,widgets =
+                       "Headphone", "Headphones";
+               simple-audio-card,routing =
+                       "Headphones", "HP_L",
+                       "Headphones", "HP_R";
+               simple-audio-card,mclk-fs = <256>;
+               simple-audio-card,hp-det-gpio = <&gpio0 14 1>;
+
+               simple-audio-card,cpu {
+                       sound-dai = <&i2s>;
+               };
+
+               dailink0_master: simple-audio-card,codec {
+                       sound-dai = <&codec>;
+               };
+       };
+};
+
+&gpio0 {
+       status = "okay";
+};
+
+&gpio1 {
+       status = "okay";
+};
+
+&i2c {
+       status = "okay";
+
+       codec: wm8960@1a {
+               #sound-dai-cells = <0>;
+               compatible = "wlf,wm8960";
+               reg = <0x1a>;
+
+               wlf,shared-lrclk;
+       };
+};
+
+&i2s {
+       #sound-dai-cells = <0>;
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&gpio_i2s_pins>, <&wm8960_mclk_pins>;
+};
+
+&spi0 {
+       status = "okay";
+
+       m25p80@0 {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               compatible = "jedec,spi-nor";
+               reg = <0>;
+               linux,modalias = "m25p80";
+               spi-max-frequency = <80000000>;
+               m25p,fast-read;
+
+               partition@0 {
+                       label = "u-boot";
+                       reg = <0x0 0x30000>;
+                       read-only;
+               };
+
+               partition@30000 {
+                       label = "u-boot-env";
+                       reg = <0x30000 0x4000>;
+                       read-only;
+               };
+
+               factory: partition@34000 {
+                       label = "factory";
+                       reg = <0x34000 0x4000>;
+                       read-only;
+               };
+
+               nvram: partition@38000 {
+                       label = "nvram";
+                       reg = <0x38000 0x8000>;
+                       read-only;
+               };
+
+               partition@40000 {
+                       label = "devconf";
+                       reg = <0x40000 0x10000>;
+                       read-only;
+               };
+
+               partition@50000 {
+                       label = "upgrade_rec";
+                       reg = <0x50000 0x100000>;
+                       read-only;
+               };
+
+               partition@150000 {
+                       label = "firmware";
+                       reg = <0x150000 0x6b0000>;
+               };
+       };
+};
+
+&gdma {
+       status = "okay";
+};
+
+&pinctrl {
+       state_default: pinctrl0 {
+               gpio {
+                       ralink,group = "wdt", "rgmii1";
+                       ralink,function = "gpio";
+               };
+
+               pa {
+                       ralink,group = "pa";
+                       ralink,function = "pa";
+               };
+
+               wm8960_mclk_pins: wm8960_mclk {
+                       wm8960_mclk {
+                               ralink,group = "mdio";
+                               ralink,function = "refclk";
+                       };
+               };
+       };
+};
+
+&ethernet {
+       mtd-mac-address = <&factory 0x4>;
+};
+
+&gsw {
+       ralink,port4 = "ephy";
+};
+
+&wmac {
+       ralink,mtd-eeprom = <&factory 0>;
+};
+
index 641d248e606381040dfb17c0ef8bedef7bf6a197..96966b464706edb963bff00e6365b7d643183493 100644 (file)
                        };
                };
 
+               gpio_i2s_pins: gpio_i2s {
+                       gpio_i2s {
+                               ralink,group = "uartf";
+                               ralink,function = "gpio i2s";
+                       };
+               };
+
                spi_pins: spi {
                        spi {
                                ralink,group = "spi";
index b1afb82c0034664c00ee916779a0a0917dc915e4..8e1346ded290c194f9e83757d560c472be34d9a8 100644 (file)
@@ -41,6 +41,15 @@ define Build/elecom-header
        $(STAGING_DIR_HOST)/bin/tar -cf $@ -C $(KDIR) v_0.0.0.bin v_0.0.0.md5
 endef
 
+define Build/seama
+       $(STAGING_DIR_HOST)/bin/seama -i $@ $(1)
+       mv $@.seama $@
+endef
+
+define Build/seama-seal
+       $(call Build/seama,-s $@.seama $(1))
+endef
+
 define Device/ArcherC20i
   DTS := ArcherC20i
   KERNEL := $(KERNEL_DTB)
@@ -413,3 +422,22 @@ define Device/tiny-ac
   DEVICE_PACKAGES := kmod-usb2 kmod-usb-ohci
 endef
 TARGET_DEVICES += tiny-ac
+
+dch_m225_mtd_size=7012352
+define Device/dch-m225
+  DTS := DCH-M225
+  IMAGES += factory.bin
+  IMAGE_SIZE := $(dch_m225_mtd_size)
+  IMAGE/sysupgrade.bin := \
+       append-kernel | pad-offset 65536 64 | append-rootfs | \
+       seama -m "dev=/dev/mtdblock/2" -m "type=firmware" | \
+       pad-rootfs | check-size $$$$(IMAGE_SIZE)
+  IMAGE/factory.bin := \
+       append-kernel | pad-offset 65536 64 | append-rootfs | pad-rootfs -x 64 | \
+       seama -m "dev=/dev/mtdblock/2" -m "type=firmware" | \
+       seama-seal -m "signature=wapn22_dlink.2013gui_dap1320b" | \
+       check-size $$$$(IMAGE_SIZE)
+  DEVICE_TITLE := D-Link DCH-M225
+  DEVICE_PACKAGES := kmod-mt76
+endef
+TARGET_DEVICES += dch-m225