Lines Matching refs:txmsg

787 			      struct drm_dp_sideband_msg_tx *txmsg)  in check_txmsg_state()  argument
796 state = READ_ONCE(txmsg->state); in check_txmsg_state()
802 struct drm_dp_sideband_msg_tx *txmsg) in drm_dp_mst_wait_tx_reply() argument
808 check_txmsg_state(mgr, txmsg), in drm_dp_mst_wait_tx_reply()
812 if (txmsg->state == DRM_DP_SIDEBAND_TX_TIMEOUT) { in drm_dp_mst_wait_tx_reply()
817 DRM_DEBUG_KMS("timedout msg send %p %d %d\n", txmsg, txmsg->state, txmsg->seqno); in drm_dp_mst_wait_tx_reply()
823 if (txmsg->state == DRM_DP_SIDEBAND_TX_QUEUED || in drm_dp_mst_wait_tx_reply()
824 txmsg->state == DRM_DP_SIDEBAND_TX_START_SEND) { in drm_dp_mst_wait_tx_reply()
825 list_del(&txmsg->next); in drm_dp_mst_wait_tx_reply()
828 if (txmsg->state == DRM_DP_SIDEBAND_TX_START_SEND || in drm_dp_mst_wait_tx_reply()
829 txmsg->state == DRM_DP_SIDEBAND_TX_SENT) { in drm_dp_mst_wait_tx_reply()
830 mstb->tx_slots[txmsg->seqno] = NULL; in drm_dp_mst_wait_tx_reply()
1450 struct drm_dp_sideband_msg_tx *txmsg) in set_hdr_from_dst_qlock() argument
1452 struct drm_dp_mst_branch *mstb = txmsg->dst; in set_hdr_from_dst_qlock()
1456 if (txmsg->seqno == -1) { in set_hdr_from_dst_qlock()
1462 txmsg->seqno = mstb->last_seqno; in set_hdr_from_dst_qlock()
1465 txmsg->seqno = 0; in set_hdr_from_dst_qlock()
1467 txmsg->seqno = 1; in set_hdr_from_dst_qlock()
1468 mstb->tx_slots[txmsg->seqno] = txmsg; in set_hdr_from_dst_qlock()
1471 req_type = txmsg->msg[0] & 0x7f; in set_hdr_from_dst_qlock()
1477 hdr->path_msg = txmsg->path_msg; in set_hdr_from_dst_qlock()
1482 hdr->seqno = txmsg->seqno; in set_hdr_from_dst_qlock()
1489 struct drm_dp_sideband_msg_tx *txmsg, in process_single_tx_qlock() argument
1499 if (txmsg->state == DRM_DP_SIDEBAND_TX_QUEUED) { in process_single_tx_qlock()
1500 txmsg->seqno = -1; in process_single_tx_qlock()
1501 txmsg->state = DRM_DP_SIDEBAND_TX_START_SEND; in process_single_tx_qlock()
1506 ret = set_hdr_from_dst_qlock(&hdr, txmsg); in process_single_tx_qlock()
1511 len = txmsg->cur_len - txmsg->cur_offset; in process_single_tx_qlock()
1517 if (len == txmsg->cur_len) in process_single_tx_qlock()
1525 memcpy(&chunk[idx], &txmsg->msg[txmsg->cur_offset], tosend); in process_single_tx_qlock()
1536 txmsg->cur_offset += tosend; in process_single_tx_qlock()
1537 if (txmsg->cur_offset == txmsg->cur_len) { in process_single_tx_qlock()
1538 txmsg->state = DRM_DP_SIDEBAND_TX_SENT; in process_single_tx_qlock()
1546 struct drm_dp_sideband_msg_tx *txmsg; in process_single_down_tx_qlock() local
1555 txmsg = list_first_entry(&mgr->tx_msg_downq, struct drm_dp_sideband_msg_tx, next); in process_single_down_tx_qlock()
1556 ret = process_single_tx_qlock(mgr, txmsg, false); in process_single_down_tx_qlock()
1559 list_del(&txmsg->next); in process_single_down_tx_qlock()
1562 list_del(&txmsg->next); in process_single_down_tx_qlock()
1563 if (txmsg->seqno != -1) in process_single_down_tx_qlock()
1564 txmsg->dst->tx_slots[txmsg->seqno] = NULL; in process_single_down_tx_qlock()
1565 txmsg->state = DRM_DP_SIDEBAND_TX_TIMEOUT; in process_single_down_tx_qlock()
1572 struct drm_dp_sideband_msg_tx *txmsg) in process_single_up_tx_qlock() argument
1577 ret = process_single_tx_qlock(mgr, txmsg, true); in process_single_up_tx_qlock()
1582 txmsg->dst->tx_slots[txmsg->seqno] = NULL; in process_single_up_tx_qlock()
1586 struct drm_dp_sideband_msg_tx *txmsg) in drm_dp_queue_down_tx() argument
1589 list_add_tail(&txmsg->next, &mgr->tx_msg_downq); in drm_dp_queue_down_tx()
1599 struct drm_dp_sideband_msg_tx *txmsg; in drm_dp_send_link_address() local
1602 txmsg = kzalloc(sizeof(*txmsg), GFP_KERNEL); in drm_dp_send_link_address()
1603 if (!txmsg) in drm_dp_send_link_address()
1606 txmsg->dst = mstb; in drm_dp_send_link_address()
1607 len = build_link_address(txmsg); in drm_dp_send_link_address()
1610 drm_dp_queue_down_tx(mgr, txmsg); in drm_dp_send_link_address()
1612 ret = drm_dp_mst_wait_tx_reply(mstb, txmsg); in drm_dp_send_link_address()
1616 if (txmsg->reply.reply_type == 1) in drm_dp_send_link_address()
1619 DRM_DEBUG_KMS("link address reply: %d\n", txmsg->reply.u.link_addr.nports); in drm_dp_send_link_address()
1620 for (i = 0; i < txmsg->reply.u.link_addr.nports; i++) { in drm_dp_send_link_address()
1622 txmsg->reply.u.link_addr.ports[i].input_port, in drm_dp_send_link_address()
1623 txmsg->reply.u.link_addr.ports[i].peer_device_type, in drm_dp_send_link_address()
1624 txmsg->reply.u.link_addr.ports[i].port_number, in drm_dp_send_link_address()
1625 txmsg->reply.u.link_addr.ports[i].dpcd_revision, in drm_dp_send_link_address()
1626 txmsg->reply.u.link_addr.ports[i].mcs, in drm_dp_send_link_address()
1627 txmsg->reply.u.link_addr.ports[i].ddps, in drm_dp_send_link_address()
1628 txmsg->reply.u.link_addr.ports[i].legacy_device_plug_status, in drm_dp_send_link_address()
1629 txmsg->reply.u.link_addr.ports[i].num_sdp_streams, in drm_dp_send_link_address()
1630 txmsg->reply.u.link_addr.ports[i].num_sdp_stream_sinks); in drm_dp_send_link_address()
1633 drm_dp_check_mstb_guid(mstb, txmsg->reply.u.link_addr.guid); in drm_dp_send_link_address()
1635 for (i = 0; i < txmsg->reply.u.link_addr.nports; i++) { in drm_dp_send_link_address()
1636 drm_dp_add_port(mstb, mgr->dev, &txmsg->reply.u.link_addr.ports[i]); in drm_dp_send_link_address()
1645 kfree(txmsg); in drm_dp_send_link_address()
1653 struct drm_dp_sideband_msg_tx *txmsg; in drm_dp_send_enum_path_resources() local
1656 txmsg = kzalloc(sizeof(*txmsg), GFP_KERNEL); in drm_dp_send_enum_path_resources()
1657 if (!txmsg) in drm_dp_send_enum_path_resources()
1660 txmsg->dst = mstb; in drm_dp_send_enum_path_resources()
1661 len = build_enum_path_resources(txmsg, port->port_num); in drm_dp_send_enum_path_resources()
1663 drm_dp_queue_down_tx(mgr, txmsg); in drm_dp_send_enum_path_resources()
1665 ret = drm_dp_mst_wait_tx_reply(mstb, txmsg); in drm_dp_send_enum_path_resources()
1667 if (txmsg->reply.reply_type == 1) in drm_dp_send_enum_path_resources()
1670 if (port->port_num != txmsg->reply.u.path_resources.port_number) in drm_dp_send_enum_path_resources()
1672 …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()
1673 txmsg->reply.u.path_resources.avail_payload_bw_number); in drm_dp_send_enum_path_resources()
1674 port->available_pbn = txmsg->reply.u.path_resources.avail_payload_bw_number; in drm_dp_send_enum_path_resources()
1678 kfree(txmsg); in drm_dp_send_enum_path_resources()
1718 struct drm_dp_sideband_msg_tx *txmsg; in drm_dp_payload_send_msg() local
1739 txmsg = kzalloc(sizeof(*txmsg), GFP_KERNEL); in drm_dp_payload_send_msg()
1740 if (!txmsg) { in drm_dp_payload_send_msg()
1748 txmsg->dst = mstb; in drm_dp_payload_send_msg()
1749 len = build_allocate_payload(txmsg, port_num, in drm_dp_payload_send_msg()
1753 drm_dp_queue_down_tx(mgr, txmsg); in drm_dp_payload_send_msg()
1755 ret = drm_dp_mst_wait_tx_reply(mstb, txmsg); in drm_dp_payload_send_msg()
1757 if (txmsg->reply.reply_type == 1) { in drm_dp_payload_send_msg()
1762 kfree(txmsg); in drm_dp_payload_send_msg()
1772 struct drm_dp_sideband_msg_tx *txmsg; in drm_dp_send_power_updown_phy() local
1779 txmsg = kzalloc(sizeof(*txmsg), GFP_KERNEL); in drm_dp_send_power_updown_phy()
1780 if (!txmsg) { in drm_dp_send_power_updown_phy()
1785 txmsg->dst = port->parent; in drm_dp_send_power_updown_phy()
1786 len = build_power_updown_phy(txmsg, port->port_num, power_up); in drm_dp_send_power_updown_phy()
1787 drm_dp_queue_down_tx(mgr, txmsg); in drm_dp_send_power_updown_phy()
1789 ret = drm_dp_mst_wait_tx_reply(port->parent, txmsg); in drm_dp_send_power_updown_phy()
1791 if (txmsg->reply.reply_type == 1) in drm_dp_send_power_updown_phy()
1796 kfree(txmsg); in drm_dp_send_power_updown_phy()
1987 struct drm_dp_sideband_msg_tx *txmsg;
1989 txmsg = kzalloc(sizeof(*txmsg), GFP_KERNEL);
1990 if (!txmsg)
1993 len = build_dpcd_read(txmsg, port->port_num, 0, 8);
1994 txmsg->dst = port->parent;
1996 drm_dp_queue_down_tx(mgr, txmsg);
2008 struct drm_dp_sideband_msg_tx *txmsg; in drm_dp_send_dpcd_write() local
2015 txmsg = kzalloc(sizeof(*txmsg), GFP_KERNEL); in drm_dp_send_dpcd_write()
2016 if (!txmsg) { in drm_dp_send_dpcd_write()
2021 len = build_dpcd_write(txmsg, port->port_num, offset, size, bytes); in drm_dp_send_dpcd_write()
2022 txmsg->dst = mstb; in drm_dp_send_dpcd_write()
2024 drm_dp_queue_down_tx(mgr, txmsg); in drm_dp_send_dpcd_write()
2026 ret = drm_dp_mst_wait_tx_reply(mstb, txmsg); in drm_dp_send_dpcd_write()
2028 if (txmsg->reply.reply_type == 1) { in drm_dp_send_dpcd_write()
2033 kfree(txmsg); in drm_dp_send_dpcd_write()
2053 struct drm_dp_sideband_msg_tx *txmsg; in drm_dp_send_up_ack_reply() local
2055 txmsg = kzalloc(sizeof(*txmsg), GFP_KERNEL); in drm_dp_send_up_ack_reply()
2056 if (!txmsg) in drm_dp_send_up_ack_reply()
2059 txmsg->dst = mstb; in drm_dp_send_up_ack_reply()
2060 txmsg->seqno = seqno; in drm_dp_send_up_ack_reply()
2061 drm_dp_encode_up_ack_reply(txmsg, req_type); in drm_dp_send_up_ack_reply()
2065 process_single_up_tx_qlock(mgr, txmsg); in drm_dp_send_up_ack_reply()
2069 kfree(txmsg); in drm_dp_send_up_ack_reply()
2317 struct drm_dp_sideband_msg_tx *txmsg; in drm_dp_mst_handle_down_rep() local
2333 txmsg = mstb->tx_slots[slot]; in drm_dp_mst_handle_down_rep()
2337 if (!txmsg) { in drm_dp_mst_handle_down_rep()
2349 drm_dp_sideband_parse_reply(&mgr->down_rep_recv, &txmsg->reply); in drm_dp_mst_handle_down_rep()
2350 if (txmsg->reply.reply_type == 1) { in drm_dp_mst_handle_down_rep()
2351 …: req 0x%02x, reason 0x%02x, nak data 0x%02x\n", txmsg->reply.req_type, txmsg->reply.u.nak.reason,… in drm_dp_mst_handle_down_rep()
2358 txmsg->state = DRM_DP_SIDEBAND_TX_RX; in drm_dp_mst_handle_down_rep()
3252 struct drm_dp_sideband_msg_tx *txmsg = NULL; in drm_dp_mst_i2c_xfer() local
3282 txmsg = kzalloc(sizeof(*txmsg), GFP_KERNEL); in drm_dp_mst_i2c_xfer()
3283 if (!txmsg) { in drm_dp_mst_i2c_xfer()
3288 txmsg->dst = mstb; in drm_dp_mst_i2c_xfer()
3289 drm_dp_encode_sideband_req(&msg, txmsg); in drm_dp_mst_i2c_xfer()
3291 drm_dp_queue_down_tx(mgr, txmsg); in drm_dp_mst_i2c_xfer()
3293 ret = drm_dp_mst_wait_tx_reply(mstb, txmsg); in drm_dp_mst_i2c_xfer()
3296 if (txmsg->reply.reply_type == 1) { /* got a NAK back */ in drm_dp_mst_i2c_xfer()
3300 if (txmsg->reply.u.remote_i2c_read_ack.num_bytes != msgs[num - 1].len) { in drm_dp_mst_i2c_xfer()
3304 memcpy(msgs[num - 1].buf, txmsg->reply.u.remote_i2c_read_ack.bytes, msgs[num - 1].len); in drm_dp_mst_i2c_xfer()
3308 kfree(txmsg); in drm_dp_mst_i2c_xfer()