brcm63xx: Add Sercomm AD1018 support
Add support for the Sercomm AD1018 router This a BCM6328 based board, 128 MB RAM, 128 MiB NAND flash, with an onboard BCM43217 wifi, 4 ethernet ports and 1 USB host port (not soldered). The board also has an FXS chip (Si32177) connected via SPI (SS2#), without support in LEDE. Since NAND flash chips aren't still supported in brcm63xx, the support is for now added to work only with SPI flash chips. Therefore hardware modding, soldering a new SPI flash chip, is required to make the board work with LEDE (tested and working OK). The flash at dts is intentionally left without partitioning to let the user choose a NOR chip of any size (8, 16 or 32 MB). Signed-off-by: Daniel Gonzalez Cabanelas <dgcbueu@gmail.com> [jonas.gorski: renamed ad1018 to ad1018-nor to signify the modification] Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
This commit is contained in:
		 Daniel Gonzalez Cabanelas
					Daniel Gonzalez Cabanelas
				
			
				
					committed by
					
						 Jonas Gorski
						Jonas Gorski
					
				
			
			
				
	
			
			
			 Jonas Gorski
						Jonas Gorski
					
				
			
						parent
						
							085967f774
						
					
				
				
					commit
					e12c72bb52
				
			| @@ -15,6 +15,9 @@ a4001n1) | ||||
| a4001n) | ||||
| 	ucidef_set_led_usbdev "usb" "USB" "A4001N:green:usb" "1-1" | ||||
| 	;; | ||||
| ad1018-nor) | ||||
| 	ucidef_set_led_netdev "wlan0" "WLAN" "AD1018:green:wifi" "wlan0" | ||||
| 	;; | ||||
| ar-5315u) | ||||
| 	ucidef_set_led_usbdev "usb" "USB" "AR-5315u:green:usb" "1-1" | ||||
| 	;; | ||||
|   | ||||
| @@ -98,6 +98,7 @@ vr-3026e) | ||||
| 		"0:lan:1" "1:lan:2" "2:lan:3" "3:lan:4" "8t@eth0" | ||||
| 	;; | ||||
|  | ||||
| ad1018-nor|\ | ||||
| ar-5315u |\ | ||||
| vh4032n) | ||||
| 	ucidef_add_switch "switch0" \ | ||||
|   | ||||
| @@ -12,6 +12,9 @@ set_state() { | ||||
| 	a4001n) | ||||
| 		status_led="A4001N:green:power" | ||||
| 		;; | ||||
| 	ad1018) | ||||
| 		status_led="AD1018:green:power" | ||||
| 		;; | ||||
| 	ar-5315u) | ||||
| 		status_led="AR-5315u:green:power" | ||||
| 		;; | ||||
|   | ||||
| @@ -228,6 +228,9 @@ brcm63xx_dt_detect() { | ||||
| 	"Sagem F@ST2704V2") | ||||
| 		board_name="fast2704v2" | ||||
| 		;; | ||||
| 	"Sercomm AD1018 (SPI flash mod)") | ||||
| 		board_name="ad1018-nor" | ||||
| 		;; | ||||
| 	"SFR Neuf Box 4"*) | ||||
| 		board_name="neufbox4" | ||||
| 		;; | ||||
|   | ||||
							
								
								
									
										136
									
								
								target/linux/brcm63xx/dts/ad1018-nor.dts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										136
									
								
								target/linux/brcm63xx/dts/ad1018-nor.dts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,136 @@ | ||||
| /dts-v1/; | ||||
|  | ||||
| #include "bcm6328.dtsi" | ||||
|  | ||||
| #include <dt-bindings/input/input.h> | ||||
|  | ||||
| / { | ||||
| 	model = "Sercomm AD1018 (SPI flash mod)"; | ||||
| 	compatible = "sercomm,ad1018-nor", "brcm,bcm6328"; | ||||
|  | ||||
| 	chosen { | ||||
| 		bootargs = "root=/dev/mtdblock2 rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200"; | ||||
| 	}; | ||||
|  | ||||
| 	gpio-keys-polled { | ||||
| 		compatible = "gpio-keys-polled"; | ||||
| 		#address-cells = <1>; | ||||
| 		#size-cells = <0>; | ||||
| 		poll-interval = <20>; | ||||
| 		debounce-interval = <60>; | ||||
|  | ||||
| 		wps { | ||||
| 			label = "wps"; | ||||
| 			gpios = <&pinctrl 24 1>; | ||||
| 			linux,code = <KEY_WPS_BUTTON>; | ||||
| 		}; | ||||
| 		wifi { | ||||
| 			label = "wifi"; | ||||
| 			gpios = <&pinctrl 25 1>; | ||||
| 			linux,code = <KEY_WLAN>; | ||||
| 		}; | ||||
| 		reset { | ||||
| 			label = "reset"; | ||||
| 			gpios = <&pinctrl 31 1>; | ||||
| 			linux,code = <KEY_RESTART>; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| }; | ||||
|  | ||||
| &pinctrl { | ||||
| 	pinctrl_leds: leds { | ||||
| 		function = "led"; | ||||
| 		pins = "gpio0", "gpio1"; | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| &leds { | ||||
| 	status = "ok"; | ||||
|  | ||||
| 	pinctrl-names = "default"; | ||||
| 	pinctrl-0 = <&pinctrl_leds &pinctrl_serial_led | ||||
| 		     &pinctrl_ephy0_spd_led &pinctrl_ephy1_act_led | ||||
| 		     &pinctrl_ephy2_act_led &pinctrl_ephy3_act_led>; | ||||
|  | ||||
| 	brcm,serial-leds; | ||||
| 	brcm,serial-shift-inv; | ||||
| 	brcm,serial-dat-low; | ||||
|  | ||||
| 	inet_red@0 { | ||||
| 		reg = <0>; | ||||
| 		active-low; | ||||
| 		label = "AD1018:red:internet"; | ||||
| 	}; | ||||
|  | ||||
| 	inet_green@1 { | ||||
| 		reg = <1>; | ||||
| 		active-low; | ||||
| 		label = "AD1018:green:internet"; | ||||
| 	}; | ||||
|  | ||||
| 	power_green@8 { | ||||
| 		reg = <8>; | ||||
| 		active-low; | ||||
| 		label = "AD1018:green:power"; | ||||
| 		default-state = "on"; | ||||
| 	}; | ||||
|  | ||||
| 	adsl_green@10 { | ||||
| 		reg = <10>; | ||||
| 		active-low; | ||||
| 		label = "AD1018:green:adsl"; | ||||
| 	}; | ||||
|  | ||||
| 	adsl_red@11 { | ||||
| 		reg = <11>; | ||||
| 		active-low; | ||||
| 		label = "AD1018:red:adsl"; | ||||
| 	}; | ||||
|  | ||||
| 	phone_green@12 { | ||||
| 		reg = <12>; | ||||
| 		active-low; | ||||
| 		label = "AD1018:green:phone"; | ||||
| 	}; | ||||
|  | ||||
| 	wps_green@13 { | ||||
| 		reg = <13>; | ||||
| 		active-low; | ||||
| 		label = "AD1018:green:wps"; | ||||
| 	}; | ||||
|  | ||||
| 	wifi_green@14 { | ||||
| 		reg = <14>; | ||||
| 		active-low; | ||||
| 		label = "AD1018:green:wifi"; | ||||
| 	}; | ||||
|  | ||||
| 	usb_green@15 { | ||||
| 		reg = <15>; | ||||
| 		active-low; | ||||
| 		label = "AD1018:green:usb"; | ||||
| 	}; | ||||
|  | ||||
| 	ephy0_spd@17 { | ||||
| 		reg = <17>; | ||||
| 		brcm,hardware-controlled; | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| &hsspi { | ||||
| 	status = "ok"; | ||||
|  | ||||
| 	flash@0 { | ||||
| 		compatible = "jedec,spi-nor"; | ||||
| 		spi-max-frequency = <16666667>; | ||||
| 		spi-tx-bus-width = <2>; | ||||
| 		spi-rx-bus-width = <2>; | ||||
| 		reg = <0>; | ||||
|  | ||||
| 		#address-cells = <1>; | ||||
| 		#size-cells = <1>; | ||||
|  | ||||
| 		linux,part-probe = "bcm63xxpart"; | ||||
| 	}; | ||||
| }; | ||||
| @@ -971,6 +971,18 @@ define Device/FAST2704V2 | ||||
| endef | ||||
| TARGET_DEVICES += FAST2704V2 | ||||
|  | ||||
| ### Sercomm ### | ||||
| define Device/AD1018-SPI_flash | ||||
|   $(Device/bcm63xx) | ||||
|   DEVICE_TITLE := Sercomm AD1018 (SPI flash mod) | ||||
|   DEVICE_DTS := ad1018-nor | ||||
|   CFE_BOARD_ID := 96328avngr | ||||
|   CFE_CHIP_ID := 6328 | ||||
|   DEVICE_PACKAGES := \ | ||||
|     $(B43_PACKAGES) $(USB2_PACKAGES) | ||||
| endef | ||||
| TARGET_DEVICES += AD1018-SPI_flash | ||||
|  | ||||
| ### SFR ### | ||||
| define Device/NEUFBOX4-SER | ||||
|   $(Device/bcm63xx) | ||||
|   | ||||
							
								
								
									
										93
									
								
								target/linux/brcm63xx/patches-4.4/580-board_AD1018.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										93
									
								
								target/linux/brcm63xx/patches-4.4/580-board_AD1018.patch
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,93 @@ | ||||
| --- a/arch/mips/bcm63xx/boards/board_bcm963xx.c | ||||
| +++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c | ||||
| @@ -366,6 +366,74 @@ static struct board_info __initdata boar | ||||
|  	}, | ||||
|  }; | ||||
|   | ||||
| +static struct sprom_fixup __initdata ad1018_fixups[] = { | ||||
| +	{ .offset = 6, .value = 0x1c00 }, | ||||
| +	{ .offset = 65, .value = 0x1256 }, | ||||
| +	{ .offset = 96, .value = 0x2046 }, | ||||
| +	{ .offset = 97, .value = 0xfe69 }, | ||||
| +	{ .offset = 98, .value = 0x1726 }, | ||||
| +	{ .offset = 99, .value = 0xfa5c }, | ||||
| +	{ .offset = 112, .value = 0x2046 }, | ||||
| +	{ .offset = 113, .value = 0xfea8 }, | ||||
| +	{ .offset = 114, .value = 0x1978 }, | ||||
| +	{ .offset = 115, .value = 0xfa26 }, | ||||
| +	{ .offset = 161, .value = 0x2222 }, | ||||
| +	{ .offset = 169, .value = 0x2222 }, | ||||
| +	{ .offset = 171, .value = 0x2222 }, | ||||
| +	{ .offset = 173, .value = 0x2222 }, | ||||
| +	{ .offset = 174, .value = 0x4444 }, | ||||
| +	{ .offset = 175, .value = 0x2222 }, | ||||
| +	{ .offset = 176, .value = 0x4444 }, | ||||
| +}; | ||||
| + | ||||
| +static struct board_info __initdata board_AD1018 = { | ||||
| +	.name					= "96328avngr", | ||||
| +	.expected_cpu_id			= 0x6328, | ||||
| + | ||||
| +	.has_uart0				= 1, | ||||
| +	.has_pci				= 1, | ||||
| +	.use_fallback_sprom			= 1, | ||||
| + | ||||
| +	.has_ohci0				= 1, | ||||
| +	.has_ehci0				= 1, | ||||
| +	.num_usbh_ports				= 1, | ||||
| + | ||||
| +	.has_enetsw				= 1, | ||||
| + | ||||
| +	.enetsw = { | ||||
| +		.used_ports = { | ||||
| +			[0] = { | ||||
| +				.used		= 1, | ||||
| +				.phy_id		= 1, | ||||
| +				.name		= "FIBRE", | ||||
| +			}, | ||||
| +			[1] = { | ||||
| +				.used		= 1, | ||||
| +				.phy_id		= 2, | ||||
| +				.name		= "LAN3", | ||||
| +			}, | ||||
| +			[2] = { | ||||
| +				.used		= 1, | ||||
| +				.phy_id		= 3, | ||||
| +				.name		= "LAN2", | ||||
| +			}, | ||||
| +			[3] = { | ||||
| +				.used		= 1, | ||||
| +				.phy_id		= 4, | ||||
| +				.name		= "LAN1", | ||||
| +			}, | ||||
| +		}, | ||||
| +	}, | ||||
| + | ||||
| +	.fallback_sprom = { | ||||
| +		.type 				= SPROM_BCM43217, | ||||
| +		.pci_bus			= 1, | ||||
| +		.pci_dev			= 0, | ||||
| +		.board_fixups			= ad1018_fixups, | ||||
| +		.num_board_fixups		= ARRAY_SIZE(ad1018_fixups), | ||||
| +	}, | ||||
| +}; | ||||
| + | ||||
|  static struct sprom_fixup __initdata ar5381u_fixups[] = { | ||||
|  	{ .offset = 97, .value = 0xfee5 }, | ||||
|  	{ .offset = 98, .value = 0x157c }, | ||||
| @@ -2684,6 +2752,7 @@ static const struct board_info __initcon | ||||
|  #endif | ||||
|  #ifdef CONFIG_BCM63XX_CPU_6328 | ||||
|  	&board_96328avng, | ||||
| +	&board_AD1018, | ||||
|  	&board_AR5381u, | ||||
|  	&board_AR5387un, | ||||
|  	&board_963281TAN, | ||||
| @@ -2798,6 +2867,7 @@ static struct of_device_id const bcm963x | ||||
|  	{ .compatible = "d-link,dsl-274xb-f", .data = &board_dsl_274xb_f1, }, | ||||
|  	{ .compatible = "nucom,r5010unv2", .data = &board_R5010UNV2, }, | ||||
|  	{ .compatible = "sagem,f@st2704v2", .data = &board_FAST2704V2, }, | ||||
| +	{ .compatible = "sercomm,ad1018-nor", .data = &board_AD1018, }, | ||||
|  #endif | ||||
|  #ifdef CONFIG_BCM63XX_CPU_6338 | ||||
|  	{ .compatible = "brcm,bcm96338gw", .data = &board_96338gw, }, | ||||
		Reference in New Issue
	
	Block a user