diff -Naur linux-2.6.12-rc5_omap1/arch/arm/mach-omap/clock.c linux-2.6.12-rc5_omap1_h6300/arch/arm/mach-omap/clock.c
--- linux-2.6.12-rc5_omap1/arch/arm/mach-omap/clock.c	2005-08-23 22:36:30.426733413 +0300
+++ linux-2.6.12-rc5_omap1_h6300/arch/arm/mach-omap/clock.c	2005-08-23 22:38:07.446289831 +0300
@@ -21,6 +21,7 @@
 #include <asm/arch/usb.h>
 
 #include "clock.h"
+#include <asm/mach-types.h>
 
 static LIST_HEAD(clocks);
 static DECLARE_MUTEX(clocks_sem);
@@ -447,8 +448,17 @@
 static struct clk mclk_1510 = {
 	.name		= "mclk",
 	/* Direct from ULPD, no parent. May be enabled by ext hardware. */
+#if 0
 	.rate		= 12000000,
 	.flags		= CLOCK_IN_OMAP1510 | RATE_FIXED,
+#else
+	.flags		= CLOCK_IN_OMAP1510,
+	.enable_reg	= COM_CLK_DIV_CTRL_SEL,
+	.enable_bit	= COM_ULPD_PLL_CLK_REQ,
+	.set_rate	= &set_ext_clk_rate,
+	.round_rate	= &round_ext_clk_rate,
+	.init		= &init_ext_clk,
+#endif
 };
 
 static struct clk mclk_16xx = {
@@ -1247,6 +1257,9 @@
 	clk_use(&armxor_ck);
 	clk_use(&armtim_ck);
 
+	if (machine_is_h6300())
+		clk_enable(&lcd_ck);
+
 	if (cpu_is_omap1510())
 		clk_enable(&arm_gpio_ck);
 
diff -Naur linux-2.6.12-rc5_omap1/arch/arm/mach-omap/dma.c linux-2.6.12-rc5_omap1_h6300/arch/arm/mach-omap/dma.c
--- linux-2.6.12-rc5_omap1/arch/arm/mach-omap/dma.c	2005-08-23 22:36:30.615703332 +0300
+++ linux-2.6.12-rc5_omap1_h6300/arch/arm/mach-omap/dma.c	2005-08-23 22:38:07.480284420 +0300
@@ -671,6 +671,7 @@
 	unsigned long top, bottom;
 	int es;
 	u16 w;
+	u16 l;
 	unsigned long en, fn;
 	long ei, fi;
 	unsigned long vxres;
@@ -769,6 +770,10 @@
 	}
 
 	if (omap_dma_in_1510_mode()) {
+		l = omap_readw(OMAP1510_DMA_LCD_CTRL);
+		l &= ~(1 << 6);
+		omap_writew (l, OMAP1510_DMA_LCD_CTRL);
+
 		omap_writew(top >> 16, OMAP1510_DMA_LCD_TOP_F1_U);
 		omap_writew(top, OMAP1510_DMA_LCD_TOP_F1_L);
 		omap_writew(bottom >> 16, OMAP1510_DMA_LCD_BOT_F1_U);
@@ -893,7 +898,6 @@
 	w = omap_readw(OMAP1610_DMA_LCD_CCR);
 	w |= 1 << 7;
 	omap_writew(w, OMAP1610_DMA_LCD_CCR);
-
 	lcd_dma.active = 1;
 }
 
diff -Naur linux-2.6.12-rc5_omap1/arch/arm/mach-omap/mcbsp.c linux-2.6.12-rc5_omap1_h6300/arch/arm/mach-omap/mcbsp.c
--- linux-2.6.12-rc5_omap1/arch/arm/mach-omap/mcbsp.c	2005-08-23 22:36:31.270599085 +0300
+++ linux-2.6.12-rc5_omap1_h6300/arch/arm/mach-omap/mcbsp.c	2005-08-23 22:38:07.481284261 +0300
@@ -760,3 +760,4 @@
 EXPORT_SYMBOL(omap_mcbsp_xmit_buffer);
 EXPORT_SYMBOL(omap_mcbsp_recv_buffer);
 EXPORT_SYMBOL(omap_mcbsp_set_spi_mode);
+EXPORT_SYMBOL(omap_mcbsp_pollwrite);
diff -Naur linux-2.6.12-rc5_omap1/arch/arm/mach-omap/omap1/board-h6300.c linux-2.6.12-rc5_omap1_h6300/arch/arm/mach-omap/omap1/board-h6300.c
--- linux-2.6.12-rc5_omap1/arch/arm/mach-omap/omap1/board-h6300.c	1970-01-01 02:00:00.000000000 +0200
+++ linux-2.6.12-rc5_omap1_h6300/arch/arm/mach-omap/omap1/board-h6300.c	2005-08-23 22:38:07.482284102 +0300
@@ -0,0 +1,143 @@
+/*
+ * linux/arch/arm/mach-omap/board-generic.c
+ *
+ * Modified from board-h6300.c
+ *
+ * Code for generic OMAP board. Should work on many OMAP systems where
+ * the device drivers take care of all the necessary hardware initialization.
+ * Do not put any board specific code to this file; create a new machine
+ * type if you need custom low-level initializations.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#include <linux/kernel.h>
+#include <linux/init.h>
+#include <linux/device.h>
+#include <linux/delay.h>
+#include <linux/mtd/mtd.h>
+#include <linux/mtd/partitions.h>
+
+#include <asm/hardware.h>
+#include <asm/mach-types.h>
+#include <asm/mach/arch.h>
+#include <asm/mach/flash.h>
+#include <asm/mach/map.h>
+
+#include <asm/arch/gpio.h>
+#include <asm/arch/tc.h>
+#include <asm/arch/usb.h>
+
+#include "../common.h"
+
+static int __initdata h6300_serial_ports[OMAP_MAX_NR_PORTS] = {1, 1, 1};
+
+static struct mtd_partition h6300_partitions[] = {
+	/* bootloader (U-Boot, etc) in first sector */
+	{
+	      .name		= "bootloader",
+	      .offset		= 0,
+	      .size		= SZ_128K,
+	      .mask_flags	= MTD_WRITEABLE, /* force read-only */
+	},
+	/* bootloader params in the next sector */
+	{
+	      .name		= "params",
+	      .offset		= MTDPART_OFS_APPEND,
+	      .size		= SZ_128K,
+	      .mask_flags	= 0,
+	},
+	/* kernel */
+	{
+	      .name		= "kernel",
+	      .offset		= MTDPART_OFS_APPEND,
+	      .size		= SZ_2M,
+	      .mask_flags	= 0
+	},
+	/* rest of flash1 is a file system */
+	{
+	      .name		= "rootfs",
+	      .offset		= MTDPART_OFS_APPEND,
+	      .size		= SZ_16M - SZ_2M - 2 * SZ_128K,
+	      .mask_flags	= 0
+	},
+	/* file system */
+	{
+	      .name		= "filesystem",
+	      .offset		= MTDPART_OFS_APPEND,
+	      .size		= MTDPART_SIZ_FULL,
+	      .mask_flags	= 0
+	}
+};
+
+static struct flash_platform_data h6300_flash_data = {
+	.map_name	= "cfi_probe",
+	.width		= 2,
+	.parts		= h6300_partitions,
+	.nr_parts	= ARRAY_SIZE(h6300_partitions),
+};
+
+static struct resource h6300_flash_resource = {
+	.start		= OMAP_CS0_PHYS,
+	.end		= OMAP_CS0_PHYS + SZ_32M - 1,
+	.flags		= IORESOURCE_MEM,
+};
+
+static struct platform_device h6300_flash_device = {
+	.name		= "omapflash",
+	.id		= 0,
+	.dev		= {
+		.platform_data	= &h6300_flash_data,
+	},
+	.num_resources	= 1,
+	.resource	= &h6300_flash_resource,
+};
+
+static struct platform_device *h6300_devices[] __initdata = {
+	&h6300_flash_device,
+};
+
+static void __init h6300_init_irq(void)
+{
+	omap_init_irq();
+	omap_gpio_init();
+}
+
+/* assume no Mini-AB port */
+
+static struct omap_usb_config h6300_usb_config __initdata = {
+	.hmc_mode	      = 0,
+	.register_dev	  = 1,
+	.pins[0]        = 0,
+};
+
+static struct omap_board_config_kernel h6300_config[] = {
+	{ OMAP_TAG_USB,           &h6300_usb_config },
+};
+
+static void __init h6300_init(void)
+{
+	platform_add_devices(h6300_devices, ARRAY_SIZE(h6300_devices));
+	h6300_config[0].data = &h6300_usb_config;
+
+	omap_board_config = h6300_config;
+	omap_board_config_size = ARRAY_SIZE(h6300_config);
+}
+
+static void __init h6300_map_io(void)
+{
+	omap_map_common_io();
+	omap_serial_init(h6300_serial_ports);
+}
+
+MACHINE_START(H6300, "HP IPaq H6300")
+	MAINTAINER("Everett Coleman II <gcc80x86@fuzzyneural.net>")
+	BOOT_MEM(0x10000000, 0xfff00000, 0xfef00000)
+	BOOT_PARAMS(0x10000100)
+	MAPIO(h6300_map_io)
+	INITIRQ(h6300_init_irq)
+	INIT_MACHINE(h6300_init)
+	.timer		= &omap_timer,
+MACHINE_END
diff -Naur linux-2.6.12-rc5_omap1/arch/arm/mach-omap/omap1/Kconfig linux-2.6.12-rc5_omap1_h6300/arch/arm/mach-omap/omap1/Kconfig
--- linux-2.6.12-rc5_omap1/arch/arm/mach-omap/omap1/Kconfig	2005-08-23 22:36:31.495563275 +0300
+++ linux-2.6.12-rc5_omap1_h6300/arch/arm/mach-omap/omap1/Kconfig	2005-08-23 22:38:07.515278850 +0300
@@ -26,6 +26,12 @@
           TI OMAP 1510 or 1610 Innovator board support. Say Y here if you
           have such a board.
 
+config MACH_H6300
+	bool "HP IPaq H6300"
+	depends on ARCH_OMAP1 && ARCH_OMAP1510
+	help
+			HP IPaq H6300 series
+
 config MACH_OMAP_H2
 	bool "TI H2 Support"
 	depends on ARCH_OMAP1 && ARCH_OMAP16XX
diff -Naur linux-2.6.12-rc5_omap1/arch/arm/mach-omap/omap1/Makefile linux-2.6.12-rc5_omap1_h6300/arch/arm/mach-omap/omap1/Makefile
--- linux-2.6.12-rc5_omap1/arch/arm/mach-omap/omap1/Makefile	2005-08-23 22:36:31.564552293 +0300
+++ linux-2.6.12-rc5_omap1_h6300/arch/arm/mach-omap/omap1/Makefile	2005-08-23 22:38:07.516278691 +0300
@@ -9,6 +9,7 @@
 # Specific board support
 obj-$(CONFIG_MACH_OMAP_H2)		+= board-h2.o
 obj-$(CONFIG_MACH_OMAP_INNOVATOR)	+= board-innovator.o
+obj-$(CONFIG_MACH_H6300)	+= board-h6300.o
 obj-$(CONFIG_MACH_OMAP_GENERIC)		+= board-generic.o
 obj-$(CONFIG_MACH_OMAP_PERSEUS2)	+= board-perseus2.o
 obj-$(CONFIG_MACH_OMAP_OSK)		+= board-osk.o
diff -Naur linux-2.6.12-rc5_omap1/drivers/input/touchscreen/omap/Makefile linux-2.6.12-rc5_omap1_h6300/drivers/input/touchscreen/omap/Makefile
--- linux-2.6.12-rc5_omap1/drivers/input/touchscreen/omap/Makefile	2005-08-23 22:36:32.554394729 +0300
+++ linux-2.6.12-rc5_omap1_h6300/drivers/input/touchscreen/omap/Makefile	2005-08-23 22:38:07.550273279 +0300
@@ -8,5 +8,6 @@
 objs-$(CONFIG_ARCH_OMAP16XX)$(CONFIG_MACH_OMAP_H3) += ts_hx.o
 objs-$(CONFIG_ARCH_OMAP1510)$(CONFIG_MACH_OMAP_INNOVATOR) += ts_inn1510.o
 objs-$(CONFIG_ARCH_OMAP16XX)$(CONFIG_MACH_OMAP_OSK) += ts_osk.o
+objs-$(CONFIG_ARCH_OMAP1510)$(CONFIG_MACH_H6300) += ts_hx.o
 
 omapts-objs := omap_ts.o $(objs-yy)
diff -Naur linux-2.6.12-rc5_omap1/drivers/input/touchscreen/omap/omap_ts.c linux-2.6.12-rc5_omap1_h6300/drivers/input/touchscreen/omap/omap_ts.c
--- linux-2.6.12-rc5_omap1/drivers/input/touchscreen/omap/omap_ts.c	2005-08-23 22:36:32.555394570 +0300
+++ linux-2.6.12-rc5_omap1_h6300/drivers/input/touchscreen/omap/omap_ts.c	2005-08-23 22:38:07.551273120 +0300
@@ -39,14 +39,14 @@
 
 #include <asm/mach-types.h>
 
-//#define DEBUG
+#define DEBUG
 
 #include "omap_ts.h"
 
 #define OMAP_TS_NAME	"omap_ts"
 
 static struct ts_device *__initdata ts_devs[] = {
-#if defined(CONFIG_MACH_OMAP_H2) || defined(CONFIG_MACH_OMAP_H3)
+#if defined(CONFIG_MACH_OMAP_H2) || defined(CONFIG_MACH_OMAP_H3) || defined(CONFIG_MACH_H6300)
 	&hx_ts,
 #endif
 #ifdef CONFIG_MACH_OMAP_OSK
@@ -70,8 +70,7 @@
 	input_report_abs(&(ts_omap.inputdevice), ABS_PRESSURE, data[2]);
 	input_sync(&(ts_omap.inputdevice));
 
-	DEBUG_TS("omap_ts_read: read x=%d,y=%d,p=%d\n", data[0], data[1],
-		 data[2]);
+	//DEBUG_TS("omap_ts_read: read x=%d,y=%d,p=%d\n", data[0], data[1], data[2]);
 
 	return 0;
 }
@@ -84,7 +83,7 @@
 
 	if (!ts_omap.dev->penup()) {
 		if (!ts_omap.touched) {
-			DEBUG_TS("omap_ts_timer: pen down\n");
+			//DEBUG_TS("omap_ts_timer: pen down\n");
 			input_report_key(&(ts_omap.inputdevice), BTN_TOUCH, 1);
 		}
 		ts_omap.touched = 1;
@@ -93,7 +92,7 @@
 		add_timer(&(ts_omap.ts_timer));
 	} else {
 		if (ts_omap.touched) {
-			DEBUG_TS("omap_ts_timer: pen up\n");
+			//DEBUG_TS("omap_ts_timer: pen up\n");
 			ts_omap.touched = 0;
 			input_report_abs(&(ts_omap.inputdevice), ABS_X, 0);
 			input_report_abs(&(ts_omap.inputdevice), ABS_Y, 0);
diff -Naur linux-2.6.12-rc5_omap1/drivers/input/touchscreen/omap/ts_hx.c linux-2.6.12-rc5_omap1_h6300/drivers/input/touchscreen/omap/ts_hx.c
--- linux-2.6.12-rc5_omap1/drivers/input/touchscreen/omap/ts_hx.c	2005-08-23 22:36:32.588389317 +0300
+++ linux-2.6.12-rc5_omap1_h6300/drivers/input/touchscreen/omap/ts_hx.c	2005-08-23 22:38:07.585267709 +0300
@@ -33,6 +33,7 @@
 #include <asm/arch/mux.h>
 #include <asm/arch/hardware.h>
 #include <asm/hardware/tsc2101.h>
+#include <linux/delay.h>
 
 #include "../drivers/ssi/omap-tsc2101.h"
 #include "omap_ts.h"
@@ -88,6 +89,9 @@
 	} else if (machine_is_omap_h3()) {
 		gpio = H3_GPIO_NUM;
 		omap_cfg_reg(W19_1610_GPIO48);
+	}else if (machine_is_h6300()) {
+		gpio = 2;
+		omap_cfg_reg(M14_1510_GPIO2);
 	} else
 		return -ENODEV;
 
@@ -180,5 +184,8 @@
 		omap_free_gpio(H2_GPIO_NUM);
 	else if (machine_is_omap_h3())
 		omap_free_gpio(H3_GPIO_NUM);
+	else if (machine_is_h6300())
+		omap_free_gpio(2);
+
 }
 #endif
diff -Naur linux-2.6.12-rc5_omap1/drivers/ssi/omap-tsc2101.c linux-2.6.12-rc5_omap1_h6300/drivers/ssi/omap-tsc2101.c
--- linux-2.6.12-rc5_omap1/drivers/ssi/omap-tsc2101.c	2005-08-23 22:36:33.800196420 +0300
+++ linux-2.6.12-rc5_omap1_h6300/drivers/ssi/omap-tsc2101.c	2005-08-23 22:38:07.586267550 +0300
@@ -25,6 +25,7 @@
 #include <linux/delay.h>
 
 #include <asm/system.h>
+#include <asm/arch/gpio.h>
 #include <asm/irq.h>
 #include <asm/io.h>
 #include <asm/mach-types.h>
@@ -39,7 +40,7 @@
 
 #include "omap-tsc2101.h"
 
-#if CONFIG_ARCH_OMAP16XX
+#if CONFIG_ARCH_OMAP1
 #include <../drivers/ssi/omap-uwire.h>
 #else
 #error "Unsupported configuration"
@@ -47,7 +48,7 @@
 
 #define SPIO 1
 
-static int count;
+static int count = 0;
 static spinlock_t tsc2101_lock = SPIN_LOCK_UNLOCKED;
 static struct clk  * tsc2101_mclk_ck;
 
@@ -66,13 +67,12 @@
 	if (count++ == 0) {
 		int ret = 0;
 		/* set the Mux to provide MCLK to TSC2101 */
-		if (machine_is_omap_h3()) {
+		if (machine_is_omap_h3())
 			ret = omap_cfg_reg(V5_1710_MCLK_ON);
-		} else {
-			if (machine_is_omap_h2()) {
-				ret = omap_cfg_reg(R10_1610_MCLK_ON);
-			}
-		}
+		else if (machine_is_omap_h2())
+			ret = omap_cfg_reg(R10_1610_MCLK_ON);
+		else if (machine_is_h6300 ())
+			ret = omap_cfg_reg(R10_1610_MCLK_ON); // TODO: for now use the 1610 mux
 
 		/* Get the MCLK */
 		tsc2101_mclk_ck = clk_get(NULL, "mclk");
@@ -108,19 +108,22 @@
 	if (--count == 0) {
 		int ret = 0;
 		/* Remove the Mux to Stop MCLK to TSC2101 */
-		if (machine_is_omap_h3()) {
+		if (machine_is_omap_h3())
 			ret = omap_cfg_reg(V5_1710_MCLK_OFF);
-		} else {
-			if (machine_is_omap_h2()) {
-				ret = omap_cfg_reg(R10_1610_MCLK_OFF);
-			}
-		}
+		else if (machine_is_omap_h2())
+			ret = omap_cfg_reg(R10_1610_MCLK_OFF);
+//		else if (machine_is_h6300 ())
+//			ret = omap_cfg_reg(R10_1610_MCLK_OFF); // TODO: for now use the 1610 mux
 
 		/* Release the MCLK */
 		clk_disable(tsc2101_mclk_ck);
 		clk_put(tsc2101_mclk_ck);
 		tsc2101_mclk_ck = NULL;
 
+#if defined(CONFIG_MACH_H6300)
+		omap_free_gpio(8);
+#endif
+
 		module_put(THIS_MODULE);
 	}
 	spin_unlock(&tsc2101_lock);
@@ -130,57 +133,57 @@
 {
 
 	int ret = 0;
+	int cs  = 0;
 
-	if (machine_is_omap_h2()) {
-		ret =
-		    omap_uwire_data_transfer(1, 
-					     (((page) << 11) | (address << 5)),
-					     16, 0, NULL, 1);
-		if (ret) {
-			printk(KERN_ERR
-			       "uwire-write returned error for address %x\n",
-			       address);
-			return;
-		}
-		ret = omap_uwire_data_transfer(1, data, 16, 0, NULL, 0);
-		if (ret) {
-			printk(KERN_ERR
-			       "uwire-write returned error for address %x\n",
-			       address);
-			return;
-		}
+	if (cpu_is_omap16xx ()) {
+		if (machine_is_omap_h2())
+			cs=1;
+		if (machine_is_omap_h3())
+			cs=0;
+	} else if (cpu_is_omap15xx ()) {
+		cs=0;
 	}
-	if (machine_is_omap_h3()) {
 
-		ret =
-		    omap_uwire_data_transfer(0, ((page << 11) | (address << 5)),
-					     16, 0, NULL, 1);
-		if (ret) {
-			printk(KERN_ERR
-			       "uwire-write returned error for address %x\n",
-			       address);
-			return;
-		}
-		ret = omap_uwire_data_transfer(0, data, 16, 0, NULL, 0);
-		if (ret) {
-			printk(KERN_ERR
-			       "uwire-write returned error for address %x\n",
-			       address);
-			return;
-		}
+#if defined(CONFIG_MACH_H6300)
+	omap_set_gpio_dataout(8, 0);
+#endif
+
+	ret = omap_uwire_data_transfer(cs, 
+			(((page) << 11) | (address << 5)),
+			16, 0, NULL, 1);
+	if (ret) {
+		printk(KERN_ERR
+			"uwire-write returned error for address %x\n",
+			address);
+		omap_set_gpio_dataout(8, 1);
+		return;
+	}
+	ret = omap_uwire_data_transfer(cs, data, 16, 0, NULL, 0);
+	if (ret) {
+		printk(KERN_ERR
+			"uwire-write returned error for address %x\n",
+			address);
+		omap_set_gpio_dataout(8, 1);
+		return;
 	}
 
+#if defined(CONFIG_MACH_H6300)
+	omap_set_gpio_dataout(8, 1);
+#endif
 }
 
 void omap_tsc2101_reads(int page, u8 startaddress, u16 * data, int numregs)
 {
 	int cs = 0, i;
-	if (machine_is_omap_h2()) {
+	if (machine_is_omap_h2())
 		cs = 1;
-	}
-	if (machine_is_omap_h3()) {
+	if (machine_is_omap_h3())
 		cs = 0;
-	}
+
+#if defined(CONFIG_MACH_H6300)
+	omap_set_gpio_dataout(8, 0);
+#endif
+
 	(void)omap_uwire_data_transfer(cs, (0x8000 | (page << 11)
 					    | (startaddress << 5)),
 				       16, 0, NULL, 1);
@@ -188,11 +191,15 @@
 		omap_uwire_data_transfer(cs, 0, 0, 16, data, 1);
 	}
 	omap_uwire_data_transfer(cs, 0, 0, 16, data, 0);
+
+#if defined(CONFIG_MACH_H6300)
+	omap_set_gpio_dataout(8, 1);
+#endif
 }
 
 u16 omap_tsc2101_read(int page, u8 address)
 {
-	u16 ret;
+	u16 ret=0;
 	omap_tsc2101_reads(page, address, &ret, 1);
 	return ret;
 }
@@ -217,7 +224,6 @@
 		return err;
 	}
 #endif
-
 	if (machine_is_omap_h2()) {
 		uwire_flags = UWIRE_READ_RISING_EDGE | UWIRE_WRITE_RISING_EDGE;
 		omap_cfg_reg(N15_1610_UWIRE_CS1);
@@ -228,9 +234,22 @@
 		omap_cfg_reg(N14_1610_UWIRE_CS0);
 		omap_uwire_configure_mode(0, uwire_flags);
 	}
+	if (machine_is_h6300()) {
+		uwire_flags = UWIRE_READ_RISING_EDGE | UWIRE_WRITE_RISING_EDGE;
+		omap_cfg_reg(X1_1510_UWIRE_CS0);
+		omap_uwire_configure_mode(0, uwire_flags);
+
+		omap_request_gpio(8);
+		omap_set_gpio_dataout(8, 0);
+                omap_set_gpio_direction (8, 0);
+	}
+
 
 	/* Configure MCLK enable */
-	omap_writel(omap_readl(PU_PD_SEL_2) | (1 << 22), PU_PD_SEL_2);	
+	if (cpu_is_omap16xx ())
+		omap_writel(omap_readl(PU_PD_SEL_2) | (1 << 22), PU_PD_SEL_2);	
+	if (machine_is_h6300())
+		omap_cfg_reg(X1_1510_UWIRE_SDI);
 
 	return 0;
 }
@@ -243,5 +262,5 @@
 
 MODULE_AUTHOR("Texas Instruments");
 MODULE_DESCRIPTION
-    ("Glue audio driver for the TI OMAP1610/OMAP1710 TSC2101 codec.");
+    ("Glue audio driver for the TI TSC2101 codec.");
 MODULE_LICENSE("GPL");
diff -Naur linux-2.6.12-rc5_omap1/drivers/ssi/omap-uwire.c linux-2.6.12-rc5_omap1_h6300/drivers/ssi/omap-uwire.c
--- linux-2.6.12-rc5_omap1/drivers/ssi/omap-uwire.c	2005-08-23 22:36:33.827192123 +0300
+++ linux-2.6.12-rc5_omap1_h6300/drivers/ssi/omap-uwire.c	2005-08-23 22:38:07.586267550 +0300
@@ -205,6 +205,11 @@
 		omap_cfg_reg(N14_1610_UWIRE_CS0);
 		omap_cfg_reg(N15_1610_UWIRE_CS1);
 	}
+
+	if (machine_is_h6300 ()) {
+		omap_cfg_reg(X1_1510_UWIRE_CS0);
+		omap_cfg_reg(X1_1510_UWIRE_CS3);
+	}
 	if (machine_is_omap_perseus2()) {
 		/* configure pins: MPU_UW_nSCS1, MPU_UW_SDO, MPU_UW_SCLK */
 		int val = omap_readl(OMAP730_IO_CONF_9) & ~0x00EEE000;
diff -Naur linux-2.6.12-rc5_omap1/drivers/usb/gadget/omap_udc.c linux-2.6.12-rc5_omap1_h6300/drivers/usb/gadget/omap_udc.c
--- linux-2.6.12-rc5_omap1/drivers/usb/gadget/omap_udc.c	2005-08-23 22:36:33.937174616 +0300
+++ linux-2.6.12-rc5_omap1_h6300/drivers/usb/gadget/omap_udc.c	2005-08-23 22:38:07.653256887 +0300
@@ -2101,7 +2101,7 @@
 	/* boards that don't have VBUS sensing can't autogate 48MHz;
 	 * can't enter deep sleep while a gadget driver is active.
 	 */
-	if (machine_is_omap_innovator() || machine_is_omap_osk())
+	if (machine_is_omap_innovator() || machine_is_omap_osk() || machine_is_h6300())
 		omap_vbus_session(&udc->gadget, 1);
 
 done:
@@ -2119,7 +2119,7 @@
 	if (!driver || driver != udc->driver)
 		return -EINVAL;
 
-	if (machine_is_omap_innovator() || machine_is_omap_osk())
+	if (machine_is_omap_innovator() || machine_is_omap_osk() || machine_is_h6300())
 		omap_vbus_session(&udc->gadget, 0);
 
 	if (udc->transceiver)
@@ -2727,7 +2727,7 @@
 		hmc = HMC_1510;
 		type = "(unknown)";
 
-		if (machine_is_omap_innovator()) {
+		if (machine_is_omap_innovator() || machine_is_h6300()) {
 			/* just set up software VBUS detect, and then
 			 * later rig it so we always report VBUS.
 			 * FIXME without really sensing VBUS, we can't
@@ -2957,6 +2957,11 @@
 
 static int __init udc_init(void)
 {
+#ifdef USE_DMA
+	if (machine_is_h6300())
+		use_dma=0;
+#endif
+
 	INFO("%s, version: " DRIVER_VERSION
 #ifdef	USE_ISO
 		" (iso)"
diff -Naur linux-2.6.12-rc5_omap1/drivers/usb/gadget/omap_udc.h linux-2.6.12-rc5_omap1_h6300/drivers/usb/gadget/omap_udc.h
--- linux-2.6.12-rc5_omap1/drivers/usb/gadget/omap_udc.h	2005-08-23 22:36:33.939174298 +0300
+++ linux-2.6.12-rc5_omap1_h6300/drivers/usb/gadget/omap_udc.h	2005-08-23 22:37:10.616335999 +0300
@@ -174,6 +174,7 @@
 	unsigned			ep0_set_config:1;
 	unsigned			ep0_reset_config:1;
 	unsigned			ep0_setup:1;
+
 	struct completion		*done;
 };
 
diff -Naur linux-2.6.12-rc5_omap1/drivers/video/omap/lcd_h6300.c linux-2.6.12-rc5_omap1_h6300/drivers/video/omap/lcd_h6300.c
--- linux-2.6.12-rc5_omap1/drivers/video/omap/lcd_h6300.c	1970-01-01 02:00:00.000000000 +0200
+++ linux-2.6.12-rc5_omap1_h6300/drivers/video/omap/lcd_h6300.c	2005-08-23 22:38:07.655256568 +0300
@@ -0,0 +1,90 @@
+/*
+ * File: drivers/video/omap_new/lcd-inn1510.c
+ *
+ * LCD panel support for the TI OMAP1510 Innovator board
+ *
+ * Copyright (C) 2004 Nokia Corporation
+ * Author: Imre Deak <imre.deak@nokia.com>
+ *
+ * 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 <linux/module.h>
+#include <asm/io.h>
+
+
+#include "omapfb.h"
+
+// #define OMAPFB_DBG 1
+
+#include "debug.h"
+
+static int h6300_panel_init(struct lcd_panel *panel)
+{
+	DBGENTER(1);
+	DBGLEAVE(1);
+	return 0;
+}
+
+static void h6300_panel_cleanup(struct lcd_panel *panel)
+{
+	DBGENTER(1);
+	DBGLEAVE(1);
+}
+
+static int h6300_panel_enable(struct lcd_panel *panel)
+{
+	DBGENTER(1);
+	DBGLEAVE(1);
+	return 0;
+}
+
+static void h6300_panel_disable(struct lcd_panel *panel)
+{
+	DBGENTER(1);
+	DBGLEAVE(1);
+}
+
+static unsigned long h6300_panel_get_caps(struct lcd_panel *panel)
+{
+	return 0;
+}
+
+static struct lcdc_video_mode mode240x320 = {
+	.x_res = 240,
+	.y_res = 320,
+	.pixel_clock = 12500,
+	.bpp = 16,
+	.hsw = 12,
+	.hfp = 10,
+	.hbp = 10,
+	.vsw = 3,
+	.vfp = 10,
+	.vbp = 3,
+	.pcd = 4,
+};
+
+struct lcd_panel h6300_panel = {
+	.name       = "h6300",
+	.config	    = LCD_PANEL_TFT,
+	.video_mode = &mode240x320,
+
+	.init	 = h6300_panel_init,
+	.cleanup = h6300_panel_cleanup,
+	.enable  = h6300_panel_enable,
+	.disable = h6300_panel_disable,
+	.get_caps= h6300_panel_get_caps,
+};
+
diff -Naur linux-2.6.12-rc5_omap1/drivers/video/omap/Makefile linux-2.6.12-rc5_omap1_h6300/drivers/video/omap/Makefile
--- linux-2.6.12-rc5_omap1/drivers/video/omap/Makefile	2005-08-23 22:36:34.395101723 +0300
+++ linux-2.6.12-rc5_omap1_h6300/drivers/video/omap/Makefile	2005-08-23 22:38:07.656256409 +0300
@@ -11,6 +11,7 @@
 objs-y$(CONFIG_MACH_OMAP_H2) += lcd_h2.o
 objs-$(CONFIG_ARCH_OMAP16XX)$(CONFIG_MACH_OMAP_INNOVATOR) += lcd_inn1610.o
 objs-$(CONFIG_ARCH_OMAP1510)$(CONFIG_MACH_OMAP_INNOVATOR) += lcd_inn1510.o
+objs-$(CONFIG_ARCH_OMAP1510)$(CONFIG_MACH_H6300) += lcd_h6300.o
 objs-$(CONFIG_ARCH_OMAP16XX)$(CONFIG_MACH_OMAP_OSK) += lcd_osk.o
 objs-$(CONFIG_ARCH_OMAP730)$(CONFIG_MACH_OMAP_PERSEUS2) += lcd_p2.o
 
diff -Naur linux-2.6.12-rc5_omap1/drivers/video/omap/omapfb.h linux-2.6.12-rc5_omap1_h6300/drivers/video/omap/omapfb.h
--- linux-2.6.12-rc5_omap1/drivers/video/omap/omapfb.h	2005-08-23 22:36:34.397101404 +0300
+++ linux-2.6.12-rc5_omap1_h6300/drivers/video/omap/omapfb.h	2005-08-23 22:38:07.688251316 +0300
@@ -316,6 +316,7 @@
 extern struct lcd_panel osk_panel;
 extern struct lcd_panel innovator1610_panel;
 extern struct lcd_panel innovator1510_panel;
+extern struct lcd_panel h6300_panel;
 
 extern struct lcd_ctrl omapfb_lcdc_ctrl;
 
diff -Naur linux-2.6.12-rc5_omap1/drivers/video/omap/omapfb_main.c linux-2.6.12-rc5_omap1_h6300/drivers/video/omap/omapfb_main.c
--- linux-2.6.12-rc5_omap1/drivers/video/omap/omapfb_main.c	2005-08-23 22:36:34.472089467 +0300
+++ linux-2.6.12-rc5_omap1_h6300/drivers/video/omap/omapfb_main.c	2005-08-23 22:38:07.690250998 +0300
@@ -108,6 +108,9 @@
 	&innovator1610_panel,
 #endif
 #endif
+#ifdef CONFIG_MACH_H6300
+	&h6300_panel,
+#endif
 };
 
 static struct lcd_ctrl *ctrls[] = {
@@ -1881,6 +1884,8 @@
 			def_name = "inn1610";
 		if (machine_is_omap_innovator() && cpu_is_omap1510())
 			def_name = "inn1510";
+		if (machine_is_h6300())
+			def_name = "h6300";
 		if (def_name == NULL)
 			return -1;
 		strncpy(name, def_name, sizeof(name) - 1);
diff -Naur linux-2.6.12-rc5_omap1/include/asm-arm/arch-omap/board-h6300.h linux-2.6.12-rc5_omap1_h6300/include/asm-arm/arch-omap/board-h6300.h
--- linux-2.6.12-rc5_omap1/include/asm-arm/arch-omap/board-h6300.h	1970-01-01 02:00:00.000000000 +0200
+++ linux-2.6.12-rc5_omap1_h6300/include/asm-arm/arch-omap/board-h6300.h	2005-08-23 22:38:07.726245268 +0300
@@ -0,0 +1,40 @@
+/*
+ * linux/include/asm-arm/arch-omap/board-innovator.h
+ *
+ * Copyright (C) 2001 RidgeRun, Inc.
+ *
+ * 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 SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * 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.,
+ * 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+#ifndef __ASM_ARCH_H6300_H
+#define __ASM_ARCH_H6300_H
+
+#ifndef OMAP_SDRAM_DEVICE
+#define OMAP_SDRAM_DEVICE			D256M_1X16_4B
+#endif
+
+#define OMAP1510P1_IMIF_PRI_VALUE		0x00
+#define OMAP1510P1_EMIFS_PRI_VALUE		0x00
+#define OMAP1510P1_EMIFF_PRI_VALUE		0x00
+
+#define NR_FPGA_IRQS		24
+#define NR_IRQS                 IH_BOARD_BASE + NR_FPGA_IRQS
+
+#endif /* __ASM_ARCH_H6300_H */
diff -Naur linux-2.6.12-rc5_omap1/include/asm-arm/arch-omap/hardware.h linux-2.6.12-rc5_omap1_h6300/include/asm-arm/arch-omap/hardware.h
--- linux-2.6.12-rc5_omap1/include/asm-arm/arch-omap/hardware.h	2005-08-23 22:36:34.980008616 +0300
+++ linux-2.6.12-rc5_omap1_h6300/include/asm-arm/arch-omap/hardware.h	2005-08-23 22:38:07.727245109 +0300
@@ -299,6 +299,10 @@
 #include "board-innovator.h"
 #endif
 
+#ifdef CONFIG_MACH_H6300
+#include "board-h6300.h"
+#endif
+
 #ifdef CONFIG_MACH_OMAP_H2
 #include "board-h2.h"
 #endif
diff -Naur linux-2.6.12-rc5_omap1/include/asm-arm/arch-omap/mux.h linux-2.6.12-rc5_omap1_h6300/include/asm-arm/arch-omap/mux.h
--- linux-2.6.12-rc5_omap1/include/asm-arm/arch-omap/mux.h	2005-08-23 22:36:35.014003205 +0300
+++ linux-2.6.12-rc5_omap1_h6300/include/asm-arm/arch-omap/mux.h	2005-08-23 22:38:07.795234287 +0300
@@ -250,9 +250,16 @@
 	U18_1610_UWIRE_SDI,
 	W21_1610_UWIRE_SDO,
 	N14_1610_UWIRE_CS0,
-	P15_1610_UWIRE_CS0,
+	P15_1610_UWIRE_CS3,
 	N15_1610_UWIRE_CS1,
 
+	/* OMAP-1510 uWire */
+	X1_1510_UWIRE_CS3,
+	X1_1510_UWIRE_CS0,
+	X1_1510_UWIRE_SCLK,
+	X1_1510_UWIRE_SDO,
+	X1_1510_UWIRE_SDI,
+
 	/* OMAP-1610 Flash */
 	L3_1610_FLASH_CS2B_OE,
 	M8_1610_FLASH_CS2B_WE,
@@ -481,6 +488,13 @@
 MUX_CFG("P15_1610_UWIRE_CS3",	 8,   12,    1,	  1,  22,   0,	  1,	 1,  1)
 MUX_CFG("N15_1610_UWIRE_CS1",	 7,   18,    2,	  1,  14,   0,	 NA,	 0,  1)
 
+/* OMAP-1510 uWire */
+MUX_CFG("X1_1510_UWIRE_CS3",  8, 12, 1, NA, 0, 0,  NA, 0, 1)
+MUX_CFG("X1_1510_UWIRE_CS0",  8, 9,  1, NA, 0, 0,  NA, 0, 1)
+MUX_CFG("X1_1510_UWIRE_SCLK", 8, 6,  0, NA, 0, 0,  NA, 0, 1)
+MUX_CFG("X1_1510_UWIRE_SDO",  8, 3,  0, NA, 0, 0,  NA, 0, 1)
+MUX_CFG("X1_1510_UWIRE_SDI",  8, 0,  0, 1,  18, 1, NA, 0, 1)
+
 /* OMAP-1610 Flash */
 MUX_CFG("L3_1610_FLASH_CS2B_OE",10,    6,    1,	 NA,   0,   0,	 NA,	 0,  1)
 MUX_CFG("M8_1610_FLASH_CS2B_WE",10,    3,    1,	 NA,   0,   0,	 NA,	 0,  1)
@@ -545,7 +559,8 @@
 /* MCLK Settings */
 MUX_CFG("V5_1710_MCLK_ON",	 B,   15,    0,	  NA,   0,   0,   NA,	 0,  0)
 MUX_CFG("V5_1710_MCLK_OFF",	 B,   15,    6,	  NA,   0,   0,   NA,	 0,  0)
-MUX_CFG("R10_1610_MCLK_ON",	 B,   18,    0,	  NA,  22,   0,	  NA,	 1,  0)
+/* orig: MUX_CFG("R10_1610_MCLK_ON",	 B,   18,    0,	  NA,  22,   0,	  NA,	 1,  0) */
+MUX_CFG("R10_1610_MCLK_ON",	 B,   18,    0,	  NA,  22,   0,	  NA,	 1,  1)
 MUX_CFG("R10_1610_MCLK_OFF",	 B,   18,    6,	  2,   22,   1,	  2,	 1,  1)
 
 /* CompactFlash controller, conflicts with MMC1 */
diff -Naur linux-2.6.12-rc5_omap1/include/asm-arm/cpu-single.h linux-2.6.12-rc5_omap1_h6300/include/asm-arm/cpu-single.h
--- linux-2.6.12-rc5_omap1/include/asm-arm/cpu-single.h	2005-05-25 06:31:20.000000000 +0300
+++ linux-2.6.12-rc5_omap1_h6300/include/asm-arm/cpu-single.h	2005-08-23 22:38:07.817230785 +0300
@@ -41,4 +41,4 @@
 extern void cpu_dcache_clean_area(void *, int);
 extern void cpu_do_switch_mm(unsigned long pgd_phys, struct mm_struct *mm);
 extern void cpu_set_pte(pte_t *ptep, pte_t pte);
-extern volatile void cpu_reset(unsigned long addr);
+extern void cpu_reset(unsigned long addr);
diff -Naur linux-2.6.12-rc5_omap1/Makefile linux-2.6.12-rc5_omap1_h6300/Makefile
--- linux-2.6.12-rc5_omap1/Makefile	2005-08-23 22:36:35.409940179 +0300
+++ linux-2.6.12-rc5_omap1_h6300/Makefile	2005-08-23 22:38:07.818230626 +0300
@@ -11,7 +11,7 @@
 # expect to learn how to build the kernel reading this file.
 
 # Add custom flags here to avoid conflict with updates
-EXTRAVERSION := $(EXTRAVERSION)-omap2
+EXTRAVERSION := $(EXTRAVERSION)-omap1-h6300
 
 # Do not print "Entering directory ..."
 MAKEFLAGS += --no-print-directory
diff -Naur linux-2.6.12-rc5_omap1/sound/oss/Kconfig linux-2.6.12-rc5_omap1_h6300/sound/oss/Kconfig
--- linux-2.6.12-rc5_omap1/sound/oss/Kconfig	2005-08-23 22:36:35.439935405 +0300
+++ linux-2.6.12-rc5_omap1_h6300/sound/oss/Kconfig	2005-08-23 22:38:07.849225692 +0300
@@ -12,7 +12,7 @@
 
 config SOUND_OMAP_TSC2101
 	tristate "TSC2101 Stereo Codec"
-	depends on SOUND_OMAP && ( MACH_OMAP_H2 || MACH_OMAP_H3 )
+	depends on SOUND_OMAP && ARCH_OMAP1
 	select OMAP_TSC2101
 	select OMAP_UWIRE if ARCH_OMAP
 	---help---
diff -Naur linux-2.6.12-rc5_omap1/sound/oss/omap-audio.c linux-2.6.12-rc5_omap1_h6300/sound/oss/omap-audio.c
--- linux-2.6.12-rc5_omap1/sound/oss/omap-audio.c	2005-08-23 22:36:35.498926014 +0300
+++ linux-2.6.12-rc5_omap1_h6300/sound/oss/omap-audio.c	2005-08-23 22:38:07.895218371 +0300
@@ -56,8 +56,8 @@
 
 /***************************** MACROS ************************************/
 
-#undef DEBUG
-//#define DEBUG
+//#undef DEBUG
+#define DEBUG
 #ifdef DEBUG
 #define DPRINTK  printk
 #define FN_IN printk("[omap_audio.c:[%s] start\n", __FUNCTION__)
diff -Naur linux-2.6.12-rc5_omap1/sound/oss/omap-audio-tsc2101.c linux-2.6.12-rc5_omap1_h6300/sound/oss/omap-audio-tsc2101.c
--- linux-2.6.12-rc5_omap1/sound/oss/omap-audio-tsc2101.c	2005-08-23 22:36:35.557916624 +0300
+++ linux-2.6.12-rc5_omap1_h6300/sound/oss/omap-audio-tsc2101.c	2005-08-23 22:38:07.897218053 +0300
@@ -48,7 +48,7 @@
 #include "omap-audio.h"
 #include "omap-audio-dma-intfc.h"
 #include <asm/arch/mcbsp.h>
-#if CONFIG_ARCH_OMAP16XX
+#if CONFIG_ARCH_OMAP1
 #include <../drivers/ssi/omap-uwire.h>
 #include <asm/arch/dsp_common.h>
 #else
@@ -70,12 +70,14 @@
 
 #define CODEC_NAME		 "TSC2101"
 
-#if CONFIG_ARCH_OMAP16XX
-#define PLATFORM_NAME "OMAP16XX"
+#if CONFIG_ARCH_OMAP1
+#define PLATFORM_NAME "OMAP"
 #endif
 
 #if CONFIG_ARCH_OMAP16XX
 #define OMAP_DSP_BASE        0xE0000000
+#elif CONFIG_ARCH_OMAP1510
+#define OMAP_DSP_BASE        0xE0000000
 #endif
 
 /* Define to set the tsc as the master w.r.t McBSP */
@@ -91,9 +93,15 @@
 
 /* Select the McBSP For Audio */
 #if CONFIG_ARCH_OMAP16XX
-#define AUDIO_MCBSP                   OMAP_MCBSP1
+# define AUDIO_MCBSP                   OMAP_MCBSP1
+# define AUDIO_DMA_TX                  OMAP_DMA_MCBSP1_TX
+# define AUDIO_DMA_RX                  OMAP_DMA_MCBSP1_RX
+#elif CONFIG_ARCH_OMAP1510
+#	define AUDIO_MCBSP                   OMAP_MCBSP1
+# define AUDIO_DMA_TX                  OMAP_DMA_MCBSP1_TX
+# define AUDIO_DMA_RX                  OMAP_DMA_MCBSP1_RX
 #else
-#error "UnSupported Configuration"
+#	error "UnSupported Configuration"
 #endif
 
 #define REC_MASK 			          (SOUND_MASK_LINE | SOUND_MASK_MIC)
@@ -123,18 +131,18 @@
 
 /*********** Debug Macros ********/
 /* To Generate a rather shrill tone -test the entire path */
-//#define TONE_GEN
+#define TONE_GEN
 /* To Generate a tone for each keyclick - test the tsc,spi paths*/
-//#define TEST_KEYCLICK
+#define TEST_KEYCLICK
 /* To dump the tsc registers for debug */
-//#define TSC_DUMP_REGISTERS
+#define TSC_DUMP_REGISTERS
 
 #ifdef DPRINTK
 #undef DPRINTK
 #endif
 #undef DEBUG
 
-//#define DEBUG
+#define DEBUG
 #ifdef DEBUG
 #define DPRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
 #define FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
@@ -149,13 +157,13 @@
 
 static audio_stream_t output_stream = {
 	.id              = "TSC2101 out",
-	.dma_dev         = OMAP_DMA_MCBSP1_TX,
+	.dma_dev         = AUDIO_DMA_TX,
 	.input_or_output = FMODE_WRITE
 };
 
 static audio_stream_t input_stream = {
 	.id              = "TSC2101 in",
-	.dma_dev         = OMAP_DMA_MCBSP1_RX,
+	.dma_dev         = AUDIO_DMA_RX,
 	.input_or_output = FMODE_READ
 };
 
@@ -215,6 +223,17 @@
 };
 
 static struct omap_mcbsp_reg_cfg initial_config = {
+#if CONFIG_MACH_H6300
+	.spcr2 = 0x0005,
+	.spcr1 = 0x0005,
+	.rcr2  = 0x8041,
+	.rcr1  = 0x8041,
+	.xcr2  = 0x00a1,
+	.xcr1  = 0x00a1,
+	.srgr2 = 0xb000,
+	.srgr1 = 0xb000,
+	.pcr0  = 0x0081,
+#else
 	.spcr2 = FREE | FRST | GRST | XRST | XINTM(3),
 	.spcr1 = RINTM(3) | RRST,
 	.rcr2  = RPHASE | RFRLEN2(OMAP_MCBSP_WORD_8) |
@@ -230,14 +249,13 @@
 #if CONFIG_MACH_OMAP_H2
 	.pcr0  = CLKXM | CLKRM | FSXP | FSRP | CLKXP | CLKRP,
 #elif CONFIG_MACH_OMAP_H3
-
-#ifndef TSC_MASTER
+#	ifndef TSC_MASTER
 	.pcr0  = FSXM | FSRM | CLKXM | CLKRM | CLKXP | CLKRP,
-#else
+#		else
 	.pcr0  = CLKRM | SCLKME | FSXP | FSRP | CLKXP | CLKRP,
-#endif				/* tsc Master defs */
-
+#	endif				/* tsc Master defs */
 #endif				/* platform specific inits */
+#endif
 };
 
 /***************************** MODULES SPECIFIC FUNCTION PROTOTYPES ********************/
@@ -1218,5 +1236,5 @@
 
 MODULE_AUTHOR("Texas Instruments");
 MODULE_DESCRIPTION
-    ("Glue audio driver for the TI OMAP1610/OMAP1710 TSC2101 codec.");
+    ("Glue audio driver for the TI OMAP TSC2101 codec.");
 MODULE_LICENSE("GPL");