Lines Matching defs:led

91  * @led_dev - led class device pointer
140 static int lp8860_unlock_eeprom(struct lp8860_led *led, int lock)
144 mutex_lock(&led->lock);
147 ret = regmap_write(led->regmap,
151 dev_err(&led->client->dev, "EEPROM Unlock failed\n");
155 ret = regmap_write(led->regmap,
159 dev_err(&led->client->dev, "EEPROM Unlock failed\n");
162 ret = regmap_write(led->regmap,
166 dev_err(&led->client->dev, "EEPROM Unlock failed\n");
170 ret = regmap_write(led->regmap,
176 mutex_unlock(&led->lock);
180 static int lp8860_fault_check(struct lp8860_led *led)
185 ret = regmap_read(led->regmap, LP8860_LED_FAULT, &read_buf);
191 ret = regmap_read(led->regmap, LP8860_FAULT, &read_buf);
199 ret = regmap_write(led->regmap, LP8860_FAULT_CLEAR,
208 struct lp8860_led *led =
213 mutex_lock(&led->lock);
215 ret = lp8860_fault_check(led);
217 dev_err(&led->client->dev, "Cannot read/clear faults\n");
221 ret = regmap_write(led->regmap, LP8860_DISP_CL1_BRT_MSB,
224 dev_err(&led->client->dev, "Cannot write CL1 MSB\n");
228 ret = regmap_write(led->regmap, LP8860_DISP_CL1_BRT_LSB,
231 dev_err(&led->client->dev, "Cannot write CL1 LSB\n");
235 mutex_unlock(&led->lock);
239 static int lp8860_init(struct lp8860_led *led)
244 if (led->regulator) {
245 ret = regulator_enable(led->regulator);
247 dev_err(&led->client->dev,
253 if (led->enable_gpio)
254 gpiod_direction_output(led->enable_gpio, 1);
256 ret = lp8860_fault_check(led);
260 ret = regmap_read(led->regmap, LP8860_STATUS, &read_buf);
264 ret = lp8860_unlock_eeprom(led, LP8860_UNLOCK_EEPROM);
266 dev_err(&led->client->dev, "Failed unlocking EEPROM\n");
272 ret = regmap_write(led->eeprom_regmap,
276 dev_err(&led->client->dev, "Failed writing EEPROM\n");
281 ret = lp8860_unlock_eeprom(led, LP8860_LOCK_EEPROM);
285 ret = regmap_write(led->regmap,
289 dev_err(&led->client->dev, "Failed programming EEPROM\n");
297 if (led->enable_gpio)
298 gpiod_direction_output(led->enable_gpio, 0);
300 if (led->regulator) {
301 ret = regulator_disable(led->regulator);
303 dev_err(&led->client->dev,
382 struct lp8860_led *led;
387 led = devm_kzalloc(&client->dev, sizeof(*led), GFP_KERNEL);
388 if (!led)
395 led->enable_gpio = devm_gpiod_get_optional(&client->dev,
397 if (IS_ERR(led->enable_gpio)) {
398 ret = PTR_ERR(led->enable_gpio);
403 led->regulator = devm_regulator_get(&client->dev, "vled");
404 if (IS_ERR(led->regulator))
405 led->regulator = NULL;
407 led->client = client;
408 led->led_dev.brightness_set_blocking = lp8860_brightness_set;
410 mutex_init(&led->lock);
412 i2c_set_clientdata(client, led);
414 led->regmap = devm_regmap_init_i2c(client, &lp8860_regmap_config);
415 if (IS_ERR(led->regmap)) {
416 ret = PTR_ERR(led->regmap);
422 led->eeprom_regmap = devm_regmap_init_i2c(client, &lp8860_eeprom_regmap_config);
423 if (IS_ERR(led->eeprom_regmap)) {
424 ret = PTR_ERR(led->eeprom_regmap);
430 ret = lp8860_init(led);
438 ret = devm_led_classdev_register_ext(&client->dev, &led->led_dev,
441 dev_err(&client->dev, "led register err: %d\n", ret);
450 struct lp8860_led *led = i2c_get_clientdata(client);
453 if (led->enable_gpio)
454 gpiod_direction_output(led->enable_gpio, 0);
456 if (led->regulator) {
457 ret = regulator_disable(led->regulator);
459 dev_err(&led->client->dev,
463 mutex_destroy(&led->lock);