blob: e9fbf9046e0a895037c5a1534881afc2ab16bc74 [file] [log] [blame]
Joonyoung Shim4cf51c32010-07-14 21:55:30 -07001/*
Iiro Valkonen7686b102011-02-02 23:21:58 -08002 * Atmel maXTouch Touchscreen driver
Joonyoung Shim4cf51c32010-07-14 21:55:30 -07003 *
4 * Copyright (C) 2010 Samsung Electronics Co.Ltd
5 * Author: Joonyoung Shim <jy0922.shim@samsung.com>
Amy Maloche265fc3c2013-01-17 11:50:24 -08006 * Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
Joonyoung Shim4cf51c32010-07-14 21:55:30 -07007 *
8 * This program is free software; you can redistribute it and/or modify it
9 * under the terms of the GNU General Public License as published by the
10 * Free Software Foundation; either version 2 of the License, or (at your
11 * option) any later version.
12 */
13
Iiro Valkonen7686b102011-02-02 23:21:58 -080014#ifndef __LINUX_ATMEL_MXT_TS_H
15#define __LINUX_ATMEL_MXT_TS_H
Joonyoung Shim4cf51c32010-07-14 21:55:30 -070016
Iiro Valkonen71749f52011-02-15 13:36:52 -080017#include <linux/types.h>
18
Joonyoung Shim4cf51c32010-07-14 21:55:30 -070019/* Orient */
Iiro Valkonen7686b102011-02-02 23:21:58 -080020#define MXT_NORMAL 0x0
21#define MXT_DIAGONAL 0x1
22#define MXT_HORIZONTAL_FLIP 0x2
23#define MXT_ROTATED_90_COUNTER 0x3
24#define MXT_VERTICAL_FLIP 0x4
25#define MXT_ROTATED_90 0x5
26#define MXT_ROTATED_180 0x6
27#define MXT_DIAGONAL_COUNTER 0x7
Joonyoung Shim4cf51c32010-07-14 21:55:30 -070028
Mohan Pallaka382d3ce2012-01-02 20:24:28 +080029/* MXT_TOUCH_KEYARRAY_T15 */
30#define MXT_KEYARRAY_MAX_KEYS 32
31
Anirudh Ghayal6c3b37b2012-02-23 18:39:42 -080032/* Bootoader IDs */
33#define MXT_BOOTLOADER_ID_224 0x0A
34#define MXT_BOOTLOADER_ID_224E 0x06
Amy Maloche265fc3c2013-01-17 11:50:24 -080035#define MXT_BOOTLOADER_ID_336S 0x1A
Anirudh Ghayal6c3b37b2012-02-23 18:39:42 -080036#define MXT_BOOTLOADER_ID_1386 0x01
37#define MXT_BOOTLOADER_ID_1386E 0x10
Amy Maloche265fc3c2013-01-17 11:50:24 -080038#define MXT_BOOTLOADER_ID_1664S 0x14
Anirudh Ghayal6c3b37b2012-02-23 18:39:42 -080039
Jing Lindc4413c2012-01-16 15:22:52 -080040/* Config data for a given maXTouch controller with a specific firmware */
41struct mxt_config_info {
Iiro Valkonen71749f52011-02-15 13:36:52 -080042 const u8 *config;
43 size_t config_length;
Jing Lindc4413c2012-01-16 15:22:52 -080044 u8 family_id;
45 u8 variant_id;
46 u8 version;
47 u8 build;
Anirudh Ghayal6c3b37b2012-02-23 18:39:42 -080048 u8 bootldr_id;
Anirudh Ghayal0bcb5b52012-02-17 14:58:25 -080049 /* Points to the firmware name to be upgraded to */
50 const char *fw_name;
Jing Lindc4413c2012-01-16 15:22:52 -080051};
52
53/* The platform data for the Atmel maXTouch touchscreen driver */
54struct mxt_platform_data {
55 const struct mxt_config_info *config_array;
56 size_t config_array_size;
Iiro Valkonen71749f52011-02-15 13:36:52 -080057
Mohan Pallaka56a1a5d2012-02-23 12:05:13 -080058 /* touch panel's minimum and maximum coordinates */
59 u32 panel_minx;
60 u32 panel_maxx;
61 u32 panel_miny;
62 u32 panel_maxy;
63
64 /* display's minimum and maximum coordinates */
65 u32 disp_minx;
66 u32 disp_maxx;
67 u32 disp_miny;
68 u32 disp_maxy;
69
Iiro Valkonen919ed892011-02-15 13:36:52 -080070 unsigned long irqflags;
Anirudh Ghayala498e4d2011-08-09 19:10:12 +053071 bool i2c_pull_up;
Amy Maloche21115eb2011-11-02 09:04:37 -070072 bool digital_pwr_regulator;
Amy Maloche08266db2011-11-04 11:07:16 -070073 int reset_gpio;
Mohan Pallakad96f5032012-06-18 22:49:10 +053074 u32 reset_gpio_flags;
Amy Maloche08266db2011-11-04 11:07:16 -070075 int irq_gpio;
Mohan Pallakad96f5032012-06-18 22:49:10 +053076 u32 irq_gpio_flags;
Mohan Pallaka382d3ce2012-01-02 20:24:28 +080077 int *key_codes;
Mohan Pallaka63a5f652012-09-21 16:51:44 +053078 bool need_calibration;
Sreenivasulu Chalam Charlaa339ef72012-09-20 08:25:04 +053079 bool no_force_update;
Mohan Pallakab74e3482013-07-09 16:39:56 +053080 bool no_lpm_support;
Amy Maloche265fc3c2013-01-17 11:50:24 -080081 u8 bl_addr;
Anirudh Ghayala498e4d2011-08-09 19:10:12 +053082
Jing Lin2f863172011-10-17 10:56:58 -070083 u8(*read_chg) (void);
Anirudh Ghayala498e4d2011-08-09 19:10:12 +053084 int (*init_hw) (bool);
85 int (*power_on) (bool);
Joonyoung Shim4cf51c32010-07-14 21:55:30 -070086};
87
Iiro Valkonen7686b102011-02-02 23:21:58 -080088#endif /* __LINUX_ATMEL_MXT_TS_H */