All of lore.kernel.org
 help / color / mirror / Atom feed
From: Heiko Schocher <hs@denx.de>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 4/5] powerpc: keymile: Add a check for the PIGGY debug board
Date: Wed, 12 Nov 2008 09:49:36 +0100	[thread overview]
Message-ID: <491A98A0.6070107@denx.de> (raw)

Check the presence of the PIGGY on the keymile boards mgcoge,
mgsuvd and kmeter1. If the PIGGY is not present, dont register
this Ethernet device.

Signed-off-by: Heiko Schocher <hs@denx.de>
---
 board/keymile/common/common.c   |   16 ++++++++++++++--
 board/keymile/kmeter1/Makefile  |    6 ++++--
 board/keymile/kmeter1/kmeter1.c |    7 ++++++-
 board/keymile/mgcoge/mgcoge.c   |    9 +++++++--
 board/keymile/mgsuvd/mgsuvd.c   |    8 +++++++-
 cpu/mpc8260/ether_scc.c         |    8 ++++++++
 cpu/mpc8xx/scc.c                |    6 ++++++
 drivers/qe/uec.c                |    7 +++++++
 include/configs/kmeter1.h       |   10 ++++++++++
 include/configs/mgcoge.h        |   11 +++++++++++
 include/configs/mgsuvd.h        |   10 ++++++++++
 include/net.h                   |    4 +++-
 12 files changed, 93 insertions(+), 9 deletions(-)

diff --git a/board/keymile/common/common.c b/board/keymile/common/common.c
index a4cf24c..54c8730 100644
--- a/board/keymile/common/common.c
+++ b/board/keymile/common/common.c
@@ -22,10 +22,14 @@
  */

 #include <common.h>
+#if defined(CONFIG_MGCOGE)
 #include <mpc8260.h>
+#endif
 #include <ioports.h>
 #include <malloc.h>
 #include <hush.h>
+#include <net.h>
+#include <asm/io.h>

 #if defined(CONFIG_OF_BOARD_SETUP) && defined(CONFIG_OF_LIBFDT)
 #include <libfdt.h>
@@ -33,8 +37,6 @@

 #if defined(CONFIG_HARD_I2C) || defined(CONFIG_SOFT_I2C)
 #include <i2c.h>
-#endif
-#include <asm/io.h>

 extern int i2c_soft_read_pin (void);

@@ -495,6 +497,7 @@ void i2c_init_board(void)
 #endif
 }
 #endif
+#endif

 #if defined(CONFIG_OF_BOARD_SETUP) && defined(CONFIG_OF_LIBFDT)
 int fdt_set_node_and_value (void *blob,
@@ -521,3 +524,12 @@ int fdt_set_node_and_value (void *blob,
 	return ret;
 }
 #endif
+
+#if defined(CONFIG_CHECK_ETHERNET_PRESENT)
+int ethernet_present (int index)
+{
+	int	ret;
+	ret = in_8((u8 *)CONFIG_SYS_PIGGY_BASE + CONFIG_SYS_SLOT_ID_OFF) & 0x80;
+	return ret;
+}
+#endif
diff --git a/board/keymile/kmeter1/Makefile b/board/keymile/kmeter1/Makefile
index 88b79f3..12a1518 100644
--- a/board/keymile/kmeter1/Makefile
+++ b/board/keymile/kmeter1/Makefile
@@ -22,12 +22,14 @@
 #

 include $(TOPDIR)/config.mk
+ifneq ($(OBJTREE),$(SRCTREE))
+$(shell mkdir -p $(obj)../common)
+endif

 LIB	= $(obj)lib$(BOARD).a

-COBJS-y += $(BOARD).o
+COBJS	+= $(BOARD).o ../common/common.o

-COBJS	:= $(COBJS-y)
 SRCS	:= $(SOBJS:.o=.S) $(COBJS:.o=.c)
 OBJS	:= $(addprefix $(obj),$(COBJS))
 SOBJS	:= $(addprefix $(obj),$(SOBJS))
diff --git a/board/keymile/kmeter1/kmeter1.c b/board/keymile/kmeter1/kmeter1.c
index f9a59a6..03f5dda 100644
--- a/board/keymile/kmeter1/kmeter1.c
+++ b/board/keymile/kmeter1/kmeter1.c
@@ -141,7 +141,12 @@ phys_size_t initdram (int board_type)

 int checkboard (void)
 {
-	puts ("Board: Keymile kmeter1\n");
+	puts ("Board: Keymile kmeter1");
+#if defined(CONFIG_CHECK_ETHERNET_PRESENT)
+	if (ethernet_present (0))
+		puts (" with PIGGY.");
+#endif
+	puts ("\n");
 	return 0;
 }

diff --git a/board/keymile/mgcoge/mgcoge.c b/board/keymile/mgcoge/mgcoge.c
index 3683417..98a4d43 100644
--- a/board/keymile/mgcoge/mgcoge.c
+++ b/board/keymile/mgcoge/mgcoge.c
@@ -25,6 +25,7 @@
 #include <mpc8260.h>
 #include <ioports.h>
 #include <malloc.h>
+#include <net.h>
 #include <asm/io.h>

 #if defined(CONFIG_OF_BOARD_SETUP) && defined(CONFIG_OF_LIBFDT)
@@ -285,8 +286,12 @@ phys_size_t initdram (int board_type)

 int checkboard(void)
 {
-	puts ("Board: mgcoge\n");
-
+	puts ("Board: Keymile mgcoge");
+#if defined(CONFIG_CHECK_ETHERNET_PRESENT)
+	if (ethernet_present (0))
+		puts (" with PIGGY.");
+#endif
+	puts ("\n");
 	return 0;
 }

diff --git a/board/keymile/mgsuvd/mgsuvd.c b/board/keymile/mgsuvd/mgsuvd.c
index 3726acf..eb4c285 100644
--- a/board/keymile/mgsuvd/mgsuvd.c
+++ b/board/keymile/mgsuvd/mgsuvd.c
@@ -22,6 +22,7 @@
  */
 #include <common.h>
 #include <mpc8xx.h>
+#include <net.h>
 #include <asm/io.h>

 #if defined(CONFIG_OF_BOARD_SETUP) && defined(CONFIG_OF_LIBFDT)
@@ -60,7 +61,12 @@ const uint sdram_table[] =

 int checkboard (void)
 {
-	puts ("Board: Keymile mgsuvd\n");
+	puts ("Board: Keymile mgsuvd");
+#if defined(CONFIG_CHECK_ETHERNET_PRESENT)
+	if (ethernet_present (0))
+		puts (" with PIGGY.");
+#endif
+	puts ("\n");
 	return (0);
 }

diff --git a/cpu/mpc8260/ether_scc.c b/cpu/mpc8260/ether_scc.c
index c65f0e0..a79d56c 100644
--- a/cpu/mpc8260/ether_scc.c
+++ b/cpu/mpc8260/ether_scc.c
@@ -191,6 +191,14 @@ int eth_init(bd_t *bis)
     scc_enet_t *pram_ptr;
     uint dpaddr;

+#if defined(CONFIG_CHECK_ETHERNET_PRESENT)
+	if (ethernet_present (CONFIG_ETHER_INDEX) == 0) {
+		printf("Ethernet index: %d not present.\n",
+		       CONFIG_ETHER_INDEX);
+		return -1;
+	}
+#endif
+
     rxIdx = 0;
     txIdx = 0;

diff --git a/cpu/mpc8xx/scc.c b/cpu/mpc8xx/scc.c
index effb967..4be4d89 100644
--- a/cpu/mpc8xx/scc.c
+++ b/cpu/mpc8xx/scc.c
@@ -74,6 +74,12 @@ int scc_initialize(bd_t *bis)
 {
 	struct eth_device* dev;

+#if defined(CONFIG_CHECK_ETHERNET_PRESENT)
+	if (ethernet_present (0) == 0) {
+		printf("Ethernet not present.\n");
+		return -1;
+	}
+#endif
 	dev = (struct eth_device*) malloc(sizeof *dev);
 	memset(dev, 0, sizeof *dev);

diff --git a/drivers/qe/uec.c b/drivers/qe/uec.c
index ed7ed65..8ae6d0f 100644
--- a/drivers/qe/uec.c
+++ b/drivers/qe/uec.c
@@ -1385,6 +1385,13 @@ int uec_initialize(int index)
 	uec_info_t		*uec_info;
 	int			err;

+#if defined(CONFIG_CHECK_ETHERNET_PRESENT)
+	if (ethernet_present (index) == 0) {
+		printf("Ethernet index: %d not present.\n",
+		       index);
+		return -1;
+	}
+#endif
 	dev = (struct eth_device *)malloc(sizeof(struct eth_device));
 	if (!dev)
 		return 0;
diff --git a/include/configs/kmeter1.h b/include/configs/kmeter1.h
index d0fe6a3..e443086 100644
--- a/include/configs/kmeter1.h
+++ b/include/configs/kmeter1.h
@@ -314,6 +314,16 @@
 #define CONFIG_SYS_LOADS_BAUD_CHANGE	1	/* allow baudrate change */

 /*
+ * How to get access to the slot ID.  Put this here to make it easy
+ * to modify in a centralized location.  This is used in the HDLC
+ * driver to set the MAC.
+*/
+#define CONFIG_CHECK_ETHERNET_PRESENT	1
+#define CONFIG_SYS_SLOT_ID_BASE		CONFIG_SYS_PIGGY_BASE
+#define CONFIG_SYS_SLOT_ID_OFF		(0x07)	/* register offset */
+#define CONFIG_SYS_SLOT_ID_MASK		(0x3f)	/* mask for slot ID bits */
+
+/*
  * BOOTP options
  */
 #define CONFIG_BOOTP_BOOTFILESIZE
diff --git a/include/configs/mgcoge.h b/include/configs/mgcoge.h
index dc9b311..bfac3b0 100644
--- a/include/configs/mgcoge.h
+++ b/include/configs/mgcoge.h
@@ -400,4 +400,15 @@
 #define OF_TBCLK		(bd->bi_busfreq / 4)
 #define OF_STDOUT_PATH		"/soc/cpm/serial at 11a90"

+/*
+ * How to get access to the slot ID.  Put this here to make it easy
+ * to modify in a centralized location.  This is used in the HDLC
+ * driver to set the MAC.
+*/
+#define CONFIG_CHECK_ETHERNET_PRESENT	1
+#define CONFIG_SYS_SLOT_ID_BASE		CONFIG_SYS_PIGGY_BASE
+#define CONFIG_SYS_SLOT_ID_OFF		(0x07)	/* register offset */
+#define CONFIG_SYS_SLOT_ID_MASK		(0x3f)	/* mask for slot ID bits */
+
+
 #endif /* __CONFIG_H */
diff --git a/include/configs/mgsuvd.h b/include/configs/mgsuvd.h
index fca2e55..0bd2f40 100644
--- a/include/configs/mgsuvd.h
+++ b/include/configs/mgsuvd.h
@@ -211,6 +211,16 @@
 #define CONFIG_ENV_OFFSET_REDUND	(CONFIG_ENV_OFFSET+CONFIG_ENV_SECT_SIZE)
 #define CONFIG_ENV_SIZE_REDUND	(CONFIG_ENV_SIZE)

+/*
+ * How to get access to the slot ID.  Put this here to make it easy
+ * to modify in a centralized location.  This is used in the HDLC
+ * driver to set the MAC.
+*/
+#define CONFIG_CHECK_ETHERNET_PRESENT	1
+#define CONFIG_SYS_SLOT_ID_BASE		CONFIG_SYS_PIGGY_BASE
+#define CONFIG_SYS_SLOT_ID_OFF		(0x07)	/* register offset */
+#define CONFIG_SYS_SLOT_ID_MASK		(0x3f)	/* mask for slot ID bits */
+
 /*-----------------------------------------------------------------------
  * Cache Configuration
  */
diff --git a/include/net.h b/include/net.h
index a5a256b..112dd7b 100644
--- a/include/net.h
+++ b/include/net.h
@@ -489,6 +489,8 @@ extern ushort getenv_VLAN(char *);
 /* copy a filename (allow for "..." notation, limit length) */
 extern void	copy_filename (char *dst, char *src, int size);

-/**********************************************************************/
+#if defined(CONFIG_CHECK_ETHERNET_PRESENT)
+extern int ethernet_present (int index);
+#endif

 #endif /* __NET_H__ */
-- 
1.5.6.1

-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany

             reply	other threads:[~2008-11-12  8:49 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-11-12  8:49 Heiko Schocher [this message]
2008-11-12 17:43 ` [U-Boot] [PATCH 4/5] powerpc: keymile: Add a check for the PIGGY debug board Ben Warren
2008-11-13  7:43   ` Heiko Schocher
2008-11-13 17:30     ` Ben Warren
2008-11-17  8:13       ` Heiko Schocher
2008-11-19 12:35       ` Gary Jennejohn
2008-11-19 13:03         ` Heiko Schocher
2008-11-19 18:14           ` Gary Jennejohn
2008-11-19 17:44         ` Ben Warren

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=491A98A0.6070107@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.