Lines Matching full:charger
3 * Power supply driver for ChromeOS EC based USB PD Charger.
26 #define DRV_NAME "cros-usbpd-charger"
42 struct charger_data *charger; member
93 return port->port_number >= port->charger->num_usbpd_ports; in cros_usbpd_charger_port_is_dedicated()
96 static int cros_usbpd_charger_ec_command(struct charger_data *charger, in cros_usbpd_charger_ec_command() argument
104 struct cros_ec_dev *ec_dev = charger->ec_dev; in cros_usbpd_charger_ec_command()
120 ret = cros_ec_cmd_xfer_status(charger->ec_device, msg); in cros_usbpd_charger_ec_command()
128 static int cros_usbpd_charger_get_num_ports(struct charger_data *charger) in cros_usbpd_charger_get_num_ports() argument
133 ret = cros_usbpd_charger_ec_command(charger, 0, in cros_usbpd_charger_get_num_ports()
142 static int cros_usbpd_charger_get_usbpd_num_ports(struct charger_data *charger) in cros_usbpd_charger_get_usbpd_num_ports() argument
147 ret = cros_usbpd_charger_ec_command(charger, 0, EC_CMD_USB_PD_PORTS, in cros_usbpd_charger_get_usbpd_num_ports()
157 struct charger_data *charger = port->charger; in cros_usbpd_charger_get_discovery_info() local
164 ret = cros_usbpd_charger_ec_command(charger, 0, in cros_usbpd_charger_get_discovery_info()
169 dev_err(charger->dev, in cros_usbpd_charger_get_discovery_info()
174 dev_dbg(charger->dev, "Port %d: VID = 0x%x, PID=0x%x, PTYPE=0x%x\n", in cros_usbpd_charger_get_discovery_info()
186 struct charger_data *charger = port->charger; in cros_usbpd_charger_get_power_info() local
190 struct device *dev = charger->dev; in cros_usbpd_charger_get_power_info()
194 ret = cros_usbpd_charger_ec_command(charger, 0, in cros_usbpd_charger_get_power_info()
270 * While the EC is trying to determine the type of charger that in cros_usbpd_charger_get_power_info()
271 * has been plugged in, it will report the charger type as in cros_usbpd_charger_get_power_info()
329 static int cros_usbpd_charger_set_ext_power_limit(struct charger_data *charger, in cros_usbpd_charger_set_ext_power_limit() argument
339 ret = cros_usbpd_charger_ec_command(charger, 0, in cros_usbpd_charger_set_ext_power_limit()
343 dev_err(charger->dev, in cros_usbpd_charger_set_ext_power_limit()
352 struct charger_data *charger = port->charger; in cros_usbpd_charger_power_changed() local
355 for (i = 0; i < charger->num_registered_psy; i++) in cros_usbpd_charger_power_changed()
356 cros_usbpd_charger_get_port_status(charger->ports[i], false); in cros_usbpd_charger_power_changed()
364 struct charger_data *charger = port->charger; in cros_usbpd_charger_get_prop() local
365 struct cros_ec_device *ec_device = charger->ec_device; in cros_usbpd_charger_get_prop()
366 struct device *dev = charger->dev; in cros_usbpd_charger_get_prop()
451 struct charger_data *charger = port->charger; in cros_usbpd_charger_set_prop() local
452 struct device *dev = charger->dev; in cros_usbpd_charger_set_prop()
467 ret = cros_usbpd_charger_set_ext_power_limit(charger, intval, in cros_usbpd_charger_set_prop()
482 ret = cros_usbpd_charger_set_ext_power_limit(charger, in cros_usbpd_charger_set_prop()
525 struct charger_data *charger = container_of(nb, struct charger_data, in cros_usbpd_charger_ec_event() local
528 cros_usbpd_charger_power_changed(charger->ports[0]->psy); in cros_usbpd_charger_ec_event()
534 struct charger_data *charger = data; in cros_usbpd_charger_unregister_notifier() local
536 cros_usbpd_unregister_notify(&charger->notifier); in cros_usbpd_charger_unregister_notifier()
545 struct charger_data *charger; in cros_usbpd_charger_probe() local
551 charger = devm_kzalloc(dev, sizeof(struct charger_data), in cros_usbpd_charger_probe()
553 if (!charger) in cros_usbpd_charger_probe()
556 charger->dev = dev; in cros_usbpd_charger_probe()
557 charger->ec_dev = ec_dev; in cros_usbpd_charger_probe()
558 charger->ec_device = ec_device; in cros_usbpd_charger_probe()
560 platform_set_drvdata(pd, charger); in cros_usbpd_charger_probe()
567 charger->num_usbpd_ports = in cros_usbpd_charger_probe()
568 cros_usbpd_charger_get_usbpd_num_ports(charger); in cros_usbpd_charger_probe()
569 if (charger->num_usbpd_ports <= 0) { in cros_usbpd_charger_probe()
577 charger->num_charger_ports = cros_usbpd_charger_get_num_ports(charger); in cros_usbpd_charger_probe()
578 if (charger->num_charger_ports < 0) { in cros_usbpd_charger_probe()
583 * let's set up the number of charger ports equal to the number in cros_usbpd_charger_probe()
586 dev_info(dev, "Could not get charger port count\n"); in cros_usbpd_charger_probe()
587 charger->num_charger_ports = charger->num_usbpd_ports; in cros_usbpd_charger_probe()
590 if (charger->num_charger_ports <= 0) { in cros_usbpd_charger_probe()
605 if (charger->num_charger_ports < charger->num_usbpd_ports || in cros_usbpd_charger_probe()
606 charger->num_charger_ports > (charger->num_usbpd_ports + 1)) { in cros_usbpd_charger_probe()
612 for (i = 0; i < charger->num_charger_ports; i++) { in cros_usbpd_charger_probe()
621 port->charger = charger; in cros_usbpd_charger_probe()
661 charger->ports[charger->num_registered_psy++] = port; in cros_usbpd_charger_probe()
664 if (!charger->num_registered_psy) { in cros_usbpd_charger_probe()
671 charger->notifier.notifier_call = cros_usbpd_charger_ec_event; in cros_usbpd_charger_probe()
672 ret = cros_usbpd_register_notify(&charger->notifier); in cros_usbpd_charger_probe()
678 charger); in cros_usbpd_charger_probe()
696 struct charger_data *charger = dev_get_drvdata(dev); in cros_usbpd_charger_resume() local
699 if (!charger) in cros_usbpd_charger_resume()
702 for (i = 0; i < charger->num_registered_psy; i++) { in cros_usbpd_charger_resume()
703 power_supply_changed(charger->ports[i]->psy); in cros_usbpd_charger_resume()
704 charger->ports[i]->last_update = in cros_usbpd_charger_resume()
733 MODULE_DESCRIPTION("ChromeOS EC USBPD charger");