aboutsummaryrefslogtreecommitdiff
path: root/drivers/input/touchscreen/mediatek/generic
diff options
context:
space:
mode:
authorMeizu OpenSource <patchwork@meizu.com>2016-08-15 10:19:42 +0800
committerMeizu OpenSource <patchwork@meizu.com>2016-08-15 10:19:42 +0800
commitd2e1446d81725c351dc73a03b397ce043fb18452 (patch)
tree4dbc616b7f92aea39cd697a9084205ddb805e344 /drivers/input/touchscreen/mediatek/generic
downloadandroid_kernel_m2note-d2e1446d81725c351dc73a03b397ce043fb18452.tar.gz
first commit
Diffstat (limited to 'drivers/input/touchscreen/mediatek/generic')
-rw-r--r--drivers/input/touchscreen/mediatek/generic/generic_driver.c75
1 files changed, 75 insertions, 0 deletions
diff --git a/drivers/input/touchscreen/mediatek/generic/generic_driver.c b/drivers/input/touchscreen/mediatek/generic/generic_driver.c
new file mode 100644
index 000000000..dea1ea227
--- /dev/null
+++ b/drivers/input/touchscreen/mediatek/generic/generic_driver.c
@@ -0,0 +1,75 @@
+#include "tpd_custom_generic.h"
+#include "tpd.h"
+
+extern int tpd_driver_local_init(void);
+extern void tpd_driver_suspend(struct early_suspend *h);
+extern void tpd_driver_resume(struct early_suspend *h);
+
+#ifdef TPD_HAVE_BUTTON
+static int tpd_keys[TPD_KEY_COUNT] = TPD_KEYS;
+static int tpd_keys_dim[TPD_KEY_COUNT][4] = TPD_KEYS_DIM;
+#endif
+#if (defined(TPD_WARP_START) && defined(TPD_WARP_END))
+static int tpd_wb_start_local[TPD_WARP_CNT] = TPD_WARP_START;
+static int tpd_wb_end_local[TPD_WARP_CNT] = TPD_WARP_END;
+#endif
+#if (defined(TPD_HAVE_CALIBRATION) && !defined(TPD_CUSTOM_CALIBRATION))
+static int tpd_calmat_local[8] = TPD_CALIBRATION_MATRIX;
+static int tpd_def_calmat_local[8] = TPD_CALIBRATION_MATRIX;
+#endif
+/* invoke by tpd_init, initialize r-type touchpanel */
+static int tpd_local_init(void) {
+ tpd_driver_local_init();
+#if (defined(TPD_WARP_START) && defined(TPD_WARP_END))
+ TPD_DO_WARP = 1;
+ memcpy(tpd_wb_start, tpd_wb_start_local, TPD_WARP_CNT*4);
+ memcpy(tpd_wb_end, tpd_wb_start_end, TPD_WARP_CNT*4);
+#endif
+#if (defined(TPD_HAVE_CALIBRATION) && !defined(TPD_CUSTOM_CALIBRATION))
+ memcpy(tpd_calmat, tpd_calmat_local, 8*4);
+ memcpy(tpd_def_calmat, tpd_def_calmat_local, 8*4);
+#endif
+ tpd_type_cap = 0;
+ return 0;
+}
+
+static void tpd_suspend(struct early_suspend *h)
+{
+ tpd_driver_suspend(h);
+// return 0;
+}
+static void tpd_resume(struct early_suspend *h)
+{
+ tpd_driver_resume(h);
+// return 0;
+}
+
+static struct tpd_driver_t tpd_device_driver = {
+ .tpd_device_name = "generic",
+ .tpd_local_init = tpd_local_init,
+ .suspend = tpd_suspend,
+ .resume = tpd_resume,
+#ifdef TPD_HAVE_BUTTON
+ .tpd_have_button =1,
+#else
+ .tpd_have_button = 0,
+#endif
+};
+/* called when loaded into kernel */
+static int __init tpd_driver_init(void) {
+ printk("MediaTek generic touch panel driver init\n");
+ if(tpd_driver_add(&tpd_device_driver) < 0)
+ TPD_DMESG("add generic driver failed\n");
+ return 0;
+}
+
+/* should never be called */
+static void __exit tpd_driver_exit(void) {
+ TPD_DMESG("MediaTek generic touch panel driver exit\n");
+ //input_unregister_device(tpd->dev);
+ tpd_driver_remove(&tpd_device_driver);
+}
+
+module_init(tpd_driver_init);
+module_exit(tpd_driver_exit);
+