Lines Matching refs:msg

179 	struct drm_dp_aux_msg msg;  in drm_dp_dpcd_access()  local
183 memset(&msg, 0, sizeof(msg)); in drm_dp_dpcd_access()
184 msg.address = offset; in drm_dp_dpcd_access()
185 msg.request = request; in drm_dp_dpcd_access()
186 msg.buffer = buffer; in drm_dp_dpcd_access()
187 msg.size = size; in drm_dp_dpcd_access()
199 err = aux->transfer(aux, &msg); in drm_dp_dpcd_access()
208 switch (msg.reply & DP_AUX_NATIVE_REPLY_MASK) { in drm_dp_dpcd_access()
432 static void drm_dp_i2c_msg_write_status_update(struct drm_dp_aux_msg *msg) in drm_dp_i2c_msg_write_status_update() argument
439 if ((msg->request & ~DP_AUX_I2C_MOT) == DP_AUX_I2C_WRITE) { in drm_dp_i2c_msg_write_status_update()
440 msg->request &= DP_AUX_I2C_MOT; in drm_dp_i2c_msg_write_status_update()
441 msg->request |= DP_AUX_I2C_WRITE_STATUS_UPDATE; in drm_dp_i2c_msg_write_status_update()
457 static int drm_dp_aux_req_duration(const struct drm_dp_aux_msg *msg) in drm_dp_aux_req_duration() argument
462 if ((msg->request & DP_AUX_I2C_READ) == 0) in drm_dp_aux_req_duration()
463 len += msg->size * 8; in drm_dp_aux_req_duration()
468 static int drm_dp_aux_reply_duration(const struct drm_dp_aux_msg *msg) in drm_dp_aux_reply_duration() argument
477 if (msg->request & DP_AUX_I2C_READ) in drm_dp_aux_reply_duration()
478 len += msg->size * 8; in drm_dp_aux_reply_duration()
496 static int drm_dp_i2c_msg_duration(const struct drm_dp_aux_msg *msg, in drm_dp_i2c_msg_duration() argument
501 msg->size * I2C_DATA_LEN + in drm_dp_i2c_msg_duration()
510 static int drm_dp_i2c_retry_count(const struct drm_dp_aux_msg *msg, in drm_dp_i2c_retry_count() argument
513 int aux_time_us = drm_dp_aux_req_duration(msg) + in drm_dp_i2c_retry_count()
514 drm_dp_aux_reply_duration(msg); in drm_dp_i2c_retry_count()
515 int i2c_time_us = drm_dp_i2c_msg_duration(msg, i2c_speed_khz); in drm_dp_i2c_retry_count()
537 static int drm_dp_i2c_do_msg(struct drm_dp_aux *aux, struct drm_dp_aux_msg *msg) in drm_dp_i2c_do_msg() argument
548 int max_retries = max(7, drm_dp_i2c_retry_count(msg, dp_aux_i2c_speed_khz)); in drm_dp_i2c_do_msg()
551 ret = aux->transfer(aux, msg); in drm_dp_i2c_do_msg()
561 switch (msg->reply & DP_AUX_NATIVE_REPLY_MASK) { in drm_dp_i2c_do_msg()
570 DRM_DEBUG_KMS("native nack (result=%d, size=%zu)\n", ret, msg->size); in drm_dp_i2c_do_msg()
588 DRM_ERROR("invalid native reply %#04x\n", msg->reply); in drm_dp_i2c_do_msg()
592 switch (msg->reply & DP_AUX_I2C_REPLY_MASK) { in drm_dp_i2c_do_msg()
598 if (ret != msg->size) in drm_dp_i2c_do_msg()
599 drm_dp_i2c_msg_write_status_update(msg); in drm_dp_i2c_do_msg()
603 DRM_DEBUG_KMS("I2C nack (result=%d, size=%zu\n", ret, msg->size); in drm_dp_i2c_do_msg()
617 drm_dp_i2c_msg_write_status_update(msg); in drm_dp_i2c_do_msg()
622 DRM_ERROR("invalid I2C reply %#04x\n", msg->reply); in drm_dp_i2c_do_msg()
631 static void drm_dp_i2c_msg_set_request(struct drm_dp_aux_msg *msg, in drm_dp_i2c_msg_set_request() argument
634 msg->request = (i2c_msg->flags & I2C_M_RD) ? in drm_dp_i2c_msg_set_request()
636 msg->request |= DP_AUX_I2C_MOT; in drm_dp_i2c_msg_set_request()
647 struct drm_dp_aux_msg msg = *orig_msg; in drm_dp_i2c_drain_msg() local
649 while (msg.size > 0) { in drm_dp_i2c_drain_msg()
650 err = drm_dp_i2c_do_msg(aux, &msg); in drm_dp_i2c_drain_msg()
654 if (err < msg.size && err < ret) { in drm_dp_i2c_drain_msg()
656 msg.size, err); in drm_dp_i2c_drain_msg()
660 msg.size -= err; in drm_dp_i2c_drain_msg()
661 msg.buffer += err; in drm_dp_i2c_drain_msg()
683 struct drm_dp_aux_msg msg; in drm_dp_i2c_xfer() local
688 memset(&msg, 0, sizeof(msg)); in drm_dp_i2c_xfer()
693 msg.address = msgs[i].addr; in drm_dp_i2c_xfer()
694 drm_dp_i2c_msg_set_request(&msg, &msgs[i]); in drm_dp_i2c_xfer()
699 msg.buffer = NULL; in drm_dp_i2c_xfer()
700 msg.size = 0; in drm_dp_i2c_xfer()
701 err = drm_dp_i2c_do_msg(aux, &msg); in drm_dp_i2c_xfer()
707 drm_dp_i2c_msg_set_request(&msg, &msgs[i]); in drm_dp_i2c_xfer()
716 for (j = 0; j < msgs[i].len; j += msg.size) { in drm_dp_i2c_xfer()
717 msg.buffer = msgs[i].buf + j; in drm_dp_i2c_xfer()
718 msg.size = min(transfer_size, msgs[i].len - j); in drm_dp_i2c_xfer()
720 err = drm_dp_i2c_drain_msg(aux, &msg); in drm_dp_i2c_xfer()
726 drm_dp_i2c_msg_set_request(&msg, &msgs[i]); in drm_dp_i2c_xfer()
741 msg.request &= ~DP_AUX_I2C_MOT; in drm_dp_i2c_xfer()
742 msg.buffer = NULL; in drm_dp_i2c_xfer()
743 msg.size = 0; in drm_dp_i2c_xfer()
744 (void)drm_dp_i2c_do_msg(aux, &msg); in drm_dp_i2c_xfer()