ar71xx: add support for GL.iNet GL-AR750S
This patch adds supports for GL-AR750S. Specification: - SOC: QCA9563 (775MHz) - Flash: 16 MiB (W25Q128FVSG) - RAM: 128 MiB DDR2 - Ethernet: 2x 1Gbps LAN + 1x 1Gbps WAN - Wireless: 2.4GHz (bgn) and 5GHz (ac) - USB: 1x USB 2.0 port - Button: 1x switch button, 1x reset button - LED: 3x LEDS (green) Flash instruction: Apply factory image via web-gui. Signed-off-by: Luo chongjun <luochongjun@gl-inet.com>
This commit is contained in:
		 Luo chongjun
					Luo chongjun
				
			
				
					committed by
					
						 John Crispin
						John Crispin
					
				
			
			
				
	
			
			
			 John Crispin
						John Crispin
					
				
			
						parent
						
							27eab4fa57
						
					
				
				
					commit
					312d7a4a5a
				
			| @@ -385,6 +385,10 @@ gl-ar750) | |||||||
| 	ucidef_set_led_wlan "wlan2g" "WLAN2G" "$board:white:wlan2g" "phy1tpt" | 	ucidef_set_led_wlan "wlan2g" "WLAN2G" "$board:white:wlan2g" "phy1tpt" | ||||||
| 	ucidef_set_led_wlan "wlan5g" "WLAN5G" "$board:white:wlan5g" "phy0tpt" | 	ucidef_set_led_wlan "wlan5g" "WLAN5G" "$board:white:wlan5g" "phy0tpt" | ||||||
| 	;; | 	;; | ||||||
|  | gl-ar750s) | ||||||
|  | 	ucidef_set_led_wlan "wlan2g" "WLAN2G" "$board:green:wlan2g" "phy1tpt" | ||||||
|  | 	ucidef_set_led_wlan "wlan5g" "WLAN5G" "$board:green:wlan5g" "phy0tpt" | ||||||
|  | 	;; | ||||||
| gl-mifi) | gl-mifi) | ||||||
| 	ucidef_set_led_wlan "wlan" "WLAN" "$board:green:wlan" "phy0tpt" | 	ucidef_set_led_wlan "wlan" "WLAN" "$board:green:wlan" "phy0tpt" | ||||||
| 	ucidef_set_led_netdev "wan" "WAN" "$board:green:wan" "eth0" | 	ucidef_set_led_netdev "wan" "WAN" "$board:green:wan" "eth0" | ||||||
|   | |||||||
| @@ -433,6 +433,10 @@ ar71xx_setup_interfaces() | |||||||
| 		ucidef_add_switch "switch0" \ | 		ucidef_add_switch "switch0" \ | ||||||
| 			"0@eth1" "1:lan" "2:lan" | 			"0@eth1" "1:lan" "2:lan" | ||||||
| 		;; | 		;; | ||||||
|  | 	gl-ar750s) | ||||||
|  | 		ucidef_add_switch "switch0" \ | ||||||
|  |  			"0@eth0" "2:lan:2" "3:lan:1" "1:wan" | ||||||
|  | 		;; | ||||||
| 	jwap230) | 	jwap230) | ||||||
| 		ucidef_set_interfaces_lan_wan "eth0.1" "eth1.2" | 		ucidef_set_interfaces_lan_wan "eth0.1" "eth1.2" | ||||||
| 		ucidef_add_switch "switch0" \ | 		ucidef_add_switch "switch0" \ | ||||||
|   | |||||||
| @@ -99,6 +99,7 @@ case "$FIRMWARE" in | |||||||
| 		ath10kcal_extract "caldata" 20480 2116 | 		ath10kcal_extract "caldata" 20480 2116 | ||||||
| 		ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) +1) | 		ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) +1) | ||||||
| 		;; | 		;; | ||||||
|  | 	gl-ar750s|\ | ||||||
| 	gl-ar750|\ | 	gl-ar750|\ | ||||||
| 	tl-wpa8630) | 	tl-wpa8630) | ||||||
| 		ath10kcal_extract "art" 20480 2116 | 		ath10kcal_extract "art" 20480 2116 | ||||||
|   | |||||||
| @@ -727,6 +727,9 @@ ar71xx_board_detect() { | |||||||
| 	*"GL-AR750") | 	*"GL-AR750") | ||||||
| 		name="gl-ar750" | 		name="gl-ar750" | ||||||
| 		;; | 		;; | ||||||
|  | 	*"GL-AR750S") | ||||||
|  | 		name="gl-ar750s" | ||||||
|  | 		;; | ||||||
| 	*"GL-CONNECT INET v1") | 	*"GL-CONNECT INET v1") | ||||||
| 		name="gl-inet" | 		name="gl-inet" | ||||||
|  |  | ||||||
|   | |||||||
| @@ -260,6 +260,7 @@ platform_check_image() { | |||||||
| 	gl-ar300m|\ | 	gl-ar300m|\ | ||||||
| 	gl-ar300|\ | 	gl-ar300|\ | ||||||
| 	gl-ar750|\ | 	gl-ar750|\ | ||||||
|  | 	gl-ar750s|\ | ||||||
| 	gl-domino|\ | 	gl-domino|\ | ||||||
| 	gl-mifi|\ | 	gl-mifi|\ | ||||||
| 	gl-usb150|\ | 	gl-usb150|\ | ||||||
|   | |||||||
| @@ -120,6 +120,7 @@ CONFIG_ATH79=y | |||||||
| # CONFIG_ATH79_MACH_GL_AR300 is not set | # CONFIG_ATH79_MACH_GL_AR300 is not set | ||||||
| # CONFIG_ATH79_MACH_GL_AR300M is not set | # CONFIG_ATH79_MACH_GL_AR300M is not set | ||||||
| # CONFIG_ATH79_MACH_GL_AR750 is not set | # CONFIG_ATH79_MACH_GL_AR750 is not set | ||||||
|  | # CONFIG_ATH79_MACH_GL_AR750S is not set | ||||||
| # CONFIG_ATH79_MACH_GL_DOMINO is not set | # CONFIG_ATH79_MACH_GL_DOMINO is not set | ||||||
| # CONFIG_ATH79_MACH_GL_INET is not set | # CONFIG_ATH79_MACH_GL_INET is not set | ||||||
| # CONFIG_ATH79_MACH_GL_MIFI is not set | # CONFIG_ATH79_MACH_GL_MIFI is not set | ||||||
|   | |||||||
| @@ -814,6 +814,17 @@ config ATH79_MACH_GL_AR750 | |||||||
| 	select ATH79_DEV_USB | 	select ATH79_DEV_USB | ||||||
| 	select ATH79_DEV_WMAC | 	select ATH79_DEV_WMAC | ||||||
|  |  | ||||||
|  | config ATH79_MACH_GL_AR750S | ||||||
|  | 	bool "GL.iNet GL-AR750S support" | ||||||
|  | 	select SOC_QCA956X | ||||||
|  | 	select ATH79_DEV_AP9X_PCI if PCI | ||||||
|  | 	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_GL_DOMINO | config ATH79_MACH_GL_DOMINO | ||||||
| 	bool "DOMINO support" | 	bool "DOMINO support" | ||||||
| 	select SOC_AR933X | 	select SOC_AR933X | ||||||
|   | |||||||
| @@ -130,6 +130,7 @@ obj-$(CONFIG_ATH79_MACH_GL_AR150)		+= mach-gl-ar150.o | |||||||
| obj-$(CONFIG_ATH79_MACH_GL_AR300)		+= mach-gl-ar300.o | obj-$(CONFIG_ATH79_MACH_GL_AR300)		+= mach-gl-ar300.o | ||||||
| obj-$(CONFIG_ATH79_MACH_GL_AR300M)		+= mach-gl-ar300m.o | obj-$(CONFIG_ATH79_MACH_GL_AR300M)		+= mach-gl-ar300m.o | ||||||
| obj-$(CONFIG_ATH79_MACH_GL_AR750)		+= mach-gl-ar750.o | obj-$(CONFIG_ATH79_MACH_GL_AR750)		+= mach-gl-ar750.o | ||||||
|  | obj-$(CONFIG_ATH79_MACH_GL_AR750S)		+= mach-gl-ar750s.o | ||||||
| obj-$(CONFIG_ATH79_MACH_GL_DOMINO)		+= mach-gl-domino.o | obj-$(CONFIG_ATH79_MACH_GL_DOMINO)		+= mach-gl-domino.o | ||||||
| obj-$(CONFIG_ATH79_MACH_GL_INET)		+= mach-gl-inet.o | obj-$(CONFIG_ATH79_MACH_GL_INET)		+= mach-gl-inet.o | ||||||
| obj-$(CONFIG_ATH79_MACH_GL_MIFI)		+= mach-gl-mifi.o | obj-$(CONFIG_ATH79_MACH_GL_MIFI)		+= mach-gl-mifi.o | ||||||
|   | |||||||
							
								
								
									
										193
									
								
								target/linux/ar71xx/files/arch/mips/ath79/mach-gl-ar750s.c
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										193
									
								
								target/linux/ar71xx/files/arch/mips/ath79/mach-gl-ar750s.c
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,193 @@ | |||||||
|  | /* | ||||||
|  |  *  GL.iNet GL-AR750S board support | ||||||
|  |  * | ||||||
|  |  *  Copyright (C) 2018 luochongjun <luochongjun@gl-inet.com> | ||||||
|  |  * | ||||||
|  |  *  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/init.h> | ||||||
|  | #include <linux/pci.h> | ||||||
|  | #include <linux/platform_device.h> | ||||||
|  | #include <linux/ath9k_platform.h> | ||||||
|  | #include <linux/etherdevice.h> | ||||||
|  |  | ||||||
|  | #include <linux/i2c.h> | ||||||
|  | #include <linux/i2c-gpio.h> | ||||||
|  |  | ||||||
|  | #include <asm/mach-ath79/ath79.h> | ||||||
|  | #include <asm/mach-ath79/irq.h> | ||||||
|  | #include <asm/mach-ath79/ar71xx_regs.h> | ||||||
|  |  | ||||||
|  | #include <linux/platform_data/phy-at803x.h> | ||||||
|  | #include <linux/ar8216_platform.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-spi.h" | ||||||
|  | #include "dev-m25p80.h" | ||||||
|  | #include "dev-wmac.h" | ||||||
|  | #include "dev-usb.h" | ||||||
|  | #include "machtypes.h" | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #define GL_AR750S_KEYS_POLL_INTERVAL	20 | ||||||
|  | #define GL_AR750S_KEYS_DEBOUNCE_INTERVAL	(3 * GL_AR750S_KEYS_POLL_INTERVAL) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #define GL_AR750S_GPIO_LED_WLAN2G       19 | ||||||
|  | #define GL_AR750S_GPIO_LED_WLAN5G       20 | ||||||
|  | #define GL_AR750S_GPIO_LED_POWER	1 | ||||||
|  | #define GL_AR750S_GPIO_USB_POWER	7 | ||||||
|  |  | ||||||
|  | #define GL_AR750S_GPIO_BTN_RESET	2 | ||||||
|  | #define GL_AR750S_GPIO_BTN_RIGHT	8 | ||||||
|  |  | ||||||
|  | #define GL_AR750S_MAC0_OFFSET             0x0000 | ||||||
|  | #define GL_AR750S_WMAC_CALDATA_OFFSET     0x1000 | ||||||
|  | #define GL_AR750S_PCI_CALDATA_OFFSET      0x5000 | ||||||
|  |  | ||||||
|  | #define GL_AR750S_GPIO_I2C_SDA	5 | ||||||
|  | #define GL_AR750S_GPIO_I2C_SCL	21 | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | static struct spi_board_info gl_ar750s_spi_info[] = { | ||||||
|  |     { | ||||||
|  |         .bus_num    = 0, | ||||||
|  |         .chip_select    = 0, | ||||||
|  |         .max_speed_hz   = 25000000, | ||||||
|  |         .modalias   = "m25p80", | ||||||
|  |         .platform_data  = NULL, | ||||||
|  |     }, | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | static struct ath79_spi_platform_data gl_ar750s_spi_data = { | ||||||
|  |     .bus_num        = 0, | ||||||
|  |     .num_chipselect     = 2, | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | static struct gpio_led gl_ar750s_leds_gpio[] __initdata = { | ||||||
|  | 	{ | ||||||
|  | 		 .name           = "gl-ar750s:green:power", | ||||||
|  | 		 .gpio           = GL_AR750S_GPIO_LED_POWER, | ||||||
|  | 		.default_state  = LEDS_GPIO_DEFSTATE_KEEP, | ||||||
|  | 		.active_low     = 1, | ||||||
|  |    	 },{ | ||||||
|  | 		 .name           = "gl-ar750s:green:usbpower", | ||||||
|  | 		 .gpio           = GL_AR750S_GPIO_USB_POWER, | ||||||
|  | 		.active_low     = 1, | ||||||
|  |    	 },{ | ||||||
|  | 		.name		= "gl-ar750s:green:wlan2g", | ||||||
|  | 		.gpio		= GL_AR750S_GPIO_LED_WLAN2G, | ||||||
|  | 		.active_low	= 1, | ||||||
|  | 	},{ | ||||||
|  | 		.name		= "gl-ar750s:green:wlan5g", | ||||||
|  | 		.gpio		= GL_AR750S_GPIO_LED_WLAN5G, | ||||||
|  | 		.active_low	= 0, | ||||||
|  | 	} | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | static struct gpio_keys_button gl_ar750s_gpio_keys[] __initdata = { | ||||||
|  |     { | ||||||
|  |         .desc                   = "reset", | ||||||
|  |         .type                   = EV_KEY, | ||||||
|  |         .code                   = KEY_RESTART, | ||||||
|  |         .debounce_interval      = GL_AR750S_KEYS_DEBOUNCE_INTERVAL, | ||||||
|  |         .gpio                   = GL_AR750S_GPIO_BTN_RESET, | ||||||
|  |         .active_low             = 1, | ||||||
|  |        }, { | ||||||
|  |         .desc                   = "right", | ||||||
|  |         .type                   = EV_KEY, | ||||||
|  |         .code                   = BTN_0, | ||||||
|  |         .debounce_interval      = GL_AR750S_KEYS_DEBOUNCE_INTERVAL, | ||||||
|  |         .gpio                   = GL_AR750S_GPIO_BTN_RIGHT, | ||||||
|  |         .active_low             = 1, | ||||||
|  |        }, | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | static struct i2c_gpio_platform_data gl_ar750s_i2c_gpio_data = { | ||||||
|  |         .sda_pin        = GL_AR750S_GPIO_I2C_SDA, | ||||||
|  |         .scl_pin        = GL_AR750S_GPIO_I2C_SCL, | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | static struct platform_device gl_ar750s_i2c_gpio_device = { | ||||||
|  |         .name           = "i2c-gpio", | ||||||
|  |         .id             = 0, | ||||||
|  |         .dev = { | ||||||
|  |                 .platform_data  = &gl_ar750s_i2c_gpio_data, | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | static struct ar8327_pad_cfg gl_ar750s_ar8327_pad0_cfg = { | ||||||
|  | 	.mode = AR8327_PAD_MAC_SGMII, | ||||||
|  | 	.sgmii_delay_en = true, | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | static struct ar8327_platform_data gl_ar750s_ar8327_data = { | ||||||
|  | 	.pad0_cfg = &gl_ar750s_ar8327_pad0_cfg, | ||||||
|  | 	.port0_cfg = { | ||||||
|  | 		.force_link = 1, | ||||||
|  | 		.speed = AR8327_PORT_SPEED_1000, | ||||||
|  | 		.duplex = 1, | ||||||
|  | 		.txpause = 1, | ||||||
|  | 		.rxpause = 1, | ||||||
|  | 	}, | ||||||
|  | }; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | static struct mdio_board_info gl_ar750s_mdio0_info[] = { | ||||||
|  | 	{ | ||||||
|  | 		.bus_id = "ag71xx-mdio.0", | ||||||
|  | 		.phy_addr = 0, | ||||||
|  | 		.platform_data = &gl_ar750s_ar8327_data, | ||||||
|  | 	}, | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | static void __init  gl_ar750s_setup(void) | ||||||
|  | { | ||||||
|  | 	u8 *eeprom = (u8 *) KSEG1ADDR(0x1f050000); | ||||||
|  |  | ||||||
|  | 	ath79_register_spi(&gl_ar750s_spi_data, gl_ar750s_spi_info, 1); | ||||||
|  |  | ||||||
|  | 	ath79_init_mac(ath79_eth0_data.mac_addr, | ||||||
|  | 	               eeprom + GL_AR750S_MAC0_OFFSET, 0); | ||||||
|  |  | ||||||
|  | 	ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_SGMII; | ||||||
|  | 	ath79_eth0_data.mii_bus_dev = &ath79_mdio0_device.dev; | ||||||
|  | 	ath79_eth0_data.phy_mask = BIT(0); | ||||||
|  |  | ||||||
|  | 	mdiobus_register_board_info(gl_ar750s_mdio0_info, | ||||||
|  | 	                            ARRAY_SIZE(gl_ar750s_mdio0_info)); | ||||||
|  |  | ||||||
|  | 	ath79_register_mdio(0, 0x00); | ||||||
|  | 	ath79_register_eth(0); | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 	ath79_register_usb(); | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 	ath79_register_wmac(eeprom + GL_AR750S_WMAC_CALDATA_OFFSET, NULL); | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 	ap91_pci_init(eeprom + GL_AR750S_PCI_CALDATA_OFFSET, NULL); | ||||||
|  |  | ||||||
|  | 	platform_device_register(&gl_ar750s_i2c_gpio_device); | ||||||
|  |  | ||||||
|  | 	ath79_register_leds_gpio(-1, ARRAY_SIZE(gl_ar750s_leds_gpio), | ||||||
|  | 	                         gl_ar750s_leds_gpio); | ||||||
|  |  | ||||||
|  | 	ath79_register_gpio_keys_polled(-1, GL_AR750S_KEYS_POLL_INTERVAL, | ||||||
|  | 	                                ARRAY_SIZE(gl_ar750s_gpio_keys), | ||||||
|  | 	                                gl_ar750s_gpio_keys); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | MIPS_MACHINE(ATH79_MACH_GL_AR750S, "GL-AR750S", "GL-AR750S", | ||||||
|  |          gl_ar750s_setup); | ||||||
| @@ -125,6 +125,7 @@ enum ath79_mach_type { | |||||||
| 	ATH79_MACH_GL_AR300,			/* GL-AR300 */ | 	ATH79_MACH_GL_AR300,			/* GL-AR300 */ | ||||||
| 	ATH79_MACH_GL_AR300M,			/* GL-AR300M */ | 	ATH79_MACH_GL_AR300M,			/* GL-AR300M */ | ||||||
| 	ATH79_MACH_GL_AR750,			/* GL.iNet GL-AR750 */ | 	ATH79_MACH_GL_AR750,			/* GL.iNet GL-AR750 */ | ||||||
|  | 	ATH79_MACH_GL_AR750S,			/* GL.iNet GL-AR750S */ | ||||||
| 	ATH79_MACH_GL_DOMINO,			/* Domino */ | 	ATH79_MACH_GL_DOMINO,			/* Domino */ | ||||||
| 	ATH79_MACH_GL_INET,			/* GL-CONNECT GL-INET */ | 	ATH79_MACH_GL_INET,			/* GL-CONNECT GL-INET */ | ||||||
| 	ATH79_MACH_GL_MIFI,			/* GL-MIFI support */ | 	ATH79_MACH_GL_MIFI,			/* GL-MIFI support */ | ||||||
|   | |||||||
| @@ -93,6 +93,7 @@ CONFIG_ATH79_MACH_GL_AR150=y | |||||||
| CONFIG_ATH79_MACH_GL_AR300=y | CONFIG_ATH79_MACH_GL_AR300=y | ||||||
| CONFIG_ATH79_MACH_GL_AR300M=y | CONFIG_ATH79_MACH_GL_AR300M=y | ||||||
| CONFIG_ATH79_MACH_GL_AR750=y | CONFIG_ATH79_MACH_GL_AR750=y | ||||||
|  | CONFIG_ATH79_MACH_GL_AR750S=y | ||||||
| CONFIG_ATH79_MACH_GL_DOMINO=y | CONFIG_ATH79_MACH_GL_DOMINO=y | ||||||
| CONFIG_ATH79_MACH_GL_INET=y | CONFIG_ATH79_MACH_GL_INET=y | ||||||
| CONFIG_ATH79_MACH_GL_MIFI=y | CONFIG_ATH79_MACH_GL_MIFI=y | ||||||
|   | |||||||
| @@ -461,6 +461,19 @@ define Device/gl-ar750 | |||||||
| endef | endef | ||||||
| TARGET_DEVICES += gl-ar750 | TARGET_DEVICES += gl-ar750 | ||||||
|  |  | ||||||
|  | define Device/gl-ar750s | ||||||
|  |   DEVICE_TITLE := GL.iNet GL-AR750S | ||||||
|  |   DEVICE_PACKAGES := kmod-ath10k ath10k-firmware-qca9887 kmod-usb-core \ | ||||||
|  | 	kmod-usb2 kmod-usb-storage | ||||||
|  |   BOARDNAME := GL-AR750S | ||||||
|  |   SUPPORTED_DEVICES := gl-ar750s | ||||||
|  |   IMAGE_SIZE := 16000k | ||||||
|  |   MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env),64k(art)ro,-(firmware) | ||||||
|  |   IMAGE/sysupgrade.bin := append-kernel | pad-to $$$$(BLOCKSIZE) | \ | ||||||
|  | 	append-rootfs | pad-rootfs | append-metadata | check-size $$$$(IMAGE_SIZE) | ||||||
|  | endef | ||||||
|  | TARGET_DEVICES += gl-ar750s | ||||||
|  |  | ||||||
| define Device/gl-domino | define Device/gl-domino | ||||||
|   DEVICE_TITLE := GL.iNet Domino Pi |   DEVICE_TITLE := GL.iNet Domino Pi | ||||||
|   DEVICE_PACKAGES := kmod-usb-core kmod-usb2 |   DEVICE_PACKAGES := kmod-usb-core kmod-usb2 | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user