8xx: add support for new keymile kmsupx4 board.
authorHeiko Schocher <hs@denx.de>
Thu, 12 Mar 2009 06:37:34 +0000 (07:37 +0100)
committerWolfgang Denk <wd@denx.de>
Wed, 18 Mar 2009 19:50:05 +0000 (20:50 +0100)
This patch adds support for the kmsupx4 board from Keymile,
based on a Freescale MPC852T CPU

- serial console on SMC1
- 32 MB SDRAM
- 32 MB NOR Flash
- Ethernet over SCC3
- I2C Bitbang

Signed-off-by: Heiko Schocher <hs@denx.de>
MAINTAINERS
MAKEALL
Makefile
board/keymile/common/common.c
board/keymile/km8xx/km8xx.c
drivers/i2c/soft_i2c.c
include/configs/km8xx.h
include/configs/kmsupx4.h [new file with mode: 0644]

index c3157d95b6d0ddb7608ca302c740275d43c07e47..ce25c1b54f7c108a695f017978e307350095b376 100644 (file)
@@ -380,6 +380,7 @@ Heiko Schocher <hs@denx.de>
        ids8247         MPC8247
        jupiter         MPC5200
        kmeter1         MPC8360
+       kmsupx4         MPC852T
        mgcoge          MPC8247
        mgsuvd          MPC852
        mucmc52         MPC5200
diff --git a/MAKEALL b/MAKEALL
index f8c912becaaa6ea9e30796cc5fdc8a5740d0d475..ed9e5edfac03e5c7eea4706b674eccb0556df4bb 100755 (executable)
--- a/MAKEALL
+++ b/MAKEALL
@@ -117,6 +117,7 @@ LIST_8xx="          \
        KUP4X           \
        LANTEC          \
        lwmon           \
+       kmsupx4         \
        MBX             \
        MBX860T         \
        mgsuvd          \
index 859dfb71e527a4f1bbbb639d0d63037f524ecb2c..a67cf1580e9c0c9b0578b600052417eb28f25682 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -921,6 +921,9 @@ IVMS8_config:       unconfig
                 }
        @$(MKCONFIG) -a IVMS8 ppc mpc8xx ivm
 
+kmsupx4_config:                unconfig
+       @$(MKCONFIG) $(@:_config=) ppc mpc8xx km8xx keymile
+
 KUP4K_config   :       unconfig
        @$(MKCONFIG) $(@:_config=) ppc mpc8xx kup4k kup
 
index c3fa8443d0caf161454cef9cb4d5d2285b84dda1..b2bd7fd8433450b7d983c84f360632cca04ad77d 100644 (file)
@@ -295,11 +295,14 @@ int ivm_analyze_eeprom (unsigned char *buf, int len)
 
 int ivm_read_eeprom (void)
 {
+#if defined(CONFIG_I2C_MUX)
        I2C_MUX_DEVICE *dev = NULL;
+#endif
        uchar i2c_buffer[CONFIG_SYS_IVM_EEPROM_MAX_LEN];
        uchar   *buf;
        unsigned dev_addr = CONFIG_SYS_IVM_EEPROM_ADR;
 
+#if defined(CONFIG_I2C_MUX)
        /* First init the Bus, select the Bus */
 #if defined(CONFIG_SYS_I2C_IVM_BUS)
        dev = i2c_mux_ident_muxstring ((uchar *)CONFIG_SYS_I2C_IVM_BUS);
@@ -313,6 +316,7 @@ int ivm_read_eeprom (void)
                return -1;
        }
        i2c_set_bus_num (dev->busid);
+#endif
 
        buf = (unsigned char *) getenv ("EEprom_ivm_addr");
        if (buf != NULL)
index e7bfa31250f046e2750a098de916e252edb51efc..845d3f2a0e7f7b02625f6028999a8e5e711c6952 100644 (file)
@@ -61,7 +61,12 @@ const uint sdram_table[] =
 
 int checkboard (void)
 {
-       puts ("Board: Keymile mgsuvd");
+       puts ("Board: Keymile ");
+#if defined(CONFIG_KMSUPX4)
+       puts ("kmsupx4");
+#else
+       puts ("mgsuvd");
+#endif
        if (ethernet_present ())
                puts (" with PIGGY.");
        puts ("\n");
index da6cec1fa28090bf708c25f35317d85a27771f35..ed5f5b26949e837e1beff5000f2f0643eb7458f6 100644 (file)
@@ -40,7 +40,7 @@
 #ifdef CONFIG_LPC2292
 #include <asm/arch/hardware.h>
 #endif
-#ifdef CONFIG_MPC866                   /* only valid for MPC866 */
+#if defined(CONFIG_MPC852T) || defined(CONFIG_MPC866)
 #include <asm/io.h>
 #endif
 #include <i2c.h>
index a29771fba9d065cae6ace401c47d25022b84cc81..c305b896908ce7742b1e7f5021b58d9461af6e37 100644 (file)
 /* include common defines/options for all Keymile boards */
 #include "keymile-common.h"
 
+#if defined(CONFIG_KMSUPX4)
+#undef CONFIG_I2C_MUX                  /* no I2C mux on this board */
+#endif
+
 #define CONFIG_8xx_GCLK_FREQ           66000000
 
 #define CONFIG_SYS_SMC_UCODE_PATCH     1       /* Relocate SMC1 */
 #define BOOTFLASH_START        F0000000
 #define CONFIG_PRAM    512     /* protected RAM [KBytes] */
 
+#if defined(CONFIG_MGSUVD)
 #define CONFIG_ENV_IVM "EEprom_ivm=pca9544a:70:4 \0"
+#else
+#define CONFIG_ENV_IVM ""
+#endif
+
+#define MTDIDS_DEFAULT         "nor0=app"
+#define MTDPARTS_DEFAULT \
+       "mtdparts=app:384k(u-boot),128k(env),128k(envred),128k(free),"  \
+       "1536k(esw0),8704k(rootfs0),1536k(esw1),2432k(rootfs1),640k(var)," \
+       "768k(cfg)"
 
 #define CONFIG_EXTRA_ENV_SETTINGS                                      \
        CONFIG_KM_DEF_ENV                                               \
@@ -69,9 +83,7 @@
        "addcon=setenv bootargs ${bootargs} "                           \
                "console=ttyCPM0,${baudrate}\0"                         \
        "mtdids=nor0=app \0"                                            \
-       "mtdparts=mtdparts=app:384k(u-boot),128k(env),128k(envred),"    \
-               "128k(free),1536k(esw0),8704k(rootfs0),1536k(esw1),"    \
-               "2432k(rootfs1),640k(var),768k(cfg)\0"                  \
+       "mtdparts=" MK_STR(MTDPARTS_DEFAULT) "\0"                       \
        "partition=nor0,9 \0"                                           \
        "new_env=prot off F0060000 F009FFFF; era F0060000 F009FFFF \0"  \
        CONFIG_ENV_IVM                                                  \
  * SIUMCR - SIU Module Configuration                           11-6
  *-----------------------------------------------------------------------
  */
+#if defined(CONFIG_MGSUVD)
 #define CONFIG_SYS_SIUMCR      0x00610480
+#else
+#define CONFIG_SYS_SIUMCR      0x00610400
+#endif
 
 /*-----------------------------------------------------------------------
  * TBSCR - Time Base Status and Control                                11-26
  * Set clock output, timebase and RTC source and divider,
  * power management and some other internal clocks
  */
+#if defined(CONFIG_MGSUVD)
 #define SCCR_MASK      0x01800000
+#else
+#define SCCR_MASK      0x00000000
+#endif
 #define CONFIG_SYS_SCCR        0x01800000
 
 #define CONFIG_SYS_DER 0
 #define CONFIG_SYS_MPTPR       0x0200
 /* PTB=16, AMB=001, FIXME 1 RAS precharge cycles, 1 READ loop cycle (not used),
    1 Write loop Cycle (not used), 1 Timer Loop Cycle */
+#if defined(CONFIG_MGSUVD)
 #define CONFIG_SYS_MBMR        0x10964111
+#else
+#define CONFIG_SYS_MBMR        0x20964111
+#endif
 #define CONFIG_SYS_MAR         0x00000088
 
 /*
 /* GPIO/PIGGY on CS3 initialization values
 */
 #define CONFIG_SYS_PIGGY_BASE  (0x30000000)
+#if defined(CONFIG_MGSUVD)
 #define CONFIG_SYS_OR3_PRELIM  (0xfe000d24)
 #define CONFIG_SYS_BR3_PRELIM  (0x30000401)
+#else
+#define CONFIG_SYS_OR3_PRELIM  (0xf8000d26)
+#define CONFIG_SYS_BR3_PRELIM  (0x30000401)
+#endif
 
 /*
  * Internal Definitions
 
 /* I2C SYSMON (LM75, AD7414 is almost compatible)              */
 #define CONFIG_DTT_LM75                1       /* ON Semi's LM75       */
+#if defined(CONFIG_MGSUVD)
 #define CONFIG_DTT_SENSORS     {0, 2, 4, 6}    /* Sensor addresses */
+#else
+#define CONFIG_DTT_SENSORS     {0}     /* Sensor addresses */
+#endif
 #define CONFIG_SYS_DTT_MAX_TEMP        70
 #define CONFIG_SYS_DTT_LOW_TEMP        -30
 #define CONFIG_SYS_DTT_HYSTERESIS      3
 #define CONFIG_SYS_DTT_BUS_NUM         (CONFIG_SYS_MAX_I2C_BUS)
-
-#define MTDIDS_DEFAULT         "nor0=app"
-#define MTDPARTS_DEFAULT ( \
-       "mtdparts=app:384k(u-boot),128k(env),128k(envred),128k(free),"  \
-       "1536k(esw0),8704k(rootfs0),1536k(esw1),2432k(rootfs1),640k(var)," \
-       "768k(cfg)")
-
 #endif /* __CONFIG_KM8XX_H */
diff --git a/include/configs/kmsupx4.h b/include/configs/kmsupx4.h
new file mode 100644 (file)
index 0000000..8f1e602
--- /dev/null
@@ -0,0 +1,41 @@
+/*
+ * (C) Copyright 2009
+ * Heiko Schocher, DENX Software Engineering, hs@denx.de.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.         See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+/*
+ * board/config.h - configuration options, board specific
+ */
+
+#ifndef __CONFIG_H
+#define __CONFIG_H
+
+#define CONFIG_MPC852T         1       /* This is a MPC852T CPU        */
+#define CONFIG_KMSUPX4         1       /* ...on a kmsupx4 board        */
+#define CONFIG_HOSTNAME                kmsupx4
+
+/* include common defines/options for all Keymile 8xx boards */
+#include "km8xx.h"
+
+#define CONFIG_SYS_DELAYED_ICACHE      1       /* enable ICache not before
+                                                * running in RAM.
+                                                */
+#endif /* __CONFIG_H */