]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - drivers/usb/typec/ucsi/ucsi.c
usb: typec: Start using ERR_PTR
[linux.git] / drivers / usb / typec / ucsi / ucsi.c
index 79046fe6642680c17a317c9d1855aabc8404f76b..69d544cfcd45a5a2ce77ada3ff428b2663657a89 100644 (file)
@@ -260,38 +260,45 @@ static void ucsi_pwr_opmode_change(struct ucsi_connector *con)
 
 static int ucsi_register_partner(struct ucsi_connector *con)
 {
-       struct typec_partner_desc partner;
+       struct typec_partner_desc desc;
+       struct typec_partner *partner;
 
        if (con->partner)
                return 0;
 
-       memset(&partner, 0, sizeof(partner));
+       memset(&desc, 0, sizeof(desc));
 
        switch (con->status.partner_type) {
        case UCSI_CONSTAT_PARTNER_TYPE_DEBUG:
-               partner.accessory = TYPEC_ACCESSORY_DEBUG;
+               desc.accessory = TYPEC_ACCESSORY_DEBUG;
                break;
        case UCSI_CONSTAT_PARTNER_TYPE_AUDIO:
-               partner.accessory = TYPEC_ACCESSORY_AUDIO;
+               desc.accessory = TYPEC_ACCESSORY_AUDIO;
                break;
        default:
                break;
        }
 
-       partner.usb_pd = con->status.pwr_op_mode == UCSI_CONSTAT_PWR_OPMODE_PD;
+       desc.usb_pd = con->status.pwr_op_mode == UCSI_CONSTAT_PWR_OPMODE_PD;
 
-       con->partner = typec_register_partner(con->port, &partner);
-       if (!con->partner) {
-               dev_err(con->ucsi->dev, "con%d: failed to register partner\n",
-                       con->num);
-               return -ENODEV;
+       partner = typec_register_partner(con->port, &desc);
+       if (IS_ERR(partner)) {
+               dev_err(con->ucsi->dev,
+                       "con%d: failed to register partner (%ld)\n", con->num,
+                       PTR_ERR(partner));
+               return PTR_ERR(partner);
        }
 
+       con->partner = partner;
+
        return 0;
 }
 
 static void ucsi_unregister_partner(struct ucsi_connector *con)
 {
+       if (!con->partner)
+               return;
+
        typec_unregister_partner(con->partner);
        con->partner = NULL;
 }
@@ -606,8 +613,8 @@ static int ucsi_register_port(struct ucsi *ucsi, int index)
 
        /* Register the connector */
        con->port = typec_register_port(ucsi->dev, cap);
-       if (!con->port)
-               return -ENODEV;
+       if (IS_ERR(con->port))
+               return PTR_ERR(con->port);
 
        /* Get the status */
        UCSI_CMD_GET_CONNECTOR_STATUS(ctrl, con->num);