Lines Matching refs:cyapa
373 #define GEN5_DEV_SET_PWR_STATE(cyapa, s) ((cyapa)->dev_pwr_mode = (s)) argument
374 #define GEN5_DEV_GET_PWR_STATE(cyapa) ((cyapa)->dev_pwr_mode) argument
375 #define GEN5_DEV_SET_SLEEP_TIME(cyapa, t) ((cyapa)->dev_sleep_time = (t)) argument
376 #define GEN5_DEV_GET_SLEEP_TIME(cyapa) ((cyapa)->dev_sleep_time) argument
377 #define GEN5_DEV_UNINIT_SLEEP_TIME(cyapa) \ argument
378 (((cyapa)->dev_sleep_time) == UNINIT_SLEEP_TIME)
384 static int cyapa_gen5_initialize(struct cyapa *cyapa) in cyapa_gen5_initialize() argument
386 struct cyapa_gen5_cmd_states *gen5_pip = &cyapa->cmd_states.gen5; in cyapa_gen5_initialize()
397 cyapa->dev_pwr_mode = UNINIT_PWR_MODE; in cyapa_gen5_initialize()
398 cyapa->dev_sleep_time = UNINIT_SLEEP_TIME; in cyapa_gen5_initialize()
404 static ssize_t cyapa_i2c_pip_read(struct cyapa *cyapa, u8 *buf, size_t size) in cyapa_i2c_pip_read() argument
414 ret = i2c_master_recv(cyapa->client, buf, size); in cyapa_i2c_pip_read()
425 static ssize_t cyapa_i2c_pip_write(struct cyapa *cyapa, u8 *buf, size_t size) in cyapa_i2c_pip_write() argument
432 ret = i2c_master_send(cyapa->client, buf, size); in cyapa_i2c_pip_write()
444 static int cyapa_empty_pip_output_data(struct cyapa *cyapa, in cyapa_empty_pip_output_data() argument
447 struct cyapa_gen5_cmd_states *gen5_pip = &cyapa->cmd_states.gen5; in cyapa_empty_pip_output_data()
479 error = cyapa_i2c_pip_read(cyapa, gen5_pip->empty_buf, in cyapa_empty_pip_output_data()
495 func(cyapa, gen5_pip->empty_buf, length)) { in cyapa_empty_pip_output_data()
505 error = cyapa_i2c_pip_read(cyapa, gen5_pip->empty_buf, length); in cyapa_empty_pip_output_data()
515 func(cyapa, gen5_pip->empty_buf, length)) { in cyapa_empty_pip_output_data()
530 struct cyapa *cyapa, in cyapa_do_i2c_pip_cmd_irq_sync() argument
534 struct cyapa_gen5_cmd_states *gen5_pip = &cyapa->cmd_states.gen5; in cyapa_do_i2c_pip_cmd_irq_sync()
541 error = cyapa_i2c_pip_write(cyapa, cmd, cmd_len); in cyapa_do_i2c_pip_cmd_irq_sync()
559 struct cyapa *cyapa, in cyapa_do_i2c_pip_cmd_polling() argument
565 struct cyapa_gen5_cmd_states *gen5_pip = &cyapa->cmd_states.gen5; in cyapa_do_i2c_pip_cmd_polling()
571 error = cyapa_i2c_pip_write(cyapa, cmd, cmd_len); in cyapa_do_i2c_pip_cmd_polling()
583 error = cyapa_empty_pip_output_data(cyapa, in cyapa_do_i2c_pip_cmd_polling()
599 struct cyapa *cyapa, in cyapa_i2c_pip_cmd_irq_sync() argument
606 struct cyapa_gen5_cmd_states *gen5_pip = &cyapa->cmd_states.gen5; in cyapa_i2c_pip_cmd_irq_sync()
634 error = cyapa_do_i2c_pip_cmd_irq_sync(cyapa, cmd, cmd_len, in cyapa_i2c_pip_cmd_irq_sync()
643 error = cyapa_empty_pip_output_data(cyapa, in cyapa_i2c_pip_cmd_irq_sync()
650 error = cyapa_do_i2c_pip_cmd_polling(cyapa, cmd, cmd_len, in cyapa_i2c_pip_cmd_irq_sync()
663 static bool cyapa_gen5_sort_tsg_pip_bl_resp_data(struct cyapa *cyapa, in cyapa_gen5_sort_tsg_pip_bl_resp_data() argument
678 static bool cyapa_gen5_sort_tsg_pip_app_resp_data(struct cyapa *cyapa, in cyapa_gen5_sort_tsg_pip_app_resp_data() argument
681 struct cyapa_gen5_cmd_states *gen5_pip = &cyapa->cmd_states.gen5; in cyapa_gen5_sort_tsg_pip_app_resp_data()
705 static bool cyapa_gen5_sort_application_launch_data(struct cyapa *cyapa, in cyapa_gen5_sort_application_launch_data() argument
721 static bool cyapa_gen5_sort_hid_descriptor_data(struct cyapa *cyapa, in cyapa_gen5_sort_hid_descriptor_data() argument
749 static bool cyapa_gen5_sort_deep_sleep_data(struct cyapa *cyapa, in cyapa_gen5_sort_deep_sleep_data() argument
761 static int gen5_idle_state_parse(struct cyapa *cyapa) in gen5_idle_state_parse() argument
774 cyapa_empty_pip_output_data(cyapa, NULL, NULL, NULL); in gen5_idle_state_parse()
777 ret = cyapa_i2c_pip_read(cyapa, resp_data, 3); in gen5_idle_state_parse()
784 cyapa->gen = CYAPA_GEN5; in gen5_idle_state_parse()
786 cyapa_empty_pip_output_data(cyapa, NULL, NULL, NULL); in gen5_idle_state_parse()
792 error = cyapa_i2c_pip_cmd_irq_sync(cyapa, in gen5_idle_state_parse()
810 cyapa->state = CYAPA_STATE_GEN5_BL; in gen5_idle_state_parse()
817 cyapa->state = CYAPA_STATE_GEN5_APP; in gen5_idle_state_parse()
820 cyapa->state = CYAPA_STATE_NO_DEVICE; in gen5_idle_state_parse()
827 static int gen5_hid_description_header_parse(struct cyapa *cyapa, u8 *reg_data) in gen5_hid_description_header_parse() argument
841 ret = cyapa_i2c_pip_read(cyapa, resp_data, in gen5_hid_description_header_parse()
854 cyapa->gen = CYAPA_GEN5; in gen5_hid_description_header_parse()
855 cyapa->state = CYAPA_STATE_GEN5_BL; in gen5_hid_description_header_parse()
861 cyapa->gen = CYAPA_GEN5; in gen5_hid_description_header_parse()
862 cyapa->state = CYAPA_STATE_GEN5_APP; in gen5_hid_description_header_parse()
868 cyapa->gen = CYAPA_GEN5; in gen5_hid_description_header_parse()
869 cyapa->state = CYAPA_STATE_GEN5_BL; in gen5_hid_description_header_parse()
875 cyapa->gen = CYAPA_GEN5; in gen5_hid_description_header_parse()
876 cyapa->state = CYAPA_STATE_GEN5_APP; in gen5_hid_description_header_parse()
879 cyapa->state = CYAPA_STATE_NO_DEVICE; in gen5_hid_description_header_parse()
885 static int gen5_report_data_header_parse(struct cyapa *cyapa, u8 *reg_data) in gen5_report_data_header_parse() argument
911 cyapa->gen = CYAPA_GEN5; in gen5_report_data_header_parse()
912 cyapa->state = CYAPA_STATE_GEN5_APP; in gen5_report_data_header_parse()
916 static int gen5_cmd_resp_header_parse(struct cyapa *cyapa, u8 *reg_data) in gen5_cmd_resp_header_parse() argument
918 struct cyapa_gen5_cmd_states *gen5_pip = &cyapa->cmd_states.gen5; in gen5_cmd_resp_header_parse()
928 ret = cyapa_i2c_pip_read(cyapa, gen5_pip->empty_buf, length); in gen5_cmd_resp_header_parse()
937 cyapa->gen = CYAPA_GEN5; in gen5_cmd_resp_header_parse()
938 cyapa->state = CYAPA_STATE_GEN5_BL; in gen5_cmd_resp_header_parse()
941 cyapa->gen = CYAPA_GEN5; in gen5_cmd_resp_header_parse()
942 cyapa->state = CYAPA_STATE_GEN5_APP; in gen5_cmd_resp_header_parse()
953 cyapa->gen = CYAPA_GEN5; in gen5_cmd_resp_header_parse()
954 cyapa->state = CYAPA_STATE_GEN5_BL; in gen5_cmd_resp_header_parse()
960 cyapa->gen = CYAPA_GEN5; in gen5_cmd_resp_header_parse()
961 cyapa->state = CYAPA_STATE_GEN5_APP; in gen5_cmd_resp_header_parse()
964 cyapa->state = CYAPA_STATE_NO_DEVICE; in gen5_cmd_resp_header_parse()
970 static int cyapa_gen5_state_parse(struct cyapa *cyapa, u8 *reg_data, int len) in cyapa_gen5_state_parse() argument
977 cyapa->state = CYAPA_STATE_NO_DEVICE; in cyapa_gen5_state_parse()
982 gen5_idle_state_parse(cyapa); in cyapa_gen5_state_parse()
986 gen5_hid_description_header_parse(cyapa, reg_data); in cyapa_gen5_state_parse()
991 cyapa->gen = CYAPA_GEN5; in cyapa_gen5_state_parse()
992 cyapa->state = CYAPA_STATE_GEN5_APP; in cyapa_gen5_state_parse()
996 cyapa->gen = CYAPA_GEN5; in cyapa_gen5_state_parse()
997 cyapa->state = CYAPA_STATE_GEN5_BL; in cyapa_gen5_state_parse()
1003 gen5_report_data_header_parse(cyapa, reg_data); in cyapa_gen5_state_parse()
1006 gen5_cmd_resp_header_parse(cyapa, reg_data); in cyapa_gen5_state_parse()
1009 if (cyapa->gen == CYAPA_GEN5) { in cyapa_gen5_state_parse()
1016 cyapa_empty_pip_output_data(cyapa, NULL, NULL, NULL); in cyapa_gen5_state_parse()
1018 if (cyapa->state == CYAPA_STATE_GEN5_APP || in cyapa_gen5_state_parse()
1019 cyapa->state == CYAPA_STATE_GEN5_BL) in cyapa_gen5_state_parse()
1026 static int cyapa_gen5_bl_initiate(struct cyapa *cyapa, in cyapa_gen5_bl_initiate() argument
1046 cyapa_empty_pip_output_data(cyapa, NULL, NULL, NULL); in cyapa_gen5_bl_initiate()
1088 error = cyapa_i2c_pip_cmd_irq_sync(cyapa, in cyapa_gen5_bl_initiate()
1100 static bool cyapa_gen5_sort_bl_exit_data(struct cyapa *cyapa, u8 *buf, int len) in cyapa_gen5_sort_bl_exit_data() argument
1120 static int cyapa_gen5_bl_exit(struct cyapa *cyapa) in cyapa_gen5_bl_exit() argument
1132 error = cyapa_i2c_pip_cmd_irq_sync(cyapa, in cyapa_gen5_bl_exit()
1150 static int cyapa_gen5_bl_enter(struct cyapa *cyapa) in cyapa_gen5_bl_enter() argument
1157 error = cyapa_poll_state(cyapa, 500); in cyapa_gen5_bl_enter()
1160 if (cyapa->gen != CYAPA_GEN5) in cyapa_gen5_bl_enter()
1164 if (cyapa->state == CYAPA_STATE_GEN5_BL) in cyapa_gen5_bl_enter()
1167 if (cyapa->state != CYAPA_STATE_GEN5_APP) in cyapa_gen5_bl_enter()
1171 cyapa_empty_pip_output_data(cyapa, NULL, NULL, NULL); in cyapa_gen5_bl_enter()
1179 error = cyapa_i2c_pip_cmd_irq_sync(cyapa, in cyapa_gen5_bl_enter()
1187 cyapa->operational = false; in cyapa_gen5_bl_enter()
1188 cyapa->state = CYAPA_STATE_GEN5_BL; in cyapa_gen5_bl_enter()
1192 static int cyapa_gen5_check_fw(struct cyapa *cyapa, const struct firmware *fw) in cyapa_gen5_check_fw() argument
1194 struct device *dev = &cyapa->client->dev; in cyapa_gen5_check_fw()
1264 static int cyapa_gen5_write_fw_block(struct cyapa *cyapa, in cyapa_gen5_write_fw_block() argument
1320 error = cyapa_i2c_pip_cmd_irq_sync(cyapa, cmd, cmd_len, in cyapa_gen5_write_fw_block()
1331 static int cyapa_gen5_do_fw_update(struct cyapa *cyapa, in cyapa_gen5_do_fw_update() argument
1334 struct device *dev = &cyapa->client->dev; in cyapa_gen5_do_fw_update()
1342 cyapa_empty_pip_output_data(cyapa, NULL, NULL, NULL); in cyapa_gen5_do_fw_update()
1353 error = cyapa_gen5_write_fw_block(cyapa, flash_record); in cyapa_gen5_do_fw_update()
1364 static int cyapa_gen5_change_power_state(struct cyapa *cyapa, u8 power_state) in cyapa_gen5_change_power_state() argument
1373 error = cyapa_i2c_pip_cmd_irq_sync(cyapa, cmd, sizeof(cmd), in cyapa_gen5_change_power_state()
1383 static int cyapa_gen5_set_interval_time(struct cyapa *cyapa, in cyapa_gen5_set_interval_time() argument
1429 error = cyapa_i2c_pip_cmd_irq_sync(cyapa, cmd, cmd_len, in cyapa_gen5_set_interval_time()
1440 static int cyapa_gen5_get_interval_time(struct cyapa *cyapa, in cyapa_gen5_get_interval_time() argument
1483 error = cyapa_i2c_pip_cmd_irq_sync(cyapa, cmd, cmd_len, in cyapa_gen5_get_interval_time()
1498 static int cyapa_gen5_disable_pip_report(struct cyapa *cyapa) in cyapa_gen5_disable_pip_report() argument
1517 error = cyapa_i2c_pip_cmd_irq_sync(cyapa, cmd, sizeof(cmd), in cyapa_gen5_disable_pip_report()
1528 static int cyapa_gen5_deep_sleep(struct cyapa *cyapa, u8 state) in cyapa_gen5_deep_sleep() argument
1537 error = cyapa_i2c_pip_cmd_irq_sync(cyapa, cmd, sizeof(cmd), in cyapa_gen5_deep_sleep()
1546 static int cyapa_gen5_set_power_mode(struct cyapa *cyapa, in cyapa_gen5_set_power_mode() argument
1549 struct device *dev = &cyapa->client->dev; in cyapa_gen5_set_power_mode()
1553 if (cyapa->state != CYAPA_STATE_GEN5_APP) in cyapa_gen5_set_power_mode()
1557 cyapa_empty_pip_output_data(cyapa, NULL, NULL, NULL); in cyapa_gen5_set_power_mode()
1559 if (GEN5_DEV_GET_PWR_STATE(cyapa) == UNINIT_PWR_MODE) { in cyapa_gen5_set_power_mode()
1565 GEN5_DEV_SET_PWR_STATE(cyapa, PWR_MODE_OFF); in cyapa_gen5_set_power_mode()
1568 if (GEN5_DEV_UNINIT_SLEEP_TIME(cyapa) && in cyapa_gen5_set_power_mode()
1569 GEN5_DEV_GET_PWR_STATE(cyapa) != PWR_MODE_OFF) in cyapa_gen5_set_power_mode()
1570 if (cyapa_gen5_get_interval_time(cyapa, in cyapa_gen5_set_power_mode()
1572 &cyapa->dev_sleep_time) != 0) in cyapa_gen5_set_power_mode()
1573 GEN5_DEV_SET_SLEEP_TIME(cyapa, UNINIT_SLEEP_TIME); in cyapa_gen5_set_power_mode()
1575 if (GEN5_DEV_GET_PWR_STATE(cyapa) == power_mode) { in cyapa_gen5_set_power_mode()
1579 GEN5_DEV_GET_SLEEP_TIME(cyapa) == sleep_time) { in cyapa_gen5_set_power_mode()
1586 error = cyapa_gen5_deep_sleep(cyapa, GEN5_DEEP_SLEEP_STATE_OFF); in cyapa_gen5_set_power_mode()
1592 GEN5_DEV_SET_PWR_STATE(cyapa, PWR_MODE_OFF); in cyapa_gen5_set_power_mode()
1601 if (GEN5_DEV_GET_PWR_STATE(cyapa) == PWR_MODE_OFF) { in cyapa_gen5_set_power_mode()
1602 error = cyapa_gen5_deep_sleep(cyapa, GEN5_DEEP_SLEEP_STATE_ON); in cyapa_gen5_set_power_mode()
1610 error = cyapa_gen5_change_power_state(cyapa, in cyapa_gen5_set_power_mode()
1617 GEN5_DEV_SET_PWR_STATE(cyapa, PWR_MODE_FULL_ACTIVE); in cyapa_gen5_set_power_mode()
1619 error = cyapa_gen5_change_power_state(cyapa, in cyapa_gen5_set_power_mode()
1626 GEN5_DEV_SET_PWR_STATE(cyapa, PWR_MODE_BTN_ONLY); in cyapa_gen5_set_power_mode()
1633 if (GEN5_DEV_UNINIT_SLEEP_TIME(cyapa) || in cyapa_gen5_set_power_mode()
1634 sleep_time != GEN5_DEV_GET_SLEEP_TIME(cyapa)) in cyapa_gen5_set_power_mode()
1635 if (cyapa_gen5_set_interval_time(cyapa, in cyapa_gen5_set_power_mode()
1638 GEN5_DEV_SET_SLEEP_TIME(cyapa, sleep_time); in cyapa_gen5_set_power_mode()
1644 error = cyapa_gen5_change_power_state(cyapa, power_state); in cyapa_gen5_set_power_mode()
1661 cyapa_empty_pip_output_data(cyapa, NULL, NULL, NULL); in cyapa_gen5_set_power_mode()
1662 cyapa_gen5_disable_pip_report(cyapa); in cyapa_gen5_set_power_mode()
1664 GEN5_DEV_SET_PWR_STATE(cyapa, in cyapa_gen5_set_power_mode()
1671 static int cyapa_gen5_resume_scanning(struct cyapa *cyapa) in cyapa_gen5_resume_scanning() argument
1679 cyapa_empty_pip_output_data(cyapa, NULL, NULL, NULL); in cyapa_gen5_resume_scanning()
1682 error = cyapa_i2c_pip_cmd_irq_sync(cyapa, in cyapa_gen5_resume_scanning()
1690 cyapa_empty_pip_output_data(cyapa, NULL, NULL, NULL); in cyapa_gen5_resume_scanning()
1695 static int cyapa_gen5_suspend_scanning(struct cyapa *cyapa) in cyapa_gen5_suspend_scanning() argument
1703 cyapa_empty_pip_output_data(cyapa, NULL, NULL, NULL); in cyapa_gen5_suspend_scanning()
1706 error = cyapa_i2c_pip_cmd_irq_sync(cyapa, in cyapa_gen5_suspend_scanning()
1714 cyapa_empty_pip_output_data(cyapa, NULL, NULL, NULL); in cyapa_gen5_suspend_scanning()
1719 static int cyapa_gen5_calibrate_pwcs(struct cyapa *cyapa, in cyapa_gen5_calibrate_pwcs() argument
1729 cyapa_empty_pip_output_data(cyapa, NULL, NULL, NULL); in cyapa_gen5_calibrate_pwcs()
1739 error = cyapa_i2c_pip_cmd_irq_sync(cyapa, in cyapa_gen5_calibrate_pwcs()
1754 struct cyapa *cyapa = dev_get_drvdata(dev); in cyapa_gen5_do_calibrate() local
1758 error = cyapa_gen5_suspend_scanning(cyapa); in cyapa_gen5_do_calibrate()
1763 calibrate_error = cyapa_gen5_calibrate_pwcs(cyapa, in cyapa_gen5_do_calibrate()
1769 calibrate_error = cyapa_gen5_calibrate_pwcs(cyapa, in cyapa_gen5_do_calibrate()
1776 error = cyapa_gen5_resume_scanning(cyapa); in cyapa_gen5_do_calibrate()
1832 static void cyapa_gen5_guess_electrodes(struct cyapa *cyapa, in cyapa_gen5_guess_electrodes() argument
1835 if (cyapa->electrodes_rx != 0) { in cyapa_gen5_guess_electrodes()
1836 *electrodes_rx = cyapa->electrodes_rx; in cyapa_gen5_guess_electrodes()
1837 *electrodes_tx = (cyapa->electrodes_x == *electrodes_rx) ? in cyapa_gen5_guess_electrodes()
1838 cyapa->electrodes_y : cyapa->electrodes_x; in cyapa_gen5_guess_electrodes()
1840 *electrodes_tx = min(cyapa->electrodes_x, cyapa->electrodes_y); in cyapa_gen5_guess_electrodes()
1841 *electrodes_rx = max(cyapa->electrodes_x, cyapa->electrodes_y); in cyapa_gen5_guess_electrodes()
1863 static int cyapa_gen5_read_idac_data(struct cyapa *cyapa, in cyapa_gen5_read_idac_data() argument
1905 if (cyapa->aligned_electrodes_rx == 0) { in cyapa_gen5_read_idac_data()
1906 cyapa_gen5_guess_electrodes(cyapa, in cyapa_gen5_read_idac_data()
1908 cyapa->aligned_electrodes_rx = in cyapa_gen5_read_idac_data()
1912 (cyapa->aligned_electrodes_rx + 7) & ~7u; in cyapa_gen5_read_idac_data()
1922 offset = cyapa->aligned_electrodes_rx * (*data_size); in cyapa_gen5_read_idac_data()
1923 if (cyapa->electrodes_rx == cyapa->electrodes_x) in cyapa_gen5_read_idac_data()
1924 electrodes_tx = cyapa->electrodes_y; in cyapa_gen5_read_idac_data()
1926 electrodes_tx = cyapa->electrodes_x; in cyapa_gen5_read_idac_data()
1927 max_element_cnt = ((cyapa->aligned_electrodes_rx + 7) & in cyapa_gen5_read_idac_data()
1931 max_element_cnt = cyapa->electrodes_x + in cyapa_gen5_read_idac_data()
1932 cyapa->electrodes_y; in cyapa_gen5_read_idac_data()
1953 error = cyapa_i2c_pip_cmd_irq_sync(cyapa, in cyapa_gen5_read_idac_data()
1997 tmp_count < cyapa->aligned_electrodes_rx && in cyapa_gen5_read_idac_data()
2031 if (tmp_count == cyapa->aligned_electrodes_rx) { in cyapa_gen5_read_idac_data()
2032 cyapa->electrodes_rx = cyapa->electrodes_rx ? in cyapa_gen5_read_idac_data()
2033 cyapa->electrodes_rx : electrodes_rx; in cyapa_gen5_read_idac_data()
2035 cyapa->electrodes_rx = cyapa->electrodes_rx ? in cyapa_gen5_read_idac_data()
2036 cyapa->electrodes_rx : electrodes_rx; in cyapa_gen5_read_idac_data()
2037 cyapa->aligned_electrodes_rx = electrodes_rx; in cyapa_gen5_read_idac_data()
2039 cyapa->electrodes_rx = cyapa->electrodes_rx ? in cyapa_gen5_read_idac_data()
2040 cyapa->electrodes_rx : electrodes_tx; in cyapa_gen5_read_idac_data()
2041 cyapa->aligned_electrodes_rx = tmp_count; in cyapa_gen5_read_idac_data()
2052 static int cyapa_gen5_read_mutual_idac_data(struct cyapa *cyapa, in cyapa_gen5_read_mutual_idac_data() argument
2063 error = cyapa_gen5_read_idac_data(cyapa, in cyapa_gen5_read_mutual_idac_data()
2071 error = cyapa_gen5_read_idac_data(cyapa, in cyapa_gen5_read_mutual_idac_data()
2079 static int cyapa_gen5_read_self_idac_data(struct cyapa *cyapa, in cyapa_gen5_read_self_idac_data() argument
2090 error = cyapa_gen5_read_idac_data(cyapa, in cyapa_gen5_read_self_idac_data()
2100 error = cyapa_gen5_read_idac_data(cyapa, in cyapa_gen5_read_self_idac_data()
2108 static ssize_t cyapa_gen5_execute_panel_scan(struct cyapa *cyapa) in cyapa_gen5_execute_panel_scan() argument
2123 error = cyapa_i2c_pip_cmd_irq_sync(cyapa, in cyapa_gen5_execute_panel_scan()
2136 static int cyapa_gen5_read_panel_scan_raw_data(struct cyapa *cyapa, in cyapa_gen5_read_panel_scan_raw_data() argument
2183 error = cyapa_i2c_pip_cmd_irq_sync(cyapa, in cyapa_gen5_read_panel_scan_raw_data()
2234 struct cyapa *cyapa = dev_get_drvdata(dev); in cyapa_gen5_show_baseline() local
2248 if (cyapa->state != CYAPA_STATE_GEN5_APP) in cyapa_gen5_show_baseline()
2252 error = cyapa_gen5_suspend_scanning(cyapa); in cyapa_gen5_show_baseline()
2258 error = cyapa_gen5_read_mutual_idac_data(cyapa, in cyapa_gen5_show_baseline()
2266 error = cyapa_gen5_read_self_idac_data(cyapa, in cyapa_gen5_show_baseline()
2274 error = cyapa_gen5_execute_panel_scan(cyapa); in cyapa_gen5_show_baseline()
2279 error = cyapa_gen5_read_panel_scan_raw_data(cyapa, in cyapa_gen5_show_baseline()
2282 cyapa->electrodes_x * cyapa->electrodes_y, in cyapa_gen5_show_baseline()
2290 error = cyapa_gen5_read_panel_scan_raw_data(cyapa, in cyapa_gen5_show_baseline()
2293 cyapa->electrodes_x + cyapa->electrodes_y, in cyapa_gen5_show_baseline()
2301 error = cyapa_gen5_read_panel_scan_raw_data(cyapa, in cyapa_gen5_show_baseline()
2304 cyapa->electrodes_x * cyapa->electrodes_y, in cyapa_gen5_show_baseline()
2312 error = cyapa_gen5_read_panel_scan_raw_data(cyapa, in cyapa_gen5_show_baseline()
2315 cyapa->electrodes_x + cyapa->electrodes_y, in cyapa_gen5_show_baseline()
2323 error = cyapa_gen5_read_panel_scan_raw_data(cyapa, in cyapa_gen5_show_baseline()
2326 cyapa->electrodes_x * cyapa->electrodes_y, in cyapa_gen5_show_baseline()
2334 error = cyapa_gen5_read_panel_scan_raw_data(cyapa, in cyapa_gen5_show_baseline()
2337 cyapa->electrodes_x + cyapa->electrodes_y, in cyapa_gen5_show_baseline()
2346 resume_error = cyapa_gen5_resume_scanning(cyapa); in cyapa_gen5_show_baseline()
2367 static bool cyapa_gen5_sort_system_info_data(struct cyapa *cyapa, in cyapa_gen5_sort_system_info_data() argument
2377 static int cyapa_gen5_bl_query_data(struct cyapa *cyapa) in cyapa_gen5_bl_query_data() argument
2387 error = cyapa_i2c_pip_cmd_irq_sync(cyapa, in cyapa_gen5_bl_query_data()
2395 memcpy(&cyapa->product_id[0], &resp_data[8], 5); in cyapa_gen5_bl_query_data()
2396 cyapa->product_id[5] = '-'; in cyapa_gen5_bl_query_data()
2397 memcpy(&cyapa->product_id[6], &resp_data[13], 6); in cyapa_gen5_bl_query_data()
2398 cyapa->product_id[12] = '-'; in cyapa_gen5_bl_query_data()
2399 memcpy(&cyapa->product_id[13], &resp_data[19], 2); in cyapa_gen5_bl_query_data()
2400 cyapa->product_id[15] = '\0'; in cyapa_gen5_bl_query_data()
2402 cyapa->fw_maj_ver = resp_data[22]; in cyapa_gen5_bl_query_data()
2403 cyapa->fw_min_ver = resp_data[23]; in cyapa_gen5_bl_query_data()
2408 static int cyapa_gen5_get_query_data(struct cyapa *cyapa) in cyapa_gen5_get_query_data() argument
2419 error = cyapa_i2c_pip_cmd_irq_sync(cyapa, in cyapa_gen5_get_query_data()
2431 cyapa->fw_maj_ver = resp_data[15]; in cyapa_gen5_get_query_data()
2432 cyapa->fw_min_ver = resp_data[16]; in cyapa_gen5_get_query_data()
2434 cyapa->electrodes_x = resp_data[52]; in cyapa_gen5_get_query_data()
2435 cyapa->electrodes_y = resp_data[53]; in cyapa_gen5_get_query_data()
2437 cyapa->physical_size_x = get_unaligned_le16(&resp_data[54]) / 100; in cyapa_gen5_get_query_data()
2438 cyapa->physical_size_y = get_unaligned_le16(&resp_data[56]) / 100; in cyapa_gen5_get_query_data()
2440 cyapa->max_abs_x = get_unaligned_le16(&resp_data[58]); in cyapa_gen5_get_query_data()
2441 cyapa->max_abs_y = get_unaligned_le16(&resp_data[60]); in cyapa_gen5_get_query_data()
2443 cyapa->max_z = get_unaligned_le16(&resp_data[62]); in cyapa_gen5_get_query_data()
2445 cyapa->x_origin = resp_data[64] & 0x01; in cyapa_gen5_get_query_data()
2446 cyapa->y_origin = resp_data[65] & 0x01; in cyapa_gen5_get_query_data()
2448 cyapa->btn_capability = (resp_data[70] << 3) & CAPABILITY_BTN_MASK; in cyapa_gen5_get_query_data()
2450 memcpy(&cyapa->product_id[0], &resp_data[33], 5); in cyapa_gen5_get_query_data()
2451 cyapa->product_id[5] = '-'; in cyapa_gen5_get_query_data()
2452 memcpy(&cyapa->product_id[6], &resp_data[38], 6); in cyapa_gen5_get_query_data()
2453 cyapa->product_id[12] = '-'; in cyapa_gen5_get_query_data()
2454 memcpy(&cyapa->product_id[13], &resp_data[44], 2); in cyapa_gen5_get_query_data()
2455 cyapa->product_id[15] = '\0'; in cyapa_gen5_get_query_data()
2457 if (!cyapa->electrodes_x || !cyapa->electrodes_y || in cyapa_gen5_get_query_data()
2458 !cyapa->physical_size_x || !cyapa->physical_size_y || in cyapa_gen5_get_query_data()
2459 !cyapa->max_abs_x || !cyapa->max_abs_y || !cyapa->max_z) in cyapa_gen5_get_query_data()
2465 static int cyapa_gen5_do_operational_check(struct cyapa *cyapa) in cyapa_gen5_do_operational_check() argument
2467 struct device *dev = &cyapa->client->dev; in cyapa_gen5_do_operational_check()
2470 if (cyapa->gen != CYAPA_GEN5) in cyapa_gen5_do_operational_check()
2473 switch (cyapa->state) { in cyapa_gen5_do_operational_check()
2475 error = cyapa_gen5_bl_exit(cyapa); in cyapa_gen5_do_operational_check()
2478 cyapa_gen5_bl_query_data(cyapa); in cyapa_gen5_do_operational_check()
2482 cyapa->state = CYAPA_STATE_GEN5_APP; in cyapa_gen5_do_operational_check()
2491 error = cyapa_gen5_set_power_mode(cyapa, in cyapa_gen5_do_operational_check()
2498 error = cyapa_gen5_get_query_data(cyapa); in cyapa_gen5_do_operational_check()
2502 if (memcmp(cyapa->product_id, product_id, in cyapa_gen5_do_operational_check()
2505 __func__, cyapa->product_id); in cyapa_gen5_do_operational_check()
2521 static bool cyapa_gen5_irq_cmd_handler(struct cyapa *cyapa) in cyapa_gen5_irq_cmd_handler() argument
2523 struct cyapa_gen5_cmd_states *gen5_pip = &cyapa->cmd_states.gen5; in cyapa_gen5_irq_cmd_handler()
2536 cyapa_i2c_pip_read(cyapa, gen5_pip->irq_cmd_buf, in cyapa_gen5_irq_cmd_handler()
2542 cyapa_i2c_pip_read(cyapa, in cyapa_gen5_irq_cmd_handler()
2546 gen5_pip->resp_sort_func(cyapa, in cyapa_gen5_irq_cmd_handler()
2563 cyapa_empty_pip_output_data(cyapa, in cyapa_gen5_irq_cmd_handler()
2589 static void cyapa_gen5_report_buttons(struct cyapa *cyapa, in cyapa_gen5_report_buttons() argument
2592 struct input_dev *input = cyapa->input; in cyapa_gen5_report_buttons()
2597 if (cyapa->btn_capability & CAPABILITY_LEFT_BTN_MASK) { in cyapa_gen5_report_buttons()
2601 if (cyapa->btn_capability & CAPABILITY_MIDDLE_BTN_MASK) { in cyapa_gen5_report_buttons()
2605 if (cyapa->btn_capability & CAPABILITY_RIGHT_BTN_MASK) { in cyapa_gen5_report_buttons()
2613 static void cyapa_gen5_report_slot_data(struct cyapa *cyapa, in cyapa_gen5_report_slot_data() argument
2616 struct input_dev *input = cyapa->input; in cyapa_gen5_report_slot_data()
2627 if (cyapa->x_origin) in cyapa_gen5_report_slot_data()
2628 x = cyapa->max_abs_x - x; in cyapa_gen5_report_slot_data()
2631 if (cyapa->y_origin) in cyapa_gen5_report_slot_data()
2632 y = cyapa->max_abs_y - y; in cyapa_gen5_report_slot_data()
2650 static void cyapa_gen5_report_touches(struct cyapa *cyapa, in cyapa_gen5_report_touches() argument
2653 struct input_dev *input = cyapa->input; in cyapa_gen5_report_touches()
2661 cyapa_gen5_report_slot_data(cyapa, in cyapa_gen5_report_touches()
2668 static int cyapa_gen5_irq_handler(struct cyapa *cyapa) in cyapa_gen5_irq_handler() argument
2670 struct device *dev = &cyapa->client->dev; in cyapa_gen5_irq_handler()
2676 if (cyapa->gen != CYAPA_GEN5 || in cyapa_gen5_irq_handler()
2677 cyapa->state != CYAPA_STATE_GEN5_APP) { in cyapa_gen5_irq_handler()
2679 cyapa->gen, cyapa->state); in cyapa_gen5_irq_handler()
2683 ret = cyapa_i2c_pip_read(cyapa, (u8 *)&report_data, in cyapa_gen5_irq_handler()
2704 ret = cyapa_i2c_pip_read(cyapa, (u8 *)&report_data, report_len); in cyapa_gen5_irq_handler()
2747 cyapa_gen5_report_touches(cyapa, &report_data); in cyapa_gen5_irq_handler()
2749 cyapa_gen5_report_buttons(cyapa, &report_data); in cyapa_gen5_irq_handler()
2754 static int cyapa_gen5_bl_activate(struct cyapa *cyapa) { return 0; } in cyapa_gen5_bl_activate() argument
2755 static int cyapa_gen5_bl_deactivate(struct cyapa *cyapa) { return 0; } in cyapa_gen5_bl_deactivate() argument