ath79: add support for D-Link DIR-859 A1
Hardware spec of DIR-859 A1: SoC: QCA9563 DRAM: 64MB DDR2 Flash: 16MB SPI-NOR Switch: QCA8337N WiFi 5.8GHz: QCA9880 USB is supported on the PCB but not connected. Flash instructions: 1. Upgrade the factory.bin through the factory web interface or the u-boot failsafe interface. The firmware will boot up correctly for the first time. Do not power off the device after OpenWrt has booted. Otherwise the u-boot will enter failsafe mode as the checksum of the firmware has been changed. 2. Upgrade the sysupgrade.bin in OpenWrt. After upgrading completes the u-boot won't complain about the firmware checksum and it's OK to use now. 3. If you powered off the device before upgrading the sysupgrade.bin, just upgrade the factory.bin through the u-boot failsafe interface and then goto step 2. Signed-off-by: Weijie Gao <hackpascal@gmail.com> [squash commits, use common seama recipes, sync factory image recipe with ramips version] Signed-off-by: Mathias Kresin <dev@kresin.me>
This commit is contained in:
		 Weijie Gao
					Weijie Gao
				
			
				
					committed by
					
						 Mathias Kresin
						Mathias Kresin
					
				
			
			
				
	
			
			
			 Mathias Kresin
						Mathias Kresin
					
				
			
						parent
						
							fd35c5b205
						
					
				
				
					commit
					abc7ed2c58
				
			| @@ -28,6 +28,9 @@ buffalo,whr-g301n) | ||||
| 	ucidef_set_led_switch "lan3" "LAN3" "$boardname:green:lan3" "switch0" "0x08" | ||||
| 	ucidef_set_led_switch "lan4" "LAN4" "$boardname:green:lan4" "switch0" "0x10" | ||||
| 	;; | ||||
| dlink,dir-859-a1) | ||||
| 	ucidef_set_led_switch "internet" "WAN" "$boardname:green:internet" "switch0" "0x20" | ||||
| 	;; | ||||
| etactica,eg200) | ||||
| 	ucidef_set_led_netdev "lan" "LAN" "$boardname:red:eth0" "eth0" | ||||
| 	ucidef_set_led_oneshot "modbus" "Modbus" "$boardname:red:modbus" "100" "33" | ||||
|   | ||||
| @@ -158,6 +158,7 @@ ath79_setup_interfaces() | ||||
| 		ucidef_add_switch "switch0" \ | ||||
| 			"0@eth1" "1:lan:4" "2:lan:3" "3:lan:2" "4:lan:1" "5:wan" "6@eth0" | ||||
| 		;; | ||||
| 	dlink,dir-859-a1|\ | ||||
| 	tplink,tl-wr1043nd-v4) | ||||
| 		ucidef_add_switch "switch0" \ | ||||
| 			"0@eth0" "1:lan:4" "2:lan:3" "3:lan:2" "4:lan:1" "5:wan" | ||||
| @@ -234,6 +235,10 @@ ath79_setup_macs() | ||||
| 		lan_mac=$(mtd_get_mac_text "mac" 4) | ||||
| 		wan_mac=$(mtd_get_mac_text "mac" 24) | ||||
| 		;; | ||||
| 	dlink,dir-859-a1) | ||||
| 		lan_mac=$(mtd_get_mac_ascii devdata "lanmac") | ||||
| 		wan_mac=$(mtd_get_mac_ascii devdata "wanmac") | ||||
| 		;; | ||||
| 	elecom,wrc-300ghbk2-i) | ||||
| 		wan_mac=$(macaddr_add "$(mtd_get_mac_binary ART 4098)" -2) | ||||
| 		;; | ||||
|   | ||||
| @@ -105,6 +105,10 @@ case "$FIRMWARE" in | ||||
| 		ath9k_eeprom_extract "art" 4096 1088 | ||||
| 		ath9k_patch_fw_mac_crc $(mtd_get_mac_text "mac" 4) 2 | ||||
| 		;; | ||||
| 	dlink,dir-859-a1) | ||||
| 		ath9k_eeprom_extract "art" 4096 1088 | ||||
| 		ath9k_patch_fw_mac $(mtd_get_mac_ascii devdata "wlan24mac") 2 | ||||
| 		;; | ||||
| 	iodata,wn-ac1167dgr|\ | ||||
| 	iodata,wn-ac1600dgr2|\ | ||||
| 	iodata,wn-ag300dgr) | ||||
|   | ||||
| @@ -92,6 +92,10 @@ case "$FIRMWARE" in | ||||
| 		ath10kcal_extract "art" 20480 2116 | ||||
| 		ath10kcal_patch_mac_crc $(macaddr_add $(mtd_get_mac_binary art 0) -1) | ||||
| 		;; | ||||
| 	dlink,dir-859-a1) | ||||
| 		ath10kcal_extract "art" 20480 2116 | ||||
| 		ath10kcal_patch_mac $(mtd_get_mac_ascii devdata "wlan5mac") | ||||
| 		;; | ||||
| 	glinet,gl-x750) | ||||
| 		ath10kcal_extract "art" 20480 2116 | ||||
| 		ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) +1) | ||||
|   | ||||
| @@ -168,6 +168,7 @@ CONFIG_MTD_PHYSMAP=y | ||||
| CONFIG_MTD_SPI_NOR=y | ||||
| CONFIG_MTD_SPLIT_FIRMWARE=y | ||||
| CONFIG_MTD_SPLIT_LZMA_FW=y | ||||
| CONFIG_MTD_SPLIT_SEAMA_FW=y | ||||
| CONFIG_MTD_SPLIT_TPLINK_FW=y | ||||
| CONFIG_MTD_SPLIT_UIMAGE_FW=y | ||||
| CONFIG_MTD_TPLINK_PARTS=y | ||||
|   | ||||
							
								
								
									
										177
									
								
								target/linux/ath79/dts/qca9563_dlink_dir-859-a1.dts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										177
									
								
								target/linux/ath79/dts/qca9563_dlink_dir-859-a1.dts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,177 @@ | ||||
| // 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 "qca956x.dtsi" | ||||
|  | ||||
| / { | ||||
| 	model = "D-Link DIR-859 A1"; | ||||
| 	compatible = "dlink,dir-859-a1", "qca,qca9563"; | ||||
|  | ||||
| 	aliases { | ||||
| 		led-boot = &power; | ||||
| 		led-failsafe = &power; | ||||
| 		led-running = &power; | ||||
| 		led-upgrade = &power; | ||||
| 	}; | ||||
|  | ||||
| 	chosen { | ||||
| 		bootargs = "console=ttyS0,115200n8"; | ||||
| 	}; | ||||
|  | ||||
| 	leds { | ||||
| 		compatible = "gpio-leds"; | ||||
|  | ||||
| 		wps { | ||||
| 			label = "dir-859-a1:green:wps"; | ||||
| 			gpios = <&gpio 8 GPIO_ACTIVE_LOW>; | ||||
| 		}; | ||||
|  | ||||
| 		power: power { | ||||
| 			label = "dir-859-a1:green:power"; | ||||
| 			gpios = <&gpio 15 GPIO_ACTIVE_LOW>; | ||||
| 		}; | ||||
|  | ||||
| 		internet { | ||||
| 			label = "dir-859-a1:green:internet"; | ||||
| 			gpios = <&gpio 16 GPIO_ACTIVE_LOW>; | ||||
| 		}; | ||||
|  | ||||
| 		wlan { | ||||
| 			label = "dir-859-a1:green:wlan"; | ||||
| 			gpios = <&gpio 19 GPIO_ACTIVE_LOW>; | ||||
| 			linux,default-trigger = "phy0tpt"; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	keys { | ||||
| 		compatible = "gpio-keys-polled"; | ||||
| 		poll-interval = <20>; | ||||
|  | ||||
| 		wps { | ||||
| 			linux,code = <KEY_RESTART>; | ||||
| 			gpios = <&gpio 1 GPIO_ACTIVE_LOW>; | ||||
| 			debounce-interval = <60>; | ||||
| 		}; | ||||
|  | ||||
| 		reset { | ||||
| 			linux,code = <KEY_RESTART>; | ||||
| 			gpios = <&gpio 2 GPIO_ACTIVE_LOW>; | ||||
| 			debounce-interval = <60>; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	gpio-export { | ||||
| 		compatible = "gpio-export"; | ||||
| 		#size-cells = <0>; | ||||
|  | ||||
| 		gpio_switch_reset { | ||||
| 			gpio-export,name = "dir-859-a1:reset:switch"; | ||||
| 			gpio-export,output = <1>; | ||||
| 			gpios = <&gpio 11 GPIO_ACTIVE_HIGH>; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| &uart { | ||||
| 	status = "okay"; | ||||
| }; | ||||
|  | ||||
| &gpio { | ||||
| 	status = "okay"; | ||||
| }; | ||||
|  | ||||
| &pcie { | ||||
| 	status = "okay"; | ||||
| }; | ||||
|  | ||||
| &spi { | ||||
| 	num-cs = <1>; | ||||
|  | ||||
| 	status = "okay"; | ||||
|  | ||||
| 	flash@0 { | ||||
| 		compatible = "jedec,spi-nor"; | ||||
| 		reg = <0>; | ||||
| 		spi-max-frequency = <30000000>; | ||||
|  | ||||
| 		partitions { | ||||
| 			compatible = "fixed-partitions"; | ||||
| 			#address-cells = <1>; | ||||
| 			#size-cells = <1>; | ||||
|  | ||||
| 			partition@0 { | ||||
| 				label = "bootloader"; | ||||
| 				reg = <0x000000 0x40000>; | ||||
| 				read-only; | ||||
| 			}; | ||||
|  | ||||
| 			partition@40000 { | ||||
| 				label = "bdcfg"; | ||||
| 				reg = <0x040000 0x10000>; | ||||
| 				read-only; | ||||
| 			}; | ||||
|  | ||||
| 			partition@50000 { | ||||
| 				label = "devdata"; | ||||
| 				reg = <0x050000 0x10000>; | ||||
| 				read-only; | ||||
| 			}; | ||||
|  | ||||
| 			partition@60000 { | ||||
| 				label = "devconf"; | ||||
| 				reg = <0x060000 0x10000>; | ||||
| 				read-only; | ||||
| 			}; | ||||
|  | ||||
| 			partition@70000 { | ||||
| 				compatible = "seama"; | ||||
| 				label = "firmware"; | ||||
| 				reg = <0x070000 0xf80000>; | ||||
| 			}; | ||||
|  | ||||
| 			art: partition@ff0000 { | ||||
| 				label = "art"; | ||||
| 				reg = <0xff0000 0x010000>; | ||||
| 				read-only; | ||||
| 			}; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| &mdio0 { | ||||
| 	status = "okay"; | ||||
|  | ||||
| 	phy-mask = <0>; | ||||
|  | ||||
| 	phy0: ethernet-phy@0 { | ||||
| 		reg = <0>; | ||||
| 		phy-mode = "sgmii"; | ||||
|  | ||||
| 		qca,ar8327-initvals = < | ||||
| 			0x04 0x00080080 /* PORT0 PAD MODE CTRL */ | ||||
| 			0x10 0x81000080 /* POWER_ON_STRIP */ | ||||
| 			0x50 0xcc35cc35 /* LED_CTRL0 */ | ||||
| 			0x54 0xcb37cb37 /* LED_CTRL1 */ | ||||
| 			0x58 0x00000000 /* LED_CTRL2 */ | ||||
| 			0x5c 0x00f3cf00 /* LED_CTRL3 */ | ||||
| 			0x7c 0x0000007e /* PORT0_STATUS */ | ||||
| 			>; | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| ð0 { | ||||
| 	status = "okay"; | ||||
|  | ||||
| 	pll-data = <0x03000101 0x00000101 0x00001919>; | ||||
|  | ||||
| 	phy-mode = "sgmii"; | ||||
| 	phy-handle = <&phy0>; | ||||
| }; | ||||
|  | ||||
| &wmac { | ||||
| 	status = "okay"; | ||||
| 	qca,no-eeprom; | ||||
| }; | ||||
| @@ -2,6 +2,7 @@ include ./common-buffalo.mk | ||||
| include ./common-netgear.mk | ||||
|  | ||||
| DEVICE_VARS += ADDPATTERN_ID ADDPATTERN_VERSION | ||||
| DEVICE_VARS += SEAMA_SIGNATURE SEAMA_MTDBLOCK | ||||
|  | ||||
| define Build/cybertan-trx | ||||
| 	@echo -n '' > $@-empty.bin | ||||
| @@ -53,6 +54,23 @@ define Build/nec-fw | ||||
|   mv $@.new $@ | ||||
| endef | ||||
|  | ||||
| define Device/seama | ||||
|   KERNEL := kernel-bin | append-dtb | relocate-kernel | lzma | ||||
|   KERNEL_INITRAMFS := $$(KERNEL) | seama | ||||
|   IMAGES += factory.bin | ||||
|   SEAMA_MTDBLOCK := 1 | ||||
|  | ||||
|   # 64 bytes offset: | ||||
|   # - 28 bytes seama_header | ||||
|   # - 36 bytes of META data (4-bytes aligned) | ||||
|   IMAGE/default := append-kernel | pad-offset $$$$(BLOCKSIZE) 64 | append-rootfs | ||||
|   IMAGE/sysupgrade.bin := \ | ||||
| 	$$(IMAGE/default) | seama | pad-rootfs | append-metadata | check-size $$$$(IMAGE_SIZE) | ||||
|   IMAGE/factory.bin := \ | ||||
| 	$$(IMAGE/default) | pad-rootfs -x 64 | seama | seama-seal | check-size $$$$(IMAGE_SIZE) | ||||
|   SEAMA_SIGNATURE := | ||||
| endef | ||||
|  | ||||
| define Device/avm_fritz300e | ||||
|   ATH_SOC := ar7242 | ||||
|   DEVICE_TITLE := AVM FRITZ!WLAN Repeater 300E | ||||
| @@ -192,6 +210,17 @@ define Device/dlink_dir-835-a1 | ||||
| endef | ||||
| TARGET_DEVICES += dlink_dir-835-a1 | ||||
|  | ||||
| define Device/dlink_dir-859-a1 | ||||
|   $(Device/seama) | ||||
|   ATH_SOC := qca9563 | ||||
|   DEVICE_TITLE := D-LINK DIR-859 A1 | ||||
|   IMAGE_SIZE := 15872k | ||||
|   DEVICE_PACKAGES :=  kmod-usb-core kmod-usb2 kmod-ath10k-ct ath10k-firmware-qca988x-ct | ||||
|   SEAMA_SIGNATURE := wrgac37_dlink.2013gui_dir859 | ||||
|   SUPPORTED_DEVICES += dir-859-a1 | ||||
| endef | ||||
| TARGET_DEVICES += dlink_dir-859-a1 | ||||
|  | ||||
| define Device/elecom_wrc-300ghbk2-i | ||||
|   ATH_SOC := qca9563 | ||||
|   DEVICE_TITLE := ELECOM WRC-300GHBK2-I | ||||
|   | ||||
		Reference in New Issue
	
	Block a user