From 2489007e7d740ccbc3e0a202914e243ad5178787 Mon Sep 17 00:00:00 2001 From: codeworkx Date: Sat, 22 Sep 2012 09:48:20 +0200 Subject: merge opensource jb u5 Change-Id: I1aaec157aa196f3448eff8636134fce89a814cf2 --- drivers/input/touchscreen/wacom/wacom_i2c_firm.c | 61 ++++++++++++++++++++++-- 1 file changed, 58 insertions(+), 3 deletions(-) (limited to 'drivers/input/touchscreen/wacom/wacom_i2c_firm.c') diff --git a/drivers/input/touchscreen/wacom/wacom_i2c_firm.c b/drivers/input/touchscreen/wacom/wacom_i2c_firm.c index 47eb062..58e9fd3 100644 --- a/drivers/input/touchscreen/wacom/wacom_i2c_firm.c +++ b/drivers/input/touchscreen/wacom/wacom_i2c_firm.c @@ -17,14 +17,17 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include +#include + unsigned char *Binary; +bool ums_binary; #if defined(CONFIG_MACH_P4NOTE) const unsigned int Binary_nLength = 0xBFFF; const unsigned char Mpu_type = 0x22; -const unsigned int Firmware_version_of_file = 0x200; +const unsigned int Firmware_version_of_file = 0x22F; unsigned char *firmware_name = ""; -const char Firmware_checksum[] = { 0x1F, 0x4d, 0x9d, 0x2f, 0x36, }; +const char Firmware_checksum[] = { 0x1F, 0xF1, 0x76, 0x81, 0x71, }; #include "wacom_i2c_firm_p4.h" #elif defined(CONFIG_MACH_Q1_BD) @@ -36,6 +39,18 @@ unsigned char *firmware_name = "epen/W8501.bin"; /* checksum for 0x340 */ const char Firmware_checksum[] = { 0x1F, 0xee, 0x06, 0x4b, 0xdd, }; +#elif defined(CONFIG_MACH_T0) +const unsigned int Binary_nLength = 0xEFFF; +const unsigned char Mpu_type = 0x28; +unsigned int Firmware_version_of_file = 0x24F; +unsigned char *firmware_name = "epen/W9001_B746.bin"; + +char Firmware_checksum[] = { 0x1F, 0xDD, 0x87, 0x97, 0xFF, }; +/*checksum for 0x13D*/ +const char B713X_checksum[] = { 0x1F, 0xB5, 0x84, 0x38, 0x34, }; +/*checksum for 0x16*/ +const char B660X_checksum[] = { 0x1F, 0x83, 0x88, 0xD4, 0x67, }; + #endif void wacom_i2c_set_firm_data(unsigned char *Binary_new) @@ -43,15 +58,30 @@ void wacom_i2c_set_firm_data(unsigned char *Binary_new) if (Binary_new == NULL) { #if defined(CONFIG_MACH_P4NOTE) Binary = (unsigned char *)Binary_48; -#elif defined(CONFIG_MACH_Q1_BD) + ums_binary = false; +#elif defined(CONFIG_MACH_Q1_BD) || defined(CONFIG_MACH_T0) Binary = NULL; #endif return; } Binary = (unsigned char *)Binary_new; + ums_binary = true; } +#ifdef CONFIG_MACH_T0 +/*Return digitizer type according to board rev*/ +int wacom_i2c_get_digitizer_type(void) +{ + if (system_rev >= WACOM_DTYPE_B746_HWID) + return EPEN_DTYPE_B746; + else if (system_rev >= WACOM_DTYPE_B713_HWID) + return EPEN_DTYPE_B713; + else + return EPEN_DTYPE_B660; +} +#endif + void wacom_i2c_init_firm_data(void) { #if defined(CONFIG_MACH_P4NOTE) @@ -68,5 +98,30 @@ void wacom_i2c_init_firm_data(void) } else printk(KERN_DEBUG "[E-PEN] Wacom driver is working for 4.4mm pitch pad.\n"); +#elif defined(CONFIG_MACH_T0) + int type; + int i; + + type = wacom_i2c_get_digitizer_type(); + + if (type == EPEN_DTYPE_B746) { + printk(KERN_DEBUG + "[E-PEN] Digitizer type is B746\n"); + } else if (type == EPEN_DTYPE_B713) { + printk(KERN_DEBUG + "[E-PEN] Digitizer type is B713\n"); + firmware_name = "epen/W9001_B713.bin"; + Firmware_version_of_file = 0x13D; + memcpy(Firmware_checksum, B713X_checksum, + sizeof(Firmware_checksum)); + } else { + printk(KERN_DEBUG + "[E-PEN] Digitizer type is B660\n"); + firmware_name = "epen/W9001_B660.bin"; + Firmware_version_of_file = 0x16; + memcpy(Firmware_checksum, B660X_checksum, + sizeof(Firmware_checksum)); + } + Binary = NULL; #endif } -- cgit v1.1