diff -Naur linux-2.6.30.4-orig/drivers/spi2/busses/comcerto_spi.c linux-2.6.30.4-new/drivers/spi2/busses/comcerto_spi.c
--- linux-2.6.30.4-orig/drivers/spi2/busses/comcerto_spi.c	2009-08-22 00:59:18.807145000 -0700
+++ linux-2.6.30.4-new/drivers/spi2/busses/comcerto_spi.c	2009-08-21 19:05:53.000000000 -0700
@@ -18,16 +18,12 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
-#include <linux/version.h>
-#if !defined (AUTOCONF_INCLUDED)
-#include <linux/config.h>
-#endif
 #include <linux/interrupt.h>
+#include <linux/platform_device.h>
 #include <asm/io.h>
 #include <asm/sizes.h>
 #include <mach/irqs.h>
 
-#include <linux/platform_device.h>
 #include "comcerto_spi.h"
 
 /**
@@ -492,18 +488,12 @@
  *
  *
  */
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
-static int __init comcerto_spi_probe(struct device *dev)
-{
-	struct platform_device *pdev = to_platform_device(dev);
-#else
 static int __init comcerto_spi_probe(struct platform_device *pdev)
 {
-#endif
 	struct comcerto_spi *spi;
 	unsigned long base, len;
 
-//	printk(KERN_INFO "comcerto_spi_probe(%#lx)\n", (unsigned long) dev);
+	printk(KERN_INFO "comcerto_spi_probe(%p)\n", pdev);
 
 	spi = kmalloc(sizeof(struct comcerto_spi), GFP_KERNEL);
 	if (spi == NULL) {
@@ -532,9 +522,7 @@
 #endif
 	spi->adapter = &comcerto_spi_adapter;
 
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
 	comcerto_spi_adapter.dev.parent = &pdev->dev;
-#endif
 	comcerto_spi_adapter.data = spi;
 	comcerto_spi_adapter.caps.max_sc_rate = (COMCERTO_AHBCLK * 1000000) / 2;
 	comcerto_spi_adapter.caps.min_sc_rate = (COMCERTO_AHBCLK * 1000000) / 0xffff;
@@ -550,11 +538,8 @@
 	}
 
 	spi->clock_rate = (COMCERTO_AHBCLK * 1000000);
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
 	dev_set_drvdata(&pdev->dev, spi);
-#else
-	pdev->data = (unsigned long) spi;
-#endif
+
 	return 0;
 
       err3:
@@ -577,20 +562,12 @@
  *
  *
  */
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
-static int comcerto_spi_remove(struct device *dev)
+static int comcerto_spi_remove(struct platform_device *pdev)
 {
-	struct platform_device *pdev = to_platform_device(dev);
 	struct comcerto_spi *spi = dev_get_drvdata(&pdev->dev);
 	unsigned long base, len;
 
 	dev_set_drvdata(&pdev->dev, NULL);
-#else
-static int comcerto_spi_remove(struct platform_device *pdev)
-{
-	struct comcerto_spi *spi = (struct comcerto_spi *) pdev->data;
-	unsigned long base, len;
-#endif
 
 	spi_del_adapter(spi->adapter);
 
@@ -608,42 +585,15 @@
 	return 0;
 }
 
-static struct resource comcerto_spi_resources[] = {
-	{
-	 .start = COMCERTO_APB_SPI_BASE,
-	 .end = COMCERTO_APB_SPI_BASE + SZ_4K,
-	 .flags = IORESOURCE_MEM,
-	 },
-	{
-	 .start = IRQ_SPI,
-	 .flags = IORESOURCE_IRQ,
-	 }
-};
-
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
-static struct device_driver comcerto_spi_driver = {
-	.name = "comcerto-spi",
-	.bus = &platform_bus_type,
+static struct platform_driver comcerto_spi_driver = {
+	.driver = {
+		.name	= "comcerto-spi",
+		.owner	= THIS_MODULE,
+	},
 	.probe = comcerto_spi_probe,
 	.remove = comcerto_spi_remove,
 };
 
-static void comcerto_spi_release(struct device *dev)
-{
-	/* Just to keep driver model happy */
-}
-
-static struct platform_device comcerto_spi_device = {
-	.name = "comcerto-spi",
-	.id = -1,
-	.num_resources = ARRAY_SIZE(comcerto_spi_resources),
-	.resource = comcerto_spi_resources,
-	.dev = {
-		.release = comcerto_spi_release,
-	},
-};
-
-
 /**
  * comcerto_spi_init -
  *
@@ -651,63 +601,11 @@
  */
 static int __init comcerto_spi_init(void)
 {
-//	printk(KERN_INFO "comcerto_spi_init()\n");
-
-	if (driver_register(&comcerto_spi_driver)) {
-		printk(KERN_INFO "comcerto_spi: error registering driver\n");
-		goto err0;
-	}
-
-	if (platform_device_register(&comcerto_spi_device)) {
-		printk(KERN_INFO "comcerto_spi: error registering device\n");
-		goto err1;
-	}
-
-	return 0;
-
-      err1:
-	driver_unregister(&comcerto_spi_driver);
-
-      err0:
-	return -1;
-}
-
-/**
- * comcerto_spi_exit -
- *
- *
- */
-static void __exit comcerto_spi_exit(void)
-{
-	platform_device_unregister(&comcerto_spi_device);
-	driver_unregister(&comcerto_spi_driver);
-}
-
-#else /* LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0) */ 
-
-static struct platform_device comcerto_spi_device = {
-	.name = "comcerto-spi",
-	.id = -1,
-	.num_resources = ARRAY_SIZE(comcerto_spi_resources),
-	.resource = comcerto_spi_resources,
-};
-
-/**
- *  comcerto_spi_init -
- *
- *
- */
-static int __init comcerto_spi_init(void)
-{
-	if (comcerto_spi_probe(&comcerto_spi_device)) {
-		printk(KERN_INFO "comcerto_spi: error probing device\n");
-		goto err;
-	}
-
-	return 0;
-
-  err:
-	return -1;
+	int r;
+	printk("spi_init\n");
+	r = platform_driver_register(&comcerto_spi_driver);
+	printk("got %d\n", r);
+	return r;
 }
 
 /**
@@ -717,9 +615,8 @@
  */
 static void __exit comcerto_spi_exit(void)
 {
-	comcerto_spi_remove(&comcerto_spi_device);
+	platform_driver_unregister(&comcerto_spi_driver);
 }
-#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0) */
 
 MODULE_AUTHOR("Mindspeed Technologies, Inc.");
 MODULE_DESCRIPTION("Comcerto SPI bus driver");
