Merge branch 'for_paulus' of master.kernel.org:/pub/scm/linux/kernel/git/galak/powerpc
[cascardo/linux.git] / arch / arm / mach-pxa / corgi_ssp.c
index 0ef4282..8a25a1c 100644 (file)
@@ -15,7 +15,7 @@
 #include <linux/sched.h>
 #include <linux/slab.h>
 #include <linux/delay.h>
-#include <linux/device.h>
+#include <linux/platform_device.h>
 #include <asm/hardware.h>
 #include <asm/mach-types.h>
 
@@ -191,19 +191,16 @@ void __init corgi_ssp_set_machinfo(struct corgissp_machinfo *machinfo)
        ssp_machinfo = machinfo;
 }
 
-static int __init corgi_ssp_probe(struct device *dev)
+static int __init corgi_ssp_probe(struct platform_device *dev)
 {
        int ret;
 
        /* Chip Select - Disable All */
-       GPDR(ssp_machinfo->cs_lcdcon) |= GPIO_bit(ssp_machinfo->cs_lcdcon); /* output */
-       GPSR(ssp_machinfo->cs_lcdcon) = GPIO_bit(ssp_machinfo->cs_lcdcon);  /* High - Disable LCD Control/Timing Gen */
-       GPDR(ssp_machinfo->cs_max1111) |= GPIO_bit(ssp_machinfo->cs_max1111); /* output */
-       GPSR(ssp_machinfo->cs_max1111) = GPIO_bit(ssp_machinfo->cs_max1111);  /* High - Disable MAX1111*/
-       GPDR(ssp_machinfo->cs_ads7846) |= GPIO_bit(ssp_machinfo->cs_ads7846);  /* output */
-       GPSR(ssp_machinfo->cs_ads7846) = GPIO_bit(ssp_machinfo->cs_ads7846);   /* High - Disable ADS7846*/
+       pxa_gpio_mode(ssp_machinfo->cs_lcdcon  | GPIO_OUT | GPIO_DFLT_HIGH);
+        pxa_gpio_mode(ssp_machinfo->cs_max1111 | GPIO_OUT | GPIO_DFLT_HIGH);
+        pxa_gpio_mode(ssp_machinfo->cs_ads7846 | GPIO_OUT | GPIO_DFLT_HIGH);
 
-       ret = ssp_init(&corgi_ssp_dev,ssp_machinfo->port);
+       ret = ssp_init(&corgi_ssp_dev, ssp_machinfo->port, 0);
 
        if (ret)
                printk(KERN_ERR "Unable to register SSP handler!\n");
@@ -216,45 +213,44 @@ static int __init corgi_ssp_probe(struct device *dev)
        return ret;
 }
 
-static int corgi_ssp_remove(struct device *dev)
+static int corgi_ssp_remove(struct platform_device *dev)
 {
        ssp_exit(&corgi_ssp_dev);
        return 0;
 }
 
-static int corgi_ssp_suspend(struct device *dev, pm_message_t state, u32 level)
+static int corgi_ssp_suspend(struct platform_device *dev, pm_message_t state)
 {
-       if (level == SUSPEND_POWER_DOWN) {
-               ssp_flush(&corgi_ssp_dev);
-               ssp_save_state(&corgi_ssp_dev,&corgi_ssp_state);
-       }
+       ssp_flush(&corgi_ssp_dev);
+       ssp_save_state(&corgi_ssp_dev,&corgi_ssp_state);
+
        return 0;
 }
 
-static int corgi_ssp_resume(struct device *dev, u32 level)
+static int corgi_ssp_resume(struct platform_device *dev)
 {
-       if (level == RESUME_POWER_ON) {
-               GPSR(ssp_machinfo->cs_lcdcon) = GPIO_bit(ssp_machinfo->cs_lcdcon);  /* High - Disable LCD Control/Timing Gen */
-               GPSR(ssp_machinfo->cs_max1111) = GPIO_bit(ssp_machinfo->cs_max1111); /* High - Disable MAX1111*/
-               GPSR(ssp_machinfo->cs_ads7846) = GPIO_bit(ssp_machinfo->cs_ads7846); /* High - Disable ADS7846*/
-               ssp_restore_state(&corgi_ssp_dev,&corgi_ssp_state);
-               ssp_enable(&corgi_ssp_dev);
-       }
+       GPSR(ssp_machinfo->cs_lcdcon) = GPIO_bit(ssp_machinfo->cs_lcdcon);  /* High - Disable LCD Control/Timing Gen */
+       GPSR(ssp_machinfo->cs_max1111) = GPIO_bit(ssp_machinfo->cs_max1111); /* High - Disable MAX1111*/
+       GPSR(ssp_machinfo->cs_ads7846) = GPIO_bit(ssp_machinfo->cs_ads7846); /* High - Disable ADS7846*/
+       ssp_restore_state(&corgi_ssp_dev,&corgi_ssp_state);
+       ssp_enable(&corgi_ssp_dev);
+
        return 0;
 }
 
-static struct device_driver corgissp_driver = {
-       .name           = "corgi-ssp",
-       .bus            = &platform_bus_type,
+static struct platform_driver corgissp_driver = {
        .probe          = corgi_ssp_probe,
        .remove         = corgi_ssp_remove,
        .suspend        = corgi_ssp_suspend,
        .resume         = corgi_ssp_resume,
+       .driver         = {
+               .name   = "corgi-ssp",
+       },
 };
 
 int __init corgi_ssp_init(void)
 {
-       return driver_register(&corgissp_driver);
+       return platform_driver_register(&corgissp_driver);
 }
 
 arch_initcall(corgi_ssp_init);