Subversion Repositories Kolibri OS

Rev

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;