44
44
#define ETP_I2C_PRESSURE_CMD 0x010A
45
45
#define ETP_I2C_IAP_VERSION_CMD 0x0110
46
46
#define ETP_I2C_IC_TYPE_P0_CMD 0x0110
47
+ #define ETP_I2C_IAP_VERSION_P0_CMD 0x0111
47
48
#define ETP_I2C_SET_CMD 0x0300
48
49
#define ETP_I2C_POWER_CMD 0x0307
49
50
#define ETP_I2C_FW_CHECKSUM_CMD 0x030F
@@ -266,6 +267,7 @@ static int elan_i2c_get_version(struct i2c_client *client,
266
267
{
267
268
int error ;
268
269
u8 pattern_ver ;
270
+ u16 cmd ;
269
271
u8 val [3 ];
270
272
271
273
error = elan_i2c_get_pattern (client , & pattern_ver );
@@ -274,10 +276,14 @@ static int elan_i2c_get_version(struct i2c_client *client,
274
276
return error ;
275
277
}
276
278
277
- error = elan_i2c_read_cmd (client ,
278
- iap ? ETP_I2C_IAP_VERSION_CMD :
279
- ETP_I2C_FW_VERSION_CMD ,
280
- val );
279
+ if (!iap )
280
+ cmd = ETP_I2C_FW_VERSION_CMD ;
281
+ else if (pattern_ver == 0 )
282
+ cmd = ETP_I2C_IAP_VERSION_P0_CMD ;
283
+ else
284
+ cmd = ETP_I2C_IAP_VERSION_CMD ;
285
+
286
+ error = elan_i2c_read_cmd (client , cmd , val );
281
287
if (error ) {
282
288
dev_err (& client -> dev , "failed to get %s version: %d\n" ,
283
289
iap ? "IAP" : "FW" , error );
0 commit comments