Skip to content

Commit

Permalink
thunderbolt: Read retimer NVM authentication status prior tb_retimer_…
Browse files Browse the repository at this point in the history
…set_inbound_sbtx()

[ Upstream commit 1402ba0 ]

According to the USB4 retimer guide the correct order is immediately
after sending ENUMERATE_RETIMERS so update the code to follow this.

Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
  • Loading branch information
westeri authored and gregkh committed Aug 23, 2023
1 parent b7bd48f commit 809625f
Showing 1 changed file with 21 additions and 8 deletions.
29 changes: 21 additions & 8 deletions drivers/thunderbolt/retimer.c
Expand Up @@ -187,6 +187,21 @@ static ssize_t nvm_authenticate_show(struct device *dev,
return ret;
}

static void tb_retimer_nvm_authenticate_status(struct tb_port *port, u32 *status)
{
int i;

tb_port_dbg(port, "reading NVM authentication status of retimers\n");

/*
* Before doing anything else, read the authentication status.
* If the retimer has it set, store it for the new retimer
* device instance.
*/
for (i = 1; i <= TB_MAX_RETIMER_INDEX; i++)
usb4_port_retimer_nvm_authenticate_status(port, i, &status[i]);
}

static void tb_retimer_set_inbound_sbtx(struct tb_port *port)
{
int i;
Expand Down Expand Up @@ -455,18 +470,16 @@ int tb_retimer_scan(struct tb_port *port, bool add)
return ret;

/*
* Enable sideband channel for each retimer. We can do this
* regardless whether there is device connected or not.
* Immediately after sending enumerate retimers read the
* authentication status of each retimer.
*/
tb_retimer_set_inbound_sbtx(port);
tb_retimer_nvm_authenticate_status(port, status);

/*
* Before doing anything else, read the authentication status.
* If the retimer has it set, store it for the new retimer
* device instance.
* Enable sideband channel for each retimer. We can do this
* regardless whether there is device connected or not.
*/
for (i = 1; i <= TB_MAX_RETIMER_INDEX; i++)
usb4_port_retimer_nvm_authenticate_status(port, i, &status[i]);
tb_retimer_set_inbound_sbtx(port);

for (i = 1; i <= TB_MAX_RETIMER_INDEX; i++) {
/*
Expand Down

0 comments on commit 809625f

Please sign in to comment.