fsi: sbefifo: Add detailed debugging information
authorJoel Stanley <joel@jms.id.au>
Fri, 15 Apr 2022 05:07:57 +0000 (14:37 +0930)
committerJoel Stanley <joel@jms.id.au>
Wed, 28 Sep 2022 11:40:57 +0000 (21:10 +0930)
Provide more output on the timeout status, and make some vdbg calls into
dbg calls so they can be enabled at runtime.

Signed-off-by: Joel Stanley <joel@jms.id.au>
Link: https://lore.kernel.org/r/20220415050757.281158-1-joel@jms.id.au
Signed-off-by: Joel Stanley <joel@jms.id.au>
drivers/fsi/fsi-sbefifo.c

index f52a912..5f93a53 100644 (file)
@@ -477,7 +477,8 @@ static int sbefifo_wait(struct sbefifo *sbefifo, bool up,
        if (!ready) {
                sysfs_notify(&sbefifo->dev.kobj, NULL, dev_attr_timeout.attr.name);
                sbefifo->timed_out = true;
-               dev_err(dev, "%s FIFO Timeout ! status=%08x\n", up ? "UP" : "DOWN", sts);
+               dev_err(dev, "%s FIFO Timeout (%u ms)! status=%08x\n",
+                       up ? "UP" : "DOWN", jiffies_to_msecs(timeout), sts);
                return -ETIMEDOUT;
        }
        dev_vdbg(dev, "End of wait status: %08x\n", sts);
@@ -497,8 +498,8 @@ static int sbefifo_send_command(struct sbefifo *sbefifo,
        u32 status;
        int rc;
 
-       dev_vdbg(dev, "sending command (%zd words, cmd=%04x)\n",
-                cmd_len, be32_to_cpu(command[1]));
+       dev_dbg(dev, "sending command (%zd words, cmd=%04x)\n",
+               cmd_len, be32_to_cpu(command[1]));
 
        /* As long as there's something to send */
        timeout = msecs_to_jiffies(SBEFIFO_TIMEOUT_START_CMD);
@@ -551,21 +552,23 @@ static int sbefifo_read_response(struct sbefifo *sbefifo, struct iov_iter *respo
        size_t len;
        int rc;
 
-       dev_vdbg(dev, "reading response, buflen = %zd\n", iov_iter_count(response));
+       dev_dbg(dev, "reading response, buflen = %zd\n", iov_iter_count(response));
 
        timeout = msecs_to_jiffies(sbefifo->timeout_start_rsp_ms);
        for (;;) {
                /* Grab FIFO status (this will handle parity errors) */
                rc = sbefifo_wait(sbefifo, false, &status, timeout);
-               if (rc < 0)
+               if (rc < 0) {
+                       dev_dbg(dev, "timeout waiting (%u ms)\n", jiffies_to_msecs(timeout));
                        return rc;
+               }
                timeout = msecs_to_jiffies(SBEFIFO_TIMEOUT_IN_RSP);
 
                /* Decode status */
                len = sbefifo_populated(status);
                eot_set = sbefifo_eot_set(status);
 
-               dev_vdbg(dev, "  chunk size %zd eot_set=0x%x\n", len, eot_set);
+               dev_dbg(dev, "  chunk size %zd eot_set=0x%x\n", len, eot_set);
 
                /* Go through the chunk */
                while(len--) {