117
117
#define ELAN_POWERON_DELAY_USEC 500
118
118
#define ELAN_RESET_DELAY_MSEC 20
119
119
120
+ /* FW boot code version */
121
+ #define BC_VER_H_BYTE_FOR_EKTH3900x1_I2C 0x72
122
+ #define BC_VER_H_BYTE_FOR_EKTH3900x2_I2C 0x82
123
+ #define BC_VER_H_BYTE_FOR_EKTH3900x3_I2C 0x92
124
+ #define BC_VER_H_BYTE_FOR_EKTH5312x1_I2C 0x6D
125
+ #define BC_VER_H_BYTE_FOR_EKTH5312x2_I2C 0x6E
126
+ #define BC_VER_H_BYTE_FOR_EKTH5312cx1_I2C 0x77
127
+ #define BC_VER_H_BYTE_FOR_EKTH5312cx2_I2C 0x78
128
+ #define BC_VER_H_BYTE_FOR_EKTH5312x1_I2C_USB 0x67
129
+ #define BC_VER_H_BYTE_FOR_EKTH5312x2_I2C_USB 0x68
130
+ #define BC_VER_H_BYTE_FOR_EKTH5312cx1_I2C_USB 0x74
131
+ #define BC_VER_H_BYTE_FOR_EKTH5312cx2_I2C_USB 0x75
132
+
120
133
enum elants_chip_id {
121
134
EKTH3500 ,
122
135
EKTF3624 ,
@@ -736,6 +749,37 @@ static int elants_i2c_validate_remark_id(struct elants_data *ts,
736
749
return 0 ;
737
750
}
738
751
752
+ static bool elants_i2c_should_check_remark_id (struct elants_data * ts )
753
+ {
754
+ struct i2c_client * client = ts -> client ;
755
+ const u8 bootcode_version = ts -> iap_version ;
756
+ bool check ;
757
+
758
+ /* I2C eKTH3900 and eKTH5312 are NOT support Remark ID */
759
+ if ((bootcode_version == BC_VER_H_BYTE_FOR_EKTH3900x1_I2C ) ||
760
+ (bootcode_version == BC_VER_H_BYTE_FOR_EKTH3900x2_I2C ) ||
761
+ (bootcode_version == BC_VER_H_BYTE_FOR_EKTH3900x3_I2C ) ||
762
+ (bootcode_version == BC_VER_H_BYTE_FOR_EKTH5312x1_I2C ) ||
763
+ (bootcode_version == BC_VER_H_BYTE_FOR_EKTH5312x2_I2C ) ||
764
+ (bootcode_version == BC_VER_H_BYTE_FOR_EKTH5312cx1_I2C ) ||
765
+ (bootcode_version == BC_VER_H_BYTE_FOR_EKTH5312cx2_I2C ) ||
766
+ (bootcode_version == BC_VER_H_BYTE_FOR_EKTH5312x1_I2C_USB ) ||
767
+ (bootcode_version == BC_VER_H_BYTE_FOR_EKTH5312x2_I2C_USB ) ||
768
+ (bootcode_version == BC_VER_H_BYTE_FOR_EKTH5312cx1_I2C_USB ) ||
769
+ (bootcode_version == BC_VER_H_BYTE_FOR_EKTH5312cx2_I2C_USB )) {
770
+ dev_dbg (& client -> dev ,
771
+ "eKTH3900/eKTH5312(0x%02x) are not support remark id\n" ,
772
+ bootcode_version );
773
+ check = false;
774
+ } else if (bootcode_version >= 0x60 ) {
775
+ check = true;
776
+ } else {
777
+ check = false;
778
+ }
779
+
780
+ return check ;
781
+ }
782
+
739
783
static int elants_i2c_do_update_firmware (struct i2c_client * client ,
740
784
const struct firmware * fw ,
741
785
bool force )
@@ -749,7 +793,7 @@ static int elants_i2c_do_update_firmware(struct i2c_client *client,
749
793
u16 send_id ;
750
794
int page , n_fw_pages ;
751
795
int error ;
752
- bool check_remark_id = ts -> iap_version >= 0x60 ;
796
+ bool check_remark_id = elants_i2c_should_check_remark_id ( ts ) ;
753
797
754
798
/* Recovery mode detection! */
755
799
if (force ) {
0 commit comments