thunderbolt: Do not read control adapter config space
authorSanjay R Mehta <sanju.mehta@amd.com>
Tue, 3 Aug 2021 12:34:55 +0000 (07:34 -0500)
committerMika Westerberg <mika.westerberg@linux.intel.com>
Mon, 9 Aug 2021 11:58:29 +0000 (14:58 +0300)
Adapter 0 is the control adapter and as per USB4 spec in section 2.2.6.2
control Adapters do not have an adapter configuration space.

For this reason skip reading adapter config space in tb_port_init() when
the port number is 0. This actually simplifies the rest of the function
as we don't need to check for the port->port == 0 anymore.

While there drop the extra empty line at the end of the function.

Signed-off-by: Basavaraj Natikar <Basavaraj.Natikar@amd.com>
Signed-off-by: Sanjay R Mehta <sanju.mehta@amd.com>
Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
drivers/thunderbolt/switch.c

index bc91887..2c44b24 100644 (file)
@@ -724,6 +724,12 @@ static int tb_init_port(struct tb_port *port)
        int res;
        int cap;
 
+       INIT_LIST_HEAD(&port->list);
+
+       /* Control adapter does not have configuration space */
+       if (!port->port)
+               return 0;
+
        res = tb_port_read(port, &port->config, TB_CFG_PORT, 0, 8);
        if (res) {
                if (res == -ENODEV) {
@@ -736,7 +742,7 @@ static int tb_init_port(struct tb_port *port)
        }
 
        /* Port 0 is the switch itself and has no PHY. */
-       if (port->config.type == TB_TYPE_PORT && port->port != 0) {
+       if (port->config.type == TB_TYPE_PORT) {
                cap = tb_port_find_cap(port, TB_PORT_CAP_PHY);
 
                if (cap > 0)
@@ -762,7 +768,7 @@ static int tb_init_port(struct tb_port *port)
                if (!port->ctl_credits)
                        port->ctl_credits = 2;
 
-       } else if (port->port != 0) {
+       } else {
                cap = tb_port_find_cap(port, TB_PORT_CAP_ADAP);
                if (cap > 0)
                        port->cap_adap = cap;
@@ -773,10 +779,7 @@ static int tb_init_port(struct tb_port *port)
                ADP_CS_4_TOTAL_BUFFERS_SHIFT;
 
        tb_dump_port(port->sw->tb, port);
-
-       INIT_LIST_HEAD(&port->list);
        return 0;
-
 }
 
 static int tb_port_alloc_hopid(struct tb_port *port, bool in, int min_hopid,