• Home
  • Raw
  • Download

Lines Matching full:led

2  * LED driver for WM8350 driven LEDS.
92 static int wm8350_led_enable(struct wm8350_led *led) in wm8350_led_enable() argument
96 if (led->enabled) in wm8350_led_enable()
99 ret = regulator_enable(led->isink); in wm8350_led_enable()
101 dev_err(led->cdev.dev, "Failed to enable ISINK: %d\n", ret); in wm8350_led_enable()
105 ret = regulator_enable(led->dcdc); in wm8350_led_enable()
107 dev_err(led->cdev.dev, "Failed to enable DCDC: %d\n", ret); in wm8350_led_enable()
108 regulator_disable(led->isink); in wm8350_led_enable()
112 led->enabled = 1; in wm8350_led_enable()
117 static int wm8350_led_disable(struct wm8350_led *led) in wm8350_led_disable() argument
121 if (!led->enabled) in wm8350_led_disable()
124 ret = regulator_disable(led->dcdc); in wm8350_led_disable()
126 dev_err(led->cdev.dev, "Failed to disable DCDC: %d\n", ret); in wm8350_led_disable()
130 ret = regulator_disable(led->isink); in wm8350_led_disable()
132 dev_err(led->cdev.dev, "Failed to disable ISINK: %d\n", ret); in wm8350_led_disable()
133 ret = regulator_enable(led->dcdc); in wm8350_led_disable()
135 dev_err(led->cdev.dev, "Failed to reenable DCDC: %d\n", in wm8350_led_disable()
140 led->enabled = 0; in wm8350_led_disable()
148 struct wm8350_led *led = to_wm8350_led(led_cdev); in wm8350_led_set() local
153 led->value = value; in wm8350_led_set()
155 spin_lock_irqsave(&led->value_lock, flags); in wm8350_led_set()
157 if (led->value == LED_OFF) { in wm8350_led_set()
158 spin_unlock_irqrestore(&led->value_lock, flags); in wm8350_led_set()
159 return wm8350_led_disable(led); in wm8350_led_set()
167 uA = (led->max_uA_index * led->value) / LED_FULL; in wm8350_led_set()
168 spin_unlock_irqrestore(&led->value_lock, flags); in wm8350_led_set()
171 ret = regulator_set_current_limit(led->isink, isink_cur[uA], in wm8350_led_set()
174 dev_err(led->cdev.dev, "Failed to set %duA: %d\n", in wm8350_led_set()
179 return wm8350_led_enable(led); in wm8350_led_set()
184 struct wm8350_led *led = platform_get_drvdata(pdev); in wm8350_led_shutdown() local
186 led->value = LED_OFF; in wm8350_led_shutdown()
187 wm8350_led_disable(led); in wm8350_led_shutdown()
193 struct wm8350_led *led; in wm8350_led_probe() local
220 led = devm_kzalloc(&pdev->dev, sizeof(*led), GFP_KERNEL); in wm8350_led_probe()
221 if (led == NULL) in wm8350_led_probe()
224 led->cdev.brightness_set_blocking = wm8350_led_set; in wm8350_led_probe()
225 led->cdev.default_trigger = pdata->default_trigger; in wm8350_led_probe()
226 led->cdev.name = pdata->name; in wm8350_led_probe()
227 led->cdev.flags |= LED_CORE_SUSPENDRESUME; in wm8350_led_probe()
228 led->enabled = regulator_is_enabled(isink); in wm8350_led_probe()
229 led->isink = isink; in wm8350_led_probe()
230 led->dcdc = dcdc; in wm8350_led_probe()
235 led->max_uA_index = i; in wm8350_led_probe()
242 spin_lock_init(&led->value_lock); in wm8350_led_probe()
243 led->value = LED_OFF; in wm8350_led_probe()
244 platform_set_drvdata(pdev, led); in wm8350_led_probe()
246 return led_classdev_register(&pdev->dev, &led->cdev); in wm8350_led_probe()
251 struct wm8350_led *led = platform_get_drvdata(pdev); in wm8350_led_remove() local
253 led_classdev_unregister(&led->cdev); in wm8350_led_remove()
254 wm8350_led_disable(led); in wm8350_led_remove()
260 .name = "wm8350-led",
270 MODULE_DESCRIPTION("WM8350 LED driver");
272 MODULE_ALIAS("platform:wm8350-led");