ramips: add support for Edimax EW-7476RPC / EW-7478AC

SoC:	MediaTek MT7620a @ 580MHz
RAM:	64M (Winbond W9751G6KB-25)
FLASH:	8MB (Macronix)
WiFi:	SoC-integrated: MediaTek MT7620a bgn
WiFi:	MediaTek MT7612EN nac
GbE:	1x (RTL8211E)
BTN:	WPS - RFKILL/RF 50%/RF 100% toggle
LED:	- Wifi 5g (blue)
	- Wifi 2g (blue)
	- Crossband (green)
	- Power (green)
	- WPS (green)
	- LAN (Green)
UART:	UART is present as Pads with throughholes on the PCB. They are
	located next to the switch for the wifi configuration
	3.3V - RX - GND - TX / 57600-8N1
	3.3V is the square pad

Installation
------------
Update the factory image via the web-interfaces (by default:
192.168.9.2/24).
http://192.168.9.2/index.asp

ramips: add Edimax EW-7478AC

SoC:	MediaTek MT7620a @ 580MHz
RAM:	64M (Winbond W9751G6KB-25)
FLASH:	8MB (Macronix)
WiFi:	SoC-integrated: MediaTek MT7620a bgn
WiFi:	MediaTek MT7612EN nac
GbE:	1x (RTL8211E)
BTN:	WPS - RFKILL/RF 50%/RF 100% toggle
LED:	- Wifi 5g (blue)
	- Wifi 2g (blue)
	- Crossband (green)
	- Power (green)
	- WPS (green)
	- LAN (Green)
UART:	UART is present as Pads with throughholes on the PCB. They are
	located next to the switch for the wifi configuration
	3.3V - RX - GND - TX / 57600-8N1
	3.3V is the square pad

Installation
------------
Update the factory image via the web-interfaces (by default:
http://edimaxext.setup)
Or push wpa button on power on and send firmware via tftp to 192.168.1.6

The EW-7478AC is identical to the EW-7476RPC, except instead of 2 internal
antennas it has 2 external ones.

Signed-off-by: Birger Koblitz <mail@birger-koblitz.de>
[merge conflict in 01_leds]
Signed-off-by: Petr Štetiar <ynezz@true.cz>
This commit is contained in:
Birger Koblitz
2019-06-03 22:04:12 +02:00
committed by Petr Štetiar
parent 080ba31eec
commit 88f7a29f99
7 changed files with 349 additions and 0 deletions

View File

@@ -32,6 +32,9 @@
#include <linux/bug.h>
#include <linux/netfilter.h>
#include <net/netfilter/nf_flow_table.h>
#include <linux/of_gpio.h>
#include <linux/gpio.h>
#include <linux/gpio/consumer.h>
#include <asm/mach-ralink/ralink_regs.h>
@@ -1333,6 +1336,35 @@ static int fe_stop(struct net_device *dev)
return 0;
}
static void fe_reset_phy(struct fe_priv *priv)
{
int err, msec = 30;
struct gpio_desc *phy_reset;
phy_reset = devm_gpiod_get_optional(priv->dev, "phy-reset",
GPIOD_OUT_HIGH);
if (!phy_reset)
return;
if (IS_ERR(phy_reset)) {
dev_err(priv->dev, "Error acquiring reset gpio pins: %ld\n",
PTR_ERR(phy_reset));
return;
}
err = of_property_read_u32(priv->dev->of_node, "phy-reset-duration",
&msec);
if (!err && msec > 1000)
msec = 30;
if (msec > 20)
msleep(msec);
else
usleep_range(msec * 1000, msec * 1000 + 1000);
gpiod_set_value(phy_reset, 0);
}
static int __init fe_init(struct net_device *dev)
{
struct fe_priv *priv = netdev_priv(dev);
@@ -1348,6 +1380,8 @@ static int __init fe_init(struct net_device *dev)
return -ENODEV;
}
fe_reset_phy(priv);
mac_addr = of_get_mac_address(priv->dev->of_node);
if (mac_addr)
ether_addr_copy(dev->dev_addr, mac_addr);