diff options
Diffstat (limited to 'target/linux/ar71xx/files')
| -rw-r--r-- | target/linux/ar71xx/files/arch/mips/ath79/mach-ew-dorin.c | 40 | 
1 files changed, 38 insertions, 2 deletions
| diff --git a/target/linux/ar71xx/files/arch/mips/ath79/mach-ew-dorin.c b/target/linux/ar71xx/files/arch/mips/ath79/mach-ew-dorin.c index dc052c486..47ed51b5d 100644 --- a/target/linux/ar71xx/files/arch/mips/ath79/mach-ew-dorin.c +++ b/target/linux/ar71xx/files/arch/mips/ath79/mach-ew-dorin.c @@ -85,6 +85,42 @@ static void __init ew_dorin_setup(void)  	mac[3] |= 0x40;  	ath79_init_mac(ath79_eth1_data.mac_addr, mac, 0); +	ath79_register_mdio(0, 0x0); + +	/* LAN ports */ +	ath79_register_eth(1); + +	ath79_register_leds_gpio(-1, ARRAY_SIZE(dorin_leds_gpio), +				 dorin_leds_gpio); +	ath79_register_gpio_keys_polled(-1, DORIN_KEYS_POLL_INTERVAL, +					ARRAY_SIZE(dorin_gpio_keys), +					dorin_gpio_keys); +} + +MIPS_MACHINE(ATH79_MACH_EW_DORIN, "EW-DORIN", "EmbWir-Dorin", +	     ew_dorin_setup); + + +static void __init ew_dorin_router_setup(void) +{ +	u8 *art = (u8 *) KSEG1ADDR(0x1fff0000); +	static u8 mac[6]; + +	ath79_register_m25p80(NULL); + +	ath79_register_usb(); + +	if (ar93xx_wmac_read_mac_address(mac)) { +		ath79_register_wmac(NULL, NULL); +	} else { +		ath79_register_wmac(art + DORIN_CALDATA_OFFSET, +				    art + DORIN_WMAC_MAC_OFFSET); +		memcpy(mac, art + DORIN_WMAC_MAC_OFFSET, sizeof(mac)); +	} + +	mac[3] |= 0x40; +	ath79_init_mac(ath79_eth1_data.mac_addr, mac, 0); +  	mac[3] &= 0x3F;  	ath79_init_mac(ath79_eth0_data.mac_addr, mac, 0);  	ath79_setup_ar933x_phy4_switch(true, true); @@ -104,5 +140,5 @@ static void __init ew_dorin_setup(void)  					dorin_gpio_keys);  } -MIPS_MACHINE(ATH79_MACH_EW_DORIN, "EW-DORIN", "EmbWir-Dorin", -	     ew_dorin_setup); +MIPS_MACHINE(ATH79_MACH_EW_DORIN_ROUTER, "EW-DORIN-ROUTER", +	     "EmbWir-Dorin-Router", ew_dorin_router_setup); | 
