Merge branch 'next' of ../next

* 'next' of ../next:
  mkenvimage: Add version info switch (-V)
  mkenvimage: Fix getopt() error handling
  mkenvimage: Fix some typos
  phy: add Micrel KS8721BL phy definition
  net: introduce per device index
  mvgbe: remove setting of ethaddr within the driver
  x86: Add support for specifying an initrd with the zboot command
  x86: Refactor the zboot innards so they can be reused with a vboot image
  x86: Add infrastructure to extract an e820 table from the coreboot tables
  x86: Add support for booting Linux using the 32 bit boot protocol
  x86: Clean up the x86 zimage code in preparation to extend it
  x86: Import code from coreboot's libpayload to parse the coreboot table
  x86: Initial commit for running as a coreboot payload
  CHECKPATCH: ./board/esd/hh405/logo_320_240_8bpp.c
  CHECKPATCH: ./board/esd/hh405/logo_1024_768_8bpp.c
  CHECKPATCH: ./board/esd/hh405/logo_320_240_4bpp.c
  CHECKPATCH: ./board/esd/hh405/logo_640_480_24bpp.c
  CHECKPATCH: ./board/esd/apc405/logo_640_480_24bpp.c
  CHECKPATCH: ./board/esd/voh405/logo_320_240_4bpp.c
  CHECKPATCH: ./board/esd/voh405/logo_640_480_24bpp.c
  CHECKPATCH: ./board/esd/hh405/fpgadata.c
  CHECKPATCH: ./board/esd/pci405/fpgadata.c
  CHECKPATCH: ./board/esd/tasreg/fpgadata.c
  CHECKPATCH: ./board/esd/apc405/fpgadata.c
  CHECKPATCH: ./board/esd/voh405/fpgadata.c
  CHECKPATCH: ./board/esd/ash405/fpgadata.c
  CHECKPATCH: ./board/esd/dasa_sim/fpgadata.c
  CHECKPATCH: ./board/esd/ar405/fpgadata_xl30.c
  CHECKPATCH: ./board/esd/ar405/fpgadata.c
  CHECKPATCH: ./board/esd/plu405/fpgadata.c
  CHECKPATCH: ./board/esd/wuh405/fpgadata.c
  CHECKPATCH: ./board/esd/cpci405/fpgadata_cpci405.c
  CHECKPATCH: ./board/esd/cpci405/fpgadata_cpci405ab.c
  CHECKPATCH: ./board/esd/cpci405/fpgadata_cpci4052.c
  CHECKPATCH: ./board/esd/canbt/fpgadata.c
  CHECKPATCH: ./board/esd/du405/fpgadata.c
  CHECKPATCH: ./board/esd/cpciiser4/fpgadata.c
  CHECKPATCH: ./board/dave/PPChameleonEVB/fpgadata.c
  avr32:mmu.c: fix printf() length modifier
  fat.c: fix printf() length modifier
  cmd_sf.c: fix printf() length modifier
  Make printf and vprintf safe from buffer overruns
  vsprintf: Move function documentation into header file
  Add safe vsnprintf and snprintf library functions
  Move vsprintf functions into their own header

Conflicts:
	tools/mkenvimage.c

Signed-off-by: Wolfgang Denk <wd@denx.de>
diff --git a/Makefile b/Makefile
index 5de7915..0438f1e 100644
--- a/Makefile
+++ b/Makefile
@@ -24,7 +24,7 @@
 VERSION = 2011
 PATCHLEVEL = 12
 SUBLEVEL =
-EXTRAVERSION = -rc1
+EXTRAVERSION =
 ifneq "$(SUBLEVEL)" ""
 U_BOOT_VERSION = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
 else
@@ -643,7 +643,7 @@
 
 sinclude $(obj).boards.depend
 $(obj).boards.depend:	boards.cfg
-	awk '(NF && $$1 !~ /^#/) { print $$1 ": " $$1 "_config; $$(MAKE)" }' $< > $@
+	@awk '(NF && $$1 !~ /^#/) { print $$1 ": " $$1 "_config; $$(MAKE)" }' $< > $@
 
 #
 # Functions to generate common board directory names
diff --git a/arch/arm/cpu/arm920t/s3c24x0/Makefile b/arch/arm/cpu/arm920t/s3c24x0/Makefile
index bd53724..0029700 100644
--- a/arch/arm/cpu/arm920t/s3c24x0/Makefile
+++ b/arch/arm/cpu/arm920t/s3c24x0/Makefile
@@ -26,6 +26,7 @@
 LIB	= $(obj)lib$(SOC).o
 
 COBJS-$(CONFIG_USE_IRQ) += interrupts.o
+COBJS-$(CONFIG_DISPLAY_CPUINFO)	+= cpu_info.o
 COBJS-y	+= speed.o
 COBJS-y	+= timer.o
 COBJS-y	+= usb.o
diff --git a/arch/arm/cpu/arm920t/s3c24x0/cpu_info.c b/arch/arm/cpu/arm920t/s3c24x0/cpu_info.c
new file mode 100644
index 0000000..14c5c6a
--- /dev/null
+++ b/arch/arm/cpu/arm920t/s3c24x0/cpu_info.c
@@ -0,0 +1,54 @@
+/*
+ * (C) Copyright 2010
+ * David Mueller <d.mueller@elsoft.ch>
+ *
+ * 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
+ */
+
+#include <common.h>
+#include <asm/io.h>
+#include <asm/arch/s3c24x0_cpu.h>
+
+typedef ulong (*getfreq)(void);
+
+static const getfreq freq_f[] = {
+	get_FCLK,
+	get_HCLK,
+	get_PCLK,
+};
+
+static const char freq_c[] = { 'F', 'H', 'P' };
+
+int print_cpuinfo(void)
+{
+	int i;
+	char buf[32];
+/* the S3C2400 seems to be lacking a CHIP ID register */
+#ifndef CONFIG_S3C2400
+	ulong cpuid;
+	struct s3c24x0_gpio * const gpio = s3c24x0_get_base_gpio();
+
+	cpuid = readl(&gpio->gstatus1);
+	printf("CPUID: %8lX\n", cpuid);
+#endif
+	for (i = 0; i < ARRAY_SIZE(freq_f); i++)
+		printf("%cCLK: %8s MHz\n", freq_c[i], strmhz(buf, freq_f[i]()));
+
+	return 0;
+}
diff --git a/arch/arm/cpu/arm926ejs/cache.c b/arch/arm/cpu/arm926ejs/cache.c
index 4415642..ee90ab7 100644
--- a/arch/arm/cpu/arm926ejs/cache.c
+++ b/arch/arm/cpu/arm926ejs/cache.c
@@ -38,11 +38,6 @@
 	dcache_noop();
 }
 
-void flush_dcache_all(void)
-{
-	dcache_noop();
-}
-
 void invalidate_dcache_range(unsigned long start, unsigned long stop)
 {
 	dcache_noop();
diff --git a/arch/arm/cpu/arm926ejs/davinci/timer.c b/arch/arm/cpu/arm926ejs/davinci/timer.c
index a06d449..93c9e60 100644
--- a/arch/arm/cpu/arm926ejs/davinci/timer.c
+++ b/arch/arm/cpu/arm926ejs/davinci/timer.c
@@ -108,7 +108,7 @@
  */
 ulong get_tbclk(void)
 {
-	return CONFIG_SYS_HZ;
+	return gd->timer_rate_hz;
 }
 
 #ifdef CONFIG_HW_WATCHDOG
diff --git a/arch/arm/cpu/armv7/start.S b/arch/arm/cpu/armv7/start.S
index 6a77c71..ef08a55 100644
--- a/arch/arm/cpu/armv7/start.S
+++ b/arch/arm/cpu/armv7/start.S
@@ -132,6 +132,7 @@
 	orr	r0, r0, #0xd3
 	msr	cpsr,r0
 
+#if !defined(CONFIG_TEGRA2)
 /*
  * Setup vector:
  * (OMAP4 spl TEXT_BASE is not 32 byte aligned.
@@ -147,6 +148,7 @@
 	ldr	r0, =_start
 	mcr	p15, 0, r0, c12, c0, 0	@Set VBAR
 #endif
+#endif	/* !Tegra2 */
 
 	/* the mask ROM code should have PLL and others stable */
 #ifndef CONFIG_SKIP_LOWLEVEL_INIT
diff --git a/arch/arm/include/asm/arch-davinci/da8xx-fb.h b/arch/arm/include/asm/arch-davinci/da8xx-fb.h
index 6d2327c..a9181d8 100644
--- a/arch/arm/include/asm/arch-davinci/da8xx-fb.h
+++ b/arch/arm/include/asm/arch-davinci/da8xx-fb.h
@@ -123,4 +123,3 @@
 void da8xx_video_init(const struct da8xx_panel *panel, int bits_pixel);
 
 #endif  /* ifndef DA8XX_FB_H */
-
diff --git a/arch/arm/include/asm/arch-omap4/clocks.h b/arch/arm/include/asm/arch-omap4/clocks.h
index c2a9b46..cd304e8 100644
--- a/arch/arm/include/asm/arch-omap4/clocks.h
+++ b/arch/arm/include/asm/arch-omap4/clocks.h
@@ -470,6 +470,47 @@
 
 };
 
+struct omap4_scrm_regs {
+	u32 revision;		/* 0x0000 */
+	u32 pad00[63];
+	u32 clksetuptime;	/* 0x0100 */
+	u32 pmicsetuptime;	/* 0x0104 */
+	u32 pad01[2];
+	u32 altclksrc;		/* 0x0110 */
+	u32 pad02[2];
+	u32 c2cclkm;		/* 0x011c */
+	u32 pad03[56];
+	u32 extclkreq;		/* 0x0200 */
+	u32 accclkreq;		/* 0x0204 */
+	u32 pwrreq;		/* 0x0208 */
+	u32 pad04[1];
+	u32 auxclkreq0;		/* 0x0210 */
+	u32 auxclkreq1;		/* 0x0214 */
+	u32 auxclkreq2;		/* 0x0218 */
+	u32 auxclkreq3;		/* 0x021c */
+	u32 auxclkreq4;		/* 0x0220 */
+	u32 auxclkreq5;		/* 0x0224 */
+	u32 pad05[3];
+	u32 c2cclkreq;		/* 0x0234 */
+	u32 pad06[54];
+	u32 auxclk0;		/* 0x0310 */
+	u32 auxclk1;		/* 0x0314 */
+	u32 auxclk2;		/* 0x0318 */
+	u32 auxclk3;		/* 0x031c */
+	u32 auxclk4;		/* 0x0320 */
+	u32 auxclk5;		/* 0x0324 */
+	u32 pad07[54];
+	u32 rsttime_reg;	/* 0x0400 */
+	u32 pad08[6];
+	u32 c2crstctrl;		/* 0x041c */
+	u32 extpwronrstctrl;	/* 0x0420 */
+	u32 pad09[59];
+	u32 extwarmrstst_reg;	/* 0x0510 */
+	u32 apewarmrstst_reg;	/* 0x0514 */
+	u32 pad10[1];
+	u32 c2cwarmrstst_reg;	/* 0x051C */
+};
+
 /* DPLL register offsets */
 #define CM_CLKMODE_DPLL		0
 #define CM_IDLEST_DPLL		0x4
@@ -652,6 +693,28 @@
 #define TPS62361_BASE_VOLT_MV	500
 #define TPS62361_VSEL0_GPIO	7
 
+/* AUXCLKx reg fields */
+#define AUXCLK_ENABLE_MASK		(1 << 8)
+#define AUXCLK_SRCSELECT_SHIFT		1
+#define AUXCLK_SRCSELECT_MASK		(3 << 1)
+#define AUXCLK_CLKDIV_SHIFT		16
+#define AUXCLK_CLKDIV_MASK		(0xF << 16)
+
+#define AUXCLK_SRCSELECT_SYS_CLK	0
+#define AUXCLK_SRCSELECT_CORE_DPLL	1
+#define AUXCLK_SRCSELECT_PER_DPLL	2
+#define AUXCLK_SRCSELECT_ALTERNATE	3
+
+#define AUXCLK_CLKDIV_2			1
+#define AUXCLK_CLKDIV_16		0xF
+
+/* ALTCLKSRC */
+#define ALTCLKSRC_MODE_MASK		3
+#define ALTCLKSRC_ENABLE_INT_MASK	4
+#define ALTCLKSRC_ENABLE_EXT_MASK	8
+
+#define ALTCLKSRC_MODE_ACTIVE		1
+
 /* Defines for DPLL setup */
 #define DPLL_LOCKED_FREQ_TOLERANCE_0		0
 #define DPLL_LOCKED_FREQ_TOLERANCE_500_KHZ	500
diff --git a/arch/arm/lib/bootm.c b/arch/arm/lib/bootm.c
index 802e833..afa0093 100644
--- a/arch/arm/lib/bootm.c
+++ b/arch/arm/lib/bootm.c
@@ -206,6 +206,8 @@
 
 	fixup_memory_node(*of_flat_tree);
 
+	fdt_fixup_ethernet(*of_flat_tree);
+
 	fdt_initrd(*of_flat_tree, *initrd_start, *initrd_end, 1);
 
 	announce_and_cleanup();
diff --git a/arch/avr32/cpu/interrupts.c b/arch/avr32/cpu/interrupts.c
index 6681e13..49a00f1 100644
--- a/arch/avr32/cpu/interrupts.c
+++ b/arch/avr32/cpu/interrupts.c
@@ -107,7 +107,7 @@
 	return 0;
 }
 
-void timer_init(void)
+int timer_init(void)
 {
 	extern void timer_interrupt_handler(void);
 	u64 tmp;
@@ -120,8 +120,9 @@
 	tb_factor = (u32)tmp;
 
 	if (set_interrupt_handler(0, &timer_interrupt_handler, 3))
-		return;
+		return -EINVAL;
 
 	/* For all practical purposes, this gives us an overflow interrupt */
 	sysreg_write(COMPARE, 0xffffffff);
+	return 0;
 }
diff --git a/arch/sh/lib/ashrsi3.S b/arch/sh/lib/ashrsi3.S
index 6f3cf46..2d68b27 100644
--- a/arch/sh/lib/ashrsi3.S
+++ b/arch/sh/lib/ashrsi3.S
@@ -56,7 +56,7 @@
 !
 
 	.global	__ashrsi3
-	
+
 	.align	2
 __ashrsi3:
 	mov	#31,r0
diff --git a/board/calao/sbc35_a9g20/sbc35_a9g20.c b/board/calao/sbc35_a9g20/sbc35_a9g20.c
index 4f5cff6..b6c8791 100644
--- a/board/calao/sbc35_a9g20/sbc35_a9g20.c
+++ b/board/calao/sbc35_a9g20/sbc35_a9g20.c
@@ -152,7 +152,6 @@
 	/* Enable Ctrlc */
 	console_init_f();
 
-	gd->bd->bi_arch_number = MACH_TYPE_SBC35_A9G20;
 	/* adress of boot parameters */
 	gd->bd->bi_boot_params = CONFIG_SYS_SDRAM_BASE + 0x100;
 
diff --git a/board/calao/tny_a9260/tny_a9260.c b/board/calao/tny_a9260/tny_a9260.c
index 24de177..31074d0 100644
--- a/board/calao/tny_a9260/tny_a9260.c
+++ b/board/calao/tny_a9260/tny_a9260.c
@@ -86,11 +86,6 @@
 	/* Enable Ctrlc */
 	console_init_f();
 
-#if defined(CONFIG_TNY_A9260)
-	gd->bd->bi_arch_number = MACH_TYPE_TNY_A9260;
-#elif defined(CONFIG_TNY_A9G20)
-	gd->bd->bi_arch_number = MACH_TYPE_TNY_A9G20;
-#endif
 	/* adress of boot parameters */
 	gd->bd->bi_boot_params = CONFIG_SYS_SDRAM_BASE + 0x100;
 
diff --git a/board/denx/m28evk/u-boot.bd b/board/denx/m28evk/u-boot.bd
index 3ce7f92..c60615a 100644
--- a/board/denx/m28evk/u-boot.bd
+++ b/board/denx/m28evk/u-boot.bd
@@ -4,11 +4,11 @@
 }
 
 section (0) {
-        load u_boot_spl > 0x0000;
-        load ivt (entry = 0x0014) > 0x8000;
+	load u_boot_spl > 0x0000;
+	load ivt (entry = 0x0014) > 0x8000;
 	hab call 0x8000;
 
-        load u_boot > 0x40000100;
-        load ivt (entry = 0x40000100) > 0x8000;
+	load u_boot > 0x40000100;
+	load ivt (entry = 0x40000100) > 0x8000;
 	hab call 0x8000;
 }
diff --git a/board/eltec/elppc/misc.c b/board/eltec/elppc/misc.c
index d476cd5..89f1b1d 100644
--- a/board/eltec/elppc/misc.c
+++ b/board/eltec/elppc/misc.c
@@ -116,7 +116,7 @@
 		eerev.etheraddr[5] = 0x4D;
 
 		/* cache config word for ELPPC */
-		*(int *) &eerev.res[0] = 0;
+		memset(&eerev.res[0], 0, 4);
 
 		initSrom = 1;	/* force dialog */
 		copyNv = 1;	/* copy to nvram */
diff --git a/board/esd/cpci750/mv_eth.c b/board/esd/cpci750/mv_eth.c
index 781ad23..001c1ad 100644
--- a/board/esd/cpci750/mv_eth.c
+++ b/board/esd/cpci750/mv_eth.c
@@ -422,7 +422,7 @@
 	ETH_PORT_INFO *ethernet_private;
 	struct mv64360_eth_priv *port_private;
 	unsigned int port_num;
-	u32 port_status, phy_reg_data;
+	u32 phy_reg_data;
 
 	ethernet_private = (ETH_PORT_INFO *) dev->priv;
 	/* ronen - when we update the MAC env params we only update dev->enetaddr
@@ -520,7 +520,7 @@
 	 */
 
 	MV_REG_WRITE (MV64360_ETH_MAXIMUM_TRANSMIT_UNIT (port_num), 0);
-	port_status = MV_REG_READ (MV64360_ETH_PORT_STATUS_REG (port_num));
+	MV_REG_READ (MV64360_ETH_PORT_STATUS_REG (port_num));
 
 	/* Check Link status on phy */
 	eth_port_read_smi_reg (port_num, 1, &phy_reg_data);
@@ -638,15 +638,6 @@
 
 int mv64360_eth_stop (struct eth_device *dev)
 {
-	ETH_PORT_INFO *ethernet_private;
-	struct mv64360_eth_priv *port_private;
-	unsigned int port_num;
-
-	ethernet_private = (ETH_PORT_INFO *) dev->priv;
-	port_private =
-		(struct mv64360_eth_priv *) ethernet_private->port_private;
-	port_num = port_private->port_num;
-
 	/* Disable all gigE address decoder */
 	MV_REG_WRITE (MV64360_ETH_BASE_ADDR_ENABLE_REG, 0x3f);
 	DP (printf ("%s Ethernet stop called ... \n", __FUNCTION__));
@@ -716,7 +707,6 @@
 {
 	ETH_PORT_INFO *ethernet_private;
 	struct mv64360_eth_priv *port_private;
-	unsigned int port_num;
 	PKT_INFO pkt_info;
 	ETH_FUNC_RET_STATUS status;
 	struct net_device_stats *stats;
@@ -725,7 +715,6 @@
 	ethernet_private = (ETH_PORT_INFO *) dev->priv;
 	port_private =
 		(struct mv64360_eth_priv *) ethernet_private->port_private;
-	port_num = port_private->port_num;
 
 	stats = port_private->stats;
 
@@ -801,7 +790,6 @@
 {
 	ETH_PORT_INFO *ethernet_private;
 	struct mv64360_eth_priv *port_private;
-	unsigned int port_num;
 	PKT_INFO pkt_info;
 	struct net_device_stats *stats;
 
@@ -809,7 +797,6 @@
 	ethernet_private = (ETH_PORT_INFO *) dev->priv;
 	port_private =
 		(struct mv64360_eth_priv *) ethernet_private->port_private;
-	port_num = port_private->port_num;
 	stats = port_private->stats;
 
 	while ((eth_port_receive (ethernet_private, ETH_Q0, &pkt_info) ==
@@ -900,12 +887,10 @@
 {
 	ETH_PORT_INFO *ethernet_private;
 	struct mv64360_eth_priv *port_private;
-	unsigned int port_num;
 
 	ethernet_private = (ETH_PORT_INFO *) dev->priv;
 	port_private =
 		(struct mv64360_eth_priv *) ethernet_private->port_private;
-	port_num = port_private->port_num;
 
 	mv64360_eth_update_stat (dev);
 
@@ -927,13 +912,10 @@
 	ETH_PORT_INFO *ethernet_private;
 	struct mv64360_eth_priv *port_private;
 	struct net_device_stats *stats;
-	unsigned int port_num;
-	volatile unsigned int dummy;
 
 	ethernet_private = (ETH_PORT_INFO *) dev->priv;
 	port_private =
 		(struct mv64360_eth_priv *) ethernet_private->port_private;
-	port_num = port_private->port_num;
 	stats = port_private->stats;
 
 	/* These are false updates */
@@ -956,12 +938,12 @@
 	 * But the unsigned long in PowerPC and MIPS are 32bit. So the next read
 	 * is just a dummy read for proper work of the GigE port
 	 */
-	dummy = eth_read_mib_counter (ethernet_private->port_num,
+	(void)eth_read_mib_counter (ethernet_private->port_num,
 				      ETH_MIB_GOOD_OCTETS_RECEIVED_HIGH);
 	stats->tx_bytes += (unsigned long)
 		eth_read_mib_counter (ethernet_private->port_num,
 				      ETH_MIB_GOOD_OCTETS_SENT_LOW);
-	dummy = eth_read_mib_counter (ethernet_private->port_num,
+	(void)eth_read_mib_counter (ethernet_private->port_num,
 				      ETH_MIB_GOOD_OCTETS_SENT_HIGH);
 	stats->rx_errors += (unsigned long)
 		eth_read_mib_counter (ethernet_private->port_num,
@@ -1009,12 +991,10 @@
 	ETH_PORT_INFO *ethernet_private;
 	struct mv64360_eth_priv *port_private;
 	struct net_device_stats *stats;
-	unsigned int port_num;
 
 	ethernet_private = (ETH_PORT_INFO *) dev->priv;
 	port_private =
 		(struct mv64360_eth_priv *) ethernet_private->port_private;
-	port_num = port_private->port_num;
 	stats = port_private->stats;
 
 	/* These are false updates */
@@ -2066,13 +2046,13 @@
 static void eth_clear_mib_counters (ETH_PORT eth_port_num)
 {
 	int i;
-	unsigned int dummy;
 
 	/* Perform dummy reads from MIB counters */
 	for (i = ETH_MIB_GOOD_OCTETS_RECEIVED_LOW; i < ETH_MIB_LATE_COLLISION;
-	     i += 4)
-		dummy = MV_REG_READ ((MV64360_ETH_MIB_COUNTERS_BASE
+	     i += 4) {
+		(void)MV_REG_READ ((MV64360_ETH_MIB_COUNTERS_BASE
 				      (eth_port_num) + i));
+	}
 
 	return;
 }
diff --git a/board/freescale/mx51evk/mx51evk.c b/board/freescale/mx51evk/mx51evk.c
index 13c5941..e43aaf7 100644
--- a/board/freescale/mx51evk/mx51evk.c
+++ b/board/freescale/mx51evk/mx51evk.c
@@ -203,7 +203,7 @@
 	mxc_iomux_set_pad(MX51_PIN_EIM_D21, GPIO_PAD);
 }
 
-void board_ehci_hcd_init(int port)
+int board_ehci_hcd_init(int port)
 {
 	/* Set USBH1_STP to GPIO and toggle it */
 	mxc_request_iomux(MX51_PIN_USBH1_STP, IOMUX_CONFIG_GPIO);
@@ -228,6 +228,7 @@
 	gpio_direction_output(MX51EVK_USBH1_HUB_RST, 0);
 	mdelay(2);
 	gpio_set_value(MX51EVK_USBH1_HUB_RST, 1);
+	return 0;
 }
 #endif
 
diff --git a/board/freescale/mx53loco/mx53loco.c b/board/freescale/mx53loco/mx53loco.c
index 57170ce..ea4d354 100644
--- a/board/freescale/mx53loco/mx53loco.c
+++ b/board/freescale/mx53loco/mx53loco.c
@@ -79,12 +79,13 @@
 }
 
 #ifdef CONFIG_USB_EHCI_MX5
-void board_ehci_hcd_init(int port)
+int board_ehci_hcd_init(int port)
 {
 	/* request VBUS power enable pin, GPIO[8}, gpio7 */
 	mxc_request_iomux(MX53_PIN_ATA_DA_2, IOMUX_CONFIG_ALT1);
 	gpio_direction_output(IOMUX_TO_GPIO(MX53_PIN_ATA_DA_2), 0);
 	gpio_set_value(IOMUX_TO_GPIO(MX53_PIN_ATA_DA_2), 1);
+	return 0;
 }
 #endif
 
diff --git a/board/keymile/scripts/README b/board/keymile/scripts/README
index 7fbcf74..dd935b2 100644
--- a/board/keymile/scripts/README
+++ b/board/keymile/scripts/README
@@ -7,7 +7,7 @@
 run develop : setup environment to configure for rootfs via nfs
 run ramfs   : setup environment to configure for rootfs in ram
 
-Last change: 20.05.2011
+Last change: 24.11.2011
 
 develop-common.txt
 ============================
diff --git a/board/keymile/scripts/develop-common.txt b/board/keymile/scripts/develop-common.txt
index 93e2967..aa3d659 100644
--- a/board/keymile/scripts/develop-common.txt
+++ b/board/keymile/scripts/develop-common.txt
@@ -2,6 +2,7 @@
 bootcmd=run ${subbootcmds}
 configure=km_setboardid && saveenv && reset
 subbootcmds=tftpfdt tftpkernel nfsargs add_default boot
-nfsargs=setenv bootargs root=/dev/nfs rw nfsroot=${serverip}:/opt/eldk/${arch}
+nfsargs=setenv bootargs root=/dev/nfs rw nfsroot=${serverip}:${toolchain}/${arch}
 tftpkernel=tftpboot ${load_addr_r} ${hostname}/uImage
+toolchain=/opt/eldk
 rootfssize=0
diff --git a/board/lubbock/lubbock.c b/board/lubbock/lubbock.c
index 437f944..3527b38 100644
--- a/board/lubbock/lubbock.c
+++ b/board/lubbock/lubbock.c
@@ -28,6 +28,8 @@
 #include <common.h>
 #include <netdev.h>
 #include <asm/arch/pxa.h>
+#include <asm/arch/pxa-regs.h>
+#include <asm/io.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -47,6 +49,10 @@
 	/* adress of boot parameters */
 	gd->bd->bi_boot_params = 0xa0000100;
 
+	/* Configure GPIO6 and GPIO8 as OUT, AF1. */
+	setbits_le32(GPDR0, (1 << 6) | (1 << 8));
+	clrsetbits_le32(GAFR0_L, (3 << 12) | (3 << 16), (1 << 12) | (1 << 16));
+
 	return 0;
 }
 
diff --git a/board/nvidia/ventana/Makefile b/board/nvidia/ventana/Makefile
index 9e5a87f..d5140c8 100644
--- a/board/nvidia/ventana/Makefile
+++ b/board/nvidia/ventana/Makefile
@@ -25,6 +25,7 @@
 include $(TOPDIR)/config.mk
 
 ifneq ($(OBJTREE),$(SRCTREE))
+$(shell mkdir -p $(obj)../seaboard)
 $(shell mkdir -p $(obj)../common)
 endif
 
diff --git a/board/samsung/universal_c210/universal.c b/board/samsung/universal_c210/universal.c
index 8393e4f..d0ff834 100644
--- a/board/samsung/universal_c210/universal.c
+++ b/board/samsung/universal_c210/universal.c
@@ -260,7 +260,7 @@
 #ifdef CONFIG_USB_GADGET
 static int s5pc210_phy_control(int on)
 {
-	int ret;
+	int ret = 0;
 	struct pmic *p = get_pmic();
 
 	if (pmic_probe(p))
diff --git a/board/ti/panda/panda.c b/board/ti/panda/panda.c
index b4271fb..fc8c0b4 100644
--- a/board/ti/panda/panda.c
+++ b/board/ti/panda/panda.c
@@ -24,15 +24,21 @@
 #include <common.h>
 #include <asm/arch/sys_proto.h>
 #include <asm/arch/mmc_host_def.h>
+#include <asm/arch/clocks.h>
+#include <asm/arch/gpio.h>
 
 #include "panda_mux_data.h"
 
+#define PANDA_ULPI_PHY_TYPE_GPIO       182
+
 DECLARE_GLOBAL_DATA_PTR;
 
 const struct omap_sysinfo sysinfo = {
 	"Board: OMAP4 Panda\n"
 };
 
+struct omap4_scrm_regs *const scrm = (struct omap4_scrm_regs *)0x4a30a000;
+
 /**
  * @brief board_init
  *
@@ -62,6 +68,59 @@
  */
 int misc_init_r(void)
 {
+	int phy_type;
+	u32 auxclk, altclksrc;
+
+	/* EHCI is not supported on ES1.0 */
+	if (omap_revision() == OMAP4430_ES1_0)
+		return 0;
+
+	gpio_direction_input(PANDA_ULPI_PHY_TYPE_GPIO);
+	phy_type = gpio_get_value(PANDA_ULPI_PHY_TYPE_GPIO);
+
+	if (phy_type == 1) {
+		/* ULPI PHY supplied by auxclk3 derived from sys_clk */
+		debug("ULPI PHY supplied by auxclk3\n");
+
+		auxclk = readl(&scrm->auxclk3);
+		/* Select sys_clk */
+		auxclk &= ~AUXCLK_SRCSELECT_MASK;
+		auxclk |=  AUXCLK_SRCSELECT_SYS_CLK << AUXCLK_SRCSELECT_SHIFT;
+		/* Set the divisor to 2 */
+		auxclk &= ~AUXCLK_CLKDIV_MASK;
+		auxclk |= AUXCLK_CLKDIV_2 << AUXCLK_CLKDIV_SHIFT;
+		/* Request auxilary clock #3 */
+		auxclk |= AUXCLK_ENABLE_MASK;
+
+		writel(auxclk, &scrm->auxclk3);
+       } else {
+		/* ULPI PHY supplied by auxclk1 derived from PER dpll */
+		debug("ULPI PHY supplied by auxclk1\n");
+
+		auxclk = readl(&scrm->auxclk1);
+		/* Select per DPLL */
+		auxclk &= ~AUXCLK_SRCSELECT_MASK;
+		auxclk |=  AUXCLK_SRCSELECT_PER_DPLL << AUXCLK_SRCSELECT_SHIFT;
+		/* Set the divisor to 16 */
+		auxclk &= ~AUXCLK_CLKDIV_MASK;
+		auxclk |= AUXCLK_CLKDIV_16 << AUXCLK_CLKDIV_SHIFT;
+		/* Request auxilary clock #3 */
+		auxclk |= AUXCLK_ENABLE_MASK;
+
+		writel(auxclk, &scrm->auxclk1);
+	}
+
+	altclksrc = readl(&scrm->altclksrc);
+
+	/* Activate alternate system clock supplier */
+	altclksrc &= ~ALTCLKSRC_MODE_MASK;
+	altclksrc |= ALTCLKSRC_MODE_ACTIVE;
+
+	/* enable clocks */
+	altclksrc |= ALTCLKSRC_ENABLE_INT_MASK | ALTCLKSRC_ENABLE_EXT_MASK;
+
+	writel(altclksrc, &scrm->altclksrc);
+
 	return 0;
 }
 
diff --git a/common/cmd_net.c b/common/cmd_net.c
index f89a24b..89519fa 100644
--- a/common/cmd_net.c
+++ b/common/cmd_net.c
@@ -221,8 +221,11 @@
 
 #ifdef CONFIG_CMD_TFTPPUT
 	case 4:
-		save_addr = strict_strtoul(argv[1], NULL, 16);
-		save_size = strict_strtoul(argv[2], NULL, 16);
+		if (strict_strtoul(argv[1], 16, &save_addr) < 0 ||
+			strict_strtoul(argv[2], 16, &save_size) < 0) {
+			printf("Invalid address/size\n");
+			return cmd_usage(cmdtp);
+		}
 		copy_filename(BootFile, argv[3], sizeof(BootFile));
 		break;
 #endif
diff --git a/common/cmd_nvedit.c b/common/cmd_nvedit.c
index baaa513..63afc82 100644
--- a/common/cmd_nvedit.c
+++ b/common/cmd_nvedit.c
@@ -868,7 +868,7 @@
 			printf("## Warning: Input data exceeds %d bytes"
 				" - truncated\n", MAX_ENV_SIZE);
 		}
-		++size;
+		size += 2;
 		printf("## Info: input data size = %zu = 0x%zX\n", size, size);
 	}
 
diff --git a/common/cmd_pxe.c b/common/cmd_pxe.c
index 9426f5b..7c0cb66 100644
--- a/common/cmd_pxe.c
+++ b/common/cmd_pxe.c
@@ -918,7 +918,7 @@
 {
 	struct token t;
 	char *s = *c;
-	int err;
+	int err = 0;
 
 	get_token(c, &t, L_KEYWORD);
 
diff --git a/doc/README.menu b/doc/README.menu
index 1259c6a..0dad6a2 100644
--- a/doc/README.menu
+++ b/doc/README.menu
@@ -97,7 +97,7 @@
 			printf("failed to add item!");
 			menu_destroy(m);
 			return NULL;
-                }
+		}
 	}
 
 	if (menu_get_choice(m, (void **)&tool) != 1)
diff --git a/doc/README.p3060qds b/doc/README.p3060qds
index 2ed49ca..ec62798 100644
--- a/doc/README.p3060qds
+++ b/doc/README.p3060qds
@@ -43,7 +43,7 @@
  * I2C1_CH0: EEPROM AT24C64(0x50) RCW, AT24C02(0x51) DDR SPD,
 	     AT24C02(0x53) DDR SPD, AT24C02(0x57) SystemID, RTC DS3232(0x68)
  * I2C1_CH1: 1588 RiserCard(0x55), HSLB Testport, TempMon
-             ADT7461(0x4C), SerDesMux DS64MB201(0x51/59/5C/5D)
+	     ADT7461(0x4C), SerDesMux DS64MB201(0x51/59/5C/5D)
  * I2C1_CH2: VDD/GVDD/GIDD ZL6100 (0x21/0x22/0x23/0x24/0x40)
  * I2C1_CH3: OCM CFG AT24C02(0x55), OCM IPL AT24C64(0x56)
  * I2C1_CH4: PCIe SLOT1
@@ -108,4 +108,3 @@
 	tftp 2000000 rootfs.ext2.gz.uboot
 	tftp 3000000 p3060rdb.dtb
 	bootm 1000000 2000000 3000000
-
diff --git a/doc/README.pxe b/doc/README.pxe
index 9026d9c..95cd9b9 100644
--- a/doc/README.pxe
+++ b/doc/README.pxe
@@ -115,50 +115,50 @@
 -------------------------
 Unrecognized commands are ignored.
 
-default <label>     - the label named here is treated as the default and is
-                      the first label 'pxe boot' attempts to boot.
+default <label>	    - the label named here is treated as the default and is
+		      the first label 'pxe boot' attempts to boot.
 
 menu title <string> - sets a title for the menu of labels being displayed.
 
 menu include <path> - use tftp to retrieve the pxe file at <path>, which
-                      is then immediately parsed as if the start of its
-                      contents were the next line in the current file. nesting
-                      of include up to 16 files deep is supported.
+		      is then immediately parsed as if the start of its
+		      contents were the next line in the current file. nesting
+		      of include up to 16 files deep is supported.
 
-prompt <flag>       - if 1, always prompt the user to enter a label to boot
-                      from. if 0, only prompt the user if timeout expires.
+prompt <flag>	    - if 1, always prompt the user to enter a label to boot
+		      from. if 0, only prompt the user if timeout expires.
 
 timeout <num>	    - wait for user input for <num>/10 seconds before
-                      auto-booting a node.
+		      auto-booting a node.
 
-label <name>        - begin a label definition. labels continue until
-                      a command not recognized as a label command is seen,
-                      or EOF is reached.
+label <name>	    - begin a label definition. labels continue until
+		      a command not recognized as a label command is seen,
+		      or EOF is reached.
 
 Supported label commands
 ------------------------
 labels end when a command not recognized as a label command is reached, or EOF.
 
-menu default        - set this label as the default label to boot; this is
-                      the same behavior as the global default command but
-                      specified in a different way
+menu default	    - set this label as the default label to boot; this is
+		      the same behavior as the global default command but
+		      specified in a different way
 
-kernel <path>       - if this label is chosen, use tftp to retrieve the kernel
-                      at <path>. it will be stored at the address indicated in
-                      the kernel_addr_r environment variable, and that address
-                      will be passed to bootm to boot this kernel.
+kernel <path>	    - if this label is chosen, use tftp to retrieve the kernel
+		      at <path>. it will be stored at the address indicated in
+		      the kernel_addr_r environment variable, and that address
+		      will be passed to bootm to boot this kernel.
 
-append <string>     - use <string> as the kernel command line when booting this
-                      label.
+append <string>	    - use <string> as the kernel command line when booting this
+		      label.
 
-initrd <path>       - if this label is chosen, use tftp to retrieve the initrd
-                      at <path>. it will be stored at the address indicated in
-                      the initrd_addr_r environment variable, and that address
-                      will be passed to bootm.
+initrd <path>	    - if this label is chosen, use tftp to retrieve the initrd
+		      at <path>. it will be stored at the address indicated in
+		      the initrd_addr_r environment variable, and that address
+		      will be passed to bootm.
 
 localboot <flag>    - Run the command defined by "localcmd" in the environment.
-                      <flag> is ignored and is only here to match the syntax of
-                      PXELINUX config files.
+		      <flag> is ignored and is only here to match the syntax of
+		      PXELINUX config files.
 
 Example
 -------
@@ -217,7 +217,7 @@
 
 - U-boot's pxe doesn't provide the full menu implementation that PXELINUX
   does, only a simple text based menu using the commands described in
-  this README.  With PXELINUX, it's possible to have a graphical boot
+  this README.	With PXELINUX, it's possible to have a graphical boot
   menu, submenus, passwords, etc. U-boot's pxe could be extended to support
   a more robust menuing system like that of PXELINUX's.
 
diff --git a/doc/README.sh7757lcr b/doc/README.sh7757lcr
index 109f715..37c1a7a 100644
--- a/doc/README.sh7757lcr
+++ b/doc/README.sh7757lcr
@@ -67,11 +67,10 @@
 ============================
 
 1. Copy u-boot image to RAM area.
-2. Probe SPI device. 
-   => sf probe 0 
+2. Probe SPI device.
+   => sf probe 0
    8192 KiB M25P64 at 0:0 is now current device
 3. Erase SPI ROM.
-   => sf erase 0 80000  
+   => sf erase 0 80000
 4. Write u-boot image to SPI ROM.
    => sf write 0x89000000 0 80000
-
diff --git a/doc/mkimage.1 b/doc/mkimage.1
index f27da6b..39652c8 100644
--- a/doc/mkimage.1
+++ b/doc/mkimage.1
@@ -9,13 +9,13 @@
 The
 .B mkimage
 command is used to create images for use with the U-Boot boot loader.
-Thes eimages can contain the linux kernel, device tree blob, root file
+These images can contain the linux kernel, device tree blob, root file
 system image, firmware images etc., either separate or combined.
 
 .B mkimage
 supports two different formats:
 
-The old,
+The old
 .I legacy image
 format concatenates the individual parts (for example, kernel image,
 device tree blob and ramdisk image) and adds a 64 bytes header
@@ -23,9 +23,9 @@
 image type, compression method, entry points, time stamp, checksums,
 etc.
 
-The new,
+The new
 .I FIT (Flattened Image Tree) format
-allows for more flexibility in handling images of various and also
+allows for more flexibility in handling images of various types and also
 enhances integrity protection of images with stronger checksums.
 
 .SH "OPTIONS"
@@ -82,16 +82,16 @@
 .B Create FIT image:
 
 .TP
-.BI "\-D "dtc option"
+.BI "\-D [" "dtc options" "]"
 Provide special options to the device tree compiler that is used to
 create the image.
 
 .TP
-.BI "\-f "fit-image.its"
-Image tree source fine that descbres the structure and contents of the
+.BI "\-f [" "image tree source file" "]"
+Image tree source file that describes the structure and contents of the
 FIT image.
 
-.SH EXMAPLES
+.SH EXAMPLES
 
 List image information:
 .nf
diff --git a/drivers/mmc/pxa_mmc.c b/drivers/mmc/pxa_mmc.c
index 2b58a98..80c4445 100644
--- a/drivers/mmc/pxa_mmc.c
+++ b/drivers/mmc/pxa_mmc.c
@@ -560,11 +560,6 @@
 	/* Reset device interface type */
 	mmc_dev.if_type = IF_TYPE_UNKNOWN;
 
-#if defined(CONFIG_LUBBOCK) || \
-	(defined(CONFIG_GUMSTIX) && !defined(CONFIG_CPU_PXA27X))
-	set_GPIO_mode(GPIO6_MMCCLK_MD);
-	set_GPIO_mode(GPIO8_MMCCS0_MD);
-#endif
 #ifdef CONFIG_CPU_MONAHANS	/* pxa3xx */
 	writel(readl(CKENA) | CKENA_12_MMC0 | CKENA_13_MMC1, CKENA);
 #else	/* pxa2xx */
diff --git a/drivers/net/e1000.c b/drivers/net/e1000.c
index 6b71bd9..e726f39 100644
--- a/drivers/net/e1000.c
+++ b/drivers/net/e1000.c
@@ -1146,7 +1146,7 @@
 		nic->enetaddr[5] ^= 1;
 
 #ifdef CONFIG_E1000_FALLBACK_MAC
-	if ( *(u32*)(nic->enetaddr) == 0 || *(u32*)(nic->enetaddr) == ~0 ) {
+	if (!is_valid_ether_addr(nic->enetaddr)) {
 		unsigned char fb_mac[NODE_ADDRESS_SIZE] = CONFIG_E1000_FALLBACK_MAC;
 
 		memcpy (nic->enetaddr, fb_mac, NODE_ADDRESS_SIZE);
diff --git a/drivers/net/e1000_spi.c b/drivers/net/e1000_spi.c
index 5491780..5f774f4 100644
--- a/drivers/net/e1000_spi.c
+++ b/drivers/net/e1000_spi.c
@@ -1,4 +1,5 @@
 #include "e1000.h"
+#include <linux/compiler.h>
 
 /*-----------------------------------------------------------------------
  * SPI transfer
@@ -112,7 +113,7 @@
 
 void spi_free_slave(struct spi_slave *spi)
 {
-	struct e1000_hw *hw = e1000_hw_from_spi(spi);
+	__maybe_unused struct e1000_hw *hw = e1000_hw_from_spi(spi);
 	E1000_DBG(hw->nic, "EEPROM SPI access released\n");
 }
 
@@ -469,7 +470,7 @@
 static int do_e1000_spi_checksum(cmd_tbl_t *cmdtp, struct e1000_hw *hw,
 		int argc, char * const argv[])
 {
-	uint16_t i, length, checksum, checksum_reg;
+	uint16_t i, length, checksum = 0, checksum_reg;
 	uint16_t *buffer;
 	boolean_t upd;
 
diff --git a/drivers/net/sh_eth.h b/drivers/net/sh_eth.h
index dd6a422..0692f8b 100644
--- a/drivers/net/sh_eth.h
+++ b/drivers/net/sh_eth.h
@@ -435,4 +435,3 @@
 enum FIFO_SIZE_BIT {
 	FIFO_SIZE_T = 0x00000700, FIFO_SIZE_R = 0x00000007,
 };
-
diff --git a/drivers/usb/gadget/pxa27x_udc.c b/drivers/usb/gadget/pxa27x_udc.c
index 0d3a988..4c00081 100644
--- a/drivers/usb/gadget/pxa27x_udc.c
+++ b/drivers/usb/gadget/pxa27x_udc.c
@@ -195,12 +195,12 @@
 
 	for (i = 0; i < w; i++) {
 		data32[ep0_urb->actual_length / 4 + i] = readl(UDCDN(0));
-//		ep0_urb->actual_length += 4;
+		/* ep0_urb->actual_length += 4; */
 	}
 
 	for (i = 0; i < b; i++) {
 		data8[ep0_urb->actual_length + w * 4 + i] = readb(UDCDN(0));
-//		ep0_urb->actual_length++;
+		/* ep0_urb->actual_length++; */
 	}
 
 	ep0_urb->actual_length += n;
@@ -599,7 +599,6 @@
 
 	writel(tmp, UDCCN(ep_num));
 
-	//usbdbg
 	usbdbg("UDCCR%c = %x", 'A' + ep_num-1, readl(UDCCN(ep_num)));
 	usbdbg("UDCCSR%c = %x", 'A' + ep_num-1, readl(UDCCSN(ep_num)));
 }
diff --git a/drivers/usb/gadget/s3c_udc_otg.c b/drivers/usb/gadget/s3c_udc_otg.c
index 901fac9..1050a98 100644
--- a/drivers/usb/gadget/s3c_udc_otg.c
+++ b/drivers/usb/gadget/s3c_udc_otg.c
@@ -47,7 +47,6 @@
 #include <asm/arch/gpio.h>
 
 #include "regs-otg.h"
-#include <usb/s3c_udc.h>
 #include <usb/lin_gadget_compat.h>
 
 /***********************************************************/
@@ -73,8 +72,6 @@
 #define EP0_CON		0
 #define EP_MASK		0xF
 
-#if defined(DEBUG_S3C_UDC_SETUP) || defined(DEBUG_S3C_UDC_ISR)	  \
-	|| defined(DEBUG_S3C_UDC_OUT_EP)
 static char *state_names[] = {
 	"WAIT_FOR_SETUP",
 	"DATA_STATE_XMIT",
@@ -86,7 +83,6 @@
 	"WAIT_FOR_IN_COMPLETE",
 	"WAIT_FOR_NULL_COMPLETE",
 };
-#endif
 
 #define DRIVER_DESC "S3C HS USB OTG Device Driver, (c) Samsung Electronics"
 #define DRIVER_VERSION "15 March 2009"
@@ -362,7 +358,7 @@
 {
 	unsigned int stopped = ep->stopped;
 
-	DEBUG("%s: %s %p, req = %p, stopped = %d\n",
+	debug("%s: %s %p, req = %p, stopped = %d\n",
 	      __func__, ep->ep.name, ep, &req->req, stopped);
 
 	list_del_init(&req->queue);
@@ -373,7 +369,7 @@
 		status = req->req.status;
 
 	if (status && status != -ESHUTDOWN) {
-		DEBUG("complete %s req %p stat %d len %u/%u\n",
+		debug("complete %s req %p stat %d len %u/%u\n",
 		      ep->ep.name, &req->req, status,
 		      req->req.actual, req->req.length);
 	}
@@ -401,7 +397,7 @@
 	req->req.complete(&ep->ep, &req->req);
 	spin_lock(&ep->dev->lock);
 
-	DEBUG("callback completed\n");
+	debug("callback completed\n");
 
 	ep->stopped = stopped;
 }
@@ -413,7 +409,7 @@
 {
 	struct s3c_request *req;
 
-	DEBUG("%s: %s %p\n", __func__, ep->ep.name, ep);
+	debug("%s: %s %p\n", __func__, ep->ep.name, ep);
 
 	/* called with irqs blocked */
 	while (!list_empty(&ep->queue)) {
@@ -456,7 +452,7 @@
 	int i;
 	unsigned int uTemp = writel(CORE_SOFT_RESET, &reg->grstctl);
 
-	DEBUG(2, "Reseting OTG controller\n");
+	debug("Reseting OTG controller\n");
 
 	writel(0<<15		/* PHY Low Power Clock sel*/
 		|1<<14		/* Non-Periodic TxFIFO Rewind Enable*/
@@ -526,13 +522,13 @@
 	/* Flush the RX FIFO */
 	writel(RX_FIFO_FLUSH, &reg->grstctl);
 	while (readl(&reg->grstctl) & RX_FIFO_FLUSH)
-		DEBUG("%s: waiting for S3C_UDC_OTG_GRSTCTL\n", __func__);
+		debug("%s: waiting for S3C_UDC_OTG_GRSTCTL\n", __func__);
 
 	/* Flush all the Tx FIFO's */
 	writel(TX_FIFO_FLUSH_ALL, &reg->grstctl);
 	writel(TX_FIFO_FLUSH_ALL | TX_FIFO_FLUSH, &reg->grstctl);
 	while (readl(&reg->grstctl) & TX_FIFO_FLUSH)
-		DEBUG("%s: waiting for S3C_UDC_OTG_GRSTCTL\n", __func__);
+		debug("%s: waiting for S3C_UDC_OTG_GRSTCTL\n", __func__);
 
 	/* 13. Clear NAK bit of EP0, EP1, EP2*/
 	/* For Slave mode*/
@@ -581,7 +577,7 @@
 	struct s3c_udc *dev;
 	unsigned long flags;
 
-	DEBUG("%s: %p\n", __func__, _ep);
+	debug("%s: %p\n", __func__, _ep);
 
 	ep = container_of(_ep, struct s3c_ep, ep);
 	if (!_ep || !desc || ep->desc || _ep->name == ep0name
@@ -590,7 +586,7 @@
 	    || ep_maxpacket(ep) <
 	    le16_to_cpu(get_unaligned(&desc->wMaxPacketSize))) {
 
-		DEBUG("%s: bad ep or descriptor\n", __func__);
+		debug("%s: bad ep or descriptor\n", __func__);
 		return -EINVAL;
 	}
 
@@ -599,7 +595,7 @@
 	    && ep->bmAttributes != USB_ENDPOINT_XFER_BULK
 	    && desc->bmAttributes != USB_ENDPOINT_XFER_INT) {
 
-		DEBUG("%s: %s type mismatch\n", __func__, _ep->name);
+		debug("%s: %s type mismatch\n", __func__, _ep->name);
 		return -EINVAL;
 	}
 
@@ -608,14 +604,14 @@
 	     && le16_to_cpu(get_unaligned(&desc->wMaxPacketSize)) !=
 	     ep_maxpacket(ep)) || !get_unaligned(&desc->wMaxPacketSize)) {
 
-		DEBUG("%s: bad %s maxpacket\n", __func__, _ep->name);
+		debug("%s: bad %s maxpacket\n", __func__, _ep->name);
 		return -ERANGE;
 	}
 
 	dev = ep->dev;
 	if (!dev->driver || dev->gadget.speed == USB_SPEED_UNKNOWN) {
 
-		DEBUG("%s: bogus device state\n", __func__);
+		debug("%s: bogus device state\n", __func__);
 		return -ESHUTDOWN;
 	}
 
@@ -632,7 +628,7 @@
 	s3c_udc_ep_activate(ep);
 	spin_unlock_irqrestore(&ep->dev->lock, flags);
 
-	DEBUG("%s: enabled %s, stopped = %d, maxpacket = %d\n",
+	debug("%s: enabled %s, stopped = %d, maxpacket = %d\n",
 	      __func__, _ep->name, ep->stopped, ep->ep.maxpacket);
 	return 0;
 }
@@ -645,11 +641,11 @@
 	struct s3c_ep *ep;
 	unsigned long flags;
 
-	DEBUG("%s: %p\n", __func__, _ep);
+	debug("%s: %p\n", __func__, _ep);
 
 	ep = container_of(_ep, struct s3c_ep, ep);
 	if (!_ep || !ep->desc) {
-		DEBUG("%s: %s not enabled\n", __func__,
+		debug("%s: %s not enabled\n", __func__,
 		      _ep ? ep->ep.name : NULL);
 		return -EINVAL;
 	}
@@ -664,7 +660,7 @@
 
 	spin_unlock_irqrestore(&ep->dev->lock, flags);
 
-	DEBUG("%s: disabled %s\n", __func__, _ep->name);
+	debug("%s: disabled %s\n", __func__, _ep->name);
 	return 0;
 }
 
@@ -673,7 +669,7 @@
 {
 	struct s3c_request *req;
 
-	DEBUG("%s: %s %p\n", __func__, ep->name, ep);
+	debug("%s: %s %p\n", __func__, ep->name, ep);
 
 	req = kmalloc(sizeof *req, gfp_flags);
 	if (!req)
@@ -689,7 +685,7 @@
 {
 	struct s3c_request *req;
 
-	DEBUG("%s: %p\n", __func__, ep);
+	debug("%s: %p\n", __func__, ep);
 
 	req = container_of(_req, struct s3c_request, req);
 	WARN_ON(!list_empty(&req->queue));
@@ -703,7 +699,7 @@
 	struct s3c_request *req;
 	unsigned long flags;
 
-	DEBUG("%s: %p\n", __func__, _ep);
+	debug("%s: %p\n", __func__, _ep);
 
 	ep = container_of(_ep, struct s3c_ep, ep);
 	if (!_ep || ep->ep.name == ep0name)
@@ -737,11 +733,11 @@
 
 	ep = container_of(_ep, struct s3c_ep, ep);
 	if (!_ep) {
-		DEBUG("%s: bad ep\n", __func__);
+		debug("%s: bad ep\n", __func__);
 		return -ENODEV;
 	}
 
-	DEBUG("%s: %d\n", __func__, ep_index(ep));
+	debug("%s: %d\n", __func__, ep_index(ep));
 
 	/* LPD can't report unclaimed bytes from IN fifos */
 	if (ep_is_in(ep))
@@ -759,11 +755,11 @@
 
 	ep = container_of(_ep, struct s3c_ep, ep);
 	if (unlikely(!_ep || (!ep->desc && ep->ep.name != ep0name))) {
-		DEBUG("%s: bad ep\n", __func__);
+		debug("%s: bad ep\n", __func__);
 		return;
 	}
 
-	DEBUG("%s: %d\n", __func__, ep_index(ep));
+	debug("%s: %d\n", __func__, ep_index(ep));
 }
 
 static const struct usb_gadget_ops s3c_udc_ops = {
@@ -849,7 +845,7 @@
 	struct s3c_udc *dev = &memory;
 	int retval = 0, i;
 
-	DEBUG("%s: %p\n", __func__, pdata);
+	debug("%s: %p\n", __func__, pdata);
 
 	dev->pdata = pdata;
 
diff --git a/drivers/usb/gadget/s3c_udc_otg_xfer_dma.c b/drivers/usb/gadget/s3c_udc_otg_xfer_dma.c
index 2553857..b11108d 100644
--- a/drivers/usb/gadget/s3c_udc_otg_xfer_dma.c
+++ b/drivers/usb/gadget/s3c_udc_otg_xfer_dma.c
@@ -62,7 +62,7 @@
 {
 	u32 ep_ctrl;
 
-	DEBUG_IN_EP("%s : Prepare Setup packets.\n", __func__);
+	debug_cond(DEBUG_IN_EP, "%s : Prepare Setup packets.\n", __func__);
 
 	invalidate_dcache_range((unsigned long) usb_ctrl_dma_addr,
 				(unsigned long) usb_ctrl_dma_addr
@@ -91,7 +91,8 @@
 	DEBUG_EP0("%s:EP0 ZLP DOEPCTL0 = 0x%x\n",
 		__func__, readl(&reg->out_endp[EP0_CON].doepctl));
 
-	DEBUG_IN_EP("%s : Prepare Complete Out packet.\n", __func__);
+	debug_cond(DEBUG_IN_EP,
+		"%s : Prepare Complete Out packet.\n", __func__);
 
 	invalidate_dcache_range((unsigned long) usb_ctrl_dma_addr,
 				(unsigned long) usb_ctrl_dma_addr
@@ -203,14 +204,15 @@
 
 	writel(DEPCTL_EPENA|DEPCTL_CNAK|ctrl, &reg->in_endp[ep_num].diepctl);
 
-	DEBUG_IN_EP("%s:EP%d TX DMA start : DIEPDMA0 = 0x%x,"
-		    "DIEPTSIZ0 = 0x%x, DIEPCTL0 = 0x%x\n"
-		    "\tbuf = 0x%p, pktcnt = %d, xfersize = %d\n",
-		    __func__, ep_num,
-		    readl(&reg->in_endp[ep_num].diepdma),
-		    readl(&reg->in_endp[ep_num].dieptsiz),
-		    readl(&reg->in_endp[ep_num].diepctl),
-		    buf, pktcnt, length);
+	debug_cond(DEBUG_IN_EP,
+		"%s:EP%d TX DMA start : DIEPDMA0 = 0x%x,"
+		"DIEPTSIZ0 = 0x%x, DIEPCTL0 = 0x%x\n"
+		"\tbuf = 0x%p, pktcnt = %d, xfersize = %d\n",
+		__func__, ep_num,
+		readl(&reg->in_endp[ep_num].diepdma),
+		readl(&reg->in_endp[ep_num].dieptsiz),
+		readl(&reg->in_endp[ep_num].diepctl),
+		buf, pktcnt, length);
 
 	return length;
 }
@@ -287,8 +289,9 @@
 	}
 
 	if (list_empty(&ep->queue)) {
-		DEBUG_IN_EP("%s: TX DMA done : NULL REQ on IN EP-%d\n",
-					__func__, ep_num);
+		debug_cond(DEBUG_IN_EP,
+			"%s: TX DMA done : NULL REQ on IN EP-%d\n",
+			__func__, ep_num);
 		return;
 
 	}
@@ -301,33 +304,38 @@
 	is_short = (xfer_size < ep->ep.maxpacket);
 	req->req.actual += min(xfer_size, req->req.length - req->req.actual);
 
-	DEBUG_IN_EP("%s: TX DMA done : ep = %d, tx bytes = %d/%d, "
-		     "is_short = %d, DIEPTSIZ = 0x%x, remained bytes = %d\n",
-			__func__, ep_num, req->req.actual, req->req.length,
-			is_short, ep_tsr, xfer_size);
+	debug_cond(DEBUG_IN_EP,
+		"%s: TX DMA done : ep = %d, tx bytes = %d/%d, "
+		"is_short = %d, DIEPTSIZ = 0x%x, remained bytes = %d\n",
+		__func__, ep_num, req->req.actual, req->req.length,
+		is_short, ep_tsr, xfer_size);
 
 	if (ep_num == 0) {
 		if (dev->ep0state == DATA_STATE_XMIT) {
-			DEBUG_IN_EP("%s: ep_num = %d, ep0stat =="
-				    "DATA_STATE_XMIT\n",
-				    __func__, ep_num);
+			debug_cond(DEBUG_IN_EP,
+				"%s: ep_num = %d, ep0stat =="
+				"DATA_STATE_XMIT\n",
+				__func__, ep_num);
 			last = write_fifo_ep0(ep, req);
 			if (last)
 				dev->ep0state = WAIT_FOR_COMPLETE;
 		} else if (dev->ep0state == WAIT_FOR_IN_COMPLETE) {
-			DEBUG_IN_EP("%s: ep_num = %d, completing request\n",
-				    __func__, ep_num);
+			debug_cond(DEBUG_IN_EP,
+				"%s: ep_num = %d, completing request\n",
+				__func__, ep_num);
 			done(ep, req, 0);
 			dev->ep0state = WAIT_FOR_SETUP;
 		} else if (dev->ep0state == WAIT_FOR_COMPLETE) {
-			DEBUG_IN_EP("%s: ep_num = %d, completing request\n",
-				    __func__, ep_num);
+			debug_cond(DEBUG_IN_EP,
+				"%s: ep_num = %d, completing request\n",
+				__func__, ep_num);
 			done(ep, req, 0);
 			dev->ep0state = WAIT_FOR_OUT_COMPLETE;
 			s3c_ep0_complete_out();
 		} else {
-			DEBUG_IN_EP("%s: ep_num = %d, invalid ep state\n",
-				    __func__, ep_num);
+			debug_cond(DEBUG_IN_EP,
+				"%s: ep_num = %d, invalid ep state\n",
+				__func__, ep_num);
 		}
 		return;
 	}
@@ -337,7 +345,8 @@
 
 	if (!list_empty(&ep->queue)) {
 		req = list_entry(ep->queue.next, struct s3c_request, queue);
-		DEBUG_IN_EP("%s: Next Tx request start...\n", __func__);
+		debug_cond(DEBUG_IN_EP,
+			"%s: Next Tx request start...\n", __func__);
 		setdma_tx(ep, req);
 	}
 }
@@ -347,19 +356,22 @@
 	struct s3c_ep *ep = &dev->ep[ep_num];
 	struct s3c_request *req;
 
-	DEBUG_IN_EP("%s: Check queue, ep_num = %d\n", __func__, ep_num);
+	debug_cond(DEBUG_IN_EP,
+		"%s: Check queue, ep_num = %d\n", __func__, ep_num);
 
 	if (!list_empty(&ep->queue)) {
 		req = list_entry(ep->queue.next, struct s3c_request, queue);
-		DEBUG_IN_EP("%s: Next Tx request(0x%p) start...\n",
-			    __func__, req);
+		debug_cond(DEBUG_IN_EP,
+			"%s: Next Tx request(0x%p) start...\n",
+			__func__, req);
 
 		if (ep_is_in(ep))
 			setdma_tx(ep, req);
 		else
 			setdma_rx(ep, req);
 	} else {
-		DEBUG_IN_EP("%s: NULL REQ on IN EP-%d\n", __func__, ep_num);
+		debug_cond(DEBUG_IN_EP,
+			"%s: NULL REQ on IN EP-%d\n", __func__, ep_num);
 
 		return;
 	}
@@ -372,15 +384,15 @@
 	u8 ep_num = 0;
 
 	ep_intr = readl(&reg->daint);
-	DEBUG_IN_EP("*** %s: EP In interrupt : DAINT = 0x%x\n",
-				__func__, ep_intr);
+	debug_cond(DEBUG_IN_EP,
+		"*** %s: EP In interrupt : DAINT = 0x%x\n", __func__, ep_intr);
 
 	ep_intr &= DAINT_MASK;
 
 	while (ep_intr) {
 		if (ep_intr & DAINT_IN_EP_INT(1)) {
 			ep_intr_status = readl(&reg->in_endp[ep_num].diepint);
-			DEBUG_IN_EP("\tEP%d-IN : DIEPINT = 0x%x\n",
+			debug_cond(DEBUG_IN_EP, "\tEP%d-IN : DIEPINT = 0x%x\n",
 						ep_num, ep_intr_status);
 
 			/* Interrupt Clear */
@@ -473,7 +485,8 @@
 	intr_status = readl(&reg->gintsts);
 	gintmsk = readl(&reg->gintmsk);
 
-	DEBUG_ISR("\n*** %s : GINTSTS=0x%x(on state %s), GINTMSK : 0x%x,"
+	debug_cond(DEBUG_ISR,
+		  "\n*** %s : GINTSTS=0x%x(on state %s), GINTMSK : 0x%x,"
 		  "DAINT : 0x%x, DAINTMSK : 0x%x\n",
 		  __func__, intr_status, state_names[dev->ep0state], gintmsk,
 		  readl(&reg->daint), readl(&reg->daintmsk));
@@ -484,30 +497,32 @@
 	}
 
 	if (intr_status & INT_ENUMDONE) {
-		DEBUG_ISR("\tSpeed Detection interrupt\n");
+		debug_cond(DEBUG_ISR, "\tSpeed Detection interrupt\n");
 
 		writel(INT_ENUMDONE, &reg->gintsts);
 		usb_status = (readl(&reg->dsts) & 0x6);
 
 		if (usb_status & (USB_FULL_30_60MHZ | USB_FULL_48MHZ)) {
-			DEBUG_ISR("\t\tFull Speed Detection\n");
+			debug_cond(DEBUG_ISR, "\t\tFull Speed Detection\n");
 			set_max_pktsize(dev, USB_SPEED_FULL);
 
 		} else {
-			DEBUG_ISR("\t\tHigh Speed Detection : 0x%x\n",
-				  usb_status);
+			debug_cond(DEBUG_ISR,
+				"\t\tHigh Speed Detection : 0x%x\n",
+				usb_status);
 			set_max_pktsize(dev, USB_SPEED_HIGH);
 		}
 	}
 
 	if (intr_status & INT_EARLY_SUSPEND) {
-		DEBUG_ISR("\tEarly suspend interrupt\n");
+		debug_cond(DEBUG_ISR, "\tEarly suspend interrupt\n");
 		writel(INT_EARLY_SUSPEND, &reg->gintsts);
 	}
 
 	if (intr_status & INT_SUSPEND) {
 		usb_status = readl(&reg->dsts);
-		DEBUG_ISR("\tSuspend interrupt :(DSTS):0x%x\n", usb_status);
+		debug_cond(DEBUG_ISR,
+			"\tSuspend interrupt :(DSTS):0x%x\n", usb_status);
 		writel(INT_SUSPEND, &reg->gintsts);
 
 		if (dev->gadget.speed != USB_SPEED_UNKNOWN
@@ -525,7 +540,7 @@
 	}
 
 	if (intr_status & INT_RESUME) {
-		DEBUG_ISR("\tResume interrupt\n");
+		debug_cond(DEBUG_ISR, "\tResume interrupt\n");
 		writel(INT_RESUME, &reg->gintsts);
 
 		if (dev->gadget.speed != USB_SPEED_UNKNOWN
@@ -538,13 +553,15 @@
 
 	if (intr_status & INT_RESET) {
 		usb_status = readl(&reg->gotgctl);
-		DEBUG_ISR("\tReset interrupt - (GOTGCTL):0x%x\n", usb_status);
+		debug_cond(DEBUG_ISR,
+			"\tReset interrupt - (GOTGCTL):0x%x\n", usb_status);
 		writel(INT_RESET, &reg->gintsts);
 
 		if ((usb_status & 0xc0000) == (0x3 << 18)) {
 			if (reset_available) {
-				DEBUG_ISR("\t\tOTG core got reset (%d)!!\n",
-					  reset_available);
+				debug_cond(DEBUG_ISR,
+					"\t\tOTG core got reset (%d)!!\n",
+					reset_available);
 				reconfig_usbd();
 				dev->ep0state = WAIT_FOR_SETUP;
 				reset_available = 0;
@@ -554,7 +571,7 @@
 
 		} else {
 			reset_available = 1;
-			DEBUG_ISR("\t\tRESET handling skipped\n");
+			debug_cond(DEBUG_ISR, "\t\tRESET handling skipped\n");
 		}
 	}
 
@@ -585,7 +602,7 @@
 	if (unlikely(!_req || !_req->complete || !_req->buf
 		     || !list_empty(&req->queue))) {
 
-		DEBUG("%s: bad params\n", __func__);
+		debug("%s: bad params\n", __func__);
 		return -EINVAL;
 	}
 
@@ -593,7 +610,7 @@
 
 	if (unlikely(!_ep || (!ep->desc && ep->ep.name != ep0name))) {
 
-		DEBUG("%s: bad ep: %s, %d, %x\n", __func__,
+		debug("%s: bad ep: %s, %d, %p\n", __func__,
 		      ep->ep.name, !ep->desc, _ep);
 		return -EINVAL;
 	}
@@ -602,7 +619,7 @@
 	dev = ep->dev;
 	if (unlikely(!dev->driver || dev->gadget.speed == USB_SPEED_UNKNOWN)) {
 
-		DEBUG("%s: bogus device state %p\n", __func__, dev->driver);
+		debug("%s: bogus device state %p\n", __func__, dev->driver);
 		return -ESHUTDOWN;
 	}
 
@@ -612,7 +629,7 @@
 	_req->actual = 0;
 
 	/* kickstart this i/o queue? */
-	DEBUG("\n*** %s: %s-%s req = %p, len = %d, buf = %p"
+	debug("\n*** %s: %s-%s req = %p, len = %d, buf = %p"
 		"Q empty = %d, stopped = %d\n",
 		__func__, _ep->name, ep_is_in(ep) ? "in" : "out",
 		_req, _req->length, _req->buf,
@@ -644,8 +661,9 @@
 
 		} else if (ep_is_in(ep)) {
 			gintsts = readl(&reg->gintsts);
-			DEBUG_IN_EP("%s: ep_is_in, S3C_UDC_OTG_GINTSTS=0x%x\n",
-						__func__, gintsts);
+			debug_cond(DEBUG_IN_EP,
+				"%s: ep_is_in, S3C_UDC_OTG_GINTSTS=0x%x\n",
+				__func__, gintsts);
 
 			setdma_tx(ep, req);
 		} else {
@@ -775,13 +793,12 @@
 {
 	struct s3c_request *req;
 	struct s3c_ep *ep = &dev->ep[0];
-	int ret;
 
 	if (!list_empty(&ep->queue)) {
 		req = list_entry(ep->queue.next, struct s3c_request, queue);
 
 	} else {
-		DEBUG("%s: ---> BUG\n", __func__);
+		debug("%s: ---> BUG\n", __func__);
 		BUG();
 		return;
 	}
@@ -801,7 +818,7 @@
 		return;
 	}
 
-	ret = setdma_rx(ep, req);
+	setdma_rx(ep, req);
 }
 
 /*
@@ -910,19 +927,19 @@
 	u32		ep_ctrl = 0;
 
 	ep_num = ep_index(ep);
-	DEBUG("%s: ep_num = %d, ep_type = %d\n", __func__, ep_num, ep->ep_type);
+	debug("%s: ep_num = %d, ep_type = %d\n", __func__, ep_num, ep->ep_type);
 
 	if (ep_is_in(ep)) {
 		ep_ctrl = readl(&reg->in_endp[ep_num].diepctl);
 		ep_ctrl |= DEPCTL_SNAK;
 		writel(ep_ctrl, &reg->in_endp[ep_num].diepctl);
-		DEBUG("%s: set NAK, DIEPCTL%d = 0x%x\n",
+		debug("%s: set NAK, DIEPCTL%d = 0x%x\n",
 			__func__, ep_num, readl(&reg->in_endp[ep_num].diepctl));
 	} else {
 		ep_ctrl = readl(&reg->out_endp[ep_num].doepctl);
 		ep_ctrl |= DEPCTL_SNAK;
 		writel(ep_ctrl, &reg->out_endp[ep_num].doepctl);
-		DEBUG("%s: set NAK, DOEPCTL%d = 0x%x\n",
+		debug("%s: set NAK, DOEPCTL%d = 0x%x\n",
 		      __func__, ep_num, readl(&reg->out_endp[ep_num].doepctl));
 	}
 
@@ -936,7 +953,7 @@
 	u32		ep_ctrl = 0;
 
 	ep_num = ep_index(ep);
-	DEBUG("%s: ep_num = %d, ep_type = %d\n", __func__, ep_num, ep->ep_type);
+	debug("%s: ep_num = %d, ep_type = %d\n", __func__, ep_num, ep->ep_type);
 
 	if (ep_is_in(ep)) {
 		ep_ctrl = readl(&reg->in_endp[ep_num].diepctl);
@@ -948,7 +965,7 @@
 		ep_ctrl |= DEPCTL_STALL;
 
 		writel(ep_ctrl, &reg->in_endp[ep_num].diepctl);
-		DEBUG("%s: set stall, DIEPCTL%d = 0x%x\n",
+		debug("%s: set stall, DIEPCTL%d = 0x%x\n",
 		      __func__, ep_num, readl(&reg->in_endp[ep_num].diepctl));
 
 	} else {
@@ -958,7 +975,7 @@
 		ep_ctrl |= DEPCTL_STALL;
 
 		writel(ep_ctrl, &reg->out_endp[ep_num].doepctl);
-		DEBUG("%s: set stall, DOEPCTL%d = 0x%x\n",
+		debug("%s: set stall, DOEPCTL%d = 0x%x\n",
 		      __func__, ep_num, readl(&reg->out_endp[ep_num].doepctl));
 	}
 
@@ -971,7 +988,7 @@
 	u32		ep_ctrl = 0;
 
 	ep_num = ep_index(ep);
-	DEBUG("%s: ep_num = %d, ep_type = %d\n", __func__, ep_num, ep->ep_type);
+	debug("%s: ep_num = %d, ep_type = %d\n", __func__, ep_num, ep->ep_type);
 
 	if (ep_is_in(ep)) {
 		ep_ctrl = readl(&reg->in_endp[ep_num].diepctl);
@@ -991,7 +1008,7 @@
 		}
 
 		writel(ep_ctrl, &reg->in_endp[ep_num].diepctl);
-		DEBUG("%s: cleared stall, DIEPCTL%d = 0x%x\n",
+		debug("%s: cleared stall, DIEPCTL%d = 0x%x\n",
 			__func__, ep_num, readl(&reg->in_endp[ep_num].diepctl));
 
 	} else {
@@ -1006,7 +1023,7 @@
 		}
 
 		writel(ep_ctrl, &reg->out_endp[ep_num].doepctl);
-		DEBUG("%s: cleared stall, DOEPCTL%d = 0x%x\n",
+		debug("%s: cleared stall, DOEPCTL%d = 0x%x\n",
 		      __func__, ep_num, readl(&reg->out_endp[ep_num].doepctl));
 	}
 
@@ -1025,14 +1042,14 @@
 
 	if (unlikely(!_ep || !ep->desc || ep_num == EP0_CON ||
 		     ep->desc->bmAttributes == USB_ENDPOINT_XFER_ISOC)) {
-		DEBUG("%s: %s bad ep or descriptor\n", __func__, ep->ep.name);
+		debug("%s: %s bad ep or descriptor\n", __func__, ep->ep.name);
 		return -EINVAL;
 	}
 
 	/* Attempt to halt IN ep will fail if any transfer requests
 	 * are still queue */
 	if (value && ep_is_in(ep) && !list_empty(&ep->queue)) {
-		DEBUG("%s: %s queue not empty, req = %p\n",
+		debug("%s: %s queue not empty, req = %p\n",
 			__func__, ep->ep.name,
 			list_entry(ep->queue.next, struct s3c_request, queue));
 
@@ -1040,7 +1057,7 @@
 	}
 
 	dev = ep->dev;
-	DEBUG("%s: ep_num = %d, value = %d\n", __func__, ep_num, value);
+	debug("%s: ep_num = %d, value = %d\n", __func__, ep_num, value);
 
 	spin_lock_irqsave(&dev->lock, flags);
 
@@ -1076,7 +1093,7 @@
 		daintmsk = (1 << ep_num) << DAINT_OUT_BIT;
 	}
 
-	DEBUG("%s: EPCTRL%d = 0x%x, ep_is_in = %d\n",
+	debug("%s: EPCTRL%d = 0x%x, ep_is_in = %d\n",
 		__func__, ep_num, ep_ctrl, ep_is_in(ep));
 
 	/* If the EP is already active don't change the EP Control
@@ -1090,12 +1107,12 @@
 
 		if (ep_is_in(ep)) {
 			writel(ep_ctrl, &reg->in_endp[ep_num].diepctl);
-			DEBUG("%s: USB Ative EP%d, DIEPCTRL%d = 0x%x\n",
+			debug("%s: USB Ative EP%d, DIEPCTRL%d = 0x%x\n",
 			      __func__, ep_num, ep_num,
 			      readl(&reg->in_endp[ep_num].diepctl));
 		} else {
 			writel(ep_ctrl, &reg->out_endp[ep_num].doepctl);
-			DEBUG("%s: USB Ative EP%d, DOEPCTRL%d = 0x%x\n",
+			debug("%s: USB Ative EP%d, DOEPCTRL%d = 0x%x\n",
 			      __func__, ep_num, ep_num,
 			      readl(&reg->out_endp[ep_num].doepctl));
 		}
@@ -1103,7 +1120,7 @@
 
 	/* Unmask EP Interrtupt */
 	writel(readl(&reg->daintmsk)|daintmsk, &reg->daintmsk);
-	DEBUG("%s: DAINTMSK = 0x%x\n", __func__, readl(&reg->daintmsk));
+	debug("%s: DAINTMSK = 0x%x\n", __func__, readl(&reg->daintmsk));
 
 }
 
@@ -1236,14 +1253,14 @@
 void s3c_ep0_setup(struct s3c_udc *dev)
 {
 	struct s3c_ep *ep = &dev->ep[0];
-	int i, bytes, is_in;
+	int i;
 	u8 ep_num;
 
 	/* Nuke all previous transfers */
 	nuke(ep, -EPROTO);
 
 	/* read control req from fifo (8 bytes) */
-	bytes = s3c_fifo_read(ep, (u32 *)usb_ctrl, 8);
+	s3c_fifo_read(ep, (u32 *)usb_ctrl, 8);
 
 	DEBUG_SETUP("%s: bRequestType = 0x%x(%s), bRequest = 0x%x"
 		    "\twLength = 0x%x, wValue = 0x%x, wIndex= 0x%x\n",
@@ -1255,7 +1272,7 @@
 #ifdef DEBUG_S3C_UDC
 	{
 		int i, len = sizeof(*usb_ctrl);
-		char *p = usb_ctrl;
+		char *p = (char *)usb_ctrl;
 
 		printf("pkt = ");
 		for (i = 0; i < len; i++) {
@@ -1293,11 +1310,8 @@
 	/* Set direction of EP0 */
 	if (likely(usb_ctrl->bRequestType & USB_DIR_IN)) {
 		ep->bEndpointAddress |= USB_DIR_IN;
-		is_in = 1;
-
 	} else {
 		ep->bEndpointAddress &= ~USB_DIR_IN;
-		is_in = 0;
 	}
 	/* cope with automagic for some standard requests. */
 	dev->req_std = (usb_ctrl->bRequestType & USB_TYPE_MASK)
diff --git a/drivers/usb/host/ehci-mx5.c b/drivers/usb/host/ehci-mx5.c
index 68a673e..58cdcbe 100644
--- a/drivers/usb/host/ehci-mx5.c
+++ b/drivers/usb/host/ehci-mx5.c
@@ -251,5 +251,3 @@
 {
 	return 0;
 }
-
-
diff --git a/fs/fat/fat_write.c b/fs/fat/fat_write.c
index 4f1772f..3542b0b 100644
--- a/fs/fat/fat_write.c
+++ b/fs/fat/fat_write.c
@@ -323,7 +323,7 @@
 fill_dir_slot(fsdata *mydata, dir_entry **dentptr, const char *l_name)
 {
 	dir_slot *slotptr = (dir_slot *)get_vfatname_block;
-	__u8 counter, checksum;
+	__u8 counter = 0, checksum;
 	int idx = 0, ret;
 	char s_name[16];
 
@@ -926,6 +926,7 @@
 	int cursect;
 	int root_cluster, ret = -1, name_len;
 	char l_filename[VFAT_MAXLEN_BYTES];
+	int write_size = size;
 
 	dir_curclust = 0;
 
@@ -985,7 +986,11 @@
 	dentptr = (dir_entry *) do_fat_read_block;
 
 	name_len = strlen(filename);
+	if (name_len >= VFAT_MAXLEN_BYTES)
+		name_len = VFAT_MAXLEN_BYTES - 1;
+
 	memcpy(l_filename, filename, name_len);
+	l_filename[name_len] = 0; /* terminate the string */
 	downcase(l_filename);
 
 	startsect = mydata->rootdir_sect;
@@ -1012,10 +1017,12 @@
 		}
 
 		ret = set_contents(mydata, retdent, buffer, size);
-		if (ret) {
+		if (ret < 0) {
 			printf("Error: writing contents\n");
 			goto exit;
 		}
+		write_size = ret;
+		debug("attempt to write 0x%x bytes\n", write_size);
 
 		/* Flush fat buffer */
 		ret = flush_fat_buffer(mydata);
@@ -1029,7 +1036,7 @@
 			    get_dentfromdir_block,
 			    mydata->clust_size * mydata->sect_size);
 		if (ret) {
-			printf("Error: wrinting directory entry\n");
+			printf("Error: writing directory entry\n");
 			goto exit;
 		}
 	} else {
@@ -1056,10 +1063,12 @@
 			start_cluster, size, 0x20);
 
 		ret = set_contents(mydata, empty_dentptr, buffer, size);
-		if (ret) {
+		if (ret < 0) {
 			printf("Error: writing contents\n");
 			goto exit;
 		}
+		write_size = ret;
+		debug("attempt to write 0x%x bytes\n", write_size);
 
 		/* Flush fat buffer */
 		ret = flush_fat_buffer(mydata);
@@ -1080,7 +1089,7 @@
 
 exit:
 	free(mydata->fatbuf);
-	return ret;
+	return ret < 0 ? ret : write_size;
 }
 
 int file_fat_write(const char *filename, void *buffer, unsigned long maxsize)
diff --git a/include/configs/P2020COME.h b/include/configs/P2020COME.h
index db88b68..cf20d2b 100644
--- a/include/configs/P2020COME.h
+++ b/include/configs/P2020COME.h
@@ -103,12 +103,6 @@
 #define CONFIG_SYS_MEMTEST_END		0x1fffffff
 #define CONFIG_PANIC_HANG	/* do not reset board on panic */
 
-
-
-
-
-
-
  /*
   * Config the L2 Cache as L2 SRAM
   */
@@ -316,7 +310,6 @@
 #define _IO_BASE		0x00000000
 #endif
 
-
 #define CONFIG_PCI_SCAN_SHOW		/* show pci devices on startup */
 #define CONFIG_DOS_PARTITION
 
@@ -563,6 +556,7 @@
 	"tftp $fdtaddr $tftppath/$fdtfile;"				\
 	"bootm $loadaddr - $fdtaddr"
 
+
 #define CONFIG_RAMBOOTCOMMAND						\
 	"setenv bootargs root=/dev/ram rw "				\
 	"console=$consoledev,$baudrate $othbootargs;"			\
diff --git a/include/configs/sbc35_a9g20.h b/include/configs/sbc35_a9g20.h
index 1e355a8..cdf8659 100644
--- a/include/configs/sbc35_a9g20.h
+++ b/include/configs/sbc35_a9g20.h
@@ -36,6 +36,9 @@
 #define CONFIG_ENV_IS_IN_EEPROM
 #endif
 
+#define MACH_TYPE_SBC35_A9G20		1848
+#define CONFIG_MACH_TYPE		MACH_TYPE_SBC35_A9G20
+
 /* ARM asynchronous clock */
 #define CONFIG_SYS_AT91_SLOW_CLOCK	32768		/* slow clock xtal */
 #define CONFIG_SYS_AT91_MAIN_CLOCK	12000000	/* 12.000 MHz crystal */
diff --git a/include/configs/tny_a9260.h b/include/configs/tny_a9260.h
index ec8ec18..0043926 100644
--- a/include/configs/tny_a9260.h
+++ b/include/configs/tny_a9260.h
@@ -45,8 +45,12 @@
 /* Define actual evaluation board type from used processor type */
 #ifdef CONFIG_AT91SAM9G20
 # define CONFIG_TNY_A9G20
+# define MACH_TYPE_TNY_A9G20		2059
+# define CONFIG_MACH_TYPE		MACH_TYPE_TNY_A9G20
 #else
 # define CONFIG_TNY_A9260
+# define MACH_TYPE_TNY_A9260		2058
+# define CONFIG_MACH_TYPE		MACH_TYPE_TNY_A9260
 #endif
 
 /* ARM asynchronous clock */
diff --git a/include/usb/lin_gadget_compat.h b/include/usb/lin_gadget_compat.h
index 9b31511..fce3be7 100644
--- a/include/usb/lin_gadget_compat.h
+++ b/include/usb/lin_gadget_compat.h
@@ -26,7 +26,7 @@
 /* common */
 #define spin_lock_init(...)
 #define spin_lock(...)
-#define spin_lock_irqsave(lock, flags) do {flags = 1; } while (0)
+#define spin_lock_irqsave(lock, flags) do { debug("%lu\n", flags); } while (0)
 #define spin_unlock(...)
 #define spin_unlock_irqrestore(lock, flags) do {flags = 0; } while (0)
 #define disable_irq(...)
diff --git a/include/usb/s3c_udc.h b/include/usb/s3c_udc.h
index 14dadc8..31d8f6c 100644
--- a/include/usb/s3c_udc.h
+++ b/include/usb/s3c_udc.h
@@ -131,16 +131,10 @@
 #define DEBUG_EP0(fmt, args...) do {} while (0)
 #endif
 
-#ifdef DEBUG_S3C_UDC
-#define DEBUG(fmt, args...) printk(fmt, ##args)
-#else
-#define DEBUG(fmt, args...) do {} while (0)
-#endif
-
 #ifdef DEBUG_S3C_UDC_ISR
-#define DEBUG_ISR(fmt, args...) printk(fmt, ##args)
+#define DEBUG_ISR	1
 #else
-#define DEBUG_ISR(fmt, args...) do {} while (0)
+#define DEBUG_ISR	0
 #endif
 
 #ifdef DEBUG_S3C_UDC_OUT_EP
@@ -150,9 +144,15 @@
 #endif
 
 #ifdef DEBUG_S3C_UDC_IN_EP
-#define DEBUG_IN_EP(fmt, args...) printk(fmt, ##args)
+#define DEBUG_IN_EP	1
 #else
-#define DEBUG_IN_EP(fmt, args...) do {} while (0)
+#define DEBUG_IN_EP	0
+#endif
+
+#if defined(DEBUG_S3C_UDC_SETUP) || defined(DEBUG_S3C_UDC_EP0) || \
+	defined(DEBUG_S3C_UDC_ISR) || defined(DEBUG_S3C_UDC_OUT_EP) || \
+	defined(DEBUG_S3C_UDC_IN_EP) || defined(DEBUG_S3C_UDC)
+#define DEBUG
 #endif
 
 #define ERR(stuff...)		printf("ERR udc: " stuff)
diff --git a/post/lib_powerpc/fpu/Makefile b/post/lib_powerpc/fpu/Makefile
index b97ad6f..5d0e52d 100644
--- a/post/lib_powerpc/fpu/Makefile
+++ b/post/lib_powerpc/fpu/Makefile
@@ -24,10 +24,23 @@
 
 LIB	= libpost$(ARCH)fpu.o
 
-COBJS-$(CONFIG_HAS_POST)	+= fpu.o 20001122-1.o 20010114-2.o 20010226-1.o 980619-1.o
-COBJS-$(CONFIG_HAS_POST)	+= acc1.o compare-fp-1.o mul-subnormal-single-1.o
+COBJS-$(CONFIG_HAS_POST)	+= 20001122-1.o
+COBJS-$(CONFIG_HAS_POST)	+= 20010114-2.o
+COBJS-$(CONFIG_HAS_POST)	+= 20010226-1.o
+COBJS-$(CONFIG_HAS_POST)	+= 980619-1.o
+COBJS-$(CONFIG_HAS_POST)	+= acc1.o
+COBJS-$(CONFIG_HAS_POST)	+= compare-fp-1.o
+COBJS-$(CONFIG_HAS_POST)	+= fpu.o
+COBJS-$(CONFIG_HAS_POST)	+= mul-subnormal-single-1.o
+
+COBJS-$(CONFIG_HAS_POST)	+= darwin-ldouble.o
 
 include $(TOPDIR)/post/rules.mk
 
 CFLAGS := $(shell echo $(CFLAGS) | sed s/-msoft-float//)
 CFLAGS += -mhard-float -fkeep-inline-functions
+
+$(obj)%.o:	%.c
+	$(CC)  $(ALL_CFLAGS) -o $@.fp $< -c
+	$(OBJCOPY) -R .gnu.attributes $@.fp $@
+	rm -f $@.fp
diff --git a/post/lib_powerpc/fpu/darwin-ldouble.c b/post/lib_powerpc/fpu/darwin-ldouble.c
new file mode 100644
index 0000000..41ae202
--- /dev/null
+++ b/post/lib_powerpc/fpu/darwin-ldouble.c
@@ -0,0 +1,141 @@
+/*
+ * Borrowed from GCC 4.2.2 (which still was GPL v2+)
+ */
+/* 128-bit long double support routines for Darwin.
+   Copyright (C) 1993, 2003, 2004, 2005, 2006, 2007
+   Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC 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, or (at your option) any later
+version.
+
+In addition to the permissions in the GNU General Public License, the
+Free Software Foundation gives you unlimited permission to link the
+compiled version of this file into combinations with other programs,
+and to distribute those combinations without any restriction coming
+from the use of this file.  (The General Public License restrictions
+do apply in other respects; for example, they cover modification of
+the file, and distribution when not linked into a combine
+executable.)
+
+GCC 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 GCC; see the file COPYING.  If not, write to the Free
+Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301, USA.  */
+
+/*
+ * Implementations of floating-point long double basic arithmetic
+ * functions called by the IBM C compiler when generating code for
+ * PowerPC platforms.  In particular, the following functions are
+ * implemented: __gcc_qadd, __gcc_qsub, __gcc_qmul, and __gcc_qdiv.
+ * Double-double algorithms are based on the paper "Doubled-Precision
+ * IEEE Standard 754 Floating-Point Arithmetic" by W. Kahan, February 26,
+ * 1987.  An alternative published reference is "Software for
+ * Doubled-Precision Floating-Point Computations", by Seppo Linnainmaa,
+ * ACM TOMS vol 7 no 3, September 1981, pages 272-283.
+ */
+
+/*
+ * Each long double is made up of two IEEE doubles.  The value of the
+ * long double is the sum of the values of the two parts.  The most
+ * significant part is required to be the value of the long double
+ * rounded to the nearest double, as specified by IEEE.  For Inf
+ * values, the least significant part is required to be one of +0.0 or
+ * -0.0.  No other requirements are made; so, for example, 1.0 may be
+ * represented as (1.0, +0.0) or (1.0, -0.0), and the low part of a
+ * NaN is don't-care.
+ *
+ * This code currently assumes big-endian.
+ */
+
+#define fabs(x) __builtin_fabs(x)
+#define isless(x, y) __builtin_isless(x, y)
+#define inf() __builtin_inf()
+#define unlikely(x) __builtin_expect((x), 0)
+#define nonfinite(a) unlikely(!isless(fabs(a), inf()))
+
+typedef union {
+	long double ldval;
+	double dval[2];
+} longDblUnion;
+
+/* Add two 'long double' values and return the result.	*/
+long double __gcc_qadd(double a, double aa, double c, double cc)
+{
+	longDblUnion x;
+	double z, q, zz, xh;
+
+	z = a + c;
+
+	if (nonfinite(z)) {
+		z = cc + aa + c + a;
+		if (nonfinite(z))
+			return z;
+		x.dval[0] = z;	/* Will always be DBL_MAX.  */
+		zz = aa + cc;
+		if (fabs(a) > fabs(c))
+			x.dval[1] = a - z + c + zz;
+		else
+			x.dval[1] = c - z + a + zz;
+	} else {
+		q = a - z;
+		zz = q + c + (a - (q + z)) + aa + cc;
+
+		/* Keep -0 result.  */
+		if (zz == 0.0)
+			return z;
+
+		xh = z + zz;
+		if (nonfinite(xh))
+			return xh;
+
+		x.dval[0] = xh;
+		x.dval[1] = z - xh + zz;
+	}
+	return x.ldval;
+}
+
+long double __gcc_qsub(double a, double b, double c, double d)
+{
+	return __gcc_qadd(a, b, -c, -d);
+}
+
+long double __gcc_qmul(double a, double b, double c, double d)
+{
+	longDblUnion z;
+	double t, tau, u, v, w;
+
+	t = a * c;		/* Highest order double term.  */
+
+	if (unlikely(t == 0)	/* Preserve -0.  */
+	    || nonfinite(t))
+		return t;
+
+	/* Sum terms of two highest orders. */
+
+	/* Use fused multiply-add to get low part of a * c.  */
+#ifndef __NO_FPRS__
+	asm("fmsub %0,%1,%2,%3" : "=f"(tau) : "f"(a), "f"(c), "f"(t));
+#else
+	tau = fmsub(a, c, t);
+#endif
+	v = a * d;
+	w = b * c;
+	tau += v + w;		/* Add in other second-order terms.  */
+	u = t + tau;
+
+	/* Construct long double result.  */
+	if (nonfinite(u))
+		return u;
+	z.dval[0] = u;
+	z.dval[1] = (t - u) + tau;
+	return z.ldval;
+}
diff --git a/post/lib_powerpc/multi.c b/post/lib_powerpc/multi.c
index 5845616..e9814a6 100644
--- a/post/lib_powerpc/multi.c
+++ b/post/lib_powerpc/multi.c
@@ -27,9 +27,9 @@
  * CPU test
  * Load/store multiple word instructions:	lmw, stmw
  *
- * 26 consecutive words are loaded from a source memory buffer
- * into GPRs r6 through r31. After that, 26 consecutive words are stored
- * from the GPRs r6 through r31 into a target memory buffer. The contents
+ * 27 consecutive words are loaded from a source memory buffer
+ * into GPRs r5 through r31. After that, 27 consecutive words are stored
+ * from the GPRs r5 through r31 into a target memory buffer. The contents
  * of the source and target buffers are then compared.
  */
 
@@ -38,45 +38,37 @@
 
 #if CONFIG_POST & CONFIG_SYS_POST_CPU
 
-extern void cpu_post_exec_02 (ulong *code, ulong op1, ulong op2);
+extern void cpu_post_exec_02(ulong *code, ulong op1, ulong op2);
 
-int cpu_post_test_multi (void)
+int cpu_post_test_multi(void)
 {
-    int ret = 0;
-    unsigned int i;
-    int flag = disable_interrupts();
+	int ret = 0;
+	unsigned int i;
+	ulong src[27], dst[27];
+	int flag = disable_interrupts();
 
-    if (ret == 0)
-    {
-	ulong src [26], dst [26];
-
-	ulong code[] =
-	{
-	    ASM_LMW(5, 3, 0),
-	    ASM_STMW(5, 4, 0),
-	    ASM_BLR,
+	ulong code[] = {
+		ASM_LMW(5, 3, 0),	/* lmw	r5, 0(r3)	*/
+		ASM_STMW(5, 4, 0),	/* stmr	r5, 0(r4)	*/
+		ASM_BLR,		/* blr			*/
 	};
 
-	for (i = 0; i < ARRAY_SIZE(src); ++i)
-	{
-	    src[i] = i;
-	    dst[i] = 0;
+	for (i = 0; i < ARRAY_SIZE(src); ++i) {
+		src[i] = i;
+		dst[i] = 0;
 	}
 
-	cpu_post_exec_02(code, (ulong)src, (ulong)dst);
+	cpu_post_exec_02(code, (ulong) src, (ulong) dst);
 
 	ret = memcmp(src, dst, sizeof(dst)) == 0 ? 0 : -1;
-    }
 
-    if (ret != 0)
-    {
-	post_log ("Error at multi test !\n");
-    }
+	if (ret != 0)
+		post_log("Error at multi test !\n");
 
-    if (flag)
-	enable_interrupts();
+	if (flag)
+		enable_interrupts();
 
-    return ret;
+	return ret;
 }
 
 #endif
diff --git a/tools/mkenvimage.c b/tools/mkenvimage.c
index 753d9e6..c5ed373 100644
--- a/tools/mkenvimage.c
+++ b/tools/mkenvimage.c
@@ -25,6 +25,9 @@
  * MA 02111-1307 USA
  */
 
+/* We want the GNU version of basename() */
+#define _GNU_SOURCE
+
 #include <errno.h>
 #include <fcntl.h>
 #include <stdio.h>
@@ -81,6 +84,9 @@
 	struct stat txt_file_stat;
 
 	int fp, ep;
+	const char *prg;
+
+	prg = basename(argv[0]);
 
 	/* Turn off getopt()'s internal error message */
 	opterr = 0;
@@ -109,19 +115,19 @@
 			padbyte = strtol(optarg, NULL, 0);
 			break;
 		case 'h':
-			usage(argv[0]);
+			usage(prg);
 			return EXIT_SUCCESS;
 		case 'V':
 			printf("%s version %s\n", prg, PLAIN_VERSION);
 			return EXIT_SUCCESS;
 		case ':':
 			fprintf(stderr, "Missing argument for option -%c\n",
-				optopt);
+				option);
 			usage(argv[0]);
 			return EXIT_FAILURE;
 		default:
-			fprintf(stderr, "Wrong option -%c\n", optopt);
-			usage(argv[0]);
+			fprintf(stderr, "Wrong option -%c\n", option);
+			usage(prg);
 			return EXIT_FAILURE;
 		}
 	}
@@ -131,7 +137,7 @@
 		fprintf(stderr,
 			"Please specify the size of the environment "
 			"partition.\n");
-		usage(argv[0]);
+		usage(prg);
 		return EXIT_FAILURE;
 	}