OSDN Git Service

mtd: rawnand: export NAND operation tracer
authorSascha Hauer <s.hauer@pengutronix.de>
Tue, 21 May 2019 07:06:30 +0000 (09:06 +0200)
committerMiquel Raynal <miquel.raynal@bootlin.com>
Thu, 27 Jun 2019 18:05:25 +0000 (20:05 +0200)
The NAND core has a NAND operation tracing function, but it can only
be used by drivers using the generic option parser from the NAND core.
Export the tracing function as a static inline function in rawnand.h
so that drivers implementing exec_op directly do not have to write their
own operation tracing.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Reviewed-by: Miquel Raynal <miquel.raynal@bootlin.com>
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
drivers/mtd/nand/raw/nand_base.c
include/linux/mtd/rawnand.h

index d565b4a..6ecd1c4 100644 (file)
@@ -2115,35 +2115,7 @@ static void nand_op_parser_trace(const struct nand_op_parser_ctx *ctx)
                if (instr == &ctx->subop.instrs[0])
                        prefix = "    ->";
 
-               switch (instr->type) {
-               case NAND_OP_CMD_INSTR:
-                       pr_debug("%sCMD      [0x%02x]\n", prefix,
-                                instr->ctx.cmd.opcode);
-                       break;
-               case NAND_OP_ADDR_INSTR:
-                       pr_debug("%sADDR     [%d cyc: %*ph]\n", prefix,
-                                instr->ctx.addr.naddrs,
-                                instr->ctx.addr.naddrs < 64 ?
-                                instr->ctx.addr.naddrs : 64,
-                                instr->ctx.addr.addrs);
-                       break;
-               case NAND_OP_DATA_IN_INSTR:
-                       pr_debug("%sDATA_IN  [%d B%s]\n", prefix,
-                                instr->ctx.data.len,
-                                instr->ctx.data.force_8bit ?
-                                ", force 8-bit" : "");
-                       break;
-               case NAND_OP_DATA_OUT_INSTR:
-                       pr_debug("%sDATA_OUT [%d B%s]\n", prefix,
-                                instr->ctx.data.len,
-                                instr->ctx.data.force_8bit ?
-                                ", force 8-bit" : "");
-                       break;
-               case NAND_OP_WAITRDY_INSTR:
-                       pr_debug("%sWAITRDY  [max %d ms]\n", prefix,
-                                instr->ctx.waitrdy.timeout_ms);
-                       break;
-               }
+               nand_op_trace(prefix, instr);
 
                if (instr == &ctx->subop.instrs[ctx->subop.ninstrs - 1])
                        prefix = "      ";
index dbfffa5..f5bb6f1 100644 (file)
@@ -877,6 +877,42 @@ int nand_op_parser_exec_op(struct nand_chip *chip,
                           const struct nand_op_parser *parser,
                           const struct nand_operation *op, bool check_only);
 
+static inline void nand_op_trace(const char *prefix,
+                                const struct nand_op_instr *instr)
+{
+#if IS_ENABLED(CONFIG_DYNAMIC_DEBUG) || defined(DEBUG)
+       switch (instr->type) {
+       case NAND_OP_CMD_INSTR:
+               pr_debug("%sCMD      [0x%02x]\n", prefix,
+                        instr->ctx.cmd.opcode);
+               break;
+       case NAND_OP_ADDR_INSTR:
+               pr_debug("%sADDR     [%d cyc: %*ph]\n", prefix,
+                        instr->ctx.addr.naddrs,
+                        instr->ctx.addr.naddrs < 64 ?
+                        instr->ctx.addr.naddrs : 64,
+                        instr->ctx.addr.addrs);
+               break;
+       case NAND_OP_DATA_IN_INSTR:
+               pr_debug("%sDATA_IN  [%d B%s]\n", prefix,
+                        instr->ctx.data.len,
+                        instr->ctx.data.force_8bit ?
+                        ", force 8-bit" : "");
+               break;
+       case NAND_OP_DATA_OUT_INSTR:
+               pr_debug("%sDATA_OUT [%d B%s]\n", prefix,
+                        instr->ctx.data.len,
+                        instr->ctx.data.force_8bit ?
+                        ", force 8-bit" : "");
+               break;
+       case NAND_OP_WAITRDY_INSTR:
+               pr_debug("%sWAITRDY  [max %d ms]\n", prefix,
+                        instr->ctx.waitrdy.timeout_ms);
+               break;
+       }
+#endif
+}
+
 /**
  * struct nand_controller_ops - Controller operations
  *