[ARM] 5525/1: AFEB9260: fix for MMC support
[safe/jmp/linux-2.6] / arch / arm / mach-pxa / spitz_pm.c
index 745a4dc..2e44905 100644 (file)
 
 #include <asm/irq.h>
 #include <asm/mach-types.h>
-#include <asm/hardware.h>
-#include <asm/hardware/scoop.h>
+#include <mach/hardware.h>
 
-#include <asm/arch/sharpsl.h>
-#include <asm/arch/spitz.h>
-#include <asm/arch/pxa-regs.h>
+#include <mach/sharpsl.h>
+#include <mach/spitz.h>
+#include <mach/pxa2xx-regs.h>
+#include <mach/pxa2xx-gpio.h>
 #include "sharpsl.h"
 
 #define SHARPSL_CHARGE_ON_VOLT         0x99  /* 2.9V */
@@ -46,44 +46,35 @@ static void spitz_charger_init(void)
 
 static void spitz_measure_temp(int on)
 {
-       if (on)
-               set_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_ADC_TEMP_ON);
-       else
-               reset_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_ADC_TEMP_ON);
+       gpio_set_value(SPITZ_GPIO_ADC_TEMP_ON, on);
 }
 
 static void spitz_charge(int on)
 {
        if (on) {
                if (sharpsl_pm.flags & SHARPSL_SUSPENDED) {
-                       set_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_JK_B);
-                       reset_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_CHRG_ON);
+                       gpio_set_value(SPITZ_GPIO_JK_B, 1);
+                       gpio_set_value(SPITZ_GPIO_CHRG_ON, 0);
                } else {
-                       reset_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_JK_B);
-                       reset_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_CHRG_ON);
+                       gpio_set_value(SPITZ_GPIO_JK_B, 0);
+                       gpio_set_value(SPITZ_GPIO_CHRG_ON, 0);
                }
        } else {
-               reset_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_JK_B);
-               set_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_CHRG_ON);
+               gpio_set_value(SPITZ_GPIO_JK_B, 0);
+               gpio_set_value(SPITZ_GPIO_CHRG_ON, 1);
        }
 }
 
 static void spitz_discharge(int on)
 {
-       if (on)
-               set_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_JK_A);
-       else
-               reset_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_JK_A);
+       gpio_set_value(SPITZ_GPIO_JK_A, on);
 }
 
 /* HACK - For unknown reasons, accurate voltage readings are only made with a load
    on the power bus which the green led on spitz provides */
 static void spitz_discharge1(int on)
 {
-       if (on)
-               set_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_LED_GREEN);
-       else
-               reset_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_LED_GREEN);
+       gpio_set_value(SPITZ_GPIO_LED_GREEN, on);
 }
 
 static void spitz_presuspend(void)
@@ -118,9 +109,6 @@ static void spitz_presuspend(void)
        /* nRESET_OUT Disable */
        PSLR |= PSLR_SL_ROD;
 
-       /* Clear reset status */
-       RCSR = RCSR_HWR | RCSR_WDR | RCSR_SMR | RCSR_GPR;
-
        /* Stop 3.6MHz and drive HIGH to PCMCIA and CS */
        PCFR = PCFR_GPR_EN | PCFR_OPDE;
 }
@@ -209,7 +197,11 @@ struct sharpsl_charger_machinfo spitz_pm_machinfo = {
        .read_devdata     = spitzpm_read_devdata,
        .charger_wakeup   = spitz_charger_wakeup,
        .should_wakeup    = spitz_should_wakeup,
+#if defined(CONFIG_LCD_CORGI)
+       .backlight_limit = corgi_lcd_limit_intensity,
+#elif defined(CONFIG_BACKLIGHT_CORGI)
         .backlight_limit  = corgibl_limit_intensity,
+#endif
        .charge_on_volt   = SHARPSL_CHARGE_ON_VOLT,
        .charge_on_temp   = SHARPSL_CHARGE_ON_TEMP,
        .charge_acin_high = SHARPSL_CHARGE_ON_ACIN_HIGH,
@@ -231,6 +223,10 @@ static int __devinit spitzpm_init(void)
 {
        int ret;
 
+       if (!machine_is_spitz() && !machine_is_akita()
+                       && !machine_is_borzoi())
+               return -ENODEV;
+
        spitzpm_device = platform_device_alloc("sharpsl-pm", -1);
        if (!spitzpm_device)
                return -ENOMEM;