Lines Matching refs:txmsg
855 struct drm_dp_sideband_msg_tx *txmsg) in check_txmsg_state() argument
864 state = READ_ONCE(txmsg->state); in check_txmsg_state()
870 struct drm_dp_sideband_msg_tx *txmsg) in drm_dp_mst_wait_tx_reply() argument
876 check_txmsg_state(mgr, txmsg), in drm_dp_mst_wait_tx_reply()
880 if (txmsg->state == DRM_DP_SIDEBAND_TX_TIMEOUT) { in drm_dp_mst_wait_tx_reply()
885 DRM_DEBUG_KMS("timedout msg send %p %d %d\n", txmsg, txmsg->state, txmsg->seqno); in drm_dp_mst_wait_tx_reply()
891 if (txmsg->state == DRM_DP_SIDEBAND_TX_QUEUED || in drm_dp_mst_wait_tx_reply()
892 txmsg->state == DRM_DP_SIDEBAND_TX_START_SEND) { in drm_dp_mst_wait_tx_reply()
893 list_del(&txmsg->next); in drm_dp_mst_wait_tx_reply()
896 if (txmsg->state == DRM_DP_SIDEBAND_TX_START_SEND || in drm_dp_mst_wait_tx_reply()
897 txmsg->state == DRM_DP_SIDEBAND_TX_SENT) { in drm_dp_mst_wait_tx_reply()
898 mstb->tx_slots[txmsg->seqno] = NULL; in drm_dp_mst_wait_tx_reply()
1957 struct drm_dp_sideband_msg_tx *txmsg) in set_hdr_from_dst_qlock() argument
1959 struct drm_dp_mst_branch *mstb = txmsg->dst; in set_hdr_from_dst_qlock()
1963 if (txmsg->seqno == -1) { in set_hdr_from_dst_qlock()
1969 txmsg->seqno = mstb->last_seqno; in set_hdr_from_dst_qlock()
1972 txmsg->seqno = 0; in set_hdr_from_dst_qlock()
1974 txmsg->seqno = 1; in set_hdr_from_dst_qlock()
1975 mstb->tx_slots[txmsg->seqno] = txmsg; in set_hdr_from_dst_qlock()
1978 req_type = txmsg->msg[0] & 0x7f; in set_hdr_from_dst_qlock()
1984 hdr->path_msg = txmsg->path_msg; in set_hdr_from_dst_qlock()
1989 hdr->seqno = txmsg->seqno; in set_hdr_from_dst_qlock()
1996 struct drm_dp_sideband_msg_tx *txmsg, in process_single_tx_qlock() argument
2006 if (txmsg->state == DRM_DP_SIDEBAND_TX_QUEUED) { in process_single_tx_qlock()
2007 txmsg->seqno = -1; in process_single_tx_qlock()
2008 txmsg->state = DRM_DP_SIDEBAND_TX_START_SEND; in process_single_tx_qlock()
2013 ret = set_hdr_from_dst_qlock(&hdr, txmsg); in process_single_tx_qlock()
2018 len = txmsg->cur_len - txmsg->cur_offset; in process_single_tx_qlock()
2024 if (len == txmsg->cur_len) in process_single_tx_qlock()
2032 memcpy(&chunk[idx], &txmsg->msg[txmsg->cur_offset], tosend); in process_single_tx_qlock()
2043 txmsg->cur_offset += tosend; in process_single_tx_qlock()
2044 if (txmsg->cur_offset == txmsg->cur_len) { in process_single_tx_qlock()
2045 txmsg->state = DRM_DP_SIDEBAND_TX_SENT; in process_single_tx_qlock()
2053 struct drm_dp_sideband_msg_tx *txmsg; in process_single_down_tx_qlock() local
2062 txmsg = list_first_entry(&mgr->tx_msg_downq, struct drm_dp_sideband_msg_tx, next); in process_single_down_tx_qlock()
2063 ret = process_single_tx_qlock(mgr, txmsg, false); in process_single_down_tx_qlock()
2066 list_del(&txmsg->next); in process_single_down_tx_qlock()
2069 list_del(&txmsg->next); in process_single_down_tx_qlock()
2070 if (txmsg->seqno != -1) in process_single_down_tx_qlock()
2071 txmsg->dst->tx_slots[txmsg->seqno] = NULL; in process_single_down_tx_qlock()
2072 txmsg->state = DRM_DP_SIDEBAND_TX_TIMEOUT; in process_single_down_tx_qlock()
2079 struct drm_dp_sideband_msg_tx *txmsg) in process_single_up_tx_qlock() argument
2084 ret = process_single_tx_qlock(mgr, txmsg, true); in process_single_up_tx_qlock()
2089 if (txmsg->seqno != -1) { in process_single_up_tx_qlock()
2090 WARN_ON((unsigned int)txmsg->seqno > in process_single_up_tx_qlock()
2091 ARRAY_SIZE(txmsg->dst->tx_slots)); in process_single_up_tx_qlock()
2092 txmsg->dst->tx_slots[txmsg->seqno] = NULL; in process_single_up_tx_qlock()
2097 struct drm_dp_sideband_msg_tx *txmsg) in drm_dp_queue_down_tx() argument
2100 list_add_tail(&txmsg->next, &mgr->tx_msg_downq); in drm_dp_queue_down_tx()
2110 struct drm_dp_sideband_msg_tx *txmsg; in drm_dp_send_link_address() local
2113 txmsg = kzalloc(sizeof(*txmsg), GFP_KERNEL); in drm_dp_send_link_address()
2114 if (!txmsg) in drm_dp_send_link_address()
2117 txmsg->dst = mstb; in drm_dp_send_link_address()
2118 len = build_link_address(txmsg); in drm_dp_send_link_address()
2121 drm_dp_queue_down_tx(mgr, txmsg); in drm_dp_send_link_address()
2123 ret = drm_dp_mst_wait_tx_reply(mstb, txmsg); in drm_dp_send_link_address()
2127 if (txmsg->reply.reply_type == DP_SIDEBAND_REPLY_NAK) { in drm_dp_send_link_address()
2130 DRM_DEBUG_KMS("link address reply: %d\n", txmsg->reply.u.link_addr.nports); in drm_dp_send_link_address()
2131 for (i = 0; i < txmsg->reply.u.link_addr.nports; i++) { in drm_dp_send_link_address()
2133 txmsg->reply.u.link_addr.ports[i].input_port, in drm_dp_send_link_address()
2134 txmsg->reply.u.link_addr.ports[i].peer_device_type, in drm_dp_send_link_address()
2135 txmsg->reply.u.link_addr.ports[i].port_number, in drm_dp_send_link_address()
2136 txmsg->reply.u.link_addr.ports[i].dpcd_revision, in drm_dp_send_link_address()
2137 txmsg->reply.u.link_addr.ports[i].mcs, in drm_dp_send_link_address()
2138 txmsg->reply.u.link_addr.ports[i].ddps, in drm_dp_send_link_address()
2139 txmsg->reply.u.link_addr.ports[i].legacy_device_plug_status, in drm_dp_send_link_address()
2140 txmsg->reply.u.link_addr.ports[i].num_sdp_streams, in drm_dp_send_link_address()
2141 txmsg->reply.u.link_addr.ports[i].num_sdp_stream_sinks); in drm_dp_send_link_address()
2144 drm_dp_check_mstb_guid(mstb, txmsg->reply.u.link_addr.guid); in drm_dp_send_link_address()
2146 for (i = 0; i < txmsg->reply.u.link_addr.nports; i++) { in drm_dp_send_link_address()
2147 drm_dp_add_port(mstb, mgr->dev, &txmsg->reply.u.link_addr.ports[i]); in drm_dp_send_link_address()
2156 kfree(txmsg); in drm_dp_send_link_address()
2164 struct drm_dp_sideband_msg_tx *txmsg; in drm_dp_send_enum_path_resources() local
2167 txmsg = kzalloc(sizeof(*txmsg), GFP_KERNEL); in drm_dp_send_enum_path_resources()
2168 if (!txmsg) in drm_dp_send_enum_path_resources()
2171 txmsg->dst = mstb; in drm_dp_send_enum_path_resources()
2172 len = build_enum_path_resources(txmsg, port->port_num); in drm_dp_send_enum_path_resources()
2174 drm_dp_queue_down_tx(mgr, txmsg); in drm_dp_send_enum_path_resources()
2176 ret = drm_dp_mst_wait_tx_reply(mstb, txmsg); in drm_dp_send_enum_path_resources()
2178 if (txmsg->reply.reply_type == DP_SIDEBAND_REPLY_NAK) { in drm_dp_send_enum_path_resources()
2181 if (port->port_num != txmsg->reply.u.path_resources.port_number) in drm_dp_send_enum_path_resources()
2183 …DRM_DEBUG_KMS("enum path resources %d: %d %d\n", txmsg->reply.u.path_resources.port_number, txmsg-… in drm_dp_send_enum_path_resources()
2184 txmsg->reply.u.path_resources.avail_payload_bw_number); in drm_dp_send_enum_path_resources()
2185 port->available_pbn = txmsg->reply.u.path_resources.avail_payload_bw_number; in drm_dp_send_enum_path_resources()
2189 kfree(txmsg); in drm_dp_send_enum_path_resources()
2247 struct drm_dp_sideband_msg_tx *txmsg; in drm_dp_payload_send_msg() local
2264 txmsg = kzalloc(sizeof(*txmsg), GFP_KERNEL); in drm_dp_payload_send_msg()
2265 if (!txmsg) { in drm_dp_payload_send_msg()
2273 txmsg->dst = mstb; in drm_dp_payload_send_msg()
2274 len = build_allocate_payload(txmsg, port_num, in drm_dp_payload_send_msg()
2278 drm_dp_queue_down_tx(mgr, txmsg); in drm_dp_payload_send_msg()
2288 ret = drm_dp_mst_wait_tx_reply(mstb, txmsg); in drm_dp_payload_send_msg()
2290 if (txmsg->reply.reply_type == DP_SIDEBAND_REPLY_NAK) in drm_dp_payload_send_msg()
2295 kfree(txmsg); in drm_dp_payload_send_msg()
2304 struct drm_dp_sideband_msg_tx *txmsg; in drm_dp_send_power_updown_phy() local
2311 txmsg = kzalloc(sizeof(*txmsg), GFP_KERNEL); in drm_dp_send_power_updown_phy()
2312 if (!txmsg) { in drm_dp_send_power_updown_phy()
2317 txmsg->dst = port->parent; in drm_dp_send_power_updown_phy()
2318 len = build_power_updown_phy(txmsg, port->port_num, power_up); in drm_dp_send_power_updown_phy()
2319 drm_dp_queue_down_tx(mgr, txmsg); in drm_dp_send_power_updown_phy()
2321 ret = drm_dp_mst_wait_tx_reply(port->parent, txmsg); in drm_dp_send_power_updown_phy()
2323 if (txmsg->reply.reply_type == DP_SIDEBAND_REPLY_NAK) in drm_dp_send_power_updown_phy()
2328 kfree(txmsg); in drm_dp_send_power_updown_phy()
2542 struct drm_dp_sideband_msg_tx *txmsg; in drm_dp_send_dpcd_read() local
2549 txmsg = kzalloc(sizeof(*txmsg), GFP_KERNEL); in drm_dp_send_dpcd_read()
2550 if (!txmsg) { in drm_dp_send_dpcd_read()
2555 len = build_dpcd_read(txmsg, port->port_num, offset, size); in drm_dp_send_dpcd_read()
2556 txmsg->dst = port->parent; in drm_dp_send_dpcd_read()
2558 drm_dp_queue_down_tx(mgr, txmsg); in drm_dp_send_dpcd_read()
2560 ret = drm_dp_mst_wait_tx_reply(mstb, txmsg); in drm_dp_send_dpcd_read()
2565 if (txmsg->reply.reply_type == 1) { in drm_dp_send_dpcd_read()
2572 if (txmsg->reply.u.remote_dpcd_read_ack.num_bytes != size) { in drm_dp_send_dpcd_read()
2577 ret = min_t(size_t, txmsg->reply.u.remote_dpcd_read_ack.num_bytes, in drm_dp_send_dpcd_read()
2579 memcpy(bytes, txmsg->reply.u.remote_dpcd_read_ack.bytes, ret); in drm_dp_send_dpcd_read()
2582 kfree(txmsg); in drm_dp_send_dpcd_read()
2595 struct drm_dp_sideband_msg_tx *txmsg; in drm_dp_send_dpcd_write() local
2602 txmsg = kzalloc(sizeof(*txmsg), GFP_KERNEL); in drm_dp_send_dpcd_write()
2603 if (!txmsg) { in drm_dp_send_dpcd_write()
2608 len = build_dpcd_write(txmsg, port->port_num, offset, size, bytes); in drm_dp_send_dpcd_write()
2609 txmsg->dst = mstb; in drm_dp_send_dpcd_write()
2611 drm_dp_queue_down_tx(mgr, txmsg); in drm_dp_send_dpcd_write()
2613 ret = drm_dp_mst_wait_tx_reply(mstb, txmsg); in drm_dp_send_dpcd_write()
2615 if (txmsg->reply.reply_type == DP_SIDEBAND_REPLY_NAK) in drm_dp_send_dpcd_write()
2620 kfree(txmsg); in drm_dp_send_dpcd_write()
2640 struct drm_dp_sideband_msg_tx *txmsg; in drm_dp_send_up_ack_reply() local
2642 txmsg = kzalloc(sizeof(*txmsg), GFP_KERNEL); in drm_dp_send_up_ack_reply()
2643 if (!txmsg) in drm_dp_send_up_ack_reply()
2646 txmsg->dst = mstb; in drm_dp_send_up_ack_reply()
2647 txmsg->seqno = seqno; in drm_dp_send_up_ack_reply()
2648 drm_dp_encode_up_ack_reply(txmsg, req_type); in drm_dp_send_up_ack_reply()
2652 process_single_up_tx_qlock(mgr, txmsg); in drm_dp_send_up_ack_reply()
2656 kfree(txmsg); in drm_dp_send_up_ack_reply()
2904 struct drm_dp_sideband_msg_tx *txmsg; in drm_dp_mst_handle_down_rep() local
2920 txmsg = mstb->tx_slots[slot]; in drm_dp_mst_handle_down_rep()
2924 if (!txmsg) { in drm_dp_mst_handle_down_rep()
2936 drm_dp_sideband_parse_reply(&mgr->down_rep_recv, &txmsg->reply); in drm_dp_mst_handle_down_rep()
2938 if (txmsg->reply.reply_type == DP_SIDEBAND_REPLY_NAK) in drm_dp_mst_handle_down_rep()
2940 txmsg->reply.req_type, in drm_dp_mst_handle_down_rep()
2941 drm_dp_mst_req_type_str(txmsg->reply.req_type), in drm_dp_mst_handle_down_rep()
2942 txmsg->reply.u.nak.reason, in drm_dp_mst_handle_down_rep()
2943 drm_dp_mst_nak_reason_str(txmsg->reply.u.nak.reason), in drm_dp_mst_handle_down_rep()
2944 txmsg->reply.u.nak.nak_data); in drm_dp_mst_handle_down_rep()
2950 txmsg->state = DRM_DP_SIDEBAND_TX_RX; in drm_dp_mst_handle_down_rep()
4042 struct drm_dp_sideband_msg_tx *txmsg = NULL; in drm_dp_mst_i2c_xfer() local
4068 txmsg = kzalloc(sizeof(*txmsg), GFP_KERNEL); in drm_dp_mst_i2c_xfer()
4069 if (!txmsg) { in drm_dp_mst_i2c_xfer()
4074 txmsg->dst = mstb; in drm_dp_mst_i2c_xfer()
4075 drm_dp_encode_sideband_req(&msg, txmsg); in drm_dp_mst_i2c_xfer()
4077 drm_dp_queue_down_tx(mgr, txmsg); in drm_dp_mst_i2c_xfer()
4079 ret = drm_dp_mst_wait_tx_reply(mstb, txmsg); in drm_dp_mst_i2c_xfer()
4082 if (txmsg->reply.reply_type == DP_SIDEBAND_REPLY_NAK) { in drm_dp_mst_i2c_xfer()
4086 if (txmsg->reply.u.remote_i2c_read_ack.num_bytes != msgs[num - 1].len) { in drm_dp_mst_i2c_xfer()
4090 memcpy(msgs[num - 1].buf, txmsg->reply.u.remote_i2c_read_ack.bytes, msgs[num - 1].len); in drm_dp_mst_i2c_xfer()
4094 kfree(txmsg); in drm_dp_mst_i2c_xfer()