From mboxrd@z Thu Jan 1 00:00:00 1970 From: jbe@pengutronix.de (Juergen Beisert) Date: Sun, 8 Jul 2012 19:12:18 +0200 Subject: [PATCH 04/10] MACH/Samsung/Mini2440: add touchscreen support for mini2440. In-Reply-To: <1341767544-17447-1-git-send-email-jbe@pengutronix.de> References: <1341767544-17447-1-git-send-email-jbe@pengutronix.de> Message-ID: <1341767544-17447-5-git-send-email-jbe@pengutronix.de> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org From: Marek Belisko Patch add support for mini2440 touchscreen. Some code borrowed from: git://repo.or.cz/linux-2.6/mini2440.git Signed-off-by: Marek Belisko Acked-by: Juergen Beisert --- arch/arm/mach-s3c24xx/mach-mini2440.c | 36 +++++++++++++++++++++++---------- 1 file changed, 25 insertions(+), 11 deletions(-) diff --git a/arch/arm/mach-s3c24xx/mach-mini2440.c b/arch/arm/mach-s3c24xx/mach-mini2440.c index 45d5bb5..110af98 100644 --- a/arch/arm/mach-s3c24xx/mach-mini2440.c +++ b/arch/arm/mach-s3c24xx/mach-mini2440.c @@ -47,6 +47,7 @@ #include #include #include +#include #include #include @@ -552,6 +553,12 @@ static struct platform_device uda1340_codec = { .id = -1, }; +static struct s3c2410_ts_mach_info mini2440_ts_cfg __initdata = { + .delay = 10000, + .presc = 0xff, /* slow as we can go */ + .oversampling_shift = 0, +}; + static struct platform_device *mini2440_devices[] __initdata = { &s3c_device_ohci, &s3c_device_wdt, @@ -570,6 +577,7 @@ static struct platform_device *mini2440_devices[] __initdata = { &uda1340_codec, &mini2440_audio, &samsung_asoc_dma, + &s3c_device_adc, }; static void __init mini2440_map_io(void) @@ -627,12 +635,12 @@ static void __init mini2440_parse_features( switch (f) { case '0'...'9': /* tft screen */ if (features->done & FEATURE_SCREEN) { - printk(KERN_INFO "MINI2440: '%c' ignored, " + pr_info("MINI2440: '%c' ignored, " "screen type already set\n", f); } else { int li = f - '0'; if (li >= ARRAY_SIZE(mini2440_lcd_cfg)) - printk(KERN_INFO "MINI2440: " + pr_info("MINI2440: " "'%c' out of range LCD mode\n", f); else { features->optional[features->count++] = @@ -644,7 +652,7 @@ static void __init mini2440_parse_features( break; case 'b': if (features->done & FEATURE_BACKLIGHT) - printk(KERN_INFO "MINI2440: '%c' ignored, " + pr_info("MINI2440: '%c' ignored, " "backlight already set\n", f); else { features->optional[features->count++] = @@ -653,12 +661,17 @@ static void __init mini2440_parse_features( features->done |= FEATURE_BACKLIGHT; break; case 't': - printk(KERN_INFO "MINI2440: '%c' ignored, " - "touchscreen not compiled in\n", f); + if (features->done & FEATURE_TOUCH) + pr_info("MINI2440: '%c' ignored, " + "touchscreen already set\n", f); + else + features->optional[features->count++] = + &s3c_device_ts; + features->done |= FEATURE_TOUCH; break; case 'c': if (features->done & FEATURE_CAMERA) - printk(KERN_INFO "MINI2440: '%c' ignored, " + pr_info("MINI2440: '%c' ignored, " "camera already registered\n", f); else features->optional[features->count++] = @@ -674,7 +687,7 @@ static void __init mini2440_init(void) struct mini2440_features_t features = { 0 }; int i; - printk(KERN_INFO "MINI2440: Option string mini2440=%s\n", + pr_info("MINI2440: Option string mini2440=%s\n", mini2440_features_str); /* Parse the feature string */ @@ -703,17 +716,17 @@ static void __init mini2440_init(void) mini2440_fb_info.displays = &mini2440_lcd_cfg[features.lcd_index]; - printk(KERN_INFO "MINI2440: LCD"); + pr_info("MINI2440: LCD"); for (li = 0; li < ARRAY_SIZE(mini2440_lcd_cfg); li++) if (li == features.lcd_index) - printk(" [%d:%dx%d]", li, + pr_info(" [%d:%dx%d]", li, mini2440_lcd_cfg[li].width, mini2440_lcd_cfg[li].height); else - printk(" %d:%dx%d", li, + pr_info(" %d:%dx%d", li, mini2440_lcd_cfg[li].width, mini2440_lcd_cfg[li].height); - printk("\n"); + pr_info("\n"); s3c24xx_fb_set_platdata(&mini2440_fb_info); } @@ -721,6 +734,7 @@ static void __init mini2440_init(void) s3c24xx_mci_set_platdata(&mini2440_mmc_cfg); s3c_nand_set_platdata(&mini2440_nand_info); s3c_i2c0_set_platdata(NULL); + s3c24xx_ts_set_platdata(&mini2440_ts_cfg); i2c_register_board_info(0, mini2440_i2c_devs, ARRAY_SIZE(mini2440_i2c_devs)); -- 1.7.10