source: branches/backfire/package/mac80211/patches/620-rt2x00_soc_led_support.patch @ 26536

Last change on this file since 26536 was 26536, checked in by nbd, 6 years ago

mac80211: update to trunk as of r26534

File size: 2.6 KB
  • drivers/net/wireless/rt2x00/rt2800lib.c

    a b EXPORT_SYMBOL_GPL(rt2800_rfkill_poll); 
    938938static void rt2800_brightness_set(struct led_classdev *led_cdev, 
    939939                                  enum led_brightness brightness) 
    940940{ 
     941        u32 reg; 
    941942        struct rt2x00_led *led = 
    942943            container_of(led_cdev, struct rt2x00_led, led_dev); 
    943944        unsigned int enabled = brightness != LED_OFF; 
    static void rt2800_brightness_set(struct 
    950951                rt2x00_get_field16(led->rt2x00dev->led_mcu_reg, 
    951952                                   EEPROM_FREQ_LED_MODE); 
    952953 
    953         if (led->type == LED_TYPE_RADIO) { 
    954                 rt2800_mcu_request(led->rt2x00dev, MCU_LED, 0xff, ledmode, 
    955                                       enabled ? 0x20 : 0); 
    956         } else if (led->type == LED_TYPE_ASSOC) { 
    957                 rt2800_mcu_request(led->rt2x00dev, MCU_LED, 0xff, ledmode, 
    958                                       enabled ? (bg_mode ? 0x60 : 0xa0) : 0x20); 
    959         } else if (led->type == LED_TYPE_QUALITY) { 
    960                 /* 
    961                  * The brightness is divided into 6 levels (0 - 5), 
    962                  * The specs tell us the following levels: 
    963                  *      0, 1 ,3, 7, 15, 31 
    964                  * to determine the level in a simple way we can simply 
    965                  * work with bitshifting: 
    966                  *      (1 << level) - 1 
    967                  */ 
    968                 rt2800_mcu_request(led->rt2x00dev, MCU_LED_STRENGTH, 0xff, 
    969                                       (1 << brightness / (LED_FULL / 6)) - 1, 
    970                                       polarity); 
     954        /* Check for SoC (SOC devices don't support MCU requests) */ 
     955        if (rt2x00_is_soc(led->rt2x00dev)) { 
     956                rt2800_register_read(led->rt2x00dev, LED_CFG, &reg); 
     957 
     958                /* Set LED Polarity */ 
     959                rt2x00_set_field32(&reg, LED_CFG_LED_POLAR, polarity); 
     960 
     961                /* Set LED Mode */ 
     962                if (led->type == LED_TYPE_RADIO) { 
     963                        rt2x00_set_field32(&reg, LED_CFG_G_LED_MODE, 
     964                                           enabled ? 3 : 0); 
     965                } else if (led->type == LED_TYPE_ASSOC) { 
     966                        rt2x00_set_field32(&reg, LED_CFG_Y_LED_MODE, 
     967                                           enabled ? 3 : 0); 
     968                } else if (led->type == LED_TYPE_QUALITY) { 
     969                        rt2x00_set_field32(&reg, LED_CFG_R_LED_MODE, 
     970                                           enabled ? 3 : 0); 
     971                } 
     972                rt2800_register_write(led->rt2x00dev, LED_CFG, reg); 
     973        } 
     974        else { 
     975                if (led->type == LED_TYPE_RADIO) { 
     976                        rt2800_mcu_request(led->rt2x00dev, MCU_LED, 0xff, ledmode, 
     977                                        enabled ? 0x20 : 0); 
     978                } else if (led->type == LED_TYPE_ASSOC) { 
     979                        rt2800_mcu_request(led->rt2x00dev, MCU_LED, 0xff, ledmode, 
     980                                        enabled ? (bg_mode ? 0x60 : 0xa0) : 0x20); 
     981                } else if (led->type == LED_TYPE_QUALITY) { 
     982                        /* 
     983                        * The brightness is divided into 6 levels (0 - 5), 
     984                        * The specs tell us the following levels: 
     985                        *       0, 1 ,3, 7, 15, 31 
     986                        * to determine the level in a simple way we can simply 
     987                        * work with bitshifting: 
     988                        *       (1 << level) - 1 
     989                        */ 
     990                        rt2800_mcu_request(led->rt2x00dev, MCU_LED_STRENGTH, 0xff, 
     991                                        (1 << brightness / (LED_FULL / 6)) - 1, 
     992                                        polarity); 
     993                } 
    971994        } 
    972995} 
    973996 
Note: See TracBrowser for help on using the repository browser.