Old revisions of Utilite (a miniature PC based on cm-fx6) do not have
a card detect for mmc, and thus the kernel needs to be told that
there's a persistent storage on usdhc3 to force it to probe the mmc
card.

Check the baseboard revision and modify the device tree accordingly
if needed.

Cc: Stefano Babic <sba...@denx.de>
Cc: Igor Grinberg <grinb...@compulab.co.il>
Signed-off-by: Nikita Kiryanov <nik...@compulab.co.il>
---
 board/compulab/cm_fx6/cm_fx6.c | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/board/compulab/cm_fx6/cm_fx6.c b/board/compulab/cm_fx6/cm_fx6.c
index 572111d..c8e980d 100644
--- a/board/compulab/cm_fx6/cm_fx6.c
+++ b/board/compulab/cm_fx6/cm_fx6.c
@@ -582,6 +582,10 @@ int cm_fx6_setup_ecspi(void) { return 0; }
 #ifdef CONFIG_OF_BOARD_SETUP
 int ft_board_setup(void *blob, bd_t *bd)
 {
+       u32 baseboard_rev;
+       int nodeoffset;
+       const char *usdhc3_path = "/soc/aips-bus@02100000/usdhc@02198000/";
+       char *baseboard_name;
        uint8_t enetaddr[6];
 
        /* MAC addr */
@@ -596,6 +600,18 @@ int ft_board_setup(void *blob, bd_t *bd)
                                     enetaddr, 6, 1);
        }
 
+       baseboard_name = cl_eeprom_get_product_name(0);
+       baseboard_rev = cl_eeprom_get_board_rev(0);
+       if (!strncmp("SB-FX6m", baseboard_name, 7) && baseboard_rev <= 120) {
+               fdt_shrink_to_minimum(blob); /* Make room for new properties */
+               nodeoffset = fdt_path_offset(blob, usdhc3_path);
+               fdt_delprop(blob, nodeoffset, "cd-gpios");
+               fdt_find_and_setprop(blob, usdhc3_path, "non-removable",
+                                    NULL, 0, 1);
+               fdt_find_and_setprop(blob, usdhc3_path, "keep-power-in-suspend",
+                                    NULL, 0, 1);
+       }
+
        return 0;
 }
 #endif
-- 
1.9.1

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to