Index: linux-2.6.14/sound/soc/pxa/corgi.c
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ linux-2.6.14/sound/soc/pxa/corgi.c	2005-11-02 14:48:48.000000000 +0000
@@ -0,0 +1,95 @@
+/*
+ * Copyright 2005 Openedhand Ltd.
+ *
+ * Author: Richard Purdie <richard@openedhand.com>
+ *
+ * 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/module.h>
+#include <linux/moduleparam.h>
+#include <linux/version.h>
+#include <linux/kernel.h>
+#include <sound/driver.h>
+#include <sound/core.h>
+#include <sound/pcm.h>
+#include <sound/soc.h>
+
+#include <asm/mach-types.h>
+#include <asm/arch/pxa-regs.h>
+#include <asm/arch/audio.h>
+
+static int corgi_startup(snd_pcm_substream_t *substream)
+{
+	return 0;
+}
+
+static void corgi_shutdown(snd_pcm_substream_t *substream)
+{
+}
+
+static struct snd_soc_ops corgi_ops = {
+	.startup = corgi_startup,
+	.shutdown = corgi_shutdown,
+};
+
+static int corgi_suspend(snd_soc_machine_t *machine, pm_message_t state)
+{
+	return 0;
+}
+
+static int corgi_resume(snd_soc_machine_t *machine)
+{
+	return 0;
+}
+
+static int corgi_probe(snd_soc_machine_t *machine)
+{
+	int ret = 0;
+	char *name;
+
+	if (machine_is_corgi() || machine_is_shepherd() || machine_is_husky()) {
+		name = "WM8731";
+	} else if (machine_is_akita() || machine_is_spitz() || machine_is_borzoi()) {
+		name = "WM8750";
+	}
+
+	if((ret = snd_soc_pcm_connect(machine, name, SND_SOC_I2S, 0)) < 0) {
+		printk(KERN_ERR "soc: failed to create new pcm for %s\n", name);
+	}
+	
+	return snd_soc_pcm_register(machine, name);
+}
+
+static int corgi_remove(snd_soc_machine_t *machine)
+{
+	return 0;
+}
+
+static struct snd_soc_machine corgi = {
+	.name = "Corgi SoC Sound",
+	.probe = corgi_probe,
+	.remove = corgi_remove,
+	.suspend = corgi_suspend,
+	.resume = corgi_resume,
+	.ops = &corgi_ops,
+};
+
+static int __init snd_soc_init(void) 
+{
+	return snd_soc_register_machine(&corgi);
+}
+
+static void __exit snd_soc_exit(void) 
+{
+	snd_soc_unregister_machine(&corgi);
+}
+
+module_init(snd_soc_init); 
+module_exit(snd_soc_exit);
+
+MODULE_AUTHOR("Richard Purdie <richard@openedhand.com>");
+MODULE_DESCRIPTION("ALSA SoC Corgi");
+MODULE_LICENSE("GPL");
Index: linux-2.6.14/sound/soc/pxa/Makefile
===================================================================
--- linux-2.6.14.orig/sound/soc/pxa/Makefile	2005-11-02 09:59:20.000000000 +0000
+++ linux-2.6.14/sound/soc/pxa/Makefile	2005-11-02 10:41:19.000000000 +0000
@@ -4,10 +4,12 @@
 snd-pxa2xx-soc-i2s-objs := pxa2xx-i2s.o 
 snd-pxa2xx-soc-ssp-objs := pxa2xx-ssp.o
 snd-pxa2xx-soc-mainstone-objs := mainstone.o
+snd-pxa2xx-soc-corgi-objs := corgi.o
 
 obj-$(CONFIG_SND_PXA2xx_SOC) += snd-pxa2xx-soc.o
 obj-$(CONFIG_SND_PXA2xx_SOC_AC97) += snd-pxa2xx-soc-ac97.o
 obj-$(CONFIG_SND_PXA2xx_SOC_I2S) += snd-pxa2xx-soc-i2s.o
 obj-$(CONFIG_SND_PXA2xx_SOC_SSP) += snd-pxa2xx-soc-ssp.o
 
-obj-$(CONFIG_SND_PXA2xx_SOC_MAINSTONE) += snd-pxa2xx-soc-mainstone.o
\ No newline at end of file
+obj-$(CONFIG_SND_PXA2xx_SOC_MAINSTONE) += snd-pxa2xx-soc-mainstone.o
+obj-$(CONFIG_SND_PXA2xx_SOC_CORGI) += snd-pxa2xx-soc-corgi.o
\ No newline at end of file
Index: linux-2.6.14/sound/soc/pxa/Kconfig
===================================================================
--- linux-2.6.14.orig/sound/soc/pxa/Kconfig	2005-11-02 09:59:20.000000000 +0000
+++ linux-2.6.14/sound/soc/pxa/Kconfig	2005-11-02 10:36:25.000000000 +0000
@@ -43,5 +43,12 @@
 	depends on SND_PXA2xx_SOC
 	help
 	  Say Y or M if you want to add support for SoC audio on Mainstone.
+
+config SND_PXA2xx_SOC_CORGI
+	tristate "SoC Audio support for Sharp Zaurus Corgi"
+	depends on SND_PXA2xx_SOC
+	help
+	  Say Y or M if you want to add support for SoC audio on Sharp Zaurus 
+	  Models.
 	  
 endmenu
