Lines Matching refs:chip

127 	lp55xx_write(led->chip, addr[led->chan_nr], led_current);  in lp5562_set_led_current()
130 static void lp5562_load_engine(struct lp55xx_chip *chip) in lp5562_load_engine() argument
132 enum lp55xx_engine_index idx = chip->engine_idx; in lp5562_load_engine()
145 lp55xx_update_bits(chip, LP5562_REG_OP_MODE, mask[idx], val[idx]); in lp5562_load_engine()
150 static void lp5562_stop_engine(struct lp55xx_chip *chip) in lp5562_stop_engine() argument
152 lp55xx_write(chip, LP5562_REG_OP_MODE, LP5562_CMD_DISABLE); in lp5562_stop_engine()
156 static void lp5562_run_engine(struct lp55xx_chip *chip, bool start) in lp5562_run_engine() argument
164 lp55xx_write(chip, LP5562_REG_ENABLE, LP5562_ENABLE_DEFAULT); in lp5562_run_engine()
166 lp5562_stop_engine(chip); in lp5562_run_engine()
167 lp55xx_write(chip, LP5562_REG_ENG_SEL, LP5562_ENG_SEL_PWM); in lp5562_run_engine()
168 lp55xx_write(chip, LP5562_REG_OP_MODE, LP5562_CMD_DIRECT); in lp5562_run_engine()
178 ret = lp55xx_read(chip, LP5562_REG_OP_MODE, &mode); in lp5562_run_engine()
182 ret = lp55xx_read(chip, LP5562_REG_ENABLE, &exec); in lp5562_run_engine()
202 lp55xx_write(chip, LP5562_REG_OP_MODE, mode); in lp5562_run_engine()
205 lp55xx_update_bits(chip, LP5562_REG_ENABLE, LP5562_EXEC_M, exec); in lp5562_run_engine()
209 static int lp5562_update_firmware(struct lp55xx_chip *chip, in lp5562_update_firmware() argument
212 enum lp55xx_engine_index idx = chip->engine_idx; in lp5562_update_firmware()
229 lp55xx_write(chip, addr[idx] + i, 0); in lp5562_update_firmware()
253 lp55xx_write(chip, addr[idx] + i, pattern[i]); in lp5562_update_firmware()
258 dev_err(&chip->cl->dev, "wrong pattern format\n"); in lp5562_update_firmware()
262 static void lp5562_firmware_loaded(struct lp55xx_chip *chip) in lp5562_firmware_loaded() argument
264 const struct firmware *fw = chip->fw; in lp5562_firmware_loaded()
267 dev_err(&chip->cl->dev, "firmware data size overflow: %zu\n", in lp5562_firmware_loaded()
278 lp5562_load_engine(chip); in lp5562_firmware_loaded()
279 lp5562_update_firmware(chip, fw->data, fw->size); in lp5562_firmware_loaded()
282 static int lp5562_post_init_device(struct lp55xx_chip *chip) in lp5562_post_init_device() argument
288 ret = lp55xx_write(chip, LP5562_REG_OP_MODE, LP5562_CMD_DIRECT); in lp5562_post_init_device()
295 if (!lp55xx_is_extclk_used(chip)) in lp5562_post_init_device()
298 ret = lp55xx_write(chip, LP5562_REG_CONFIG, cfg); in lp5562_post_init_device()
303 lp55xx_write(chip, LP5562_REG_R_PWM, 0); in lp5562_post_init_device()
304 lp55xx_write(chip, LP5562_REG_G_PWM, 0); in lp5562_post_init_device()
305 lp55xx_write(chip, LP5562_REG_B_PWM, 0); in lp5562_post_init_device()
306 lp55xx_write(chip, LP5562_REG_W_PWM, 0); in lp5562_post_init_device()
309 lp55xx_write(chip, LP5562_REG_ENG_SEL, LP5562_ENG_SEL_PWM); in lp5562_post_init_device()
318 struct lp55xx_chip *chip = led->chip; in lp5562_led_brightness_work() local
326 mutex_lock(&chip->lock); in lp5562_led_brightness_work()
327 lp55xx_write(chip, addr[led->chan_nr], led->brightness); in lp5562_led_brightness_work()
328 mutex_unlock(&chip->lock); in lp5562_led_brightness_work()
331 static void lp5562_write_program_memory(struct lp55xx_chip *chip, in lp5562_write_program_memory() argument
340 lp55xx_write(chip, base + i, *(rgb + i)); in lp5562_write_program_memory()
342 lp55xx_write(chip, base + i, 0); in lp5562_write_program_memory()
343 lp55xx_write(chip, base + i + 1, 0); in lp5562_write_program_memory()
354 static int lp5562_run_predef_led_pattern(struct lp55xx_chip *chip, int mode) in lp5562_run_predef_led_pattern() argument
360 lp5562_run_engine(chip, false); in lp5562_run_predef_led_pattern()
364 ptn = chip->pdata->patterns + (mode - 1); in lp5562_run_predef_led_pattern()
366 dev_err(&chip->cl->dev, "invalid pattern data\n"); in lp5562_run_predef_led_pattern()
370 lp5562_stop_engine(chip); in lp5562_run_predef_led_pattern()
373 lp55xx_write(chip, LP5562_REG_ENG_SEL, LP5562_ENG_SEL_RGB); in lp5562_run_predef_led_pattern()
377 chip->engine_idx = i; in lp5562_run_predef_led_pattern()
378 lp5562_load_engine(chip); in lp5562_run_predef_led_pattern()
382 lp55xx_write(chip, LP5562_REG_PROG_MEM_ENG1, 0); in lp5562_run_predef_led_pattern()
383 lp55xx_write(chip, LP5562_REG_PROG_MEM_ENG1 + 1, 0); in lp5562_run_predef_led_pattern()
384 lp55xx_write(chip, LP5562_REG_PROG_MEM_ENG2, 0); in lp5562_run_predef_led_pattern()
385 lp55xx_write(chip, LP5562_REG_PROG_MEM_ENG2 + 1, 0); in lp5562_run_predef_led_pattern()
386 lp55xx_write(chip, LP5562_REG_PROG_MEM_ENG3, 0); in lp5562_run_predef_led_pattern()
387 lp55xx_write(chip, LP5562_REG_PROG_MEM_ENG3 + 1, 0); in lp5562_run_predef_led_pattern()
390 lp5562_write_program_memory(chip, LP5562_REG_PROG_MEM_ENG1, in lp5562_run_predef_led_pattern()
392 lp5562_write_program_memory(chip, LP5562_REG_PROG_MEM_ENG2, in lp5562_run_predef_led_pattern()
394 lp5562_write_program_memory(chip, LP5562_REG_PROG_MEM_ENG3, in lp5562_run_predef_led_pattern()
398 lp5562_run_engine(chip, true); in lp5562_run_predef_led_pattern()
408 struct lp55xx_chip *chip = led->chip; in lp5562_store_pattern() local
409 struct lp55xx_predef_pattern *ptn = chip->pdata->patterns; in lp5562_store_pattern()
410 int num_patterns = chip->pdata->num_patterns; in lp5562_store_pattern()
421 mutex_lock(&chip->lock); in lp5562_store_pattern()
422 ret = lp5562_run_predef_led_pattern(chip, mode); in lp5562_store_pattern()
423 mutex_unlock(&chip->lock); in lp5562_store_pattern()
436 struct lp55xx_chip *chip = led->chip; in lp5562_store_engine_mux() local
451 enum lp55xx_engine_index idx = chip->engine_idx; in lp5562_store_engine_mux()
473 mutex_lock(&chip->lock); in lp5562_store_engine_mux()
474 lp55xx_update_bits(chip, LP5562_REG_ENG_SEL, mask, val); in lp5562_store_engine_mux()
475 mutex_unlock(&chip->lock); in lp5562_store_engine_mux()
516 struct lp55xx_chip *chip; in lp5562_probe() local
533 chip = devm_kzalloc(&client->dev, sizeof(*chip), GFP_KERNEL); in lp5562_probe()
534 if (!chip) in lp5562_probe()
542 chip->cl = client; in lp5562_probe()
543 chip->pdata = pdata; in lp5562_probe()
544 chip->cfg = &lp5562_cfg; in lp5562_probe()
546 mutex_init(&chip->lock); in lp5562_probe()
550 ret = lp55xx_init_device(chip); in lp5562_probe()
554 ret = lp55xx_register_leds(led, chip); in lp5562_probe()
558 ret = lp55xx_register_sysfs(chip); in lp5562_probe()
567 lp55xx_unregister_leds(led, chip); in lp5562_probe()
569 lp55xx_deinit_device(chip); in lp5562_probe()
577 struct lp55xx_chip *chip = led->chip; in lp5562_remove() local
579 lp5562_stop_engine(chip); in lp5562_remove()
581 lp55xx_unregister_sysfs(chip); in lp5562_remove()
582 lp55xx_unregister_leds(led, chip); in lp5562_remove()
583 lp55xx_deinit_device(chip); in lp5562_remove()