From: Heiko Schocher <hs@denx.de>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 3/3] 8xx: add support for new keymile kmsupx4 board.
Date: Wed, 11 Mar 2009 09:04:50 +0100 [thread overview]
Message-ID: <49B770A2.9020302@denx.de> (raw)
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 | 1 +
MAKEALL | 1 +
Makefile | 3 ++
board/keymile/common/common.c | 6 ++++-
board/keymile/km8xx/km8xx.c | 7 +++++-
cpu/mpc8xx/cpu_init.c | 2 +
cpu/mpc8xx/start.S | 3 +-
drivers/i2c/soft_i2c.c | 3 ++
include/commproc.h | 8 +++---
include/configs/km8xx.h | 46 ++++++++++++++++++++++++++++++++---------
include/configs/kmsupx4.h | 38 +++++++++++++++++++++++++++++++++
include/configs/mgsuvd.h | 1 +
lib_ppc/board.c | 3 +-
13 files changed, 104 insertions(+), 18 deletions(-)
create mode 100644 include/configs/kmsupx4.h
diff --git a/MAINTAINERS b/MAINTAINERS
index c3157d9..ce25c1b 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -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 f8c912b..ed9e5ed 100755
--- a/MAKEALL
+++ b/MAKEALL
@@ -117,6 +117,7 @@ LIST_8xx=" \
KUP4X \
LANTEC \
lwmon \
+ kmsupx4 \
MBX \
MBX860T \
mgsuvd \
diff --git a/Makefile b/Makefile
index 8cc8dd5..74bde8a 100644
--- 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
diff --git a/board/keymile/common/common.c b/board/keymile/common/common.c
index 48ce613..b2bd7fd 100644
--- a/board/keymile/common/common.c
+++ b/board/keymile/common/common.c
@@ -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)
@@ -390,7 +394,7 @@ static void setports (int gpio)
#endif
#endif
-#if defined(CONFIG_MGSUVD)
+#if defined(CONFIG_KM8XX)
static void set_sda (int state)
{
I2C_SDA(state);
diff --git a/board/keymile/km8xx/km8xx.c b/board/keymile/km8xx/km8xx.c
index e7bfa31..845d3f2 100644
--- a/board/keymile/km8xx/km8xx.c
+++ b/board/keymile/km8xx/km8xx.c
@@ -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");
diff --git a/cpu/mpc8xx/cpu_init.c b/cpu/mpc8xx/cpu_init.c
index eb0091b..050008e 100644
--- a/cpu/mpc8xx/cpu_init.c
+++ b/cpu/mpc8xx/cpu_init.c
@@ -119,11 +119,13 @@ void cpu_init_f (volatile immap_t * immr)
* Memory Controller:
*/
+#if !defined(CONFIG_KMSUPX4)
/* perform BR0 reset that MPC850 Rev. A can't guarantee */
reg = memctl->memc_br0;
reg &= BR_PS_MSK; /* Clear everything except Port Size bits */
reg |= BR_V; /* then add just the "Bank Valid" bit */
memctl->memc_br0 = reg;
+#endif
/* Map banks 0 (and maybe 1) to the FLASH banks 0 (and 1) at
* preliminary addresses - these have to be modified later
diff --git a/cpu/mpc8xx/start.S b/cpu/mpc8xx/start.S
index 45c902e..352af16 100644
--- a/cpu/mpc8xx/start.S
+++ b/cpu/mpc8xx/start.S
@@ -142,7 +142,8 @@ boot_warm:
lis r3, IDC_DISABLE at h /* Disable data cache */
mtspr DC_CST, r3
-#if !(defined(CONFIG_IP860) || defined(CONFIG_PCU_E) || defined (CONFIG_FLAGADM))
+#if !(defined(CONFIG_IP860) || defined(CONFIG_PCU_E) || \
+ defined (CONFIG_FLAGADM) || defined(CONFIG_KMSUPX4))
/* On IP860 and PCU E,
* we cannot enable IC yet
*/
diff --git a/drivers/i2c/soft_i2c.c b/drivers/i2c/soft_i2c.c
index da6cec1..f273c67 100644
--- a/drivers/i2c/soft_i2c.c
+++ b/drivers/i2c/soft_i2c.c
@@ -43,6 +43,9 @@
#ifdef CONFIG_MPC866 /* only valid for MPC866 */
#include <asm/io.h>
#endif
+#ifdef CONFIG_MPC852T /* only valid for MPC852T */
+#include <asm/io.h>
+#endif
#include <i2c.h>
/* #define DEBUG_I2C */
diff --git a/include/commproc.h b/include/commproc.h
index 12decfe..9d28abc 100644
--- a/include/commproc.h
+++ b/include/commproc.h
@@ -1122,11 +1122,11 @@ typedef struct scc_enet {
#define SICR_ENET_CLKRT ((uint)0x0000003d)
#endif /* CONFIG_MBX */
-/*** MGSUVD *********************************************************/
+/*** KM8XX *********************************************************/
-/* The MGSUVD Service Module uses SCC3 for Ethernet */
+/* The KM8XX Service Module uses SCC3 for Ethernet */
-#ifdef CONFIG_MGSUVD
+#ifdef CONFIG_KM8XX
#define PROFF_ENET PROFF_SCC3 /* Ethernet on SCC3 */
#define CPM_CR_ENET CPM_CR_CH_SCC3
#define SCC_ENET 2
@@ -1145,7 +1145,7 @@ typedef struct scc_enet {
*/
#define SICR_ENET_MASK ((uint)0x00FF0000)
#define SICR_ENET_CLKRT ((uint)0x00250000)
-#endif /* CONFIG_MGSUVD */
+#endif /* CONFIG_KM8XX */
/*** MHPC ********************************************************/
diff --git a/include/configs/km8xx.h b/include/configs/km8xx.h
index 1cb7756..344e1ad 100644
--- a/include/configs/km8xx.h
+++ b/include/configs/km8xx.h
@@ -32,12 +32,15 @@
* High Level Configuration Options
* (easy to change)
*/
-
-#define CONFIG_MPC866 1 /* This is a MPC866 CPU */
+#define CONFIG_KM8XX 1 /* on a km8xx board */
/* 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 */
@@ -59,7 +62,16 @@
#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 \
@@ -67,9 +79,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 \
@@ -159,7 +169,11 @@
* 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
@@ -181,7 +195,11 @@
* 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
@@ -223,7 +241,11 @@
#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
/*
@@ -238,8 +260,13 @@
/* 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
@@ -298,15 +325,14 @@
/* 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
index 0000000..f8f5c58
--- /dev/null
+++ b/include/configs/kmsupx4.h
@@ -0,0 +1,38 @@
+/*
+ * (C) Copyright 2009
+ * Heiko Schocher, DENX Software Engineering, hs at 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"
+
+#endif /* __CONFIG_H */
diff --git a/include/configs/mgsuvd.h b/include/configs/mgsuvd.h
index 960d6c7..1618f7d 100644
--- a/include/configs/mgsuvd.h
+++ b/include/configs/mgsuvd.h
@@ -28,6 +28,7 @@
#ifndef __CONFIG_H
#define __CONFIG_H
+#define CONFIG_MPC866 1 /* This is a MPC866 CPU */
#define CONFIG_MGSUVD 1 /* ...on a mgsuvd board */
#define CONFIG_HOSTNAME mgsuvd
diff --git a/lib_ppc/board.c b/lib_ppc/board.c
index 6d29303..da54c92 100644
--- a/lib_ppc/board.c
+++ b/lib_ppc/board.c
@@ -737,7 +737,8 @@ void board_init_r (gd_t *id, ulong dest_addr)
WATCHDOG_RESET();
#if defined(CONFIG_IP860) || defined(CONFIG_PCU_E) || \
- defined (CONFIG_FLAGADM) || defined(CONFIG_MPC83XX)
+ defined (CONFIG_FLAGADM) || defined(CONFIG_MPC83XX) || \
+ defined (CONFIG_KMSUPX4)
icache_enable (); /* it's time to enable the instruction cache */
#endif
--
1.6.0.6
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
next reply other threads:[~2009-03-11 8:04 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-03-11 8:04 Heiko Schocher [this message]
2009-03-11 11:40 ` [U-Boot] [PATCH 3/3] 8xx: add support for new keymile kmsupx4 board Wolfgang Denk
2009-03-11 12:37 ` Heiko Schocher
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=49B770A2.9020302@denx.de \
--to=hs@denx.de \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.