summaryrefslogtreecommitdiff
path: root/board/intercontrol/digsy_mtc/digsy_mtc.c
diff options
context:
space:
mode:
authorAnatolij Gustschin <agust@denx.de>2011-12-07 06:05:55 +0000
committerWolfgang Denk <wd@denx.de>2011-12-12 08:17:05 +0100
commit02ab0970b3ae7b2d535a1231ad259e3114d09772 (patch)
tree7917eae245a8871c19e8af7367f57239e5215ce0 /board/intercontrol/digsy_mtc/digsy_mtc.c
parentb2eb7d9bc6032e16b7dd898f7c0ea654f63b61db (diff)
mpc5200: digsy_mtc: Fix extension board detection
Switch to extension board detection using pci_find_device() instead of detecting by i2c access to EEPROM device on extension board. This is a cleaner detection method since EEPROM addresses can be different on different board revisions. This also avoids "i2c_read: failed to address chip" error messages in the boot log on boards without extension board which may confuse users. Signed-off-by: Anatolij Gustschin <agust@denx.de>
Diffstat (limited to 'board/intercontrol/digsy_mtc/digsy_mtc.c')
-rw-r--r--board/intercontrol/digsy_mtc/digsy_mtc.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/board/intercontrol/digsy_mtc/digsy_mtc.c b/board/intercontrol/digsy_mtc/digsy_mtc.c
index 4d6b33d9aa..4aa56b22ef 100644
--- a/board/intercontrol/digsy_mtc/digsy_mtc.c
+++ b/board/intercontrol/digsy_mtc/digsy_mtc.c
@@ -49,6 +49,7 @@
#include <libfdt.h>
#include <fdt_support.h>
#include <i2c.h>
+#include <mb862xx.h>
DECLARE_GLOBAL_DATA_PTR;
@@ -226,11 +227,6 @@ static void exbo_hw_init(void)
struct mpc5xxx_gpio *gpio = (struct mpc5xxx_gpio *)MPC5XXX_GPIO;
struct mpc5xxx_wu_gpio *wu_gpio =
(struct mpc5xxx_wu_gpio *)MPC5XXX_WU_GPIO;
- unsigned char val;
-
- /* 1st, check if extension board is present */
- if (i2c_read(CONFIG_SYS_EXBO_EE_I2C_ADDRESS, 0, 1, &val, 1))
- return;
/* configure IrDA pins (PSC6 port) as gpios */
gpio->port_config &= 0xFF8FFFFF;
@@ -285,8 +281,6 @@ int board_early_init_r(void)
/* enable CS0 */
setbits_be32((void *)MPC5XXX_ADDECR, (1 << 16));
- exbo_hw_init();
-
#if defined(CONFIG_USB_OHCI_NEW) && defined(CONFIG_SYS_USB_OHCI_CPU_INIT)
/* Low level USB init, required for proper kernel operation */
usb_cpu_init();
@@ -326,8 +320,15 @@ void board_get_enetaddr (uchar * enet)
int misc_init_r(void)
{
+ pci_dev_t devbusfn;
uchar enetaddr[6];
+ /* check if graphic extension board is present */
+ devbusfn = pci_find_device(PCI_VENDOR_ID_FUJITSU,
+ PCI_DEVICE_ID_CORAL_PA, 0);
+ if (devbusfn != -1)
+ exbo_hw_init();
+
if (!eth_getenv_enetaddr("ethaddr", enetaddr)) {
board_get_enetaddr(enetaddr);
eth_setenv_enetaddr("ethaddr", enetaddr);