ar71xx: add support for Wallys DR531
Wallys DR531 is based on Qualcomm Atheros QCA9531 v2. Short specification: - 550/400/200 MHz (CPU/DDR/AHB) - 2x 10/100 Mbps Ethernet - 64 MB of RAM (DDR2) - 8 MB of FLASH - 2T2R 2.4 GHz with external PA (SE2576L), up to 30 dBm - 2x MMCX connectors - mini-PCIe connector with PCIe/USB buses and SIM slot - 7x LED, 1x button, 1x optional buzzer - UART, (E)JTAG and LED headers Default configuration: - WAN on eth1 (RJ45 near DC jack) - LAN on eth0 (RJ45 near button) - S4 LED set to be status LED - all LEDs configurable form user space - button configured for reset Flash instruction (do it under U-Boot, using UART): 1. tftp 0x80060000 lede-ar71xx-generic-dr531-squashfs-sysupgrade.bin 2. erase 0x9f050000 +$filesize 3. cp.b $fileaddr 0x9f050000 $filesize 4. setenv bootcmd "bootm 0x9f050000" 5. saveenv && reset Signed-off-by: Piotr Dymacz <pepe2k@gmail.com>
This commit is contained in:
		 Piotr Dymacz
					Piotr Dymacz
				
			
				
					committed by
					
						 Jo-Philipp Wich
						Jo-Philipp Wich
					
				
			
			
				
	
			
			
			 Jo-Philipp Wich
						Jo-Philipp Wich
					
				
			
						parent
						
							3c6b091b65
						
					
				
				
					commit
					e767980eb8
				
			| @@ -156,6 +156,11 @@ db120) | |||||||
| 	ucidef_set_led_usbdev "usb" "USB" "db120:green:usb" "1-1" | 	ucidef_set_led_usbdev "usb" "USB" "db120:green:usb" "1-1" | ||||||
| 	;; | 	;; | ||||||
|  |  | ||||||
|  | dr531) | ||||||
|  | 	ucidef_set_led_netdev "lan" "LAN" "dr531:green:lan" "eth0" | ||||||
|  | 	ucidef_set_led_netdev "wan" "WAN" "dr531:green:wan" "eth1" | ||||||
|  | 	;; | ||||||
|  |  | ||||||
| dragino2) | dragino2) | ||||||
| 	ucidef_set_led_wlan "wlan" "WLAN" "dragino2:red:wlan" "phy0tpt" | 	ucidef_set_led_wlan "wlan" "WLAN" "dragino2:red:wlan" "phy0tpt" | ||||||
| 	ucidef_set_led_netdev "lan" "LAN" "dragino2:red:lan" "eth0" | 	ucidef_set_led_netdev "lan" "LAN" "dragino2:red:lan" "eth0" | ||||||
|   | |||||||
| @@ -426,6 +426,7 @@ unifiac-pro) | |||||||
| 		"0@eth0" "2:lan" "3:wan" | 		"0@eth0" "2:lan" "3:wan" | ||||||
| 	;; | 	;; | ||||||
|  |  | ||||||
|  | dr531 |\ | ||||||
| wpj531) | wpj531) | ||||||
| 	ucidef_set_interfaces_lan_wan "eth0" "eth1" | 	ucidef_set_interfaces_lan_wan "eth0" "eth1" | ||||||
| 	;; | 	;; | ||||||
|   | |||||||
| @@ -113,6 +113,9 @@ get_status_led() { | |||||||
| 	dr344) | 	dr344) | ||||||
| 		status_led="dr344:green:status" | 		status_led="dr344:green:status" | ||||||
| 		;; | 		;; | ||||||
|  | 	dr531) | ||||||
|  | 		status_led="dr531:green:sig4" | ||||||
|  | 		;; | ||||||
| 	dragino2) | 	dragino2) | ||||||
| 		status_led="dragino2:red:system" | 		status_led="dragino2:red:system" | ||||||
| 		;; | 		;; | ||||||
|   | |||||||
| @@ -505,6 +505,9 @@ ar71xx_board_detect() { | |||||||
| 	*DR344) | 	*DR344) | ||||||
| 		name="dr344" | 		name="dr344" | ||||||
| 		;; | 		;; | ||||||
|  | 	*DR531) | ||||||
|  | 		name="dr531" | ||||||
|  | 		;; | ||||||
| 	*"Dragino v2") | 	*"Dragino v2") | ||||||
| 		name="dragino2" | 		name="dragino2" | ||||||
| 		;; | 		;; | ||||||
|   | |||||||
| @@ -224,6 +224,7 @@ platform_check_image() { | |||||||
| 	dlan-hotspot | \ | 	dlan-hotspot | \ | ||||||
| 	dlan-pro-500-wp | \ | 	dlan-pro-500-wp | \ | ||||||
| 	dlan-pro-1200-ac | \ | 	dlan-pro-1200-ac | \ | ||||||
|  | 	dr531 | \ | ||||||
| 	dragino2 | \ | 	dragino2 | \ | ||||||
| 	epg5000 | \ | 	epg5000 | \ | ||||||
| 	esr1750 | \ | 	esr1750 | \ | ||||||
|   | |||||||
| @@ -76,6 +76,7 @@ CONFIG_ATH79_MACH_DLAN_HOTSPOT=y | |||||||
| CONFIG_ATH79_MACH_DLAN_PRO_1200_AC=y | CONFIG_ATH79_MACH_DLAN_PRO_1200_AC=y | ||||||
| CONFIG_ATH79_MACH_DLAN_PRO_500_WP=y | CONFIG_ATH79_MACH_DLAN_PRO_500_WP=y | ||||||
| CONFIG_ATH79_MACH_DR344=y | CONFIG_ATH79_MACH_DR344=y | ||||||
|  | CONFIG_ATH79_MACH_DR531=y | ||||||
| CONFIG_ATH79_MACH_DRAGINO2=y | CONFIG_ATH79_MACH_DRAGINO2=y | ||||||
| CONFIG_ATH79_MACH_EAP300V2=y | CONFIG_ATH79_MACH_EAP300V2=y | ||||||
| CONFIG_ATH79_MACH_EAP7660D=y | CONFIG_ATH79_MACH_EAP7660D=y | ||||||
|   | |||||||
| @@ -522,6 +522,16 @@ config ATH79_MACH_DR344 | |||||||
| 	select ATH79_DEV_USB | 	select ATH79_DEV_USB | ||||||
| 	select ATH79_DEV_WMAC | 	select ATH79_DEV_WMAC | ||||||
|  |  | ||||||
|  | config ATH79_MACH_DR531 | ||||||
|  | 	bool "Wallys DR531 board support" | ||||||
|  | 	select SOC_QCA953X | ||||||
|  | 	select ATH79_DEV_ETH | ||||||
|  | 	select ATH79_DEV_GPIO_BUTTONS | ||||||
|  | 	select ATH79_DEV_LEDS_GPIO | ||||||
|  | 	select ATH79_DEV_M25P80 | ||||||
|  | 	select ATH79_DEV_USB | ||||||
|  | 	select ATH79_DEV_WMAC | ||||||
|  |  | ||||||
| config ATH79_MACH_DRAGINO2 | config ATH79_MACH_DRAGINO2 | ||||||
| 	bool "DRAGINO V2 support" | 	bool "DRAGINO V2 support" | ||||||
| 	select SOC_AR933X | 	select SOC_AR933X | ||||||
|   | |||||||
| @@ -80,6 +80,7 @@ obj-$(CONFIG_ATH79_MACH_DIR_615_I1)	+= mach-dir-615-i1.o | |||||||
| obj-$(CONFIG_ATH79_MACH_DIR_825_B1)	+= mach-dir-825-b1.o | obj-$(CONFIG_ATH79_MACH_DIR_825_B1)	+= mach-dir-825-b1.o | ||||||
| obj-$(CONFIG_ATH79_MACH_DIR_825_C1)	+= mach-dir-825-c1.o | obj-$(CONFIG_ATH79_MACH_DIR_825_C1)	+= mach-dir-825-c1.o | ||||||
| obj-$(CONFIG_ATH79_MACH_DR344)	+= mach-dr344.o | obj-$(CONFIG_ATH79_MACH_DR344)	+= mach-dr344.o | ||||||
|  | obj-$(CONFIG_ATH79_MACH_DR531)		+= mach-dr531.o | ||||||
| obj-$(CONFIG_ATH79_MACH_DRAGINO2)	+= mach-dragino2.o | obj-$(CONFIG_ATH79_MACH_DRAGINO2)	+= mach-dragino2.o | ||||||
| obj-$(CONFIG_ATH79_MACH_ESR900)	+= mach-esr900.o | obj-$(CONFIG_ATH79_MACH_ESR900)	+= mach-esr900.o | ||||||
| obj-$(CONFIG_ATH79_MACH_EW_DORIN)	+= mach-ew-dorin.o | obj-$(CONFIG_ATH79_MACH_EW_DORIN)	+= mach-ew-dorin.o | ||||||
|   | |||||||
							
								
								
									
										155
									
								
								target/linux/ar71xx/files/arch/mips/ath79/mach-dr531.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										155
									
								
								target/linux/ar71xx/files/arch/mips/ath79/mach-dr531.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,155 @@ | |||||||
|  | /* | ||||||
|  |  * Wallys DR531 board support | ||||||
|  |  * | ||||||
|  |  * Copyright (C) 2016 Piotr Dymacz <pepe2k@gmail.com> | ||||||
|  |  * | ||||||
|  |  * Based on mach-wpj531.c | ||||||
|  |  * | ||||||
|  |  * This program is free software; you can redistribute it and/or modify it | ||||||
|  |  * under the terms of the GNU General Public License version 2 as published | ||||||
|  |  * by the Free Software Foundation. | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | #include <linux/pci.h> | ||||||
|  | #include <linux/gpio.h> | ||||||
|  | #include <linux/platform_device.h> | ||||||
|  |  | ||||||
|  | #include <asm/mach-ath79/ath79.h> | ||||||
|  | #include <asm/mach-ath79/ar71xx_regs.h> | ||||||
|  |  | ||||||
|  | #include "common.h" | ||||||
|  | #include "dev-ap9x-pci.h" | ||||||
|  | #include "dev-eth.h" | ||||||
|  | #include "dev-gpio-buttons.h" | ||||||
|  | #include "dev-leds-gpio.h" | ||||||
|  | #include "dev-m25p80.h" | ||||||
|  | #include "dev-usb.h" | ||||||
|  | #include "dev-wmac.h" | ||||||
|  | #include "machtypes.h" | ||||||
|  | #include "pci.h" | ||||||
|  |  | ||||||
|  | #define DR531_GPIO_BUZZER	4 | ||||||
|  | #define DR531_GPIO_LED_WAN	11 | ||||||
|  | #define DR531_GPIO_LED_LAN	14 | ||||||
|  | #define DR531_GPIO_LED_SIG1	12 | ||||||
|  | #define DR531_GPIO_LED_SIG2	16 | ||||||
|  | #define DR531_GPIO_LED_SIG3	15 | ||||||
|  | #define DR531_GPIO_LED_SIG4	13 | ||||||
|  |  | ||||||
|  | #define DR531_GPIO_BTN_RESET	17 | ||||||
|  |  | ||||||
|  | #define DR531_KEYS_POLL_INTERVAL	20	/* msecs */ | ||||||
|  | #define DR531_KEYS_DEBOUNCE_INTERVAL	(3 * DR531_KEYS_POLL_INTERVAL) | ||||||
|  |  | ||||||
|  | #define DR531_MAC0_OFFSET		0x0 | ||||||
|  | #define DR531_MAC1_OFFSET		0x8 | ||||||
|  | #define DR531_WMAC_CALDATA_OFFSET	0x1000 | ||||||
|  |  | ||||||
|  | static struct gpio_led dr531_leds_gpio[] __initdata = { | ||||||
|  | 	{ | ||||||
|  | 		.name		= "dr531:green:wan", | ||||||
|  | 		.gpio		= DR531_GPIO_LED_WAN, | ||||||
|  | 		.active_low	= 1, | ||||||
|  | 	}, | ||||||
|  | 	{ | ||||||
|  | 		.name		= "dr531:green:lan", | ||||||
|  | 		.gpio		= DR531_GPIO_LED_LAN, | ||||||
|  | 		.active_low	= 1, | ||||||
|  | 	}, | ||||||
|  | 	{ | ||||||
|  | 		.name		= "dr531:green:sig1", | ||||||
|  | 		.gpio		= DR531_GPIO_LED_SIG1, | ||||||
|  | 		.active_low	= 1, | ||||||
|  | 	}, | ||||||
|  | 	{ | ||||||
|  | 		.name		= "dr531:green:sig2", | ||||||
|  | 		.gpio		= DR531_GPIO_LED_SIG2, | ||||||
|  | 		.active_low	= 1, | ||||||
|  | 	}, | ||||||
|  | 	{ | ||||||
|  | 		.name		= "dr531:green:sig3", | ||||||
|  | 		.gpio		= DR531_GPIO_LED_SIG3, | ||||||
|  | 		.active_low	= 1, | ||||||
|  | 	}, | ||||||
|  | 	{ | ||||||
|  | 		.name		= "dr531:green:sig4", | ||||||
|  | 		.gpio		= DR531_GPIO_LED_SIG4, | ||||||
|  | 		.active_low	= 1, | ||||||
|  | 	}, | ||||||
|  | 	{ | ||||||
|  | 		.name		= "dr531:buzzer", | ||||||
|  | 		.gpio		= DR531_GPIO_BUZZER, | ||||||
|  | 		.active_low	= 0, | ||||||
|  | 	} | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | static struct gpio_keys_button dr531_gpio_keys[] __initdata = { | ||||||
|  | 	{ | ||||||
|  | 		.desc		= "reset", | ||||||
|  | 		.type		= EV_KEY, | ||||||
|  | 		.code		= KEY_RESTART, | ||||||
|  | 		.debounce_interval = DR531_KEYS_DEBOUNCE_INTERVAL, | ||||||
|  | 		.gpio		= DR531_GPIO_BTN_RESET, | ||||||
|  | 		.active_low	= 1, | ||||||
|  | 	}, | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | static void __init dr531_gpio_setup(void) | ||||||
|  | { | ||||||
|  | 	ath79_gpio_direction_select(DR531_GPIO_BUZZER, true); | ||||||
|  | 	ath79_gpio_direction_select(DR531_GPIO_LED_WAN, true); | ||||||
|  | 	ath79_gpio_direction_select(DR531_GPIO_LED_LAN, true); | ||||||
|  | 	ath79_gpio_direction_select(DR531_GPIO_LED_SIG1, true); | ||||||
|  | 	ath79_gpio_direction_select(DR531_GPIO_LED_SIG2, true); | ||||||
|  | 	ath79_gpio_direction_select(DR531_GPIO_LED_SIG3, true); | ||||||
|  | 	ath79_gpio_direction_select(DR531_GPIO_LED_SIG4, true); | ||||||
|  |  | ||||||
|  | 	ath79_gpio_output_select(DR531_GPIO_BUZZER, 0); | ||||||
|  | 	ath79_gpio_output_select(DR531_GPIO_LED_WAN, 0); | ||||||
|  | 	ath79_gpio_output_select(DR531_GPIO_LED_LAN, 0); | ||||||
|  |  | ||||||
|  | 	ath79_register_leds_gpio(-1, ARRAY_SIZE(dr531_leds_gpio), | ||||||
|  | 				 dr531_leds_gpio); | ||||||
|  |  | ||||||
|  | 	ath79_register_gpio_keys_polled(-1, DR531_KEYS_POLL_INTERVAL, | ||||||
|  | 					ARRAY_SIZE(dr531_gpio_keys), | ||||||
|  | 					dr531_gpio_keys); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | static void __init dr531_setup(void) | ||||||
|  | { | ||||||
|  | 	u8 *art = (u8 *) KSEG1ADDR(0x1fff0000); | ||||||
|  | 	u8 *mac = (u8 *) KSEG1ADDR(0x1f03f810); | ||||||
|  |  | ||||||
|  | 	ath79_register_m25p80(NULL); | ||||||
|  |  | ||||||
|  | 	dr531_gpio_setup(); | ||||||
|  |  | ||||||
|  | 	ath79_setup_ar933x_phy4_switch(false, false); | ||||||
|  |  | ||||||
|  | 	ath79_register_mdio(0, 0x0); | ||||||
|  |  | ||||||
|  | 	/* LAN */ | ||||||
|  | 	ath79_eth0_data.duplex = DUPLEX_FULL; | ||||||
|  | 	ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII; | ||||||
|  | 	ath79_eth0_data.speed = SPEED_100; | ||||||
|  | 	ath79_eth0_data.phy_mask = BIT(4); | ||||||
|  | 	ath79_init_mac(ath79_eth0_data.mac_addr, mac + DR531_MAC1_OFFSET, 0); | ||||||
|  | 	ath79_register_eth(0); | ||||||
|  |  | ||||||
|  | 	/* WAN */ | ||||||
|  | 	ath79_switch_data.phy4_mii_en = 1; | ||||||
|  | 	ath79_eth1_data.duplex = DUPLEX_FULL; | ||||||
|  | 	ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_GMII; | ||||||
|  | 	ath79_eth1_data.speed = SPEED_1000; | ||||||
|  | 	ath79_switch_data.phy_poll_mask |= BIT(4); | ||||||
|  | 	ath79_init_mac(ath79_eth1_data.mac_addr, mac + DR531_MAC0_OFFSET, 0); | ||||||
|  | 	ath79_register_eth(1); | ||||||
|  |  | ||||||
|  | 	ath79_register_wmac(art + DR531_WMAC_CALDATA_OFFSET, NULL); | ||||||
|  |  | ||||||
|  | 	ath79_register_pci(); | ||||||
|  | 	ath79_register_usb(); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | MIPS_MACHINE(ATH79_MACH_DR531, "DR531", "Wallys DR531", dr531_setup); | ||||||
| @@ -72,6 +72,7 @@ enum ath79_mach_type { | |||||||
| 	ATH79_MACH_DLAN_PRO_500_WP,	/* devolo dLAN pro 500 Wireless+ */ | 	ATH79_MACH_DLAN_PRO_500_WP,	/* devolo dLAN pro 500 Wireless+ */ | ||||||
| 	ATH79_MACH_DLAN_PRO_1200_AC,	/* devolo dLAN pro 1200+ WiFi ac*/ | 	ATH79_MACH_DLAN_PRO_1200_AC,	/* devolo dLAN pro 1200+ WiFi ac*/ | ||||||
| 	ATH79_MACH_DR344,		/* Wallys DR344 */ | 	ATH79_MACH_DR344,		/* Wallys DR344 */ | ||||||
|  | 	ATH79_MACH_DR531,		/* Wallys DR531 */ | ||||||
| 	ATH79_MACH_DRAGINO2,		/* Dragino Version 2 */ | 	ATH79_MACH_DRAGINO2,		/* Dragino Version 2 */ | ||||||
| 	ATH79_MACH_ESR900,		/* EnGenius ESR900 */ | 	ATH79_MACH_ESR900,		/* EnGenius ESR900 */ | ||||||
| 	ATH79_MACH_EW_DORIN,		/* embedded wireless Dorin Platform */ | 	ATH79_MACH_EW_DORIN,		/* embedded wireless Dorin Platform */ | ||||||
|   | |||||||
| @@ -67,6 +67,15 @@ define Device/gl-domino | |||||||
| endef | endef | ||||||
| TARGET_DEVICES += gl-domino | TARGET_DEVICES += gl-domino | ||||||
|  |  | ||||||
|  | define Device/dr531 | ||||||
|  |   DEVICE_TITLE := Wallys DR531 | ||||||
|  |   DEVICE_PACKAGES := kmod-usb-core kmod-usb2 | ||||||
|  |   BOARDNAME = DR531 | ||||||
|  |   IMAGE_SIZE = 7808k | ||||||
|  |   MTDPARTS = spi0.0:192k(u-boot)ro,64k(u-boot-env),64k(partition-table)ro,7808k(firmware),64k(art)ro | ||||||
|  | endef | ||||||
|  | TARGET_DEVICES += dr531 | ||||||
|  |  | ||||||
| define Device/wndr3700 | define Device/wndr3700 | ||||||
|   DEVICE_TITLE := NETGEAR WNDR3700 |   DEVICE_TITLE := NETGEAR WNDR3700 | ||||||
|   DEVICE_PACKAGES := kmod-usb-core kmod-usb-ohci kmod-usb2 kmod-ledtrig-usbdev kmod-leds-wndr3700-usb |   DEVICE_PACKAGES := kmod-usb-core kmod-usb-ohci kmod-usb2 kmod-ledtrig-usbdev kmod-leds-wndr3700-usb | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user