Lines Matching refs:gen5_pip
386 struct cyapa_gen5_cmd_states *gen5_pip = &cyapa->cmd_states.gen5; in cyapa_gen5_initialize() local
388 init_completion(&gen5_pip->cmd_ready); in cyapa_gen5_initialize()
389 atomic_set(&gen5_pip->cmd_issued, 0); in cyapa_gen5_initialize()
390 mutex_init(&gen5_pip->cmd_lock); in cyapa_gen5_initialize()
392 gen5_pip->resp_sort_func = NULL; in cyapa_gen5_initialize()
393 gen5_pip->in_progress_cmd = TSG_INVALID_CMD; in cyapa_gen5_initialize()
394 gen5_pip->resp_data = NULL; in cyapa_gen5_initialize()
395 gen5_pip->resp_len = NULL; in cyapa_gen5_initialize()
447 struct cyapa_gen5_cmd_states *gen5_pip = &cyapa->cmd_states.gen5; in cyapa_empty_pip_output_data() local
479 error = cyapa_i2c_pip_read(cyapa, gen5_pip->empty_buf, in cyapa_empty_pip_output_data()
484 length = get_unaligned_le16(gen5_pip->empty_buf); in cyapa_empty_pip_output_data()
495 func(cyapa, gen5_pip->empty_buf, length)) { in cyapa_empty_pip_output_data()
497 memcpy(buf, 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()
511 length = get_unaligned_le16(gen5_pip->empty_buf); in cyapa_empty_pip_output_data()
515 func(cyapa, gen5_pip->empty_buf, length)) { in cyapa_empty_pip_output_data()
517 memcpy(buf, gen5_pip->empty_buf, length); in cyapa_empty_pip_output_data()
534 struct cyapa_gen5_cmd_states *gen5_pip = &cyapa->cmd_states.gen5; in cyapa_do_i2c_pip_cmd_irq_sync() local
538 init_completion(&gen5_pip->cmd_ready); in cyapa_do_i2c_pip_cmd_irq_sync()
540 atomic_inc(&gen5_pip->cmd_issued); in cyapa_do_i2c_pip_cmd_irq_sync()
543 atomic_dec(&gen5_pip->cmd_issued); in cyapa_do_i2c_pip_cmd_irq_sync()
548 timeout = wait_for_completion_timeout(&gen5_pip->cmd_ready, in cyapa_do_i2c_pip_cmd_irq_sync()
551 atomic_dec(&gen5_pip->cmd_issued); in cyapa_do_i2c_pip_cmd_irq_sync()
565 struct cyapa_gen5_cmd_states *gen5_pip = &cyapa->cmd_states.gen5; in cyapa_do_i2c_pip_cmd_polling() local
570 atomic_inc(&gen5_pip->cmd_issued); in cyapa_do_i2c_pip_cmd_polling()
573 atomic_dec(&gen5_pip->cmd_issued); in cyapa_do_i2c_pip_cmd_polling()
594 atomic_dec(&gen5_pip->cmd_issued); in cyapa_do_i2c_pip_cmd_polling()
606 struct cyapa_gen5_cmd_states *gen5_pip = &cyapa->cmd_states.gen5; in cyapa_i2c_pip_cmd_irq_sync() local
613 error = mutex_lock_interruptible(&gen5_pip->cmd_lock); in cyapa_i2c_pip_cmd_irq_sync()
617 gen5_pip->resp_sort_func = func; in cyapa_i2c_pip_cmd_irq_sync()
618 gen5_pip->resp_data = resp_data; in cyapa_i2c_pip_cmd_irq_sync()
619 gen5_pip->resp_len = resp_len; in cyapa_i2c_pip_cmd_irq_sync()
624 gen5_pip->in_progress_cmd = cmd[6] & 0x7f; in cyapa_i2c_pip_cmd_irq_sync()
628 gen5_pip->in_progress_cmd = cmd[7]; in cyapa_i2c_pip_cmd_irq_sync()
633 gen5_pip->is_irq_mode = true; in cyapa_i2c_pip_cmd_irq_sync()
649 gen5_pip->is_irq_mode = false; in cyapa_i2c_pip_cmd_irq_sync()
654 gen5_pip->resp_sort_func = NULL; in cyapa_i2c_pip_cmd_irq_sync()
655 gen5_pip->resp_data = NULL; in cyapa_i2c_pip_cmd_irq_sync()
656 gen5_pip->resp_len = NULL; in cyapa_i2c_pip_cmd_irq_sync()
657 gen5_pip->in_progress_cmd = TSG_INVALID_CMD; in cyapa_i2c_pip_cmd_irq_sync()
659 mutex_unlock(&gen5_pip->cmd_lock); in cyapa_i2c_pip_cmd_irq_sync()
681 struct cyapa_gen5_cmd_states *gen5_pip = &cyapa->cmd_states.gen5; in cyapa_gen5_sort_tsg_pip_app_resp_data() local
692 data[5] == gen5_pip->in_progress_cmd) { in cyapa_gen5_sort_tsg_pip_app_resp_data()
696 gen5_pip->in_progress_cmd) { in cyapa_gen5_sort_tsg_pip_app_resp_data()
918 struct cyapa_gen5_cmd_states *gen5_pip = &cyapa->cmd_states.gen5; in gen5_cmd_resp_header_parse() local
928 ret = cyapa_i2c_pip_read(cyapa, gen5_pip->empty_buf, length); in gen5_cmd_resp_header_parse()
944 } else if ((gen5_pip->empty_buf[GEN5_RESP_REPORT_ID_OFFSET] == in gen5_cmd_resp_header_parse()
946 (gen5_pip->empty_buf[GEN5_RESP_RSVD_OFFSET] == in gen5_cmd_resp_header_parse()
948 (gen5_pip->empty_buf[GEN5_RESP_BL_SOP_OFFSET] == in gen5_cmd_resp_header_parse()
950 (gen5_pip->empty_buf[length - 1] == in gen5_cmd_resp_header_parse()
955 } else if (gen5_pip->empty_buf[GEN5_RESP_REPORT_ID_OFFSET] == in gen5_cmd_resp_header_parse()
957 gen5_pip->empty_buf[GEN5_RESP_RSVD_OFFSET] == in gen5_cmd_resp_header_parse()
2523 struct cyapa_gen5_cmd_states *gen5_pip = &cyapa->cmd_states.gen5; in cyapa_gen5_irq_cmd_handler() local
2526 if (atomic_read(&gen5_pip->cmd_issued)) { in cyapa_gen5_irq_cmd_handler()
2528 if (gen5_pip->is_irq_mode == false) in cyapa_gen5_irq_cmd_handler()
2536 cyapa_i2c_pip_read(cyapa, gen5_pip->irq_cmd_buf, in cyapa_gen5_irq_cmd_handler()
2538 length = get_unaligned_le16(gen5_pip->irq_cmd_buf); in cyapa_gen5_irq_cmd_handler()
2543 gen5_pip->irq_cmd_buf, length); in cyapa_gen5_irq_cmd_handler()
2545 if (!(gen5_pip->resp_sort_func && in cyapa_gen5_irq_cmd_handler()
2546 gen5_pip->resp_sort_func(cyapa, in cyapa_gen5_irq_cmd_handler()
2547 gen5_pip->irq_cmd_buf, length))) { in cyapa_gen5_irq_cmd_handler()
2561 if (gen5_pip->resp_len) in cyapa_gen5_irq_cmd_handler()
2562 length = *gen5_pip->resp_len; in cyapa_gen5_irq_cmd_handler()
2564 gen5_pip->resp_data, in cyapa_gen5_irq_cmd_handler()
2566 gen5_pip->resp_sort_func); in cyapa_gen5_irq_cmd_handler()
2567 if (gen5_pip->resp_len && length != 0) { in cyapa_gen5_irq_cmd_handler()
2568 *gen5_pip->resp_len = length; in cyapa_gen5_irq_cmd_handler()
2569 atomic_dec(&gen5_pip->cmd_issued); in cyapa_gen5_irq_cmd_handler()
2570 complete(&gen5_pip->cmd_ready); in cyapa_gen5_irq_cmd_handler()
2575 if (gen5_pip->resp_data && gen5_pip->resp_len) { in cyapa_gen5_irq_cmd_handler()
2576 *gen5_pip->resp_len = (*gen5_pip->resp_len < length) ? in cyapa_gen5_irq_cmd_handler()
2577 *gen5_pip->resp_len : length; in cyapa_gen5_irq_cmd_handler()
2578 memcpy(gen5_pip->resp_data, gen5_pip->irq_cmd_buf, in cyapa_gen5_irq_cmd_handler()
2579 *gen5_pip->resp_len); in cyapa_gen5_irq_cmd_handler()
2581 atomic_dec(&gen5_pip->cmd_issued); in cyapa_gen5_irq_cmd_handler()
2582 complete(&gen5_pip->cmd_ready); in cyapa_gen5_irq_cmd_handler()