Lines Matching refs:ts
32 static int get_hid_iap_ack(struct elan_ts_data *ts, uint8_t *cmd, int len,uint8_t *buf, int rlen) in get_hid_iap_ack() argument
38 err = ts->ops->send(cmd,len); in get_hid_iap_ack()
40 dev_err(&ts->client->dev, "[elan] write page finish command fauled\n"); in get_hid_iap_ack()
44 err = ts->ops->poll(); in get_hid_iap_ack()
46 dev_err(&ts->client->dev, "[elan] wait for int failed\n"); in get_hid_iap_ack()
50 err = ts->ops->recv(buf,rlen); in get_hid_iap_ack()
51 dev_info(&ts->client->dev, "[elan]%s buf[4]:buf[5]= %x:%x\n",__func__, buf[4],buf[5]); in get_hid_iap_ack()
54 dev_info(&ts->client->dev,"[elan] iap write page response ok\n"); in get_hid_iap_ack()
57 dev_err(&ts->client->dev, "[elan] iap rewrite page response\n"); in get_hid_iap_ack()
60 dev_err(&ts->client->dev, "[elan] iap ack error\n"); in get_hid_iap_ack()
64 dev_err(&ts->client->dev, "[elan] recv ack return value error\n"); in get_hid_iap_ack()
71 static int query_remark_id(struct elan_ts_data *ts) in query_remark_id() argument
78 len = ts->ops->send(remarkid,sizeof(remarkid)); in query_remark_id()
80 dev_err(&ts->client->dev, "[elan]Send query remark id cmd failed!! len=%d",len); in query_remark_id()
83 dev_err(&ts->client->dev,"[elan]Remark id write successfully!"); in query_remark_id()
87 len = ts->ops->recv(buf, sizeof(buf)); in query_remark_id()
89 dev_err(&ts->client->dev, "[elan]Send Check Address Read Data error. len=%d", len); in query_remark_id()
93 dev_err(&ts->client->dev, "[elan]Get Remark id = 0x%4x",remark_id); in query_remark_id()
99 static int hid_fw_upgrade_init(struct elan_ts_data *ts) in hid_fw_upgrade_init() argument
109 elan_ts_hw_reset(&ts->hw_info); in hid_fw_upgrade_init()
112 err = elan_ic_status(ts->client); in hid_fw_upgrade_init()
114 ts->recover = FORCED_UPGRADE; in hid_fw_upgrade_init()
116 ts->recover = COMPARE_UPGRADE; in hid_fw_upgrade_init()
118 ts->recover = UNKNOW_TYPE; in hid_fw_upgrade_init()
121 dev_err(&ts->client->dev, "[elan] %s bcl = 0x%02x\n", __func__,ts->fw_info.fw_bcl); in hid_fw_upgrade_init()
122 if (ts->fw_info.fw_bcl >= 0x60) { in hid_fw_upgrade_init()
123 remark_id = query_remark_id(ts); in hid_fw_upgrade_init()
124 if ( remark_id != ts->update_info.remark_id) { in hid_fw_upgrade_init()
125 dev_err(&ts->client->dev, "[elan]Remark id failed,exit update"); in hid_fw_upgrade_init()
131 dev_err(&ts->client->dev, "[elan] %s get ic status = %d\n", __func__, err); in hid_fw_upgrade_init()
132 err = ts->ops->send(flash_key,sizeof(flash_key)); in hid_fw_upgrade_init()
134 dev_err(&ts->client->dev, "[elan]send flash key failed ,exit update\n"); in hid_fw_upgrade_init()
140 if (ts->recover == COMPARE_UPGRADE) {//normal mode in hid_fw_upgrade_init()
141 err = ts->ops->send(isp_cmd, sizeof(isp_cmd)); in hid_fw_upgrade_init()
143 dev_err(&ts->client->dev, "[elan] send isp cmd failed, exit update\n"); in hid_fw_upgrade_init()
150 err = ts->ops->send(check_addr, sizeof(check_addr)); in hid_fw_upgrade_init()
152 dev_err(&ts->client->dev, "[elan] send check addr failed, exit update\n"); in hid_fw_upgrade_init()
157 ts->ops->poll(); in hid_fw_upgrade_init()
158 err = ts->ops->recv(buf, sizeof(buf)); in hid_fw_upgrade_init()
160 dev_err(&ts->client->dev, "[elan] recv check addr response failed\n"); in hid_fw_upgrade_init()
164 …dev_err(&ts->client->dev, "[elan] %s response_addr = 0x%02x, buf=0x%2x\n",__func__, response_addr,… in hid_fw_upgrade_init()
166 dev_err(&ts->client->dev, "[elan] response addr check failed,exit update\n"); in hid_fw_upgrade_init()
169 dev_err(&ts->client->dev, "[elan] update init success\n"); in hid_fw_upgrade_init()
177 static int hid_fw_upgrade_finshed(struct elan_ts_data *ts) in hid_fw_upgrade_finshed() argument
182 ret = ts->ops->send(upgrade_end, sizeof(upgrade_end)); in hid_fw_upgrade_finshed()
193 struct elan_ts_data *ts = i2c_get_clientdata(client); in Hid_Fw_Update() local
194 struct elan_update_fw_info *update = &ts->update_info; in Hid_Fw_Update()
210 err = hid_fw_upgrade_init(ts); in Hid_Fw_Update()
212 dev_err(&ts->client->dev, "[elan] upgrade init failed\n"); in Hid_Fw_Update()
220 dev_err(&ts->client->dev, "[elan]%s fw size = %d\n", __func__,wFwSize); in Hid_Fw_Update()
235 err = ts->ops->send(qIapWriteCmd, sizeof(qIapWriteCmd)); in Hid_Fw_Update()
237 dev_err(&ts->client->dev,"[elan]write %dbytes failed\n", wCopyLen); in Hid_Fw_Update()
254 err = get_hid_iap_ack(ts,qIapPagefinishcmd,sizeof(qIapPagefinishcmd),ack_buf, sizeof(ack_buf)); in Hid_Fw_Update()
256 dev_err(&ts->client->dev, "get iap ack failed\n"); in Hid_Fw_Update()
270 err = hid_fw_upgrade_finshed(ts); in Hid_Fw_Update()
272 dev_err(&ts->client->dev,"[elan] fw upgrade finshed failed!!!\n"); in Hid_Fw_Update()
276 dev_err(&ts->client->dev,"[elan] fw upgrade success!!!\n"); in Hid_Fw_Update()
284 struct elan_ts_data *ts = i2c_get_clientdata(client); in elan_fw_write_page() local
292 error = ts->ops->send(page, FW_PAGE_SIZE); in elan_fw_write_page()
299 error = ts->ops->recv(buf, sizeof(buf)); in elan_fw_write_page()
320 struct elan_ts_data *ts = i2c_get_clientdata(client); in Normal_Fw_Update() local
321 struct elan_update_fw_info *update = &ts->update_info; in Normal_Fw_Update()
331 elan_ts_hw_reset(&ts->hw_info); in Normal_Fw_Update()
333 error = ts->ops->send(enter_iap, sizeof(enter_iap)); in Normal_Fw_Update()
342 error = ts->ops->recv(buf, sizeof(buf)); in Normal_Fw_Update()
361 error = ts->ops->send(&send_id, 1); in Normal_Fw_Update()
392 struct elan_ts_data *ts = i2c_get_clientdata(client); in elan_FW_Update() local
395 if (ts->chip_type == HID_TYPE_PROTOCOL){ in elan_FW_Update()
398 ts->recover = COMPARE_UPGRADE; in elan_FW_Update()
401 else if(ts->chip_type == NORMAL_TYPE_PROTOCOL) in elan_FW_Update()
415 struct elan_ts_data *ts = i2c_get_clientdata(client); in elan_ts_hid_calibrate() local
419 err = ts->ops->send(flash_key, sizeof(flash_key)); in elan_ts_hid_calibrate()
426 err = ts->ops->send(cal_cmd, sizeof(cal_cmd)); in elan_ts_hid_calibrate()
432 err = ts->ops->poll(); in elan_ts_hid_calibrate()
438 err = ts->ops->recv(resp,sizeof(resp)); in elan_ts_hid_calibrate()
457 struct elan_ts_data *ts = i2c_get_clientdata(client); in elan_ts_normal_calibrate() local
466 err = ts->ops->send(flash_key, sizeof(flash_key)); in elan_ts_normal_calibrate()
473 err = ts->ops->send(cal_cmd, sizeof(cal_cmd)); in elan_ts_normal_calibrate()
480 err = ts->ops->poll(); in elan_ts_normal_calibrate()
483 err = ts->ops->recv(resp,sizeof(resp)); in elan_ts_normal_calibrate()
502 struct elan_ts_data *ts = i2c_get_clientdata(client); in elan_ts_calibrate() local
505 if (ts->chip_type == HID_TYPE_PROTOCOL) in elan_ts_calibrate()
507 else if(ts->chip_type == NORMAL_TYPE_PROTOCOL) in elan_ts_calibrate()
514 struct elan_ts_data *ts = i2c_get_clientdata(client); in check_cal_status() local
520 err = ts->ops->send(check_rek_cmd, sizeof(check_rek_cmd)); in check_cal_status()
526 err = ts->ops->poll(); in check_cal_status()
532 err = ts->ops->recv(resp, sizeof(resp)); in check_cal_status()
555 struct elan_ts_data *ts = i2c_get_clientdata(client); in elan_ts_check_calibrate() local
557 if (ts->chip_type == HID_TYPE_PROTOCOL) in elan_ts_check_calibrate()
566 static int elan_read_fw_from_sdcard(struct elan_ts_data *ts) in elan_read_fw_from_sdcard() argument
568 dev_err(&ts->client->dev, "[elan] can not pass Google GKI, return\n"); in elan_read_fw_from_sdcard()
642 static int get_driver_fw(struct elan_ts_data *ts) in get_driver_fw() argument
645 struct elan_update_fw_info *update_info = &ts->update_info; in get_driver_fw()
654 dev_err(&ts->client->dev, in get_driver_fw()
661 …dev_err(&ts->client->dev, "fwSize = %d, pagenum = %d\n", update_info->FwSize,update_info->PageNum … in get_driver_fw()
666 dev_err(&ts->client->dev,"[elan] ID is error, not support!!\n"); in get_driver_fw()
671 int elan_get_vendor_fw(struct elan_ts_data *ts, int type) in elan_get_vendor_fw() argument
674 struct elan_update_fw_info *update_info = &ts->update_info; in elan_get_vendor_fw()
682 err = request_firmware(&p_fw_entry, update_info->FwName, &ts->client->dev); in elan_get_vendor_fw()
684 dev_err(&ts->client->dev, in elan_get_vendor_fw()
688 dev_dbg(&ts->client->dev, "Firmware Size=%zu",p_fw_entry->size); in elan_get_vendor_fw()
692 dev_info(&ts->client->dev, "[elan] %d: FwSize %d, PageNum %d\n", __LINE__, in elan_get_vendor_fw()
698 dev_info(&ts->client->dev, "[elan] Update Firmware from %s\n", update_info->fw_local_path); in elan_get_vendor_fw()
700 err = elan_read_fw_from_sdcard(ts); in elan_get_vendor_fw()
702 dev_err(&ts->client->dev, "Get FW Data From %s failed\n",update_info->fw_local_path); in elan_get_vendor_fw()
706 err = get_driver_fw(ts); in elan_get_vendor_fw()
708 dev_err(&ts->client->dev, "Get FW Data From driver failed\n"); in elan_get_vendor_fw()
717 void elan_check_update_flage(struct elan_ts_data *ts) in elan_check_update_flage() argument
723 struct elan_update_fw_info *update_info = &ts->update_info; in elan_check_update_flage()
724 struct elan_fw_info *fw_info = &ts->fw_info; in elan_check_update_flage()
735 err = elan_get_vendor_fw(ts,ts->fw_store_type); in elan_check_update_flage()
741 dev_err(&ts->client->dev, "[elan] ***counld not get fw,exit update flow!!***\n"); in elan_check_update_flage()
744 dev_err(&ts->client->dev, in elan_check_update_flage()
749 if ( ts->recover == FORCED_UPGRADE ) { in elan_check_update_flage()
750 dev_err(&ts->client->dev, "[elan] *** fw is miss, force update fw!! ***\n"); in elan_check_update_flage()
760 dev_info(&ts->client->dev, "[elan] FW_ID=0x%4x,New_FW_ID=0x%4x\n",fw_info->fw_id,New_FW_ID); in elan_check_update_flage()
761 …dev_info(&ts->client->dev, "[elan] FW_VERSION=0x%4x,New_FW_VERSION=0x%4x\n",fw_info->fw_ver,New_FW… in elan_check_update_flage()
764 dev_err(&ts->client->dev,"[elan] fw id is different, can not update!"); in elan_check_update_flage()
769 dev_info(&ts->client->dev,"[elan] fw version is newest!!\n"); in elan_check_update_flage()
775 elan_FW_Update(ts->client); in elan_check_update_flage()
777 elan_ts_hw_reset(&ts->hw_info); in elan_check_update_flage()
782 err = elan__fw_packet_handler(ts->client); in elan_check_update_flage()
784 dev_err(&ts->client->dev, "[elan] After update fw get fw msg failed, retry=%d\n",retry); in elan_check_update_flage()
791 err = elan_ts_calibrate(ts->client); in elan_check_update_flage()
793 dev_err(&ts->client->dev, "[elan] After update fw calibrate failed, retry=%d\n",retry); in elan_check_update_flage()
795 err = elan_ts_check_calibrate(ts->client); /*ic reponse rek count,count != 0xff? "ok":"failed" */ in elan_check_update_flage()
797 dev_err(&ts->client->dev, "[elan] After update fw check rek failed, retry=%d\n",retry); in elan_check_update_flage()