[kernel/WeTek_Play] - replace the hardcoded eth and wifi led triggers with the newly added network link trigger

This commit is contained in:
Memphiz 2015-03-08 22:50:26 +01:00
parent 5f11db6557
commit 4fdfaad170

View File

@ -1,108 +1,82 @@
diff -Naur a/drivers/amlogic/ethernet/am_net8218.c b/drivers/amlogic/ethernet/am_net8218.c
--- a/drivers/amlogic/ethernet/am_net8218.c 2015-02-14 20:42:23.000000000 +0100
+++ b/drivers/amlogic/ethernet/am_net8218.c 2015-03-03 16:30:11.000000000 +0100
@@ -54,6 +54,7 @@
From 8f08833d315afc65378d7f2e2b5704b46d68a099 Mon Sep 17 00:00:00 2001
From: Memphiz <memphis@machzwo.de>
Date: Sun, 8 Mar 2015 22:21:05 +0100
Subject: [PATCH 4/6] [WeTek_Play] - use new led trigger for signaling link
status of eth and wifi links
---
drivers/amlogic/ethernet/am_net8218.c | 14 ++++++++++++++
drivers/amlogic/wifi/broadcm_40181/wl_cfg80211.c | 12 ++++++++++++
2 files changed, 26 insertions(+)
diff --git a/drivers/amlogic/ethernet/am_net8218.c b/drivers/amlogic/ethernet/am_net8218.c
index aec2980..f5ced5a 100755
--- a/drivers/amlogic/ethernet/am_net8218.c
+++ b/drivers/amlogic/ethernet/am_net8218.c
@@ -55,6 +55,12 @@
#define DRV_NAME DRIVER_NAME
#define DRV_VERSION "v2.0.0"
+#define OWNER_NAME "meson-eth"
+#ifdef CONFIG_LEDS_TRIGGER_NETWORK
+#include <linux/leds.h>
+extern void ledtrig_eth_linkup(struct led_classdev *led_cdev);
+extern void ledtrig_eth_linkdown(struct led_classdev *led_cdev);
+#endif
+
#undef CONFIG_HAS_EARLYSUSPEND
#ifdef CONFIG_HAS_EARLYSUSPEND
@@ -975,6 +976,12 @@
#include <linux/earlysuspend.h>
@@ -975,6 +981,14 @@ static void aml_adjust_link(struct net_device *dev)
return;
spin_lock_irqsave(&priv->lock, flags);
+
+ if (phydev->link)
+ amlogic_gpio_direction_output(GPIOC_14, 1, OWNER_NAME);
+ else
+ amlogic_gpio_direction_output(GPIOC_14, 0, OWNER_NAME);
+
+#ifdef CONFIG_LEDS_TRIGGER_NETWORK
+ if (phydev->link)
+ ledtrig_eth_linkup(NULL);
+ else
+ ledtrig_eth_linkdown(NULL);
+#endif
+
if(phydev->phy_id == INTERNALPHY_ID){
val = (8<<27)|(7 << 24)|(1<<16)|(1<<15)|(1 << 13)|(1 << 12)|(4 << 4)|(0 << 1);
PERIPHS_SET_BITS(P_PREG_ETHERNET_ADDR0, val);
@@ -1316,6 +1323,8 @@
free_ringdesc(dev);
free_irq(dev->irq, dev);
diff --git a/drivers/amlogic/wifi/broadcm_40181/wl_cfg80211.c b/drivers/amlogic/wifi/broadcm_40181/wl_cfg80211.c
index 5596f1d..e9f91d7 100755
--- a/drivers/amlogic/wifi/broadcm_40181/wl_cfg80211.c
+++ b/drivers/amlogic/wifi/broadcm_40181/wl_cfg80211.c
@@ -92,6 +92,12 @@
#define IW_WSEC_ENABLED(wsec) ((wsec) & (WEP_ENABLED | TKIP_ENABLED | AES_ENABLED))
#endif /* BCMWAPI_WPI */
+ amlogic_gpio_direction_output(GPIOC_14, 0, OWNER_NAME);
+
if (g_debug > 0) {
printk(KERN_DEBUG "%s: closed\n", dev->name);
}
@@ -2870,7 +2879,7 @@
return ret;
}
-#define OWNER_NAME "meson-eth"
+#ifdef CONFIG_LEDS_TRIGGER_NETWORK
+#include <linux/leds.h>
+extern void ledtrig_wifi_linkup(struct led_classdev *led_cdev);
+extern void ledtrig_wifi_linkdown(struct led_classdev *led_cdev);
+#endif
+
void hardware_reset_phy(void){
if(reset_pin_enable){
amlogic_gpio_direction_output(reset_pin_num, 0, OWNER_NAME);
@@ -2958,6 +2967,7 @@
}
#endif
+ amlogic_gpio_request(GPIOC_14, OWNER_NAME);
printk(DRV_NAME "init(dbg[%p]=%d)\n", (&g_debug), g_debug);
switch_mod_gate_by_name("ethernet",1);
my_ndev = alloc_etherdev(sizeof(struct am_net_private));
diff -Naur a/drivers/amlogic/wifi/broadcm_40181/dhd_linux.c b/drivers/amlogic/wifi/broadcm_40181/dhd_linux.c
--- a/drivers/amlogic/wifi/broadcm_40181/dhd_linux.c 2015-02-14 20:42:23.000000000 +0100
+++ b/drivers/amlogic/wifi/broadcm_40181/dhd_linux.c 2015-03-03 16:33:58.000000000 +0100
@@ -34,7 +34,7 @@
#include <bcmutils.h>
#include <bcmendian.h>
#include <bcmdevs.h>
-
+#include <linux/amlogic/aml_gpio_consumer.h>
#include <proto/ethernet.h>
#include <proto/bcmip.h>
#include <dngl_stats.h>
@@ -4878,7 +4878,7 @@
{
printk("%s: Enter\n", __FUNCTION__);
-
+ amlogic_gpio_free(GPIOC_8, "WIFILED");
dhd_bus_unregister();
#if defined(CONFIG_WIFI_CONTROL_FUNC)
@@ -4907,6 +4907,7 @@
int chip_up = 0;
#endif
+ amlogic_gpio_request(GPIOC_8, "WIFILED");
printk("%s: Enter\n", __FUNCTION__);
if (wifi_setup_dt()) {
printk("wifi_dt : fail to setup dt\n");
diff -Naur a/drivers/amlogic/wifi/broadcm_40181/wl_cfg80211.c b/drivers/amlogic/wifi/broadcm_40181/wl_cfg80211.c
--- a/drivers/amlogic/wifi/broadcm_40181/wl_cfg80211.c 2015-02-14 20:42:23.000000000 +0100
+++ b/drivers/amlogic/wifi/broadcm_40181/wl_cfg80211.c 2015-03-03 16:35:01.000000000 +0100
@@ -47,6 +47,7 @@
#include <wl_cfgp2p.h>
#include <wl_android.h>
#include <dhd_config.h>
+#include <linux/amlogic/aml_gpio_consumer.h>
#ifdef PROP_TXSTATUS
#include <dhd_wlfc.h>
@@ -11181,6 +11182,8 @@
static struct device *cfg80211_parent_dev = NULL;
struct wl_priv *wlcfg_drv_priv = NULL;
u32 wl_dbg_level = WL_DBG_ERR;
@@ -11181,6 +11187,9 @@ static u32 wl_get_ielen(struct wl_priv *wl)
static void wl_link_up(struct wl_priv *wl)
{
wl->link_up = true;
+ amlogic_gpio_direction_output(GPIOC_8, 1, "WIFILED");
+
+#ifdef CONFIG_LEDS_TRIGGER_NETWORK
+ ledtrig_wifi_linkup(NULL);
+#endif
}
static void wl_link_down(struct wl_priv *wl)
@@ -11191,6 +11194,8 @@
@@ -11191,6 +11200,9 @@ static void wl_link_down(struct wl_priv *wl)
wl->link_up = false;
conn_info->req_ie_len = 0;
conn_info->resp_ie_len = 0;
+ amlogic_gpio_direction_output(GPIOC_8, 0, "WIFILED");
+
+#ifdef CONFIG_LEDS_TRIGGER_NETWORK
+ ledtrig_wifi_linkdown(NULL);
+#endif
}
static unsigned long wl_lock_eq(struct wl_priv *wl)
--
1.9.3 (Apple Git-50)