diff --git a/common/cmd_ide.c b/common/cmd_ide.c
index 5bde500..1778b33 100644
--- a/common/cmd_ide.c
+++ b/common/cmd_ide.c
@@ -139,7 +139,7 @@
 /* ------------------------------------------------------------------------- */
 
 #ifdef CONFIG_IDE_LED
-#if !defined(CONFIG_KUP4K) && !defined(CONFIG_BMS2003)
+#if !defined(CONFIG_KUP4K) && !defined(CONFIG_HMI10)
 static void  ide_led   (uchar led, uchar status);
 #else
 extern void  ide_led   (uchar led, uchar status);
@@ -180,7 +180,7 @@
 
 #ifdef CONFIG_ATAPI
 static void	atapi_inquiry(block_dev_desc_t *dev_desc);
-ulong atapi_read (int device, ulong blknr, ulong blkcnt, ulong *buffer);
+ulong atapi_read (int device, lbaint_t blknr, ulong blkcnt, ulong *buffer);
 #endif
 
 
@@ -303,11 +303,15 @@
 
 	if (strcmp(argv[1],"read") == 0) {
 		ulong addr = simple_strtoul(argv[2], NULL, 16);
-		ulong blk  = simple_strtoul(argv[3], NULL, 16);
+#if CFG_64BIT_STRTOUL
+		lbaint_t blk  = simple_strtoull(argv[3], NULL, 16);
+#else
+		lbaint_t blk  = simple_strtoul(argv[3], NULL, 16);
+#endif
 		ulong cnt  = simple_strtoul(argv[4], NULL, 16);
 		ulong n;
 
-		printf ("\nIDE read: device %d block # %ld, count %ld ... ",
+		printf ("\nIDE read: device %d block # %qd, count %ld ... ",
 			curr_device, blk, cnt);
 
 		n = ide_dev_desc[curr_device].block_read (curr_device,
@@ -325,11 +329,15 @@
 		}
 	} else if (strcmp(argv[1],"write") == 0) {
 		ulong addr = simple_strtoul(argv[2], NULL, 16);
-		ulong blk  = simple_strtoul(argv[3], NULL, 16);
+#if CFG_64BIT_STRTOUL
+		lbaint_t blk  = simple_strtoull(argv[3], NULL, 16);
+#else
+		lbaint_t blk  = simple_strtoul(argv[3], NULL, 16);
+#endif
 		ulong cnt  = simple_strtoul(argv[4], NULL, 16);
 		ulong n;
 
-		printf ("\nIDE write: device %d block # %ld, count %ld ... ",
+		printf ("\nIDE write: device %d block # %qd, count %ld ... ",
 			curr_device, blk, cnt);
 
 		n = ide_write (curr_device, blk, cnt, (ulong *)addr);
@@ -607,8 +615,7 @@
 				ide_led ((LED_IDE1 | LED_IDE2), 0); /* LED's off */
 #ifdef CONFIG_AMIGAONEG3SE
 				/* If this is the second bus, the first one was OK */
-				if (bus != 0)
-				{
+				if (bus != 0) {
 				    ide_bus_ok[bus] = 0;
 				    goto skip_bus;
 				}
@@ -838,7 +845,7 @@
 static void
 input_swap_data(int dev, ulong *sect_buf, int words)
 {
-#ifndef CONFIG_BMS2003
+#ifndef CONFIG_HMI10
 	volatile ushort	*pbuf = (ushort *)(ATA_CURR_BASE(dev)+ATA_DATA_REG);
 	ushort	*dbuf = (ushort *)sect_buf;
 
@@ -846,7 +853,7 @@
 		*dbuf++ = ld_le16(pbuf);
 		*dbuf++ = ld_le16(pbuf);
 	}
-#else	/* CONFIG_BMS2003 */
+#else	/* CONFIG_HMI10 */
 	uchar i;
 	volatile uchar *pbuf_even = (uchar *)(ATA_CURR_BASE(dev)+ATA_DATA_EVEN);
 	volatile uchar *pbuf_odd  = (uchar *)(ATA_CURR_BASE(dev)+ATA_DATA_ODD);
@@ -859,7 +866,7 @@
 			dbuf+=1;
 		}
 	}
-#endif	/* CONFIG_BMS2003 */
+#endif	/* CONFIG_HMI10 */
 }
 #endif	/* __LITTLE_ENDIAN || CONFIG_AU1X00 */
 
@@ -868,7 +875,7 @@
 static void
 output_data(int dev, ulong *sect_buf, int words)
 {
-#ifndef CONFIG_BMS2003
+#ifndef CONFIG_HMI10
 	ushort	*dbuf;
 	volatile ushort	*pbuf;
 
@@ -880,7 +887,7 @@
 		__asm__ volatile ("eieio");
 		*pbuf = *dbuf++;
 	}
-#else	/* CONFIG_BMS2003 */
+#else	/* CONFIG_HMI10 */
 	uchar	*dbuf;
 	volatile uchar	*pbuf_even;
 	volatile uchar	*pbuf_odd;
@@ -898,7 +905,7 @@
 		__asm__ volatile ("eieio");
 		*pbuf_odd = *dbuf++;
 	}
-#endif	/* CONFIG_BMS2003 */
+#endif	/* CONFIG_HMI10 */
 }
 #else	/* ! __PPC__ */
 static void
@@ -912,7 +919,7 @@
 static void
 input_data(int dev, ulong *sect_buf, int words)
 {
-#ifndef CONFIG_BMS2003
+#ifndef CONFIG_HMI10
 	ushort	*dbuf;
 	volatile ushort	*pbuf;
 
@@ -924,7 +931,7 @@
 		__asm__ volatile ("eieio");
 		*dbuf++ = *pbuf;
 	}
-#else	/* CONFIG_BMS2003 */
+#else	/* CONFIG_HMI10 */
 	uchar	*dbuf;
 	volatile uchar	*pbuf_even;
 	volatile uchar	*pbuf_odd;
@@ -942,7 +949,7 @@
 		__asm__ volatile ("eieio");
 		*dbuf++ = *pbuf_odd;
 	}
-#endif	/* CONFIG_BMS2003 */
+#endif	/* CONFIG_HMI10 */
 }
 #else	/* ! __PPC__ */
 static void
@@ -968,8 +975,7 @@
 		__asm__ volatile ("eieio");
 	}
 
-	if (words&1)
-	{
+	if (words&1) {
 	    ushort dummy;
 	    dummy = *pbuf;
 	}
@@ -1023,8 +1029,7 @@
     retries = 0;
 
     /* Warning: This will be tricky to read */
-    while (retries <= 1)
-    {
+    while (retries <= 1) {
 #endif	/* CONFIG_AMIGAONEG3SE */
 
 	/* check signature */
@@ -1042,8 +1047,7 @@
 		 * to become ready
 		 */
 		c = ide_wait (device, ATAPI_TIME_OUT);
-	}
-	else
+	} else
 #endif
 	{
 		/* Start Ident Command
@@ -1133,6 +1137,19 @@
 
 	/* swap shorts */
 	dev_desc->lba = (iop->lba_capacity << 16) | (iop->lba_capacity >> 16);
+
+#if CONFIG_LBA48
+	if (iop->command_set_2 & 0x0400) { /* LBA 48 support */
+		dev_desc->lba48support = 1;
+		dev_desc->lba48 = (unsigned long long)iop->lba48_capacity[0] |
+						  ((unsigned long long)iop->lba48_capacity[1] << 16) |
+						  ((unsigned long long)iop->lba48_capacity[2] << 32) |
+						  ((unsigned long long)iop->lba48_capacity[3] << 48);
+	} else {
+		dev_desc->lba48support = 0;
+		dev_desc->lba48 = 0;
+	}
+#endif /* CONFIG_LBA48 */
 	/* assuming HD */
 	dev_desc->type=DEV_TYPE_HARDDISK;
 	dev_desc->blksz=ATA_BLOCKSIZE;
@@ -1158,13 +1175,20 @@
 
 /* ------------------------------------------------------------------------- */
 
-ulong ide_read (int device, ulong blknr, ulong blkcnt, ulong *buffer)
+ulong ide_read (int device, lbaint_t blknr, ulong blkcnt, ulong *buffer)
 {
 	ulong n = 0;
 	unsigned char c;
 	unsigned char pwrsave=0; /* power save */
+#if CONFIG_LBA48
+	unsigned char lba48 = 0;
 
-	PRINTF ("ide_read dev %d start %lX, blocks %lX buffer at %lX\n",
+	if (blknr & 0x0000fffff0000000) {
+		/* more than 28 bits used, use 48bit mode */
+		lba48 = 1;
+	}
+#endif
+	PRINTF ("ide_read dev %d start %qX, blocks %lX buffer at %lX\n",
 		device, blknr, blkcnt, (ulong)buffer);
 
 	ide_led (DEVICE_LED(device), 1);	/* LED on	*/
@@ -1208,15 +1232,33 @@
 			printf ("IDE read: device %d not ready\n", device);
 			break;
 		}
-
+#if CONFIG_LBA48
+		if (lba48) {
+			/* write high bits */
+			ide_outb (device, ATA_SECT_CNT, 0);
+			ide_outb (device, ATA_LBA_LOW,	(blknr >> 24) & 0xFF);
+			ide_outb (device, ATA_LBA_MID,	(blknr >> 32) & 0xFF);
+			ide_outb (device, ATA_LBA_HIGH, (blknr >> 40) & 0xFF);
+		}
+#endif
 		ide_outb (device, ATA_SECT_CNT, 1);
 		ide_outb (device, ATA_LBA_LOW,  (blknr >>  0) & 0xFF);
 		ide_outb (device, ATA_LBA_MID,  (blknr >>  8) & 0xFF);
 		ide_outb (device, ATA_LBA_HIGH, (blknr >> 16) & 0xFF);
-		ide_outb (device, ATA_DEV_HD,   ATA_LBA		|
-					    ATA_DEVICE(device)	|
-					    ((blknr >> 24) & 0xF) );
-		ide_outb (device, ATA_COMMAND,  ATA_CMD_READ);
+
+#if CONFIG_LBA48
+		if (lba48) {
+			ide_outb (device, ATA_DEV_HD, ATA_LBA | ATA_DEVICE(device) );
+			ide_outb (device, ATA_COMMAND, ATA_CMD_READ_EXT);
+
+		} else
+#endif
+		{
+			ide_outb (device, ATA_DEV_HD,   ATA_LBA		|
+						    ATA_DEVICE(device)	|
+						    ((blknr >> 24) & 0xF) );
+			ide_outb (device, ATA_COMMAND,  ATA_CMD_READ);
+		}
 
 		udelay (50);
 
@@ -1228,8 +1270,13 @@
 		}
 
 		if ((c&(ATA_STAT_DRQ|ATA_STAT_BUSY|ATA_STAT_ERR)) != ATA_STAT_DRQ) {
-			printf ("Error (no IRQ) dev %d blk %ld: status 0x%02x\n",
+#if CFG_64BIT_LBA && CFG_64BIT_VSPRINTF
+			printf ("Error (no IRQ) dev %d blk %qd: status 0x%02x\n",
 				device, blknr, c);
+#else
+			printf ("Error (no IRQ) dev %d blk %ld: status 0x%02x\n",
+				device, (ulong)blknr, c);
+#endif
 			break;
 		}
 
@@ -1248,10 +1295,18 @@
 /* ------------------------------------------------------------------------- */
 
 
-ulong ide_write (int device, ulong blknr, ulong blkcnt, ulong *buffer)
+ulong ide_write (int device, lbaint_t blknr, ulong blkcnt, ulong *buffer)
 {
 	ulong n = 0;
 	unsigned char c;
+#if CONFIG_LBA48
+	unsigned char lba48 = 0;
+
+	if (blknr & 0x0000fffff0000000) {
+		/* more than 28 bits used, use 48bit mode */
+		lba48 = 1;
+	}
+#endif
 
 	ide_led (DEVICE_LED(device), 1);	/* LED on	*/
 
@@ -1267,23 +1322,46 @@
 			printf ("IDE read: device %d not ready\n", device);
 			goto WR_OUT;
 		}
-
+#if CONFIG_LBA48
+		if (lba48) {
+			/* write high bits */
+			ide_outb (device, ATA_SECT_CNT, 0);
+			ide_outb (device, ATA_LBA_LOW,	(blknr >> 24) & 0xFF);
+			ide_outb (device, ATA_LBA_MID,	(blknr >> 32) & 0xFF);
+			ide_outb (device, ATA_LBA_HIGH, (blknr >> 40) & 0xFF);
+		}
+#endif
 		ide_outb (device, ATA_SECT_CNT, 1);
 		ide_outb (device, ATA_LBA_LOW,  (blknr >>  0) & 0xFF);
 		ide_outb (device, ATA_LBA_MID,  (blknr >>  8) & 0xFF);
 		ide_outb (device, ATA_LBA_HIGH, (blknr >> 16) & 0xFF);
-		ide_outb (device, ATA_DEV_HD,   ATA_LBA		|
-					    ATA_DEVICE(device)	|
-					    ((blknr >> 24) & 0xF) );
-		ide_outb (device, ATA_COMMAND,  ATA_CMD_WRITE);
+
+#if CONFIG_LBA48
+		if (lba48) {
+			ide_outb (device, ATA_DEV_HD, ATA_LBA | ATA_DEVICE(device) );
+			ide_outb (device, ATA_COMMAND,	ATA_CMD_WRITE_EXT);
+
+		} else
+#endif
+		{
+			ide_outb (device, ATA_DEV_HD,   ATA_LBA		|
+						    ATA_DEVICE(device)	|
+						    ((blknr >> 24) & 0xF) );
+			ide_outb (device, ATA_COMMAND,  ATA_CMD_WRITE);
+		}
 
 		udelay (50);
 
 		c = ide_wait (device, IDE_TIME_OUT);	/* can't take over 500 ms */
 
 		if ((c&(ATA_STAT_DRQ|ATA_STAT_BUSY|ATA_STAT_ERR)) != ATA_STAT_DRQ) {
-			printf ("Error (no IRQ) dev %d blk %ld: status 0x%02x\n",
+#if CFG_64BIT_LBA && CFG_64BIT_VSPRINTF
+			printf ("Error (no IRQ) dev %d blk %qd: status 0x%02x\n",
 				device, blknr, c);
+#else
+			printf ("Error (no IRQ) dev %d blk %ld: status 0x%02x\n",
+				device, (ulong)blknr, c);
+#endif
 			goto WR_OUT;
 		}
 
@@ -1426,7 +1504,7 @@
 
 /* ------------------------------------------------------------------------- */
 
-#if defined(CONFIG_IDE_LED) && !defined(CONFIG_AMIGAONEG3SE) && !defined(CONFIG_KUP4K) && !defined(CONFIG_BMS2003)
+#if defined(CONFIG_IDE_LED) && !defined(CONFIG_AMIGAONEG3SE) && !defined(CONFIG_KUP4K) && !defined(CONFIG_HMI10)
 
 static	uchar	led_buffer = 0;		/* Buffer for current LED status	*/
 
@@ -1467,7 +1545,7 @@
 static void
 output_data_shorts(int dev, ushort *sect_buf, int shorts)
 {
-#ifndef CONFIG_BMS2003
+#ifndef CONFIG_HMI10
 	ushort	*dbuf;
 	volatile ushort	*pbuf;
 
@@ -1477,7 +1555,7 @@
 		__asm__ volatile ("eieio");
 		*pbuf = *dbuf++;
 	}
-#else	/* CONFIG_BMS2003 */
+#else	/* CONFIG_HMI10 */
 	uchar	*dbuf;
 	volatile uchar	*pbuf_even;
 	volatile uchar	*pbuf_odd;
@@ -1490,13 +1568,13 @@
 		__asm__ volatile ("eieio");
 		*pbuf_odd = *dbuf++;
 	}
-#endif	/* CONFIG_BMS2003 */
+#endif	/* CONFIG_HMI10 */
 }
 
 static void
 input_data_shorts(int dev, ushort *sect_buf, int shorts)
 {
-#ifndef CONFIG_BMS2003
+#ifndef CONFIG_HMI10
 	ushort	*dbuf;
 	volatile ushort	*pbuf;
 
@@ -1506,7 +1584,7 @@
 		__asm__ volatile ("eieio");
 		*dbuf++ = *pbuf;
 	}
-#else	/* CONFIG_BMS2003 */
+#else	/* CONFIG_HMI10 */
 	uchar	*dbuf;
 	volatile uchar	*pbuf_even;
 	volatile uchar	*pbuf_odd;
@@ -1519,7 +1597,7 @@
 		__asm__ volatile ("eieio");
 		*dbuf++ = *pbuf_odd;
 	}
-#endif	/* CONFIG_BMS2003 */
+#endif	/* CONFIG_HMI10 */
 }
 
 #else	/* ! __PPC__ */
@@ -1858,6 +1936,7 @@
 			((unsigned long)iobuf[5]<<16) +
 			((unsigned long)iobuf[6]<< 8) +
 			((unsigned long)iobuf[7]);
+	dev_desc->lba48 = 0; /* ATAPI devices cannot use 48bit addressing (ATA/ATAPI v7) */
 	return;
 }
 
@@ -1871,7 +1950,7 @@
 #define ATAPI_READ_BLOCK_SIZE	2048	/* assuming CD part */
 #define ATAPI_READ_MAX_BLOCK ATAPI_READ_MAX_BYTES/ATAPI_READ_BLOCK_SIZE	/* max blocks */
 
-ulong atapi_read (int device, ulong blknr, ulong blkcnt, ulong *buffer)
+ulong atapi_read (int device, lbaint_t blknr, ulong blkcnt, ulong *buffer)
 {
 	ulong n = 0;
 	unsigned char ccb[12]; /* Command descriptor block */
diff --git a/common/cmd_pcmcia.c b/common/cmd_pcmcia.c
index 53d2227..cb4e4c6 100644
--- a/common/cmd_pcmcia.c
+++ b/common/cmd_pcmcia.c
@@ -160,8 +160,8 @@
 }
 #else
 
-#ifdef CONFIG_BMS2003
-# define  BMS2003_FRAM_TIMING	(PCMCIA_SHT(2) | PCMCIA_SST(2) | PCMCIA_SL(4))
+#ifdef CONFIG_HMI10
+# define  HMI10_FRAM_TIMING	(PCMCIA_SHT(2) | PCMCIA_SST(2) | PCMCIA_SL(4))
 #endif
 #if defined(CONFIG_LWMON) || defined(CONFIG_NSCU)
 # define  CFG_PCMCIA_TIMING	(PCMCIA_SHT(9) | PCMCIA_SST(3) | PCMCIA_SL(12))
@@ -200,14 +200,14 @@
 		switch (i) {
 #ifdef CONFIG_IDE_8xx_PCCARD
 		case 4:
-#ifdef CONFIG_BMS2003
+#ifdef CONFIG_HMI10
 		    {	/* map FRAM area */
 			win->or = (	PCMCIA_BSIZE_256K
 				|	PCMCIA_PPS_8
 				|	PCMCIA_PRS_ATTR
 				|	slotbit
 				|	PCMCIA_PV
-				|	BMS2003_FRAM_TIMING );
+				|	HMI10_FRAM_TIMING );
 			break;
 		    }
 #endif
@@ -241,7 +241,7 @@
 			break;
 		    }
 #endif	/* CONFIG_IDE_8xx_PCCARD */
-#ifdef CONFIG_BMS2003
+#ifdef CONFIG_HMI10
 		case 3: {	/* map I/O window for 4xUART data/ctrl */
 			win->br += 0x40000;
 			win->or = (	PCMCIA_BSIZE_256K
@@ -252,7 +252,7 @@
 				|	CFG_PCMCIA_TIMING );
 			break;
 		    }
-#endif /* CONFIG_BMS2003 */
+#endif /* CONFIG_HMI10 */
 		default:	/* set to not valid */
 			win->or = 0;
 			break;
@@ -636,7 +636,7 @@
 	PCMCIA_PGCRX(slot) = reg;
 	udelay(500);
 
-#ifndef CONFIG_BMS2003
+#ifndef CONFIG_HMI10
 #ifndef CONFIG_NSCU
 	/*
 	 * Configure Port C pins for
@@ -648,7 +648,7 @@
 
 	immap->im_ioport.iop_pcdat &= ~(0x0002 | 0x0004);
 #endif
-#else	/* CONFIG_BMS2003 */
+#else	/* CONFIG_HMI10 */
 	/*
 	 * Configure Port B  pins for
 	 * 5 Volts Enable and 3 Volts enable
@@ -657,7 +657,7 @@
 
 	/* remove all power */
 	immap->im_cpm.cp_pbdat |= 0x00000300;
-#endif	/* CONFIG_BMS2003 */
+#endif	/* CONFIG_HMI10 */
 
 	/*
 	 * Make sure there is a card in the slot, then configure the interface.
@@ -666,11 +666,11 @@
 	debug ("[%d] %s: PIPR(%p)=0x%x\n",
 		__LINE__,__FUNCTION__,
 		&(pcmp->pcmc_pipr),pcmp->pcmc_pipr);
-#ifndef CONFIG_BMS2003
+#ifndef CONFIG_HMI10
 	if (pcmp->pcmc_pipr & (0x18000000 >> (slot << 4))) {
 #else
 	if (pcmp->pcmc_pipr & (0x10000000 >> (slot << 4))) {
-#endif	/* CONFIG_BMS2003 */
+#endif	/* CONFIG_HMI10 */
 		printf ("   No Card found\n");
 		return (1);
 	}
@@ -686,25 +686,25 @@
 		(reg&PCMCIA_VS2(slot))?"n":"ff");
 #ifndef CONFIG_NSCU
 	if ((reg & mask) == mask) {
-#ifndef CONFIG_BMS2003
+#ifndef CONFIG_HMI10
 		immap->im_ioport.iop_pcdat |= 0x0004;
 #else
 		immap->im_cpm.cp_pbdat &= ~(0x0000100);
-#endif	/* CONFIG_BMS2003 */
+#endif	/* CONFIG_HMI10 */
 		puts (" 5.0V card found: ");
 	} else {
-#ifndef CONFIG_BMS2003
+#ifndef CONFIG_HMI10
 		immap->im_ioport.iop_pcdat |= 0x0002;
 #else
 		immap->im_cpm.cp_pbdat &= ~(0x0000200);
-#endif	/* CONFIG_BMS2003 */
+#endif	/* CONFIG_HMI10 */
 		puts (" 3.3V card found: ");
 	}
-#ifndef CONFIG_BMS2003
+#ifndef CONFIG_HMI10
 	immap->im_ioport.iop_pcdir |= (0x0002 | 0x0004);
 #else
 	immap->im_cpm.cp_pbdir |= 0x00000300;
-#endif	/* CONFIG_BMS2003 */
+#endif	/* CONFIG_HMI10 */
 #else
 	if ((reg & mask) == mask) {
 		puts (" 5.0V card found: ");
@@ -749,14 +749,14 @@
 	immap = (immap_t *)CFG_IMMR;
 	pcmp = (pcmconf8xx_t *)(&(((immap_t *)CFG_IMMR)->im_pcmcia));
 
-#ifndef CONFIG_BMS2003
+#ifndef CONFIG_HMI10
 #ifndef CONFIG_NSCU
 	/* remove all power */
 	immap->im_ioport.iop_pcdat &= ~(0x0002 | 0x0004);
 #endif
-#else	/* CONFIG_BMS2003 */
+#else	/* CONFIG_HMI10 */
 	immap->im_cpm.cp_pbdat |= 0x00000300;
-#endif	/* CONFIG_BMS2003 */
+#endif	/* CONFIG_HMI10 */
 
 	debug ("Disable PCMCIA buffers and assert RESET\n");
 	reg  = 0;
@@ -806,7 +806,7 @@
 	PCMCIA_PGCRX(slot) = reg;
 	udelay(500);
 
-#ifndef CONFIG_BMS2003
+#ifndef CONFIG_HMI10
 	/*
 	 * Configure Port C pins for
 	 * 5 Volts Enable and 3 Volts enable,
@@ -824,7 +824,7 @@
 	case 50: reg |= 0x0004;	break;
 	default: 		goto done;
 	}
-#else	/* CONFIG_BMS2003 */
+#else	/* CONFIG_HMI10 */
 	/*
 	 * Configure Port B pins for
 	 * 5 Volts Enable and 3 Volts enable,
@@ -843,7 +843,7 @@
 		case 50: reg |= 0x00000100;	break;
 		default:			goto done;
 }
-#endif	/* CONFIG_BMS2003 */
+#endif	/* CONFIG_HMI10 */
 
 	/* Checking supported voltages */
 
@@ -851,21 +851,21 @@
 		pcmp->pcmc_pipr,
 		(pcmp->pcmc_pipr & 0x00008000) ? "only 5 V" : "can do 3.3V");
 
-#ifndef CONFIG_BMS2003
+#ifndef CONFIG_HMI10
 	immap->im_ioport.iop_pcdat |= reg;
 	immap->im_ioport.iop_pcdir |= (0x0002 | 0x0004);
 #else
 	immap->im_cpm.cp_pbdat &= !reg;
 	immap->im_cpm.cp_pbdir |= 0x00000300;
-#endif	/* CONFIG_BMS2003 */
+#endif	/* CONFIG_HMI10 */
 	if (reg) {
-#ifndef CONFIG_BMS2003
+#ifndef CONFIG_HMI10
 		debug ("PCMCIA powered at %sV\n",
 			(reg&0x0004) ? "5.0" : "3.3");
 #else
 		debug ("PCMCIA powered at %sV\n",
 			(reg&0x00000200) ? "5.0" : "3.3");
-#endif	/* CONFIG_BMS2003 */
+#endif	/* CONFIG_HMI10 */
 	} else {
 		debug ("PCMCIA powered down\n");
 	}
@@ -1850,11 +1850,11 @@
 	debug ("[%d] %s: PIPR(%p)=0x%x\n",
 		__LINE__,__FUNCTION__,
 		&(pcmp->pcmc_pipr),pcmp->pcmc_pipr);
-#ifndef CONFIG_BMS2003
+#ifndef CONFIG_HMI10
 	if (pcmp->pcmc_pipr & (0x18000000 >> (slot << 4))) {
 #else
 	if (pcmp->pcmc_pipr & (0x10000000 >> (slot << 4))) {
-#endif	/* CONFIG_BMS2003 */
+#endif	/* CONFIG_HMI10 */
 		printf ("   No Card found\n");
 		return (1);
 	}
diff --git a/common/env_flash.c b/common/env_flash.c
index af99880..079f84d 100644
--- a/common/env_flash.c
+++ b/common/env_flash.c
@@ -207,21 +207,21 @@
 	debug (" %08lX ... %08lX ...",
 		(ulong)&(flash_addr_new->data),
 		sizeof(env_ptr->data)+(ulong)&(flash_addr_new->data));
-	if (flash_write(env_ptr->data,
+	if ((rc = flash_write(env_ptr->data,
 			(ulong)&(flash_addr_new->data),
-			sizeof(env_ptr->data)) ||
+			sizeof(env_ptr->data))) ||
 
-	    flash_write((char *)&(env_ptr->crc),
+	    (rc = flash_write((char *)&(env_ptr->crc),
 			(ulong)&(flash_addr_new->crc),
-			sizeof(env_ptr->crc)) ||
+			sizeof(env_ptr->crc))) ||
 
-	    flash_write((char *)&obsolete_flag,
+	    (rc = flash_write((char *)&obsolete_flag,
 			(ulong)&(flash_addr->flags),
-			sizeof(flash_addr->flags)) ||
+			sizeof(flash_addr->flags))) ||
 
-	    flash_write((char *)&active_flag,
+	    (rc = flash_write((char *)&active_flag,
 			(ulong)&(flash_addr_new->flags),
-			sizeof(flash_addr_new->flags)))
+			sizeof(flash_addr_new->flags))))
 	{
 		flash_perror (rc);
 		goto Done;
