Lines Matching refs:pip

347 	struct cyapa_pip_cmd_states *pip = &cyapa->cmd_states.pip;  in cyapa_pip_cmd_state_initialize()  local
349 init_completion(&pip->cmd_ready); in cyapa_pip_cmd_state_initialize()
350 atomic_set(&pip->cmd_issued, 0); in cyapa_pip_cmd_state_initialize()
351 mutex_init(&pip->cmd_lock); in cyapa_pip_cmd_state_initialize()
353 pip->resp_sort_func = NULL; in cyapa_pip_cmd_state_initialize()
354 pip->in_progress_cmd = PIP_INVALID_CMD; in cyapa_pip_cmd_state_initialize()
355 pip->resp_data = NULL; in cyapa_pip_cmd_state_initialize()
356 pip->resp_len = NULL; in cyapa_pip_cmd_state_initialize()
407 struct cyapa_pip_cmd_states *pip = &cyapa->cmd_states.pip; in cyapa_empty_pip_output_data() local
439 error = cyapa_i2c_pip_read(cyapa, pip->empty_buf, in cyapa_empty_pip_output_data()
444 length = get_unaligned_le16(pip->empty_buf); in cyapa_empty_pip_output_data()
455 func(cyapa, pip->empty_buf, length)) { in cyapa_empty_pip_output_data()
457 memcpy(buf, pip->empty_buf, length); in cyapa_empty_pip_output_data()
465 error = cyapa_i2c_pip_read(cyapa, pip->empty_buf, length); in cyapa_empty_pip_output_data()
471 length = get_unaligned_le16(pip->empty_buf); in cyapa_empty_pip_output_data()
475 func(cyapa, pip->empty_buf, length)) { in cyapa_empty_pip_output_data()
477 memcpy(buf, pip->empty_buf, length); in cyapa_empty_pip_output_data()
494 struct cyapa_pip_cmd_states *pip = &cyapa->cmd_states.pip; in cyapa_do_i2c_pip_cmd_irq_sync() local
498 init_completion(&pip->cmd_ready); in cyapa_do_i2c_pip_cmd_irq_sync()
500 atomic_inc(&pip->cmd_issued); in cyapa_do_i2c_pip_cmd_irq_sync()
503 atomic_dec(&pip->cmd_issued); in cyapa_do_i2c_pip_cmd_irq_sync()
508 timeout = wait_for_completion_timeout(&pip->cmd_ready, in cyapa_do_i2c_pip_cmd_irq_sync()
511 atomic_dec(&pip->cmd_issued); in cyapa_do_i2c_pip_cmd_irq_sync()
525 struct cyapa_pip_cmd_states *pip = &cyapa->cmd_states.pip; in cyapa_do_i2c_pip_cmd_polling() local
530 atomic_inc(&pip->cmd_issued); in cyapa_do_i2c_pip_cmd_polling()
533 atomic_dec(&pip->cmd_issued); in cyapa_do_i2c_pip_cmd_polling()
554 atomic_dec(&pip->cmd_issued); in cyapa_do_i2c_pip_cmd_polling()
566 struct cyapa_pip_cmd_states *pip = &cyapa->cmd_states.pip; in cyapa_i2c_pip_cmd_irq_sync() local
573 error = mutex_lock_interruptible(&pip->cmd_lock); in cyapa_i2c_pip_cmd_irq_sync()
577 pip->resp_sort_func = func; in cyapa_i2c_pip_cmd_irq_sync()
578 pip->resp_data = resp_data; in cyapa_i2c_pip_cmd_irq_sync()
579 pip->resp_len = resp_len; in cyapa_i2c_pip_cmd_irq_sync()
584 pip->in_progress_cmd = cmd[6] & 0x7f; in cyapa_i2c_pip_cmd_irq_sync()
588 pip->in_progress_cmd = cmd[7]; in cyapa_i2c_pip_cmd_irq_sync()
593 pip->is_irq_mode = true; in cyapa_i2c_pip_cmd_irq_sync()
609 pip->is_irq_mode = false; in cyapa_i2c_pip_cmd_irq_sync()
614 pip->resp_sort_func = NULL; in cyapa_i2c_pip_cmd_irq_sync()
615 pip->resp_data = NULL; in cyapa_i2c_pip_cmd_irq_sync()
616 pip->resp_len = NULL; in cyapa_i2c_pip_cmd_irq_sync()
617 pip->in_progress_cmd = PIP_INVALID_CMD; in cyapa_i2c_pip_cmd_irq_sync()
619 mutex_unlock(&pip->cmd_lock); in cyapa_i2c_pip_cmd_irq_sync()
641 struct cyapa_pip_cmd_states *pip = &cyapa->cmd_states.pip; in cyapa_sort_tsg_pip_app_resp_data() local
652 data[5] == pip->in_progress_cmd) { in cyapa_sort_tsg_pip_app_resp_data()
656 pip->in_progress_cmd) { in cyapa_sort_tsg_pip_app_resp_data()
878 struct cyapa_pip_cmd_states *pip = &cyapa->cmd_states.pip; in gen5_cmd_resp_header_parse() local
888 ret = cyapa_i2c_pip_read(cyapa, pip->empty_buf, length); in gen5_cmd_resp_header_parse()
904 } else if ((pip->empty_buf[PIP_RESP_REPORT_ID_OFFSET] == in gen5_cmd_resp_header_parse()
906 (pip->empty_buf[PIP_RESP_RSVD_OFFSET] == in gen5_cmd_resp_header_parse()
908 (pip->empty_buf[PIP_RESP_BL_SOP_OFFSET] == in gen5_cmd_resp_header_parse()
910 (pip->empty_buf[length - 1] == in gen5_cmd_resp_header_parse()
915 } else if (pip->empty_buf[PIP_RESP_REPORT_ID_OFFSET] == in gen5_cmd_resp_header_parse()
917 pip->empty_buf[PIP_RESP_RSVD_OFFSET] == in gen5_cmd_resp_header_parse()
2556 struct cyapa_pip_cmd_states *pip = &cyapa->cmd_states.pip; in cyapa_pip_irq_cmd_handler() local
2559 if (atomic_read(&pip->cmd_issued)) { in cyapa_pip_irq_cmd_handler()
2561 if (pip->is_irq_mode == false) in cyapa_pip_irq_cmd_handler()
2569 cyapa_i2c_pip_read(cyapa, pip->irq_cmd_buf, in cyapa_pip_irq_cmd_handler()
2571 length = get_unaligned_le16(pip->irq_cmd_buf); in cyapa_pip_irq_cmd_handler()
2576 pip->irq_cmd_buf, length); in cyapa_pip_irq_cmd_handler()
2577 if (!(pip->resp_sort_func && in cyapa_pip_irq_cmd_handler()
2578 pip->resp_sort_func(cyapa, in cyapa_pip_irq_cmd_handler()
2579 pip->irq_cmd_buf, length))) { in cyapa_pip_irq_cmd_handler()
2594 if (pip->resp_len) in cyapa_pip_irq_cmd_handler()
2595 length = *pip->resp_len; in cyapa_pip_irq_cmd_handler()
2597 pip->resp_data, in cyapa_pip_irq_cmd_handler()
2599 pip->resp_sort_func); in cyapa_pip_irq_cmd_handler()
2600 if (pip->resp_len && length != 0) { in cyapa_pip_irq_cmd_handler()
2601 *pip->resp_len = length; in cyapa_pip_irq_cmd_handler()
2602 atomic_dec(&pip->cmd_issued); in cyapa_pip_irq_cmd_handler()
2603 complete(&pip->cmd_ready); in cyapa_pip_irq_cmd_handler()
2608 if (pip->resp_data && pip->resp_len) { in cyapa_pip_irq_cmd_handler()
2609 *pip->resp_len = (*pip->resp_len < length) ? in cyapa_pip_irq_cmd_handler()
2610 *pip->resp_len : length; in cyapa_pip_irq_cmd_handler()
2611 memcpy(pip->resp_data, pip->irq_cmd_buf, in cyapa_pip_irq_cmd_handler()
2612 *pip->resp_len); in cyapa_pip_irq_cmd_handler()
2614 atomic_dec(&pip->cmd_issued); in cyapa_pip_irq_cmd_handler()
2615 complete(&pip->cmd_ready); in cyapa_pip_irq_cmd_handler()