usb: typec: ucsi: glink: set orientation aware if supported
authorDmitry Baryshkov <dmitry.baryshkov@linaro.org>
Thu, 11 Apr 2024 04:49:57 +0000 (07:49 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 18 Apr 2024 14:47:24 +0000 (16:47 +0200)
If the PMIC-GLINK device has orientation GPIOs declared, then it will
report connection orientation. In this case set the flag to mark
registered ports as orientation-aware.

Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Link: https://lore.kernel.org/r/20240411-ucsi-orient-aware-v2-5-d4b1cb22a33f@linaro.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/typec/ucsi/ucsi_glink.c

index d279e2cf9bba8c1121c46ae0041529d664a3ffe9..f7546bb488c32877ddc1c93802bd0b80f9bb200a 100644 (file)
@@ -186,6 +186,17 @@ static int pmic_glink_ucsi_sync_write(struct ucsi *__ucsi, unsigned int offset,
        return ret;
 }
 
+static void pmic_glink_ucsi_update_connector(struct ucsi_connector *con)
+{
+       struct pmic_glink_ucsi *ucsi = ucsi_get_drvdata(con->ucsi);
+       int i;
+
+       for (i = 0; i < PMIC_GLINK_MAX_PORTS; i++) {
+               if (ucsi->port_orientation[i])
+                       con->typec_cap.orientation_aware = true;
+       }
+}
+
 static void pmic_glink_ucsi_connector_status(struct ucsi_connector *con)
 {
        struct pmic_glink_ucsi *ucsi = ucsi_get_drvdata(con->ucsi);
@@ -208,6 +219,7 @@ static const struct ucsi_operations pmic_glink_ucsi_ops = {
        .read = pmic_glink_ucsi_read,
        .sync_write = pmic_glink_ucsi_sync_write,
        .async_write = pmic_glink_ucsi_async_write,
+       .update_connector = pmic_glink_ucsi_update_connector,
        .connector_status = pmic_glink_ucsi_connector_status,
 };