Merge git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client
[pandora-kernel.git] / arch / arm / mach-s3c2440 / mach-gta02.c
index 6629998..0db2411 100644 (file)
@@ -89,6 +89,8 @@
 #include <plat/udc.h>
 #include <plat/gpio-cfg.h>
 #include <plat/iic.h>
+#include <plat/ts.h>
+
 
 static struct pcf50633 *gta02_pcf;
 
@@ -283,9 +285,6 @@ struct pcf50633_platform_data gta02_pcf_pdata = {
                                .valid_modes_mask = REGULATOR_MODE_NORMAL,
                                .always_on = 1,
                                .apply_uV = 1,
-                               .state_mem = {
-                                       .enabled = 1,
-                               },
                        },
                },
                [PCF50633_REGULATOR_DOWN1] = {
@@ -304,9 +303,6 @@ struct pcf50633_platform_data gta02_pcf_pdata = {
                                .valid_modes_mask = REGULATOR_MODE_NORMAL,
                                .apply_uV = 1,
                                .always_on = 1,
-                               .state_mem = {
-                                       .enabled = 1,
-                               },
                        },
                },
                [PCF50633_REGULATOR_HCLDO] = {
@@ -314,8 +310,8 @@ struct pcf50633_platform_data gta02_pcf_pdata = {
                                .min_uV = 2000000,
                                .max_uV = 3300000,
                                .valid_modes_mask = REGULATOR_MODE_NORMAL,
-                               .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE,
-                               .always_on = 1,
+                               .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE |
+                                               REGULATOR_CHANGE_STATUS,
                        },
                },
                [PCF50633_REGULATOR_LDO1] = {
@@ -323,10 +319,8 @@ struct pcf50633_platform_data gta02_pcf_pdata = {
                                .min_uV = 3300000,
                                .max_uV = 3300000,
                                .valid_modes_mask = REGULATOR_MODE_NORMAL,
+                               .valid_ops_mask = REGULATOR_CHANGE_STATUS,
                                .apply_uV = 1,
-                               .state_mem = {
-                                       .enabled = 0,
-                               },
                        },
                },
                [PCF50633_REGULATOR_LDO2] = {
@@ -350,6 +344,7 @@ struct pcf50633_platform_data gta02_pcf_pdata = {
                                .min_uV = 3200000,
                                .max_uV = 3200000,
                                .valid_modes_mask = REGULATOR_MODE_NORMAL,
+                               .valid_ops_mask = REGULATOR_CHANGE_STATUS,
                                .apply_uV = 1,
                        },
                },
@@ -358,10 +353,8 @@ struct pcf50633_platform_data gta02_pcf_pdata = {
                                .min_uV = 3000000,
                                .max_uV = 3000000,
                                .valid_modes_mask = REGULATOR_MODE_NORMAL,
+                               .valid_ops_mask = REGULATOR_CHANGE_STATUS,
                                .apply_uV = 1,
-                               .state_mem = {
-                                       .enabled = 1,
-                               },
                        },
                },
                [PCF50633_REGULATOR_LDO6] = {
@@ -376,9 +369,6 @@ struct pcf50633_platform_data gta02_pcf_pdata = {
                                .min_uV = 1800000,
                                .max_uV = 1800000,
                                .valid_modes_mask = REGULATOR_MODE_NORMAL,
-                               .state_mem = {
-                                       .enabled = 1,
-                               },
                        },
                },
 
@@ -458,28 +448,10 @@ static struct s3c2410_platform_nand __initdata gta02_nand_info = {
 };
 
 
-static void gta02_udc_command(enum s3c2410_udc_cmd_e cmd)
-{
-       switch (cmd) {
-       case S3C2410_UDC_P_ENABLE:
-               pr_debug("%s S3C2410_UDC_P_ENABLE\n", __func__);
-               gpio_direction_output(GTA02_GPIO_USB_PULLUP, 1);
-               break;
-       case S3C2410_UDC_P_DISABLE:
-               pr_debug("%s S3C2410_UDC_P_DISABLE\n", __func__);
-               gpio_direction_output(GTA02_GPIO_USB_PULLUP, 0);
-               break;
-       case S3C2410_UDC_P_RESET:
-               pr_debug("%s S3C2410_UDC_P_RESET\n", __func__);
-               /* FIXME: Do something here. */
-       }
-}
-
 /* Get PMU to set USB current limit accordingly. */
-static struct s3c2410_udc_mach_info gta02_udc_cfg = {
+static struct s3c2410_udc_mach_info gta02_udc_cfg __initdata = {
        .vbus_draw      = gta02_udc_vbus_draw,
-       .udc_command    = gta02_udc_command,
-
+       .pullup_pin = GTA02_GPIO_USB_PULLUP,
 };
 
 /* USB */
@@ -492,6 +464,13 @@ static struct s3c2410_hcd_info gta02_usb_info __initdata = {
        },
 };
 
+/* Touchscreen */
+static struct s3c2410_ts_mach_info gta02_ts_info = {
+       .delay                  = 10000,
+       .presc                  = 0xff, /* slow as we can go */
+       .oversampling_shift     = 2,
+};
+
 /* Buttons */
 static struct gpio_keys_button gta02_buttons[] = {
        {
@@ -545,6 +524,8 @@ static struct platform_device *gta02_devices[] __initdata = {
        &samsung_asoc_dma,
        &s3c_device_i2c0,
        &gta02_buttons_device,
+       &s3c_device_adc,
+       &s3c_device_ts,
 };
 
 /* These guys DO need to be children of PMU. */
@@ -594,6 +575,7 @@ static void __init gta02_machine_init(void)
 #endif
 
        s3c24xx_udc_set_platdata(&gta02_udc_cfg);
+       s3c24xx_ts_set_platdata(&gta02_ts_info);
        s3c_ohci_set_platdata(&gta02_usb_info);
        s3c_nand_set_platdata(&gta02_nand_info);
        s3c_i2c0_set_platdata(NULL);
@@ -602,6 +584,8 @@ static void __init gta02_machine_init(void)
 
        platform_add_devices(gta02_devices, ARRAY_SIZE(gta02_devices));
        pm_power_off = gta02_poweroff;
+
+       regulator_has_full_constraints();
 }