-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi!

On Tue, 20 Nov 2007, Adalbert Prokop wrote:

Well, I hope someone can explain which values are possible for Asus
WL500GP. Going through the code will cost me rest of this year...

None. If I read the code correctly, Asus-routers just ignore writes to
/proc/sys/diag with 1.0.3-firmwares. I attached a patch which should add
the ability to switch the power-led on ASUS WL-500G (deluxe) and WL-500GP
by setting bit 1 of /proc/sys/diag.

Bye,
Holger
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
Comment: Made with pgp4pine 1.76

iD8DBQFHQ/OLV71P2fDJM84RAjB/AKCspP5Xi/o2bY1TuZIMkWUgOV1J5wCg4phz
NRqBn3bE5aV+D4YeXy7B7Bo=
=epeg
-----END PGP SIGNATURE-----
--- diag_led.c~	2007-11-21 08:02:56.000000000 +0100
+++ diag_led.c	2007-11-21 08:02:56.000000000 +0100
@@ -94,22 +94,33 @@ static void ignore(u8 ignored) {};
 // - - - - -
 #define BIT_DMZ         (1 << 0)
 #define BIT_DIAG        (1 << 2)
+#define BIT_POWER	(1 << 1)
 #define BIT_SES         (BITS(3) << 3)
 
 void (*set_diag)(u8 state);
 void (*set_dmz)(u8 state);
 void (*set_ses)(u8 state);
+void (*set_power)(u8 state);
 
 static unsigned int diag_reverse = 1;
 static unsigned int ses_reverse = 1;
 static unsigned int diag = 0;
+static unsigned int power_gpio= 0;
+static unsigned int power_reverse = 0;
+
+static void v2_set_power(u8 state) {
+	set_gpio(power_gpio,state);
+}
 
 static void diag_change()
 {
 	set_diag(diag_reverse ? 0xFF : 0x00); // off
 	set_dmz(diag_reverse ? 0xFF : 0x00); // off
 	set_ses(ses_reverse ? 0xFF : 0x00); // off
+	set_power(power_reverse ? 0xFF : 0x00); // on
 
+	if(diag & BIT_POWER) 
+		set_power(power_reverse ? 0x00 : 0xFF); // on
 	if(diag & BIT_DIAG)
 		set_diag(diag_reverse ? 0x00 : 0xFF); // on
 	if(diag & BIT_DMZ)
@@ -212,6 +223,7 @@ static int __init diag_init()
 	set_diag=ignore;
 	set_dmz=ignore;
 	set_ses=ignore;
+	set_power=ignore;
 	
 	buf=nvram_get("pmon_ver") ?: "";
 	if (((board_type & 0xf00) == 0x400) && (strncmp(buf, "CFE", 3) != 0)) {
@@ -226,6 +238,9 @@ static int __init diag_init()
 			}
 			if (!strcmp(buf,"asusX")) {
 				//asus wl-500g
+                                set_power=v2_set_power;
+                                power_gpio=(1<<0);
+                                power_reverse=1;
 				reset_gpio=(1<<6);
 			}
 		}
@@ -276,10 +291,16 @@ static int __init diag_init()
 				printk("diag: Asus WL500g premium found\n");
                                 // special button reset_gpio=(1<<4);
                                 reset_gpio=(1<<0);
+                                power_gpio=(1<<1);
+                                power_reverse=1;
+                                set_power=v2_set_power;
                         } else {
 				//wl-500g deluxe
 				printk("diag: Asus WL500g deluxe found\n");
 				reset_gpio=(1<<6);
+                                power_gpio=(1<<0);
+                                power_reverse=1;
+                                set_power=v2_set_power;
 			}
 		}
 	}
_______________________________________________
freewrt-users mailing list
[email protected]
https://www.freewrt.org/lists/listinfo/freewrt-users

Reply via email to