Rev 6082 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 6082 | Rev 6336 | ||
---|---|---|---|
Line 42... | Line 42... | ||
42 | }; |
42 | }; |
Line 43... | Line 43... | ||
43 | 43 | ||
44 | /** |
44 | /** |
45 | * struct drm_dp_mst_port - MST port |
45 | * struct drm_dp_mst_port - MST port |
46 | * @kref: reference count for this port. |
- | |
47 | * @guid_valid: for DP 1.2 devices if we have validated the GUID. |
- | |
48 | * @guid: guid for DP 1.2 device on this port. |
46 | * @kref: reference count for this port. |
49 | * @port_num: port number |
47 | * @port_num: port number |
50 | * @input: if this port is an input port. |
48 | * @input: if this port is an input port. |
51 | * @mcs: message capability status - DP 1.2 spec. |
49 | * @mcs: message capability status - DP 1.2 spec. |
52 | * @ddps: DisplayPort Device Plug Status - DP 1.2 |
50 | * @ddps: DisplayPort Device Plug Status - DP 1.2 |
Line 68... | Line 66... | ||
68 | * in the MST topology. |
66 | * in the MST topology. |
69 | */ |
67 | */ |
70 | struct drm_dp_mst_port { |
68 | struct drm_dp_mst_port { |
71 | struct kref kref; |
69 | struct kref kref; |
Line 72... | Line -... | ||
72 | - | ||
73 | /* if dpcd 1.2 device is on this port - its GUID info */ |
- | |
74 | bool guid_valid; |
- | |
75 | u8 guid[16]; |
- | |
76 | 70 | ||
77 | u8 port_num; |
71 | u8 port_num; |
78 | bool input; |
72 | bool input; |
79 | bool mcs; |
73 | bool mcs; |
80 | bool ddps; |
74 | bool ddps; |
Line 107... | Line 101... | ||
107 | * @port_parent: pointer to the port parent, NULL if toplevel. |
101 | * @port_parent: pointer to the port parent, NULL if toplevel. |
108 | * @mgr: topology manager for this branch device. |
102 | * @mgr: topology manager for this branch device. |
109 | * @tx_slots: transmission slots for this device. |
103 | * @tx_slots: transmission slots for this device. |
110 | * @last_seqno: last sequence number used to talk to this. |
104 | * @last_seqno: last sequence number used to talk to this. |
111 | * @link_address_sent: if a link address message has been sent to this device yet. |
105 | * @link_address_sent: if a link address message has been sent to this device yet. |
- | 106 | * @guid: guid for DP 1.2 branch device. port under this branch can be |
|
- | 107 | * identified by port #. |
|
112 | * |
108 | * |
113 | * This structure represents an MST branch device, there is one |
109 | * This structure represents an MST branch device, there is one |
114 | * primary branch device at the root, along with any others connected |
110 | * primary branch device at the root, along with any other branches connected |
115 | * to downstream ports |
111 | * to downstream port of parent branches. |
116 | */ |
112 | */ |
117 | struct drm_dp_mst_branch { |
113 | struct drm_dp_mst_branch { |
118 | struct kref kref; |
114 | struct kref kref; |
119 | u8 rad[8]; |
115 | u8 rad[8]; |
120 | u8 lct; |
116 | u8 lct; |
Line 129... | Line 125... | ||
129 | 125 | ||
130 | /* slots are protected by mstb->mgr->qlock */ |
126 | /* slots are protected by mstb->mgr->qlock */ |
131 | struct drm_dp_sideband_msg_tx *tx_slots[2]; |
127 | struct drm_dp_sideband_msg_tx *tx_slots[2]; |
132 | int last_seqno; |
128 | int last_seqno; |
- | 129 | bool link_address_sent; |
|
- | 130 | ||
- | 131 | /* global unique identifier to identify branch devices */ |
|
133 | bool link_address_sent; |
132 | u8 guid[16]; |
Line 134... | Line 133... | ||
134 | }; |
133 | }; |
135 | 134 | ||
Line 403... | Line 402... | ||
403 | * @aux: aux channel for the DP connector. |
402 | * @aux: aux channel for the DP connector. |
404 | * @max_payloads: maximum number of payloads the GPU can generate. |
403 | * @max_payloads: maximum number of payloads the GPU can generate. |
405 | * @conn_base_id: DRM connector ID this mgr is connected to. |
404 | * @conn_base_id: DRM connector ID this mgr is connected to. |
406 | * @down_rep_recv: msg receiver state for down replies. |
405 | * @down_rep_recv: msg receiver state for down replies. |
407 | * @up_req_recv: msg receiver state for up requests. |
406 | * @up_req_recv: msg receiver state for up requests. |
408 | * @lock: protects mst state, primary, guid, dpcd. |
407 | * @lock: protects mst state, primary, dpcd. |
409 | * @mst_state: if this manager is enabled for an MST capable port. |
408 | * @mst_state: if this manager is enabled for an MST capable port. |
410 | * @mst_primary: pointer to the primary branch device. |
409 | * @mst_primary: pointer to the primary branch device. |
411 | * @guid_valid: GUID valid for the primary branch device. |
- | |
412 | * @guid: GUID for primary port. |
- | |
413 | * @dpcd: cache of DPCD for primary port. |
410 | * @dpcd: cache of DPCD for primary port. |
414 | * @pbn_div: PBN to slots divisor. |
411 | * @pbn_div: PBN to slots divisor. |
415 | * |
412 | * |
416 | * This struct represents the toplevel displayport MST topology manager. |
413 | * This struct represents the toplevel displayport MST topology manager. |
417 | * There should be one instance of this for every MST capable DP connector |
414 | * There should be one instance of this for every MST capable DP connector |
Line 429... | Line 426... | ||
429 | /* only ever accessed from the workqueue - which should be serialised */ |
426 | /* only ever accessed from the workqueue - which should be serialised */ |
430 | struct drm_dp_sideband_msg_rx down_rep_recv; |
427 | struct drm_dp_sideband_msg_rx down_rep_recv; |
431 | struct drm_dp_sideband_msg_rx up_req_recv; |
428 | struct drm_dp_sideband_msg_rx up_req_recv; |
Line 432... | Line 429... | ||
432 | 429 | ||
433 | /* pointer to info about the initial MST device */ |
430 | /* pointer to info about the initial MST device */ |
Line 434... | Line 431... | ||
434 | struct mutex lock; /* protects mst_state + primary + guid + dpcd */ |
431 | struct mutex lock; /* protects mst_state + primary + dpcd */ |
435 | 432 | ||
436 | bool mst_state; |
- | |
437 | struct drm_dp_mst_branch *mst_primary; |
- | |
438 | /* primary MST device GUID */ |
433 | bool mst_state; |
439 | bool guid_valid; |
434 | struct drm_dp_mst_branch *mst_primary; |
440 | u8 guid[16]; |
435 | |
441 | u8 dpcd[DP_RECEIVER_CAP_SIZE]; |
436 | u8 dpcd[DP_RECEIVER_CAP_SIZE]; |
442 | u8 sink_count; |
437 | u8 sink_count; |
443 | int pbn_div; |
438 | int pbn_div; |
Line 448... | Line 443... | ||
448 | /* messages to be transmitted */ |
443 | /* messages to be transmitted */ |
449 | /* qlock protects the upq/downq and in_progress, |
444 | /* qlock protects the upq/downq and in_progress, |
450 | the mstb tx_slots and txmsg->state once they are queued */ |
445 | the mstb tx_slots and txmsg->state once they are queued */ |
451 | struct mutex qlock; |
446 | struct mutex qlock; |
452 | struct list_head tx_msg_downq; |
447 | struct list_head tx_msg_downq; |
453 | struct list_head tx_msg_upq; |
- | |
454 | bool tx_down_in_progress; |
448 | bool tx_down_in_progress; |
455 | bool tx_up_in_progress; |
- | |
Line 456... | Line 449... | ||
456 | 449 | ||
457 | /* payload info + lock for it */ |
450 | /* payload info + lock for it */ |
458 | struct mutex payload_lock; |
451 | struct mutex payload_lock; |
459 | struct drm_dp_vcpi **proposed_vcpis; |
452 | struct drm_dp_vcpi **proposed_vcpis; |