Commit ea608f25 authored by Mika Westerberg's avatar Mika Westerberg Committed by Lee Jones

platform/x86: intel_scu_ipc: Log more information if SCU IPC command 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: default avatarMika Westerberg <mika.westerberg@linux.intel.com>
Reviewed-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
parent 54b34aa0
...@@ -147,7 +147,6 @@ static inline int busy_loop(struct intel_scu_ipc_dev *scu) ...@@ -147,7 +147,6 @@ static inline int busy_loop(struct intel_scu_ipc_dev *scu)
usleep_range(50, 100); usleep_range(50, 100);
} while (time_before(jiffies, end)); } while (time_before(jiffies, end));
dev_err(&scu->dev, "IPC timed out");
return -ETIMEDOUT; return -ETIMEDOUT;
} }
...@@ -156,10 +155,8 @@ static inline int ipc_wait_for_interrupt(struct intel_scu_ipc_dev *scu) ...@@ -156,10 +155,8 @@ static inline int ipc_wait_for_interrupt(struct intel_scu_ipc_dev *scu)
{ {
int status; int status;
if (!wait_for_completion_timeout(&scu->cmd_complete, IPC_TIMEOUT)) { if (!wait_for_completion_timeout(&scu->cmd_complete, IPC_TIMEOUT))
dev_err(&scu->dev, "IPC timed out\n");
return -ETIMEDOUT; return -ETIMEDOUT;
}
status = ipc_read_status(scu); status = ipc_read_status(scu);
if (status & IPC_STATUS_ERR) if (status & IPC_STATUS_ERR)
...@@ -331,6 +328,7 @@ EXPORT_SYMBOL(intel_scu_ipc_update_register); ...@@ -331,6 +328,7 @@ EXPORT_SYMBOL(intel_scu_ipc_update_register);
int intel_scu_ipc_simple_command(int cmd, int sub) int intel_scu_ipc_simple_command(int cmd, int sub)
{ {
struct intel_scu_ipc_dev *scu; struct intel_scu_ipc_dev *scu;
u32 cmdval;
int err; int err;
mutex_lock(&ipclock); mutex_lock(&ipclock);
...@@ -339,9 +337,12 @@ int intel_scu_ipc_simple_command(int cmd, int sub) ...@@ -339,9 +337,12 @@ int intel_scu_ipc_simple_command(int cmd, int sub)
return -ENODEV; return -ENODEV;
} }
scu = ipcdev; scu = ipcdev;
ipc_command(scu, sub << 12 | cmd); cmdval = sub << 12 | cmd;
ipc_command(scu, cmdval);
err = intel_scu_ipc_check_status(scu); err = intel_scu_ipc_check_status(scu);
mutex_unlock(&ipclock); mutex_unlock(&ipclock);
if (err)
dev_err(&scu->dev, "IPC command %#x failed with %d\n", cmdval, err);
return err; return err;
} }
EXPORT_SYMBOL(intel_scu_ipc_simple_command); EXPORT_SYMBOL(intel_scu_ipc_simple_command);
...@@ -362,6 +363,7 @@ int intel_scu_ipc_command(int cmd, int sub, u32 *in, int inlen, ...@@ -362,6 +363,7 @@ int intel_scu_ipc_command(int cmd, int sub, u32 *in, int inlen,
u32 *out, int outlen) u32 *out, int outlen)
{ {
struct intel_scu_ipc_dev *scu; struct intel_scu_ipc_dev *scu;
u32 cmdval;
int i, err; int i, err;
mutex_lock(&ipclock); mutex_lock(&ipclock);
...@@ -374,7 +376,8 @@ int intel_scu_ipc_command(int cmd, int sub, u32 *in, int inlen, ...@@ -374,7 +376,8 @@ int intel_scu_ipc_command(int cmd, int sub, u32 *in, int inlen,
for (i = 0; i < inlen; i++) for (i = 0; i < inlen; i++)
ipc_data_writel(scu, *in++, 4 * 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); err = intel_scu_ipc_check_status(scu);
if (!err) { if (!err) {
...@@ -383,6 +386,8 @@ int intel_scu_ipc_command(int cmd, int sub, u32 *in, int inlen, ...@@ -383,6 +386,8 @@ int intel_scu_ipc_command(int cmd, int sub, u32 *in, int inlen,
} }
mutex_unlock(&ipclock); mutex_unlock(&ipclock);
if (err)
dev_err(&scu->dev, "IPC command %#x failed with %d\n", cmdval, err);
return err; return err;
} }
EXPORT_SYMBOL(intel_scu_ipc_command); EXPORT_SYMBOL(intel_scu_ipc_command);
......
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