Lines Matching defs:is31

196 	struct is31fl319x_chip *is31 = led->chip;
197 int chan = led - is31->leds;
202 dev_dbg(&is31->client->dev, "channel %d: %d\n", chan, brightness);
204 mutex_lock(&is31->lock);
207 ret = regmap_write(is31->regmap, IS31FL3190_PWM(chan), brightness);
212 for (i = 0; i < is31->cdef->num_leds; i++) {
221 ret = regmap_read(is31->regmap, IS31FL3190_PWM(i), &pwm_value);
228 dev_dbg(&is31->client->dev, "power up %02x\n", ctrl);
229 regmap_write(is31->regmap, IS31FL3190_LEDCONTROL, ctrl);
231 regmap_write(is31->regmap, IS31FL3190_DATA_UPDATE, 0x00);
233 ret = regmap_write(is31->regmap, IS31FL319X_SHUTDOWN, 0x20);
235 dev_dbg(&is31->client->dev, "power down\n");
237 ret = regmap_write(is31->regmap, IS31FL319X_SHUTDOWN, 0x01);
241 mutex_unlock(&is31->lock);
250 struct is31fl319x_chip *is31 = led->chip;
251 int chan = led - is31->leds;
256 dev_dbg(&is31->client->dev, "channel %d: %d\n", chan, brightness);
258 mutex_lock(&is31->lock);
261 ret = regmap_write(is31->regmap, IS31FL3196_PWM(chan), brightness);
266 for (i = 0; i < is31->cdef->num_leds; i++) {
275 ret = regmap_read(is31->regmap, IS31FL3196_PWM(i), &pwm_value);
287 dev_dbg(&is31->client->dev, "power up %02x %02x\n",
289 regmap_write(is31->regmap, IS31FL3196_CTRL1, ctrl1);
290 regmap_write(is31->regmap, IS31FL3196_CTRL2, ctrl2);
292 regmap_write(is31->regmap, IS31FL3196_DATA_UPDATE, 0x00);
294 ret = regmap_write(is31->regmap, IS31FL319X_SHUTDOWN, 0x01);
296 dev_dbg(&is31->client->dev, "power down\n");
298 ret = regmap_write(is31->regmap, IS31FL319X_SHUTDOWN, 0x00);
302 mutex_unlock(&is31->lock);
369 struct is31fl319x_chip *is31)
381 led->max_microamp = is31->cdef->current_default;
384 if (led->max_microamp < is31->cdef->current_min)
387 is31->cdef->current_max);
393 static int is31fl319x_parse_fw(struct device *dev, struct is31fl319x_chip *is31)
399 is31->shutdown_gpio = devm_gpiod_get_optional(dev, "shutdown", GPIOD_OUT_HIGH);
400 if (IS_ERR(is31->shutdown_gpio))
401 return dev_err_probe(dev, PTR_ERR(is31->shutdown_gpio),
404 is31->cdef = device_get_match_data(dev);
412 if (!count || count > is31->cdef->num_leds)
415 is31->cdef->num_leds);
427 if (reg < 1 || reg > is31->cdef->num_leds) {
432 led = &is31->leds[reg - 1];
439 ret = is31fl319x_parse_child_fw(dev, child, led, is31);
448 is31->audio_gain_db = 0;
449 if (is31->cdef->is_3196or3199) {
450 ret = fwnode_property_read_u32(fwnode, "audio-gain-db", &is31->audio_gain_db);
452 is31->audio_gain_db = min(is31->audio_gain_db,
505 struct is31fl319x_chip *is31;
514 is31 = devm_kzalloc(&client->dev, sizeof(*is31), GFP_KERNEL);
515 if (!is31)
518 mutex_init(&is31->lock);
519 err = devm_add_action_or_reset(dev, is31f1319x_mutex_destroy, &is31->lock);
523 err = is31fl319x_parse_fw(&client->dev, is31);
527 if (is31->shutdown_gpio) {
528 gpiod_direction_output(is31->shutdown_gpio, 0);
530 gpiod_direction_output(is31->shutdown_gpio, 1);
533 is31->client = client;
534 is31->regmap = devm_regmap_init_i2c(client, is31->cdef->is31fl319x_regmap_config);
535 if (IS_ERR(is31->regmap))
536 return dev_err_probe(dev, PTR_ERR(is31->regmap), "failed to allocate register map\n");
538 i2c_set_clientdata(client, is31);
541 err = regmap_write(is31->regmap, is31->cdef->reset_reg, 0x00);
550 aggregated_led_microamp = is31->cdef->current_max;
551 for (i = 0; i < is31->cdef->num_leds; i++)
552 if (is31->leds[i].configured &&
553 is31->leds[i].max_microamp < aggregated_led_microamp)
554 aggregated_led_microamp = is31->leds[i].max_microamp;
556 if (is31->cdef->is_3196or3199)
557 regmap_write(is31->regmap, IS31FL3196_CONFIG2,
559 is31fl3196_db_to_gain(is31->audio_gain_db));
561 regmap_update_bits(is31->regmap, IS31FL3190_CURRENT, IS31FL3190_CURRENT_MASK,
564 for (i = 0; i < is31->cdef->num_leds; i++) {
565 struct is31fl319x_led *led = &is31->leds[i];
570 led->chip = is31;
571 led->cdev.brightness_set_blocking = is31->cdef->brightness_set;