Lines Matching refs:chip

130 	lp55xx_write(led->chip, LP5521_REG_LED_CURRENT_BASE + led->chan_nr,  in lp5521_set_led_current()
134 static void lp5521_load_engine(struct lp55xx_chip *chip) in lp5521_load_engine() argument
136 enum lp55xx_engine_index idx = chip->engine_idx; in lp5521_load_engine()
149 lp55xx_update_bits(chip, LP5521_REG_OP_MODE, mask[idx], val[idx]); in lp5521_load_engine()
154 static void lp5521_stop_all_engines(struct lp55xx_chip *chip) in lp5521_stop_all_engines() argument
156 lp55xx_write(chip, LP5521_REG_OP_MODE, 0); in lp5521_stop_all_engines()
160 static void lp5521_stop_engine(struct lp55xx_chip *chip) in lp5521_stop_engine() argument
162 enum lp55xx_engine_index idx = chip->engine_idx; in lp5521_stop_engine()
169 lp55xx_update_bits(chip, LP5521_REG_OP_MODE, mask[idx], 0); in lp5521_stop_engine()
174 static void lp5521_run_engine(struct lp55xx_chip *chip, bool start) in lp5521_run_engine() argument
182 lp5521_stop_engine(chip); in lp5521_run_engine()
183 lp55xx_write(chip, LP5521_REG_OP_MODE, LP5521_CMD_DIRECT); in lp5521_run_engine()
193 ret = lp55xx_read(chip, LP5521_REG_OP_MODE, &mode); in lp5521_run_engine()
197 ret = lp55xx_read(chip, LP5521_REG_ENABLE, &exec); in lp5521_run_engine()
217 lp55xx_write(chip, LP5521_REG_OP_MODE, mode); in lp5521_run_engine()
220 lp55xx_update_bits(chip, LP5521_REG_ENABLE, LP5521_EXEC_M, exec); in lp5521_run_engine()
224 static int lp5521_update_program_memory(struct lp55xx_chip *chip, in lp5521_update_program_memory() argument
227 enum lp55xx_engine_index idx = chip->engine_idx; in lp5521_update_program_memory()
261 ret = lp55xx_write(chip, addr[idx] + i, pattern[i]); in lp5521_update_program_memory()
269 dev_err(&chip->cl->dev, "wrong pattern format\n"); in lp5521_update_program_memory()
273 static void lp5521_firmware_loaded(struct lp55xx_chip *chip) in lp5521_firmware_loaded() argument
275 const struct firmware *fw = chip->fw; in lp5521_firmware_loaded()
278 dev_err(&chip->cl->dev, "firmware data size overflow: %zu\n", in lp5521_firmware_loaded()
289 lp5521_load_engine(chip); in lp5521_firmware_loaded()
290 lp5521_update_program_memory(chip, fw->data, fw->size); in lp5521_firmware_loaded()
293 static int lp5521_post_init_device(struct lp55xx_chip *chip) in lp5521_post_init_device() argument
304 ret = lp55xx_read(chip, LP5521_REG_R_CURRENT, &val); in lp5521_post_init_device()
306 dev_err(&chip->cl->dev, "error in resetting chip\n"); in lp5521_post_init_device()
310 dev_err(&chip->cl->dev, in lp5521_post_init_device()
319 ret = lp55xx_write(chip, LP5521_REG_OP_MODE, LP5521_CMD_DIRECT); in lp5521_post_init_device()
323 if (!lp55xx_is_extclk_used(chip)) in lp5521_post_init_device()
326 ret = lp55xx_write(chip, LP5521_REG_CONFIG, val); in lp5521_post_init_device()
331 lp55xx_write(chip, LP5521_REG_R_PWM, 0); in lp5521_post_init_device()
332 lp55xx_write(chip, LP5521_REG_G_PWM, 0); in lp5521_post_init_device()
333 lp55xx_write(chip, LP5521_REG_B_PWM, 0); in lp5521_post_init_device()
336 ret = lp55xx_write(chip, LP5521_REG_ENABLE, LP5521_ENABLE_RUN_PROGRAM); in lp5521_post_init_device()
345 static int lp5521_run_selftest(struct lp55xx_chip *chip, char *buf) in lp5521_run_selftest() argument
347 struct lp55xx_platform_data *pdata = chip->pdata; in lp5521_run_selftest()
351 ret = lp55xx_read(chip, LP5521_REG_STATUS, &status); in lp5521_run_selftest()
369 struct lp55xx_chip *chip = led->chip; in lp5521_led_brightness_work() local
371 mutex_lock(&chip->lock); in lp5521_led_brightness_work()
372 lp55xx_write(chip, LP5521_REG_LED_PWM_BASE + led->chan_nr, in lp5521_led_brightness_work()
374 mutex_unlock(&chip->lock); in lp5521_led_brightness_work()
382 struct lp55xx_chip *chip = led->chip; in show_engine_mode() local
383 enum lp55xx_engine_mode mode = chip->engines[nr - 1].mode; in show_engine_mode()
404 struct lp55xx_chip *chip = led->chip; in store_engine_mode() local
405 struct lp55xx_engine *engine = &chip->engines[nr - 1]; in store_engine_mode()
407 mutex_lock(&chip->lock); in store_engine_mode()
409 chip->engine_idx = nr; in store_engine_mode()
412 lp5521_run_engine(chip, true); in store_engine_mode()
415 lp5521_stop_engine(chip); in store_engine_mode()
416 lp5521_load_engine(chip); in store_engine_mode()
419 lp5521_stop_engine(chip); in store_engine_mode()
423 mutex_unlock(&chip->lock); in store_engine_mode()
436 struct lp55xx_chip *chip = led->chip; in store_engine_load() local
439 mutex_lock(&chip->lock); in store_engine_load()
441 chip->engine_idx = nr; in store_engine_load()
442 lp5521_load_engine(chip); in store_engine_load()
443 ret = lp5521_update_program_memory(chip, buf, len); in store_engine_load()
445 mutex_unlock(&chip->lock); in store_engine_load()
458 struct lp55xx_chip *chip = led->chip; in lp5521_selftest() local
461 mutex_lock(&chip->lock); in lp5521_selftest()
462 ret = lp5521_run_selftest(chip, buf); in lp5521_selftest()
463 mutex_unlock(&chip->lock); in lp5521_selftest()
515 struct lp55xx_chip *chip; in lp5521_probe() local
532 chip = devm_kzalloc(&client->dev, sizeof(*chip), GFP_KERNEL); in lp5521_probe()
533 if (!chip) in lp5521_probe()
541 chip->cl = client; in lp5521_probe()
542 chip->pdata = pdata; in lp5521_probe()
543 chip->cfg = &lp5521_cfg; in lp5521_probe()
545 mutex_init(&chip->lock); in lp5521_probe()
549 ret = lp55xx_init_device(chip); in lp5521_probe()
555 ret = lp55xx_register_leds(led, chip); in lp5521_probe()
559 ret = lp55xx_register_sysfs(chip); in lp5521_probe()
568 lp55xx_unregister_leds(led, chip); in lp5521_probe()
570 lp55xx_deinit_device(chip); in lp5521_probe()
578 struct lp55xx_chip *chip = led->chip; in lp5521_remove() local
580 lp5521_stop_all_engines(chip); in lp5521_remove()
581 lp55xx_unregister_sysfs(chip); in lp5521_remove()
582 lp55xx_unregister_leds(led, chip); in lp5521_remove()
583 lp55xx_deinit_device(chip); in lp5521_remove()