Lines Matching refs:led
65 static void regulator_led_enable(struct regulator_led *led) in regulator_led_enable() argument
69 if (led->enabled) in regulator_led_enable()
72 ret = regulator_enable(led->vcc); in regulator_led_enable()
74 dev_err(led->cdev.dev, "Failed to enable vcc: %d\n", ret); in regulator_led_enable()
78 led->enabled = 1; in regulator_led_enable()
81 static void regulator_led_disable(struct regulator_led *led) in regulator_led_disable() argument
85 if (!led->enabled) in regulator_led_disable()
88 ret = regulator_disable(led->vcc); in regulator_led_disable()
90 dev_err(led->cdev.dev, "Failed to disable vcc: %d\n", ret); in regulator_led_disable()
94 led->enabled = 0; in regulator_led_disable()
97 static void regulator_led_set_value(struct regulator_led *led) in regulator_led_set_value() argument
102 mutex_lock(&led->mutex); in regulator_led_set_value()
104 if (led->value == LED_OFF) { in regulator_led_set_value()
105 regulator_led_disable(led); in regulator_led_set_value()
109 if (led->cdev.max_brightness > 1) { in regulator_led_set_value()
110 voltage = led_regulator_get_voltage(led->vcc, led->value); in regulator_led_set_value()
111 dev_dbg(led->cdev.dev, "brightness: %d voltage: %d\n", in regulator_led_set_value()
112 led->value, voltage); in regulator_led_set_value()
114 ret = regulator_set_voltage(led->vcc, voltage, voltage); in regulator_led_set_value()
116 dev_err(led->cdev.dev, "Failed to set voltage %d: %d\n", in regulator_led_set_value()
120 regulator_led_enable(led); in regulator_led_set_value()
123 mutex_unlock(&led->mutex); in regulator_led_set_value()
128 struct regulator_led *led; in led_work() local
130 led = container_of(work, struct regulator_led, work); in led_work()
131 regulator_led_set_value(led); in led_work()
137 struct regulator_led *led = to_regulator_led(led_cdev); in regulator_led_brightness_set() local
139 led->value = value; in regulator_led_brightness_set()
140 schedule_work(&led->work); in regulator_led_brightness_set()
147 struct regulator_led *led; in regulator_led_probe() local
162 led = devm_kzalloc(&pdev->dev, sizeof(*led), GFP_KERNEL); in regulator_led_probe()
163 if (led == NULL) in regulator_led_probe()
166 led->cdev.max_brightness = led_regulator_get_max_brightness(vcc); in regulator_led_probe()
167 if (pdata->brightness > led->cdev.max_brightness) { in regulator_led_probe()
172 led->value = pdata->brightness; in regulator_led_probe()
174 led->cdev.brightness_set = regulator_led_brightness_set; in regulator_led_probe()
175 led->cdev.name = pdata->name; in regulator_led_probe()
176 led->cdev.flags |= LED_CORE_SUSPENDRESUME; in regulator_led_probe()
177 led->vcc = vcc; in regulator_led_probe()
180 if (regulator_is_enabled(led->vcc)) in regulator_led_probe()
181 led->enabled = 1; in regulator_led_probe()
183 mutex_init(&led->mutex); in regulator_led_probe()
184 INIT_WORK(&led->work, led_work); in regulator_led_probe()
186 platform_set_drvdata(pdev, led); in regulator_led_probe()
188 ret = led_classdev_register(&pdev->dev, &led->cdev); in regulator_led_probe()
190 cancel_work_sync(&led->work); in regulator_led_probe()
195 led->cdev.brightness = led->value; in regulator_led_probe()
198 regulator_led_set_value(led); in regulator_led_probe()
205 struct regulator_led *led = platform_get_drvdata(pdev); in regulator_led_remove() local
207 led_classdev_unregister(&led->cdev); in regulator_led_remove()
208 cancel_work_sync(&led->work); in regulator_led_remove()
209 regulator_led_disable(led); in regulator_led_remove()