Skip to content

Commit 24e52fc

Browse files
Sridevialexdeucher
authored andcommitted
drm/amd/display: DSC Programming Deltas
[Why] Programming register delta for DSC sub-block [How] Change DSC, resource files for programming register delta. Acked-by: Stylon Wang <[email protected]> Signed-off-by: Sridevi <[email protected]> Reviewed-by: Chris Park <[email protected]> Tested-by: Daniel Wheeler <[email protected]> Signed-off-by: Alex Deucher <[email protected]>
1 parent aeb3dd7 commit 24e52fc

File tree

2 files changed

+38
-19
lines changed

2 files changed

+38
-19
lines changed

drivers/gpu/drm/amd/display/dc/dcn20/dcn20_dsc.c

Lines changed: 10 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -30,22 +30,13 @@
3030
#include "dsc/dscc_types.h"
3131
#include "dsc/rc_calc.h"
3232

33-
static void dsc_log_pps(struct display_stream_compressor *dsc, struct drm_dsc_config *pps);
34-
static bool dsc_prepare_config(const struct dsc_config *dsc_cfg, struct dsc_reg_values *dsc_reg_vals,
35-
struct dsc_optc_config *dsc_optc_cfg);
36-
static void dsc_init_reg_values(struct dsc_reg_values *reg_vals);
37-
static void dsc_update_from_dsc_parameters(struct dsc_reg_values *reg_vals, const struct dsc_parameters *dsc_params);
3833
static void dsc_write_to_registers(struct display_stream_compressor *dsc, const struct dsc_reg_values *reg_vals);
39-
static enum dsc_pixel_format dsc_dc_pixel_encoding_to_dsc_pixel_format(enum dc_pixel_encoding dc_pix_enc, bool is_ycbcr422_simple);
40-
static enum dsc_bits_per_comp dsc_dc_color_depth_to_dsc_bits_per_comp(enum dc_color_depth);
4134

4235
/* Object I/F functions */
43-
static void dsc2_get_enc_caps(struct dsc_enc_caps *dsc_enc_caps, int pixel_clock_100Hz);
4436
static void dsc2_read_state(struct display_stream_compressor *dsc, struct dcn_dsc_state *s);
4537
static bool dsc2_validate_stream(struct display_stream_compressor *dsc, const struct dsc_config *dsc_cfg);
4638
static void dsc2_set_config(struct display_stream_compressor *dsc, const struct dsc_config *dsc_cfg,
4739
struct dsc_optc_config *dsc_optc_cfg);
48-
static bool dsc2_get_packed_pps(struct display_stream_compressor *dsc, const struct dsc_config *dsc_cfg, uint8_t *dsc_packed_pps);
4940
static void dsc2_enable(struct display_stream_compressor *dsc, int opp_pipe);
5041
static void dsc2_disable(struct display_stream_compressor *dsc);
5142
static void dsc2_disconnect(struct display_stream_compressor *dsc);
@@ -108,7 +99,7 @@ void dsc2_construct(struct dcn20_dsc *dsc,
10899
/* This returns the capabilities for a single DSC encoder engine. Number of slices and total throughput
109100
* can be doubled, tripled etc. by using additional DSC engines.
110101
*/
111-
static void dsc2_get_enc_caps(struct dsc_enc_caps *dsc_enc_caps, int pixel_clock_100Hz)
102+
void dsc2_get_enc_caps(struct dsc_enc_caps *dsc_enc_caps, int pixel_clock_100Hz)
112103
{
113104
dsc_enc_caps->dsc_version = 0x21; /* v1.2 - DP spec defined it in reverse order and we kept it */
114105

@@ -184,7 +175,7 @@ static bool dsc2_validate_stream(struct display_stream_compressor *dsc, const st
184175
}
185176

186177

187-
static void dsc_config_log(struct display_stream_compressor *dsc, const struct dsc_config *config)
178+
void dsc_config_log(struct display_stream_compressor *dsc, const struct dsc_config *config)
188179
{
189180
DC_LOG_DSC("\tnum_slices_h %d", config->dc_dsc_cfg.num_slices_h);
190181
DC_LOG_DSC("\tnum_slices_v %d", config->dc_dsc_cfg.num_slices_v);
@@ -211,7 +202,7 @@ static void dsc2_set_config(struct display_stream_compressor *dsc, const struct
211202
}
212203

213204

214-
static bool dsc2_get_packed_pps(struct display_stream_compressor *dsc, const struct dsc_config *dsc_cfg, uint8_t *dsc_packed_pps)
205+
bool dsc2_get_packed_pps(struct display_stream_compressor *dsc, const struct dsc_config *dsc_cfg, uint8_t *dsc_packed_pps)
215206
{
216207
bool is_config_ok;
217208
struct dsc_reg_values dsc_reg_vals;
@@ -291,7 +282,7 @@ static void dsc2_disconnect(struct display_stream_compressor *dsc)
291282
}
292283

293284
/* This module's internal functions */
294-
static void dsc_log_pps(struct display_stream_compressor *dsc, struct drm_dsc_config *pps)
285+
void dsc_log_pps(struct display_stream_compressor *dsc, struct drm_dsc_config *pps)
295286
{
296287
int i;
297288
int bits_per_pixel = pps->bits_per_pixel;
@@ -345,7 +336,7 @@ static void dsc_log_pps(struct display_stream_compressor *dsc, struct drm_dsc_co
345336
}
346337
}
347338

348-
static void dsc_override_rc_params(struct rc_params *rc, const struct dc_dsc_rc_params_override *override)
339+
void dsc_override_rc_params(struct rc_params *rc, const struct dc_dsc_rc_params_override *override)
349340
{
350341
uint8_t i;
351342

@@ -372,7 +363,7 @@ static void dsc_override_rc_params(struct rc_params *rc, const struct dc_dsc_rc_
372363
rc->flatness_det_thresh = override->flatness_det_thresh;
373364
}
374365

375-
static bool dsc_prepare_config(const struct dsc_config *dsc_cfg, struct dsc_reg_values *dsc_reg_vals,
366+
bool dsc_prepare_config(const struct dsc_config *dsc_cfg, struct dsc_reg_values *dsc_reg_vals,
376367
struct dsc_optc_config *dsc_optc_cfg)
377368
{
378369
struct dsc_parameters dsc_params;
@@ -463,7 +454,7 @@ static bool dsc_prepare_config(const struct dsc_config *dsc_cfg, struct dsc_reg_
463454
}
464455

465456

466-
static enum dsc_pixel_format dsc_dc_pixel_encoding_to_dsc_pixel_format(enum dc_pixel_encoding dc_pix_enc, bool is_ycbcr422_simple)
457+
enum dsc_pixel_format dsc_dc_pixel_encoding_to_dsc_pixel_format(enum dc_pixel_encoding dc_pix_enc, bool is_ycbcr422_simple)
467458
{
468459
enum dsc_pixel_format dsc_pix_fmt = DSC_PIXFMT_UNKNOWN;
469460

@@ -495,7 +486,7 @@ static enum dsc_pixel_format dsc_dc_pixel_encoding_to_dsc_pixel_format(enum dc_p
495486
}
496487

497488

498-
static enum dsc_bits_per_comp dsc_dc_color_depth_to_dsc_bits_per_comp(enum dc_color_depth dc_color_depth)
489+
enum dsc_bits_per_comp dsc_dc_color_depth_to_dsc_bits_per_comp(enum dc_color_depth dc_color_depth)
499490
{
500491
enum dsc_bits_per_comp bpc = DSC_BPC_UNKNOWN;
501492

@@ -518,7 +509,7 @@ static enum dsc_bits_per_comp dsc_dc_color_depth_to_dsc_bits_per_comp(enum dc_co
518509
}
519510

520511

521-
static void dsc_init_reg_values(struct dsc_reg_values *reg_vals)
512+
void dsc_init_reg_values(struct dsc_reg_values *reg_vals)
522513
{
523514
int i;
524515

@@ -574,7 +565,7 @@ static void dsc_init_reg_values(struct dsc_reg_values *reg_vals)
574565
* This is required because dscc_compute_dsc_parameters returns a modified PPS, which in turn
575566
* affects non-PPS register values.
576567
*/
577-
static void dsc_update_from_dsc_parameters(struct dsc_reg_values *reg_vals, const struct dsc_parameters *dsc_params)
568+
void dsc_update_from_dsc_parameters(struct dsc_reg_values *reg_vals, const struct dsc_parameters *dsc_params)
578569
{
579570
int i;
580571

drivers/gpu/drm/amd/display/dc/dcn20/dcn20_dsc.h

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -549,6 +549,27 @@ struct dcn20_dsc {
549549
int max_image_width;
550550
};
551551

552+
void dsc_config_log(struct display_stream_compressor *dsc,
553+
const struct dsc_config *config);
554+
555+
void dsc_log_pps(struct display_stream_compressor *dsc,
556+
struct drm_dsc_config *pps);
557+
558+
void dsc_override_rc_params(struct rc_params *rc,
559+
const struct dc_dsc_rc_params_override *override);
560+
561+
bool dsc_prepare_config(const struct dsc_config *dsc_cfg,
562+
struct dsc_reg_values *dsc_reg_vals,
563+
struct dsc_optc_config *dsc_optc_cfg);
564+
565+
enum dsc_pixel_format dsc_dc_pixel_encoding_to_dsc_pixel_format(enum dc_pixel_encoding dc_pix_enc,
566+
bool is_ycbcr422_simple);
567+
568+
enum dsc_bits_per_comp dsc_dc_color_depth_to_dsc_bits_per_comp(enum dc_color_depth dc_color_depth);
569+
570+
void dsc_init_reg_values(struct dsc_reg_values *reg_vals);
571+
572+
void dsc_update_from_dsc_parameters(struct dsc_reg_values *reg_vals, const struct dsc_parameters *dsc_params);
552573

553574
void dsc2_construct(struct dcn20_dsc *dsc,
554575
struct dc_context *ctx,
@@ -557,5 +578,12 @@ void dsc2_construct(struct dcn20_dsc *dsc,
557578
const struct dcn20_dsc_shift *dsc_shift,
558579
const struct dcn20_dsc_mask *dsc_mask);
559580

581+
void dsc2_get_enc_caps(struct dsc_enc_caps *dsc_enc_caps,
582+
int pixel_clock_100Hz);
583+
584+
bool dsc2_get_packed_pps(struct display_stream_compressor *dsc,
585+
const struct dsc_config *dsc_cfg,
586+
uint8_t *dsc_packed_pps);
587+
560588
#endif
561589

0 commit comments

Comments
 (0)