summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorManasi Navare <manasi.d.navare@intel.com>2019-02-06 16:31:48 -0500
committerManasi Navare <manasi.d.navare@intel.com>2019-02-08 16:38:51 -0500
commit05bad2357afcb9f89804f04f0ae5ac58ae898ec5 (patch)
tree8d18074e82e592b2385578d8867bde2c35a4caaf
parent05f8bc82fc428dbaf41764e95167dd759769f33d (diff)
drm/dsc: Add kernel documentation for DRM DP DSC helpers
This patch adds appropriate kernel documentation for DRM DP helpers used for enabling Display Stream compression functionality in drm_dp_helper.h and drm_dp_helper.c as well as for the DSC spec related structure definitions and helpers in drm_dsc.c and drm_dsc.h Also add links between the functions and structures in the documentation. v3: * Fix the checkpatch warnings (Sean Paul) v2: * Add inline comments for longer structs (Daniel Vetter) * Split the summary and description (Daniel Vetter) Suggested-by: Daniel Vetter <daniel.vetter@intel.com> Suggested-by: Sean Paul <sean@poorly.run> Cc: Daniel Vetter <daniel.vetter@intel.com> Cc: Sean Paul <sean@poorly.run> Signed-off-by: Manasi Navare <manasi.d.navare@intel.com> Acked-by: Sean Paul <sean@poorly.run> Reviewed-by: Daniel Vetter <daniel.vetter@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20190206213148.21390-1-manasi.d.navare@intel.com
-rw-r--r--drivers/gpu/drm/drm_dp_helper.c47
-rw-r--r--drivers/gpu/drm/drm_dsc.c30
-rw-r--r--include/drm/drm_dp_helper.h15
-rw-r--r--include/drm/drm_dsc.h233
4 files changed, 259 insertions, 66 deletions
diff --git a/drivers/gpu/drm/drm_dp_helper.c b/drivers/gpu/drm/drm_dp_helper.c
index 54120b6319e7..54a6414c5d96 100644
--- a/drivers/gpu/drm/drm_dp_helper.c
+++ b/drivers/gpu/drm/drm_dp_helper.c
@@ -1360,7 +1360,20 @@ int drm_dp_read_desc(struct drm_dp_aux *aux, struct drm_dp_desc *desc,
1360EXPORT_SYMBOL(drm_dp_read_desc); 1360EXPORT_SYMBOL(drm_dp_read_desc);
1361 1361
1362/** 1362/**
1363 * DRM DP Helpers for DSC 1363 * drm_dp_dsc_sink_max_slice_count() - Get the max slice count
1364 * supported by the DSC sink.
1365 * @dsc_dpcd: DSC capabilities from DPCD
1366 * @is_edp: true if its eDP, false for DP
1367 *
1368 * Read the slice capabilities DPCD register from DSC sink to get
1369 * the maximum slice count supported. This is used to populate
1370 * the DSC parameters in the &struct drm_dsc_config by the driver.
1371 * Driver creates an infoframe using these parameters to populate
1372 * &struct drm_dsc_pps_infoframe. These are sent to the sink using DSC
1373 * infoframe using the helper function drm_dsc_pps_infoframe_pack()
1374 *
1375 * Returns:
1376 * Maximum slice count supported by DSC sink or 0 its invalid
1364 */ 1377 */
1365u8 drm_dp_dsc_sink_max_slice_count(const u8 dsc_dpcd[DP_DSC_RECEIVER_CAP_SIZE], 1378u8 drm_dp_dsc_sink_max_slice_count(const u8 dsc_dpcd[DP_DSC_RECEIVER_CAP_SIZE],
1366 bool is_edp) 1379 bool is_edp)
@@ -1405,6 +1418,21 @@ u8 drm_dp_dsc_sink_max_slice_count(const u8 dsc_dpcd[DP_DSC_RECEIVER_CAP_SIZE],
1405} 1418}
1406EXPORT_SYMBOL(drm_dp_dsc_sink_max_slice_count); 1419EXPORT_SYMBOL(drm_dp_dsc_sink_max_slice_count);
1407 1420
1421/**
1422 * drm_dp_dsc_sink_line_buf_depth() - Get the line buffer depth in bits
1423 * @dsc_dpcd: DSC capabilities from DPCD
1424 *
1425 * Read the DSC DPCD register to parse the line buffer depth in bits which is
1426 * number of bits of precision within the decoder line buffer supported by
1427 * the DSC sink. This is used to populate the DSC parameters in the
1428 * &struct drm_dsc_config by the driver.
1429 * Driver creates an infoframe using these parameters to populate
1430 * &struct drm_dsc_pps_infoframe. These are sent to the sink using DSC
1431 * infoframe using the helper function drm_dsc_pps_infoframe_pack()
1432 *
1433 * Returns:
1434 * Line buffer depth supported by DSC panel or 0 its invalid
1435 */
1408u8 drm_dp_dsc_sink_line_buf_depth(const u8 dsc_dpcd[DP_DSC_RECEIVER_CAP_SIZE]) 1436u8 drm_dp_dsc_sink_line_buf_depth(const u8 dsc_dpcd[DP_DSC_RECEIVER_CAP_SIZE])
1409{ 1437{
1410 u8 line_buf_depth = dsc_dpcd[DP_DSC_LINE_BUF_BIT_DEPTH - DP_DSC_SUPPORT]; 1438 u8 line_buf_depth = dsc_dpcd[DP_DSC_LINE_BUF_BIT_DEPTH - DP_DSC_SUPPORT];
@@ -1434,6 +1462,23 @@ u8 drm_dp_dsc_sink_line_buf_depth(const u8 dsc_dpcd[DP_DSC_RECEIVER_CAP_SIZE])
1434} 1462}
1435EXPORT_SYMBOL(drm_dp_dsc_sink_line_buf_depth); 1463EXPORT_SYMBOL(drm_dp_dsc_sink_line_buf_depth);
1436 1464
1465/**
1466 * drm_dp_dsc_sink_supported_input_bpcs() - Get all the input bits per component
1467 * values supported by the DSC sink.
1468 * @dsc_dpcd: DSC capabilities from DPCD
1469 * @dsc_bpc: An array to be filled by this helper with supported
1470 * input bpcs.
1471 *
1472 * Read the DSC DPCD from the sink device to parse the supported bits per
1473 * component values. This is used to populate the DSC parameters
1474 * in the &struct drm_dsc_config by the driver.
1475 * Driver creates an infoframe using these parameters to populate
1476 * &struct drm_dsc_pps_infoframe. These are sent to the sink using DSC
1477 * infoframe using the helper function drm_dsc_pps_infoframe_pack()
1478 *
1479 * Returns:
1480 * Number of input BPC values parsed from the DPCD
1481 */
1437int drm_dp_dsc_sink_supported_input_bpcs(const u8 dsc_dpcd[DP_DSC_RECEIVER_CAP_SIZE], 1482int drm_dp_dsc_sink_supported_input_bpcs(const u8 dsc_dpcd[DP_DSC_RECEIVER_CAP_SIZE],
1438 u8 dsc_bpc[3]) 1483 u8 dsc_bpc[3])
1439{ 1484{
diff --git a/drivers/gpu/drm/drm_dsc.c b/drivers/gpu/drm/drm_dsc.c
index bc2b23adb072..bce99f95c1a3 100644
--- a/drivers/gpu/drm/drm_dsc.c
+++ b/drivers/gpu/drm/drm_dsc.c
@@ -17,6 +17,12 @@
17/** 17/**
18 * DOC: dsc helpers 18 * DOC: dsc helpers
19 * 19 *
20 * VESA specification for DP 1.4 adds a new feature called Display Stream
21 * Compression (DSC) used to compress the pixel bits before sending it on
22 * DP/eDP/MIPI DSI interface. DSC is required to be enabled so that the existing
23 * display interfaces can support high resolutions at higher frames rates uisng
24 * the maximum available link capacity of these interfaces.
25 *
20 * These functions contain some common logic and helpers to deal with VESA 26 * These functions contain some common logic and helpers to deal with VESA
21 * Display Stream Compression standard required for DSC on Display Port/eDP or 27 * Display Stream Compression standard required for DSC on Display Port/eDP or
22 * MIPI display interfaces. 28 * MIPI display interfaces.
@@ -26,6 +32,13 @@
26 * drm_dsc_dp_pps_header_init() - Initializes the PPS Header 32 * drm_dsc_dp_pps_header_init() - Initializes the PPS Header
27 * for DisplayPort as per the DP 1.4 spec. 33 * for DisplayPort as per the DP 1.4 spec.
28 * @pps_sdp: Secondary data packet for DSC Picture Parameter Set 34 * @pps_sdp: Secondary data packet for DSC Picture Parameter Set
35 * as defined in &struct drm_dsc_pps_infoframe
36 *
37 * DP 1.4 spec defines the secondary data packet for sending the
38 * picture parameter infoframes from the source to the sink.
39 * This function populates the pps header defined in
40 * &struct drm_dsc_pps_infoframe as per the header bytes defined
41 * in &struct dp_sdp_header.
29 */ 42 */
30void drm_dsc_dp_pps_header_init(struct drm_dsc_pps_infoframe *pps_sdp) 43void drm_dsc_dp_pps_header_init(struct drm_dsc_pps_infoframe *pps_sdp)
31{ 44{
@@ -38,15 +51,20 @@ EXPORT_SYMBOL(drm_dsc_dp_pps_header_init);
38 51
39/** 52/**
40 * drm_dsc_pps_infoframe_pack() - Populates the DSC PPS infoframe 53 * drm_dsc_pps_infoframe_pack() - Populates the DSC PPS infoframe
41 * using the DSC configuration parameters in the order expected
42 * by the DSC Display Sink device. For the DSC, the sink device
43 * expects the PPS payload in the big endian format for the fields
44 * that span more than 1 byte.
45 * 54 *
46 * @pps_sdp: 55 * @pps_sdp:
47 * Secondary data packet for DSC Picture Parameter Set 56 * Secondary data packet for DSC Picture Parameter Set. This is defined
57 * by &struct drm_dsc_pps_infoframe
48 * @dsc_cfg: 58 * @dsc_cfg:
49 * DSC Configuration data filled by driver 59 * DSC Configuration data filled by driver as defined by
60 * &struct drm_dsc_config
61 *
62 * DSC source device sends a secondary data packet filled with all the
63 * picture parameter set (PPS) information required by the sink to decode
64 * the compressed frame. Driver populates the dsC PPS infoframe using the DSC
65 * configuration parameters in the order expected by the DSC Display Sink
66 * device. For the DSC, the sink device expects the PPS payload in the big
67 * endian format for the fields that span more than 1 byte.
50 */ 68 */
51void drm_dsc_pps_infoframe_pack(struct drm_dsc_pps_infoframe *pps_sdp, 69void drm_dsc_pps_infoframe_pack(struct drm_dsc_pps_infoframe *pps_sdp,
52 const struct drm_dsc_config *dsc_cfg) 70 const struct drm_dsc_config *dsc_cfg)
diff --git a/include/drm/drm_dp_helper.h b/include/drm/drm_dp_helper.h
index 5db7fb8c8b50..2711cdfa0c13 100644
--- a/include/drm/drm_dp_helper.h
+++ b/include/drm/drm_dp_helper.h
@@ -1052,11 +1052,18 @@ int drm_dp_bw_code_to_link_rate(u8 link_bw);
1052#define DP_SDP_VSC_EXT_CEA 0x21 /* DP 1.4 */ 1052#define DP_SDP_VSC_EXT_CEA 0x21 /* DP 1.4 */
1053/* 0x80+ CEA-861 infoframe types */ 1053/* 0x80+ CEA-861 infoframe types */
1054 1054
1055/**
1056 * struct dp_sdp_header - DP secondary data packet header
1057 * @HB0: Secondary Data Packet ID
1058 * @HB1: Secondary Data Packet Type
1059 * @HB2: Secondary Data Packet Specific header, Byte 0
1060 * @HB3: Secondary Data packet Specific header, Byte 1
1061 */
1055struct dp_sdp_header { 1062struct dp_sdp_header {
1056 u8 HB0; /* Secondary Data Packet ID */ 1063 u8 HB0;
1057 u8 HB1; /* Secondary Data Packet Type */ 1064 u8 HB1;
1058 u8 HB2; /* Secondary Data Packet Specific header, Byte 0 */ 1065 u8 HB2;
1059 u8 HB3; /* Secondary Data packet Specific header, Byte 1 */ 1066 u8 HB3;
1060} __packed; 1067} __packed;
1061 1068
1062#define EDP_SDP_HEADER_REVISION_MASK 0x1F 1069#define EDP_SDP_HEADER_REVISION_MASK 0x1F
diff --git a/include/drm/drm_dsc.h b/include/drm/drm_dsc.h
index d03f1b83421a..9c26f083c70f 100644
--- a/include/drm/drm_dsc.h
+++ b/include/drm/drm_dsc.h
@@ -44,111 +44,231 @@
44#define DSC_1_2_MAX_LINEBUF_DEPTH_VAL 0 44#define DSC_1_2_MAX_LINEBUF_DEPTH_VAL 0
45#define DSC_1_1_MAX_LINEBUF_DEPTH_BITS 13 45#define DSC_1_1_MAX_LINEBUF_DEPTH_BITS 13
46 46
47/* Configuration for a single Rate Control model range */ 47/**
48 * struct drm_dsc_rc_range_parameters - DSC Rate Control range parameters
49 *
50 * This defines different rate control parameters used by the DSC engine
51 * to compress the frame.
52 */
48struct drm_dsc_rc_range_parameters { 53struct drm_dsc_rc_range_parameters {
49 /* Min Quantization Parameters allowed for this range */ 54 /**
55 * @range_min_qp: Min Quantization Parameters allowed for this range
56 */
50 u8 range_min_qp; 57 u8 range_min_qp;
51 /* Max Quantization Parameters allowed for this range */ 58 /**
59 * @range_max_qp: Max Quantization Parameters allowed for this range
60 */
52 u8 range_max_qp; 61 u8 range_max_qp;
53 /* Bits/group offset to apply to target for this group */ 62 /**
63 * @range_bpg_offset:
64 * Bits/group offset to apply to target for this group
65 */
54 u8 range_bpg_offset; 66 u8 range_bpg_offset;
55}; 67};
56 68
69/**
70 * struct drm_dsc_config - Parameters required to configure DSC
71 *
72 * Driver populates this structure with all the parameters required
73 * to configure the display stream compression on the source.
74 */
57struct drm_dsc_config { 75struct drm_dsc_config {
58 /* Bits / component for previous reconstructed line buffer */ 76 /**
77 * @line_buf_depth:
78 * Bits per component for previous reconstructed line buffer
79 */
59 u8 line_buf_depth; 80 u8 line_buf_depth;
60 /* Bits per component to code (must be 8, 10, or 12) */ 81 /**
82 * @bits_per_component: Bits per component to code (8/10/12)
83 */
61 u8 bits_per_component; 84 u8 bits_per_component;
62 /* 85 /**
63 * Flag indicating to do RGB - YCoCg conversion 86 * @convert_rgb:
64 * and back (should be 1 for RGB input) 87 * Flag to indicate if RGB - YCoCg conversion is needed
88 * True if RGB input, False if YCoCg input
65 */ 89 */
66 bool convert_rgb; 90 bool convert_rgb;
91 /**
92 * @slice_count: Number fo slices per line used by the DSC encoder
93 */
67 u8 slice_count; 94 u8 slice_count;
68 /* Slice Width */ 95 /**
96 * @slice_width: Width of each slice in pixels
97 */
69 u16 slice_width; 98 u16 slice_width;
70 /* Slice Height */ 99 /**
100 * @slice_height: Slice height in pixels
101 */
71 u16 slice_height; 102 u16 slice_height;
72 /* 103 /**
73 * 4:2:2 enable mode (from PPS, 4:2:2 conversion happens 104 * @enable422: True for 4_2_2 sampling, false for 4_4_4 sampling
74 * outside of DSC encode/decode algorithm)
75 */ 105 */
76 bool enable422; 106 bool enable422;
77 /* Picture Width */ 107 /**
108 * @pic_width: Width of the input display frame in pixels
109 */
78 u16 pic_width; 110 u16 pic_width;
79 /* Picture Height */ 111 /**
112 * @pic_height: Vertical height of the input display frame
113 */
80 u16 pic_height; 114 u16 pic_height;
81 /* Offset to bits/group used by RC to determine QP adjustment */ 115 /**
116 * @rc_tgt_offset_high:
117 * Offset to bits/group used by RC to determine QP adjustment
118 */
82 u8 rc_tgt_offset_high; 119 u8 rc_tgt_offset_high;
83 /* Offset to bits/group used by RC to determine QP adjustment */ 120 /**
121 * @rc_tgt_offset_low:
122 * Offset to bits/group used by RC to determine QP adjustment
123 */
84 u8 rc_tgt_offset_low; 124 u8 rc_tgt_offset_low;
85 /* Bits/pixel target << 4 (ie., 4 fractional bits) */ 125 /**
126 * @bits_per_pixel:
127 * Target bits per pixel with 4 fractional bits, bits_per_pixel << 4
128 */
86 u16 bits_per_pixel; 129 u16 bits_per_pixel;
87 /* 130 /**
88 * Factor to determine if an edge is present based 131 * @rc_edge_factor:
89 * on the bits produced 132 * Factor to determine if an edge is present based on the bits produced
90 */ 133 */
91 u8 rc_edge_factor; 134 u8 rc_edge_factor;
92 /* Slow down incrementing once the range reaches this value */ 135 /**
136 * @rc_quant_incr_limit1:
137 * Slow down incrementing once the range reaches this value
138 */
93 u8 rc_quant_incr_limit1; 139 u8 rc_quant_incr_limit1;
94 /* Slow down incrementing once the range reaches this value */ 140 /**
141 * @rc_quant_incr_limit0:
142 * Slow down incrementing once the range reaches this value
143 */
95 u8 rc_quant_incr_limit0; 144 u8 rc_quant_incr_limit0;
96 /* Number of pixels to delay the initial transmission */ 145 /**
146 * @initial_xmit_delay:
147 * Number of pixels to delay the initial transmission
148 */
97 u16 initial_xmit_delay; 149 u16 initial_xmit_delay;
98 /* Number of pixels to delay the VLD on the decoder,not including SSM */ 150 /**
151 * @initial_dec_delay:
152 * Initial decoder delay, number of pixel times that the decoder
153 * accumulates data in its rate buffer before starting to decode
154 * and output pixels.
155 */
99 u16 initial_dec_delay; 156 u16 initial_dec_delay;
100 /* Block prediction enable */ 157 /**
158 * @block_pred_enable:
159 * True if block prediction is used to code any groups within the
160 * picture. False if BP not used
161 */
101 bool block_pred_enable; 162 bool block_pred_enable;
102 /* Bits/group offset to use for first line of the slice */ 163 /**
164 * @first_line_bpg_offset:
165 * Number of additional bits allocated for each group on the first
166 * line of slice.
167 */
103 u8 first_line_bpg_offset; 168 u8 first_line_bpg_offset;
104 /* Value to use for RC model offset at slice start */ 169 /**
170 * @initial_offset: Value to use for RC model offset at slice start
171 */
105 u16 initial_offset; 172 u16 initial_offset;
106 /* Thresholds defining each of the buffer ranges */ 173 /**
174 * @rc_buf_thresh: Thresholds defining each of the buffer ranges
175 */
107 u16 rc_buf_thresh[DSC_NUM_BUF_RANGES - 1]; 176 u16 rc_buf_thresh[DSC_NUM_BUF_RANGES - 1];
108 /* Parameters for each of the RC ranges */ 177 /**
178 * @rc_range_params:
179 * Parameters for each of the RC ranges defined in
180 * &struct drm_dsc_rc_range_parameters
181 */
109 struct drm_dsc_rc_range_parameters rc_range_params[DSC_NUM_BUF_RANGES]; 182 struct drm_dsc_rc_range_parameters rc_range_params[DSC_NUM_BUF_RANGES];
110 /* Total size of RC model */ 183 /**
184 * @rc_model_size: Total size of RC model
185 */
111 u16 rc_model_size; 186 u16 rc_model_size;
112 /* Minimum QP where flatness information is sent */ 187 /**
188 * @flatness_min_qp: Minimum QP where flatness information is sent
189 */
113 u8 flatness_min_qp; 190 u8 flatness_min_qp;
114 /* Maximum QP where flatness information is sent */ 191 /**
192 * @flatness_max_qp: Maximum QP where flatness information is sent
193 */
115 u8 flatness_max_qp; 194 u8 flatness_max_qp;
116 /* Initial value for scale factor */ 195 /**
196 * @initial_scale_value: Initial value for the scale factor
197 */
117 u8 initial_scale_value; 198 u8 initial_scale_value;
118 /* Decrement scale factor every scale_decrement_interval groups */ 199 /**
200 * @scale_decrement_interval:
201 * Specifies number of group times between decrementing the scale factor
202 * at beginning of a slice.
203 */
119 u16 scale_decrement_interval; 204 u16 scale_decrement_interval;
120 /* Increment scale factor every scale_increment_interval groups */ 205 /**
206 * @scale_increment_interval:
207 * Number of group times between incrementing the scale factor value
208 * used at the beginning of a slice.
209 */
121 u16 scale_increment_interval; 210 u16 scale_increment_interval;
122 /* Non-first line BPG offset to use */ 211 /**
212 * @nfl_bpg_offset: Non first line BPG offset to be used
213 */
123 u16 nfl_bpg_offset; 214 u16 nfl_bpg_offset;
124 /* BPG offset used to enforce slice bit */ 215 /**
216 * @slice_bpg_offset: BPG offset used to enforce slice bit
217 */
125 u16 slice_bpg_offset; 218 u16 slice_bpg_offset;
126 /* Final RC linear transformation offset value */ 219 /**
220 * @final_offset: Final RC linear transformation offset value
221 */
127 u16 final_offset; 222 u16 final_offset;
128 /* Enable on-off VBR (ie., disable stuffing bits) */ 223 /**
224 * @vbr_enable: True if VBR mode is enabled, false if disabled
225 */
129 bool vbr_enable; 226 bool vbr_enable;
130 /* Mux word size (in bits) for SSM mode */ 227 /**
228 * @mux_word_size: Mux word size (in bits) for SSM mode
229 */
131 u8 mux_word_size; 230 u8 mux_word_size;
132 /* 231 /**
133 * The (max) size in bytes of the "chunks" that are 232 * @slice_chunk_size:
134 * used in slice multiplexing 233 * The (max) size in bytes of the "chunks" that are used in slice
234 * multiplexing.
135 */ 235 */
136 u16 slice_chunk_size; 236 u16 slice_chunk_size;
137 /* Rate Control buffer siz in bits */ 237 /**
238 * @rc_bits: Rate control buffer size in bits
239 */
138 u16 rc_bits; 240 u16 rc_bits;
139 /* DSC Minor Version */ 241 /**
242 * @dsc_version_minor: DSC minor version
243 */
140 u8 dsc_version_minor; 244 u8 dsc_version_minor;
141 /* DSC Major version */ 245 /**
246 * @dsc_version_major: DSC major version
247 */
142 u8 dsc_version_major; 248 u8 dsc_version_major;
143 /* Native 4:2:2 support */ 249 /**
250 * @native_422: True if Native 4:2:2 supported, else false
251 */
144 bool native_422; 252 bool native_422;
145 /* Native 4:2:0 support */ 253 /**
254 * @native_420: True if Native 4:2:0 supported else false.
255 */
146 bool native_420; 256 bool native_420;
147 /* Additional bits/grp for seconnd line of slice for native 4:2:0 */ 257 /**
258 * @second_line_bpg_offset:
259 * Additional bits/grp for seconnd line of slice for native 4:2:0
260 */
148 u8 second_line_bpg_offset; 261 u8 second_line_bpg_offset;
149 /* Num of bits deallocated for each grp that is not in second line of slice */ 262 /**
263 * @nsl_bpg_offset:
264 * Num of bits deallocated for each grp that is not in second line of
265 * slice
266 */
150 u16 nsl_bpg_offset; 267 u16 nsl_bpg_offset;
151 /* Offset adj fr second line in Native 4:2:0 mode */ 268 /**
269 * @second_line_offset_adj:
270 * Offset adjustment for second line in Native 4:2:0 mode
271 */
152 u16 second_line_offset_adj; 272 u16 second_line_offset_adj;
153}; 273};
154 274
@@ -468,10 +588,13 @@ struct drm_dsc_picture_parameter_set {
468 * This structure represents the DSC PPS infoframe required to send the Picture 588 * This structure represents the DSC PPS infoframe required to send the Picture
469 * Parameter Set metadata required before enabling VESA Display Stream 589 * Parameter Set metadata required before enabling VESA Display Stream
470 * Compression. This is based on the DP Secondary Data Packet structure and 590 * Compression. This is based on the DP Secondary Data Packet structure and
471 * comprises of SDP Header as defined in drm_dp_helper.h and PPS payload. 591 * comprises of SDP Header as defined &struct struct dp_sdp_header in drm_dp_helper.h
592 * and PPS payload defined in &struct drm_dsc_picture_parameter_set.
472 * 593 *
473 * @pps_header: Header for PPS as per DP SDP header format 594 * @pps_header: Header for PPS as per DP SDP header format of type
595 * &struct dp_sdp_header
474 * @pps_payload: PPS payload fields as per DSC specification Table 4-1 596 * @pps_payload: PPS payload fields as per DSC specification Table 4-1
597 * as represented in &struct drm_dsc_picture_parameter_set
475 */ 598 */
476struct drm_dsc_pps_infoframe { 599struct drm_dsc_pps_infoframe {
477 struct dp_sdp_header pps_header; 600 struct dp_sdp_header pps_header;