Lines Matching refs:led

88 static int wm8350_led_enable(struct wm8350_led *led)
92 if (led->enabled)
95 ret = regulator_enable(led->isink);
97 dev_err(led->cdev.dev, "Failed to enable ISINK: %d\n", ret);
101 ret = regulator_enable(led->dcdc);
103 dev_err(led->cdev.dev, "Failed to enable DCDC: %d\n", ret);
104 regulator_disable(led->isink);
108 led->enabled = 1;
113 static int wm8350_led_disable(struct wm8350_led *led)
117 if (!led->enabled)
120 ret = regulator_disable(led->dcdc);
122 dev_err(led->cdev.dev, "Failed to disable DCDC: %d\n", ret);
126 ret = regulator_disable(led->isink);
128 dev_err(led->cdev.dev, "Failed to disable ISINK: %d\n", ret);
129 ret = regulator_enable(led->dcdc);
131 dev_err(led->cdev.dev, "Failed to reenable DCDC: %d\n",
136 led->enabled = 0;
144 struct wm8350_led *led = to_wm8350_led(led_cdev);
149 led->value = value;
151 spin_lock_irqsave(&led->value_lock, flags);
153 if (led->value == LED_OFF) {
154 spin_unlock_irqrestore(&led->value_lock, flags);
155 return wm8350_led_disable(led);
163 uA = (led->max_uA_index * led->value) / LED_FULL;
164 spin_unlock_irqrestore(&led->value_lock, flags);
167 ret = regulator_set_current_limit(led->isink, isink_cur[uA],
170 dev_err(led->cdev.dev, "Failed to set %duA: %d\n",
175 return wm8350_led_enable(led);
180 struct wm8350_led *led = platform_get_drvdata(pdev);
182 led->value = LED_OFF;
183 wm8350_led_disable(led);
189 struct wm8350_led *led;
216 led = devm_kzalloc(&pdev->dev, sizeof(*led), GFP_KERNEL);
217 if (led == NULL)
220 led->cdev.brightness_set_blocking = wm8350_led_set;
221 led->cdev.default_trigger = pdata->default_trigger;
222 led->cdev.name = pdata->name;
223 led->cdev.flags |= LED_CORE_SUSPENDRESUME;
224 led->enabled = regulator_is_enabled(isink);
225 led->isink = isink;
226 led->dcdc = dcdc;
231 led->max_uA_index = i;
238 spin_lock_init(&led->value_lock);
239 led->value = LED_OFF;
240 platform_set_drvdata(pdev, led);
242 return led_classdev_register(&pdev->dev, &led->cdev);
247 struct wm8350_led *led = platform_get_drvdata(pdev);
249 led_classdev_unregister(&led->cdev);
250 wm8350_led_disable(led);
256 .name = "wm8350-led",
268 MODULE_ALIAS("platform:wm8350-led");