aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux
diff options
context:
space:
mode:
authorPawel Dembicki <paweldembicki@gmail.com>2018-01-20 09:27:03 +0100
committerMathias Kresin <dev@kresin.me>2018-03-18 22:22:38 +0100
commita5bd8de0bd80b83e43ce90ddc6623890344ad33d (patch)
tree010dcb56db1833675cdc6012b21a42f6062de46b /target/linux
parent5323477184cf39f4f20003142ce320ac1d626863 (diff)
downloadupstream-a5bd8de0bd80b83e43ce90ddc6623890344ad33d.tar.gz
upstream-a5bd8de0bd80b83e43ce90ddc6623890344ad33d.tar.bz2
upstream-a5bd8de0bd80b83e43ce90ddc6623890344ad33d.zip
ramips: add support for D-Link DWR-116-A1/2
The DWR-116-A1/2 Wireless Router is based on the MT7620N SoC. Specification: MediaTek MT7620N (580 Mhz) 32 MB of RAM 8 MB of FLASH 802.11bgn radio 5x 10/100 Mbps Ethernet (1 WAN and 4 LAN) 2x external, non-detachable antennas UART (J1 in A1, JP1 in A2) header on PCB (57600 8n1) 6x LED (GPIO-controlled), 2x button JBOOT bootloader Known issues: WAN LED is drived by uartl tx pin. I decide to use this pin as uartlite tx pin. Installation: Apply factory image via http web-gui. Signed-off-by: Pawel Dembicki <paweldembicki@gmail.com>
Diffstat (limited to 'target/linux')
-rwxr-xr-xtarget/linux/ramips/base-files/etc/board.d/01_leds1
-rwxr-xr-xtarget/linux/ramips/base-files/etc/board.d/02_network5
-rw-r--r--target/linux/ramips/base-files/etc/diag.sh1
-rw-r--r--target/linux/ramips/base-files/etc/hotplug.d/firmware/10-rt2x00-eeprom19
-rwxr-xr-xtarget/linux/ramips/base-files/lib/upgrade/platform.sh7
-rw-r--r--target/linux/ramips/dts/DWR-116-A1.dts104
-rw-r--r--target/linux/ramips/image/Makefile20
-rw-r--r--target/linux/ramips/image/mt7620.mk17
-rw-r--r--target/linux/ramips/mt7620/config-4.141
-rw-r--r--target/linux/ramips/mt7620/config-4.91
10 files changed, 175 insertions, 1 deletions
diff --git a/target/linux/ramips/base-files/etc/board.d/01_leds b/target/linux/ramips/base-files/etc/board.d/01_leds
index 0a870d9f6c..b068e62e87 100755
--- a/target/linux/ramips/base-files/etc/board.d/01_leds
+++ b/target/linux/ramips/base-files/etc/board.d/01_leds
@@ -158,6 +158,7 @@ dir-615-h1)
set_wifi_led "rt2800pci-phy0::radio"
;;
dir-620-d1|\
+dlink,dwr-116-a1|\
mzk-ex300np)
set_wifi_led "$boardname:green:wifi"
;;
diff --git a/target/linux/ramips/base-files/etc/board.d/02_network b/target/linux/ramips/base-files/etc/board.d/02_network
index 20ecf1ab76..d20b0aa1aa 100755
--- a/target/linux/ramips/base-files/etc/board.d/02_network
+++ b/target/linux/ramips/base-files/etc/board.d/02_network
@@ -80,6 +80,7 @@ ramips_setup_interfaces()
dir-320-b1|\
dir-610-a1|\
dir-615-h1|\
+ dlink,dwr-116-a1|\
ew1200|\
firewrt|\
hc5661a|\
@@ -428,6 +429,10 @@ ramips_setup_macs()
lan_mac=$(mtd_get_mac_ascii factory lanmac)
wan_mac=$(mtd_get_mac_ascii factory wanmac)
;;
+ dlink,dwr-116-a1)
+ wan_mac=$(jboot_config_read -m -i $(find_mtd_part "config") -o 0xE000)
+ lan_mac=$(macaddr_add "$wan_mac" 1)
+ ;;
e1700)
wan_mac=$(mtd_get_mac_ascii config WAN_MAC_ADDR)
;;
diff --git a/target/linux/ramips/base-files/etc/diag.sh b/target/linux/ramips/base-files/etc/diag.sh
index 2e326af0ed..2dcc75a019 100644
--- a/target/linux/ramips/base-files/etc/diag.sh
+++ b/target/linux/ramips/base-files/etc/diag.sh
@@ -93,6 +93,7 @@ get_status_led() {
dir-620-a1|\
dir-620-d1|\
dwr-512-b|\
+ dlink,dwr-116-a1|\
gb-pc1|\
gnubee,gb-pc2|\
hpm|\
diff --git a/target/linux/ramips/base-files/etc/hotplug.d/firmware/10-rt2x00-eeprom b/target/linux/ramips/base-files/etc/hotplug.d/firmware/10-rt2x00-eeprom
index 1e25643cb7..67c05c9a46 100644
--- a/target/linux/ramips/base-files/etc/hotplug.d/firmware/10-rt2x00-eeprom
+++ b/target/linux/ramips/base-files/etc/hotplug.d/firmware/10-rt2x00-eeprom
@@ -19,6 +19,19 @@ rt2x00_eeprom_extract() {
rt2x00_eeprom_die "failed to extract from $mtd"
}
+jboot_eeprom_extract() {
+ local part=$1
+ local offset=$2
+ local mtd
+
+ mtd=$(find_mtd_part $part)
+ [ -n "$mtd" ] || \
+ rt2x00_eeprom_die "no mtd device found for partition $part"
+
+ jboot_config_read -i $mtd -o $offset -e /lib/firmware/$FIRMWARE 2>/dev/null || \
+ rt2x00_eeprom_die "failed to extract from $mtd"
+}
+
rt2x00_eeprom_set_macaddr() {
local macaddr=$1
@@ -41,6 +54,12 @@ board=$(board_name)
case "$FIRMWARE" in
"soc_wmac.eeprom")
case $board in
+ dlink,dwr-116-a1)
+ wan_mac=$(jboot_config_read -m -i $(find_mtd_part "config") -o 0xE000)
+ wifi_mac=$(macaddr_add "$wan_mac" 1)
+ jboot_eeprom_extract "config" 0xE000
+ rt2x00_eeprom_set_macaddr $wifi_mac
+ ;;
tiny-ac)
wifi_mac=$(mtd_get_mac_ascii u-boot-env INIC_MAC_ADDR)
rt2x00_eeprom_extract "factory" 0 512
diff --git a/target/linux/ramips/base-files/lib/upgrade/platform.sh b/target/linux/ramips/base-files/lib/upgrade/platform.sh
index d2bd860cb1..e6489a2b58 100755
--- a/target/linux/ramips/base-files/lib/upgrade/platform.sh
+++ b/target/linux/ramips/base-files/lib/upgrade/platform.sh
@@ -270,6 +270,13 @@ platform_check_image() {
}
return 0
;;
+ dlink,dwr-116-a1)
+ [ "$magic" != "0404242b" ] && {
+ echo "Invalid image type."
+ return 1
+ }
+ return 0
+ ;;
hc5962|\
mir3g|\
r6220|\
diff --git a/target/linux/ramips/dts/DWR-116-A1.dts b/target/linux/ramips/dts/DWR-116-A1.dts
new file mode 100644
index 0000000000..928e34ea4d
--- /dev/null
+++ b/target/linux/ramips/dts/DWR-116-A1.dts
@@ -0,0 +1,104 @@
+/dts-v1/;
+
+#include "mt7620n.dtsi"
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+
+/ {
+ compatible = "dlink,dwr-116-a1", "ralink,mt7620n-soc";
+ model = "D-Link DWR-116 A1/A2";
+
+ gpio-keys-polled {
+ compatible = "gpio-keys-polled";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ poll-interval = <20>;
+
+ wps {
+ label = "wps";
+ gpios = <&gpio0 2 GPIO_ACTIVE_LOW>;
+ linux,code = <KEY_WPS_BUTTON>;
+ };
+
+ reset {
+ label = "reset";
+ gpios = <&gpio0 1 GPIO_ACTIVE_LOW>;
+ linux,code = <KEY_RESTART>;
+ };
+ };
+
+ gpio-leds {
+ compatible = "gpio-leds";
+
+ status {
+ label = "dwr-116-a1:green:status";
+ gpios = <&gpio0 0 GPIO_ACTIVE_HIGH>;
+ };
+
+ wifi {
+ label = "dwr-116-a1:green:wifi";
+ gpios = <&gpio3 0 GPIO_ACTIVE_LOW>;
+ };
+ };
+};
+
+&gpio1 {
+ status = "okay";
+};
+
+&gpio3 {
+ status = "okay";
+};
+
+&spi0 {
+ status = "okay";
+
+ m25p80@0 {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ compatible = "jedec,spi-nor";
+ reg = <0>;
+ spi-max-frequency = <50000000>;
+
+ partition@0 {
+ label = "jboot";
+ reg = <0x0 0x10000>;
+ read-only;
+ };
+
+ partition@10000 {
+ label = "firmware";
+ reg = <0x10000 0x7e0000>;
+ };
+
+ config: partition@7f0000 {
+ label = "config";
+ reg = <0x7f0000 0x10000>;
+ read-only;
+ };
+ };
+};
+
+&ehci {
+ status = "okay";
+};
+
+&ohci {
+ status = "okay";
+};
+
+&pinctrl {
+ state_default: pinctrl0 {
+ default {
+ ralink,group = "i2c", "wled";
+ ralink,function = "gpio";
+ };
+ };
+};
+
+&ethernet {
+ mediatek,portmap = "llllw";
+ pinctrl-names = "default";
+ pinctrl-0 = <&ephy_pins>;
+};
diff --git a/target/linux/ramips/image/Makefile b/target/linux/ramips/image/Makefile
index abcff03629..13934c5b06 100644
--- a/target/linux/ramips/image/Makefile
+++ b/target/linux/ramips/image/Makefile
@@ -111,6 +111,26 @@ define Build/wrg-header
mv $@.new $@
endef
+# combine kernel and rootfs into one image
+# mkdlinkfw <type> <optional extra arguments to mkdlinkfw binary>
+
+define Build/mkdlinkfw
+ -$(STAGING_DIR_HOST)/bin/mkdlinkfw \
+ -k $(IMAGE_KERNEL) \
+ -r $(IMAGE_ROOTFS) \
+ -o $@ \
+ -s $(DLINK_FIRMWARE_SIZE)
+endef
+
+define Build/mkdlinkfw-factory
+ -$(STAGING_DIR_HOST)/bin/mkdlinkfw \
+ -m $(DLINK_ROM_ID) -f $(DLINK_FAMILY_MEMBER) \
+ -F $@ \
+ -o $@.new \
+ -s $(DLINK_FIRMWARE_SIZE)
+ mv $@.new $@
+endef
+
#
# The real magic happens inside these templates
#
diff --git a/target/linux/ramips/image/mt7620.mk b/target/linux/ramips/image/mt7620.mk
index d4c4e719b7..b352c5408d 100644
--- a/target/linux/ramips/image/mt7620.mk
+++ b/target/linux/ramips/image/mt7620.mk
@@ -2,7 +2,8 @@
# MT7620A Profiles
#
-DEVICE_VARS += TPLINK_FLASHLAYOUT TPLINK_HWID TPLINK_HWREV TPLINK_HWREVADD TPLINK_HVERSION
+DEVICE_VARS += TPLINK_FLASHLAYOUT TPLINK_HWID TPLINK_HWREV TPLINK_HWREVADD TPLINK_HVERSION \
+ DLINK_ROM_ID DLINK_FAMILY_MEMBER DLINK_FIRMWARE_SIZE
define Build/elecom-header
cp $@ $(KDIR)/v_0.0.0.bin
@@ -147,6 +148,20 @@ define Device/dir-810l
endef
TARGET_DEVICES += dir-810l
+define Device/dlink_dwr-116-a1
+ DTS := DWR-116-A1
+ DEVICE_TITLE := D-Link DWR-116 A1/A2
+ DEVICE_PACKAGES := kmod-usb2 jboot-tools
+ DLINK_ROM_ID := DLK6E3803001
+ DLINK_FAMILY_MEMBER := 0x6E38
+ DLINK_FIRMWARE_SIZE := 0x7E0000
+ KERNEL := $(KERNEL_DTB)
+ IMAGES += factory.bin
+ IMAGE/sysupgrade.bin := mkdlinkfw | pad-rootfs | append-metadata
+ IMAGE/factory.bin := mkdlinkfw | pad-rootfs | mkdlinkfw-factory
+endef
+TARGET_DEVICES += dlink_dwr-116-a1
+
define Device/e1700
DTS := E1700
IMAGES += factory.bin
diff --git a/target/linux/ramips/mt7620/config-4.14 b/target/linux/ramips/mt7620/config-4.14
index a65fdba29e..3e006e2ef8 100644
--- a/target/linux/ramips/mt7620/config-4.14
+++ b/target/linux/ramips/mt7620/config-4.14
@@ -164,6 +164,7 @@ CONFIG_MTD_SPI_NOR=y
CONFIG_MTD_SPI_NOR_USE_4K_SECTORS=y
CONFIG_MTD_SPI_NOR_USE_4K_SECTORS_LIMIT=16384
CONFIG_MTD_SPLIT_FIRMWARE=y
+CONFIG_MTD_SPLIT_JIMAGE_FW=y
CONFIG_MTD_SPLIT_SEAMA_FW=y
CONFIG_MTD_SPLIT_TPLINK_FW=y
CONFIG_MTD_SPLIT_UIMAGE_FW=y
diff --git a/target/linux/ramips/mt7620/config-4.9 b/target/linux/ramips/mt7620/config-4.9
index 4f8c68629e..24c007c6c8 100644
--- a/target/linux/ramips/mt7620/config-4.9
+++ b/target/linux/ramips/mt7620/config-4.9
@@ -143,6 +143,7 @@ CONFIG_MTD_SPI_NOR=y
CONFIG_MTD_SPI_NOR_USE_4K_SECTORS=y
CONFIG_MTD_SPI_NOR_USE_4K_SECTORS_LIMIT=16384
CONFIG_MTD_SPLIT_FIRMWARE=y
+CONFIG_MTD_SPLIT_JIMAGE_FW=y
CONFIG_MTD_SPLIT_SEAMA_FW=y
CONFIG_MTD_SPLIT_TPLINK_FW=y
CONFIG_MTD_SPLIT_UIMAGE_FW=y