ramips: add support for Airlink101 AR670W

This is a RT2880-based board, 32MB RAM, 4MB flash. The bootloader
is a hacked u-Boot that reads an LZMA image directly, so we skip
generating the uImage header and enable the lzma mtdsplit parser.

Signed-off-by: Claudio Leite <leitec@staticky.com>

git-svn-id: svn://svn.openwrt.org/openwrt/trunk@43153 3c298f89-4303-0410-b956-a3cf2f4a3e73
master
John Crispin 2014-11-03 08:00:13 +00:00
parent b89672586c
commit 305ac83fa3
8 changed files with 147 additions and 3 deletions

View File

@ -41,12 +41,11 @@ case $board in
ucidef_set_led_rssi "rssihigh" "RSSIHIGH" "all0256n:green:rssihigh" "wlan0" "70" "100" "-69" "8" ucidef_set_led_rssi "rssihigh" "RSSIHIGH" "all0256n:green:rssihigh" "wlan0" "70" "100" "-69" "8"
set_wifi_led "rt2800pci-phy0::radio" set_wifi_led "rt2800pci-phy0::radio"
;; ;;
ar670w|\
ar725w|\
awapn2403) awapn2403)
set_wifi_led "rt2800soc-phy0::radio" set_wifi_led "rt2800soc-phy0::radio"
;; ;;
ar725w)
set_wifi_led "rt2800soc-phy0::radio"
;;
asl26555) asl26555)
ucidef_set_led_default "power" "POWER" "asl26555:green:power" "1" ucidef_set_led_default "power" "POWER" "asl26555:green:power" "1"
ucidef_set_led_netdev "eth" "ETH" "asl26555:green:eth" "eth0" ucidef_set_led_netdev "eth" "ETH" "asl26555:green:eth" "eth0"

View File

@ -157,6 +157,7 @@ ramips_setup_interfaces()
ucidef_add_switch_vlan "switch0" "2" "0 5t" ucidef_add_switch_vlan "switch0" "2" "0 5t"
;; ;;
ar670w | \
ar725w | \ ar725w | \
rt-n15 | \ rt-n15 | \
wl-351) wl-351)

View File

@ -12,6 +12,9 @@ get_status_led() {
3g300m | w150m) 3g300m | w150m)
status_led="tenda:blue:ap" status_led="tenda:blue:ap"
;; ;;
ar670w)
status_led="ar670w:green:power"
;;
ar725w) ar725w)
status_led="ar725w:green:power" status_led="ar725w:green:power"
;; ;;

View File

@ -28,6 +28,9 @@ ramips_board_detect() {
*"A5-V11") *"A5-V11")
name="a5-v11" name="a5-v11"
;; ;;
*"Airlink101 AR670W")
name="ar670w"
;;
*"Airlink101 AR725W") *"Airlink101 AR725W")
name="ar725w" name="ar725w"
;; ;;

View File

@ -110,6 +110,13 @@ platform_check_image() {
} }
return 0 return 0
;; ;;
ar670w)
[ "$magic" != "6d000080" ] && {
echo "Invalid image type."
return 1
}
return 0
;;
cy-swr1100 |\ cy-swr1100 |\
dir-610-a1 |\ dir-610-a1 |\
dir-645) dir-645)

View File

@ -0,0 +1,103 @@
/dts-v1/;
/include/ "rt2880.dtsi"
/ {
compatible = "AR670W", "ralink,rt2880-soc";
model = "Airlink101 AR670W";
palmbus@300000 {
gpio0: gpio@600 {
status = "okay";
};
};
pinctrl {
state_default: pinctrl0 {
gpio {
ralink,group = "i2c", "spi", "uartlite";
ralink,function = "gpio";
};
};
};
ethernet@400000 {
status = "okay";
mtd-mac-address = <&factory 0x2004>;
port@0 {
phy-handle = <&phy0>;
phy-mode = "mii";
};
mdio-bus {
status = "okay";
phy0: ethernet-phy@0 {
phy-mode = "mii";
reg = <0>;
};
};
};
wmac@480000 {
status = "okay";
ralink,mtd-eeprom = <&factory 0x2000>;
};
cfi@bdc00000 {
compatible = "cfi-flash";
reg = <0xbc400000 0x800000>;
bank-width = <2>;
#address-cells = <1>;
#size-cells = <1>;
u-boot@0 {
reg = <0x0 0x30000>;
label = "u-boot";
read-only;
};
factory: factory@30000 {
reg = <0x30000 0x10000>;
label = "factory";
read-only;
};
firmware@40000 {
reg = <0x40000 0x3c0000>;
label = "firmware";
};
};
gpio-leds {
compatible = "gpio-leds";
status {
label = "ar670w:green:power";
gpios = <&gpio0 7 1>;
};
wpsblue {
label = "ar670w:blue:wps";
gpios = <&gpio0 13 1>;
};
};
gpio-keys-polled {
compatible = "gpio-keys-polled";
#address-cells = <1>;
#size-cells = <0>;
poll-interval = <100>;
wps {
label = "wps";
gpios = <&gpio0 0 1>;
linux,code = <0x211>;
};
reset {
label = "reset";
gpios = <&gpio0 9 1>;
linux,code = <0x198>;
};
};
};

View File

@ -295,10 +295,36 @@ define BuildFirmware/Gemtek/squashfs
endef endef
BuildFirmware/Gemtek/initramfs=$(call BuildFirmware/OF/initramfs,$(1),$(2),$(3)) BuildFirmware/Gemtek/initramfs=$(call BuildFirmware/OF/initramfs,$(1),$(2),$(3))
# Airlink101 AR670W -- LZMA without uImage header
define BuildFirmware/AR670W/squashfs
$(call PatchKernelLzmaDtb,$(2),$(3),$(5))
$(eval output_name=$(IMG_PREFIX)-$(2)-$(1)-$(if $(4),$(4),sysupgrade).bin)
$(eval factory_name=$(IMG_PREFIX)-$(2)-$(1)-factory.bin)
( dd if=$(KDIR)/vmlinux-$(2).bin.lzma bs=65536 \
conv=sync; dd if=$(KDIR)/root.$(1) ) > $(KDIR)/$(output_name)
$(call prepare_generic_squashfs,$(KDIR)/$(output_name))
if [ `stat -c%s "$(KDIR)/$(output_name)"` \
-gt $(ralink_default_fw_size_4M) ]; then \
echo "Warning: $(KDIR)/$(output_name) is too big" >&2; \
else \
mkwrgimg -i $(KDIR)/$(output_name) \
-d "/dev/mtdblock/2" \
-s "wrgn16a_airlink_ar670w" \
-o $(BIN_DIR)/$(factory_name); \
$(CP) $(KDIR)/$(output_name) $(BIN_DIR)/$(output_name); \
fi
endef
# #
# RT288X Profiles # RT288X Profiles
# #
Image/Build/Profile/AR670W=$(call BuildFirmware/AR670W/$(1),$(1),ar670w,AR670W)
Image/Build/Profile/AR725W=$(call BuildFirmware/Gemtek/$(1),$(1),ar725w,AR725W) Image/Build/Profile/AR725W=$(call BuildFirmware/Gemtek/$(1),$(1),ar725w,AR725W)
# 0x790000 # 0x790000
@ -313,6 +339,7 @@ Image/Build/Profile/WLITX4AG300N=$(call BuildFirmware/Default4M/$(1),$(1),wli-tx
ifeq ($(SUBTARGET),rt288x) ifeq ($(SUBTARGET),rt288x)
define Image/Build/Profile/Default define Image/Build/Profile/Default
$(call Image/Build/Profile/AR670W,$(1))
$(call Image/Build/Profile/AR725W,$(1)) $(call Image/Build/Profile/AR725W,$(1))
$(call Image/Build/Profile/F5D8235V1,$(1)) $(call Image/Build/Profile/F5D8235V1,$(1))
$(call Image/Build/Profile/RTN15,$(1)) $(call Image/Build/Profile/RTN15,$(1))

View File

@ -107,6 +107,7 @@ CONFIG_MTD_CMDLINE_PARTS=y
CONFIG_MTD_M25P80=y CONFIG_MTD_M25P80=y
CONFIG_MTD_PHYSMAP=y CONFIG_MTD_PHYSMAP=y
CONFIG_MTD_SPLIT_FIRMWARE=y CONFIG_MTD_SPLIT_FIRMWARE=y
CONFIG_MTD_SPLIT_LZMA_FW=y
CONFIG_MTD_UIMAGE_SPLIT=y CONFIG_MTD_UIMAGE_SPLIT=y
CONFIG_NEED_DMA_MAP_STATE=y CONFIG_NEED_DMA_MAP_STATE=y
CONFIG_NEED_PER_CPU_KM=y CONFIG_NEED_PER_CPU_KM=y