From patchwork Mon Mar 16 20:38:55 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tony Lindgren X-Patchwork-Id: 12472 Received: from vger.kernel.org (vger.kernel.org [209.132.176.167]) by demeter.kernel.org (8.14.2/8.14.2) with ESMTP id n2GKdJLq009399 for ; Mon, 16 Mar 2009 20:39:19 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754529AbZCPUiz (ORCPT ); Mon, 16 Mar 2009 16:38:55 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1754977AbZCPUiz (ORCPT ); Mon, 16 Mar 2009 16:38:55 -0400 Received: from mho-01-bos.mailhop.org ([63.208.196.178]:50764 "EHLO mho-01-bos.mailhop.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754529AbZCPUiz (ORCPT ); Mon, 16 Mar 2009 16:38:55 -0400 Received: from c-69-181-40-92.hsd1.ca.comcast.net ([69.181.40.92] helo=localhost.localdomain) by mho-01-bos.mailhop.org with esmtpa (Exim 4.68) (envelope-from ) id 1LjJaG-000Phw-6U; Mon, 16 Mar 2009 20:38:53 +0000 Received: from Mutt by mutt-smtp-wrapper.pl 1.2 (www.zdo.com/articles/mutt-smtp-wrapper.shtml) X-Mail-Handler: MailHop Outbound by DynDNS X-Originating-IP: 69.181.40.92 X-Report-Abuse-To: abuse@dyndns.com (see http://www.dyndns.com/services/mailhop/outbound_abuse.html for abuse reporting information) X-MHO-User: U2FsdGVkX1+QKUBqwgEqT9CA6GQ2hBdf Date: Mon, 16 Mar 2009 13:38:55 -0700 From: Tony Lindgren To: linux-arm-kernel@lists.arm.linux.org.uk Cc: linux-omap@vger.kernel.org, Steve Sakoman Subject: Re: [PATCH 2/4] ARM: OMAP3: Add ADS7846 touchscreen support to Overo platform, v2 Message-ID: <20090316203855.GM19229@atomide.com> References: <20090313224259.8810.3283.stgit@localhost> <20090313224610.8810.93492.stgit@localhost> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20090313224610.8810.93492.stgit@localhost> User-Agent: Mutt/1.5.18 (2008-05-17) Sender: linux-omap-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-omap@vger.kernel.org * Tony Lindgren [090313 15:46]: > From: Steve Sakoman > > An upcoming Overo expansion board includes an ADS7846 touchscreen controller. > > This patch adds support via the ads7846 driver when enabled in the > kernel config. Here's this one refreshed to apply without the smsc911x patch. Tony From b4b560d6323bd56a7c450b81263d09464d8c6e36 Mon Sep 17 00:00:00 2001 From: Steve Sakoman Date: Mon, 16 Mar 2009 13:28:00 -0700 Subject: [PATCH] ARM: OMAP3: Add ADS7846 touchscreen support to Overo platform, v2 An upcoming Overo expansion board includes an ADS7846 touchscreen controller. This patch adds support via the ads7846 driver when enabled in the kernel config. Signed-off-by: Steve Sakoman Signed-off-by: Tony Lindgren diff --git a/arch/arm/mach-omap2/board-overo.c b/arch/arm/mach-omap2/board-overo.c index d785aa8..4d03b70 100644 --- a/arch/arm/mach-omap2/board-overo.c +++ b/arch/arm/mach-omap2/board-overo.c @@ -52,6 +52,66 @@ #define GPMC_CS0_BASE 0x60 #define GPMC_CS_SIZE 0x30 +#if defined(CONFIG_TOUCHSCREEN_ADS7846) || \ + defined(CONFIG_TOUCHSCREEN_ADS7846_MODULE) + +#include +#include +#include + +static struct omap2_mcspi_device_config ads7846_mcspi_config = { + .turbo_mode = 0, + .single_channel = 1, /* 0: slave, 1: master */ +}; + + +static int ads7846_get_pendown_state(void) +{ + return !gpio_get_value(OVERO_GPIO_PENDOWN); +} + +static struct ads7846_platform_data ads7846_config = { + .x_max = 0x0fff, + .y_max = 0x0fff, + .x_plate_ohms = 180, + .pressure_max = 255, + .debounce_max = 10, + .debounce_tol = 3, + .debounce_rep = 1, + .get_pendown_state = ads7846_get_pendown_state, + .keep_vref_on = 1, +}; + +static struct spi_board_info overo_spi_board_info[] __initdata = { + { + .modalias = "ads7846", + .bus_num = 1, + .chip_select = 0, + .max_speed_hz = 1500000, + .controller_data = &ads7846_mcspi_config, + .irq = OMAP_GPIO_IRQ(OVERO_GPIO_PENDOWN), + .platform_data = &ads7846_config, + } +}; + +static void __init overo_ads7846_init(void) +{ + if ((gpio_request(OVERO_GPIO_PENDOWN, "ADS7846_PENDOWN") == 0) && + (gpio_direction_input(OVERO_GPIO_PENDOWN) == 0)) { + gpio_export(OVERO_GPIO_PENDOWN, 0); + } else { + printk(KERN_ERR "could not obtain gpio for ADS7846_PENDOWN\n"); + return; + } + + spi_register_board_info(overo_spi_board_info, + ARRAY_SIZE(overo_spi_board_info)); +} + +#else +static inline void __init overo_ads7846_init(void) { return; } +#endif + static struct mtd_partition overo_nand_partitions[] = { { .name = "xloader", @@ -225,6 +285,7 @@ static void __init overo_init(void) twl4030_mmc_init(mmc); overo_flash_init(); usb_musb_init(); + overo_ads7846_init(); if ((gpio_request(OVERO_GPIO_W2W_NRESET, "OVERO_GPIO_W2W_NRESET") == 0) &&