Lines Matching refs:port

90 static bool cros_usbpd_charger_port_is_dedicated(struct port_data *port)
92 return port->port_number >= port->charger->num_usbpd_ports;
154 static int cros_usbpd_charger_get_discovery_info(struct port_data *port)
156 struct charger_data *charger = port->charger;
161 req.port = port->port_number;
174 port->port_number, resp.vid, resp.pid, resp.ptype);
176 snprintf(port->manufacturer, sizeof(port->manufacturer), "%x",
178 snprintf(port->model_name, sizeof(port->model_name), "%x", resp.pid);
183 static int cros_usbpd_charger_get_power_info(struct port_data *port)
185 struct charger_data *charger = port->charger;
192 req.port = port->port_number;
202 last_psy_status = port->psy_status;
203 last_psy_usb_type = port->psy_usb_type;
207 port->psy_status = POWER_SUPPLY_STATUS_NOT_CHARGING;
208 port->psy_online = 0;
211 port->psy_status = POWER_SUPPLY_STATUS_NOT_CHARGING;
212 port->psy_online = 0;
215 port->psy_status = POWER_SUPPLY_STATUS_CHARGING;
216 port->psy_online = 1;
219 port->psy_status = POWER_SUPPLY_STATUS_NOT_CHARGING;
220 port->psy_online = 1;
227 port->psy_voltage_max_design = resp.meas.voltage_max;
228 port->psy_voltage_now = resp.meas.voltage_now;
229 port->psy_current_max = resp.meas.current_max;
230 port->psy_power_max = resp.max_power;
235 port->psy_usb_type = POWER_SUPPLY_USB_TYPE_SDP;
244 port->psy_usb_type = POWER_SUPPLY_USB_TYPE_PD_DRP;
246 port->psy_usb_type = POWER_SUPPLY_USB_TYPE_SDP;
250 port->psy_usb_type = POWER_SUPPLY_USB_TYPE_APPLE_BRICK_ID;
253 port->psy_usb_type = POWER_SUPPLY_USB_TYPE_C;
256 port->psy_usb_type = POWER_SUPPLY_USB_TYPE_DCP;
259 port->psy_usb_type = POWER_SUPPLY_USB_TYPE_CDP;
263 port->psy_usb_type = POWER_SUPPLY_USB_TYPE_PD_DRP;
265 port->psy_usb_type = POWER_SUPPLY_USB_TYPE_PD;
274 port->psy_usb_type = POWER_SUPPLY_USB_TYPE_UNKNOWN;
275 port->psy_voltage_max_design = 0;
276 port->psy_current_max = 0;
279 dev_dbg(dev, "Port %d: default case!\n", port->port_number);
280 port->psy_usb_type = POWER_SUPPLY_USB_TYPE_SDP;
283 if (cros_usbpd_charger_port_is_dedicated(port))
284 port->psy_desc.type = POWER_SUPPLY_TYPE_MAINS;
286 port->psy_desc.type = POWER_SUPPLY_TYPE_USB;
290 port->port_number, resp.type, resp.meas.voltage_max,
300 if (last_psy_usb_type != port->psy_usb_type ||
301 last_psy_status != port->psy_status)
302 power_supply_changed(port->psy);
307 static int cros_usbpd_charger_get_port_status(struct port_data *port,
313 time_is_after_jiffies(port->last_update +
317 ret = cros_usbpd_charger_get_power_info(port);
321 if (!cros_usbpd_charger_port_is_dedicated(port))
322 ret = cros_usbpd_charger_get_discovery_info(port);
323 port->last_update = jiffies;
350 struct port_data *port = power_supply_get_drvdata(psy);
351 struct charger_data *charger = port->charger;
362 struct port_data *port = power_supply_get_drvdata(psy);
363 struct charger_data *charger = port->charger;
384 if (ec_device->mkbp_event_supported || port->psy_online)
390 ret = cros_usbpd_charger_get_port_status(port, true);
392 dev_err(dev, "Failed to get port status (err:0x%x)\n",
403 val->intval = port->psy_online;
406 val->intval = port->psy_status;
409 val->intval = port->psy_current_max * 1000;
412 val->intval = port->psy_voltage_max_design * 1000;
415 val->intval = port->psy_voltage_now * 1000;
418 val->intval = port->psy_usb_type;
433 val->strval = port->model_name;
436 val->strval = port->manufacturer;
449 struct port_data *port = power_supply_get_drvdata(psy);
450 struct charger_data *charger = port->charger;
546 struct port_data *port;
563 * there is a dedicated port. The dedicated port will always be
585 dev_info(dev, "Could not get charger port count\n");
592 * doesn't have a dedicated port.
602 * there should be at most 1 dedicated port
606 dev_err(dev, "Unexpected number of charge port count\n");
614 port = devm_kzalloc(dev, sizeof(struct port_data), GFP_KERNEL);
615 if (!port) {
620 port->charger = charger;
621 port->port_number = i;
623 psy_desc = &port->psy_desc;
630 psy_cfg.drv_data = port;
632 if (cros_usbpd_charger_port_is_dedicated(port)) {
633 sprintf(port->name, CHARGER_DEDICATED_DIR_NAME);
640 sprintf(port->name, CHARGER_USBPD_DIR_NAME, i);
650 psy_desc->name = port->name;
658 port->psy = psy;
660 charger->ports[charger->num_registered_psy++] = port;