]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - drivers/staging/otus/80211core/ledmgr.c
Merge branch 'master' into tk71
[mv-sheeva.git] / drivers / staging / otus / 80211core / ledmgr.c
diff --git a/drivers/staging/otus/80211core/ledmgr.c b/drivers/staging/otus/80211core/ledmgr.c
deleted file mode 100644 (file)
index eafce0b..0000000
+++ /dev/null
@@ -1,556 +0,0 @@
-/*
- * Copyright (c) 2007-2008 Atheros Communications Inc.
- *
- * Permission to use, copy, modify, and/or distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
- * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
-#include "cprecomp.h"
-
-/************************************************************************/
-/*                                                                      */
-/*    FUNCTION DESCRIPTION                  zfLedCtrlType1              */
-/*      Traditional single-LED state                                    */
-/*                                                                      */
-/*    INPUTS                                                            */
-/*      dev : device pointer                                            */
-/*                                                                      */
-/*    OUTPUTS                                                           */
-/*      None                                                            */
-/*                                                                      */
-/*    AUTHOR                                                            */
-/*      Stephen Chen        Atheros Communications, INC.    2007.6      */
-/*                                                                      */
-/************************************************************************/
-// bit 15-12 : Toff for Scan state
-//     11-8 : Ton for Scan state
-//     7 : Reserved
-//     6 : mode
-//--------------------------------------
-//     bit 6 = 0
-//     5-4 : Connect state
-//           00 => always off
-//           01 => always on
-//           10 => Idle off, acitve on
-//           11 => Idle on, active off
-//--------------------------------------
-//     bit 6 = 1
-//     5-4 : freq
-//           00 => 1Hz
-//           01 => 0.5Hz
-//           10 => 0.25Hz
-//           11 => 0.125Hz
-//--------------------------------------
-//     3 : Power save state
-//         0 => always off in power save state
-//         1 => works as connect state
-//     2 : Disable state
-//     1 : Reserved
-//     0 : Power-on state
-void zfLedCtrlType1(zdev_t* dev)
-{
-    u16_t i;
-    u32_t ton, toff, tmp, period;
-    zmw_get_wlan_dev(dev);
-
-    for (i=0; i<ZM_MAX_LED_NUMBER; i++)
-    {
-        if (zfStaIsConnected(dev) != TRUE)
-        {
-            //Scan state
-            ton = ((wd->ledStruct.ledMode[i] & 0xf00) >> 8) * 5;
-            toff = ((wd->ledStruct.ledMode[i] & 0xf000) >> 12) * 5;
-
-            if ((ton + toff) != 0)
-            {
-                tmp = wd->ledStruct.counter / (ton+toff);
-                tmp = wd->ledStruct.counter - (tmp * (ton+toff));
-                if (tmp < ton)
-                {
-                    zfHpLedCtrl(dev, i, 1);
-                }
-                else
-                {
-                    zfHpLedCtrl(dev, i, 0);
-                }
-            }
-        }
-        else
-        {
-            if ((zfPowerSavingMgrIsSleeping(dev)) && ((wd->ledStruct.ledMode[i] & 0x8) == 0))
-            {
-                zfHpLedCtrl(dev, i, 0);
-            }
-            else
-            {
-                //Connect state
-                if ((wd->ledStruct.ledMode[i] & 0x40) == 0)
-                {
-                    if ((wd->ledStruct.counter & 1) == 0)
-                    {
-                        zfHpLedCtrl(dev, i, (wd->ledStruct.ledMode[i] & 0x10) >> 4);
-                    }
-                    else
-                    {
-                        if ((wd->ledStruct.txTraffic > 0) || (wd->ledStruct.rxTraffic > 0))
-                        {
-                            wd->ledStruct.txTraffic = wd->ledStruct.rxTraffic = 0;
-                            if ((wd->ledStruct.ledMode[i] & 0x20) != 0)
-                            {
-                                zfHpLedCtrl(dev, i, ((wd->ledStruct.ledMode[i] & 0x10) >> 4)^1);
-                            }
-                        }
-                    }
-                }// if ((wd->ledStruct.ledMode[i] & 0x40) == 0)
-                else
-                {
-                    period = 5 * (1 << ((wd->ledStruct.ledMode[i] & 0x30) >> 4));
-                    tmp = wd->ledStruct.counter / (period*2);
-                    tmp = wd->ledStruct.counter - (tmp * (period*2));
-                    if (tmp < period)
-                    {
-                        if ((wd->ledStruct.counter & 1) == 0)
-                        {
-                            zfHpLedCtrl(dev, i, 0);
-                        }
-                        else
-                        {
-                            if ((wd->ledStruct.txTraffic > 0) || (wd->ledStruct.rxTraffic > 0))
-                            {
-                                wd->ledStruct.txTraffic = wd->ledStruct.rxTraffic = 0;
-                                zfHpLedCtrl(dev, i, 1);
-                            }
-                        }
-                    }
-                    else
-                    {
-                        if ((wd->ledStruct.counter & 1) == 0)
-                        {
-                            zfHpLedCtrl(dev, i, 1);
-                        }
-                        else
-                        {
-                            if ((wd->ledStruct.txTraffic > 0) || (wd->ledStruct.rxTraffic > 0))
-                            {
-                                wd->ledStruct.txTraffic = wd->ledStruct.rxTraffic = 0;
-                                zfHpLedCtrl(dev, i, 0);
-                            }
-                        }
-                    }
-                } //else, if ((wd->ledStruct.ledMode[i] & 0x40) == 0)
-            } //else, if (zfPowerSavingMgrIsSleeping(dev))
-        } //else : if (zfStaIsConnected(dev) != TRUE)
-    } //for (i=0; i<ZM_MAX_LED_NUMBER; i++)
-}
-
-/******************************************************************************/
-/*                                                                            */
-/*    FUNCTION DESCRIPTION                  zfLedCtrlType2                    */
-/*      Customize for Netgear Dual-LED state ((bug#31292))                    */
-/*                                                                            */
-/*      1. Status:  When dongle does not connect to 2.4G or 5G but in site    */
-/*                  survey/association                                        */
-/*         LED status: Slow blinking, Amber then Blue per 500ms               */
-/*      2. Status:     Connection at 2.4G in site survey/association             */
-/*         LED status: Slow blinking, Amber/off per 500ms                     */
-/*      3. Status:     Connection at 5G in site survey/association               */
-/*         LED status: Slow blinking, Blue/off per 500ms                      */
-/*      4. Status:     When transfer the packet                                  */
-/*         LED status: Blink per packet, including TX and RX                  */
-/*      5. Status:     When linking is established but no traffic                */
-/*         LED status: Always on                                              */
-/*      6. Status:     When linking is dropped but no re-connection              */
-/*         LED status: Always off                                             */
-/*      7. Status:     From one connection(2.4G or 5G) to change to another band */
-/*         LED status: Amber/Blue =>Slow blinking, Amber then Blue per 500ms  */
-/*                                                                            */
-/*    INPUTS                                                                  */
-/*      dev : device pointer                                                  */
-/*                                                                            */
-/*    OUTPUTS                                                                 */
-/*      None                                                                  */
-/*                                                                            */
-/*    AUTHOR                                                                  */
-/*      Shang-Chun Liu        Atheros Communications, INC.    2007.11         */
-/*                                                                            */
-/******************************************************************************/
-void zfLedCtrlType2_scan(zdev_t* dev);
-
-void zfLedCtrlType2(zdev_t* dev)
-{
-    u16_t OperateLED;
-    zmw_get_wlan_dev(dev);
-
-    if (zfStaIsConnected(dev) != TRUE)
-    {
-        // Disconnect state
-        if(wd->ledStruct.counter % 4 != 0)
-       {
-           // Update LED each 400ms(4*100)
-           // Prevent this situation
-            //              _______         ___
-            // LED[0] ON   |       |       | x |
-            // ------ OFF->+-+-+-+-+-+-+-+-+-+-+-+->>>...
-            // LED[1] ON
-            //
-            return;
-        }
-
-        if (((wd->state == ZM_WLAN_STATE_DISABLED) && (wd->sta.bChannelScan))
-            || ((wd->state != ZM_WLAN_STATE_DISABLED) && (wd->sta.bAutoReconnect)))
-        {
-            // Scan/AutoReconnect state
-            zfLedCtrlType2_scan(dev);
-        }
-        else
-        {
-            // Neither Connected nor Scan
-            zfHpLedCtrl(dev, 0, 0);
-            zfHpLedCtrl(dev, 1, 0);
-        }
-    }
-    else
-    {
-        if( wd->sta.bChannelScan )
-        {
-            // Scan state
-            if(wd->ledStruct.counter % 4 != 0)
-                return;
-            zfLedCtrlType2_scan(dev);
-            return;
-        }
-
-        if(wd->frequency < 3000)
-        {
-            OperateLED = 0;     // LED[0]: work on 2.4G (b/g band)
-            zfHpLedCtrl(dev, 1, 0);
-        }
-        else
-        {
-            OperateLED = 1;     // LED[1]: work on 5G (a band)
-            zfHpLedCtrl(dev, 0, 0);
-        }
-
-        if ((zfPowerSavingMgrIsSleeping(dev)) && ((wd->ledStruct.ledMode[OperateLED] & 0x8) == 0))
-        {
-            // If Sleeping, turn OFF
-            zfHpLedCtrl(dev, OperateLED, 0);
-        }
-        else
-        {
-            //Connect state
-            if ((wd->ledStruct.counter & 1) == 0)   // even
-            {
-                // No traffic, always ON
-                zfHpLedCtrl(dev, OperateLED, 1);
-            }
-            else       // odd
-            {
-                if ((wd->ledStruct.txTraffic > 0) || (wd->ledStruct.rxTraffic > 0))
-                {
-                    // If have traffic, turn OFF
-                           //                   _____   _   _   _   _____
-                           // LED[Operate] ON        | | | | | | | |
-                           // ------------ OFF->-+-+-+-+-+-+-+-+-+-+-+-+-+->>>...
-                           //
-                    wd->ledStruct.txTraffic = wd->ledStruct.rxTraffic = 0;
-                    zfHpLedCtrl(dev, OperateLED, 0);
-                }
-            }
-        }
-    }
-}
-
-void zfLedCtrlType2_scan(zdev_t* dev)
-{
-    zmw_get_wlan_dev(dev);
-
-    // When doing scan, blink(Amber/Blue) and off per 500ms (about 400ms in our driver)
-    //               _______                         _______
-    // LED[0] ON    |       |       8       12      |       |
-    // ------ OFF->-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+->>>...
-    // LED[1] ON    0       4       |_______|       0       3
-    //
-
-    switch(wd->ledStruct.counter % 16)
-    {
-        case 0:   // case 0~3, LED[0] on
-            if(wd->supportMode & ZM_WIRELESS_MODE_24)
-            {
-                zfHpLedCtrl(dev, 0, 1);
-                zfHpLedCtrl(dev, 1, 0);
-            }
-            else
-            {
-                zfHpLedCtrl(dev, 1, 1);
-                zfHpLedCtrl(dev, 0, 0);
-            }
-            break;
-
-        case 8:   // case 8~11, LED[1] on
-            if(wd->supportMode & ZM_WIRELESS_MODE_5)
-            {
-                zfHpLedCtrl(dev, 1, 1);
-                zfHpLedCtrl(dev, 0, 0);
-            }
-            else
-            {
-                zfHpLedCtrl(dev, 0, 1);
-                zfHpLedCtrl(dev, 1, 0);
-            }
-            break;
-
-        default:  // others, all off
-            zfHpLedCtrl(dev, 0, 0);
-            zfHpLedCtrl(dev, 1, 0);
-            break;
-    }
-}
-
-/**********************************************************************************/
-/*                                                                                */
-/*    FUNCTION DESCRIPTION                  zfLedCtrlType3                        */
-/*      Customize for Netgear Single-LED state ((bug#32243))                      */
-/*                                                                                */
-/*  ¡EOff: when the adapter is disabled or hasn't started to associate with AP    */
-/*         yet.                                                                          */
-/*  ¡EOn: Once adpater associate with AP successfully                             */
-/*  ¡ESlow blinking: whenever adapters do site-survey or try to associate with AP */
-/*    - If there is a connection already, and adapters do site-survey or          */
-/*      re-associate action, the LED should keep LED backgraoud as ON, thus       */
-/*      the blinking behavior SHOULD be OFF (200ms) - ON (800ms) and continue this*/
-/*      cycle.                                                                    */
-/*    - If there is no connection yet, and adapters start to do site-survey or    */
-/*      associate action, the LED should keep LED background as OFF, thus the     */
-/*      blinking behavior SHOULD be ON (200ms) - OFF (800ms) and continue this    */
-/*      cycle.                                                                    */
-/*    - For the case that associate fail, adpater should keep associating, and the*/
-/*      LED should also keep slow blinking.                                       */
-/*  ¡EQuick blinking: to blink OFF-ON cycle for each time that traffic packet is  */
-/*    received or is transmitted.                                                 */
-/*                                                                                */
-/*    INPUTS                                                                      */
-/*      dev : device pointer                                                      */
-/*                                                                                */
-/*    OUTPUTS                                                                     */
-/*      None                                                                      */
-/*                                                                                */
-/*    AUTHOR                                                                      */
-/*      Shang-Chun Liu        Atheros Communications, INC.    2008.01             */
-/*                                                                                */
-/**********************************************************************************/
-void zfLedCtrlType3_scan(zdev_t* dev, u16_t isConnect);
-
-void zfLedCtrlType3(zdev_t* dev)
-{
-    zmw_get_wlan_dev(dev);
-
-    if (zfStaIsConnected(dev) != TRUE)
-    {
-        // Disconnect state
-        if(wd->ledStruct.counter % 2 != 0)
-       {
-           // Update LED each 200ms(2*100)
-           // Prevent this situation
-            //              ___     _
-            // LED[0] ON   |   |   |x|
-            // ------ OFF->+-+-+-+-+-+-+->>>...
-            //
-            return;
-        }
-
-        if (((wd->state == ZM_WLAN_STATE_DISABLED) && (wd->sta.bChannelScan))
-            || ((wd->state != ZM_WLAN_STATE_DISABLED) && (wd->sta.bAutoReconnect)))
-        {
-            // Scan/AutoReconnect state
-            zfLedCtrlType3_scan(dev, 0);
-        }
-        else
-        {
-            // Neither Connected nor Scan
-            zfHpLedCtrl(dev, 0, 0);
-            zfHpLedCtrl(dev, 1, 0);
-        }
-    }
-    else
-    {
-        if( wd->sta.bChannelScan )
-        {
-            // Scan state
-            if(wd->ledStruct.counter % 2 != 0)
-                return;
-            zfLedCtrlType3_scan(dev, 1);
-            return;
-        }
-
-        if ((zfPowerSavingMgrIsSleeping(dev)) && ((wd->ledStruct.ledMode[0] & 0x8) == 0))
-        {
-            // If Sleeping, turn OFF
-            zfHpLedCtrl(dev, 0, 0);
-            zfHpLedCtrl(dev, 1, 0);
-        }
-        else
-        {
-            //Connect state
-            if ((wd->ledStruct.counter & 1) == 0)   // even
-            {
-                // No traffic, always ON
-                zfHpLedCtrl(dev, 0, 1);
-                zfHpLedCtrl(dev, 1, 1);
-            }
-            else       // odd
-            {
-                if ((wd->ledStruct.txTraffic > 0) || (wd->ledStruct.rxTraffic > 0))
-                {
-                    // If have traffic, turn OFF
-                           //                   _____   _   _   _   _____
-                           // LED[Operate] ON        | | | | | | | |
-                           // ------------ OFF->-+-+-+-+-+-+-+-+-+-+-+-+-+->>>...
-                           //
-                    wd->ledStruct.txTraffic = wd->ledStruct.rxTraffic = 0;
-                    zfHpLedCtrl(dev, 0, 0);
-                    zfHpLedCtrl(dev, 1, 0);
-                }
-            }
-        }
-    }
-}
-
-void zfLedCtrlType3_scan(zdev_t* dev, u16_t isConnect)
-{
-    u32_t ton, toff, tmp;
-    zmw_get_wlan_dev(dev);
-
-    // Doing scan when :
-    // 1. Disconnected: ON (200ms) - OFF (800ms) (200ms-600ms in our driver)
-    //               ___             ___             ___
-    // LED[0] ON    |   |           |   |           |   |
-    // ------ OFF->-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+->>>...
-    //              0   2   4   6   8  10  12  14  16
-    // 2. Connected:   ON (800ms) - OFF (200ms) (600ms-200ms in our driver)
-    //               ___________     ___________     ______
-    // LED[0] ON    |           |   |           |   |
-    // ------ OFF->-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+->>>...
-    //              0   2   4   6   8  10  12  14  16
-
-    //Scan state
-    if(!isConnect)
-        ton = 2, toff = 6;
-    else
-        ton = 6, toff = 2;
-
-    if ((ton + toff) != 0)
-    {
-        tmp = wd->ledStruct.counter % (ton+toff);
-       if (tmp < ton)
-        {
-            zfHpLedCtrl(dev, 0, 1);
-            zfHpLedCtrl(dev, 1, 1);
-        }
-        else
-        {
-            zfHpLedCtrl(dev, 0, 0);
-            zfHpLedCtrl(dev, 1, 0);
-        }
-    }
-}
-
-/******************************************************************************/
-/*                                                                            */
-/*    FUNCTION DESCRIPTION                  zfLedCtrl_BlinkWhenScan_Alpha     */
-/*      Customize for Alpha/DLink LED                                         */
-/*      - Blink LED 12 times within 3 seconds when doing Active Scan          */
-/*                           ___   ___   ___   ___                               */
-/*           LED[0] ON      |   | |   | |   | |   |                              */
-/*           -------OFF->-+-+-+-+-+-+-+-+-+-+-+-+-+--+-->>>...                   */
-/*                                                                            */
-/*    INPUTS                                                                  */
-/*      dev : device pointer                                                  */
-/*                                                                            */
-/*    OUTPUTS                                                                 */
-/*      None                                                                  */
-/*                                                                            */
-/*    AUTHOR                                                                  */
-/*      Shang-Chun Liu        Atheros Communications, INC.    2007.11         */
-/*                                                                            */
-/******************************************************************************/
-void zfLedCtrl_BlinkWhenScan_Alpha(zdev_t* dev)
-{
-    static u32_t counter = 0;
-    zmw_get_wlan_dev(dev);
-
-    if(counter > 34)        // counter for 3 sec
-    {
-        wd->ledStruct.LEDCtrlFlag &= ~(u8_t)ZM_LED_CTRL_FLAG_ALPHA;
-        counter = 0;
-    }
-
-    if( (counter % 3) < 2)
-        zfHpLedCtrl(dev, 0, 1);
-    else
-        zfHpLedCtrl(dev, 0, 0);
-
-    counter++;
-}
-
-
-/************************************************************************/
-/*                                                                      */
-/*    FUNCTION DESCRIPTION                  zfLed100msCtrl              */
-/*      LED 100 milliseconds timer.                                     */
-/*                                                                      */
-/*    INPUTS                                                            */
-/*      dev : device pointer                                            */
-/*                                                                      */
-/*    OUTPUTS                                                           */
-/*      None                                                            */
-/*                                                                      */
-/*    AUTHOR                                                            */
-/*      Stephen Chen        Atheros Communications, INC.    2007.6      */
-/*                                                                      */
-/************************************************************************/
-void zfLed100msCtrl(zdev_t* dev)
-{
-    zmw_get_wlan_dev(dev);
-
-    wd->ledStruct.counter++;
-
-    if(wd->ledStruct.LEDCtrlFlag)
-    {
-        switch(wd->ledStruct.LEDCtrlFlag) {
-        case ZM_LED_CTRL_FLAG_ALPHA:
-            zfLedCtrl_BlinkWhenScan_Alpha(dev);
-        break;
-        }
-    }
-    else
-    {
-        switch(wd->ledStruct.LEDCtrlType) {
-        case 1:                        // Traditional 1 LED
-            zfLedCtrlType1(dev);
-        break;
-
-        case 2:                        // Dual-LEDs for Netgear
-            zfLedCtrlType2(dev);
-        break;
-
-        case 3:                        // Single-LED for Netgear (WN111v2)
-            zfLedCtrlType3(dev);
-        break;
-
-        default:
-            zfLedCtrlType1(dev);
-        break;
-        }
-    }
-}
-