Commit b7b83911 authored by Mika Westerberg's avatar Mika Westerberg

thunderbolt: Do not send UNSET_INBOUND_SBTX when retimer NVM authentication started

Once retimer NVM authentication is started, sending UNSET_INBOUND_SBTX
will fail so avoid doing that. Only send it when we are writing an image
with not authentication or when the authentication failed early.
Signed-off-by: default avatarMika Westerberg <mika.westerberg@linux.intel.com>
parent 1402ba08
...@@ -244,6 +244,13 @@ static ssize_t nvm_authenticate_store(struct device *dev, ...@@ -244,6 +244,13 @@ static ssize_t nvm_authenticate_store(struct device *dev,
rt->auth_status = 0; rt->auth_status = 0;
if (val) { if (val) {
/*
* When NVM authentication starts the retimer is not
* accessible so calling tb_retimer_unset_inbound_sbtx()
* will fail and therefore we do not call it. Exception
* is when the validation fails or we only write the new
* NVM image without authentication.
*/
tb_retimer_set_inbound_sbtx(rt->port); tb_retimer_set_inbound_sbtx(rt->port);
if (val == AUTHENTICATE_ONLY) { if (val == AUTHENTICATE_ONLY) {
ret = tb_retimer_nvm_authenticate(rt, true); ret = tb_retimer_nvm_authenticate(rt, true);
...@@ -264,7 +271,8 @@ static ssize_t nvm_authenticate_store(struct device *dev, ...@@ -264,7 +271,8 @@ static ssize_t nvm_authenticate_store(struct device *dev,
} }
exit_unlock: exit_unlock:
tb_retimer_unset_inbound_sbtx(rt->port); if (ret || val == WRITE_ONLY)
tb_retimer_unset_inbound_sbtx(rt->port);
mutex_unlock(&rt->tb->lock); mutex_unlock(&rt->tb->lock);
exit_rpm: exit_rpm:
pm_runtime_mark_last_busy(&rt->dev); pm_runtime_mark_last_busy(&rt->dev);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment