Index: linux-2.6.15-rc2/sound/soc/pxa/corgi.c
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ linux-2.6.15-rc2/sound/soc/pxa/corgi.c	2005-11-28 09:44:27.000000000 +0000
@@ -0,0 +1,152 @@
+/*
+ * 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 <linux/platform_device.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(struct snd_soc_machine *machine, pm_message_t state)
+{
+	return 0;
+}
+
+static int corgi_resume(struct snd_soc_machine *machine)
+{
+	return 0;
+}
+
+/*
+ * This is an example machine initialisation for a wm8753 connected to a
+ * Mainstone II. It is missing logic to detect hp/mic insertions and logic
+ * to re-route the audio in such an event.
+ */
+
+static int corgi_wm8731_init(struct snd_soc_codec *codec)
+{
+}
+
+static int corgi_wm8750_init(struct snd_soc_codec *codec)
+{
+	//int i, err;
+
+	/* set up mainstone codec pins */
+	//for (i = 0; i < ARRAY_SIZE(wm8753_mainstone_pins); i++)
+	//	snd_soc_dpm_set_connection(codec, &wm8753_mainstone_pins[i]);
+
+	/* add mainstone specific controls */
+	//for (i = 0; i < ARRAY_SIZE(wm8753_mainstone_controls); i++) {
+	//	if ((err = snd_ctl_add(codec->card, snd_soc_cnew(&wm8753_mainstone_controls[i],codec, NULL))) < 0)
+	//		return err;
+	//}
+
+	/* add mainstone specific widgets */
+	//for(i = 0; i < ARRAY_SIZE(wm8753_dpm_widgets); i++) {
+	//	snd_soc_dpm_new_control(codec, &wm8753_dpm_widgets[i]);
+	//}
+
+	/* set up mainstone specific audio path interconnects */
+	//for(i = 0; intercon[i][0] != NULL; i++) {
+	//	snd_soc_dpm_connect_input(codec, intercon[i][0], intercon[i][1], intercon[i][2]);
+	//}
+	//snd_soc_dpm_sync(codec);
+
+	return 0;
+}
+
+static struct snd_soc_machine_config corgi_codecs[] = {
+{
+	.name = "WM8731",
+	.sname = "WM8731",
+	.interface = SND_SOC_I2S,
+	.int_num = 0,
+	.init = corgi_wm8731_init,
+},
+};
+
+static struct snd_soc_machine_config spitz_codecs[] = {
+{
+	.name = "WM8750",
+	.sname = "WM8750",
+	.interface = SND_SOC_I2S,
+	.int_num = 0,
+	.init = corgi_wm8750_init,
+},
+};
+
+
+static int corgi_probe(struct snd_soc_machine *machine)
+{
+	return 0;
+}
+
+static int corgi_remove(struct snd_soc_machine *machine)
+{
+	return 0;
+}
+
+static struct snd_soc_machine soc_corgi = {
+	.name = "Corgi SoC Sound",
+	.probe = corgi_probe,
+	.remove = corgi_remove,
+	.suspend = corgi_suspend,
+	.resume = corgi_resume,
+	.ops = &corgi_ops,
+	.config = corgi_codecs,
+	.nconfigs = 1,
+};
+
+
+static int __init snd_soc_init(void)
+{
+
+	if (machine_is_corgi() || machine_is_shepherd() || machine_is_husky()) {
+		soc_corgi.config = corgi_codecs;
+	} else if (machine_is_akita() || machine_is_spitz() || machine_is_borzoi()) {
+		soc_corgi.config = spitz_codecs;
+	}
+
+	return snd_soc_register_machine(&soc_corgi);
+}
+
+static void __exit snd_soc_exit(void)
+{
+	snd_soc_unregister_machine(&soc_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.15-rc2/sound/soc/pxa/Makefile
===================================================================
--- linux-2.6.15-rc2.orig/sound/soc/pxa/Makefile	2005-11-28 09:46:55.000000000 +0000
+++ linux-2.6.15-rc2/sound/soc/pxa/Makefile	2005-11-28 09:47:05.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.15-rc2/sound/soc/pxa/Kconfig
===================================================================
--- linux-2.6.15-rc2.orig/sound/soc/pxa/Kconfig	2005-11-28 09:46:55.000000000 +0000
+++ linux-2.6.15-rc2/sound/soc/pxa/Kconfig	2005-11-28 09:47:05.000000000 +0000
@@ -42,5 +42,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
