Takashi Iwai a9aca3
From 1c9c02bb22684f6949d2e7ddc0a3ff364fd5a6fc Mon Sep 17 00:00:00 2001
Takashi Iwai a9aca3
From: "Gustavo A. R. Silva" <gustavo@embeddedor.com>
Takashi Iwai a9aca3
Date: Mon, 27 Apr 2020 14:50:37 -0500
Takashi Iwai a9aca3
Subject: [PATCH] mtd: lpddr: Fix bad logic in print_drs_error
Takashi Iwai a9aca3
Git-commit: 1c9c02bb22684f6949d2e7ddc0a3ff364fd5a6fc
Takashi Iwai a9aca3
Patch-mainline: v5.10-rc1
Takashi Iwai a9aca3
References: git-fixes
Takashi Iwai a9aca3
Takashi Iwai a9aca3
Update logic for broken test. Use a more common logging style.
Takashi Iwai a9aca3
Takashi Iwai a9aca3
It appears the logic in this function is broken for the
Takashi Iwai a9aca3
consecutive tests of
Takashi Iwai a9aca3
Takashi Iwai a9aca3
        if (prog_status & 0x3)
Takashi Iwai a9aca3
                ...
Takashi Iwai a9aca3
        else if (prog_status & 0x2)
Takashi Iwai a9aca3
                ...
Takashi Iwai a9aca3
        else (prog_status & 0x1)
Takashi Iwai a9aca3
                ...
Takashi Iwai a9aca3
Takashi Iwai a9aca3
Likely the first test should be
Takashi Iwai a9aca3
Takashi Iwai a9aca3
        if ((prog_status & 0x3) == 0x3)
Takashi Iwai a9aca3
Takashi Iwai a9aca3
Found by inspection of include files using printk.
Takashi Iwai a9aca3
Takashi Iwai a9aca3
Fixes: eb3db27507f7 ("[MTD] LPDDR PFOW definition")
Takashi Iwai a9aca3
Cc: stable@vger.kernel.org
Takashi Iwai a9aca3
Reported-by: Joe Perches <joe@perches.com>
Takashi Iwai a9aca3
Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
Takashi Iwai a9aca3
Acked-by: Miquel Raynal <miquel.raynal@bootlin.com>
Takashi Iwai a9aca3
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Takashi Iwai a9aca3
Link: https://lore.kernel.org/linux-mtd/3fb0e29f5b601db8be2938a01d974b00c8788501.1588016644.git.gustavo@embeddedor.com
Takashi Iwai a9aca3
Acked-by: Takashi Iwai <tiwai@suse.de>
Takashi Iwai a9aca3
Takashi Iwai a9aca3
---
Takashi Iwai a9aca3
 include/linux/mtd/pfow.h | 2 +-
Takashi Iwai a9aca3
 1 file changed, 1 insertion(+), 1 deletion(-)
Takashi Iwai a9aca3
Takashi Iwai a9aca3
diff --git a/include/linux/mtd/pfow.h b/include/linux/mtd/pfow.h
Takashi Iwai a9aca3
index 6166e7c60869..b8da6f8e854b 100644
Takashi Iwai a9aca3
--- a/include/linux/mtd/pfow.h
Takashi Iwai a9aca3
+++ b/include/linux/mtd/pfow.h
Takashi Iwai a9aca3
@@ -128,7 +128,7 @@ static inline void print_drs_error(unsigned dsr)
Takashi Iwai a9aca3
 
Takashi Iwai a9aca3
 	if (!(dsr & DSR_AVAILABLE))
Takashi Iwai a9aca3
 		printk(KERN_NOTICE"DSR.15: (0) Device not Available\n");
Takashi Iwai a9aca3
-	if (prog_status & 0x03)
Takashi Iwai a9aca3
+	if ((prog_status & 0x03) == 0x03)
Takashi Iwai a9aca3
 		printk(KERN_NOTICE"DSR.9,8: (11) Attempt to program invalid "
Takashi Iwai a9aca3
 						"half with 41h command\n");
Takashi Iwai a9aca3
 	else if (prog_status & 0x02)
Takashi Iwai a9aca3
-- 
Takashi Iwai a9aca3
2.16.4
Takashi Iwai a9aca3