mtd: spi-nor: aspeed: set 4B setting for all chips
authorCédric Le Goater <clg@kaod.org>
Wed, 2 Aug 2017 08:51:51 +0000 (10:51 +0200)
committerCyrille Pitchen <cyrille.pitchen@wedev4u.fr>
Mon, 14 Aug 2017 15:23:50 +0000 (17:23 +0200)
The driver made the wrong assumption that the 4B setting was
autodetected for all chips of the AST2500 FMC flash controller. This
is only the case for the CS0.

Signed-off-by: Cédric Le Goater <clg@kaod.org>
Signed-off-by: Cyrille Pitchen <cyrille.pitchen@wedev4u.fr>
drivers/mtd/spi-nor/aspeed-smc.c

index 0106357421bd3cd27186937c94a044ce403fbf56..8d3cbe27efb645c34f9e390b665685449edee98b 100644 (file)
@@ -621,19 +621,18 @@ static void aspeed_smc_chip_set_type(struct aspeed_smc_chip *chip, int type)
 }
 
 /*
- * The AST2500 FMC flash controller should be strapped by hardware, or
- * autodetected, but the AST2500 SPI flash needs to be set.
+ * The first chip of the AST2500 FMC flash controller is strapped by
+ * hardware, or autodetected, but other chips need to be set. Enforce
+ * the 4B setting for all chips.
  */
 static void aspeed_smc_chip_set_4b(struct aspeed_smc_chip *chip)
 {
        struct aspeed_smc_controller *controller = chip->controller;
        u32 reg;
 
-       if (chip->controller->info == &spi_2500_info) {
-               reg = readl(controller->regs + CE_CONTROL_REG);
-               reg |= 1 << chip->cs;
-               writel(reg, controller->regs + CE_CONTROL_REG);
-       }
+       reg = readl(controller->regs + CE_CONTROL_REG);
+       reg |= 1 << chip->cs;
+       writel(reg, controller->regs + CE_CONTROL_REG);
 }
 
 /*