Lines Matching full:data
80 struct bw_calcs_data *data) in calculate_bandwidth() argument
172 if (data->d0_underlay_mode == bw_def_none) in calculate_bandwidth()
176 if (data->d1_underlay_mode == bw_def_none) in calculate_bandwidth()
180 data->number_of_underlay_surfaces = d0_underlay_enable + d1_underlay_enable; in calculate_bandwidth()
181 switch (data->underlay_surface_type) { in calculate_bandwidth()
185 data->bytes_per_pixel[0] = 1; in calculate_bandwidth()
186 data->bytes_per_pixel[2] = 1; in calculate_bandwidth()
189 data->bytes_per_pixel[1] = 2; in calculate_bandwidth()
190 data->bytes_per_pixel[3] = 2; in calculate_bandwidth()
191 data->lb_size_per_component[0] = dceip->underlay420_luma_lb_size_per_component; in calculate_bandwidth()
192 data->lb_size_per_component[1] = dceip->underlay420_chroma_lb_size_per_component; in calculate_bandwidth()
193 data->lb_size_per_component[2] = dceip->underlay420_luma_lb_size_per_component; in calculate_bandwidth()
194 data->lb_size_per_component[3] = dceip->underlay420_chroma_lb_size_per_component; in calculate_bandwidth()
199 data->bytes_per_pixel[0] = 2; in calculate_bandwidth()
200 data->bytes_per_pixel[2] = 2; in calculate_bandwidth()
201 data->lb_size_per_component[0] = dceip->underlay422_lb_size_per_component; in calculate_bandwidth()
202 data->lb_size_per_component[2] = dceip->underlay422_lb_size_per_component; in calculate_bandwidth()
207 data->bytes_per_pixel[0] = 4; in calculate_bandwidth()
208 data->bytes_per_pixel[2] = 4; in calculate_bandwidth()
209 data->lb_size_per_component[0] = dceip->lb_size_per_component444; in calculate_bandwidth()
210 data->lb_size_per_component[2] = dceip->lb_size_per_component444; in calculate_bandwidth()
214 switch (data->underlay_surface_type) { in calculate_bandwidth()
216 data->enable[0] = 1; in calculate_bandwidth()
217 data->enable[1] = 1; in calculate_bandwidth()
220 data->enable[0] = 1; in calculate_bandwidth()
221 data->enable[1] = 0; in calculate_bandwidth()
226 data->enable[0] = 0; in calculate_bandwidth()
227 data->enable[1] = 0; in calculate_bandwidth()
230 switch (data->underlay_surface_type) { in calculate_bandwidth()
232 data->enable[2] = 1; in calculate_bandwidth()
233 data->enable[3] = 1; in calculate_bandwidth()
236 data->enable[2] = 1; in calculate_bandwidth()
237 data->enable[3] = 0; in calculate_bandwidth()
242 data->enable[2] = 0; in calculate_bandwidth()
243 data->enable[3] = 0; in calculate_bandwidth()
245 data->use_alpha[0] = 0; in calculate_bandwidth()
246 data->use_alpha[1] = 0; in calculate_bandwidth()
247 data->use_alpha[2] = 0; in calculate_bandwidth()
248 data->use_alpha[3] = 0; in calculate_bandwidth()
249 data->scatter_gather_enable_for_pipe[0] = vbios->scatter_gather_enable; in calculate_bandwidth()
250 data->scatter_gather_enable_for_pipe[1] = vbios->scatter_gather_enable; in calculate_bandwidth()
251 data->scatter_gather_enable_for_pipe[2] = vbios->scatter_gather_enable; in calculate_bandwidth()
252 data->scatter_gather_enable_for_pipe[3] = vbios->scatter_gather_enable; in calculate_bandwidth()
254 data->interlace_mode[0] = data->interlace_mode[4]; in calculate_bandwidth()
255 data->interlace_mode[1] = data->interlace_mode[4]; in calculate_bandwidth()
257 data->interlace_mode[2] = data->interlace_mode[5]; in calculate_bandwidth()
258 data->interlace_mode[3] = data->interlace_mode[5]; in calculate_bandwidth()
260 data->h_total[0] = data->h_total[4]; in calculate_bandwidth()
261 data->v_total[0] = data->v_total[4]; in calculate_bandwidth()
262 data->h_total[1] = data->h_total[4]; in calculate_bandwidth()
263 data->v_total[1] = data->v_total[4]; in calculate_bandwidth()
265 data->h_total[2] = data->h_total[5]; in calculate_bandwidth()
266 data->v_total[2] = data->v_total[5]; in calculate_bandwidth()
267 data->h_total[3] = data->h_total[5]; in calculate_bandwidth()
268 data->v_total[3] = data->v_total[5]; in calculate_bandwidth()
270 data->pixel_rate[0] = data->pixel_rate[4]; in calculate_bandwidth()
271 data->pixel_rate[1] = data->pixel_rate[4]; in calculate_bandwidth()
273 data->pixel_rate[2] = data->pixel_rate[5]; in calculate_bandwidth()
274 data->pixel_rate[3] = data->pixel_rate[5]; in calculate_bandwidth()
275 …if ((data->underlay_tiling_mode == bw_def_array_linear_general || data->underlay_tiling_mode == bw… in calculate_bandwidth()
287 data->lb_bpc[0] = data->underlay_lb_bpc; in calculate_bandwidth()
288 data->lb_bpc[1] = data->underlay_lb_bpc; in calculate_bandwidth()
289 data->lb_bpc[2] = data->underlay_lb_bpc; in calculate_bandwidth()
290 data->lb_bpc[3] = data->underlay_lb_bpc; in calculate_bandwidth()
291 data->compression_rate[0] = bw_int_to_fixed(1); in calculate_bandwidth()
292 data->compression_rate[1] = bw_int_to_fixed(1); in calculate_bandwidth()
293 data->compression_rate[2] = bw_int_to_fixed(1); in calculate_bandwidth()
294 data->compression_rate[3] = bw_int_to_fixed(1); in calculate_bandwidth()
295 data->access_one_channel_only[0] = 0; in calculate_bandwidth()
296 data->access_one_channel_only[1] = 0; in calculate_bandwidth()
297 data->access_one_channel_only[2] = 0; in calculate_bandwidth()
298 data->access_one_channel_only[3] = 0; in calculate_bandwidth()
299 data->cursor_width_pixels[0] = bw_int_to_fixed(0); in calculate_bandwidth()
300 data->cursor_width_pixels[1] = bw_int_to_fixed(0); in calculate_bandwidth()
301 data->cursor_width_pixels[2] = bw_int_to_fixed(0); in calculate_bandwidth()
302 data->cursor_width_pixels[3] = bw_int_to_fixed(0); in calculate_bandwidth()
307 if (i < data->number_of_displays + 4) { in calculate_bandwidth()
308 if (i == 4 && data->d0_underlay_mode == bw_def_underlay_only) { in calculate_bandwidth()
309 data->enable[i] = 0; in calculate_bandwidth()
310 data->use_alpha[i] = 0; in calculate_bandwidth()
312 else if (i == 4 && data->d0_underlay_mode == bw_def_blend) { in calculate_bandwidth()
313 data->enable[i] = 1; in calculate_bandwidth()
314 data->use_alpha[i] = 1; in calculate_bandwidth()
317 data->enable[i] = 1; in calculate_bandwidth()
318 data->use_alpha[i] = 0; in calculate_bandwidth()
320 else if (i == 5 && data->d1_underlay_mode == bw_def_underlay_only) { in calculate_bandwidth()
321 data->enable[i] = 0; in calculate_bandwidth()
322 data->use_alpha[i] = 0; in calculate_bandwidth()
324 else if (i == 5 && data->d1_underlay_mode == bw_def_blend) { in calculate_bandwidth()
325 data->enable[i] = 1; in calculate_bandwidth()
326 data->use_alpha[i] = 1; in calculate_bandwidth()
329 data->enable[i] = 1; in calculate_bandwidth()
330 data->use_alpha[i] = 0; in calculate_bandwidth()
334 data->enable[i] = 0; in calculate_bandwidth()
335 data->use_alpha[i] = 0; in calculate_bandwidth()
337 data->scatter_gather_enable_for_pipe[i] = vbios->scatter_gather_enable; in calculate_bandwidth()
339 data->lb_size_per_component[i] = dceip->lb_size_per_component444; in calculate_bandwidth()
340 …if (data->graphics_tiling_mode == bw_def_array_linear_general || data->graphics_tiling_mode == bw_… in calculate_bandwidth()
346 data->lb_bpc[i] = data->graphics_lb_bpc; in calculate_bandwidth()
347 …if ((data->fbc_en[i] == 1 && (dceip->argb_compression_support || data->d0_underlay_mode != bw_def_… in calculate_bandwidth()
348 data->compression_rate[i] = bw_int_to_fixed(vbios->average_compression_rate); in calculate_bandwidth()
349 data->access_one_channel_only[i] = data->lpt_en[i]; in calculate_bandwidth()
352 data->compression_rate[i] = bw_int_to_fixed(1); in calculate_bandwidth()
353 data->access_one_channel_only[i] = 0; in calculate_bandwidth()
355 if (data->fbc_en[i] == 1) { in calculate_bandwidth()
357 if (data->lpt_en[i] == 1) { in calculate_bandwidth()
361 data->cursor_width_pixels[i] = bw_int_to_fixed(vbios->cursor_width); in calculate_bandwidth()
364 data->scatter_gather_enable_for_pipe[maximum_number_of_surfaces - 2] = 0; in calculate_bandwidth()
365 data->scatter_gather_enable_for_pipe[maximum_number_of_surfaces - 1] = 0; in calculate_bandwidth()
366 if (data->d1_display_write_back_dwb_enable == 1) { in calculate_bandwidth()
367 data->enable[maximum_number_of_surfaces - 2] = 1; in calculate_bandwidth()
368 data->enable[maximum_number_of_surfaces - 1] = 1; in calculate_bandwidth()
371 data->enable[maximum_number_of_surfaces - 2] = 0; in calculate_bandwidth()
372 data->enable[maximum_number_of_surfaces - 1] = 0; in calculate_bandwidth()
376 …data->lb_size_per_component[maximum_number_of_surfaces - 2] = dceip->underlay420_luma_lb_size_per_… in calculate_bandwidth()
377 …data->lb_size_per_component[maximum_number_of_surfaces - 1] = dceip->underlay420_chroma_lb_size_pe… in calculate_bandwidth()
378 data->bytes_per_pixel[maximum_number_of_surfaces - 2] = 1; in calculate_bandwidth()
379 data->bytes_per_pixel[maximum_number_of_surfaces - 1] = 2; in calculate_bandwidth()
380 data->interlace_mode[maximum_number_of_surfaces - 2] = data->interlace_mode[5]; in calculate_bandwidth()
381 data->interlace_mode[maximum_number_of_surfaces - 1] = data->interlace_mode[5]; in calculate_bandwidth()
382 data->h_taps[maximum_number_of_surfaces - 2] = bw_int_to_fixed(1); in calculate_bandwidth()
383 data->h_taps[maximum_number_of_surfaces - 1] = bw_int_to_fixed(1); in calculate_bandwidth()
384 data->v_taps[maximum_number_of_surfaces - 2] = bw_int_to_fixed(1); in calculate_bandwidth()
385 data->v_taps[maximum_number_of_surfaces - 1] = bw_int_to_fixed(1); in calculate_bandwidth()
386 data->rotation_angle[maximum_number_of_surfaces - 2] = bw_int_to_fixed(0); in calculate_bandwidth()
387 data->rotation_angle[maximum_number_of_surfaces - 1] = bw_int_to_fixed(0); in calculate_bandwidth()
390 data->lb_bpc[maximum_number_of_surfaces - 2] = 8; in calculate_bandwidth()
391 data->lb_bpc[maximum_number_of_surfaces - 1] = 8; in calculate_bandwidth()
392 data->compression_rate[maximum_number_of_surfaces - 2] = bw_int_to_fixed(1); in calculate_bandwidth()
393 data->compression_rate[maximum_number_of_surfaces - 1] = bw_int_to_fixed(1); in calculate_bandwidth()
394 data->access_one_channel_only[maximum_number_of_surfaces - 2] = 0; in calculate_bandwidth()
395 data->access_one_channel_only[maximum_number_of_surfaces - 1] = 0; in calculate_bandwidth()
397 data->h_total[maximum_number_of_surfaces - 2] = data->h_total[5]; in calculate_bandwidth()
398 data->h_total[maximum_number_of_surfaces - 1] = data->h_total[5]; in calculate_bandwidth()
399 data->v_total[maximum_number_of_surfaces - 2] = data->v_total[5]; in calculate_bandwidth()
400 data->v_total[maximum_number_of_surfaces - 1] = data->v_total[5]; in calculate_bandwidth()
401 data->pixel_rate[maximum_number_of_surfaces - 2] = data->pixel_rate[5]; in calculate_bandwidth()
402 data->pixel_rate[maximum_number_of_surfaces - 1] = data->pixel_rate[5]; in calculate_bandwidth()
403 data->src_width[maximum_number_of_surfaces - 2] = data->src_width[5]; in calculate_bandwidth()
404 data->src_width[maximum_number_of_surfaces - 1] = data->src_width[5]; in calculate_bandwidth()
405 data->src_height[maximum_number_of_surfaces - 2] = data->src_height[5]; in calculate_bandwidth()
406 data->src_height[maximum_number_of_surfaces - 1] = data->src_height[5]; in calculate_bandwidth()
407 data->pitch_in_pixels[maximum_number_of_surfaces - 2] = data->src_width[5]; in calculate_bandwidth()
408 data->pitch_in_pixels[maximum_number_of_surfaces - 1] = data->src_width[5]; in calculate_bandwidth()
409 data->h_scale_ratio[maximum_number_of_surfaces - 2] = bw_int_to_fixed(1); in calculate_bandwidth()
410 data->h_scale_ratio[maximum_number_of_surfaces - 1] = bw_int_to_fixed(1); in calculate_bandwidth()
411 data->v_scale_ratio[maximum_number_of_surfaces - 2] = bw_int_to_fixed(1); in calculate_bandwidth()
412 data->v_scale_ratio[maximum_number_of_surfaces - 1] = bw_int_to_fixed(1); in calculate_bandwidth()
413 data->stereo_mode[maximum_number_of_surfaces - 2] = bw_def_mono; in calculate_bandwidth()
414 data->stereo_mode[maximum_number_of_surfaces - 1] = bw_def_mono; in calculate_bandwidth()
415 data->cursor_width_pixels[maximum_number_of_surfaces - 2] = bw_int_to_fixed(0); in calculate_bandwidth()
416 data->cursor_width_pixels[maximum_number_of_surfaces - 1] = bw_int_to_fixed(0); in calculate_bandwidth()
417 data->use_alpha[maximum_number_of_surfaces - 2] = 0; in calculate_bandwidth()
418 data->use_alpha[maximum_number_of_surfaces - 1] = 0; in calculate_bandwidth()
434 if (data->enable[i]) { in calculate_bandwidth()
435 …data->h_scale_ratio[i], bw_int_to_fixed(1)) && bw_equ(data->v_scale_ratio[i], bw_int_to_fixed(1)) … in calculate_bandwidth()
436 data->h_taps[i] = bw_int_to_fixed(1); in calculate_bandwidth()
437 data->v_taps[i] = bw_int_to_fixed(1); in calculate_bandwidth()
440 …data->pitch_in_pixels_after_surface_type[i] = bw_div(data->pitch_in_pixels[i], bw_int_to_fixed(2)); in calculate_bandwidth()
441 data->src_width_after_surface_type = bw_div(data->src_width[i], bw_int_to_fixed(2)); in calculate_bandwidth()
442 data->src_height_after_surface_type = bw_div(data->src_height[i], bw_int_to_fixed(2)); in calculate_bandwidth()
443 data->hsr_after_surface_type = bw_div(data->h_scale_ratio[i], bw_int_to_fixed(2)); in calculate_bandwidth()
444 data->vsr_after_surface_type = bw_div(data->v_scale_ratio[i], bw_int_to_fixed(2)); in calculate_bandwidth()
447 data->pitch_in_pixels_after_surface_type[i] = data->pitch_in_pixels[i]; in calculate_bandwidth()
448 data->src_width_after_surface_type = data->src_width[i]; in calculate_bandwidth()
449 data->src_height_after_surface_type = data->src_height[i]; in calculate_bandwidth()
450 data->hsr_after_surface_type = data->h_scale_ratio[i]; in calculate_bandwidth()
451 data->vsr_after_surface_type = data->v_scale_ratio[i]; in calculate_bandwidth()
453 …if ((bw_equ(data->rotation_angle[i], bw_int_to_fixed(90)) || bw_equ(data->rotation_angle[i], bw_in… in calculate_bandwidth()
454 data->src_width_after_rotation = data->src_height_after_surface_type; in calculate_bandwidth()
455 data->src_height_after_rotation = data->src_width_after_surface_type; in calculate_bandwidth()
456 data->hsr_after_rotation = data->vsr_after_surface_type; in calculate_bandwidth()
457 data->vsr_after_rotation = data->hsr_after_surface_type; in calculate_bandwidth()
460 data->src_width_after_rotation = data->src_width_after_surface_type; in calculate_bandwidth()
461 data->src_height_after_rotation = data->src_height_after_surface_type; in calculate_bandwidth()
462 data->hsr_after_rotation = data->hsr_after_surface_type; in calculate_bandwidth()
463 data->vsr_after_rotation = data->vsr_after_surface_type; in calculate_bandwidth()
465 switch (data->stereo_mode[i]) { in calculate_bandwidth()
467 data->source_width_pixels[i] = data->src_width_after_rotation; in calculate_bandwidth()
468 data->source_height_pixels = bw_mul(bw_int_to_fixed(2), data->src_height_after_rotation); in calculate_bandwidth()
469 data->hsr_after_stereo = data->hsr_after_rotation; in calculate_bandwidth()
470 data->vsr_after_stereo = bw_mul(bw_int_to_fixed(1), data->vsr_after_rotation); in calculate_bandwidth()
473 data->source_width_pixels[i] = bw_mul(bw_int_to_fixed(2), data->src_width_after_rotation); in calculate_bandwidth()
474 data->source_height_pixels = data->src_height_after_rotation; in calculate_bandwidth()
475 data->hsr_after_stereo = bw_mul(bw_int_to_fixed(1), data->hsr_after_rotation); in calculate_bandwidth()
476 data->vsr_after_stereo = data->vsr_after_rotation; in calculate_bandwidth()
479 data->source_width_pixels[i] = data->src_width_after_rotation; in calculate_bandwidth()
480 data->source_height_pixels = data->src_height_after_rotation; in calculate_bandwidth()
481 data->hsr_after_stereo = data->hsr_after_rotation; in calculate_bandwidth()
482 data->vsr_after_stereo = data->vsr_after_rotation; in calculate_bandwidth()
485 data->hsr[i] = data->hsr_after_stereo; in calculate_bandwidth()
486 if (data->interlace_mode[i]) { in calculate_bandwidth()
487 data->vsr[i] = bw_mul(data->vsr_after_stereo, bw_int_to_fixed(2)); in calculate_bandwidth()
490 data->vsr[i] = data->vsr_after_stereo; in calculate_bandwidth()
492 if (data->panning_and_bezel_adjustment != bw_def_none) { in calculate_bandwidth()
493 …data->source_width_rounded_up_to_chunks[i] = bw_add(bw_floor2(bw_sub(data->source_width_pixels[i],… in calculate_bandwidth()
496 …data->source_width_rounded_up_to_chunks[i] = bw_ceil2(data->source_width_pixels[i], bw_int_to_fixe… in calculate_bandwidth()
498 data->source_height_rounded_up_to_chunks[i] = data->source_height_pixels; in calculate_bandwidth()
512 … data->number_of_displays && dceip->number_of_underlay_pipes >= data->number_of_underlay_surfaces … in calculate_bandwidth()
520 if (data->enable[i]) { in calculate_bandwidth()
521 if (bw_neq(data->hsr[i], bw_int_to_fixed(1))) { in calculate_bandwidth()
522 if (bw_mtn(data->hsr[i], bw_int_to_fixed(4))) { in calculate_bandwidth()
526 if (bw_mtn(data->hsr[i], data->h_taps[i])) { in calculate_bandwidth()
530 …re_downscaler_enabled == 1 && bw_mtn(data->hsr[i], bw_int_to_fixed(1)) && bw_leq(data->hsr[i], bw_… in calculate_bandwidth()
540 if (data->enable[i]) { in calculate_bandwidth()
541 if (bw_neq(data->vsr[i], bw_int_to_fixed(1))) { in calculate_bandwidth()
542 if (bw_mtn(data->vsr[i], bw_int_to_fixed(4))) { in calculate_bandwidth()
546 if (bw_mtn(data->vsr[i], data->v_taps[i])) { in calculate_bandwidth()
555 if (data->enable[i]) { in calculate_bandwidth()
556 if ((dceip->pre_downscaler_enabled && bw_mtn(data->hsr[i], bw_int_to_fixed(1)))) { in calculate_bandwidth()
557 data->source_width_in_lb = bw_div(data->source_width_pixels[i], data->hsr[i]); in calculate_bandwidth()
560 data->source_width_in_lb = data->source_width_pixels[i]; in calculate_bandwidth()
562 switch (data->lb_bpc[i]) { in calculate_bandwidth()
564 …data->lb_line_pitch = bw_ceil2(bw_mul(bw_div(bw_frc_to_fixed(2401171875ul, 100000000), bw_int_to_f… in calculate_bandwidth()
567 …data->lb_line_pitch = bw_ceil2(bw_mul(bw_div(bw_frc_to_fixed(300234375, 10000000), bw_int_to_fixed… in calculate_bandwidth()
570 …data->lb_line_pitch = bw_ceil2(bw_mul(bw_int_to_fixed(data->lb_bpc[i]), data->source_width_in_lb),… in calculate_bandwidth()
573 …data->lb_partitions[i] = bw_floor2(bw_div(data->lb_size_per_component[i], data->lb_line_pitch), bw… in calculate_bandwidth()
576 data->lb_partitions_max[i] = bw_int_to_fixed(10); in calculate_bandwidth()
579 data->lb_partitions_max[i] = bw_int_to_fixed(7); in calculate_bandwidth()
581 data->lb_partitions[i] = bw_min2(data->lb_partitions_max[i], data->lb_partitions[i]); in calculate_bandwidth()
582 if (bw_mtn(bw_add(data->v_taps[i], bw_int_to_fixed(1)), data->lb_partitions[i])) { in calculate_bandwidth()
589 …data->enable[i] && data->fbc_en[i] == 1 && (bw_equ(data->rotation_angle[i], bw_int_to_fixed(90)) |… in calculate_bandwidth()
595 if (data->enable[i]) { in calculate_bandwidth()
596 …qu(data->rotation_angle[i], bw_int_to_fixed(90)) || bw_equ(data->rotation_angle[i], bw_int_to_fixe… in calculate_bandwidth()
608 data->number_of_dram_wrchannels = vbios->number_of_dram_channels; in calculate_bandwidth()
609 data->number_of_dram_channels = vbios->number_of_dram_channels; in calculate_bandwidth()
617 data->dram_efficiency = bw_frc_to_fixed(5, 10); in calculate_bandwidth()
619 data->dram_efficiency = bw_int_to_fixed(1); in calculate_bandwidth()
623 data->number_of_dram_channels = 1; in calculate_bandwidth()
626 data->number_of_dram_channels = 2; in calculate_bandwidth()
629 data->number_of_dram_channels = 4; in calculate_bandwidth()
632 data->number_of_dram_channels = 1; in calculate_bandwidth()
637 data->dram_efficiency = bw_frc_to_fixed(5, 10); in calculate_bandwidth()
639 data->dram_efficiency = bw_frc_to_fixed(8, 10); in calculate_bandwidth()
647 if (data->enable[i]) { in calculate_bandwidth()
648 …if ((bw_equ(data->rotation_angle[i], bw_int_to_fixed(90)) || bw_equ(data->rotation_angle[i], bw_in… in calculate_bandwidth()
651 data->orthogonal_rotation[i] = 1; in calculate_bandwidth()
655 if (data->graphics_micro_tile_mode == bw_def_rotated_micro_tiling) { in calculate_bandwidth()
656 data->orthogonal_rotation[i] = 0; in calculate_bandwidth()
659 data->orthogonal_rotation[i] = 1; in calculate_bandwidth()
666 if (data->underlay_micro_tile_mode == bw_def_display_micro_tiling) { in calculate_bandwidth()
667 data->orthogonal_rotation[i] = 0; in calculate_bandwidth()
670 data->orthogonal_rotation[i] = 1; in calculate_bandwidth()
675 if (data->graphics_micro_tile_mode == bw_def_display_micro_tiling) { in calculate_bandwidth()
676 data->orthogonal_rotation[i] = 0; in calculate_bandwidth()
679 data->orthogonal_rotation[i] = 1; in calculate_bandwidth()
683 …if (bw_equ(data->rotation_angle[i], bw_int_to_fixed(90)) || bw_equ(data->rotation_angle[i], bw_int… in calculate_bandwidth()
684 …data->underlay_maximum_source_efficient_for_tiling = dceip->underlay_maximum_height_efficient_for_… in calculate_bandwidth()
687 …data->underlay_maximum_source_efficient_for_tiling = dceip->underlay_maximum_width_efficient_for_t… in calculate_bandwidth()
690 data->bytes_per_request[i] = bw_int_to_fixed(64); in calculate_bandwidth()
691 data->useful_bytes_per_request[i] = bw_int_to_fixed(64); in calculate_bandwidth()
692 data->lines_interleaved_in_mem_access[i] = bw_int_to_fixed(1); in calculate_bandwidth()
693 data->latency_hiding_lines[i] = bw_int_to_fixed(1); in calculate_bandwidth()
696 data->bytes_per_request[i] = bw_int_to_fixed(64); in calculate_bandwidth()
697 data->useful_bytes_per_request[i] = bw_int_to_fixed(64); in calculate_bandwidth()
698 data->lines_interleaved_in_mem_access[i] = bw_int_to_fixed(2); in calculate_bandwidth()
699 data->latency_hiding_lines[i] = bw_int_to_fixed(2); in calculate_bandwidth()
702 … (surface_type[i] == bw_def_graphics || (bw_mtn(data->source_width_rounded_up_to_chunks[i], bw_cei… in calculate_bandwidth()
703 switch (data->bytes_per_pixel[i]) { in calculate_bandwidth()
705 data->lines_interleaved_in_mem_access[i] = bw_int_to_fixed(2); in calculate_bandwidth()
706 data->latency_hiding_lines[i] = bw_int_to_fixed(2); in calculate_bandwidth()
707 if (data->orthogonal_rotation[i]) { in calculate_bandwidth()
708 data->bytes_per_request[i] = bw_int_to_fixed(32); in calculate_bandwidth()
709 data->useful_bytes_per_request[i] = bw_int_to_fixed(32); in calculate_bandwidth()
712 data->bytes_per_request[i] = bw_int_to_fixed(64); in calculate_bandwidth()
713 data->useful_bytes_per_request[i] = bw_int_to_fixed(64); in calculate_bandwidth()
717 if (data->orthogonal_rotation[i]) { in calculate_bandwidth()
718 data->lines_interleaved_in_mem_access[i] = bw_int_to_fixed(2); in calculate_bandwidth()
719 data->latency_hiding_lines[i] = bw_int_to_fixed(2); in calculate_bandwidth()
720 data->bytes_per_request[i] = bw_int_to_fixed(32); in calculate_bandwidth()
721 data->useful_bytes_per_request[i] = bw_int_to_fixed(16); in calculate_bandwidth()
724 data->lines_interleaved_in_mem_access[i] = bw_int_to_fixed(2); in calculate_bandwidth()
725 data->latency_hiding_lines[i] = bw_int_to_fixed(2); in calculate_bandwidth()
726 data->bytes_per_request[i] = bw_int_to_fixed(64); in calculate_bandwidth()
727 data->useful_bytes_per_request[i] = bw_int_to_fixed(64); in calculate_bandwidth()
731 data->lines_interleaved_in_mem_access[i] = bw_int_to_fixed(2); in calculate_bandwidth()
732 data->latency_hiding_lines[i] = bw_int_to_fixed(2); in calculate_bandwidth()
733 data->bytes_per_request[i] = bw_int_to_fixed(32); in calculate_bandwidth()
734 data->useful_bytes_per_request[i] = bw_int_to_fixed(32); in calculate_bandwidth()
737 data->lines_interleaved_in_mem_access[i] = bw_int_to_fixed(2); in calculate_bandwidth()
738 data->latency_hiding_lines[i] = bw_int_to_fixed(2); in calculate_bandwidth()
739 data->bytes_per_request[i] = bw_int_to_fixed(32); in calculate_bandwidth()
740 data->useful_bytes_per_request[i] = bw_int_to_fixed(16); in calculate_bandwidth()
745 data->bytes_per_request[i] = bw_int_to_fixed(64); in calculate_bandwidth()
746 data->useful_bytes_per_request[i] = bw_int_to_fixed(64); in calculate_bandwidth()
747 if (data->orthogonal_rotation[i]) { in calculate_bandwidth()
748 data->lines_interleaved_in_mem_access[i] = bw_int_to_fixed(8); in calculate_bandwidth()
749 data->latency_hiding_lines[i] = bw_int_to_fixed(4); in calculate_bandwidth()
752 switch (data->bytes_per_pixel[i]) { in calculate_bandwidth()
754 data->lines_interleaved_in_mem_access[i] = bw_int_to_fixed(2); in calculate_bandwidth()
755 data->latency_hiding_lines[i] = bw_int_to_fixed(2); in calculate_bandwidth()
758 data->lines_interleaved_in_mem_access[i] = bw_int_to_fixed(4); in calculate_bandwidth()
759 data->latency_hiding_lines[i] = bw_int_to_fixed(4); in calculate_bandwidth()
762 data->lines_interleaved_in_mem_access[i] = bw_int_to_fixed(8); in calculate_bandwidth()
763 data->latency_hiding_lines[i] = bw_int_to_fixed(4); in calculate_bandwidth()
776 …/*if the dmif data buffer size holds more than vta_ps worth of source lines, then only vsr is used… in calculate_bandwidth()
804 if (data->enable[i]) { in calculate_bandwidth()
805 …data->v_filter_init[i] = bw_floor2(bw_div((bw_add(bw_add(bw_add(bw_int_to_fixed(1), data->v_taps[i… in calculate_bandwidth()
806 if (data->panning_and_bezel_adjustment == bw_def_any_lines) { in calculate_bandwidth()
807 data->v_filter_init[i] = bw_add(data->v_filter_init[i], bw_int_to_fixed(1)); in calculate_bandwidth()
809 if (data->stereo_mode[i] == bw_def_top_bottom) { in calculate_bandwidth()
810 data->v_filter_init[i] = bw_min2(data->v_filter_init[i], bw_int_to_fixed(4)); in calculate_bandwidth()
812 if (data->stereo_mode[i] == bw_def_top_bottom) { in calculate_bandwidth()
813 data->num_lines_at_frame_start = bw_int_to_fixed(1); in calculate_bandwidth()
816 data->num_lines_at_frame_start = bw_int_to_fixed(3); in calculate_bandwidth()
818 …if ((bw_mtn(data->vsr[i], bw_int_to_fixed(1)) && surface_type[i] == bw_def_graphics) || data->pann… in calculate_bandwidth()
819 data->line_buffer_prefetch[i] = 0; in calculate_bandwidth()
821 …urface_type[i] == bw_def_graphics) && (bw_mtn(data->lb_partitions[i], bw_add(data->v_taps[i], bw_c… in calculate_bandwidth()
822 data->line_buffer_prefetch[i] = 1; in calculate_bandwidth()
825 data->line_buffer_prefetch[i] = 0; in calculate_bandwidth()
827 …data->lb_lines_in_per_line_out_in_beginning_of_frame[i] = bw_div(bw_ceil2(data->v_filter_init[i], … in calculate_bandwidth()
828 if (data->line_buffer_prefetch[i] == 1) { in calculate_bandwidth()
829 … data->lb_lines_in_per_line_out_in_middle_of_frame[i] = bw_max2(bw_int_to_fixed(1), data->vsr[i]); in calculate_bandwidth()
831 else if (bw_leq(data->vsr[i], bw_int_to_fixed(1))) { in calculate_bandwidth()
832 data->lb_lines_in_per_line_out_in_middle_of_frame[i] = bw_int_to_fixed(1); in calculate_bandwidth()
833 } else if (bw_leq(data->vsr[i], in calculate_bandwidth()
835 …data->lb_lines_in_per_line_out_in_middle_of_frame[i] = bw_div(bw_int_to_fixed(4), bw_int_to_fixed(… in calculate_bandwidth()
836 } else if (bw_leq(data->vsr[i], in calculate_bandwidth()
838 …data->lb_lines_in_per_line_out_in_middle_of_frame[i] = bw_div(bw_int_to_fixed(6), bw_int_to_fixed(… in calculate_bandwidth()
840 else if (bw_leq(data->vsr[i], bw_int_to_fixed(2))) { in calculate_bandwidth()
841 data->lb_lines_in_per_line_out_in_middle_of_frame[i] = bw_int_to_fixed(2); in calculate_bandwidth()
843 else if (bw_leq(data->vsr[i], bw_int_to_fixed(3))) { in calculate_bandwidth()
844 data->lb_lines_in_per_line_out_in_middle_of_frame[i] = bw_int_to_fixed(3); in calculate_bandwidth()
847 data->lb_lines_in_per_line_out_in_middle_of_frame[i] = bw_int_to_fixed(4); in calculate_bandwidth()
849 …if (data->line_buffer_prefetch[i] == 1 || bw_equ(data->lb_lines_in_per_line_out_in_middle_of_frame… in calculate_bandwidth()
850 data->horizontal_blank_and_chunk_granularity_factor[i] = bw_int_to_fixed(1); in calculate_bandwidth()
853 …data->horizontal_blank_and_chunk_granularity_factor[i] = bw_div(data->h_total[i], (bw_div((bw_add(… in calculate_bandwidth()
855 …data->request_bandwidth[i] = bw_div(bw_mul(bw_div(bw_mul(bw_div(bw_mul(bw_max2(data->lb_lines_in_p… in calculate_bandwidth()
856 data->display_bandwidth[i] = bw_mul(data->request_bandwidth[i], data->bytes_per_request[i]); in calculate_bandwidth()
860 …lay buffer sharing is enabled, the data buffer size for underlay in 422 or 444 is the sum of the l… in calculate_bandwidth()
863 …/*if there is only one display enabled, the dmif data buffer size for the graphics surface is incr… in calculate_bandwidth()
869 …/*graphics and underlay data buffer size is adjusted (limited) using the outstanding chunk request… in calculate_bandwidth()
870 …/*display enabled or if the dmif request buffer is not large enough for the total data buffer size… in calculate_bandwidth()
871 …/*the outstanding chunk request limit is the ceiling of the adjusted data buffer size divided by t… in calculate_bandwidth()
872 …/*the adjusted data buffer size is the product of the display bandwidth and the minimum effective … in calculate_bandwidth()
873 /*rounded up to the chunk size in bytes, but should not exceed the original data buffer size*/ in calculate_bandwidth()
875 if (data->enable[i]) { in calculate_bandwidth()
877 data->max_chunks_non_fbc_mode[i] = 128 - dmif_chunk_buff_margin; in calculate_bandwidth()
880 data->max_chunks_non_fbc_mode[i] = 16 - dmif_chunk_buff_margin; in calculate_bandwidth()
883 if (data->fbc_en[i] == 1) { in calculate_bandwidth()
888 if (data->enable[i]) { in calculate_bandwidth()
891 … data->data_buffer_size[i] = bw_int_to_fixed(dceip->display_write_back420_luma_mcifwr_buffer_size); in calculate_bandwidth()
894 …data->data_buffer_size[i] = bw_int_to_fixed(dceip->display_write_back420_chroma_mcifwr_buffer_size… in calculate_bandwidth()
897 data->data_buffer_size[i] = bw_int_to_fixed(dceip->underlay_luma_dmif_size); in calculate_bandwidth()
900 …data->data_buffer_size[i] = bw_div(bw_int_to_fixed(dceip->underlay_chroma_dmif_size), bw_int_to_fi… in calculate_bandwidth()
903 if (data->orthogonal_rotation[i] == 0) { in calculate_bandwidth()
904 data->data_buffer_size[i] = bw_int_to_fixed(dceip->underlay_luma_dmif_size); in calculate_bandwidth()
907 …data->data_buffer_size[i] = bw_add(bw_int_to_fixed(dceip->underlay_luma_dmif_size), bw_int_to_fixe… in calculate_bandwidth()
911 if (data->fbc_en[i] == 1) { in calculate_bandwidth()
913 if (data->number_of_displays == 1) { in calculate_bandwidth()
914 …data->data_buffer_size[i] = bw_min2(bw_mul(bw_mul(bw_int_to_fixed(max_chunks_fbc_mode), bw_int_to_… in calculate_bandwidth()
917 …data->data_buffer_size[i] = bw_min2(bw_mul(bw_mul(bw_int_to_fixed(max_chunks_fbc_mode), bw_int_to_… in calculate_bandwidth()
922 if (data->number_of_displays == 1) { in calculate_bandwidth()
923 …data->data_buffer_size[i] = bw_min2(bw_mul(bw_mul(bw_int_to_fixed(data->max_chunks_non_fbc_mode[i]… in calculate_bandwidth()
926 …data->data_buffer_size[i] = bw_min2(bw_mul(bw_mul(bw_int_to_fixed(data->max_chunks_non_fbc_mode[i]… in calculate_bandwidth()
932 data->memory_chunk_size_in_bytes[i] = bw_int_to_fixed(1024); in calculate_bandwidth()
933 data->pipe_chunk_size_in_bytes[i] = bw_int_to_fixed(1024); in calculate_bandwidth()
936 …data->memory_chunk_size_in_bytes[i] = bw_mul(bw_mul(bw_int_to_fixed(dceip->chunk_width), data->lin… in calculate_bandwidth()
937 …data->pipe_chunk_size_in_bytes[i] = bw_mul(bw_mul(bw_int_to_fixed(dceip->chunk_width), bw_int_to_f… in calculate_bandwidth()
941 data->min_dmif_size_in_time = bw_int_to_fixed(9999); in calculate_bandwidth()
942 data->min_mcifwr_size_in_time = bw_int_to_fixed(9999); in calculate_bandwidth()
944 if (data->enable[i]) { in calculate_bandwidth()
946 …bw_div(bw_mul(data->data_buffer_size[i], data->bytes_per_request[i]), data->useful_bytes_per_reque… in calculate_bandwidth()
947 …data->min_dmif_size_in_time = bw_div(bw_div(bw_mul(data->data_buffer_size[i], data->bytes_per_requ… in calculate_bandwidth()
951 …bw_div(bw_mul(data->data_buffer_size[i], data->bytes_per_request[i]), data->useful_bytes_per_reque… in calculate_bandwidth()
952 …data->min_mcifwr_size_in_time = bw_div(bw_div(bw_mul(data->data_buffer_size[i], data->bytes_per_re… in calculate_bandwidth()
957 data->total_requests_for_dmif_size = bw_int_to_fixed(0); in calculate_bandwidth()
959 …if (data->enable[i] && surface_type[i] != bw_def_display_write_back420_luma && surface_type[i] != … in calculate_bandwidth()
960 …data->total_requests_for_dmif_size = bw_add(data->total_requests_for_dmif_size, bw_div(data->data_… in calculate_bandwidth()
964 if (data->enable[i]) { in calculate_bandwidth()
965 …& dceip->limit_excessive_outstanding_dmif_requests && (data->number_of_displays > 1 || bw_mtn(data… in calculate_bandwidth()
966 …data->adjusted_data_buffer_size[i] = bw_min2(data->data_buffer_size[i], bw_ceil2(bw_mul(data->min_… in calculate_bandwidth()
969 data->adjusted_data_buffer_size[i] = data->data_buffer_size[i]; in calculate_bandwidth()
974 if (data->enable[i]) { in calculate_bandwidth()
975 if (data->number_of_displays == 1 && data->number_of_underlay_surfaces == 0) { in calculate_bandwidth()
977 data->outstanding_chunk_request_limit[i] = bw_int_to_fixed(127); in calculate_bandwidth()
980 …data->outstanding_chunk_request_limit[i] = bw_ceil2(bw_div(data->adjusted_data_buffer_size[i], dat… in calculate_bandwidth()
983 …data->outstanding_chunk_request_limit[i] = bw_max2(bw_int_to_fixed(127), data->outstanding_chunk_r… in calculate_bandwidth()
997 …if (data->number_of_displays > 1 || (bw_neq(data->rotation_angle[4], bw_int_to_fixed(0)) && bw_neq… in calculate_bandwidth()
998 …data->peak_pte_request_to_eviction_ratio_limiting = dceip->peak_pte_request_to_eviction_ratio_limi… in calculate_bandwidth()
1001 …data->peak_pte_request_to_eviction_ratio_limiting = dceip->peak_pte_request_to_eviction_ratio_limi… in calculate_bandwidth()
1004 if (data->enable[i] && data->scatter_gather_enable_for_pipe[i] == 1) { in calculate_bandwidth()
1006 data->useful_pte_per_pte_request = bw_int_to_fixed(8); in calculate_bandwidth()
1007 …data->scatter_gather_page_width[i] = bw_div(bw_int_to_fixed(4096), bw_int_to_fixed(data->bytes_per… in calculate_bandwidth()
1008 data->scatter_gather_page_height[i] = bw_int_to_fixed(1); in calculate_bandwidth()
1009 data->scatter_gather_pte_request_rows = bw_int_to_fixed(1); in calculate_bandwidth()
1010 …data->scatter_gather_row_height = bw_int_to_fixed(dceip->scatter_gather_lines_of_pte_prefetching_i… in calculate_bandwidth()
1012 …else if (bw_equ(data->rotation_angle[i], bw_int_to_fixed(0)) || bw_equ(data->rotation_angle[i], bw… in calculate_bandwidth()
1013 data->useful_pte_per_pte_request = bw_int_to_fixed(8); in calculate_bandwidth()
1014 switch (data->bytes_per_pixel[i]) { in calculate_bandwidth()
1016 data->scatter_gather_page_width[i] = bw_int_to_fixed(32); in calculate_bandwidth()
1017 data->scatter_gather_page_height[i] = bw_int_to_fixed(32); in calculate_bandwidth()
1020 data->scatter_gather_page_width[i] = bw_int_to_fixed(64); in calculate_bandwidth()
1021 data->scatter_gather_page_height[i] = bw_int_to_fixed(32); in calculate_bandwidth()
1024 data->scatter_gather_page_width[i] = bw_int_to_fixed(64); in calculate_bandwidth()
1025 data->scatter_gather_page_height[i] = bw_int_to_fixed(64); in calculate_bandwidth()
1028 …data->scatter_gather_pte_request_rows = bw_int_to_fixed(dceip->scatter_gather_pte_request_rows_in_… in calculate_bandwidth()
1029 data->scatter_gather_row_height = data->scatter_gather_page_height[i]; in calculate_bandwidth()
1032 data->useful_pte_per_pte_request = bw_int_to_fixed(1); in calculate_bandwidth()
1033 switch (data->bytes_per_pixel[i]) { in calculate_bandwidth()
1035 data->scatter_gather_page_width[i] = bw_int_to_fixed(32); in calculate_bandwidth()
1036 data->scatter_gather_page_height[i] = bw_int_to_fixed(32); in calculate_bandwidth()
1039 data->scatter_gather_page_width[i] = bw_int_to_fixed(32); in calculate_bandwidth()
1040 data->scatter_gather_page_height[i] = bw_int_to_fixed(64); in calculate_bandwidth()
1043 data->scatter_gather_page_width[i] = bw_int_to_fixed(64); in calculate_bandwidth()
1044 data->scatter_gather_page_height[i] = bw_int_to_fixed(64); in calculate_bandwidth()
1047 …data->scatter_gather_pte_request_rows = bw_int_to_fixed(dceip->scatter_gather_pte_request_rows_in_… in calculate_bandwidth()
1048 data->scatter_gather_row_height = data->scatter_gather_page_height[i]; in calculate_bandwidth()
1050 …data->pte_request_per_chunk[i] = bw_div(bw_div(bw_int_to_fixed(dceip->chunk_width), data->scatter_… in calculate_bandwidth()
1051 …data->scatter_gather_pte_requests_in_row[i] = bw_div(bw_mul(bw_ceil2(bw_mul(bw_div(data->source_wi… in calculate_bandwidth()
1052 …data->scatter_gather_pte_requests_in_vblank = bw_mul(data->scatter_gather_pte_request_rows, data->… in calculate_bandwidth()
1053 if (bw_equ(data->peak_pte_request_to_eviction_ratio_limiting, bw_int_to_fixed(0))) { in calculate_bandwidth()
1054 data->scatter_gather_pte_request_limit[i] = data->scatter_gather_pte_requests_in_vblank; in calculate_bandwidth()
1057 …data->scatter_gather_pte_request_limit[i] = bw_max2(dceip->minimum_outstanding_pte_request_limit, … in calculate_bandwidth()
1064 …data->inefficient_linear_pitch_in_bytes = bw_mul(bw_mul(bw_int_to_fixed(256), bw_int_to_fixed(vbio… in calculate_bandwidth()
1067 …ed is the one that allows the transfer of all pipe's data buffer size in memory in the time for da… in calculate_bandwidth()
1069 …/*the dram data requirement is doubled when the data request size in bytes is less than the dram c… in calculate_bandwidth()
1070 …/*the dram data requirement is also multiplied by the number of channels in the case of low power … in calculate_bandwidth()
1077 …/*the display reads and writes time for data transfer is the minimum data or cursor buffer size in… in calculate_bandwidth()
1078 …y is experienced more than one time if the number of dmif requests in the data buffer exceeds the … in calculate_bandwidth()
1080 …data burst time is the maximum of the total page close-open time, total dmif/mcifwr buffer size in… in calculate_bandwidth()
1081 …oor of the data required divided by the buffer size for the fist pixel, and the burst time plus th… in calculate_bandwidth()
1084 …/*the source data for these pixels is the number of pixels times the bytes per pixel times the byt… in calculate_bandwidth()
1085 data->cursor_total_data = bw_int_to_fixed(0); in calculate_bandwidth()
1086 data->cursor_total_request_groups = bw_int_to_fixed(0); in calculate_bandwidth()
1087 data->scatter_gather_total_pte_requests = bw_int_to_fixed(0); in calculate_bandwidth()
1088 data->scatter_gather_total_pte_request_groups = bw_int_to_fixed(0); in calculate_bandwidth()
1090 if (data->enable[i]) { in calculate_bandwidth()
1091 …data->cursor_total_data = bw_add(data->cursor_total_data, bw_mul(bw_mul(bw_int_to_fixed(2), data->… in calculate_bandwidth()
1093 …data->cursor_total_request_groups = bw_add(data->cursor_total_request_groups, bw_int_to_fixed((dce… in calculate_bandwidth()
1096 …data->cursor_total_request_groups = bw_add(data->cursor_total_request_groups, bw_ceil2(bw_div(data… in calculate_bandwidth()
1098 if (data->scatter_gather_enable_for_pipe[i]) { in calculate_bandwidth()
1099 …data->scatter_gather_total_pte_requests = bw_add(data->scatter_gather_total_pte_requests, data->sc… in calculate_bandwidth()
1100 …data->scatter_gather_total_pte_request_groups = bw_add(data->scatter_gather_total_pte_request_grou… in calculate_bandwidth()
1104 data->tile_width_in_pixels = bw_int_to_fixed(8); in calculate_bandwidth()
1105 data->dmif_total_number_of_data_request_page_close_open = bw_int_to_fixed(0); in calculate_bandwidth()
1106 data->mcifwr_total_number_of_data_request_page_close_open = bw_int_to_fixed(0); in calculate_bandwidth()
1108 if (data->enable[i]) { in calculate_bandwidth()
1109 if (data->scatter_gather_enable_for_pipe[i] == 1 && tiling_mode[i] != bw_def_linear) { in calculate_bandwidth()
1110 …data->bytes_per_page_close_open = bw_mul(data->lines_interleaved_in_mem_access[i], bw_max2(bw_mul(… in calculate_bandwidth()
1112 …data->scatter_gather_enable_for_pipe[i] == 1 && tiling_mode[i] == bw_def_linear && bw_equ(bw_mod((… in calculate_bandwidth()
1113 data->bytes_per_page_close_open = dceip->linear_mode_line_request_alternation_slice; in calculate_bandwidth()
1116 data->bytes_per_page_close_open = data->memory_chunk_size_in_bytes[i]; in calculate_bandwidth()
1119 …data->dmif_total_number_of_data_request_page_close_open = bw_add(data->dmif_total_number_of_data_r… in calculate_bandwidth()
1122 …data->mcifwr_total_number_of_data_request_page_close_open = bw_add(data->mcifwr_total_number_of_da… in calculate_bandwidth()
1126 …data->dmif_total_page_close_open_time = bw_div(bw_mul((bw_add(bw_add(data->dmif_total_number_of_da… in calculate_bandwidth()
1127 …data->mcifwr_total_page_close_open_time = bw_div(bw_mul(data->mcifwr_total_number_of_data_request_… in calculate_bandwidth()
1129 if (data->enable[i]) { in calculate_bandwidth()
1130 …data->adjusted_data_buffer_size_in_memory[i] = bw_div(bw_mul(data->adjusted_data_buffer_size[i], d… in calculate_bandwidth()
1133 data->total_requests_for_adjusted_dmif_size = bw_int_to_fixed(0); in calculate_bandwidth()
1135 if (data->enable[i]) { in calculate_bandwidth()
1137 …data->total_requests_for_adjusted_dmif_size = bw_add(data->total_requests_for_adjusted_dmif_size, … in calculate_bandwidth()
1141 …data->total_dmifmc_urgent_trips = bw_ceil2(bw_div(data->total_requests_for_adjusted_dmif_size, (bw… in calculate_bandwidth()
1142 …data->total_dmifmc_urgent_latency = bw_mul(vbios->dmifmc_urgent_latency, data->total_dmifmc_urgent… in calculate_bandwidth()
1143 data->total_display_reads_required_data = bw_int_to_fixed(0); in calculate_bandwidth()
1144 data->total_display_reads_required_dram_access_data = bw_int_to_fixed(0); in calculate_bandwidth()
1145 data->total_display_writes_required_data = bw_int_to_fixed(0); in calculate_bandwidth()
1146 data->total_display_writes_required_dram_access_data = bw_int_to_fixed(0); in calculate_bandwidth()
1148 if (data->enable[i]) { in calculate_bandwidth()
1150 data->display_reads_required_data = data->adjusted_data_buffer_size_in_memory[i]; in calculate_bandwidth()
1153 … read burst length (bl) for hbm memories is 4, so each read command will access 32 bytes of data.*/ in calculate_bandwidth()
1154 /*the 64 or 32 byte sized data is stored in one pseudo-channel.*/ in calculate_bandwidth()
1155 …/*it will take 4 memclk cycles or 8 yclk cycles to fetch 64 bytes of data from the hbm memory (2 r… in calculate_bandwidth()
1156 …/*it will take 2 memclk cycles or 4 yclk cycles to fetch 32 bytes of data from the hbm memory (1 r… in calculate_bandwidth()
1158 …/*the read burst length (bl) for gddr5/ddr4 memories is 8, regardless of the size of the data requ… in calculate_bandwidth()
1159 /*therefore it will require 8 cycles to fetch 64 or 32 bytes of data from the memory.*/ in calculate_bandwidth()
1160 /*the memory efficiency will be 50% for the 32 byte sized data.*/ in calculate_bandwidth()
1162 data->display_reads_required_dram_access_data = data->adjusted_data_buffer_size_in_memory[i]; in calculate_bandwidth()
1165 …data->display_reads_required_dram_access_data = bw_mul(data->adjusted_data_buffer_size_in_memory[i… in calculate_bandwidth()
1167 …data->total_display_reads_required_data = bw_add(data->total_display_reads_required_data, data->di… in calculate_bandwidth()
1168 …data->total_display_reads_required_dram_access_data = bw_add(data->total_display_reads_required_dr… in calculate_bandwidth()
1171 …data->total_display_writes_required_data = bw_add(data->total_display_writes_required_data, data->… in calculate_bandwidth()
1172 …data->total_display_writes_required_dram_access_data = bw_add(data->total_display_writes_required_… in calculate_bandwidth()
1176 …data->total_display_reads_required_data = bw_add(bw_add(data->total_display_reads_required_data, d… in calculate_bandwidth()
1177 …data->total_display_reads_required_dram_access_data = bw_add(bw_add(data->total_display_reads_requ… in calculate_bandwidth()
1179 if (data->enable[i]) { in calculate_bandwidth()
1180 if (bw_mtn(data->v_filter_init[i], bw_int_to_fixed(4))) { in calculate_bandwidth()
1181 …data->src_pixels_for_first_output_pixel[i] = bw_mul(bw_int_to_fixed(4), data->source_width_rounded… in calculate_bandwidth()
1184 if (bw_mtn(data->v_filter_init[i], bw_int_to_fixed(2))) { in calculate_bandwidth()
1185 data->src_pixels_for_first_output_pixel[i] = bw_int_to_fixed(512); in calculate_bandwidth()
1188 data->src_pixels_for_first_output_pixel[i] = bw_int_to_fixed(0); in calculate_bandwidth()
1191 …data->src_data_for_first_output_pixel[i] = bw_div(bw_mul(bw_mul(data->src_pixels_for_first_output_… in calculate_bandwidth()
1192 …data->src_pixels_for_last_output_pixel[i] = bw_mul(data->source_width_rounded_up_to_chunks[i], bw_… in calculate_bandwidth()
1193 …data->src_data_for_last_output_pixel[i] = bw_div(bw_mul(bw_mul(bw_mul(data->source_width_rounded_u… in calculate_bandwidth()
1194 …data->active_time[i] = bw_div(bw_div(data->source_width_rounded_up_to_chunks[i], data->hsr[i]), da… in calculate_bandwidth()
1199 …data->dmif_burst_time[i][j] = bw_max3(data->dmif_total_page_close_open_time, bw_div(data->total_di… in calculate_bandwidth()
1200 if (data->d1_display_write_back_dwb_enable == 1) { in calculate_bandwidth()
1201 …data->mcifwr_burst_time[i][j] = bw_max3(data->mcifwr_total_page_close_open_time, bw_div(data->tota… in calculate_bandwidth()
1208 if (data->enable[i]) { in calculate_bandwidth()
1210 …/*time to transfer data from the dmif buffer to the lb. since the mc to dmif transfer time overla… in calculate_bandwidth()
1212 …data->dmif_buffer_transfer_time[i] = bw_mul(data->source_width_rounded_up_to_chunks[i], (bw_div(dc… in calculate_bandwidth()
1213 …data->line_source_transfer_time[i][j][k] = bw_max2(bw_mul((bw_add(data->total_dmifmc_urgent_latenc… in calculate_bandwidth()
1218 …/*the latency incurred would be the time to issue the requests and return the data for the first o… in calculate_bandwidth()
1220 switch (data->lb_bpc[i]) { in calculate_bandwidth()
1222 data->v_scaler_efficiency = dceip->graphics_vscaler_efficiency6_bit_per_component; in calculate_bandwidth()
1225 data->v_scaler_efficiency = dceip->graphics_vscaler_efficiency8_bit_per_component; in calculate_bandwidth()
1228 data->v_scaler_efficiency = dceip->graphics_vscaler_efficiency10_bit_per_component; in calculate_bandwidth()
1231 data->v_scaler_efficiency = dceip->graphics_vscaler_efficiency12_bit_per_component; in calculate_bandwidth()
1234 if (data->use_alpha[i] == 1) { in calculate_bandwidth()
1235 … data->v_scaler_efficiency = bw_min2(data->v_scaler_efficiency, dceip->alpha_vscaler_efficiency); in calculate_bandwidth()
1239 switch (data->lb_bpc[i]) { in calculate_bandwidth()
1241 data->v_scaler_efficiency = dceip->underlay_vscaler_efficiency6_bit_per_component; in calculate_bandwidth()
1244 data->v_scaler_efficiency = dceip->underlay_vscaler_efficiency8_bit_per_component; in calculate_bandwidth()
1247 data->v_scaler_efficiency = dceip->underlay_vscaler_efficiency10_bit_per_component; in calculate_bandwidth()
1250 data->v_scaler_efficiency = bw_int_to_fixed(3); in calculate_bandwidth()
1254 if (dceip->pre_downscaler_enabled && bw_mtn(data->hsr[i], bw_int_to_fixed(1))) { in calculate_bandwidth()
1255 …data->scaler_limits_factor = bw_max2(bw_div(data->v_taps[i], data->v_scaler_efficiency), bw_div(da… in calculate_bandwidth()
1258 …data->scaler_limits_factor = bw_max3(bw_int_to_fixed(1), bw_ceil2(bw_div(data->h_taps[i], bw_int_t… in calculate_bandwidth()
1260 …data->dram_speed_change_line_source_transfer_time[i][j][k] = bw_mul(bw_int_to_fixed(2), bw_max2((b… in calculate_bandwidth()
1263 …data->line_source_transfer_time[i][j][k] = bw_max2(bw_mul((bw_add(vbios->mcifwrmc_urgent_latency, … in calculate_bandwidth()
1268 …/*the latency incurred would be the time to issue the requests and return the data for the first o… in calculate_bandwidth()
1269 …data->dram_speed_change_line_source_transfer_time[i][j][k] = bw_max2((bw_add((bw_div(data->src_dat… in calculate_bandwidth()
1284 …en line time, plus one more line time if doing lb prefetch, plus the dmif data buffer size equival… in calculate_bandwidth()
1291 if (data->enable[k]) { in calculate_bandwidth()
1294 data->display_pstate_change_enable[k] = 0; in calculate_bandwidth()
1297 if (data->enable[i]) { in calculate_bandwidth()
1298 …ram_clock_state_change_gated_before_cursor, bw_int_to_fixed(0)) && bw_mtn(data->cursor_width_pixel… in calculate_bandwidth()
1299 if (bw_ltn(data->vsr[i], bw_int_to_fixed(2))) { in calculate_bandwidth()
1300 …data->cursor_latency_hiding[i] = bw_div(bw_div(bw_mul((bw_sub(dceip->cursor_dcp_buffer_lines, bw_i… in calculate_bandwidth()
1303 …data->cursor_latency_hiding[i] = bw_div(bw_div(bw_mul((bw_sub(dceip->cursor_dcp_buffer_lines, bw_i… in calculate_bandwidth()
1307 data->cursor_latency_hiding[i] = bw_int_to_fixed(9999); in calculate_bandwidth()
1312 if (data->enable[i]) { in calculate_bandwidth()
1313 …(bw_equ(data->vsr[i], bw_int_to_fixed(1)) || (bw_leq(data->vsr[i], bw_frc_to_fixed(8, 10)) && bw_l… in calculate_bandwidth()
1315 …data->minimum_latency_hiding[i] = bw_sub(bw_div(bw_mul((bw_div((bw_add(bw_sub(data->lb_partitions[… in calculate_bandwidth()
1317 …data->minimum_latency_hiding[i] = bw_sub(bw_div(bw_mul((bw_div((bw_add(bw_sub(data->lb_partitions[… in calculate_bandwidth()
1320 …data->minimum_latency_hiding[i] = bw_sub(bw_div(bw_mul((bw_div((bw_add(bw_int_to_fixed(1 + data->l… in calculate_bandwidth()
1322 …data->minimum_latency_hiding_with_cursor[i] = bw_min2(data->minimum_latency_hiding[i], data->curso… in calculate_bandwidth()
1327 data->blackout_duration_margin[i][j] = bw_int_to_fixed(9999); in calculate_bandwidth()
1328 data->dispclk_required_for_blackout_duration[i][j] = bw_int_to_fixed(0); in calculate_bandwidth()
1329 data->dispclk_required_for_blackout_recovery[i][j] = bw_int_to_fixed(0); in calculate_bandwidth()
1331 if (data->enable[k] && bw_mtn(vbios->blackout_duration, bw_int_to_fixed(0))) { in calculate_bandwidth()
1333 …data->blackout_duration_margin[i][j] = bw_min2(data->blackout_duration_margin[i][j], bw_sub(bw_sub… in calculate_bandwidth()
1334 …data->dispclk_required_for_blackout_duration[i][j] = bw_max3(data->dispclk_required_for_blackout_d… in calculate_bandwidth()
1335 …ackout_recovery_time, bw_add(bw_mul(bw_int_to_fixed(2), data->total_dmifmc_urgent_latency), data->… in calculate_bandwidth()
1336 data->dispclk_required_for_blackout_recovery[i][j] = bw_int_to_fixed(9999); in calculate_bandwidth()
1338 …data->adjusted_data_buffer_size[k], bw_mul(bw_div(bw_mul(data->display_bandwidth[k], data->useful_… in calculate_bandwidth()
1339 …data->dispclk_required_for_blackout_recovery[i][j] = bw_max2(data->dispclk_required_for_blackout_r… in calculate_bandwidth()
1343 …data->blackout_duration_margin[i][j] = bw_min2(data->blackout_duration_margin[i][j], bw_sub(bw_sub… in calculate_bandwidth()
1344 …data->dispclk_required_for_blackout_duration[i][j] = bw_max3(data->dispclk_required_for_blackout_d… in calculate_bandwidth()
1345 …w_mul(bw_int_to_fixed(2), vbios->mcifwrmc_urgent_latency), data->dmif_burst_time[i][j]), data->mci… in calculate_bandwidth()
1346 data->dispclk_required_for_blackout_recovery[i][j] = bw_int_to_fixed(9999); in calculate_bandwidth()
1348 …data->adjusted_data_buffer_size[k], bw_mul(bw_div(bw_mul(data->display_bandwidth[k], data->useful_… in calculate_bandwidth()
1349 …data->dispclk_required_for_blackout_recovery[i][j] = bw_max2(data->dispclk_required_for_blackout_r… in calculate_bandwidth()
1356 …if (bw_mtn(data->blackout_duration_margin[high][s_high], bw_int_to_fixed(0)) && bw_ltn(data->dispc… in calculate_bandwidth()
1357 data->cpup_state_change_enable = bw_def_yes; in calculate_bandwidth()
1358 …if (bw_ltn(data->dispclk_required_for_blackout_recovery[high][s_high], vbios->high_voltage_max_dis… in calculate_bandwidth()
1359 data->cpuc_state_change_enable = bw_def_yes; in calculate_bandwidth()
1362 data->cpuc_state_change_enable = bw_def_no; in calculate_bandwidth()
1366 data->cpup_state_change_enable = bw_def_no; in calculate_bandwidth()
1367 data->cpuc_state_change_enable = bw_def_no; in calculate_bandwidth()
1377 if (data->enable[i]) { in calculate_bandwidth()
1380 data->maximum_latency_hiding[i] = bw_add(data->minimum_latency_hiding[i], in calculate_bandwidth()
1381 bw_mul(bw_frc_to_fixed(5, 10), data->total_dmifmc_urgent_latency)); in calculate_bandwidth()
1382 …data->maximum_latency_hiding_with_cursor[i] = bw_min2(data->maximum_latency_hiding[i], data->curso… in calculate_bandwidth()
1387 data->min_dram_speed_change_margin[i][j] = bw_int_to_fixed(9999); in calculate_bandwidth()
1388 data->dram_speed_change_margin = bw_int_to_fixed(9999); in calculate_bandwidth()
1389 data->dispclk_required_for_dram_speed_change[i][j] = bw_int_to_fixed(0); in calculate_bandwidth()
1390 data->num_displays_with_margin[i][j] = 0; in calculate_bandwidth()
1392 if (data->enable[k]) { in calculate_bandwidth()
1394 …data->dram_speed_change_margin = bw_sub(bw_sub(bw_sub(data->maximum_latency_hiding_with_cursor[k],… in calculate_bandwidth()
1395 …if ((bw_mtn(data->dram_speed_change_margin, bw_int_to_fixed(0)) && bw_ltn(data->dram_speed_change_… in calculate_bandwidth()
1397 …data->min_dram_speed_change_margin[i][j] = bw_min2(data->min_dram_speed_change_margin[i][j], data-… in calculate_bandwidth()
1399 …data->dispclk_required_for_dram_speed_change_pipe[i][j] = bw_max2(bw_div(bw_div(bw_mul(data->src_p… in calculate_bandwidth()
1400 …if ((bw_ltn(data->dispclk_required_for_dram_speed_change_pipe[i][j], vbios->high_voltage_max_dispc… in calculate_bandwidth()
1401 data->display_pstate_change_enable[k] = 1; in calculate_bandwidth()
1402 data->num_displays_with_margin[i][j] = data->num_displays_with_margin[i][j] + 1; in calculate_bandwidth()
1403 …data->dispclk_required_for_dram_speed_change[i][j] = bw_max2(data->dispclk_required_for_dram_speed… in calculate_bandwidth()
1408 …data->dram_speed_change_margin = bw_sub(bw_sub(bw_sub(bw_sub(data->maximum_latency_hiding_with_cur… in calculate_bandwidth()
1409 …if ((bw_mtn(data->dram_speed_change_margin, bw_int_to_fixed(0)) && bw_ltn(data->dram_speed_change_… in calculate_bandwidth()
1411 …data->min_dram_speed_change_margin[i][j] = bw_min2(data->min_dram_speed_change_margin[i][j], data-… in calculate_bandwidth()
1413 …data->dispclk_required_for_dram_speed_change_pipe[i][j] = bw_max2(bw_div(bw_div(bw_mul(data->src_p… in calculate_bandwidth()
1414 …if ((bw_ltn(data->dispclk_required_for_dram_speed_change_pipe[i][j], vbios->high_voltage_max_dispc… in calculate_bandwidth()
1415 data->display_pstate_change_enable[k] = 1; in calculate_bandwidth()
1416 data->num_displays_with_margin[i][j] = data->num_displays_with_margin[i][j] + 1; in calculate_bandwidth()
1417 …data->dispclk_required_for_dram_speed_change[i][j] = bw_max2(data->dispclk_required_for_dram_speed… in calculate_bandwidth()
1427 if (data->enable[k] == 1 && data->display_pstate_change_enable[k] == 1) { in calculate_bandwidth()
1434 data->min_vblank_dram_speed_change_margin = bw_int_to_fixed(9999); in calculate_bandwidth()
1436 if (data->enable[k]) { in calculate_bandwidth()
1438 …data->v_blank_dram_speed_change_margin[k] = bw_sub(bw_sub(bw_sub(bw_div(bw_mul((bw_sub(data->v_tot… in calculate_bandwidth()
1439 …data->min_vblank_dram_speed_change_margin = bw_min2(data->min_vblank_dram_speed_change_margin, dat… in calculate_bandwidth()
1442 …data->v_blank_dram_speed_change_margin[k] = bw_sub(bw_sub(bw_sub(bw_sub(bw_div(bw_mul((bw_sub(data… in calculate_bandwidth()
1443 …data->min_vblank_dram_speed_change_margin = bw_min2(data->min_vblank_dram_speed_change_margin, dat… in calculate_bandwidth()
1448 data->displays_with_same_mode[i] = bw_int_to_fixed(0); in calculate_bandwidth()
1449 …if (data->enable[i] == 1 && data->display_pstate_change_enable[i] == 0 && bw_mtn(data->v_blank_dra… in calculate_bandwidth()
1451 …data->display_synchronization_enabled) && (data->enable[j] == 1 && bw_equ(data->source_width_round… in calculate_bandwidth()
1452 … data->displays_with_same_mode[i] = bw_add(data->displays_with_same_mode[i], bw_int_to_fixed(1)); in calculate_bandwidth()
1460 …o_int(bw_max2(bw_int_to_fixed(number_of_aligned_displays_with_no_margin), data->displays_with_same… in calculate_bandwidth()
1466 …data->min_dram_speed_change_margin[high][s_high], bw_int_to_fixed(0)) && bw_ltn(data->min_dram_spe… in calculate_bandwidth()
1467 data->nbp_state_change_enable = bw_def_yes; in calculate_bandwidth()
1470 data->nbp_state_change_enable = bw_def_no; in calculate_bandwidth()
1484 if (data->enable[i]) { in calculate_bandwidth()
1485 …data->average_bandwidth_no_compression[i] = bw_div(bw_mul(bw_mul(bw_div(bw_mul(data->source_width_… in calculate_bandwidth()
1486 …data->average_bandwidth[i] = bw_div(data->average_bandwidth_no_compression[i], data->compression_r… in calculate_bandwidth()
1489 data->total_average_bandwidth_no_compression = bw_int_to_fixed(0); in calculate_bandwidth()
1490 data->total_average_bandwidth = bw_int_to_fixed(0); in calculate_bandwidth()
1492 if (data->enable[i]) { in calculate_bandwidth()
1493 …data->total_average_bandwidth_no_compression = bw_add(data->total_average_bandwidth_no_compression… in calculate_bandwidth()
1494 … data->total_average_bandwidth = bw_add(data->total_average_bandwidth, data->average_bandwidth[i]); in calculate_bandwidth()
1499 …ment only makes sense if the dmif and mcifwr data total page close-open time is less than the time… in calculate_bandwidth()
1502 data->min_cursor_memory_interface_buffer_size_in_time = bw_int_to_fixed(9999); in calculate_bandwidth()
1503 /* number of cursor lines stored in the cursor data return buffer*/ in calculate_bandwidth()
1506 if (data->enable[i]) { in calculate_bandwidth()
1507 if (bw_mtn(data->cursor_width_pixels[i], bw_int_to_fixed(0))) { in calculate_bandwidth()
1508 /*compute number of cursor lines stored in data return buffer*/ in calculate_bandwidth()
1509 if (bw_leq(data->cursor_width_pixels[i], bw_int_to_fixed(64)) && dceip->large_cursor == 1) { in calculate_bandwidth()
1515 …data->min_cursor_memory_interface_buffer_size_in_time = bw_min2(data->min_cursor_memory_interface_… in calculate_bandwidth()
1521 data->chunk_request_delay = 0; in calculate_bandwidth()
1524 …data->chunk_request_delay = bw_fixed_to_int(bw_div(bw_int_to_fixed(512), vbios->high_voltage_max_d… in calculate_bandwidth()
1526 …data->min_read_buffer_size_in_time = bw_min2(data->min_cursor_memory_interface_buffer_size_in_time… in calculate_bandwidth()
1527 …data->display_reads_time_for_data_transfer = bw_sub(bw_sub(data->min_read_buffer_size_in_time, dat… in calculate_bandwidth()
1528 …data->display_writes_time_for_data_transfer = bw_sub(data->min_mcifwr_size_in_time, vbios->mcifwrm… in calculate_bandwidth()
1529 …data->dmif_required_dram_bandwidth = bw_div(data->total_display_reads_required_dram_access_data, d… in calculate_bandwidth()
1530 …data->mcifwr_required_dram_bandwidth = bw_div(data->total_display_writes_required_dram_access_data… in calculate_bandwidth()
1531 …data->required_dmifmc_urgent_latency_for_page_close_open = bw_div((bw_sub(data->min_read_buffer_si… in calculate_bandwidth()
1532 …data->required_mcifmcwr_urgent_latency = bw_sub(data->min_mcifwr_size_in_time, data->mcifwr_total_… in calculate_bandwidth()
1533 …if (bw_mtn(data->scatter_gather_total_pte_requests, dceip->maximum_total_outstanding_pte_requests_… in calculate_bandwidth()
1534 data->required_dram_bandwidth_gbyte_per_second = bw_int_to_fixed(9999); in calculate_bandwidth()
1536 data->y_clk_level = high; in calculate_bandwidth()
1537 …data->dram_bandwidth = bw_mul(bw_div(bw_mul(bw_mul(data->dram_efficiency, yclk[high]), bw_int_to_f… in calculate_bandwidth()
1539 …>dmifmc_urgent_latency, data->required_dmifmc_urgent_latency_for_page_close_open) || bw_mtn(vbios-… in calculate_bandwidth()
1540 data->required_dram_bandwidth_gbyte_per_second = bw_int_to_fixed(9999); in calculate_bandwidth()
1542 data->y_clk_level = high; in calculate_bandwidth()
1543 …data->dram_bandwidth = bw_mul(bw_div(bw_mul(bw_mul(data->dram_efficiency, yclk[high]), bw_int_to_f… in calculate_bandwidth()
1546 …data->required_dram_bandwidth_gbyte_per_second = bw_div(bw_max2(data->dmif_required_dram_bandwidth… in calculate_bandwidth()
1547 …if (bw_ltn(data->total_average_bandwidth_no_compression, bw_mul(bw_mul(bw_mul(bw_frc_to_fixed(dcei… in calculate_bandwidth()
1548 …data->required_dram_bandwidth_gbyte_per_second, bw_int_to_fixed(1000)), bw_mul(bw_div(bw_mul(bw_mu… in calculate_bandwidth()
1550 data->y_clk_level = low; in calculate_bandwidth()
1551 …data->dram_bandwidth = bw_mul(bw_div(bw_mul(bw_mul(data->dram_efficiency, yclk[low]), bw_int_to_fi… in calculate_bandwidth()
1553 …else if (bw_ltn(data->total_average_bandwidth_no_compression, bw_mul(bw_mul(bw_mul(bw_frc_to_fixed… in calculate_bandwidth()
1554 …data->required_dram_bandwidth_gbyte_per_second, bw_int_to_fixed(1000)), bw_mul(bw_div(bw_mul(bw_mu… in calculate_bandwidth()
1556 data->y_clk_level = mid; in calculate_bandwidth()
1557 …data->dram_bandwidth = bw_mul(bw_div(bw_mul(bw_mul(data->dram_efficiency, yclk[mid]), bw_int_to_fi… in calculate_bandwidth()
1559 …else if (bw_ltn(data->total_average_bandwidth_no_compression, bw_mul(bw_mul(bw_mul(bw_frc_to_fixed… in calculate_bandwidth()
1560 …data->required_dram_bandwidth_gbyte_per_second, bw_int_to_fixed(1000)), bw_mul(bw_div(bw_mul(bw_mu… in calculate_bandwidth()
1562 data->y_clk_level = high; in calculate_bandwidth()
1563 …data->dram_bandwidth = bw_mul(bw_div(bw_mul(bw_mul(data->dram_efficiency, yclk[high]), bw_int_to_f… in calculate_bandwidth()
1567 data->y_clk_level = high; in calculate_bandwidth()
1568 …data->dram_bandwidth = bw_mul(bw_div(bw_mul(bw_mul(data->dram_efficiency, yclk[high]), bw_int_to_f… in calculate_bandwidth()
1574 …the one that allows the transfer of all pipe's data buffer size through the sclk bus in the time f… in calculate_bandwidth()
1576 …data->dmif_required_sclk = bw_div(bw_div(data->total_display_reads_required_data, data->display_re… in calculate_bandwidth()
1577 …data->mcifwr_required_sclk = bw_div(bw_div(data->total_display_writes_required_data, data->display… in calculate_bandwidth()
1578 …if (bw_mtn(data->scatter_gather_total_pte_requests, dceip->maximum_total_outstanding_pte_requests_… in calculate_bandwidth()
1579 data->required_sclk = bw_int_to_fixed(9999); in calculate_bandwidth()
1581 data->sclk_level = s_high; in calculate_bandwidth()
1583 …>dmifmc_urgent_latency, data->required_dmifmc_urgent_latency_for_page_close_open) || bw_mtn(vbios-… in calculate_bandwidth()
1584 data->required_sclk = bw_int_to_fixed(9999); in calculate_bandwidth()
1586 data->sclk_level = s_high; in calculate_bandwidth()
1589 data->required_sclk = bw_max2(data->dmif_required_sclk, data->mcifwr_required_sclk); in calculate_bandwidth()
1590 …if (bw_ltn(data->total_average_bandwidth_no_compression, bw_mul(bw_mul(bw_frc_to_fixed(dceip->max_… in calculate_bandwidth()
1591 …data->required_sclk, sclk[s_low]) && (data->cpup_state_change_enable == bw_def_no || (bw_mtn(data-… in calculate_bandwidth()
1593 data->sclk_level = s_low; in calculate_bandwidth()
1594 data->required_sclk = vbios->low_sclk; in calculate_bandwidth()
1596 …else if (bw_ltn(data->total_average_bandwidth_no_compression, bw_mul(bw_mul(bw_frc_to_fixed(dceip-… in calculate_bandwidth()
1597 …data->required_sclk, sclk[s_mid1]) && (data->cpup_state_change_enable == bw_def_no || (bw_mtn(data… in calculate_bandwidth()
1599 data->sclk_level = s_mid1; in calculate_bandwidth()
1600 data->required_sclk = vbios->mid1_sclk; in calculate_bandwidth()
1602 …else if (bw_ltn(data->total_average_bandwidth_no_compression, bw_mul(bw_mul(bw_frc_to_fixed(dceip-… in calculate_bandwidth()
1603 …data->required_sclk, sclk[s_mid2]) && (data->cpup_state_change_enable == bw_def_no || (bw_mtn(data… in calculate_bandwidth()
1605 data->sclk_level = s_mid2; in calculate_bandwidth()
1606 data->required_sclk = vbios->mid2_sclk; in calculate_bandwidth()
1608 …else if (bw_ltn(data->total_average_bandwidth_no_compression, bw_mul(bw_mul(bw_frc_to_fixed(dceip-… in calculate_bandwidth()
1609 …data->required_sclk, sclk[s_mid3]) && (data->cpup_state_change_enable == bw_def_no || (bw_mtn(data… in calculate_bandwidth()
1611 data->sclk_level = s_mid3; in calculate_bandwidth()
1612 data->required_sclk = vbios->mid3_sclk; in calculate_bandwidth()
1614 …else if (bw_ltn(data->total_average_bandwidth_no_compression, bw_mul(bw_mul(bw_frc_to_fixed(dceip-… in calculate_bandwidth()
1615 …data->required_sclk, sclk[s_mid4]) && (data->cpup_state_change_enable == bw_def_no || (bw_mtn(data… in calculate_bandwidth()
1617 data->sclk_level = s_mid4; in calculate_bandwidth()
1618 data->required_sclk = vbios->mid4_sclk; in calculate_bandwidth()
1620 …else if (bw_ltn(data->total_average_bandwidth_no_compression, bw_mul(bw_mul(bw_frc_to_fixed(dceip-… in calculate_bandwidth()
1621 …data->required_sclk, sclk[s_mid5]) && (data->cpup_state_change_enable == bw_def_no || (bw_mtn(data… in calculate_bandwidth()
1623 data->sclk_level = s_mid5; in calculate_bandwidth()
1624 data->required_sclk = vbios->mid5_sclk; in calculate_bandwidth()
1626 …else if (bw_ltn(data->total_average_bandwidth_no_compression, bw_mul(bw_mul(bw_frc_to_fixed(dceip-… in calculate_bandwidth()
1627 …data->required_sclk, sclk[s_mid6]) && (data->cpup_state_change_enable == bw_def_no || (bw_mtn(data… in calculate_bandwidth()
1629 data->sclk_level = s_mid6; in calculate_bandwidth()
1630 data->required_sclk = vbios->mid6_sclk; in calculate_bandwidth()
1632 …else if (bw_ltn(data->total_average_bandwidth_no_compression, bw_mul(bw_mul(bw_frc_to_fixed(dceip-… in calculate_bandwidth()
1633 && bw_ltn(data->required_sclk, sclk[s_high])) { in calculate_bandwidth()
1635 data->sclk_level = s_high; in calculate_bandwidth()
1636 data->required_sclk = vbios->high_sclk; in calculate_bandwidth()
1638 …else if (bw_meq(data->total_average_bandwidth_no_compression, bw_mul(bw_mul(bw_frc_to_fixed(dceip-… in calculate_bandwidth()
1639 && bw_ltn(data->required_sclk, sclk[s_high])) { in calculate_bandwidth()
1641 data->sclk_level = s_high; in calculate_bandwidth()
1642 data->required_sclk = vbios->high_sclk; in calculate_bandwidth()
1646 data->sclk_level = s_high; in calculate_bandwidth()
1664 …data->downspread_factor = bw_add(bw_int_to_fixed(1), bw_div(vbios->down_spread_percentage, bw_int_… in calculate_bandwidth()
1666 if (data->enable[i]) { in calculate_bandwidth()
1668 switch (data->lb_bpc[i]) { in calculate_bandwidth()
1670 data->v_scaler_efficiency = dceip->graphics_vscaler_efficiency6_bit_per_component; in calculate_bandwidth()
1673 data->v_scaler_efficiency = dceip->graphics_vscaler_efficiency8_bit_per_component; in calculate_bandwidth()
1676 data->v_scaler_efficiency = dceip->graphics_vscaler_efficiency10_bit_per_component; in calculate_bandwidth()
1679 data->v_scaler_efficiency = dceip->graphics_vscaler_efficiency12_bit_per_component; in calculate_bandwidth()
1682 if (data->use_alpha[i] == 1) { in calculate_bandwidth()
1683 … data->v_scaler_efficiency = bw_min2(data->v_scaler_efficiency, dceip->alpha_vscaler_efficiency); in calculate_bandwidth()
1687 switch (data->lb_bpc[i]) { in calculate_bandwidth()
1689 data->v_scaler_efficiency = dceip->underlay_vscaler_efficiency6_bit_per_component; in calculate_bandwidth()
1692 data->v_scaler_efficiency = dceip->underlay_vscaler_efficiency8_bit_per_component; in calculate_bandwidth()
1695 data->v_scaler_efficiency = dceip->underlay_vscaler_efficiency10_bit_per_component; in calculate_bandwidth()
1698 data->v_scaler_efficiency = dceip->underlay_vscaler_efficiency12_bit_per_component; in calculate_bandwidth()
1702 if (dceip->pre_downscaler_enabled && bw_mtn(data->hsr[i], bw_int_to_fixed(1))) { in calculate_bandwidth()
1703 …data->scaler_limits_factor = bw_max2(bw_div(data->v_taps[i], data->v_scaler_efficiency), bw_div(da… in calculate_bandwidth()
1706 …data->scaler_limits_factor = bw_max3(bw_int_to_fixed(1), bw_ceil2(bw_div(data->h_taps[i], bw_int_t… in calculate_bandwidth()
1708 …data->display_pipe_pixel_throughput = bw_div(bw_div(bw_mul(bw_max2(data->lb_lines_in_per_line_out_… in calculate_bandwidth()
1709 …data->dispclk_required_without_ramping[i] = bw_mul(data->downspread_factor, bw_max2(bw_mul(data->p… in calculate_bandwidth()
1710 …data->dispclk_required_with_ramping[i] = bw_mul(dceip->dispclk_ramping_factor, bw_max2(bw_mul(data… in calculate_bandwidth()
1713 data->total_dispclk_required_with_ramping = bw_int_to_fixed(0); in calculate_bandwidth()
1714 data->total_dispclk_required_without_ramping = bw_int_to_fixed(0); in calculate_bandwidth()
1716 if (data->enable[i]) { in calculate_bandwidth()
1717 if (bw_ltn(data->total_dispclk_required_with_ramping, data->dispclk_required_with_ramping[i])) { in calculate_bandwidth()
1718 data->total_dispclk_required_with_ramping = data->dispclk_required_with_ramping[i]; in calculate_bandwidth()
1720 …if (bw_ltn(data->total_dispclk_required_without_ramping, data->dispclk_required_without_ramping[i]… in calculate_bandwidth()
1721 data->total_dispclk_required_without_ramping = data->dispclk_required_without_ramping[i]; in calculate_bandwidth()
1725 data->total_read_request_bandwidth = bw_int_to_fixed(0); in calculate_bandwidth()
1726 data->total_write_request_bandwidth = bw_int_to_fixed(0); in calculate_bandwidth()
1728 if (data->enable[i]) { in calculate_bandwidth()
1730 …data->total_read_request_bandwidth = bw_add(data->total_read_request_bandwidth, data->request_band… in calculate_bandwidth()
1733 …data->total_write_request_bandwidth = bw_add(data->total_write_request_bandwidth, data->request_ba… in calculate_bandwidth()
1737 …data->dispclk_required_for_total_read_request_bandwidth = bw_div(bw_mul(data->total_read_request_b… in calculate_bandwidth()
1738 …data->total_dispclk_required_with_ramping_with_request_bandwidth = bw_max2(data->total_dispclk_req… in calculate_bandwidth()
1739 …data->total_dispclk_required_without_ramping_with_request_bandwidth = bw_max2(data->total_dispclk_… in calculate_bandwidth()
1740 if (data->cpuc_state_change_enable == bw_def_yes) { in calculate_bandwidth()
1741 …data->total_dispclk_required_with_ramping_with_request_bandwidth = bw_max3(data->total_dispclk_req… in calculate_bandwidth()
1742 …data->total_dispclk_required_without_ramping_with_request_bandwidth = bw_max3(data->total_dispclk_… in calculate_bandwidth()
1744 if (data->cpup_state_change_enable == bw_def_yes) { in calculate_bandwidth()
1745 …data->total_dispclk_required_with_ramping_with_request_bandwidth = bw_max2(data->total_dispclk_req… in calculate_bandwidth()
1746 …data->total_dispclk_required_without_ramping_with_request_bandwidth = bw_max2(data->total_dispclk_… in calculate_bandwidth()
1748 if (data->nbp_state_change_enable == bw_def_yes && data->increase_voltage_to_support_mclk_switch) { in calculate_bandwidth()
1749 …data->total_dispclk_required_with_ramping_with_request_bandwidth = bw_max2(data->total_dispclk_req… in calculate_bandwidth()
1750 …data->total_dispclk_required_without_ramping_with_request_bandwidth = bw_max2(data->total_dispclk_… in calculate_bandwidth()
1752 …if (bw_ltn(data->total_dispclk_required_with_ramping_with_request_bandwidth, vbios->high_voltage_m… in calculate_bandwidth()
1753 data->dispclk = data->total_dispclk_required_with_ramping_with_request_bandwidth; in calculate_bandwidth()
1755 …else if (bw_ltn(data->total_dispclk_required_without_ramping_with_request_bandwidth, vbios->high_v… in calculate_bandwidth()
1756 data->dispclk = vbios->high_voltage_max_dispclk; in calculate_bandwidth()
1759 data->dispclk = data->total_dispclk_required_without_ramping_with_request_bandwidth; in calculate_bandwidth()
1772 …d(yclk_message), vbios->low_yclk) && sclk_message == bw_def_low && bw_ltn(data->dispclk, vbios->lo… in calculate_bandwidth()
1775 …) && (sclk_message == bw_def_low || sclk_message == bw_def_mid) && bw_ltn(data->dispclk, vbios->mi… in calculate_bandwidth()
1778 …w || sclk_message == bw_def_mid || sclk_message == bw_def_high) && bw_leq(data->dispclk, vbios->hi… in calculate_bandwidth()
1779 if ((data->nbp_state_change_enable == bw_def_no && nbp_state_change_enable_blank == bw_def_no)) { in calculate_bandwidth()
1790 data->max_phyclk = vbios->low_voltage_max_phyclk; in calculate_bandwidth()
1793 data->max_phyclk = vbios->mid_voltage_max_phyclk; in calculate_bandwidth()
1796 data->max_phyclk = vbios->high_voltage_max_phyclk; in calculate_bandwidth()
1799 data->blackout_recovery_time = bw_int_to_fixed(0); in calculate_bandwidth()
1801 …if (data->enable[k] && bw_mtn(vbios->blackout_duration, bw_int_to_fixed(0)) && data->cpup_state_ch… in calculate_bandwidth()
1803 …data->blackout_recovery_time = bw_max2(data->blackout_recovery_time, bw_add(bw_mul(bw_int_to_fixed… in calculate_bandwidth()
1804 …data->adjusted_data_buffer_size[k], bw_mul(bw_div(bw_mul(data->display_bandwidth[k], data->useful_… in calculate_bandwidth()
1805 …data->blackout_recovery_time = bw_max2(data->blackout_recovery_time, bw_div((bw_add(bw_mul(bw_div(… in calculate_bandwidth()
1809 …data->blackout_recovery_time = bw_max2(data->blackout_recovery_time, bw_add(bw_mul(bw_int_to_fixed… in calculate_bandwidth()
1810 …data->adjusted_data_buffer_size[k], bw_mul(bw_div(bw_mul(data->display_bandwidth[k], data->useful_… in calculate_bandwidth()
1811 …data->blackout_recovery_time = bw_max2(data->blackout_recovery_time, bw_div((bw_add(bw_mul(bw_div(… in calculate_bandwidth()
1817 …/*during self-refresh, sclk can be reduced to dispclk divided by the minimum pixels in the data fi… in calculate_bandwidth()
1818 …/*the data fifo entry is 16 pixels for the writeback, 64 bytes/bytes_per_pixel for the graphics, 1… in calculate_bandwidth()
1820 …/*in parallel mode (underlay pipe), the data read from the dmifv buffer is variable and based on t… in calculate_bandwidth()
1821 /*in orthogonal mode (underlay pipe), the data read from the dmifv buffer is fixed at 16 bytes.*/ in calculate_bandwidth()
1823 if (data->enable[i]) { in calculate_bandwidth()
1825 data->pixels_per_data_fifo_entry[i] = bw_int_to_fixed(16); in calculate_bandwidth()
1828 …data->pixels_per_data_fifo_entry[i] = bw_div(bw_int_to_fixed(64), bw_int_to_fixed(data->bytes_per_… in calculate_bandwidth()
1830 else if (data->orthogonal_rotation[i] == 0) { in calculate_bandwidth()
1831 data->pixels_per_data_fifo_entry[i] = bw_int_to_fixed(16); in calculate_bandwidth()
1834 …data->pixels_per_data_fifo_entry[i] = bw_div(bw_int_to_fixed(16), bw_int_to_fixed(data->bytes_per_… in calculate_bandwidth()
1838 data->min_pixels_per_data_fifo_entry = bw_int_to_fixed(9999); in calculate_bandwidth()
1840 if (data->enable[i]) { in calculate_bandwidth()
1841 if (bw_mtn(data->min_pixels_per_data_fifo_entry, data->pixels_per_data_fifo_entry[i])) { in calculate_bandwidth()
1842 data->min_pixels_per_data_fifo_entry = data->pixels_per_data_fifo_entry[i]; in calculate_bandwidth()
1846 …data->sclk_deep_sleep = bw_max2(bw_div(bw_mul(data->dispclk, bw_frc_to_fixed(115, 100)), data->min… in calculate_bandwidth()
1848 … transfer time, the urgent trip times to get data for the first pixel, and the urgent trip times t… in calculate_bandwidth()
1849 … of the data burst time plus the pixel transfer time, the data burst times to get data for the fir… in calculate_bandwidth()
1850 … of the data burst time plus the pixel transfer time, the data burst times to get data for the fir… in calculate_bandwidth()
1853 data->chunk_request_time = bw_int_to_fixed(0); in calculate_bandwidth()
1854 data->cursor_request_time = bw_int_to_fixed(0); in calculate_bandwidth()
1857 if (data->enable[i]) { in calculate_bandwidth()
1858 …data->chunk_request_time = bw_add(data->chunk_request_time, (bw_div((bw_div(bw_int_to_fixed(pixels… in calculate_bandwidth()
1861 /*compute total time to request cursor data*/ in calculate_bandwidth()
1862 …data->cursor_request_time = (bw_div(data->cursor_total_data, (bw_mul(bw_int_to_fixed(32), sclk[dat… in calculate_bandwidth()
1864 if (data->enable[i]) { in calculate_bandwidth()
1865 …data->line_source_pixels_transfer_time = bw_max2(bw_div(bw_div(data->src_pixels_for_first_output_p… in calculate_bandwidth()
1867 …data->urgent_watermark[i] = bw_add(bw_add(bw_add(bw_add(bw_add(data->total_dmifmc_urgent_latency, … in calculate_bandwidth()
1868 …data->stutter_exit_watermark[i] = bw_add(bw_sub(vbios->stutter_self_refresh_exit_latency, data->to… in calculate_bandwidth()
1869 …data->stutter_entry_watermark[i] = bw_add(bw_sub(bw_add(vbios->stutter_self_refresh_exit_latency, … in calculate_bandwidth()
1871 if (data->display_pstate_change_enable[i] == 1) { in calculate_bandwidth()
1872 …data->nbp_state_change_watermark[i] = bw_add(bw_add(vbios->nbp_state_change_latency, data->dmif_bu… in calculate_bandwidth()
1876 data->nbp_state_change_watermark[i] = bw_int_to_fixed(131000); in calculate_bandwidth()
1880 …data->urgent_watermark[i] = bw_add(bw_add(bw_add(bw_add(bw_add(vbios->mcifwrmc_urgent_latency, dat… in calculate_bandwidth()
1881 data->stutter_exit_watermark[i] = bw_int_to_fixed(0); in calculate_bandwidth()
1882 data->stutter_entry_watermark[i] = bw_int_to_fixed(0); in calculate_bandwidth()
1883 if (data->display_pstate_change_enable[i] == 1) { in calculate_bandwidth()
1884 …data->nbp_state_change_watermark[i] = bw_add(bw_add(vbios->nbp_state_change_latency, data->mcifwr_… in calculate_bandwidth()
1888 data->nbp_state_change_watermark[i] = bw_int_to_fixed(131000); in calculate_bandwidth()
1896 data->stutter_mode_enable = data->cpuc_state_change_enable; in calculate_bandwidth()
1897 if (data->number_of_displays > 1) { in calculate_bandwidth()
1899 if (data->enable[i]) { in calculate_bandwidth()
1900 …if ((bw_mtn(data->stutter_exit_watermark[i], data->minimum_latency_hiding[i]) || bw_mtn(data->stut… in calculate_bandwidth()
1901 data->stutter_mode_enable = bw_def_no; in calculate_bandwidth()
1920 …/*is the ratio between the ideal dram access time (which is the data buffer size in memory divided… in calculate_bandwidth()
1921 …data->dmifdram_access_efficiency = bw_min2(bw_div(bw_div(data->total_display_reads_required_dram_a… in calculate_bandwidth()
1922 if (bw_mtn(data->total_display_writes_required_dram_access_data, bw_int_to_fixed(0))) { in calculate_bandwidth()
1923 …data->mcifwrdram_access_efficiency = bw_min2(bw_div(bw_div(data->total_display_writes_required_dra… in calculate_bandwidth()
1926 data->mcifwrdram_access_efficiency = bw_int_to_fixed(0); in calculate_bandwidth()
1930 …/*the frame-average stutter cycle used is the minimum for all pipes of the frame-average data buff… in calculate_bandwidth()
1933 /*the burst time is the data needed during the stutter cycle divided by the available bandwidth*/ in calculate_bandwidth()
1934 /*compute the time read all the data from the dmif buffer to the lb (dram refresh period)*/ in calculate_bandwidth()
1936 if (data->enable[i]) { in calculate_bandwidth()
1937 …data->stutter_refresh_duration[i] = bw_sub(bw_mul(bw_div(bw_div(bw_mul(bw_div(bw_div(data->adjuste… in calculate_bandwidth()
1938 …data->stutter_dmif_buffer_size[i] = bw_div(bw_mul(bw_mul(bw_div(bw_mul(bw_mul(data->stutter_refres… in calculate_bandwidth()
1941 data->min_stutter_refresh_duration = bw_int_to_fixed(9999); in calculate_bandwidth()
1942 data->total_stutter_dmif_buffer_size = 0; in calculate_bandwidth()
1943 data->total_bytes_requested = 0; in calculate_bandwidth()
1944 data->min_stutter_dmif_buffer_size = 9999; in calculate_bandwidth()
1946 if (data->enable[i]) { in calculate_bandwidth()
1947 if (bw_mtn(data->min_stutter_refresh_duration, data->stutter_refresh_duration[i])) { in calculate_bandwidth()
1948 data->min_stutter_refresh_duration = data->stutter_refresh_duration[i]; in calculate_bandwidth()
1949 …data->total_bytes_requested = bw_fixed_to_int(bw_add(bw_int_to_fixed(data->total_bytes_requested),… in calculate_bandwidth()
1950 data->min_stutter_dmif_buffer_size = bw_fixed_to_int(data->stutter_dmif_buffer_size[i]); in calculate_bandwidth()
1952 …data->total_stutter_dmif_buffer_size = bw_fixed_to_int(bw_add(data->stutter_dmif_buffer_size[i], b… in calculate_bandwidth()
1955 …data->stutter_burst_time = bw_div(bw_int_to_fixed(data->total_stutter_dmif_buffer_size), bw_mul(sc… in calculate_bandwidth()
1956 data->num_stutter_bursts = data->total_bytes_requested / data->min_stutter_dmif_buffer_size; in calculate_bandwidth()
1957 …data->total_stutter_cycle_duration = bw_add(bw_add(data->min_stutter_refresh_duration, vbios->stut… in calculate_bandwidth()
1958 data->time_in_self_refresh = data->min_stutter_refresh_duration; in calculate_bandwidth()
1959 if (data->d1_display_write_back_dwb_enable == 1) { in calculate_bandwidth()
1960 data->stutter_efficiency = bw_int_to_fixed(0); in calculate_bandwidth()
1962 else if (bw_ltn(data->time_in_self_refresh, bw_int_to_fixed(0))) { in calculate_bandwidth()
1963 data->stutter_efficiency = bw_int_to_fixed(0); in calculate_bandwidth()
1967 …data->stutter_efficiency = bw_max2(bw_int_to_fixed(0), bw_mul((bw_sub(bw_int_to_fixed(1), (bw_div(… in calculate_bandwidth()
1972 data->worst_number_of_trips_to_memory = bw_int_to_fixed(1); in calculate_bandwidth()
1974 if (data->enable[i] && data->scatter_gather_enable_for_pipe[i] == 1) { in calculate_bandwidth()
1975 …data->number_of_trips_to_memory_for_getting_apte_row[i] = bw_ceil2(bw_div(data->scatter_gather_pte… in calculate_bandwidth()
1976 …if (bw_ltn(data->worst_number_of_trips_to_memory, data->number_of_trips_to_memory_for_getting_apte… in calculate_bandwidth()
1977 data->worst_number_of_trips_to_memory = data->number_of_trips_to_memory_for_getting_apte_row[i]; in calculate_bandwidth()
1981 …data->immediate_flip_time = bw_mul(data->worst_number_of_trips_to_memory, data->total_dmifmc_urgen… in calculate_bandwidth()
1984 …data->latency_for_non_dmif_clients = bw_add(data->total_dmifmc_urgent_latency, data->dmif_burst_ti… in calculate_bandwidth()
1985 if (data->d1_display_write_back_dwb_enable == 1) { in calculate_bandwidth()
1986 …data->latency_for_non_mcifwr_clients = bw_add(vbios->mcifwrmc_urgent_latency, dceip->mcifwr_all_su… in calculate_bandwidth()
1989 data->latency_for_non_mcifwr_clients = bw_int_to_fixed(0); in calculate_bandwidth()
1992 …data->dmifmc_urgent_latency_supported_in_high_sclk_and_yclk = bw_div((bw_sub(data->min_read_buffer… in calculate_bandwidth()
1995 data->v_blank_nbp_state_dram_speed_change_latency_supported = bw_int_to_fixed(99999); in calculate_bandwidth()
1996 data->nbp_state_dram_speed_change_latency_supported = bw_int_to_fixed(99999); in calculate_bandwidth()
1998 if (data->enable[i]) { in calculate_bandwidth()
1999 …data->nbp_state_dram_speed_change_latency_supported = bw_min2(data->nbp_state_dram_speed_change_la… in calculate_bandwidth()
2000 …data->v_blank_nbp_state_dram_speed_change_latency_supported = bw_min2(data->v_blank_nbp_state_dram… in calculate_bandwidth()
2005 …data->display_reads_time_for_data_transfer_and_urgent_latency = bw_sub(data->min_read_buffer_size_… in calculate_bandwidth()
2006 …if (pipe_check == bw_def_ok && (bw_mtn(data->display_reads_time_for_data_transfer_and_urgent_laten… in calculate_bandwidth()
2007 …data->dmif_required_sclk_for_urgent_latency[i] = bw_div(bw_div(data->total_display_reads_required_… in calculate_bandwidth()
2010 data->dmif_required_sclk_for_urgent_latency[i] = bw_int_to_fixed(bw_def_na); in calculate_bandwidth()
2015 data->output_bpphdmi[k] = bw_def_na; in calculate_bandwidth()
2016 data->output_bppdp4_lane_hbr[k] = bw_def_na; in calculate_bandwidth()
2017 data->output_bppdp4_lane_hbr2[k] = bw_def_na; in calculate_bandwidth()
2018 data->output_bppdp4_lane_hbr3[k] = bw_def_na; in calculate_bandwidth()
2019 if (data->enable[k]) { in calculate_bandwidth()
2020 …data->output_bpphdmi[k] = bw_fixed_to_int(bw_mul(bw_div(bw_min2(bw_int_to_fixed(600), data->max_ph… in calculate_bandwidth()
2021 if (bw_meq(data->max_phyclk, bw_int_to_fixed(270))) { in calculate_bandwidth()
2022 …data->output_bppdp4_lane_hbr[k] = bw_fixed_to_int(bw_mul(bw_div(bw_mul(bw_int_to_fixed(270), bw_in… in calculate_bandwidth()
2024 if (bw_meq(data->max_phyclk, bw_int_to_fixed(540))) { in calculate_bandwidth()
2025 …data->output_bppdp4_lane_hbr2[k] = bw_fixed_to_int(bw_mul(bw_div(bw_mul(bw_int_to_fixed(540), bw_i… in calculate_bandwidth()
2027 if (bw_meq(data->max_phyclk, bw_int_to_fixed(810))) { in calculate_bandwidth()
2028 …data->output_bppdp4_lane_hbr3[k] = bw_fixed_to_int(bw_mul(bw_div(bw_mul(bw_int_to_fixed(810), bw_i… in calculate_bandwidth()
2788 const struct pipe_ctx pipe[], int pipe_count, struct bw_calcs_data *data) in populate_initial_data() argument
2793 data->underlay_surface_type = bw_def_420; in populate_initial_data()
2794 data->panning_and_bezel_adjustment = bw_def_none; in populate_initial_data()
2795 data->graphics_lb_bpc = 10; in populate_initial_data()
2796 data->underlay_lb_bpc = 8; in populate_initial_data()
2797 data->underlay_tiling_mode = bw_def_tiled; in populate_initial_data()
2798 data->graphics_tiling_mode = bw_def_tiled; in populate_initial_data()
2799 data->underlay_micro_tile_mode = bw_def_display_micro_tiling; in populate_initial_data()
2800 data->graphics_micro_tile_mode = bw_def_display_micro_tiling; in populate_initial_data()
2801 data->increase_voltage_to_support_mclk_switch = true; in populate_initial_data()
2812 data->d0_underlay_mode = bw_def_underlay_only; in populate_initial_data()
2814 data->d0_underlay_mode = bw_def_blend; in populate_initial_data()
2817 data->d1_underlay_mode = bw_def_underlay_only; in populate_initial_data()
2819 data->d1_underlay_mode = bw_def_blend; in populate_initial_data()
2822 data->fbc_en[num_displays + 4] = false; in populate_initial_data()
2823 data->lpt_en[num_displays + 4] = false; in populate_initial_data()
2824 data->h_total[num_displays + 4] = bw_int_to_fixed(pipe[i].stream->timing.h_total); in populate_initial_data()
2825 data->v_total[num_displays + 4] = bw_int_to_fixed(pipe[i].stream->timing.v_total); in populate_initial_data()
2826 data->pixel_rate[num_displays + 4] = bw_frc_to_fixed(pipe[i].stream->timing.pix_clk_100hz, 10000); in populate_initial_data()
2827 data->src_width[num_displays + 4] = bw_int_to_fixed(pipe[i].plane_res.scl_data.viewport.width); in populate_initial_data()
2828 data->pitch_in_pixels[num_displays + 4] = data->src_width[num_displays + 4]; in populate_initial_data()
2829 data->src_height[num_displays + 4] = bw_int_to_fixed(pipe[i].plane_res.scl_data.viewport.height); in populate_initial_data()
2830 data->h_taps[num_displays + 4] = bw_int_to_fixed(pipe[i].plane_res.scl_data.taps.h_taps); in populate_initial_data()
2831 data->v_taps[num_displays + 4] = bw_int_to_fixed(pipe[i].plane_res.scl_data.taps.v_taps); in populate_initial_data()
2832 …data->h_scale_ratio[num_displays + 4] = fixed31_32_to_bw_fixed(pipe[i].plane_res.scl_data.ratios.h… in populate_initial_data()
2833 …data->v_scale_ratio[num_displays + 4] = fixed31_32_to_bw_fixed(pipe[i].plane_res.scl_data.ratios.v… in populate_initial_data()
2836 data->rotation_angle[num_displays + 4] = bw_int_to_fixed(0); in populate_initial_data()
2839 data->rotation_angle[num_displays + 4] = bw_int_to_fixed(90); in populate_initial_data()
2842 data->rotation_angle[num_displays + 4] = bw_int_to_fixed(180); in populate_initial_data()
2845 data->rotation_angle[num_displays + 4] = bw_int_to_fixed(270); in populate_initial_data()
2854 data->bytes_per_pixel[num_displays + 4] = 2; in populate_initial_data()
2863 data->bytes_per_pixel[num_displays + 4] = 4; in populate_initial_data()
2868 data->bytes_per_pixel[num_displays + 4] = 8; in populate_initial_data()
2871 data->bytes_per_pixel[num_displays + 4] = 4; in populate_initial_data()
2874 data->interlace_mode[num_displays + 4] = false; in populate_initial_data()
2875 data->stereo_mode[num_displays + 4] = bw_def_mono; in populate_initial_data()
2879 data->fbc_en[num_displays * 2 + j] = false; in populate_initial_data()
2880 data->lpt_en[num_displays * 2 + j] = false; in populate_initial_data()
2882 …data->src_height[num_displays * 2 + j] = bw_int_to_fixed(pipe[i].bottom_pipe->plane_res.scl_data.v… in populate_initial_data()
2883 …data->src_width[num_displays * 2 + j] = bw_int_to_fixed(pipe[i].bottom_pipe->plane_res.scl_data.vi… in populate_initial_data()
2884 data->pitch_in_pixels[num_displays * 2 + j] = bw_int_to_fixed( in populate_initial_data()
2886 …data->h_taps[num_displays * 2 + j] = bw_int_to_fixed(pipe[i].bottom_pipe->plane_res.scl_data.taps.… in populate_initial_data()
2887 …data->v_taps[num_displays * 2 + j] = bw_int_to_fixed(pipe[i].bottom_pipe->plane_res.scl_data.taps.… in populate_initial_data()
2888 data->h_scale_ratio[num_displays * 2 + j] = fixed31_32_to_bw_fixed( in populate_initial_data()
2890 data->v_scale_ratio[num_displays * 2 + j] = fixed31_32_to_bw_fixed( in populate_initial_data()
2894 data->rotation_angle[num_displays * 2 + j] = bw_int_to_fixed(0); in populate_initial_data()
2897 data->rotation_angle[num_displays * 2 + j] = bw_int_to_fixed(90); in populate_initial_data()
2900 data->rotation_angle[num_displays * 2 + j] = bw_int_to_fixed(180); in populate_initial_data()
2903 data->rotation_angle[num_displays * 2 + j] = bw_int_to_fixed(270); in populate_initial_data()
2908 data->stereo_mode[num_displays * 2 + j] = bw_def_mono; in populate_initial_data()
2921 data->fbc_en[num_displays + 4] = false; in populate_initial_data()
2922 data->lpt_en[num_displays + 4] = false; in populate_initial_data()
2923 data->h_total[num_displays + 4] = bw_int_to_fixed(pipe[i].stream->timing.h_total); in populate_initial_data()
2924 data->v_total[num_displays + 4] = bw_int_to_fixed(pipe[i].stream->timing.v_total); in populate_initial_data()
2928 data->pixel_rate[num_displays + 4] = bw_frc_to_fixed(pixel_clock_100hz, 10000); in populate_initial_data()
2930 data->src_width[num_displays + 4] = bw_int_to_fixed(pipe[i].plane_res.scl_data.viewport.width); in populate_initial_data()
2931 data->pitch_in_pixels[num_displays + 4] = data->src_width[num_displays + 4]; in populate_initial_data()
2932 data->src_height[num_displays + 4] = bw_int_to_fixed(pipe[i].plane_res.scl_data.viewport.height); in populate_initial_data()
2933 data->h_taps[num_displays + 4] = bw_int_to_fixed(pipe[i].plane_res.scl_data.taps.h_taps); in populate_initial_data()
2934 data->v_taps[num_displays + 4] = bw_int_to_fixed(pipe[i].plane_res.scl_data.taps.v_taps); in populate_initial_data()
2935 …data->h_scale_ratio[num_displays + 4] = fixed31_32_to_bw_fixed(pipe[i].plane_res.scl_data.ratios.h… in populate_initial_data()
2936 …data->v_scale_ratio[num_displays + 4] = fixed31_32_to_bw_fixed(pipe[i].plane_res.scl_data.ratios.v… in populate_initial_data()
2939 data->rotation_angle[num_displays + 4] = bw_int_to_fixed(0); in populate_initial_data()
2942 data->rotation_angle[num_displays + 4] = bw_int_to_fixed(90); in populate_initial_data()
2945 data->rotation_angle[num_displays + 4] = bw_int_to_fixed(180); in populate_initial_data()
2948 data->rotation_angle[num_displays + 4] = bw_int_to_fixed(270); in populate_initial_data()
2958 data->bytes_per_pixel[num_displays + 4] = 2; in populate_initial_data()
2967 data->bytes_per_pixel[num_displays + 4] = 4; in populate_initial_data()
2972 data->bytes_per_pixel[num_displays + 4] = 8; in populate_initial_data()
2975 data->bytes_per_pixel[num_displays + 4] = 4; in populate_initial_data()
2982 data->src_width[num_displays + 4] = bw_int_to_fixed(pipe[i].stream->src.width); in populate_initial_data()
2983 data->pitch_in_pixels[num_displays + 4] = data->src_width[num_displays + 4]; in populate_initial_data()
2984 data->src_height[num_displays + 4] = bw_int_to_fixed(pipe[i].stream->src.height); in populate_initial_data()
2985 …data->h_taps[num_displays + 4] = pipe[i].stream->src.width == pipe[i].stream->dst.width ? bw_int_t… in populate_initial_data()
2986 …data->v_taps[num_displays + 4] = pipe[i].stream->src.height == pipe[i].stream->dst.height ? bw_int… in populate_initial_data()
2987 …data->h_scale_ratio[num_displays + 4] = bw_frc_to_fixed(pipe[i].stream->src.width, pipe[i].stream-… in populate_initial_data()
2988 …data->v_scale_ratio[num_displays + 4] = bw_frc_to_fixed(pipe[i].stream->src.height, pipe[i].stream… in populate_initial_data()
2989 data->rotation_angle[num_displays + 4] = bw_int_to_fixed(0); in populate_initial_data()
2990 data->bytes_per_pixel[num_displays + 4] = 4; in populate_initial_data()
2992 data->src_width[num_displays + 4] = bw_int_to_fixed(pipe[i].stream->timing.h_addressable); in populate_initial_data()
2993 data->pitch_in_pixels[num_displays + 4] = data->src_width[num_displays + 4]; in populate_initial_data()
2994 data->src_height[num_displays + 4] = bw_int_to_fixed(pipe[i].stream->timing.v_addressable); in populate_initial_data()
2995 data->h_taps[num_displays + 4] = bw_int_to_fixed(1); in populate_initial_data()
2996 data->v_taps[num_displays + 4] = bw_int_to_fixed(1); in populate_initial_data()
2997 data->h_scale_ratio[num_displays + 4] = bw_int_to_fixed(1); in populate_initial_data()
2998 data->v_scale_ratio[num_displays + 4] = bw_int_to_fixed(1); in populate_initial_data()
2999 data->rotation_angle[num_displays + 4] = bw_int_to_fixed(0); in populate_initial_data()
3000 data->bytes_per_pixel[num_displays + 4] = 4; in populate_initial_data()
3003 data->interlace_mode[num_displays + 4] = false; in populate_initial_data()
3004 data->stereo_mode[num_displays + 4] = bw_def_mono; in populate_initial_data()
3008 data->number_of_displays = num_displays; in populate_initial_data()
3040 * In this case 'calcs_output' contains data for HW programming
3050 struct bw_calcs_data *data = kzalloc(sizeof(struct bw_calcs_data), in bw_calcs() local
3052 if (!data) in bw_calcs()
3055 populate_initial_data(pipe, pipe_count, data); in bw_calcs()
3062 if (data->number_of_displays != 0) { in bw_calcs()
3079 print_bw_calcs_data(ctx, data); in bw_calcs()
3081 calculate_bandwidth(dceip, vbios, data); in bw_calcs()
3083 yclk_lvl = data->y_clk_level; in bw_calcs()
3086 data->nbp_state_change_enable; in bw_calcs()
3088 data->cpuc_state_change_enable; in bw_calcs()
3090 data->cpup_state_change_enable; in bw_calcs()
3092 data->stutter_mode_enable; in bw_calcs()
3094 bw_fixed_to_int(bw_mul(data->dispclk, in bw_calcs()
3097 bw_fixed_to_int(data->blackout_recovery_time); in bw_calcs()
3099 bw_fixed_to_int(bw_mul(data->required_sclk, in bw_calcs()
3102 bw_fixed_to_int(bw_mul(data->sclk_deep_sleep, in bw_calcs()
3117 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3120 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3123 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3128 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3131 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3135 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3138 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3142 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3148 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3151 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3154 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3158 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3161 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3165 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3168 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3172 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3176 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3179 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3182 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3186 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3189 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3193 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3196 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3200 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3204 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3207 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3210 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3214 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3217 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3221 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3224 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3228 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3235 calculate_bandwidth(dceip, vbios, data); in bw_calcs()
3238 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3241 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3244 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3249 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3252 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3256 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3259 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3263 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3269 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3272 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3275 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3279 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3282 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3286 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3289 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3293 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3297 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3300 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3303 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3307 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3310 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3314 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3317 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3321 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3325 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3328 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3331 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3335 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3338 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3342 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3345 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3349 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3356 calculate_bandwidth(dceip, vbios, data); in bw_calcs()
3359 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3362 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3365 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3369 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3372 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3376 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3379 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3383 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3388 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3391 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3394 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3398 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3401 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3405 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3408 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3412 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3415 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3418 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3421 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3425 bw_fixed_to_int(bw_mul(data->stutter_entry_watermark[0], in bw_calcs()
3428 bw_fixed_to_int(bw_mul(data->stutter_entry_watermark[1], in bw_calcs()
3432 bw_fixed_to_int(bw_mul(data->stutter_entry_watermark[7], in bw_calcs()
3435 bw_fixed_to_int(bw_mul(data->stutter_entry_watermark[8], in bw_calcs()
3439 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3442 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3445 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3448 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3452 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3455 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3459 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3462 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3466 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3487 calculate_bandwidth(dceip, vbios, data); in bw_calcs()
3490 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3493 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3496 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3500 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3503 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3507 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3510 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3514 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3518 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3521 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3524 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3528 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3531 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3535 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3538 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3542 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3546 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3549 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3552 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3556 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3559 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3563 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3566 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3570 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3574 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3577 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3580 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3584 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3587 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3591 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3594 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3598 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3620 kfree(data); in bw_calcs()