leds: lm355x: rename devAttr to avoid CamelCase
[linux-3.10.git] / drivers / leds / leds-max8997.c
index 86abfe2..f449a8b 100644 (file)
@@ -49,71 +49,37 @@ struct max8997_led {
        struct mutex mutex;
 };
 
-static void max8997_led_clear_mode(struct max8997_led *led,
-                       enum max8997_led_mode mode)
-{
-       struct i2c_client *client = led->iodev->i2c;
-       u8 val = 0, mask = 0;
-       int ret;
-
-       switch (mode) {
-       case MAX8997_FLASH_MODE:
-               mask = led->id ?
-                     MAX8997_LED1_FLASH_MASK : MAX8997_LED0_FLASH_MASK;
-               break;
-       case MAX8997_MOVIE_MODE:
-               mask = led->id ?
-                     MAX8997_LED1_MOVIE_MASK : MAX8997_LED0_MOVIE_MASK;
-               break;
-       case MAX8997_FLASH_PIN_CONTROL_MODE:
-               mask = led->id ?
-                     MAX8997_LED1_FLASH_PIN_MASK : MAX8997_LED0_FLASH_PIN_MASK;
-               break;
-       case MAX8997_MOVIE_PIN_CONTROL_MODE:
-               mask = led->id ?
-                     MAX8997_LED1_MOVIE_PIN_MASK : MAX8997_LED0_MOVIE_PIN_MASK;
-               break;
-       default:
-               break;
-       }
-
-       if (mask) {
-               ret = max8997_update_reg(client,
-                               MAX8997_REG_LEN_CNTL, val, mask);
-               if (ret)
-                       dev_err(led->iodev->dev,
-                               "failed to update register(%d)\n", ret);
-       }
-}
-
 static void max8997_led_set_mode(struct max8997_led *led,
                        enum max8997_led_mode mode)
 {
        int ret;
        struct i2c_client *client = led->iodev->i2c;
-       u8 mask = 0;
-
-       /* First, clear the previous mode */
-       max8997_led_clear_mode(led, led->led_mode);
+       u8 mask = 0, val;
 
        switch (mode) {
        case MAX8997_FLASH_MODE:
-               mask = led->id ?
+               mask = MAX8997_LED1_FLASH_MASK | MAX8997_LED0_FLASH_MASK;
+               val = led->id ?
                      MAX8997_LED1_FLASH_MASK : MAX8997_LED0_FLASH_MASK;
                led->cdev.max_brightness = MAX8997_LED_FLASH_MAX_BRIGHTNESS;
                break;
        case MAX8997_MOVIE_MODE:
-               mask = led->id ?
+               mask = MAX8997_LED1_MOVIE_MASK | MAX8997_LED0_MOVIE_MASK;
+               val = led->id ?
                      MAX8997_LED1_MOVIE_MASK : MAX8997_LED0_MOVIE_MASK;
                led->cdev.max_brightness = MAX8997_LED_MOVIE_MAX_BRIGHTNESS;
                break;
        case MAX8997_FLASH_PIN_CONTROL_MODE:
-               mask = led->id ?
+               mask = MAX8997_LED1_FLASH_PIN_MASK |
+                      MAX8997_LED0_FLASH_PIN_MASK;
+               val = led->id ?
                      MAX8997_LED1_FLASH_PIN_MASK : MAX8997_LED0_FLASH_PIN_MASK;
                led->cdev.max_brightness = MAX8997_LED_FLASH_MAX_BRIGHTNESS;
                break;
        case MAX8997_MOVIE_PIN_CONTROL_MODE:
-               mask = led->id ?
+               mask = MAX8997_LED1_MOVIE_PIN_MASK |
+                      MAX8997_LED0_MOVIE_PIN_MASK;
+               val = led->id ?
                      MAX8997_LED1_MOVIE_PIN_MASK : MAX8997_LED0_MOVIE_PIN_MASK;
                led->cdev.max_brightness = MAX8997_LED_MOVIE_MAX_BRIGHTNESS;
                break;
@@ -123,8 +89,8 @@ static void max8997_led_set_mode(struct max8997_led *led,
        }
 
        if (mask) {
-               ret = max8997_update_reg(client,
-                               MAX8997_REG_LEN_CNTL, mask, mask);
+               ret = max8997_update_reg(client, MAX8997_REG_LEN_CNTL, val,
+                                        mask);
                if (ret)
                        dev_err(led->iodev->dev,
                                "failed to update register(%d)\n", ret);
@@ -263,7 +229,7 @@ static ssize_t max8997_led_store_mode(struct device *dev,
 
 static DEVICE_ATTR(mode, 0644, max8997_led_show_mode, max8997_led_store_mode);
 
-static int __devinit max8997_led_probe(struct platform_device *pdev)
+static int max8997_led_probe(struct platform_device *pdev)
 {
        struct max8997_dev *iodev = dev_get_drvdata(pdev->dev.parent);
        struct max8997_platform_data *pdata = dev_get_platdata(iodev->dev);
@@ -276,11 +242,9 @@ static int __devinit max8997_led_probe(struct platform_device *pdev)
                return -ENODEV;
        }
 
-       led = kzalloc(sizeof(*led), GFP_KERNEL);
-       if (led == NULL) {
-               ret = -ENOMEM;
-               goto err_mem;
-       }
+       led = devm_kzalloc(&pdev->dev, sizeof(*led), GFP_KERNEL);
+       if (led == NULL)
+               return -ENOMEM;
 
        led->id = pdev->id;
        snprintf(name, sizeof(name), "max8997-led%d", pdev->id);
@@ -315,32 +279,25 @@ static int __devinit max8997_led_probe(struct platform_device *pdev)
 
        ret = led_classdev_register(&pdev->dev, &led->cdev);
        if (ret < 0)
-               goto err_led;
+               return ret;
 
        ret = device_create_file(led->cdev.dev, &dev_attr_mode);
        if (ret != 0) {
                dev_err(&pdev->dev,
                        "failed to create file: %d\n", ret);
-               goto err_file;
+               led_classdev_unregister(&led->cdev);
+               return ret;
        }
 
        return 0;
-
-err_file:
-       led_classdev_unregister(&led->cdev);
-err_led:
-       kfree(led);
-err_mem:
-       return ret;
 }
 
-static int __devexit max8997_led_remove(struct platform_device *pdev)
+static int max8997_led_remove(struct platform_device *pdev)
 {
        struct max8997_led *led = platform_get_drvdata(pdev);
 
        device_remove_file(led->cdev.dev, &dev_attr_mode);
        led_classdev_unregister(&led->cdev);
-       kfree(led);
 
        return 0;
 }
@@ -351,7 +308,7 @@ static struct platform_driver max8997_led_driver = {
                .owner = THIS_MODULE,
        },
        .probe  = max8997_led_probe,
-       .remove = __devexit_p(max8997_led_remove),
+       .remove = max8997_led_remove,
 };
 
 module_platform_driver(max8997_led_driver);