Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/amd/display: Remove unused cm3_helper_translate_curve_to_degamma_hw_format

cm3_helper_translate_curve_to_degamma_hw_format() since it was added in
2020's commit
03f54d7d3448 ("drm/amd/display: Add DCN3 DPP")

Remove it.

Signed-off-by: Dr. David Alan Gilbert <linux@treblig.org>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>

authored by

Dr. David Alan Gilbert and committed by
Alex Deucher
8b89acc0 370e8fdb

-155
-151
drivers/gpu/drm/amd/display/dc/dcn30/dcn30_cm_common.c
··· 280 280 return true; 281 281 } 282 282 283 - #define NUM_DEGAMMA_REGIONS 12 284 - 285 - 286 - bool cm3_helper_translate_curve_to_degamma_hw_format( 287 - const struct dc_transfer_func *output_tf, 288 - struct pwl_params *lut_params) 289 - { 290 - struct curve_points3 *corner_points; 291 - struct pwl_result_data *rgb_resulted; 292 - struct pwl_result_data *rgb; 293 - struct pwl_result_data *rgb_plus_1; 294 - 295 - int32_t region_start, region_end; 296 - int32_t i; 297 - uint32_t j, k, seg_distr[MAX_REGIONS_NUMBER], increment, start_index, hw_points; 298 - 299 - if (output_tf == NULL || lut_params == NULL || output_tf->type == TF_TYPE_BYPASS) 300 - return false; 301 - 302 - corner_points = lut_params->corner_points; 303 - rgb_resulted = lut_params->rgb_resulted; 304 - hw_points = 0; 305 - 306 - memset(lut_params, 0, sizeof(struct pwl_params)); 307 - memset(seg_distr, 0, sizeof(seg_distr)); 308 - 309 - region_start = -NUM_DEGAMMA_REGIONS; 310 - region_end = 0; 311 - 312 - 313 - for (i = region_end - region_start; i < MAX_REGIONS_NUMBER ; i++) 314 - seg_distr[i] = -1; 315 - /* 12 segments 316 - * segments are from 2^-12 to 0 317 - */ 318 - for (i = 0; i < NUM_DEGAMMA_REGIONS ; i++) 319 - seg_distr[i] = 4; 320 - 321 - for (k = 0; k < MAX_REGIONS_NUMBER; k++) { 322 - if (seg_distr[k] != -1) 323 - hw_points += (1 << seg_distr[k]); 324 - } 325 - 326 - j = 0; 327 - for (k = 0; k < (region_end - region_start); k++) { 328 - increment = NUMBER_SW_SEGMENTS / (1 << seg_distr[k]); 329 - start_index = (region_start + k + MAX_LOW_POINT) * 330 - NUMBER_SW_SEGMENTS; 331 - for (i = start_index; i < start_index + NUMBER_SW_SEGMENTS; 332 - i += increment) { 333 - if (j == hw_points - 1) 334 - break; 335 - if (i >= TRANSFER_FUNC_POINTS) 336 - return false; 337 - rgb_resulted[j].red = output_tf->tf_pts.red[i]; 338 - rgb_resulted[j].green = output_tf->tf_pts.green[i]; 339 - rgb_resulted[j].blue = output_tf->tf_pts.blue[i]; 340 - j++; 341 - } 342 - } 343 - 344 - /* last point */ 345 - start_index = (region_end + MAX_LOW_POINT) * NUMBER_SW_SEGMENTS; 346 - rgb_resulted[hw_points - 1].red = output_tf->tf_pts.red[start_index]; 347 - rgb_resulted[hw_points - 1].green = output_tf->tf_pts.green[start_index]; 348 - rgb_resulted[hw_points - 1].blue = output_tf->tf_pts.blue[start_index]; 349 - 350 - corner_points[0].red.x = dc_fixpt_pow(dc_fixpt_from_int(2), 351 - dc_fixpt_from_int(region_start)); 352 - corner_points[0].green.x = corner_points[0].red.x; 353 - corner_points[0].blue.x = corner_points[0].red.x; 354 - corner_points[1].red.x = dc_fixpt_pow(dc_fixpt_from_int(2), 355 - dc_fixpt_from_int(region_end)); 356 - corner_points[1].green.x = corner_points[1].red.x; 357 - corner_points[1].blue.x = corner_points[1].red.x; 358 - 359 - corner_points[0].red.y = rgb_resulted[0].red; 360 - corner_points[0].green.y = rgb_resulted[0].green; 361 - corner_points[0].blue.y = rgb_resulted[0].blue; 362 - 363 - /* see comment above, m_arrPoints[1].y should be the Y value for the 364 - * region end (m_numOfHwPoints), not last HW point(m_numOfHwPoints - 1) 365 - */ 366 - corner_points[1].red.y = rgb_resulted[hw_points - 1].red; 367 - corner_points[1].green.y = rgb_resulted[hw_points - 1].green; 368 - corner_points[1].blue.y = rgb_resulted[hw_points - 1].blue; 369 - corner_points[1].red.slope = dc_fixpt_zero; 370 - corner_points[1].green.slope = dc_fixpt_zero; 371 - corner_points[1].blue.slope = dc_fixpt_zero; 372 - 373 - if (output_tf->tf == TRANSFER_FUNCTION_PQ) { 374 - /* for PQ, we want to have a straight line from last HW X point, 375 - * and the slope to be such that we hit 1.0 at 10000 nits. 376 - */ 377 - const struct fixed31_32 end_value = 378 - dc_fixpt_from_int(125); 379 - 380 - corner_points[1].red.slope = dc_fixpt_div( 381 - dc_fixpt_sub(dc_fixpt_one, corner_points[1].red.y), 382 - dc_fixpt_sub(end_value, corner_points[1].red.x)); 383 - corner_points[1].green.slope = dc_fixpt_div( 384 - dc_fixpt_sub(dc_fixpt_one, corner_points[1].green.y), 385 - dc_fixpt_sub(end_value, corner_points[1].green.x)); 386 - corner_points[1].blue.slope = dc_fixpt_div( 387 - dc_fixpt_sub(dc_fixpt_one, corner_points[1].blue.y), 388 - dc_fixpt_sub(end_value, corner_points[1].blue.x)); 389 - } 390 - 391 - lut_params->hw_points_num = hw_points; 392 - 393 - k = 0; 394 - for (i = 1; i < MAX_REGIONS_NUMBER; i++) { 395 - if (seg_distr[k] != -1) { 396 - lut_params->arr_curve_points[k].segments_num = 397 - seg_distr[k]; 398 - lut_params->arr_curve_points[i].offset = 399 - lut_params->arr_curve_points[k].offset + (1 << seg_distr[k]); 400 - } 401 - k++; 402 - } 403 - 404 - if (seg_distr[k] != -1) 405 - lut_params->arr_curve_points[k].segments_num = seg_distr[k]; 406 - 407 - rgb = rgb_resulted; 408 - rgb_plus_1 = rgb_resulted + 1; 409 - 410 - i = 1; 411 - while (i != hw_points + 1) { 412 - if (dc_fixpt_lt(rgb_plus_1->red, rgb->red)) 413 - rgb_plus_1->red = rgb->red; 414 - if (dc_fixpt_lt(rgb_plus_1->green, rgb->green)) 415 - rgb_plus_1->green = rgb->green; 416 - if (dc_fixpt_lt(rgb_plus_1->blue, rgb->blue)) 417 - rgb_plus_1->blue = rgb->blue; 418 - 419 - rgb->delta_red = dc_fixpt_sub(rgb_plus_1->red, rgb->red); 420 - rgb->delta_green = dc_fixpt_sub(rgb_plus_1->green, rgb->green); 421 - rgb->delta_blue = dc_fixpt_sub(rgb_plus_1->blue, rgb->blue); 422 - 423 - ++rgb_plus_1; 424 - ++rgb; 425 - ++i; 426 - } 427 - cm3_helper_convert_to_custom_float(rgb_resulted, 428 - lut_params->corner_points, 429 - hw_points, false); 430 - 431 - return true; 432 - } 433 - 434 283 bool cm3_helper_convert_to_custom_float( 435 284 struct pwl_result_data *rgb_resulted, 436 285 struct curve_points3 *corner_points,
-4
drivers/gpu/drm/amd/display/dc/dwb/dcn30/dcn30_cm_common.h
··· 63 63 const struct dc_transfer_func *output_tf, 64 64 struct pwl_params *lut_params, bool fixpoint); 65 65 66 - bool cm3_helper_translate_curve_to_degamma_hw_format( 67 - const struct dc_transfer_func *output_tf, 68 - struct pwl_params *lut_params); 69 - 70 66 bool cm3_helper_convert_to_custom_float( 71 67 struct pwl_result_data *rgb_resulted, 72 68 struct curve_points3 *corner_points,