ppc4xx: Add support for 2nd I2C EEPROM on lwmon5 board
authorStefan Roese <sr@denx.de>
Thu, 23 Aug 2007 09:02:37 +0000 (11:02 +0200)
committerStefan Roese <sr@denx.de>
Thu, 23 Aug 2007 09:02:37 +0000 (11:02 +0200)
This patch adds support for the 2nd EEPROM (AT24C128) on the lwmon5
board. Now the "eeprom" command can be used to read/write from/to this
device. Additionally a new command was added "eepromwp" to en-/disable
the write-protect of this 2nd EEPROM.

The 1st EEPROM is not affected by this write-protect command.

Signed-off-by: Stefan Roese <sr@denx.de>
board/lwmon5/lwmon5.c
include/configs/lwmon5.h

index 0958194..77f9989 100644 (file)
@@ -19,6 +19,7 @@
  */
 
 #include <common.h>
+#include <command.h>
 #include <ppc440.h>
 #include <asm/processor.h>
 #include <asm/gpio.h>
@@ -527,3 +528,29 @@ void hw_watchdog_reset(void)
        val = gpio_read_out_bit(CFG_GPIO_WATCHDOG) == 0 ? 1 : 0;
        gpio_write_bit(CFG_GPIO_WATCHDOG, val);
 }
+
+int do_eeprom_wp(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
+{
+       if (argc < 2) {
+               printf("Usage:\n%s\n", cmdtp->usage);
+               return 1;
+       }
+
+       if ((strcmp(argv[1], "on") == 0)) {
+               gpio_write_bit(CFG_GPIO_EEPROM_EXT_WP, 1);
+       } else if ((strcmp(argv[1], "off") == 0)) {
+               gpio_write_bit(CFG_GPIO_EEPROM_EXT_WP, 0);
+       } else {
+               printf("Usage:\n%s\n", cmdtp->usage);
+               return 1;
+       }
+
+
+       return 0;
+}
+
+U_BOOT_CMD(
+       eepromwp,       2,      0,      do_eeprom_wp,
+       "eepromwp- eeprom write protect off/on\n",
+       "<on|off> - enable (on) or disable (off) I2C EEPROM write protect\n"
+);
index 23b19ba..7b2def3 100644 (file)
  *----------------------------------------------------------------------*/
 #define CONFIG_HARD_I2C                1               /* I2C with hardware support    */
 #undef CONFIG_SOFT_I2C                         /* I2C bit-banged               */
-#define CFG_I2C_SPEED          400000          /* I2C speed and slave address  */
+#define CFG_I2C_SPEED          100000          /* I2C speed and slave address  */
 #define CFG_I2C_SLAVE          0x7F
 
-#define CFG_I2C_MULTI_EEPROMS
-#define CFG_I2C_EEPROM_ADDR    (0xa8>>1)
-#define CFG_I2C_EEPROM_ADDR_LEN 1
+#define CFG_I2C_EEPROM_ADDR    0x53    /* EEPROM AT24C128              */
+#define CFG_I2C_EEPROM_ADDR_LEN 2      /* Bytes of address             */
+#define CFG_EEPROM_PAGE_WRITE_BITS 6   /* The Atmel AT24C128 has       */
+                                       /* 64 byte page write mode using*/
+                                       /* last 6 bits of the address   */
+#define CFG_EEPROM_PAGE_WRITE_DELAY_MS 10   /* and takes up to 10 msec */
 #define CFG_EEPROM_PAGE_WRITE_ENABLE
-#define CFG_EEPROM_PAGE_WRITE_BITS 3
-#define CFG_EEPROM_PAGE_WRITE_DELAY_MS 10
 
 #define CONFIG_RTC_PCF8563     1               /* enable Philips PCF8563 RTC   */
 #define CFG_I2C_RTC_ADDR       0x51            /* Philips PCF8563 RTC address  */
 #define CFG_GPIO_PHY1_RST      12
 #define CFG_GPIO_FLASH_WP      14
 #define CFG_GPIO_PHY0_RST      22
+#define CFG_GPIO_EEPROM_EXT_WP 55
+#define CFG_GPIO_EEPROM_INT_WP 57
 #define CFG_GPIO_WATCHDOG      58
 #define CFG_GPIO_LIME_S                59
 #define CFG_GPIO_LIME_RST      60