xes: Add board_flash_wp_on()
authorJohn Schmoller <jschmoller@xes-inc.com>
Fri, 22 Oct 2010 05:20:25 +0000 (00:20 -0500)
committerKumar Gala <galak@kernel.crashing.org>
Fri, 22 Oct 2010 07:17:19 +0000 (02:17 -0500)
Add board_flash_wp_on() to check a pca9557 gpio pin to see
if non-volatile memory write protection is enabled.

Previously, write protected NOR flashes would fail initialization which
resulted in a bootup error such as:

 ...
 DTT:   53 C local / 64 C remote (adt7461@4c)
 DTT:   54 C local (ds1621@48)
 FLASH: Executed from FLASH1
 POST memory PASSED
 FLASH: ## Unknown FLASH on Bank 1 - Size = 0x00000000 = 0 MB
 ## Unknown FLASH on Bank 2 - Size = 0x00000000 = 0 MB
 *** failed ***
 ### ERROR ### Please RESET the board ###

With this patch, NOR flash initialization is skipped:

 ...
 DTT:   53 C local / 64 C remote (adt7461@4c)
 DTT:   54 C local (ds1621@48)
 FLASH: Executed from FLASH1
 POST memory PASSED
 FLASH: Uninitialized - Write Protect On
 L2:    1024 KB enabled
 NAND:  1024 MiB
 ...

Note that flash related commands such as flinfo and saveenv will error
out when flash write protection is enabled.

Signed-off-by: John Schmoller <jschmoller@xes-inc.com>
Signed-off-by: Peter Tyser <ptyser@xes-inc.com>
Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
board/xes/common/fsl_8xxx_misc.c
include/configs/XPEDITE5200.h

index e37a3c1123b6970fe2052dfff78d8fce20e0a939..b7fa6950b07c736bde4f9e5c17895cee5e1fbd12 100644 (file)
 
 #include <common.h>
 #include <asm/mmu.h>
+#ifdef CONFIG_PCA953X
+#include <pca953x.h>
+
+/*
+ * Determine if a board's flashes are write protected
+ */
+int board_flash_wp_on(void)
+{
+       if (pca953x_get_val(CONFIG_SYS_I2C_PCA953X_ADDR0) &
+                       CONFIG_SYS_PCA953X_NVM_WP)
+               return 1;
+
+       return 0;
+}
+#endif
 
 /*
  * Return a board's derivative model number.  For example:
index 4221829cb09f500a82fc9b1db33fc4621a0c7ad6..1ad9b461d36989fb0d4508915aff4ebda6e083dd 100644 (file)
 #define CONFIG_SYS_PCA953X_BRD_CFG2            0x04
 #define CONFIG_SYS_PCA953X_XMC_ROOT0           0x08
 #define CONFIG_SYS_PCA953X_FLASH_PASS_CS       0x10
-#define CONFIG_SYS_PCA953X_FLASH_WP            0x20
+#define CONFIG_SYS_PCA953X_NVM_WP              0x20
 #define CONFIG_SYS_PCA953X_MONARCH             0x40
 #define CONFIG_SYS_PCA953X_EREADY              0x80