@@ -517,7 +517,7 @@ static int elan_i2c_set_flash_key(struct i2c_client *client)
517517 return 0 ;
518518}
519519
520- static int elan_read_write_iap_type (struct i2c_client * client )
520+ static int elan_read_write_iap_type (struct i2c_client * client , u16 fw_page_size )
521521{
522522 int error ;
523523 u16 constant ;
@@ -526,7 +526,7 @@ static int elan_read_write_iap_type(struct i2c_client *client)
526526
527527 do {
528528 error = elan_i2c_write_cmd (client , ETP_I2C_IAP_TYPE_CMD ,
529- ETP_I2C_IAP_TYPE_REG );
529+ fw_page_size / 2 );
530530 if (error ) {
531531 dev_err (& client -> dev ,
532532 "cannot write iap type: %d\n" , error );
@@ -543,7 +543,7 @@ static int elan_read_write_iap_type(struct i2c_client *client)
543543 constant = le16_to_cpup ((__le16 * )val );
544544 dev_dbg (& client -> dev , "iap type reg: 0x%04x\n" , constant );
545545
546- if (constant == ETP_I2C_IAP_TYPE_REG )
546+ if (constant == fw_page_size / 2 )
547547 return 0 ;
548548
549549 } while (-- retry > 0 );
@@ -553,7 +553,7 @@ static int elan_read_write_iap_type(struct i2c_client *client)
553553}
554554
555555static int elan_i2c_prepare_fw_update (struct i2c_client * client , u16 ic_type ,
556- u8 iap_version )
556+ u8 iap_version , u16 fw_page_size )
557557{
558558 struct device * dev = & client -> dev ;
559559 int error ;
@@ -594,7 +594,7 @@ static int elan_i2c_prepare_fw_update(struct i2c_client *client, u16 ic_type,
594594 }
595595
596596 if (ic_type >= 0x0D && iap_version >= 1 ) {
597- error = elan_read_write_iap_type (client );
597+ error = elan_read_write_iap_type (client , fw_page_size );
598598 if (error )
599599 return error ;
600600 }
0 commit comments