Lines Matching refs:led

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