aboutsummaryrefslogtreecommitdiff
path: root/arch/arm/mach-s3c2442/mach-gta02.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/mach-s3c2442/mach-gta02.c')
-rw-r--r--arch/arm/mach-s3c2442/mach-gta02.c79
1 files changed, 70 insertions, 9 deletions
diff --git a/arch/arm/mach-s3c2442/mach-gta02.c b/arch/arm/mach-s3c2442/mach-gta02.c
index 3e0b12ac45d..9214699ac8d 100644
--- a/arch/arm/mach-s3c2442/mach-gta02.c
+++ b/arch/arm/mach-s3c2442/mach-gta02.c
@@ -110,6 +110,15 @@
#include <linux/platform_battery.h>
+#include <mach/ts.h>
+#include <linux/input/touchscreen/ts_filter_chain.h>
+#ifdef CONFIG_TOUCHSCREEN_FILTER
+#include <linux/input/touchscreen/ts_filter_linear.h>
+#include <linux/input/touchscreen/ts_filter_mean.h>
+#include <linux/input/touchscreen/ts_filter_median.h>
+#include <linux/input/touchscreen/ts_filter_group.h>
+#endif
+
struct pcf50633 *gta02_pcf;
/*
@@ -202,12 +211,6 @@ static struct platform_device spigpio_device = {
},
};
-static void gta02_glamo_registered(struct device *dev)
-{
- spigpio_device.dev.parent = dev;
- platform_device_register(&spigpio_device);
-}
-
static struct fb_videomode gta02_glamo_modes[] = {
{
.name = "480x640",
@@ -251,7 +254,6 @@ static struct glamo_mmc_platform_data gta02_glamo_mmc_pdata = {
static struct glamo_gpio_platform_data gta02_glamo_gpio_pdata = {
.base = GTA02_GPIO_GLAMO_BASE,
- .registered = gta02_glamo_registered,
};
static struct glamo_platform_data gta02_glamo_pdata = {
@@ -555,7 +557,8 @@ struct pcf50633_platform_data gta02_pcf_pdata = {
.max_uV = 3300000,
.valid_modes_mask = REGULATOR_MODE_NORMAL,
.valid_ops_mask = REGULATOR_CHANGE_VOLTAGE |
- REGULATOR_CHANGE_STATUS,
+ REGULATOR_CHANGE_VOLTAGE,
+ .always_on = 1,
},
.num_consumer_supplies = ARRAY_SIZE(hcldo_consumers),
.consumer_supplies = hcldo_consumers,
@@ -1010,6 +1013,51 @@ static struct platform_device gta02_pwm_leds_device = {
}
};
+/* Touchscreen configuration. */
+
+#ifdef CONFIG_TOUCHSCREEN_FILTER
+const static struct ts_filter_group_configuration gta02_ts_group = {
+ .length = 12,
+ .close_enough = 10,
+ .threshold = 6, /* At least half of the points in a group. */
+ .attempts = 10,
+};
+
+const static struct ts_filter_median_configuration gta02_ts_median = {
+ .extent = 20,
+ .decimation_below = 3,
+ .decimation_threshold = 8 * 3,
+ .decimation_above = 4,
+};
+
+const static struct ts_filter_mean_configuration gta02_ts_mean = {
+ .length = 4,
+};
+
+const static struct ts_filter_linear_configuration gta02_ts_linear = {
+ .constants = {1, 0, 0, 0, 1, 0, 1}, /* Don't modify coords. */
+ .coord0 = 0,
+ .coord1 = 1,
+};
+#endif
+
+const static struct ts_filter_chain_configuration gta02_filter_configuration[] =
+{
+#ifdef CONFIG_TOUCHSCREEN_FILTER
+ {&ts_filter_group_api, &gta02_ts_group.config},
+ {&ts_filter_median_api, &gta02_ts_median.config},
+ {&ts_filter_mean_api, &gta02_ts_mean.config},
+ {&ts_filter_linear_api, &gta02_ts_linear.config},
+#endif
+ {NULL, NULL},
+};
+
+const static struct s3c2410_ts_mach_info gta02_ts_cfg = {
+ .delay = 10000,
+ .presc = 0xff, /* slow as we can go */
+ .filter_config = gta02_filter_configuration,
+};
+
struct hdq_platform_data gta02_hdq_platform_data = {
.gpio_dir_out = gta02_hdq_gpio_direction_out,
.gpio_dir_in = gta02_hdq_gpio_direction_in,
@@ -1027,7 +1075,7 @@ struct platform_device gta02_hdq_device = {
.resource = gta02_hdq_resources,
.dev = {
.platform_data = &gta02_hdq_platform_data,
- .parent = &s3c_device_timer[0].dev,
+ .parent = &s3c_device_timer[2].dev,
},
};
@@ -1065,6 +1113,7 @@ static struct platform_device *gta02_devices[] __initdata = {
/* These guys DO need to be children of PMU. */
static struct platform_device *gta02_devices_pmu_children[] = {
+ &s3c_device_ts,
&gta02_glamo_dev,
&s3c_device_timer[2],
&gta02_hdq_device,
@@ -1108,6 +1157,10 @@ struct gta02_device_children {
void (*probed_callback)(struct device *dev);
};
+static struct platform_device* gta02_glamo_gpio_children[] = {
+ &spigpio_device,
+};
+
static struct platform_device* gta02_pcf50633_gpio_children[] = {
&gta02_gsm_supply_device,
};
@@ -1122,6 +1175,11 @@ static struct platform_device* gta02_hdq_children[] = {
static struct gta02_device_children gta02_device_children[] = {
{
+ .dev_name = "glamo-gpio.0",
+ .num_children = 1,
+ .children = gta02_glamo_gpio_children,
+ },
+ {
.dev_name = "hdq.0",
.num_children = 1,
.children = gta02_hdq_children,
@@ -1277,6 +1335,8 @@ static void __init gta02_machine_init(void)
/* Set the panic callback to make AUX LED blink at ~5Hz. */
panic_blink = gta02_panic_blink;
+ s3c_device_ts.name = "s3c2440-ts";
+
bus_register_notifier(&platform_bus_type, &gta02_device_register_notifier);
bus_register_notifier(&spi_bus_type, &gta02_device_register_notifier);
@@ -1295,6 +1355,7 @@ static void __init gta02_machine_init(void)
s3c24xx_udc_set_platdata(&gta02_udc_cfg);
s3c_i2c0_set_platdata(NULL);
+ set_s3c2410ts_info(&gta02_ts_cfg);
i2c_register_board_info(0, gta02_i2c_devs, ARRAY_SIZE(gta02_i2c_devs));
spi_register_board_info(gta02_spi_board_info,