AT91: add platform parameters for atmel_tsadcc in at91sam9rlek
authorNicolas Ferre <nicolas.ferre@atmel.com>
Thu, 19 Nov 2009 17:31:20 +0000 (09:31 -0800)
committerDmitry Torokhov <dmitry.torokhov@gmail.com>
Fri, 20 Nov 2009 08:55:29 +0000 (00:55 -0800)
Setup platform parameters in at91sam9rl-ek board to be passed to
atmel_tsadcc touchscreen.

Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
Acked-by: Andrew Victor <linux@maxim.org.za>
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
arch/arm/mach-at91/at91sam9rl_devices.c
arch/arm/mach-at91/board-sam9rlek.c
arch/arm/mach-at91/include/mach/board.h

index d345f5453dbef6f4c033cc3c72dcffc3a9d446a7..53aaa94df75a1fbce525da6f2919b94d90827b91 100644 (file)
@@ -622,6 +622,7 @@ static void __init at91_add_device_tc(void) { }
 
 #if defined(CONFIG_TOUCHSCREEN_ATMEL_TSADCC) || defined(CONFIG_TOUCHSCREEN_ATMEL_TSADCC_MODULE)
 static u64 tsadcc_dmamask = DMA_BIT_MASK(32);
+static struct at91_tsadcc_data tsadcc_data;
 
 static struct resource tsadcc_resources[] = {
        [0] = {
@@ -642,22 +643,27 @@ static struct platform_device at91sam9rl_tsadcc_device = {
        .dev            = {
                                .dma_mask               = &tsadcc_dmamask,
                                .coherent_dma_mask      = DMA_BIT_MASK(32),
+                               .platform_data          = &tsadcc_data,
        },
        .resource       = tsadcc_resources,
        .num_resources  = ARRAY_SIZE(tsadcc_resources),
 };
 
-void __init at91_add_device_tsadcc(void)
+void __init at91_add_device_tsadcc(struct at91_tsadcc_data *data)
 {
+       if (!data)
+               return;
+
        at91_set_A_periph(AT91_PIN_PA17, 0);    /* AD0_XR */
        at91_set_A_periph(AT91_PIN_PA18, 0);    /* AD1_XL */
        at91_set_A_periph(AT91_PIN_PA19, 0);    /* AD2_YT */
        at91_set_A_periph(AT91_PIN_PA20, 0);    /* AD3_TB */
 
+       tsadcc_data = *data;
        platform_device_register(&at91sam9rl_tsadcc_device);
 }
 #else
-void __init at91_add_device_tsadcc(void) {}
+void __init at91_add_device_tsadcc(struct at91_tsadcc_data *data) {}
 #endif
 
 
index bd28e989e54eb48d5274170dfd8f1715dfbb2f51..7ac20f3a2067d6f4eeac86fb5d7e922665b8b843 100644 (file)
@@ -242,6 +242,16 @@ static struct gpio_led ek_leds[] = {
 };
 
 
+/*
+ * Touchscreen
+ */
+static struct at91_tsadcc_data ek_tsadcc_data = {
+       .adc_clock              = 1000000,
+       .pendet_debounce        = 0x0f,
+       .ts_sample_hold_time    = 0x03,
+};
+
+
 /*
  * GPIO Buttons
  */
@@ -310,7 +320,7 @@ static void __init ek_board_init(void)
        /* AC97 */
        at91_add_device_ac97(&ek_ac97_data);
        /* Touch Screen Controller */
-       at91_add_device_tsadcc();
+       at91_add_device_tsadcc(&ek_tsadcc_data);
        /* LEDs */
        at91_gpio_leds(ek_leds, ARRAY_SIZE(ek_leds));
        /* Push Buttons */
index 2f4fcedc02ba6a55638f5b44c0e5234f8acd887b..6f1579f8abdd47f603d4272f1f92a7536ec9d599 100644 (file)
@@ -186,7 +186,12 @@ extern void __init at91_add_device_ac97(struct ac97c_platform_data *data);
 extern void __init at91_add_device_isi(void);
 
  /* Touchscreen Controller */
-extern void __init at91_add_device_tsadcc(void);
+struct at91_tsadcc_data {
+       unsigned int    adc_clock;
+       u8              pendet_debounce;
+       u8              ts_sample_hold_time;
+};
+extern void __init at91_add_device_tsadcc(struct at91_tsadcc_data *data);
 
 /* CAN */
 struct at91_can_data {