* Add start-up delay to make sure power has stabilized before
  attempting to switch on USB on SX1 board.

* Patch by Josef Wagner, 18 Mar 2004:
  - Add support for MicroSys XM250 board (PXA255)
  - Add support for MicroSys PM828 board (MPC8280)
  - Add support for 32 MB Flash on PM825/826
  - new SDRAM refresh rate for PM825/PM826
  - added support for MicroSys PM520 (MPC5200)
  - replaced Query by Identify command in CPU86/flash.c
    to support 28F160F3B

* Fix wrap around problem with udelay() on ARM920T

* Add support for Macronix flash on TRAB board
diff --git a/cpu/arm920t/interrupts.c b/cpu/arm920t/interrupts.c
index 9ff06c1..521c4f4 100644
--- a/cpu/arm920t/interrupts.c
+++ b/cpu/arm920t/interrupts.c
@@ -235,14 +235,13 @@
 void udelay (unsigned long usec)
 {
 	ulong tmo;
+	ulong start = get_timer(0);
 
 	tmo = usec / 1000;
 	tmo *= (timer_load_val * 100);
 	tmo /= 1000;
 
-	tmo += get_timer (0);
-
-	while (get_timer_masked () < tmo)
+	while ((ulong)(get_timer_masked () - start) < tmo)
 		/*NOP*/;
 }
 
diff --git a/cpu/mpc5xxx/fec.c b/cpu/mpc5xxx/fec.c
index 04e8001..50499e2 100644
--- a/cpu/mpc5xxx/fec.c
+++ b/cpu/mpc5xxx/fec.c
@@ -830,12 +830,14 @@
 	fec->eth = (ethernet_regs *)MPC5XXX_FEC;
 	fec->tbdBase = (FEC_TBD *)FEC_BD_BASE;
 	fec->rbdBase = (FEC_RBD *)(FEC_BD_BASE + FEC_TBD_NUM * sizeof(FEC_TBD));
-#if defined(CONFIG_ICECUBE) || defined(CONFIG_TOP5200)
-#  ifndef CONFIG_FEC_10MBIT
+#if defined(CONFIG_ICECUBE) ||
+    defined(CONFIG_PM520)   ||
+    defined(CONFIG_TOP5200)
+# ifndef CONFIG_FEC_10MBIT
 	fec->xcv_type = MII100;
-#  else
+# else
 	fec->xcv_type = MII10;
-#  endif
+# endif
 #else
 #error fec->xcv_type not initialized.
 #endif
diff --git a/cpu/pxa/i2c.c b/cpu/pxa/i2c.c
index cc2c49c..b6155b1 100644
--- a/cpu/pxa/i2c.c
+++ b/cpu/pxa/i2c.c
@@ -448,13 +448,17 @@
 
 uchar i2c_reg_read (uchar chip, uchar reg)
 {
+	char buf;
+
 	PRINTD(("i2c_reg_read(chip=0x%02x, reg=0x%02x)\n",chip,reg));
-	return 0;
+	i2c_read(chip, reg, 1, &buf, 1);
+	return (buf);
 }
 
 void  i2c_reg_write(uchar chip, uchar reg, uchar val)
 {
 	PRINTD(("i2c_reg_write(chip=0x%02x, reg=0x%02x, val=0x%02x)\n",chip,reg,val));
+	i2c_write(chip, reg, 1, &val, 1);
 }
 
 #endif	/* CONFIG_HARD_I2C */