Lines Matching +full:led +full:- +full:behaviour
4 * SPDX-License-Identifier: Apache-2.0
89 enum charger_pf1550_led_behaviour behaviour; member
154 const struct charger_pf1550_config *const config = dev->config; in pf1550_get_charger_status()
158 ret = i2c_reg_read_byte_dt(&config->bus, CHARGER_CHG_SNS, &val); in pf1550_get_charger_status()
178 const struct charger_pf1550_config *const config = dev->config; in pf1550_get_charger_online()
182 ret = i2c_reg_read_byte_dt(&config->bus, CHARGER_CHG_OPER, &val); in pf1550_get_charger_online()
203 const struct charger_pf1550_config *const config = dev->config; in pf1550_set_constant_charge_current()
217 return i2c_reg_update_byte_dt(&config->bus, CHARGER_CHG_CURR_CNFG, in pf1550_set_constant_charge_current()
223 const struct charger_pf1550_config *const config = dev->config; in pf1550_set_vbus_ilim()
236 return i2c_reg_update_byte_dt(&config->bus, CHARGER_VBUS_INLIM_CNFG, in pf1550_set_vbus_ilim()
242 const struct charger_pf1550_config *const config = dev->config; in pf1550_set_vsys_min()
255 return i2c_reg_update_byte_dt(&config->bus, CHARGER_BATT_REG, BATT_REG_VSYSMIN_MASK, val); in pf1550_set_vsys_min()
260 const struct charger_pf1550_config *const config = dev->config; in pf1550_set_charge_termination_uv()
274 return i2c_reg_update_byte_dt(&config->bus, CHARGER_BATT_REG, BATT_REG_CHGCV_MASK, val); in pf1550_set_charge_termination_uv()
279 const struct charger_pf1550_config *const config = dev->config; in pf1550_set_thermistor_mode()
284 return i2c_reg_update_byte_dt(&config->bus, CHARGER_THM_REG_CNFG, in pf1550_set_thermistor_mode()
290 struct charger_pf1550_data *data = dev->data; in pf1550_set_enabled()
291 const struct charger_pf1550_config *const config = dev->config; in pf1550_set_enabled()
293 int ret = i2c_reg_update_byte_dt(&config->bus, CHARGER_CHG_OPER, CHG_OPER_CHG_OPER_MASK, in pf1550_set_enabled()
297 data->charger_enabled = enable; in pf1550_set_enabled()
305 const struct charger_pf1550_config *config = dev->config; in pf1550_get_interrupt_source()
309 ret = i2c_reg_read_byte_dt(&config->bus, CHARGER_CHG_INT, &buf); in pf1550_get_interrupt_source()
319 const struct charger_pf1550_config *config = dev->config; in pf1550_enable_interrupts()
328 return i2c_reg_write_byte_dt(&config->bus, CHARGER_CHG_INT_MASK, CHG_INT_ENABLE_ALL); in pf1550_enable_interrupts()
333 struct charger_pf1550_data *data = dev->data; in pf1550_led_config()
334 const struct charger_pf1550_config *config = dev->config; in pf1550_led_config()
335 struct charger_pf1550_led_config *cfg = data->led_config; in pf1550_led_config()
339 cfg->enabled = true; in pf1550_led_config()
341 if (cfg->behaviour == PF1550_LED_MANUAL_OFF) { in pf1550_led_config()
342 cfg->manual = true; in pf1550_led_config()
343 cfg->enabled = false; in pf1550_led_config()
346 val = (cfg->enabled ? LED_PWM_LED_EN : 0) | LED_PWM_FULL_ON; in pf1550_led_config()
348 ret = i2c_reg_write_byte_dt(&config->bus, CHARGER_LED_PWM, val); in pf1550_led_config()
353 val = (cfg->manual ? LED_CNFG_LEDOVRD : 0) | in pf1550_led_config()
354 (cfg->behaviour == PF1550_LED_FLASH_IN_CHARGING_ON_IN_FAULT ? in pf1550_led_config()
357 return i2c_reg_write_byte_dt(&config->bus, CHARGER_LED_CNFG, val); in pf1550_led_config()
362 struct charger_pf1550_data *data = dev->data; in pf1550_init_properties()
363 const struct charger_pf1550_config *config = dev->config; in pf1550_init_properties()
366 data->charger_enabled = true; in pf1550_init_properties()
367 data->charge_current_ua = config->charge_current_ua; in pf1550_init_properties()
368 data->vbus_ilim_ua = config->vbus_ilim_ua; in pf1550_init_properties()
370 ret = pf1550_get_charger_status(dev, &data->charger_status); in pf1550_init_properties()
376 ret = pf1550_get_charger_online(dev, &data->charger_online); in pf1550_init_properties()
390 [PF1550_THERM_MODE_JEITA_1] = "JEITA-1", in pf1550_string_to_therm_mode()
391 [PF1550_THERM_MODE_JEITA_2] = "JEITA-2", in pf1550_string_to_therm_mode()
406 struct charger_pf1550_data *data = dev->data; in pf1550_update_properties()
407 const struct charger_pf1550_config *config = dev->config; in pf1550_update_properties()
411 ret = pf1550_set_vbus_ilim(dev, config->vbus_ilim_ua); in pf1550_update_properties()
417 ret = pf1550_set_vsys_min(dev, config->vsys_min_uv); in pf1550_update_properties()
423 ret = pf1550_set_charge_termination_uv(dev, config->charge_voltage_max_uv); in pf1550_update_properties()
429 therm_mode = pf1550_string_to_therm_mode(config->therm_mon_mode); in pf1550_update_properties()
436 ret = pf1550_set_constant_charge_current(dev, data->charge_current_ua); in pf1550_update_properties()
442 ret = pf1550_set_enabled(dev, data->charger_enabled); in pf1550_update_properties()
450 LOG_ERR("Failed to configure led: %d", ret); in pf1550_update_properties()
460 struct charger_pf1550_data *data = dev->data; in pf1550_get_prop()
464 val->online = data->charger_online; in pf1550_get_prop()
467 val->status = data->charger_status; in pf1550_get_prop()
470 val->const_charge_current_ua = data->charge_current_ua; in pf1550_get_prop()
473 return -ENOTSUP; in pf1550_get_prop()
480 struct charger_pf1550_data *data = dev->data; in pf1550_set_prop()
485 ret = pf1550_set_constant_charge_current(dev, val->const_charge_current_ua); in pf1550_set_prop()
487 data->charge_current_ua = val->const_charge_current_ua; in pf1550_set_prop()
491 ret = pf1550_set_vbus_ilim(dev, val->input_current_regulation_current_ua); in pf1550_set_prop()
493 data->vbus_ilim_ua = val->input_current_regulation_current_ua; in pf1550_set_prop()
497 data->charger_status_notifier = val->status_notification; in pf1550_set_prop()
500 data->charger_online_notifier = val->online_notification; in pf1550_set_prop()
503 return -ENOTSUP; in pf1550_set_prop()
509 const struct charger_pf1550_config *const config = dev->config; in pf1550_enable_interrupt_pin()
515 ret = gpio_pin_interrupt_configure_dt(&config->int_gpio, flags); in pf1550_enable_interrupt_pin()
529 (void)pf1550_enable_interrupt_pin(data->dev, false); in pf1550_gpio_callback()
531 ret = k_work_submit(&data->int_routine_work); in pf1550_gpio_callback()
544 ret = pf1550_get_interrupt_source(data->dev, &int_src); in pf1550_int_routine_work_handler()
552 ret = pf1550_get_charger_status(data->dev, &data->charger_status); in pf1550_int_routine_work_handler()
558 ret = pf1550_get_charger_online(data->dev, &data->charger_online); in pf1550_int_routine_work_handler()
564 if (data->charger_status_notifier != NULL) { in pf1550_int_routine_work_handler()
565 data->charger_status_notifier(data->charger_status); in pf1550_int_routine_work_handler()
567 if (data->charger_online_notifier != NULL) { in pf1550_int_routine_work_handler()
568 data->charger_online_notifier(data->charger_online); in pf1550_int_routine_work_handler()
571 if (data->charger_online != CHARGER_ONLINE_OFFLINE) { in pf1550_int_routine_work_handler()
572 (void)pf1550_update_properties(data->dev); in pf1550_int_routine_work_handler()
575 ret = k_work_reschedule(&data->int_enable_work, INT_ENABLE_DELAY); in pf1550_int_routine_work_handler()
587 (void)pf1550_enable_interrupt_pin(data->dev, true); in pf1550_int_enable_work_handler()
592 struct charger_pf1550_data *data = dev->data; in pf1550_configure_interrupt_pin()
593 const struct charger_pf1550_config *config = dev->config; in pf1550_configure_interrupt_pin()
596 ret = gpio_is_ready_dt(&config->int_gpio) ? 0 : -ENODEV; in pf1550_configure_interrupt_pin()
602 ret = gpio_pin_configure_dt(&config->int_gpio, GPIO_INPUT); in pf1550_configure_interrupt_pin()
608 gpio_init_callback(&data->gpio_cb, pf1550_gpio_callback, BIT(config->int_gpio.pin)); in pf1550_configure_interrupt_pin()
609 ret = gpio_add_callback_dt(&config->int_gpio, &data->gpio_cb); in pf1550_configure_interrupt_pin()
620 struct charger_pf1550_data *data = dev->data; in pf1550_init()
621 const struct charger_pf1550_config *config = dev->config; in pf1550_init()
624 if (!i2c_is_ready_dt(&config->bus)) { in pf1550_init()
625 return -ENODEV; in pf1550_init()
628 data->dev = dev; in pf1550_init()
635 k_work_init(&data->int_routine_work, pf1550_int_routine_work_handler); in pf1550_init()
636 k_work_init_delayable(&data->int_enable_work, pf1550_int_enable_work_handler); in pf1550_init()
671 .behaviour = DT_INST_ENUM_IDX(inst, pf1550_led_behaviour), \