Skip to content

Commit

Permalink
platform/x86: intel_scu_ipc: Log more information if SCU IPC command …
Browse files Browse the repository at this point in the history
…fails

Currently we only log an error if the command times out which makes it
hard to figure out the failing command. This changes the driver to log
command and subcommand with the error code which should make debugging
easier. This also allows us to simplify the callers as they don't need
to log these errors themselves.

Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
  • Loading branch information
Mika Westerberg authored and Lee Jones committed Apr 24, 2020
1 parent 54b34aa commit ea608f2
Showing 1 changed file with 11 additions and 6 deletions.
17 changes: 11 additions & 6 deletions drivers/platform/x86/intel_scu_ipc.c
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,6 @@ static inline int busy_loop(struct intel_scu_ipc_dev *scu)
usleep_range(50, 100);
} while (time_before(jiffies, end));

dev_err(&scu->dev, "IPC timed out");
return -ETIMEDOUT;
}

Expand All @@ -156,10 +155,8 @@ static inline int ipc_wait_for_interrupt(struct intel_scu_ipc_dev *scu)
{
int status;

if (!wait_for_completion_timeout(&scu->cmd_complete, IPC_TIMEOUT)) {
dev_err(&scu->dev, "IPC timed out\n");
if (!wait_for_completion_timeout(&scu->cmd_complete, IPC_TIMEOUT))
return -ETIMEDOUT;
}

status = ipc_read_status(scu);
if (status & IPC_STATUS_ERR)
Expand Down Expand Up @@ -331,6 +328,7 @@ EXPORT_SYMBOL(intel_scu_ipc_update_register);
int intel_scu_ipc_simple_command(int cmd, int sub)
{
struct intel_scu_ipc_dev *scu;
u32 cmdval;
int err;

mutex_lock(&ipclock);
Expand All @@ -339,9 +337,12 @@ int intel_scu_ipc_simple_command(int cmd, int sub)
return -ENODEV;
}
scu = ipcdev;
ipc_command(scu, sub << 12 | cmd);
cmdval = sub << 12 | cmd;
ipc_command(scu, cmdval);
err = intel_scu_ipc_check_status(scu);
mutex_unlock(&ipclock);
if (err)
dev_err(&scu->dev, "IPC command %#x failed with %d\n", cmdval, err);
return err;
}
EXPORT_SYMBOL(intel_scu_ipc_simple_command);
Expand All @@ -362,6 +363,7 @@ int intel_scu_ipc_command(int cmd, int sub, u32 *in, int inlen,
u32 *out, int outlen)
{
struct intel_scu_ipc_dev *scu;
u32 cmdval;
int i, err;

mutex_lock(&ipclock);
Expand All @@ -374,7 +376,8 @@ int intel_scu_ipc_command(int cmd, int sub, u32 *in, int inlen,
for (i = 0; i < inlen; i++)
ipc_data_writel(scu, *in++, 4 * i);

ipc_command(scu, (inlen << 16) | (sub << 12) | cmd);
cmdval = (inlen << 16) | (sub << 12) | cmd;
ipc_command(scu, cmdval);
err = intel_scu_ipc_check_status(scu);

if (!err) {
Expand All @@ -383,6 +386,8 @@ int intel_scu_ipc_command(int cmd, int sub, u32 *in, int inlen,
}

mutex_unlock(&ipclock);
if (err)
dev_err(&scu->dev, "IPC command %#x failed with %d\n", cmdval, err);
return err;
}
EXPORT_SYMBOL(intel_scu_ipc_command);
Expand Down

0 comments on commit ea608f2

Please sign in to comment.