Lines Matching refs:info

50  * @info: pointer to struct cros_ec_extcon_info
60 static int cros_ec_pd_command(struct cros_ec_extcon_info *info,
83 ret = cros_ec_cmd_xfer_status(info->ec, msg);
92 * cros_ec_usb_get_power_type() - Get power type info about PD device attached
94 * @info: pointer to struct cros_ec_extcon_info
98 static int cros_ec_usb_get_power_type(struct cros_ec_extcon_info *info)
104 req.port = info->port_id;
105 ret = cros_ec_pd_command(info, EC_CMD_USB_PD_POWER_INFO, 0,
115 * @info: pointer to struct cros_ec_extcon_info
119 static int cros_ec_usb_get_pd_mux_state(struct cros_ec_extcon_info *info)
125 req.port = info->port_id;
126 ret = cros_ec_pd_command(info, EC_CMD_USB_PD_MUX_INFO, 0,
136 * cros_ec_usb_get_role() - Get role info about possible PD device attached to a
138 * @info: pointer to struct cros_ec_extcon_info
141 * Return: role info on success, -ENOTCONN if no cable is connected, <0 on
144 static int cros_ec_usb_get_role(struct cros_ec_extcon_info *info,
151 pd_control.port = info->port_id;
155 ret = cros_ec_pd_command(info, EC_CMD_USB_PD_CONTROL, 1,
171 * @info: pointer to struct cros_ec_extcon_info
175 static int cros_ec_pd_get_num_ports(struct cros_ec_extcon_info *info)
180 ret = cros_ec_pd_command(info, EC_CMD_USB_PD_PORTS,
247 static int extcon_cros_ec_detect_cable(struct cros_ec_extcon_info *info,
250 struct device *dev = info->dev;
259 power_type = cros_ec_usb_get_power_type(info);
266 role = cros_ec_usb_get_role(info, &polarity);
278 pd_mux_state = cros_ec_usb_get_pd_mux_state(info);
299 if (force || info->dr != dr || info->pr != pr || info->dp != dp ||
300 info->mux != mux || info->power_type != power_type) {
306 info->dr = dr;
307 info->pr = pr;
308 info->dp = dp;
309 info->mux = mux;
310 info->power_type = power_type;
317 extcon_set_state(info->edev, EXTCON_USB, device_connected);
318 extcon_set_state(info->edev, EXTCON_USB_HOST, host_connected);
319 extcon_set_state(info->edev, EXTCON_DISP_DP, dp);
320 extcon_set_property(info->edev, EXTCON_USB,
323 extcon_set_property(info->edev, EXTCON_USB_HOST,
326 extcon_set_property(info->edev, EXTCON_USB,
329 extcon_set_property(info->edev, EXTCON_USB_HOST,
332 extcon_set_property(info->edev, EXTCON_DISP_DP,
335 extcon_set_property(info->edev, EXTCON_USB,
338 extcon_set_property(info->edev, EXTCON_USB_HOST,
341 extcon_set_property(info->edev, EXTCON_DISP_DP,
344 extcon_set_property(info->edev, EXTCON_DISP_DP,
348 extcon_sync(info->edev, EXTCON_USB);
349 extcon_sync(info->edev, EXTCON_USB_HOST);
350 extcon_sync(info->edev, EXTCON_DISP_DP);
353 extcon_set_property(info->edev, EXTCON_DISP_DP,
356 extcon_sync(info->edev, EXTCON_DISP_DP);
366 struct cros_ec_extcon_info *info;
370 info = container_of(nb, struct cros_ec_extcon_info, notifier);
371 ec = info->ec;
376 extcon_cros_ec_detect_cable(info, false);
385 struct cros_ec_extcon_info *info;
391 info = devm_kzalloc(dev, sizeof(*info), GFP_KERNEL);
392 if (!info)
395 info->dev = dev;
396 info->ec = ec;
406 info->port_id = port;
408 info->port_id = pdev->id;
411 numports = cros_ec_pd_get_num_ports(info);
418 if (info->port_id >= numports) {
423 info->edev = devm_extcon_dev_allocate(dev, usb_type_c_cable);
424 if (IS_ERR(info->edev)) {
429 ret = devm_extcon_dev_register(dev, info->edev);
435 extcon_set_property_capability(info->edev, EXTCON_USB,
437 extcon_set_property_capability(info->edev, EXTCON_USB_HOST,
439 extcon_set_property_capability(info->edev, EXTCON_USB,
441 extcon_set_property_capability(info->edev, EXTCON_USB_HOST,
443 extcon_set_property_capability(info->edev, EXTCON_DISP_DP,
445 extcon_set_property_capability(info->edev, EXTCON_USB,
447 extcon_set_property_capability(info->edev, EXTCON_USB_HOST,
449 extcon_set_property_capability(info->edev, EXTCON_DISP_DP,
451 extcon_set_property_capability(info->edev, EXTCON_DISP_DP,
454 info->dr = DR_NONE;
455 info->pr = false;
457 platform_set_drvdata(pdev, info);
460 info->notifier.notifier_call = extcon_cros_ec_event;
461 ret = blocking_notifier_chain_register(&info->ec->event_notifier,
462 &info->notifier);
469 ret = extcon_cros_ec_detect_cable(info, true);
478 blocking_notifier_chain_unregister(&info->ec->event_notifier,
479 &info->notifier);
485 struct cros_ec_extcon_info *info = platform_get_drvdata(pdev);
487 blocking_notifier_chain_unregister(&info->ec->event_notifier,
488 &info->notifier);
502 struct cros_ec_extcon_info *info = dev_get_drvdata(dev);
504 ret = extcon_cros_ec_detect_cable(info, true);