From 9d2a873bdf72a7c615c9c7ac55357085d0299716 Mon Sep 17 00:00:00 2001 From: Stefan Roese Date: Wed, 31 Aug 2005 12:55:50 +0200 Subject: [PATCH] Add I2C support to TQM8540 and TQM8560 boards (EEPROM, RTC, LM75-DTT). Removed CFG_CMD_DISPLAY from default commands. Fixed compiler warning in net.c. Patch by Stefan Roese, 31 Aug 2005 --- CHANGELOG | 5 +++++ MAKEALL | 1 + board/tqm8540/tqm8540.c | 21 ++++++++++++++++----- board/tqm8560/tqm8560.c | 21 ++++++++++++++++----- include/cmd_confdefs.h | 1 + include/configs/TQM8540.h | 39 ++++++++++++++++++++++++++++++++++----- include/configs/TQM8560.h | 39 +++++++++++++++++++++++++++++++++++---- net/net.c | 2 +- 8 files changed, 109 insertions(+), 20 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 1a2c7bd69d..ea4353d7c9 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -2,6 +2,11 @@ Changes for U-Boot 1.1.4: ====================================================================== +* Add I2C support to TQM8540 and TQM8560 boards (EEPROM, RTC, LM75-DTT). + Removed CFG_CMD_DISPLAY from default commands. + Fixed compiler warning in net.c. + Patch by Stefan Roese, 31 Aug 2005 + * Fix problems with ld version 2.16 (dot outside sections problem) Pointed out by Gerhard Jaeger, 31 Aug 2005; cf. http://sourceware.org/ml/binutils/2005-08/msg00412.html diff --git a/MAKEALL b/MAKEALL index fb816b8796..5d72452920 100755 --- a/MAKEALL +++ b/MAKEALL @@ -126,6 +126,7 @@ LIST_85xx=" \ MPC8540ADS MPC8540EVAL MPC8541CDS MPC8548CDS \ MPC8555CDS MPC8560ADS PM854 PM856 \ sbc8540 sbc8560 stxgp3 TQM8540 \ + TQM8560 \ " ######################################################################### diff --git a/board/tqm8540/tqm8540.c b/board/tqm8540/tqm8540.c index ee10d00427..970c6841fd 100644 --- a/board/tqm8540/tqm8540.c +++ b/board/tqm8540/tqm8540.c @@ -74,15 +74,26 @@ long int initdram (int board_type) #if defined(CONFIG_DDR_DLL) { - volatile ccsr_gur_t *gur = &immap->im_gur; - uint temp_ddrdll = 0; + volatile ccsr_gur_t *gur= &immap->im_gur; + int i,x; + + x = 10; /* * Work around to stabilize DDR DLL */ - temp_ddrdll = gur->ddrdllcr; - gur->ddrdllcr = ((temp_ddrdll & 0xff) << 16) | 0x80000000; - asm ("sync;isync;msync"); + gur->ddrdllcr = 0x81000000; + asm("sync;isync;msync"); + udelay (200); + while (gur->ddrdllcr != 0x81000100) { + gur->devdisr = gur->devdisr | 0x00010000; + asm("sync;isync;msync"); + for (i=0; idevdisr = gur->devdisr & 0xfff7ffff; + asm("sync;isync;msync"); + x++; + } } #endif diff --git a/board/tqm8560/tqm8560.c b/board/tqm8560/tqm8560.c index 5f2edd89dd..71f58805bc 100644 --- a/board/tqm8560/tqm8560.c +++ b/board/tqm8560/tqm8560.c @@ -229,15 +229,26 @@ long int initdram (int board_type) #if defined(CONFIG_DDR_DLL) { - volatile ccsr_gur_t *gur = &immap->im_gur; - uint temp_ddrdll = 0; + volatile ccsr_gur_t *gur= &immap->im_gur; + int i,x; + + x = 10; /* * Work around to stabilize DDR DLL */ - temp_ddrdll = gur->ddrdllcr; - gur->ddrdllcr = ((temp_ddrdll & 0xff) << 16) | 0x80000000; - asm ("sync;isync;msync"); + gur->ddrdllcr = 0x81000000; + asm("sync;isync;msync"); + udelay (200); + while (gur->ddrdllcr != 0x81000100) { + gur->devdisr = gur->devdisr | 0x00010000; + asm("sync;isync;msync"); + for (i=0; idevdisr = gur->devdisr & 0xfff7ffff; + asm("sync;isync;msync"); + x++; + } } #endif diff --git a/include/cmd_confdefs.h b/include/cmd_confdefs.h index 448b9d5bf7..c79a023f7c 100644 --- a/include/cmd_confdefs.h +++ b/include/cmd_confdefs.h @@ -109,6 +109,7 @@ CFG_CMD_DATE | \ CFG_CMD_DHCP | \ CFG_CMD_DIAG | \ + CFG_CMD_DISPLAY | \ CFG_CMD_DOC | \ CFG_CMD_DTT | \ CFG_CMD_ECHO | \ diff --git a/include/configs/TQM8540.h b/include/configs/TQM8540.h index 5a922447a2..f35914a239 100644 --- a/include/configs/TQM8540.h +++ b/include/configs/TQM8540.h @@ -230,11 +230,33 @@ #endif /* I2C */ -#define CONFIG_HARD_I2C /* I2C with hardware support*/ -#undef CONFIG_SOFT_I2C /* I2C bit-banged */ -#define CFG_I2C_SPEED 400000 /* I2C speed and slave address */ +#define CONFIG_HARD_I2C /* I2C with hardware support */ +#undef CONFIG_SOFT_I2C /* I2C bit-banged */ +#define CFG_I2C_SPEED 400000 /* I2C speed and slave address */ #define CFG_I2C_SLAVE 0x7F -#define CFG_I2C_NOPROBES {0x69} /* Don't probe these addrs */ +#define CFG_I2C_NOPROBES {0x48} /* Don't probe these addrs */ + +/* I2C RTC */ +#define CONFIG_RTC_DS1337 /* Use ds1337 rtc via i2c */ +#define CFG_I2C_RTC_ADDR 0x68 /* at address 0x68 */ + +/* I2C EEPROM */ +/* + * EEPROM configuration for onboard EEPROM M24C32 (M24C64 should work also). + */ +#define CFG_I2C_EEPROM_ADDR 0x50 /* 1010000x */ +#define CFG_I2C_EEPROM_ADDR_LEN 2 +#define CFG_EEPROM_PAGE_WRITE_BITS 5 /* =32 Bytes per write */ +#define CFG_EEPROM_PAGE_WRITE_ENABLE +#define CFG_EEPROM_PAGE_WRITE_DELAY_MS 20 +#define CFG_I2C_MULTI_EEPROMS 1 /* more than one eeprom */ + +/* I2C SYSMON (LM75) */ +#define CONFIG_DTT_LM75 1 /* ON Semi's LM75 */ +#define CONFIG_DTT_SENSORS {0} /* Sensor addresses */ +#define CFG_DTT_MAX_TEMP 70 +#define CFG_DTT_LOW_TEMP -30 +#define CFG_DTT_HYSTERESIS 3 /* RapidIO MMU */ #define CFG_RIO_MEM_BASE 0xc0000000 /* base address */ @@ -301,7 +323,6 @@ #endif /* CONFIG_TSEC_ENET */ - /* * Environment */ @@ -342,6 +363,9 @@ #define CONFIG_COMMANDS (CONFIG_CMD_PRIV | \ ADD_PCI_CMD | \ CFG_CMD_I2C | \ + CFG_CMD_DATE | \ + CFG_CMD_EEPROM | \ + CFG_CMD_DTT | \ CFG_CMD_PING ) #include @@ -426,6 +450,11 @@ "bootfile=/tftpboot/tqm8540/uImage\0" \ "kernel_addr=FE000000\0" \ "ramdisk_addr=FE100000\0" \ + "load=tftp 100000 /tftpboot/tqm8540/u-boot.bin\0" \ + "update=protect off fffc0000 ffffffff;era fffc0000 ffffffff;" \ + "cp.b 100000 fffc0000 40000;" \ + "setenv filesize;saveenv\0" \ + "upd=run load;run update\0" \ "" #define CONFIG_BOOTCOMMAND "run flash_self" diff --git a/include/configs/TQM8560.h b/include/configs/TQM8560.h index a72346d307..f48d04e261 100644 --- a/include/configs/TQM8560.h +++ b/include/configs/TQM8560.h @@ -38,6 +38,7 @@ #define CONFIG_BOOKE 1 /* BOOKE */ #define CONFIG_E500 1 /* BOOKE e500 family */ #define CONFIG_MPC85xx 1 /* MPC8540/MPC8560 */ +#define CONFIG_CPM2 1 /* has CPM2 */ #define CONFIG_MPC8560 1 /* MPC8560 specific */ #define CONFIG_TQM8560 1 /* TQM8560 board specific */ @@ -226,11 +227,33 @@ #endif /* I2C */ -#define CONFIG_HARD_I2C /* I2C with hardware support*/ -#undef CONFIG_SOFT_I2C /* I2C bit-banged */ -#define CFG_I2C_SPEED 400000 /* I2C speed and slave address */ +#define CONFIG_HARD_I2C /* I2C with hardware support */ +#undef CONFIG_SOFT_I2C /* I2C bit-banged */ +#define CFG_I2C_SPEED 400000 /* I2C speed and slave address */ #define CFG_I2C_SLAVE 0x7F -#define CFG_I2C_NOPROBES {0x69} /* Don't probe these addrs */ +#define CFG_I2C_NOPROBES {0x48} /* Don't probe these addrs */ + +/* I2C RTC */ +#define CONFIG_RTC_DS1337 /* Use ds1337 rtc via i2c */ +#define CFG_I2C_RTC_ADDR 0x68 /* at address 0x68 */ + +/* I2C EEPROM */ +/* + * EEPROM configuration for onboard EEPROM M24C32 (M24C64 should work also). + */ +#define CFG_I2C_EEPROM_ADDR 0x50 /* 1010000x */ +#define CFG_I2C_EEPROM_ADDR_LEN 2 +#define CFG_EEPROM_PAGE_WRITE_BITS 5 /* =32 Bytes per write */ +#define CFG_EEPROM_PAGE_WRITE_ENABLE +#define CFG_EEPROM_PAGE_WRITE_DELAY_MS 20 +#define CFG_I2C_MULTI_EEPROMS 1 /* more than one eeprom */ + +/* I2C SYSMON (LM75) */ +#define CONFIG_DTT_LM75 1 /* ON Semi's LM75 */ +#define CONFIG_DTT_SENSORS {0} /* Sensor addresses */ +#define CFG_DTT_MAX_TEMP 70 +#define CFG_DTT_LOW_TEMP -30 +#define CFG_DTT_HYSTERESIS 3 /* RapidIO MMU */ #define CFG_RIO_MEM_BASE 0xc0000000 /* base address */ @@ -331,6 +354,9 @@ #define CONFIG_COMMANDS (CONFIG_CMD_PRIV | \ ADD_PCI_CMD | \ CFG_CMD_I2C | \ + CFG_CMD_DATE | \ + CFG_CMD_EEPROM | \ + CFG_CMD_DTT | \ CFG_CMD_PING ) #include @@ -415,6 +441,11 @@ "bootfile=/tftpboot/tqm8560/uImage\0" \ "kernel_addr=FE000000\0" \ "ramdisk_addr=FE100000\0" \ + "load=tftp 100000 /tftpboot/tqm8560/u-boot.bin\0" \ + "update=protect off fffc0000 ffffffff;era fffc0000 ffffffff;" \ + "cp.b 100000 fffc0000 40000;" \ + "setenv filesize;saveenv\0" \ + "upd=run load;run update\0" \ "" #define CONFIG_BOOTCOMMAND "run flash_self" diff --git a/net/net.c b/net/net.c index d13ae74cd1..11b770004b 100644 --- a/net/net.c +++ b/net/net.c @@ -1574,7 +1574,7 @@ unsigned NetCksum(uchar * ptr, int len) { ulong xsum; - ushort *p = ptr; + ushort *p = (ushort *)ptr; xsum = 0; while (len-- > 0) -- 2.39.5