On 02/21/2013 02:57 PM, Tijs Van Buggenhout wrote:
> From linksys firmware : 
> 
> # et -i eth0 robord 0x0 0x0e
> 0x0000008b
> # et -i eth0 robord 0x0 0x12
> 0x0000020b
> 
> root@OpenWrt:/# robocfg robord 0x0e
> Page 0x00, Reg 0x0e: 00bb
> root@OpenWrt:/# robocfg robord 0x12
> Page 0x00, Reg 0x12: 0321
> 
> 1. Fix led control register:
> 
> On normal ports only one led was used for both link and activity (green), 
> internet port additionally had orange led on all the time.
> 
> I compared the value of registry 0x12 on linksys firmware vs openwrt, and it 
> showed a different value (0x20b for linksys vs 0x321 on openwrt).
> 
> Now the green led is always used to signal link, the orange led (only) blinks 
> on link activity.
> 
> 2. Adjust IMP port status
> 
> As I was comparing register values/bcmrobo.c source code, I noticed a 
> difference for the IMP port status register (0x0e), linksys firmware showed 
> 0x8b vs 0xbb for openwrt.
> 
> From bcmrobo.c - int bcm_robo_enable_switch:
> 
>         if ((robo->devid == DEVID53115) || (robo->devid == DEVID53125)) {
>                 /* Over ride IMP port status to make it link by default */
>                 val8 = 0;
>                 robo->ops->read_reg(robo, PAGE_CTRL, REG_CTRL_MIIPO, &val8, 
> sizeof(val8));
>                 val8 |= 0x81;   /* Make Link pass and override it. */
>                 robo->ops->write_reg(robo, PAGE_CTRL, REG_CTRL_MIIPO, &val8, 
> sizeof(val8));
>         }
> Hauke, did you use '0xb1' intentionally instead of '0x81'? Or do we want this 
> to be the same?

I used the Asus ac66u source code as a reference as this contains the
most recent source code I know of. There val8 |= 0xb1; is used.

Does chaining this to 0x81 changes the behavior of your device?

> Signed-off-by: Tijs Van Buggenhout <t...@able.be>
> 
> diff --git a/package/switch/src/switch-robo.c b/package/switch/src/switch-
> robo.c
> index f715972..ac4855a 100644
> --- a/package/switch/src/switch-robo.c
> +++ b/package/switch/src/switch-robo.c
> @@ -252,8 +252,13 @@ static int robo_switch_enable(void)
>  
>         if (robo.devid == ROBO_DEVICE_ID_53125) {
>                 /* Make IM port status link by default */
> -               val = robo_read16(ROBO_CTRL_PAGE, ROBO_PORT_OVERRIDE_CTRL) | 
> 0xb1;
> +               val = robo_read16(ROBO_CTRL_PAGE, ROBO_PORT_OVERRIDE_CTRL) | 
> 0x81;
>                 robo_write16(ROBO_CTRL_PAGE, ROBO_PORT_OVERRIDE_CTRL, val);
> +
> +               /* Write LED control register */
> +               val = 0x020b;
> +               robo_write16(ROBO_CTRL_PAGE, 0x12, val);
> +

With this change my Asus n66u does not blink on activity any more.

>                 // TODO: init EEE feature
>         }
>  
> 
> 
> 
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel@lists.openwrt.org
> https://lists.openwrt.org/mailman/listinfo/openwrt-devel
> 

_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to