diff options
author | Birger Koblitz <mail@birger-koblitz.de> | 2019-06-03 22:04:12 +0200 |
---|---|---|
committer | Petr Štetiar <ynezz@true.cz> | 2019-06-20 08:31:24 +0200 |
commit | 88f7a29f99fb8209f6d7100d0cc0f7af6dba89cf (patch) | |
tree | 62d28e5d770a400c3f482c068885f1b57f5506a6 /target/linux/ramips/files-4.14/drivers | |
parent | 080ba31eec2ff4c165ce5a1bb9d434ddd91bdb6b (diff) | |
download | upstream-88f7a29f99fb8209f6d7100d0cc0f7af6dba89cf.tar.gz upstream-88f7a29f99fb8209f6d7100d0cc0f7af6dba89cf.tar.bz2 upstream-88f7a29f99fb8209f6d7100d0cc0f7af6dba89cf.zip |
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>
Diffstat (limited to 'target/linux/ramips/files-4.14/drivers')
-rw-r--r-- | target/linux/ramips/files-4.14/drivers/net/ethernet/mediatek/mtk_eth_soc.c | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/target/linux/ramips/files-4.14/drivers/net/ethernet/mediatek/mtk_eth_soc.c b/target/linux/ramips/files-4.14/drivers/net/ethernet/mediatek/mtk_eth_soc.c index b2c3d32c55..65aa7f3260 100644 --- a/target/linux/ramips/files-4.14/drivers/net/ethernet/mediatek/mtk_eth_soc.c +++ b/target/linux/ramips/files-4.14/drivers/net/ethernet/mediatek/mtk_eth_soc.c @@ -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); |