Changeset 9054


Ignore:
Timestamp:
2007-09-28T21:01:19+02:00 (9 years ago)
Author:
juhosg
Message:

[adm5120] morse LED trigger cleanups

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/target/linux/adm5120/files/drivers/leds/ledtrig-morse.c

    r9053 r9054  
    3333#include "leds.h" 
    3434 
     35#define MORSE_DELAY_BASE        (HZ/2) 
     36 
     37#define MORSE_STATE_BLINK_START 0 
     38#define MORSE_STATE_BLINK_STOP  1 
     39 
     40#define MORSE_DIT_LEN   1 
     41#define MORSE_DAH_LEN   3 
     42#define MORSE_SPACE_LEN 7 
     43 
    3544struct morse_trig_data { 
    3645        unsigned long delay; 
     
    6574static inline unsigned long dit_len(struct morse_trig_data *morse_data) 
    6675{ 
    67         return morse_data->delay; 
     76        return MORSE_DIT_LEN*morse_data->delay; 
    6877} 
    6978 
    7079static inline unsigned long dah_len(struct morse_trig_data *morse_data) 
    7180{ 
    72         return 3*morse_data->delay; 
     81        return MORSE_DAH_LEN*morse_data->delay; 
    7382} 
    7483 
    7584static inline unsigned long space_len(struct morse_trig_data *morse_data) 
    7685{ 
    77         return 7*morse_data->delay; 
     86        return MORSE_SPACE_LEN*morse_data->delay; 
    7887} 
    7988 
     
    8998 
    9099        switch (morse_data->state) { 
    91         case 0: 
     100        case MORSE_STATE_BLINK_START: 
    92101                /* Starting a new blink.  We have a valid code in morse. */ 
    93102                delay = (morse_data->morse & 001) ? dah_len(morse_data): 
    94103                        dit_len(morse_data); 
    95104                brightness = LED_FULL; 
    96                 morse_data->state = 1; 
     105                morse_data->state = MORSE_STATE_BLINK_STOP; 
    97106                morse_data->morse >>= 1; 
    98107                break; 
    99         case 1: 
     108        case MORSE_STATE_BLINK_STOP: 
    100109                /* Coming off of a blink. */ 
    101                 morse_data->state = 0; 
     110                morse_data->state = MORSE_STATE_BLINK_START; 
    102111 
    103112                if (morse_data->morse > 1) { 
     
    123132                if (!(morse_data->morse = tomorse(*morse_data->msgpos))) { 
    124133                        delay = space_len(morse_data); 
    125                         morse_data->state = 1;  /* And get us back here */ 
     134                        /* And get us back here */ 
     135                        morse_data->state = MORSE_STATE_BLINK_STOP; 
    126136                } 
    127137                morse_data->msgpos++; 
     
    194204        m[size]='\0'; 
    195205 
    196         if (!morse_data->msg) 
     206        if (morse_data->msg) 
    197207                kfree(morse_data->msg); 
    198208 
    199209        morse_data->msg = m; 
    200210        morse_data->msgpos = NULL; 
    201         morse_data->state = 1; 
     211        morse_data->state = MORSE_STATE_BLINK_STOP; 
    202212 
    203213        mod_timer(&morse_data->timer, jiffies + 1); 
     
    218228                return; 
    219229 
    220         led_cdev->trigger_data = morse_data; 
    221  
    222         morse_data->delay = (HZ/2); 
     230        morse_data->delay = MORSE_DELAY_BASE; 
    223231        init_timer(&morse_data->timer); 
    224232        morse_data->timer.function = morse_timer_function; 
    225         morse_data->timer.data = (unsigned long) led_cdev; 
     233        morse_data->timer.data = (unsigned long)led_cdev; 
    226234 
    227235        rc = class_device_create_file(led_cdev->class_dev, 
     
    232240                                &class_device_attr_message); 
    233241        if (rc) goto err_delay; 
     242 
     243        led_cdev->trigger_data = morse_data; 
    234244 
    235245        return; 
     
    239249                                &class_device_attr_delay); 
    240250err: 
    241         led_cdev->trigger_data = NULL; 
    242251        kfree(morse_data); 
    243252} 
     
    256265 
    257266        del_timer_sync(&morse_data->timer); 
    258         if (!morse_data->msg) 
     267        if (morse_data->msg) 
    259268                kfree(morse_data->msg); 
     269 
    260270        kfree(morse_data); 
    261271} 
    262272 
    263273static struct led_trigger morse_led_trigger = { 
    264         .name     = "morse", 
    265         .activate = morse_trig_activate, 
    266         .deactivate = morse_trig_deactivate, 
     274        .name           = "morse", 
     275        .activate       = morse_trig_activate, 
     276        .deactivate     = morse_trig_deactivate, 
    267277}; 
    268278 
     
    280290module_exit(morse_trig_exit); 
    281291 
    282 MODULE_AUTHOR("Gabor Juhos <juhosg@openwrt.org>"); 
     292MODULE_AUTHOR("Gabor Juhos <juhosg at openwrt.org>"); 
    283293MODULE_DESCRIPTION("Morse LED trigger"); 
    284294MODULE_LICENSE("GPL"); 
Note: See TracChangeset for help on using the changeset viewer.