]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
usb: typec: tcpm: Remove tcpc_config configuration mechanism
authorHans de Goede <hdegoede@redhat.com>
Thu, 14 Nov 2019 11:18:40 +0000 (12:18 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 16 Nov 2019 13:45:31 +0000 (14:45 +0100)
All configuration can and should be done through fwnodes instead of
through the tcpc_config struct and there are no existing users left of
struct tcpc_config, so lets remove it.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Link: https://lore.kernel.org/r/20191114111840.40876-1-hdegoede@redhat.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/typec/tcpm/tcpm.c
include/linux/usb/tcpm.h

index bc9edb4c013be24e01ece1131cede33dd1e9d689..56fc356bc55c610464d46f9e0267c10c010b5869 100644 (file)
@@ -380,9 +380,6 @@ static enum tcpm_state tcpm_default_state(struct tcpm_port *port)
                        return SNK_UNATTACHED;
                else if (port->try_role == TYPEC_SOURCE)
                        return SRC_UNATTACHED;
-               else if (port->tcpc->config &&
-                        port->tcpc->config->default_role == TYPEC_SINK)
-                       return SNK_UNATTACHED;
                /* Fall through to return SRC_UNATTACHED */
        } else if (port->port_type == TYPEC_PORT_SNK) {
                return SNK_UNATTACHED;
@@ -4122,7 +4119,7 @@ static int tcpm_try_role(struct typec_port *p, int role)
        mutex_lock(&port->lock);
        if (tcpc->try_role)
                ret = tcpc->try_role(tcpc, role);
-       if (!ret && (!tcpc->config || !tcpc->config->try_role_hw))
+       if (!ret)
                port->try_role = role;
        port->try_src_count = 0;
        port->try_snk_count = 0;
@@ -4366,34 +4363,6 @@ void tcpm_tcpc_reset(struct tcpm_port *port)
 }
 EXPORT_SYMBOL_GPL(tcpm_tcpc_reset);
 
-static int tcpm_copy_pdos(u32 *dest_pdo, const u32 *src_pdo,
-                         unsigned int nr_pdo)
-{
-       unsigned int i;
-
-       if (nr_pdo > PDO_MAX_OBJECTS)
-               nr_pdo = PDO_MAX_OBJECTS;
-
-       for (i = 0; i < nr_pdo; i++)
-               dest_pdo[i] = src_pdo[i];
-
-       return nr_pdo;
-}
-
-static int tcpm_copy_vdos(u32 *dest_vdo, const u32 *src_vdo,
-                         unsigned int nr_vdo)
-{
-       unsigned int i;
-
-       if (nr_vdo > VDO_MAX_OBJECTS)
-               nr_vdo = VDO_MAX_OBJECTS;
-
-       for (i = 0; i < nr_vdo; i++)
-               dest_vdo[i] = src_vdo[i];
-
-       return nr_vdo;
-}
-
 static int tcpm_fw_get_caps(struct tcpm_port *port,
                            struct fwnode_handle *fwnode)
 {
@@ -4696,35 +4665,10 @@ static int devm_tcpm_psy_register(struct tcpm_port *port)
        return PTR_ERR_OR_ZERO(port->psy);
 }
 
-static int tcpm_copy_caps(struct tcpm_port *port,
-                         const struct tcpc_config *tcfg)
-{
-       if (tcpm_validate_caps(port, tcfg->src_pdo, tcfg->nr_src_pdo) ||
-           tcpm_validate_caps(port, tcfg->snk_pdo, tcfg->nr_snk_pdo))
-               return -EINVAL;
-
-       port->nr_src_pdo = tcpm_copy_pdos(port->src_pdo, tcfg->src_pdo,
-                                         tcfg->nr_src_pdo);
-       port->nr_snk_pdo = tcpm_copy_pdos(port->snk_pdo, tcfg->snk_pdo,
-                                         tcfg->nr_snk_pdo);
-
-       port->nr_snk_vdo = tcpm_copy_vdos(port->snk_vdo, tcfg->snk_vdo,
-                                         tcfg->nr_snk_vdo);
-
-       port->operating_snk_mw = tcfg->operating_snk_mw;
-
-       port->typec_caps.prefer_role = tcfg->default_role;
-       port->typec_caps.type = tcfg->type;
-       port->typec_caps.data = tcfg->data;
-       port->self_powered = tcfg->self_powered;
-
-       return 0;
-}
-
 struct tcpm_port *tcpm_register_port(struct device *dev, struct tcpc_dev *tcpc)
 {
        struct tcpm_port *port;
-       int i, err;
+       int err;
 
        if (!dev || !tcpc ||
            !tcpc->get_vbus || !tcpc->set_cc || !tcpc->get_cc ||
@@ -4757,15 +4701,10 @@ struct tcpm_port *tcpm_register_port(struct device *dev, struct tcpc_dev *tcpc)
        tcpm_debugfs_init(port);
 
        err = tcpm_fw_get_caps(port, tcpc->fwnode);
-       if ((err < 0) && tcpc->config)
-               err = tcpm_copy_caps(port, tcpc->config);
        if (err < 0)
                goto out_destroy_wq;
 
-       if (!tcpc->config || !tcpc->config->try_role_hw)
-               port->try_role = port->typec_caps.prefer_role;
-       else
-               port->try_role = TYPEC_NO_PREFERRED_ROLE;
+       port->try_role = port->typec_caps.prefer_role;
 
        port->typec_caps.fwnode = tcpc->fwnode;
        port->typec_caps.revision = 0x0120;     /* Type-C spec release 1.2 */
@@ -4792,29 +4731,6 @@ struct tcpm_port *tcpm_register_port(struct device *dev, struct tcpc_dev *tcpc)
                goto out_role_sw_put;
        }
 
-       if (tcpc->config && tcpc->config->alt_modes) {
-               const struct typec_altmode_desc *paltmode = tcpc->config->alt_modes;
-
-               i = 0;
-               while (paltmode->svid && i < ARRAY_SIZE(port->port_altmode)) {
-                       struct typec_altmode *alt;
-
-                       alt = typec_port_register_altmode(port->typec_port,
-                                                         paltmode);
-                       if (IS_ERR(alt)) {
-                               tcpm_log(port,
-                                        "%s: failed to register port alternate mode 0x%x",
-                                        dev_name(dev), paltmode->svid);
-                               break;
-                       }
-                       typec_altmode_set_drvdata(alt, port);
-                       alt->ops = &tcpm_altmode_ops;
-                       port->port_altmode[i] = alt;
-                       i++;
-                       paltmode++;
-               }
-       }
-
        mutex_lock(&port->lock);
        tcpm_init(port);
        mutex_unlock(&port->lock);
index f516955a0cf44ddf6e1e2d8ae59a522f624e5ee0..e7979c01c3517cbf808ab9f3e0231f4be252a653 100644 (file)
@@ -46,45 +46,6 @@ enum tcpm_transmit_type {
        TCPC_TX_BIST_MODE_2 = 7
 };
 
-/**
- * struct tcpc_config - Port configuration
- * @src_pdo:   PDO parameters sent to port partner as response to
- *             PD_CTRL_GET_SOURCE_CAP message
- * @nr_src_pdo:        Number of entries in @src_pdo
- * @snk_pdo:   PDO parameters sent to partner as response to
- *             PD_CTRL_GET_SINK_CAP message
- * @nr_snk_pdo:        Number of entries in @snk_pdo
- * @operating_snk_mw:
- *             Required operating sink power in mW
- * @type:      Port type (TYPEC_PORT_DFP, TYPEC_PORT_UFP, or
- *             TYPEC_PORT_DRP)
- * @default_role:
- *             Default port role (TYPEC_SINK or TYPEC_SOURCE).
- *             Set to TYPEC_NO_PREFERRED_ROLE if no default role.
- * @try_role_hw:True if try.{Src,Snk} is implemented in hardware
- * @alt_modes: List of supported alternate modes
- */
-struct tcpc_config {
-       const u32 *src_pdo;
-       unsigned int nr_src_pdo;
-
-       const u32 *snk_pdo;
-       unsigned int nr_snk_pdo;
-
-       const u32 *snk_vdo;
-       unsigned int nr_snk_vdo;
-
-       unsigned int operating_snk_mw;
-
-       enum typec_port_type type;
-       enum typec_port_data data;
-       enum typec_role default_role;
-       bool try_role_hw;       /* try.{src,snk} implemented in hardware */
-       bool self_powered;      /* port belongs to a self powered device */
-
-       const struct typec_altmode_desc *alt_modes;
-};
-
 /* Mux state attributes */
 #define TCPC_MUX_USB_ENABLED           BIT(0)  /* USB enabled */
 #define TCPC_MUX_DP_ENABLED            BIT(1)  /* DP enabled */
@@ -92,7 +53,6 @@ struct tcpc_config {
 
 /**
  * struct tcpc_dev - Port configuration and callback functions
- * @config:    Pointer to port configuration
  * @fwnode:    Pointer to port fwnode
  * @get_vbus:  Called to read current VBUS state
  * @get_current_limit:
@@ -121,7 +81,6 @@ struct tcpc_config {
  * @mux:       Pointer to multiplexer data
  */
 struct tcpc_dev {
-       const struct tcpc_config *config;
        struct fwnode_handle *fwnode;
 
        int (*init)(struct tcpc_dev *dev);