Messages in this thread Patch in this message | | | From | Prashant Malani <> | Subject | [RFC v2 2/3] platform/chrome: typec: Get PD_CONTROL version | Date | Thu, 30 Jan 2020 14:07:46 -0800 |
| |
Query the EC to determine the version number of the USB_PD_CONTROL command which is supported by the EC. Also store this value in the Type C data struct since it will be used to determine how to parse the response to queries for port information from the EC.
Signed-off-by: Prashant Malani <pmalani@chromium.org> ---
Changes in v2: - Fixed commit message title.
drivers/platform/chrome/cros_ec_typec.c | 35 ++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-)
diff --git a/drivers/platform/chrome/cros_ec_typec.c b/drivers/platform/chrome/cros_ec_typec.c index f48bb0172c565f..189c2192375c5d 100644 --- a/drivers/platform/chrome/cros_ec_typec.c +++ b/drivers/platform/chrome/cros_ec_typec.c @@ -22,6 +22,7 @@ struct cros_typec_data { struct device *dev; struct cros_ec_device *ec; int num_ports; + unsigned int cmd_ver; /* Array of ports, indexed by port number. */ struct typec_port *ports[EC_USB_PD_MAX_PORTS]; }; @@ -137,6 +138,32 @@ static int cros_typec_get_num_ports(struct cros_typec_data *typec) return 0; } +static int cros_typec_get_cmd_version(struct cros_typec_data *typec) +{ + struct ec_params_get_cmd_versions_v1 req_v1; + struct ec_response_get_cmd_versions resp; + int ret; + + /* We're interested in the PD control command version. */ + req_v1.cmd = EC_CMD_USB_PD_CONTROL; + ret = cros_ec_send_cmd_msg(typec->ec, 1, EC_CMD_GET_CMD_VERSIONS, + &req_v1, sizeof(req_v1), &resp, + sizeof(resp)); + if (ret < 0) { + return ret; + } + + if (resp.version_mask & EC_VER_MASK(1)) + typec->cmd_ver = 1; + else + typec->cmd_ver = 0; + + dev_dbg(typec->dev, "PD Control has version mask 0x%hhx\n", + typec->cmd_ver); + + return 0; +} + static int cros_typec_probe(struct platform_device *pdev) { struct device *dev = &pdev->dev; @@ -160,8 +187,14 @@ static int cros_typec_probe(struct platform_device *pdev) return -EOVERFLOW; } + ret = cros_typec_get_cmd_version(typec); + if (ret < 0) { + dev_err(dev, "failed to get PD command version info\n"); + return ret; + } + ret = cros_typec_init_ports(typec); - if (!ret) + if (ret < 0) return ret; return 0; -- 2.25.0.341.g760bfbb309-goog
| |