]> www.infradead.org Git - users/rw/ppcboot.git/commitdiff
I2C and config update by Stefan Roese, 10 Apr 2001 17:35:44
authorwdenk <wdenk>
Tue, 10 Apr 2001 19:03:35 +0000 (19:03 +0000)
committerwdenk <wdenk>
Tue, 10 Apr 2001 19:03:35 +0000 (19:03 +0000)
13 files changed:
board/ar405/flash.c
board/canbt/flash.c
board/cpci405/cpci405.c
board/cpci405/flash.c
board/cpciiser4/flash.c
common/board.c
cpu/ppc4xx/i2c.c
include/config_ADCIOP.h
include/config_AR405.h
include/config_CANBT.h
include/config_CPCI405.h
include/config_CPCIISER4.h
include/ppcboot.h

index 55f40e860bfbe6aafe047fad872de28615234412..2528d553bda8d369178cc18518e2cef4c46cd467 100644 (file)
@@ -497,11 +497,13 @@ void      flash_erase (flash_info_t *info, int s_first, int s_last)
                         for (i=0; i<50; i++)
                           udelay(1000);  /* wait 1 ms */
                     } else {
-                        addr[ADDR0] = (FLASH_WORD_SIZE)0x00AA00AA;
-                        addr[ADDR1] = (FLASH_WORD_SIZE)0x00550055;
-                        addr[ADDR0] = (FLASH_WORD_SIZE)0x00800080;
-                        addr[ADDR0] = (FLASH_WORD_SIZE)0x00AA00AA;
-                        addr[ADDR1] = (FLASH_WORD_SIZE)0x00550055;
+                        if (sect == s_first) {
+                            addr[ADDR0] = (FLASH_WORD_SIZE)0x00AA00AA;
+                            addr[ADDR1] = (FLASH_WORD_SIZE)0x00550055;
+                            addr[ADDR0] = (FLASH_WORD_SIZE)0x00800080;
+                            addr[ADDR0] = (FLASH_WORD_SIZE)0x00AA00AA;
+                            addr[ADDR1] = (FLASH_WORD_SIZE)0x00550055;
+                        }
                         addr2[0] = (FLASH_WORD_SIZE)0x00300030;  /* sector erase */
                     }
                    l_sect = sect;
index da82bae1fa712fcd1b7515f206406dd8c1ecdcd9..91be7c67fd1ec29905d59af4fedc49fa13105e7e 100644 (file)
@@ -509,11 +509,13 @@ void      flash_erase (flash_info_t *info, int s_first, int s_last)
                         for (i=0; i<50; i++)
                           udelay(1000);  /* wait 1 ms */
                     } else {
-                        addr[ADDR0] = (FLASH_WORD_SIZE)0x00AA00AA;
-                        addr[ADDR1] = (FLASH_WORD_SIZE)0x00550055;
-                        addr[ADDR0] = (FLASH_WORD_SIZE)0x00800080;
-                        addr[ADDR0] = (FLASH_WORD_SIZE)0x00AA00AA;
-                        addr[ADDR1] = (FLASH_WORD_SIZE)0x00550055;
+                        if (sect == s_first) {
+                            addr[ADDR0] = (FLASH_WORD_SIZE)0x00AA00AA;
+                            addr[ADDR1] = (FLASH_WORD_SIZE)0x00550055;
+                            addr[ADDR0] = (FLASH_WORD_SIZE)0x00800080;
+                            addr[ADDR0] = (FLASH_WORD_SIZE)0x00AA00AA;
+                            addr[ADDR1] = (FLASH_WORD_SIZE)0x00550055;
+                        }
                         addr2[0] = (FLASH_WORD_SIZE)0x00300030;  /* sector erase */
                     }
                    l_sect = sect;
index 1be74a667560911c13b5994412bd97e25aa7a755..f7de49cc6111cd0a2a79667a87ba57f34a3d3f2f 100644 (file)
@@ -196,6 +196,49 @@ int board_pre_init (void)
 
 /* ------------------------------------------------------------------------- */
 
+int ctermm2(void)
+{
+  if ((*(unsigned char *)0xf0000400 == 0x00) &&
+      (*(unsigned char *)0xf0000401 == 0x01))
+    return 0;                           /* no, board is cpci405 */
+  else
+    return -1;                          /* yes, board is cterm-m2 */
+}
+
+
+int misc_init_f(void)
+{
+  return 0;  /* dummy implementation */
+}
+
+
+void misc_init_r(bd_t *bd)
+{
+  /*
+   * Generate last byte of ip-addr from code-plug @ 0xf0000400
+   */
+  if (ctermm2())
+    {
+      char str[32];
+      unsigned char ipbyte = *(unsigned char *)0xf0000400;
+
+      /*
+       * Only overwrite ip-addr with allowed values
+       */
+      if ((ipbyte != 0x00) && (ipbyte != 0xff))
+        {
+          bd->bi_ip_addr = (bd->bi_ip_addr & 0xffffff00) | ipbyte;
+          sprintf(str, "%ld.%ld.%ld.%ld",
+                  (bd->bi_ip_addr & 0xff000000) >> 24,
+                  (bd->bi_ip_addr & 0x00ff0000) >> 16,
+                  (bd->bi_ip_addr & 0x0000ff00) >> 8,
+                  (bd->bi_ip_addr & 0x000000ff));
+          setenv("ipaddr", str);
+        }
+    }
+}
+
+
 /*
  * Check Board Identity:
  */
@@ -208,7 +251,7 @@ int checkboard (void)
     int index;
     int len;
 
-    if (!s || strncmp(s, "CPCI405", 7))
+    if (!s)
       {
        printf ("### No HW ID - assuming CPCI405");
       }
@@ -224,6 +267,9 @@ int checkboard (void)
         }
       }
 
+    if (ctermm2())
+      printf(" (CTERM-M2 - Id=0x%02x)", *(unsigned char *)0xf0000400);
+
     printf("\n  FPGA:  ");
     
     /* display infos on fpgaimage */
index 4723583947e55c1020dcb770d2f425a717ac4fdc..a8edb63cebb998de6ae72f746b184eab147d17c3 100644 (file)
@@ -497,11 +497,13 @@ void      flash_erase (flash_info_t *info, int s_first, int s_last)
                         for (i=0; i<50; i++)
                           udelay(1000);  /* wait 1 ms */
                     } else {
-                        addr[ADDR0] = (FLASH_WORD_SIZE)0x00AA00AA;
-                        addr[ADDR1] = (FLASH_WORD_SIZE)0x00550055;
-                        addr[ADDR0] = (FLASH_WORD_SIZE)0x00800080;
-                        addr[ADDR0] = (FLASH_WORD_SIZE)0x00AA00AA;
-                        addr[ADDR1] = (FLASH_WORD_SIZE)0x00550055;
+                        if (sect == s_first) {
+                            addr[ADDR0] = (FLASH_WORD_SIZE)0x00AA00AA;
+                            addr[ADDR1] = (FLASH_WORD_SIZE)0x00550055;
+                            addr[ADDR0] = (FLASH_WORD_SIZE)0x00800080;
+                            addr[ADDR0] = (FLASH_WORD_SIZE)0x00AA00AA;
+                            addr[ADDR1] = (FLASH_WORD_SIZE)0x00550055;
+                        }
                         addr2[0] = (FLASH_WORD_SIZE)0x00300030;  /* sector erase */
                     }
                    l_sect = sect;
index 9529a8dba13caeb034e012da5799bd38d3bb9c94..fa6940fa8316b783d7fa68ddcfe420d6c53562e0 100644 (file)
@@ -497,11 +497,13 @@ void      flash_erase (flash_info_t *info, int s_first, int s_last)
                         for (i=0; i<50; i++)
                           udelay(1000);  /* wait 1 ms */
                     } else {
-                        addr[ADDR0] = (FLASH_WORD_SIZE)0x00AA00AA;
-                        addr[ADDR1] = (FLASH_WORD_SIZE)0x00550055;
-                        addr[ADDR0] = (FLASH_WORD_SIZE)0x00800080;
-                        addr[ADDR0] = (FLASH_WORD_SIZE)0x00AA00AA;
-                        addr[ADDR1] = (FLASH_WORD_SIZE)0x00550055;
+                        if (sect == s_first) {
+                            addr[ADDR0] = (FLASH_WORD_SIZE)0x00AA00AA;
+                            addr[ADDR1] = (FLASH_WORD_SIZE)0x00550055;
+                            addr[ADDR0] = (FLASH_WORD_SIZE)0x00800080;
+                            addr[ADDR0] = (FLASH_WORD_SIZE)0x00AA00AA;
+                            addr[ADDR1] = (FLASH_WORD_SIZE)0x00550055;
+                        }
                         addr2[0] = (FLASH_WORD_SIZE)0x00300030;  /* sector erase */
                     }
                    l_sect = sect;
index 1485a61de95fe696239608b804d4dddb4082e0d0..b4bf9199d0cbf65db7c8df3813c8617c69612f6e 100644 (file)
@@ -488,7 +488,7 @@ void    board_init_r  (bd_t *bd, ulong dest_addr)
     /* relocate environment function pointers etc. */
     env_relocate (reloc_off);
 
-#if defined(CONFIG_COGENT) || defined(CONFIG_HYMOD)
+#if defined(CONFIG_COGENT) || defined(CONFIG_HYMOD) || defined(CONFIG_CPCI405)
     /* miscellaneous platform dependent initialisations */
     misc_init_r(bd);
 #endif
index 5a9039d5cc8640e7da87c7ea103486c2cb2e9c43..a5ce06f6de9bc9d86e1501ab18cb963b68dcc563 100644 (file)
@@ -256,9 +256,6 @@ int i2c_receive(unsigned char address,
 }
 
 
-
-
 int i2c_send(unsigned char address,
                 unsigned short size_to_send, unsigned char dataout[] )
 {
@@ -293,8 +290,9 @@ void i2c_write (uchar *addr, int alen, uchar *buffer, int len)
        /* write with ack polling */
        /* XXX this should be improved to allow page write mode XXX - wd */
        while (len-- > 0) {
-               xbuf[0] = addr[1];
-               xbuf[1] = *buffer++;
-               i2c_send (addr[0] << 1, 2, xbuf);
+          xbuf[0] = addr[1]++; /* increase write offset */
+          xbuf[1] = *buffer++;
+          while (i2c_send (addr[0] << 1, 2, xbuf) != 0) /* single write + ack polling */
+            udelay(100);
        }
 }
index e2639e5d442a8dda3f725f9e2f1f6746ce9cfe22..ef23bd2e4f25cbec46d4e3b4ee6faf092e457981 100644 (file)
@@ -58,7 +58,8 @@
 
 #define        CONFIG_PHY_ADDR         0       /* PHY address                  */
 
-#define CONFIG_COMMANDS        (CONFIG_CMD_DFL & ~CFG_CMD_NET) /* no network on ADCIOP */
+#define CONFIG_COMMANDS                \
+        ((CONFIG_CMD_DFL | CFG_CMD_ASKENV) & ~CFG_CMD_NET)
 
 /* this must be included AFTER the definition of CONFIG_COMMANDS (if any) */
 #include <cmd_confdefs.h>
index d79730f3d0049783b40e68efa93bf3792c3530ed..4990d646683298b2519880b718241e97405a588f 100644 (file)
@@ -63,7 +63,8 @@
 
 #define        CONFIG_PHY_ADDR         0       /* PHY address                  */
 
-#define CONFIG_COMMANDS                (CONFIG_CMD_DFL | CFG_CMD_PCI | CFG_CMD_IRQ)
+#define CONFIG_COMMANDS         \
+        (CONFIG_CMD_DFL | CFG_CMD_PCI | CFG_CMD_IRQ | CFG_CMD_ASKENV)
 
 /* this must be included AFTER the definition of CONFIG_COMMANDS (if any) */
 #include <cmd_confdefs.h>
index 4e4cf26dbb7063859e72cdb8ef859ffd9e425160..c515c9a0906df9fb31d0708838cb334d2c6eca54 100644 (file)
@@ -65,7 +65,8 @@
 
 #define        CONFIG_PHY_ADDR         0       /* PHY address                  */
 
-#define CONFIG_COMMANDS                ((CONFIG_CMD_DFL | CFG_CMD_IRQ) & ~CFG_CMD_NET)
+#define CONFIG_COMMANDS                ((CONFIG_CMD_DFL | CFG_CMD_IRQ | CFG_CMD_ASKENV)
+                                 & ~CFG_CMD_NET)
 
 /* this must be included AFTER the definition of CONFIG_COMMANDS (if any) */
 #include <cmd_confdefs.h>
index b43f058a6ebe6ba3209db4ef416b3d63a273801f..02f32db4b92a91e6b8db3f365e9f25bab54f0127 100644 (file)
 
 #define        CONFIG_PHY_ADDR         0       /* PHY address                  */
 
-#if 1
 #define CONFIG_COMMANDS                \
-        (CONFIG_CMD_DFL | CFG_CMD_PCI | CFG_CMD_IRQ | CFG_CMD_IDE)
+        (CONFIG_CMD_DFL | CFG_CMD_PCI | CFG_CMD_IRQ | CFG_CMD_IDE |     \
+         CFG_CMD_ASKENV | CFG_CMD_EEPROM)
 #define CONFIG_MAC_PARTITION
 #define CONFIG_DOS_PARTITION
-#else
-#define CONFIG_COMMANDS                \
-       (CONFIG_CMD_DFL | CFG_CMD_PCI | CFG_CMD_IRQ)
-#endif
 
 /* this must be included AFTER the definition of CONFIG_COMMANDS (if any) */
 #include <cmd_confdefs.h>
 #define CFG_ENV_OFFSET          0x000   /* environment starts at the beginning of the EEPROM */
 #define CFG_ENV_SIZE            0x200   /* 512 bytes may be used for env vars */
                                    /* total size of a CAT24WC08 is 1024 bytes */
+#endif
 
 #define CFG_I2C_EEPROM_ADDR    0x50    /* EEPROM CAT28WC08             */
 #define CFG_EEPROM_PAGE_WRITE_BITS 4   /* The Catalyst CAT24WC08 has   */
                                        /* 16 byte page write mode using*/
                                        /* last 4 bits of the address   */
-#endif
+
 /*-----------------------------------------------------------------------
  * Cache Configuration
  */
index efd1668a1b1749d12371ff4c996e85229b672cc7..f57a0838921bf812fd49e01b6db558171efb47c8 100644 (file)
 
 #define        CONFIG_PHY_ADDR         0       /* PHY address                  */
 
-#if 1
 #define CONFIG_COMMANDS                \
-        (CONFIG_CMD_DFL | CFG_CMD_IRQ | CFG_CMD_PCI)
-#else
-#define CONFIG_COMMANDS                \
-       (CONFIG_CMD_DFL | CFG_CMD_PCI | CFG_CMD_IRQ)
-#endif
+        (CONFIG_CMD_DFL | CFG_CMD_IRQ | CFG_CMD_PCI | CFG_CMD_ASKENV |  \
+         CFG_CMD_EEPROM)
 
 /* this must be included AFTER the definition of CONFIG_COMMANDS (if any) */
 #include <cmd_confdefs.h>
 #define CFG_FLASH_ERASE_TOUT   120000  /* Timeout for Flash Erase (in ms)      */
 #define CFG_FLASH_WRITE_TOUT   500     /* Timeout for Flash Write (in ms)      */
 
-
-#if 0 /* Use NVRAM for environment variables */
-/*-----------------------------------------------------------------------
- * NVRAM organization
- */
-#define CFG_ENV_IS_IN_NVRAM    1       /* use NVRAM for environment vars       */
-#define CFG_NVRAM_BASE_ADDR    0xf0200000              /* NVRAM base address   */
-#define CFG_NVRAM_SIZE         (32*1024)               /* NVRAM size           */
-#define CFG_ENV_SIZE           0x1000          /* Size of Environment vars     */
-#define CFG_ENV_ADDR           \
-       (CFG_NVRAM_BASE_ADDR+CFG_NVRAM_SIZE-CFG_ENV_SIZE)       /* Env  */
-
-#else /* Use EEPROM for environment variables */
 /*-----------------------------------------------------------------------
  * I2C EEPROM (CAT24WC08) for environment
  */
 #define CFG_EEPROM_PAGE_WRITE_BITS 4   /* The Catalyst CAT24WC08 has   */
                                        /* 16 byte page write mode using*/
                                        /* last 4 bits of the address   */
-#endif
+
 /*-----------------------------------------------------------------------
  * Cache Configuration
  */
index f6fc8dee5b80d14e521f25b7c2daf374a28ce025..71a6aa1e458c1254017bd3158bdfaf8fd0bbe236 100644 (file)
@@ -190,7 +190,8 @@ void    pciinfo       (int);
 #endif
 
 #if defined(CONFIG_COGENT) || defined(CONFIG_SXNI855T) || \
-    defined(CONFIG_RSD_PROTO) || defined(CONFIG_HYMOD)
+    defined(CONFIG_RSD_PROTO) || defined(CONFIG_HYMOD) || \
+    defined(CONFIG_CPCI405)
 /* cogent - $(BOARD)/mb.c */
 /* SXNI855T and HYMOD - $(BOARD)/$(BOARD).c */
 int    misc_init_f   (void);