igep00x0: fixup FDT according to detected flash type
authorLadislav Michl <ladis@linux-mips.org>
Sat, 18 Feb 2017 23:24:49 +0000 (00:24 +0100)
committerTom Rini <trini@konsulko.com>
Wed, 15 Mar 2017 00:40:22 +0000 (20:40 -0400)
Leave only detected flash type enabled in FTD as otherwise GPMC CS is
claimed (and never freed) by Linux, causing 'concurent' flash type
not to be probed.

Signed-off-by: Ladislav Michl <ladis@linux-mips.org>
board/isee/igep00x0/igep00x0.c

index 65cc7dfdecefb3586ce6fcdab4533680636c9c84..e032f313a6958cc611afc9fd1c85779318290f16 100644 (file)
@@ -214,6 +214,20 @@ void board_mmc_power_init(void)
 #endif
 
 #ifdef CONFIG_OF_BOARD_SETUP
+static int ft_enable_by_compatible(void *blob, char *compat, int enable)
+{
+       int off = fdt_node_offset_by_compatible(blob, -1, compat);
+       if (off < 0)
+               return off;
+
+       if (enable)
+               fdt_status_okay(blob, off);
+       else
+               fdt_status_disabled(blob, off);
+
+       return 0;
+}
+
 int ft_board_setup(void *blob, bd_t *bd)
 {
 #ifdef CONFIG_FDT_FIXUP_PARTITIONS
@@ -224,6 +238,11 @@ int ft_board_setup(void *blob, bd_t *bd)
 
        fdt_fixup_mtdparts(blob, nodes, ARRAY_SIZE(nodes));
 #endif
+       ft_enable_by_compatible(blob, "ti,omap2-nand",
+                               gpmc_cs0_flash == MTD_DEV_TYPE_NAND);
+       ft_enable_by_compatible(blob, "ti,omap2-onenand",
+                               gpmc_cs0_flash == MTD_DEV_TYPE_ONENAND);
+
        return 0;
 }
 #endif