Lines Matching full:data
80 struct bw_calcs_data *data) in calculate_bandwidth() argument
157 if (data->d0_underlay_mode == bw_def_none) in calculate_bandwidth()
161 if (data->d1_underlay_mode == bw_def_none) in calculate_bandwidth()
165 data->number_of_underlay_surfaces = d0_underlay_enable + d1_underlay_enable; in calculate_bandwidth()
166 switch (data->underlay_surface_type) { in calculate_bandwidth()
170 data->bytes_per_pixel[0] = 1; in calculate_bandwidth()
171 data->bytes_per_pixel[2] = 1; in calculate_bandwidth()
174 data->bytes_per_pixel[1] = 2; in calculate_bandwidth()
175 data->bytes_per_pixel[3] = 2; in calculate_bandwidth()
176 data->lb_size_per_component[0] = dceip->underlay420_luma_lb_size_per_component; in calculate_bandwidth()
177 data->lb_size_per_component[1] = dceip->underlay420_chroma_lb_size_per_component; in calculate_bandwidth()
178 data->lb_size_per_component[2] = dceip->underlay420_luma_lb_size_per_component; in calculate_bandwidth()
179 data->lb_size_per_component[3] = dceip->underlay420_chroma_lb_size_per_component; in calculate_bandwidth()
184 data->bytes_per_pixel[0] = 2; in calculate_bandwidth()
185 data->bytes_per_pixel[2] = 2; in calculate_bandwidth()
186 data->lb_size_per_component[0] = dceip->underlay422_lb_size_per_component; in calculate_bandwidth()
187 data->lb_size_per_component[2] = dceip->underlay422_lb_size_per_component; in calculate_bandwidth()
192 data->bytes_per_pixel[0] = 4; in calculate_bandwidth()
193 data->bytes_per_pixel[2] = 4; in calculate_bandwidth()
194 data->lb_size_per_component[0] = dceip->lb_size_per_component444; in calculate_bandwidth()
195 data->lb_size_per_component[2] = dceip->lb_size_per_component444; in calculate_bandwidth()
199 switch (data->underlay_surface_type) { in calculate_bandwidth()
201 data->enable[0] = 1; in calculate_bandwidth()
202 data->enable[1] = 1; in calculate_bandwidth()
205 data->enable[0] = 1; in calculate_bandwidth()
206 data->enable[1] = 0; in calculate_bandwidth()
211 data->enable[0] = 0; in calculate_bandwidth()
212 data->enable[1] = 0; in calculate_bandwidth()
215 switch (data->underlay_surface_type) { in calculate_bandwidth()
217 data->enable[2] = 1; in calculate_bandwidth()
218 data->enable[3] = 1; in calculate_bandwidth()
221 data->enable[2] = 1; in calculate_bandwidth()
222 data->enable[3] = 0; in calculate_bandwidth()
227 data->enable[2] = 0; in calculate_bandwidth()
228 data->enable[3] = 0; in calculate_bandwidth()
230 data->use_alpha[0] = 0; in calculate_bandwidth()
231 data->use_alpha[1] = 0; in calculate_bandwidth()
232 data->use_alpha[2] = 0; in calculate_bandwidth()
233 data->use_alpha[3] = 0; in calculate_bandwidth()
234 data->scatter_gather_enable_for_pipe[0] = vbios->scatter_gather_enable; in calculate_bandwidth()
235 data->scatter_gather_enable_for_pipe[1] = vbios->scatter_gather_enable; in calculate_bandwidth()
236 data->scatter_gather_enable_for_pipe[2] = vbios->scatter_gather_enable; in calculate_bandwidth()
237 data->scatter_gather_enable_for_pipe[3] = vbios->scatter_gather_enable; in calculate_bandwidth()
239 data->interlace_mode[0] = data->interlace_mode[4]; in calculate_bandwidth()
240 data->interlace_mode[1] = data->interlace_mode[4]; in calculate_bandwidth()
242 data->interlace_mode[2] = data->interlace_mode[5]; in calculate_bandwidth()
243 data->interlace_mode[3] = data->interlace_mode[5]; in calculate_bandwidth()
245 data->h_total[0] = data->h_total[4]; in calculate_bandwidth()
246 data->v_total[0] = data->v_total[4]; in calculate_bandwidth()
247 data->h_total[1] = data->h_total[4]; in calculate_bandwidth()
248 data->v_total[1] = data->v_total[4]; in calculate_bandwidth()
250 data->h_total[2] = data->h_total[5]; in calculate_bandwidth()
251 data->v_total[2] = data->v_total[5]; in calculate_bandwidth()
252 data->h_total[3] = data->h_total[5]; in calculate_bandwidth()
253 data->v_total[3] = data->v_total[5]; in calculate_bandwidth()
255 data->pixel_rate[0] = data->pixel_rate[4]; in calculate_bandwidth()
256 data->pixel_rate[1] = data->pixel_rate[4]; in calculate_bandwidth()
258 data->pixel_rate[2] = data->pixel_rate[5]; in calculate_bandwidth()
259 data->pixel_rate[3] = data->pixel_rate[5]; in calculate_bandwidth()
260 …if ((data->underlay_tiling_mode == bw_def_array_linear_general || data->underlay_tiling_mode == bw… in calculate_bandwidth()
272 data->lb_bpc[0] = data->underlay_lb_bpc; in calculate_bandwidth()
273 data->lb_bpc[1] = data->underlay_lb_bpc; in calculate_bandwidth()
274 data->lb_bpc[2] = data->underlay_lb_bpc; in calculate_bandwidth()
275 data->lb_bpc[3] = data->underlay_lb_bpc; in calculate_bandwidth()
276 data->compression_rate[0] = bw_int_to_fixed(1); in calculate_bandwidth()
277 data->compression_rate[1] = bw_int_to_fixed(1); in calculate_bandwidth()
278 data->compression_rate[2] = bw_int_to_fixed(1); in calculate_bandwidth()
279 data->compression_rate[3] = bw_int_to_fixed(1); in calculate_bandwidth()
280 data->access_one_channel_only[0] = 0; in calculate_bandwidth()
281 data->access_one_channel_only[1] = 0; in calculate_bandwidth()
282 data->access_one_channel_only[2] = 0; in calculate_bandwidth()
283 data->access_one_channel_only[3] = 0; in calculate_bandwidth()
284 data->cursor_width_pixels[0] = bw_int_to_fixed(0); in calculate_bandwidth()
285 data->cursor_width_pixels[1] = bw_int_to_fixed(0); in calculate_bandwidth()
286 data->cursor_width_pixels[2] = bw_int_to_fixed(0); in calculate_bandwidth()
287 data->cursor_width_pixels[3] = bw_int_to_fixed(0); in calculate_bandwidth()
292 if (i < data->number_of_displays + 4) { in calculate_bandwidth()
293 if (i == 4 && data->d0_underlay_mode == bw_def_underlay_only) { in calculate_bandwidth()
294 data->enable[i] = 0; in calculate_bandwidth()
295 data->use_alpha[i] = 0; in calculate_bandwidth()
297 else if (i == 4 && data->d0_underlay_mode == bw_def_blend) { in calculate_bandwidth()
298 data->enable[i] = 1; in calculate_bandwidth()
299 data->use_alpha[i] = 1; in calculate_bandwidth()
302 data->enable[i] = 1; in calculate_bandwidth()
303 data->use_alpha[i] = 0; in calculate_bandwidth()
305 else if (i == 5 && data->d1_underlay_mode == bw_def_underlay_only) { in calculate_bandwidth()
306 data->enable[i] = 0; in calculate_bandwidth()
307 data->use_alpha[i] = 0; in calculate_bandwidth()
309 else if (i == 5 && data->d1_underlay_mode == bw_def_blend) { in calculate_bandwidth()
310 data->enable[i] = 1; in calculate_bandwidth()
311 data->use_alpha[i] = 1; in calculate_bandwidth()
314 data->enable[i] = 1; in calculate_bandwidth()
315 data->use_alpha[i] = 0; in calculate_bandwidth()
319 data->enable[i] = 0; in calculate_bandwidth()
320 data->use_alpha[i] = 0; in calculate_bandwidth()
322 data->scatter_gather_enable_for_pipe[i] = vbios->scatter_gather_enable; in calculate_bandwidth()
324 data->lb_size_per_component[i] = dceip->lb_size_per_component444; in calculate_bandwidth()
325 …if (data->graphics_tiling_mode == bw_def_array_linear_general || data->graphics_tiling_mode == bw_… in calculate_bandwidth()
331 data->lb_bpc[i] = data->graphics_lb_bpc; in calculate_bandwidth()
332 …if ((data->fbc_en[i] == 1 && (dceip->argb_compression_support || data->d0_underlay_mode != bw_def_… in calculate_bandwidth()
333 data->compression_rate[i] = bw_int_to_fixed(vbios->average_compression_rate); in calculate_bandwidth()
334 data->access_one_channel_only[i] = data->lpt_en[i]; in calculate_bandwidth()
337 data->compression_rate[i] = bw_int_to_fixed(1); in calculate_bandwidth()
338 data->access_one_channel_only[i] = 0; in calculate_bandwidth()
340 if (data->fbc_en[i] == 1) { in calculate_bandwidth()
342 if (data->lpt_en[i] == 1) { in calculate_bandwidth()
346 data->cursor_width_pixels[i] = bw_int_to_fixed(vbios->cursor_width); in calculate_bandwidth()
349 data->scatter_gather_enable_for_pipe[maximum_number_of_surfaces - 2] = 0; in calculate_bandwidth()
350 data->scatter_gather_enable_for_pipe[maximum_number_of_surfaces - 1] = 0; in calculate_bandwidth()
351 if (data->d1_display_write_back_dwb_enable == 1) { in calculate_bandwidth()
352 data->enable[maximum_number_of_surfaces - 2] = 1; in calculate_bandwidth()
353 data->enable[maximum_number_of_surfaces - 1] = 1; in calculate_bandwidth()
356 data->enable[maximum_number_of_surfaces - 2] = 0; in calculate_bandwidth()
357 data->enable[maximum_number_of_surfaces - 1] = 0; in calculate_bandwidth()
361 …data->lb_size_per_component[maximum_number_of_surfaces - 2] = dceip->underlay420_luma_lb_size_per_… in calculate_bandwidth()
362 …data->lb_size_per_component[maximum_number_of_surfaces - 1] = dceip->underlay420_chroma_lb_size_pe… in calculate_bandwidth()
363 data->bytes_per_pixel[maximum_number_of_surfaces - 2] = 1; in calculate_bandwidth()
364 data->bytes_per_pixel[maximum_number_of_surfaces - 1] = 2; in calculate_bandwidth()
365 data->interlace_mode[maximum_number_of_surfaces - 2] = data->interlace_mode[5]; in calculate_bandwidth()
366 data->interlace_mode[maximum_number_of_surfaces - 1] = data->interlace_mode[5]; in calculate_bandwidth()
367 data->h_taps[maximum_number_of_surfaces - 2] = bw_int_to_fixed(1); in calculate_bandwidth()
368 data->h_taps[maximum_number_of_surfaces - 1] = bw_int_to_fixed(1); in calculate_bandwidth()
369 data->v_taps[maximum_number_of_surfaces - 2] = bw_int_to_fixed(1); in calculate_bandwidth()
370 data->v_taps[maximum_number_of_surfaces - 1] = bw_int_to_fixed(1); in calculate_bandwidth()
371 data->rotation_angle[maximum_number_of_surfaces - 2] = bw_int_to_fixed(0); in calculate_bandwidth()
372 data->rotation_angle[maximum_number_of_surfaces - 1] = bw_int_to_fixed(0); in calculate_bandwidth()
375 data->lb_bpc[maximum_number_of_surfaces - 2] = 8; in calculate_bandwidth()
376 data->lb_bpc[maximum_number_of_surfaces - 1] = 8; in calculate_bandwidth()
377 data->compression_rate[maximum_number_of_surfaces - 2] = bw_int_to_fixed(1); in calculate_bandwidth()
378 data->compression_rate[maximum_number_of_surfaces - 1] = bw_int_to_fixed(1); in calculate_bandwidth()
379 data->access_one_channel_only[maximum_number_of_surfaces - 2] = 0; in calculate_bandwidth()
380 data->access_one_channel_only[maximum_number_of_surfaces - 1] = 0; in calculate_bandwidth()
382 data->h_total[maximum_number_of_surfaces - 2] = data->h_total[5]; in calculate_bandwidth()
383 data->h_total[maximum_number_of_surfaces - 1] = data->h_total[5]; in calculate_bandwidth()
384 data->v_total[maximum_number_of_surfaces - 2] = data->v_total[5]; in calculate_bandwidth()
385 data->v_total[maximum_number_of_surfaces - 1] = data->v_total[5]; in calculate_bandwidth()
386 data->pixel_rate[maximum_number_of_surfaces - 2] = data->pixel_rate[5]; in calculate_bandwidth()
387 data->pixel_rate[maximum_number_of_surfaces - 1] = data->pixel_rate[5]; in calculate_bandwidth()
388 data->src_width[maximum_number_of_surfaces - 2] = data->src_width[5]; in calculate_bandwidth()
389 data->src_width[maximum_number_of_surfaces - 1] = data->src_width[5]; in calculate_bandwidth()
390 data->src_height[maximum_number_of_surfaces - 2] = data->src_height[5]; in calculate_bandwidth()
391 data->src_height[maximum_number_of_surfaces - 1] = data->src_height[5]; in calculate_bandwidth()
392 data->pitch_in_pixels[maximum_number_of_surfaces - 2] = data->src_width[5]; in calculate_bandwidth()
393 data->pitch_in_pixels[maximum_number_of_surfaces - 1] = data->src_width[5]; in calculate_bandwidth()
394 data->h_scale_ratio[maximum_number_of_surfaces - 2] = bw_int_to_fixed(1); in calculate_bandwidth()
395 data->h_scale_ratio[maximum_number_of_surfaces - 1] = bw_int_to_fixed(1); in calculate_bandwidth()
396 data->v_scale_ratio[maximum_number_of_surfaces - 2] = bw_int_to_fixed(1); in calculate_bandwidth()
397 data->v_scale_ratio[maximum_number_of_surfaces - 1] = bw_int_to_fixed(1); in calculate_bandwidth()
398 data->stereo_mode[maximum_number_of_surfaces - 2] = bw_def_mono; in calculate_bandwidth()
399 data->stereo_mode[maximum_number_of_surfaces - 1] = bw_def_mono; in calculate_bandwidth()
400 data->cursor_width_pixels[maximum_number_of_surfaces - 2] = bw_int_to_fixed(0); in calculate_bandwidth()
401 data->cursor_width_pixels[maximum_number_of_surfaces - 1] = bw_int_to_fixed(0); in calculate_bandwidth()
402 data->use_alpha[maximum_number_of_surfaces - 2] = 0; in calculate_bandwidth()
403 data->use_alpha[maximum_number_of_surfaces - 1] = 0; in calculate_bandwidth()
419 if (data->enable[i]) { in calculate_bandwidth()
420 …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()
421 data->h_taps[i] = bw_int_to_fixed(1); in calculate_bandwidth()
422 data->v_taps[i] = bw_int_to_fixed(1); in calculate_bandwidth()
425 …data->pitch_in_pixels_after_surface_type[i] = bw_div(data->pitch_in_pixels[i], bw_int_to_fixed(2)); in calculate_bandwidth()
426 data->src_width_after_surface_type = bw_div(data->src_width[i], bw_int_to_fixed(2)); in calculate_bandwidth()
427 data->src_height_after_surface_type = bw_div(data->src_height[i], bw_int_to_fixed(2)); in calculate_bandwidth()
428 data->hsr_after_surface_type = bw_div(data->h_scale_ratio[i], bw_int_to_fixed(2)); in calculate_bandwidth()
429 data->vsr_after_surface_type = bw_div(data->v_scale_ratio[i], bw_int_to_fixed(2)); in calculate_bandwidth()
432 data->pitch_in_pixels_after_surface_type[i] = data->pitch_in_pixels[i]; in calculate_bandwidth()
433 data->src_width_after_surface_type = data->src_width[i]; in calculate_bandwidth()
434 data->src_height_after_surface_type = data->src_height[i]; in calculate_bandwidth()
435 data->hsr_after_surface_type = data->h_scale_ratio[i]; in calculate_bandwidth()
436 data->vsr_after_surface_type = data->v_scale_ratio[i]; in calculate_bandwidth()
438 …if ((bw_equ(data->rotation_angle[i], bw_int_to_fixed(90)) || bw_equ(data->rotation_angle[i], bw_in… in calculate_bandwidth()
439 data->src_width_after_rotation = data->src_height_after_surface_type; in calculate_bandwidth()
440 data->src_height_after_rotation = data->src_width_after_surface_type; in calculate_bandwidth()
441 data->hsr_after_rotation = data->vsr_after_surface_type; in calculate_bandwidth()
442 data->vsr_after_rotation = data->hsr_after_surface_type; in calculate_bandwidth()
445 data->src_width_after_rotation = data->src_width_after_surface_type; in calculate_bandwidth()
446 data->src_height_after_rotation = data->src_height_after_surface_type; in calculate_bandwidth()
447 data->hsr_after_rotation = data->hsr_after_surface_type; in calculate_bandwidth()
448 data->vsr_after_rotation = data->vsr_after_surface_type; in calculate_bandwidth()
450 switch (data->stereo_mode[i]) { in calculate_bandwidth()
452 data->source_width_pixels[i] = data->src_width_after_rotation; in calculate_bandwidth()
453 data->source_height_pixels = bw_mul(bw_int_to_fixed(2), data->src_height_after_rotation); in calculate_bandwidth()
454 data->hsr_after_stereo = data->hsr_after_rotation; in calculate_bandwidth()
455 data->vsr_after_stereo = bw_mul(bw_int_to_fixed(1), data->vsr_after_rotation); in calculate_bandwidth()
458 data->source_width_pixels[i] = bw_mul(bw_int_to_fixed(2), data->src_width_after_rotation); in calculate_bandwidth()
459 data->source_height_pixels = data->src_height_after_rotation; in calculate_bandwidth()
460 data->hsr_after_stereo = bw_mul(bw_int_to_fixed(1), data->hsr_after_rotation); in calculate_bandwidth()
461 data->vsr_after_stereo = data->vsr_after_rotation; in calculate_bandwidth()
464 data->source_width_pixels[i] = data->src_width_after_rotation; in calculate_bandwidth()
465 data->source_height_pixels = data->src_height_after_rotation; in calculate_bandwidth()
466 data->hsr_after_stereo = data->hsr_after_rotation; in calculate_bandwidth()
467 data->vsr_after_stereo = data->vsr_after_rotation; in calculate_bandwidth()
470 data->hsr[i] = data->hsr_after_stereo; in calculate_bandwidth()
471 if (data->interlace_mode[i]) { in calculate_bandwidth()
472 data->vsr[i] = bw_mul(data->vsr_after_stereo, bw_int_to_fixed(2)); in calculate_bandwidth()
475 data->vsr[i] = data->vsr_after_stereo; in calculate_bandwidth()
477 if (data->panning_and_bezel_adjustment != bw_def_none) { in calculate_bandwidth()
478 …data->source_width_rounded_up_to_chunks[i] = bw_add(bw_floor2(bw_sub(data->source_width_pixels[i],… in calculate_bandwidth()
481 …data->source_width_rounded_up_to_chunks[i] = bw_ceil2(data->source_width_pixels[i], bw_int_to_fixe… in calculate_bandwidth()
483 data->source_height_rounded_up_to_chunks[i] = data->source_height_pixels; in calculate_bandwidth()
497 … data->number_of_displays && dceip->number_of_underlay_pipes >= data->number_of_underlay_surfaces … in calculate_bandwidth()
505 if (data->enable[i]) { in calculate_bandwidth()
506 if (bw_neq(data->hsr[i], bw_int_to_fixed(1))) { in calculate_bandwidth()
507 if (bw_mtn(data->hsr[i], bw_int_to_fixed(4))) { in calculate_bandwidth()
511 if (bw_mtn(data->hsr[i], data->h_taps[i])) { in calculate_bandwidth()
515 …re_downscaler_enabled == 1 && bw_mtn(data->hsr[i], bw_int_to_fixed(1)) && bw_leq(data->hsr[i], bw_… in calculate_bandwidth()
525 if (data->enable[i]) { in calculate_bandwidth()
526 if (bw_neq(data->vsr[i], bw_int_to_fixed(1))) { in calculate_bandwidth()
527 if (bw_mtn(data->vsr[i], bw_int_to_fixed(4))) { in calculate_bandwidth()
531 if (bw_mtn(data->vsr[i], data->v_taps[i])) { in calculate_bandwidth()
540 if (data->enable[i]) { in calculate_bandwidth()
541 if ((dceip->pre_downscaler_enabled && bw_mtn(data->hsr[i], bw_int_to_fixed(1)))) { in calculate_bandwidth()
542 data->source_width_in_lb = bw_div(data->source_width_pixels[i], data->hsr[i]); in calculate_bandwidth()
545 data->source_width_in_lb = data->source_width_pixels[i]; in calculate_bandwidth()
547 switch (data->lb_bpc[i]) { in calculate_bandwidth()
549 …data->lb_line_pitch = bw_ceil2(bw_mul(bw_div(bw_frc_to_fixed(2401171875ul, 100000000), bw_int_to_f… in calculate_bandwidth()
552 …data->lb_line_pitch = bw_ceil2(bw_mul(bw_div(bw_frc_to_fixed(300234375, 10000000), bw_int_to_fixed… in calculate_bandwidth()
555 …data->lb_line_pitch = bw_ceil2(bw_mul(bw_int_to_fixed(data->lb_bpc[i]), data->source_width_in_lb),… in calculate_bandwidth()
558 …data->lb_partitions[i] = bw_floor2(bw_div(data->lb_size_per_component[i], data->lb_line_pitch), bw… in calculate_bandwidth()
561 data->lb_partitions_max[i] = bw_int_to_fixed(10); in calculate_bandwidth()
564 data->lb_partitions_max[i] = bw_int_to_fixed(7); in calculate_bandwidth()
566 data->lb_partitions[i] = bw_min2(data->lb_partitions_max[i], data->lb_partitions[i]); in calculate_bandwidth()
567 if (bw_mtn(bw_add(data->v_taps[i], bw_int_to_fixed(1)), data->lb_partitions[i])) { in calculate_bandwidth()
574 …data->enable[i] && data->fbc_en[i] == 1 && (bw_equ(data->rotation_angle[i], bw_int_to_fixed(90)) |… in calculate_bandwidth()
580 if (data->enable[i]) { in calculate_bandwidth()
581 …qu(data->rotation_angle[i], bw_int_to_fixed(90)) || bw_equ(data->rotation_angle[i], bw_int_to_fixe… in calculate_bandwidth()
593 data->number_of_dram_wrchannels = vbios->number_of_dram_channels; in calculate_bandwidth()
594 data->number_of_dram_channels = vbios->number_of_dram_channels; in calculate_bandwidth()
602 data->dram_efficiency = bw_frc_to_fixed(5, 10); in calculate_bandwidth()
604 data->dram_efficiency = bw_int_to_fixed(1); in calculate_bandwidth()
608 data->number_of_dram_channels = 1; in calculate_bandwidth()
611 data->number_of_dram_channels = 2; in calculate_bandwidth()
614 data->number_of_dram_channels = 4; in calculate_bandwidth()
617 data->number_of_dram_channels = 1; in calculate_bandwidth()
622 data->dram_efficiency = bw_frc_to_fixed(5, 10); in calculate_bandwidth()
624 data->dram_efficiency = bw_frc_to_fixed(8, 10); in calculate_bandwidth()
632 if (data->enable[i]) { in calculate_bandwidth()
633 …if ((bw_equ(data->rotation_angle[i], bw_int_to_fixed(90)) || bw_equ(data->rotation_angle[i], bw_in… in calculate_bandwidth()
636 data->orthogonal_rotation[i] = 1; in calculate_bandwidth()
640 if (data->graphics_micro_tile_mode == bw_def_rotated_micro_tiling) { in calculate_bandwidth()
641 data->orthogonal_rotation[i] = 0; in calculate_bandwidth()
644 data->orthogonal_rotation[i] = 1; in calculate_bandwidth()
651 if (data->underlay_micro_tile_mode == bw_def_display_micro_tiling) { in calculate_bandwidth()
652 data->orthogonal_rotation[i] = 0; in calculate_bandwidth()
655 data->orthogonal_rotation[i] = 1; in calculate_bandwidth()
660 if (data->graphics_micro_tile_mode == bw_def_display_micro_tiling) { in calculate_bandwidth()
661 data->orthogonal_rotation[i] = 0; in calculate_bandwidth()
664 data->orthogonal_rotation[i] = 1; in calculate_bandwidth()
668 …if (bw_equ(data->rotation_angle[i], bw_int_to_fixed(90)) || bw_equ(data->rotation_angle[i], bw_int… in calculate_bandwidth()
669 …data->underlay_maximum_source_efficient_for_tiling = dceip->underlay_maximum_height_efficient_for_… in calculate_bandwidth()
672 …data->underlay_maximum_source_efficient_for_tiling = dceip->underlay_maximum_width_efficient_for_t… in calculate_bandwidth()
675 data->bytes_per_request[i] = bw_int_to_fixed(64); in calculate_bandwidth()
676 data->useful_bytes_per_request[i] = bw_int_to_fixed(64); in calculate_bandwidth()
677 data->lines_interleaved_in_mem_access[i] = bw_int_to_fixed(1); in calculate_bandwidth()
678 data->latency_hiding_lines[i] = bw_int_to_fixed(1); in calculate_bandwidth()
681 data->bytes_per_request[i] = bw_int_to_fixed(64); in calculate_bandwidth()
682 data->useful_bytes_per_request[i] = bw_int_to_fixed(64); in calculate_bandwidth()
683 data->lines_interleaved_in_mem_access[i] = bw_int_to_fixed(2); in calculate_bandwidth()
684 data->latency_hiding_lines[i] = bw_int_to_fixed(2); in calculate_bandwidth()
687 … (surface_type[i] == bw_def_graphics || (bw_mtn(data->source_width_rounded_up_to_chunks[i], bw_cei… in calculate_bandwidth()
688 switch (data->bytes_per_pixel[i]) { in calculate_bandwidth()
690 data->lines_interleaved_in_mem_access[i] = bw_int_to_fixed(2); in calculate_bandwidth()
691 data->latency_hiding_lines[i] = bw_int_to_fixed(2); in calculate_bandwidth()
692 if (data->orthogonal_rotation[i]) { in calculate_bandwidth()
693 data->bytes_per_request[i] = bw_int_to_fixed(32); in calculate_bandwidth()
694 data->useful_bytes_per_request[i] = bw_int_to_fixed(32); in calculate_bandwidth()
697 data->bytes_per_request[i] = bw_int_to_fixed(64); in calculate_bandwidth()
698 data->useful_bytes_per_request[i] = bw_int_to_fixed(64); in calculate_bandwidth()
702 if (data->orthogonal_rotation[i]) { in calculate_bandwidth()
703 data->lines_interleaved_in_mem_access[i] = bw_int_to_fixed(2); in calculate_bandwidth()
704 data->latency_hiding_lines[i] = bw_int_to_fixed(2); in calculate_bandwidth()
705 data->bytes_per_request[i] = bw_int_to_fixed(32); in calculate_bandwidth()
706 data->useful_bytes_per_request[i] = bw_int_to_fixed(16); in calculate_bandwidth()
709 data->lines_interleaved_in_mem_access[i] = bw_int_to_fixed(2); in calculate_bandwidth()
710 data->latency_hiding_lines[i] = bw_int_to_fixed(2); in calculate_bandwidth()
711 data->bytes_per_request[i] = bw_int_to_fixed(64); in calculate_bandwidth()
712 data->useful_bytes_per_request[i] = bw_int_to_fixed(64); in calculate_bandwidth()
716 data->lines_interleaved_in_mem_access[i] = bw_int_to_fixed(2); in calculate_bandwidth()
717 data->latency_hiding_lines[i] = bw_int_to_fixed(2); in calculate_bandwidth()
718 data->bytes_per_request[i] = bw_int_to_fixed(32); in calculate_bandwidth()
719 data->useful_bytes_per_request[i] = bw_int_to_fixed(32); in calculate_bandwidth()
722 data->lines_interleaved_in_mem_access[i] = bw_int_to_fixed(2); in calculate_bandwidth()
723 data->latency_hiding_lines[i] = bw_int_to_fixed(2); in calculate_bandwidth()
724 data->bytes_per_request[i] = bw_int_to_fixed(32); in calculate_bandwidth()
725 data->useful_bytes_per_request[i] = bw_int_to_fixed(16); in calculate_bandwidth()
730 data->bytes_per_request[i] = bw_int_to_fixed(64); in calculate_bandwidth()
731 data->useful_bytes_per_request[i] = bw_int_to_fixed(64); in calculate_bandwidth()
732 if (data->orthogonal_rotation[i]) { in calculate_bandwidth()
733 data->lines_interleaved_in_mem_access[i] = bw_int_to_fixed(8); in calculate_bandwidth()
734 data->latency_hiding_lines[i] = bw_int_to_fixed(4); in calculate_bandwidth()
737 switch (data->bytes_per_pixel[i]) { in calculate_bandwidth()
739 data->lines_interleaved_in_mem_access[i] = bw_int_to_fixed(2); in calculate_bandwidth()
740 data->latency_hiding_lines[i] = bw_int_to_fixed(2); in calculate_bandwidth()
743 data->lines_interleaved_in_mem_access[i] = bw_int_to_fixed(4); in calculate_bandwidth()
744 data->latency_hiding_lines[i] = bw_int_to_fixed(4); in calculate_bandwidth()
747 data->lines_interleaved_in_mem_access[i] = bw_int_to_fixed(8); in calculate_bandwidth()
748 data->latency_hiding_lines[i] = bw_int_to_fixed(4); in calculate_bandwidth()
761 …/*if the dmif data buffer size holds more than vta_ps worth of source lines, then only vsr is used… in calculate_bandwidth()
789 if (data->enable[i]) { in calculate_bandwidth()
790 …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()
791 if (data->panning_and_bezel_adjustment == bw_def_any_lines) { in calculate_bandwidth()
792 data->v_filter_init[i] = bw_add(data->v_filter_init[i], bw_int_to_fixed(1)); in calculate_bandwidth()
794 if (data->stereo_mode[i] == bw_def_top_bottom) { in calculate_bandwidth()
796 data->v_filter_init[i] = bw_min2(data->v_filter_init[i], bw_int_to_fixed(4)); in calculate_bandwidth()
801 if (data->stereo_mode[i] == bw_def_top_bottom) { in calculate_bandwidth()
802 data->num_lines_at_frame_start = bw_int_to_fixed(1); in calculate_bandwidth()
805 data->num_lines_at_frame_start = bw_int_to_fixed(3); in calculate_bandwidth()
807 …if ((bw_mtn(data->vsr[i], bw_int_to_fixed(1)) && surface_type[i] == bw_def_graphics) || data->pann… in calculate_bandwidth()
808 data->line_buffer_prefetch[i] = 0; in calculate_bandwidth()
810 …urface_type[i] == bw_def_graphics) && (bw_mtn(data->lb_partitions[i], bw_add(data->v_taps[i], bw_c… in calculate_bandwidth()
811 data->line_buffer_prefetch[i] = 1; in calculate_bandwidth()
814 data->line_buffer_prefetch[i] = 0; in calculate_bandwidth()
816 …data->lb_lines_in_per_line_out_in_beginning_of_frame[i] = bw_div(bw_ceil2(data->v_filter_init[i], … in calculate_bandwidth()
817 if (data->line_buffer_prefetch[i] == 1) { in calculate_bandwidth()
818 … 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()
820 else if (bw_leq(data->vsr[i], bw_int_to_fixed(1))) { in calculate_bandwidth()
821 data->lb_lines_in_per_line_out_in_middle_of_frame[i] = bw_int_to_fixed(1); in calculate_bandwidth()
822 } else if (bw_leq(data->vsr[i], in calculate_bandwidth()
824 …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()
825 } else if (bw_leq(data->vsr[i], in calculate_bandwidth()
827 …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()
829 else if (bw_leq(data->vsr[i], bw_int_to_fixed(2))) { in calculate_bandwidth()
830 data->lb_lines_in_per_line_out_in_middle_of_frame[i] = bw_int_to_fixed(2); in calculate_bandwidth()
832 else if (bw_leq(data->vsr[i], bw_int_to_fixed(3))) { in calculate_bandwidth()
833 data->lb_lines_in_per_line_out_in_middle_of_frame[i] = bw_int_to_fixed(3); in calculate_bandwidth()
836 data->lb_lines_in_per_line_out_in_middle_of_frame[i] = bw_int_to_fixed(4); in calculate_bandwidth()
838 …if (data->line_buffer_prefetch[i] == 1 || bw_equ(data->lb_lines_in_per_line_out_in_middle_of_frame… in calculate_bandwidth()
839 data->horizontal_blank_and_chunk_granularity_factor[i] = bw_int_to_fixed(1); in calculate_bandwidth()
842 …data->horizontal_blank_and_chunk_granularity_factor[i] = bw_div(data->h_total[i], (bw_div((bw_add(… in calculate_bandwidth()
844 …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()
845 data->display_bandwidth[i] = bw_mul(data->request_bandwidth[i], data->bytes_per_request[i]); in calculate_bandwidth()
849 …lay buffer sharing is enabled, the data buffer size for underlay in 422 or 444 is the sum of the l… in calculate_bandwidth()
852 …/*if there is only one display enabled, the dmif data buffer size for the graphics surface is incr… in calculate_bandwidth()
858 …/*graphics and underlay data buffer size is adjusted (limited) using the outstanding chunk request… in calculate_bandwidth()
859 …/*display enabled or if the dmif request buffer is not large enough for the total data buffer size… in calculate_bandwidth()
860 …/*the outstanding chunk request limit is the ceiling of the adjusted data buffer size divided by t… in calculate_bandwidth()
861 …/*the adjusted data buffer size is the product of the display bandwidth and the minimum effective … in calculate_bandwidth()
862 /*rounded up to the chunk size in bytes, but should not exceed the original data buffer size*/ in calculate_bandwidth()
864 if (data->enable[i]) { in calculate_bandwidth()
866 data->max_chunks_non_fbc_mode[i] = 128 - dmif_chunk_buff_margin; in calculate_bandwidth()
869 data->max_chunks_non_fbc_mode[i] = 16 - dmif_chunk_buff_margin; in calculate_bandwidth()
872 if (data->fbc_en[i] == 1) { in calculate_bandwidth()
877 if (data->enable[i]) { in calculate_bandwidth()
880 … data->data_buffer_size[i] = bw_int_to_fixed(dceip->display_write_back420_luma_mcifwr_buffer_size); in calculate_bandwidth()
883 …data->data_buffer_size[i] = bw_int_to_fixed(dceip->display_write_back420_chroma_mcifwr_buffer_size… in calculate_bandwidth()
886 data->data_buffer_size[i] = bw_int_to_fixed(dceip->underlay_luma_dmif_size); in calculate_bandwidth()
889 …data->data_buffer_size[i] = bw_div(bw_int_to_fixed(dceip->underlay_chroma_dmif_size), bw_int_to_fi… in calculate_bandwidth()
892 if (data->orthogonal_rotation[i] == 0) { in calculate_bandwidth()
893 data->data_buffer_size[i] = bw_int_to_fixed(dceip->underlay_luma_dmif_size); in calculate_bandwidth()
896 …data->data_buffer_size[i] = bw_add(bw_int_to_fixed(dceip->underlay_luma_dmif_size), bw_int_to_fixe… in calculate_bandwidth()
900 if (data->fbc_en[i] == 1) { in calculate_bandwidth()
902 if (data->number_of_displays == 1) { in calculate_bandwidth()
903 …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()
906 …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()
911 if (data->number_of_displays == 1) { in calculate_bandwidth()
912 …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()
915 …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()
921 data->memory_chunk_size_in_bytes[i] = bw_int_to_fixed(1024); in calculate_bandwidth()
922 data->pipe_chunk_size_in_bytes[i] = bw_int_to_fixed(1024); in calculate_bandwidth()
925 …data->memory_chunk_size_in_bytes[i] = bw_mul(bw_mul(bw_int_to_fixed(dceip->chunk_width), data->lin… in calculate_bandwidth()
926 …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()
930 data->min_dmif_size_in_time = bw_int_to_fixed(9999); in calculate_bandwidth()
931 data->min_mcifwr_size_in_time = bw_int_to_fixed(9999); in calculate_bandwidth()
933 if (data->enable[i]) { in calculate_bandwidth()
935 …bw_div(bw_mul(data->data_buffer_size[i], data->bytes_per_request[i]), data->useful_bytes_per_reque… in calculate_bandwidth()
936 …data->min_dmif_size_in_time = bw_div(bw_div(bw_mul(data->data_buffer_size[i], data->bytes_per_requ… in calculate_bandwidth()
940 …bw_div(bw_mul(data->data_buffer_size[i], data->bytes_per_request[i]), data->useful_bytes_per_reque… in calculate_bandwidth()
941 …data->min_mcifwr_size_in_time = bw_div(bw_div(bw_mul(data->data_buffer_size[i], data->bytes_per_re… in calculate_bandwidth()
946 data->total_requests_for_dmif_size = bw_int_to_fixed(0); in calculate_bandwidth()
948 …if (data->enable[i] && surface_type[i] != bw_def_display_write_back420_luma && surface_type[i] != … in calculate_bandwidth()
949 …data->total_requests_for_dmif_size = bw_add(data->total_requests_for_dmif_size, bw_div(data->data_… in calculate_bandwidth()
953 if (data->enable[i]) { in calculate_bandwidth()
954 …& dceip->limit_excessive_outstanding_dmif_requests && (data->number_of_displays > 1 || bw_mtn(data… in calculate_bandwidth()
955 …data->adjusted_data_buffer_size[i] = bw_min2(data->data_buffer_size[i], bw_ceil2(bw_mul(data->min_… in calculate_bandwidth()
958 data->adjusted_data_buffer_size[i] = data->data_buffer_size[i]; in calculate_bandwidth()
963 if (data->enable[i]) { in calculate_bandwidth()
964 if (data->number_of_displays == 1 && data->number_of_underlay_surfaces == 0) { in calculate_bandwidth()
966 data->outstanding_chunk_request_limit[i] = bw_int_to_fixed(127); in calculate_bandwidth()
969 …data->outstanding_chunk_request_limit[i] = bw_ceil2(bw_div(data->adjusted_data_buffer_size[i], dat… in calculate_bandwidth()
972 …data->outstanding_chunk_request_limit[i] = bw_max2(bw_int_to_fixed(127), data->outstanding_chunk_r… in calculate_bandwidth()
986 …if (data->number_of_displays > 1 || (bw_neq(data->rotation_angle[4], bw_int_to_fixed(0)) && bw_neq… in calculate_bandwidth()
987 …data->peak_pte_request_to_eviction_ratio_limiting = dceip->peak_pte_request_to_eviction_ratio_limi… in calculate_bandwidth()
990 …data->peak_pte_request_to_eviction_ratio_limiting = dceip->peak_pte_request_to_eviction_ratio_limi… in calculate_bandwidth()
993 if (data->enable[i] && data->scatter_gather_enable_for_pipe[i] == 1) { in calculate_bandwidth()
995 data->useful_pte_per_pte_request = bw_int_to_fixed(8); in calculate_bandwidth()
996 …data->scatter_gather_page_width[i] = bw_div(bw_int_to_fixed(4096), bw_int_to_fixed(data->bytes_per… in calculate_bandwidth()
997 data->scatter_gather_page_height[i] = bw_int_to_fixed(1); in calculate_bandwidth()
998 data->scatter_gather_pte_request_rows = bw_int_to_fixed(1); in calculate_bandwidth()
999 …data->scatter_gather_row_height = bw_int_to_fixed(dceip->scatter_gather_lines_of_pte_prefetching_i… in calculate_bandwidth()
1001 …else if (bw_equ(data->rotation_angle[i], bw_int_to_fixed(0)) || bw_equ(data->rotation_angle[i], bw… in calculate_bandwidth()
1002 data->useful_pte_per_pte_request = bw_int_to_fixed(8); in calculate_bandwidth()
1003 switch (data->bytes_per_pixel[i]) { in calculate_bandwidth()
1005 data->scatter_gather_page_width[i] = bw_int_to_fixed(32); in calculate_bandwidth()
1006 data->scatter_gather_page_height[i] = bw_int_to_fixed(32); in calculate_bandwidth()
1009 data->scatter_gather_page_width[i] = bw_int_to_fixed(64); in calculate_bandwidth()
1010 data->scatter_gather_page_height[i] = bw_int_to_fixed(32); in calculate_bandwidth()
1013 data->scatter_gather_page_width[i] = bw_int_to_fixed(64); in calculate_bandwidth()
1014 data->scatter_gather_page_height[i] = bw_int_to_fixed(64); in calculate_bandwidth()
1017 …data->scatter_gather_pte_request_rows = bw_int_to_fixed(dceip->scatter_gather_pte_request_rows_in_… in calculate_bandwidth()
1018 data->scatter_gather_row_height = data->scatter_gather_page_height[i]; in calculate_bandwidth()
1021 data->useful_pte_per_pte_request = bw_int_to_fixed(1); in calculate_bandwidth()
1022 switch (data->bytes_per_pixel[i]) { in calculate_bandwidth()
1024 data->scatter_gather_page_width[i] = bw_int_to_fixed(32); in calculate_bandwidth()
1025 data->scatter_gather_page_height[i] = bw_int_to_fixed(32); in calculate_bandwidth()
1028 data->scatter_gather_page_width[i] = bw_int_to_fixed(32); in calculate_bandwidth()
1029 data->scatter_gather_page_height[i] = bw_int_to_fixed(64); in calculate_bandwidth()
1032 data->scatter_gather_page_width[i] = bw_int_to_fixed(64); in calculate_bandwidth()
1033 data->scatter_gather_page_height[i] = bw_int_to_fixed(64); in calculate_bandwidth()
1036 …data->scatter_gather_pte_request_rows = bw_int_to_fixed(dceip->scatter_gather_pte_request_rows_in_… in calculate_bandwidth()
1037 data->scatter_gather_row_height = data->scatter_gather_page_height[i]; in calculate_bandwidth()
1039 …data->pte_request_per_chunk[i] = bw_div(bw_div(bw_int_to_fixed(dceip->chunk_width), data->scatter_… in calculate_bandwidth()
1040 …data->scatter_gather_pte_requests_in_row[i] = bw_div(bw_mul(bw_ceil2(bw_mul(bw_div(data->source_wi… in calculate_bandwidth()
1041 …data->scatter_gather_pte_requests_in_vblank = bw_mul(data->scatter_gather_pte_request_rows, data->… in calculate_bandwidth()
1042 if (bw_equ(data->peak_pte_request_to_eviction_ratio_limiting, bw_int_to_fixed(0))) { in calculate_bandwidth()
1043 data->scatter_gather_pte_request_limit[i] = data->scatter_gather_pte_requests_in_vblank; in calculate_bandwidth()
1046 …data->scatter_gather_pte_request_limit[i] = bw_max2(dceip->minimum_outstanding_pte_request_limit, … in calculate_bandwidth()
1053 …data->inefficient_linear_pitch_in_bytes = bw_mul(bw_mul(bw_int_to_fixed(256), bw_int_to_fixed(vbio… in calculate_bandwidth()
1056 …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()
1058 …/*the dram data requirement is doubled when the data request size in bytes is less than the dram c… in calculate_bandwidth()
1059 …/*the dram data requirement is also multiplied by the number of channels in the case of low power … in calculate_bandwidth()
1066 …/*the display reads and writes time for data transfer is the minimum data or cursor buffer size in… in calculate_bandwidth()
1067 …y is experienced more than one time if the number of dmif requests in the data buffer exceeds the … in calculate_bandwidth()
1069 …data burst time is the maximum of the total page close-open time, total dmif/mcifwr buffer size in… in calculate_bandwidth()
1070 …oor of the data required divided by the buffer size for the fist pixel, and the burst time plus th… in calculate_bandwidth()
1073 …/*the source data for these pixels is the number of pixels times the bytes per pixel times the byt… in calculate_bandwidth()
1074 data->cursor_total_data = bw_int_to_fixed(0); in calculate_bandwidth()
1075 data->cursor_total_request_groups = bw_int_to_fixed(0); in calculate_bandwidth()
1076 data->scatter_gather_total_pte_requests = bw_int_to_fixed(0); in calculate_bandwidth()
1077 data->scatter_gather_total_pte_request_groups = bw_int_to_fixed(0); in calculate_bandwidth()
1079 if (data->enable[i]) { in calculate_bandwidth()
1080 …data->cursor_total_data = bw_add(data->cursor_total_data, bw_mul(bw_mul(bw_int_to_fixed(2), data->… in calculate_bandwidth()
1082 …data->cursor_total_request_groups = bw_add(data->cursor_total_request_groups, bw_int_to_fixed((dce… in calculate_bandwidth()
1085 …data->cursor_total_request_groups = bw_add(data->cursor_total_request_groups, bw_ceil2(bw_div(data… in calculate_bandwidth()
1087 if (data->scatter_gather_enable_for_pipe[i]) { in calculate_bandwidth()
1088 …data->scatter_gather_total_pte_requests = bw_add(data->scatter_gather_total_pte_requests, data->sc… in calculate_bandwidth()
1089 …data->scatter_gather_total_pte_request_groups = bw_add(data->scatter_gather_total_pte_request_grou… in calculate_bandwidth()
1093 data->tile_width_in_pixels = bw_int_to_fixed(8); in calculate_bandwidth()
1094 data->dmif_total_number_of_data_request_page_close_open = bw_int_to_fixed(0); in calculate_bandwidth()
1095 data->mcifwr_total_number_of_data_request_page_close_open = bw_int_to_fixed(0); in calculate_bandwidth()
1097 if (data->enable[i]) { in calculate_bandwidth()
1098 if (data->scatter_gather_enable_for_pipe[i] == 1 && tiling_mode[i] != bw_def_linear) { in calculate_bandwidth()
1099 …data->bytes_per_page_close_open = bw_mul(data->lines_interleaved_in_mem_access[i], bw_max2(bw_mul(… in calculate_bandwidth()
1101 …data->scatter_gather_enable_for_pipe[i] == 1 && tiling_mode[i] == bw_def_linear && bw_equ(bw_mod((… in calculate_bandwidth()
1102 data->bytes_per_page_close_open = dceip->linear_mode_line_request_alternation_slice; in calculate_bandwidth()
1105 data->bytes_per_page_close_open = data->memory_chunk_size_in_bytes[i]; in calculate_bandwidth()
1108 …data->dmif_total_number_of_data_request_page_close_open = bw_add(data->dmif_total_number_of_data_r… in calculate_bandwidth()
1111 …data->mcifwr_total_number_of_data_request_page_close_open = bw_add(data->mcifwr_total_number_of_da… in calculate_bandwidth()
1115 …data->dmif_total_page_close_open_time = bw_div(bw_mul((bw_add(bw_add(data->dmif_total_number_of_da… in calculate_bandwidth()
1116 …data->mcifwr_total_page_close_open_time = bw_div(bw_mul(data->mcifwr_total_number_of_data_request_… in calculate_bandwidth()
1118 if (data->enable[i]) { in calculate_bandwidth()
1119 …data->adjusted_data_buffer_size_in_memory[i] = bw_div(bw_mul(data->adjusted_data_buffer_size[i], d… in calculate_bandwidth()
1122 data->total_requests_for_adjusted_dmif_size = bw_int_to_fixed(0); in calculate_bandwidth()
1124 if (data->enable[i]) { in calculate_bandwidth()
1126 …data->total_requests_for_adjusted_dmif_size = bw_add(data->total_requests_for_adjusted_dmif_size, … in calculate_bandwidth()
1130 …data->total_dmifmc_urgent_trips = bw_ceil2(bw_div(data->total_requests_for_adjusted_dmif_size, (bw… in calculate_bandwidth()
1131 …data->total_dmifmc_urgent_latency = bw_mul(vbios->dmifmc_urgent_latency, data->total_dmifmc_urgent… in calculate_bandwidth()
1132 data->total_display_reads_required_data = bw_int_to_fixed(0); in calculate_bandwidth()
1133 data->total_display_reads_required_dram_access_data = bw_int_to_fixed(0); in calculate_bandwidth()
1134 data->total_display_writes_required_data = bw_int_to_fixed(0); in calculate_bandwidth()
1135 data->total_display_writes_required_dram_access_data = bw_int_to_fixed(0); in calculate_bandwidth()
1137 if (data->enable[i]) { in calculate_bandwidth()
1139 data->display_reads_required_data = data->adjusted_data_buffer_size_in_memory[i]; in calculate_bandwidth()
1142 … read burst length (bl) for hbm memories is 4, so each read command will access 32 bytes of data.*/ in calculate_bandwidth()
1143 /*the 64 or 32 byte sized data is stored in one pseudo-channel.*/ in calculate_bandwidth()
1144 …/*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()
1145 …/*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()
1147 …/*the read burst length (bl) for gddr5/ddr4 memories is 8, regardless of the size of the data requ… in calculate_bandwidth()
1148 /*therefore it will require 8 cycles to fetch 64 or 32 bytes of data from the memory.*/ in calculate_bandwidth()
1149 /*the memory efficiency will be 50% for the 32 byte sized data.*/ in calculate_bandwidth()
1151 data->display_reads_required_dram_access_data = data->adjusted_data_buffer_size_in_memory[i]; in calculate_bandwidth()
1154 …data->display_reads_required_dram_access_data = bw_mul(data->adjusted_data_buffer_size_in_memory[i… in calculate_bandwidth()
1156 …data->total_display_reads_required_data = bw_add(data->total_display_reads_required_data, data->di… in calculate_bandwidth()
1157 …data->total_display_reads_required_dram_access_data = bw_add(data->total_display_reads_required_dr… in calculate_bandwidth()
1160 …data->total_display_writes_required_data = bw_add(data->total_display_writes_required_data, data->… in calculate_bandwidth()
1161 …data->total_display_writes_required_dram_access_data = bw_add(data->total_display_writes_required_… in calculate_bandwidth()
1165 …data->total_display_reads_required_data = bw_add(bw_add(data->total_display_reads_required_data, d… in calculate_bandwidth()
1166 …data->total_display_reads_required_dram_access_data = bw_add(bw_add(data->total_display_reads_requ… in calculate_bandwidth()
1168 if (data->enable[i]) { in calculate_bandwidth()
1169 if (bw_mtn(data->v_filter_init[i], bw_int_to_fixed(4))) { in calculate_bandwidth()
1170 …data->src_pixels_for_first_output_pixel[i] = bw_mul(bw_int_to_fixed(4), data->source_width_rounded… in calculate_bandwidth()
1173 if (bw_mtn(data->v_filter_init[i], bw_int_to_fixed(2))) { in calculate_bandwidth()
1174 data->src_pixels_for_first_output_pixel[i] = bw_int_to_fixed(512); in calculate_bandwidth()
1177 data->src_pixels_for_first_output_pixel[i] = bw_int_to_fixed(0); in calculate_bandwidth()
1180 …data->src_data_for_first_output_pixel[i] = bw_div(bw_mul(bw_mul(data->src_pixels_for_first_output_… in calculate_bandwidth()
1181 …data->src_pixels_for_last_output_pixel[i] = bw_mul(data->source_width_rounded_up_to_chunks[i], bw_… in calculate_bandwidth()
1182 …data->src_data_for_last_output_pixel[i] = bw_div(bw_mul(bw_mul(bw_mul(data->source_width_rounded_u… in calculate_bandwidth()
1183 …data->active_time[i] = bw_div(bw_div(data->source_width_rounded_up_to_chunks[i], data->hsr[i]), da… in calculate_bandwidth()
1188 …data->dmif_burst_time[i][j] = bw_max3(data->dmif_total_page_close_open_time, bw_div(data->total_di… in calculate_bandwidth()
1189 if (data->d1_display_write_back_dwb_enable == 1) { in calculate_bandwidth()
1190 …data->mcifwr_burst_time[i][j] = bw_max3(data->mcifwr_total_page_close_open_time, bw_div(data->tota… in calculate_bandwidth()
1197 if (data->enable[i]) { in calculate_bandwidth()
1199 …/*time to transfer data from the dmif buffer to the lb. since the mc to dmif transfer time overla… in calculate_bandwidth()
1201 …data->dmif_buffer_transfer_time[i] = bw_mul(data->source_width_rounded_up_to_chunks[i], (bw_div(dc… in calculate_bandwidth()
1202 …data->line_source_transfer_time[i][j][k] = bw_max2(bw_mul((bw_add(data->total_dmifmc_urgent_latenc… in calculate_bandwidth()
1207 …/*the latency incurred would be the time to issue the requests and return the data for the first o… in calculate_bandwidth()
1209 switch (data->lb_bpc[i]) { in calculate_bandwidth()
1211 data->v_scaler_efficiency = dceip->graphics_vscaler_efficiency6_bit_per_component; in calculate_bandwidth()
1214 data->v_scaler_efficiency = dceip->graphics_vscaler_efficiency8_bit_per_component; in calculate_bandwidth()
1217 data->v_scaler_efficiency = dceip->graphics_vscaler_efficiency10_bit_per_component; in calculate_bandwidth()
1220 data->v_scaler_efficiency = dceip->graphics_vscaler_efficiency12_bit_per_component; in calculate_bandwidth()
1223 if (data->use_alpha[i] == 1) { in calculate_bandwidth()
1224 … data->v_scaler_efficiency = bw_min2(data->v_scaler_efficiency, dceip->alpha_vscaler_efficiency); in calculate_bandwidth()
1228 switch (data->lb_bpc[i]) { in calculate_bandwidth()
1230 data->v_scaler_efficiency = dceip->underlay_vscaler_efficiency6_bit_per_component; in calculate_bandwidth()
1233 data->v_scaler_efficiency = dceip->underlay_vscaler_efficiency8_bit_per_component; in calculate_bandwidth()
1236 data->v_scaler_efficiency = dceip->underlay_vscaler_efficiency10_bit_per_component; in calculate_bandwidth()
1239 data->v_scaler_efficiency = bw_int_to_fixed(3); in calculate_bandwidth()
1243 if (dceip->pre_downscaler_enabled && bw_mtn(data->hsr[i], bw_int_to_fixed(1))) { in calculate_bandwidth()
1244 …data->scaler_limits_factor = bw_max2(bw_div(data->v_taps[i], data->v_scaler_efficiency), bw_div(da… in calculate_bandwidth()
1247 …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()
1249 …data->dram_speed_change_line_source_transfer_time[i][j][k] = bw_mul(bw_int_to_fixed(2), bw_max2((b… in calculate_bandwidth()
1252 …data->line_source_transfer_time[i][j][k] = bw_max2(bw_mul((bw_add(vbios->mcifwrmc_urgent_latency, … in calculate_bandwidth()
1257 …/*the latency incurred would be the time to issue the requests and return the data for the first o… in calculate_bandwidth()
1258 …data->dram_speed_change_line_source_transfer_time[i][j][k] = bw_max2((bw_add((bw_div(data->src_dat… in calculate_bandwidth()
1273 …en line time, plus one more line time if doing lb prefetch, plus the dmif data buffer size equival… in calculate_bandwidth()
1280 if (data->enable[k]) { in calculate_bandwidth()
1283 data->display_pstate_change_enable[k] = 0; in calculate_bandwidth()
1286 if (data->enable[i]) { in calculate_bandwidth()
1287 …ram_clock_state_change_gated_before_cursor, bw_int_to_fixed(0)) && bw_mtn(data->cursor_width_pixel… in calculate_bandwidth()
1288 if (bw_ltn(data->vsr[i], bw_int_to_fixed(2))) { in calculate_bandwidth()
1289 …data->cursor_latency_hiding[i] = bw_div(bw_div(bw_mul((bw_sub(dceip->cursor_dcp_buffer_lines, bw_i… in calculate_bandwidth()
1292 …data->cursor_latency_hiding[i] = bw_div(bw_div(bw_mul((bw_sub(dceip->cursor_dcp_buffer_lines, bw_i… in calculate_bandwidth()
1296 data->cursor_latency_hiding[i] = bw_int_to_fixed(9999); in calculate_bandwidth()
1301 if (data->enable[i]) { in calculate_bandwidth()
1302 …(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()
1304 …data->minimum_latency_hiding[i] = bw_sub(bw_div(bw_mul((bw_div((bw_add(bw_sub(data->lb_partitions[… in calculate_bandwidth()
1306 …data->minimum_latency_hiding[i] = bw_sub(bw_div(bw_mul((bw_div((bw_add(bw_sub(data->lb_partitions[… in calculate_bandwidth()
1309 …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()
1311 …data->minimum_latency_hiding_with_cursor[i] = bw_min2(data->minimum_latency_hiding[i], data->curso… in calculate_bandwidth()
1316 data->blackout_duration_margin[i][j] = bw_int_to_fixed(9999); in calculate_bandwidth()
1317 data->dispclk_required_for_blackout_duration[i][j] = bw_int_to_fixed(0); in calculate_bandwidth()
1318 data->dispclk_required_for_blackout_recovery[i][j] = bw_int_to_fixed(0); in calculate_bandwidth()
1320 if (data->enable[k] && bw_mtn(vbios->blackout_duration, bw_int_to_fixed(0))) { in calculate_bandwidth()
1322 …data->blackout_duration_margin[i][j] = bw_min2(data->blackout_duration_margin[i][j], bw_sub(bw_sub… in calculate_bandwidth()
1323 …data->dispclk_required_for_blackout_duration[i][j] = bw_max3(data->dispclk_required_for_blackout_d… in calculate_bandwidth()
1324 …ackout_recovery_time, bw_add(bw_mul(bw_int_to_fixed(2), data->total_dmifmc_urgent_latency), data->… in calculate_bandwidth()
1325 data->dispclk_required_for_blackout_recovery[i][j] = bw_int_to_fixed(9999); in calculate_bandwidth()
1327 …data->adjusted_data_buffer_size[k], bw_mul(bw_div(bw_mul(data->display_bandwidth[k], data->useful_… in calculate_bandwidth()
1328 …data->dispclk_required_for_blackout_recovery[i][j] = bw_max2(data->dispclk_required_for_blackout_r… in calculate_bandwidth()
1332 …data->blackout_duration_margin[i][j] = bw_min2(data->blackout_duration_margin[i][j], bw_sub(bw_sub… in calculate_bandwidth()
1333 …data->dispclk_required_for_blackout_duration[i][j] = bw_max3(data->dispclk_required_for_blackout_d… in calculate_bandwidth()
1334 …w_mul(bw_int_to_fixed(2), vbios->mcifwrmc_urgent_latency), data->dmif_burst_time[i][j]), data->mci… in calculate_bandwidth()
1335 data->dispclk_required_for_blackout_recovery[i][j] = bw_int_to_fixed(9999); in calculate_bandwidth()
1337 …data->adjusted_data_buffer_size[k], bw_mul(bw_div(bw_mul(data->display_bandwidth[k], data->useful_… in calculate_bandwidth()
1338 …data->dispclk_required_for_blackout_recovery[i][j] = bw_max2(data->dispclk_required_for_blackout_r… in calculate_bandwidth()
1345 …if (bw_mtn(data->blackout_duration_margin[high][s_high], bw_int_to_fixed(0)) && bw_ltn(data->dispc… in calculate_bandwidth()
1346 data->cpup_state_change_enable = bw_def_yes; in calculate_bandwidth()
1347 …if (bw_ltn(data->dispclk_required_for_blackout_recovery[high][s_high], vbios->high_voltage_max_dis… in calculate_bandwidth()
1348 data->cpuc_state_change_enable = bw_def_yes; in calculate_bandwidth()
1351 data->cpuc_state_change_enable = bw_def_no; in calculate_bandwidth()
1355 data->cpup_state_change_enable = bw_def_no; in calculate_bandwidth()
1356 data->cpuc_state_change_enable = bw_def_no; in calculate_bandwidth()
1366 if (data->enable[i]) { in calculate_bandwidth()
1368 …data->maximum_latency_hiding[i] = bw_add(data->minimum_latency_hiding[i], bw_mul(bw_frc_to_fixed(5… in calculate_bandwidth()
1372 …data->maximum_latency_hiding[i] = bw_add(data->minimum_latency_hiding[i], bw_mul(bw_frc_to_fixed(5… in calculate_bandwidth()
1374 …data->maximum_latency_hiding_with_cursor[i] = bw_min2(data->maximum_latency_hiding[i], data->curso… in calculate_bandwidth()
1379 data->min_dram_speed_change_margin[i][j] = bw_int_to_fixed(9999); in calculate_bandwidth()
1380 data->dram_speed_change_margin = bw_int_to_fixed(9999); in calculate_bandwidth()
1381 data->dispclk_required_for_dram_speed_change[i][j] = bw_int_to_fixed(0); in calculate_bandwidth()
1382 data->num_displays_with_margin[i][j] = 0; in calculate_bandwidth()
1384 if (data->enable[k]) { in calculate_bandwidth()
1386 …data->dram_speed_change_margin = bw_sub(bw_sub(bw_sub(data->maximum_latency_hiding_with_cursor[k],… in calculate_bandwidth()
1387 …if ((bw_mtn(data->dram_speed_change_margin, bw_int_to_fixed(0)) && bw_ltn(data->dram_speed_change_… in calculate_bandwidth()
1389 …data->min_dram_speed_change_margin[i][j] = bw_min2(data->min_dram_speed_change_margin[i][j], data-… in calculate_bandwidth()
1391 …data->dispclk_required_for_dram_speed_change_pipe[i][j] = bw_max2(bw_div(bw_div(bw_mul(data->src_p… in calculate_bandwidth()
1392 …if ((bw_ltn(data->dispclk_required_for_dram_speed_change_pipe[i][j], vbios->high_voltage_max_dispc… in calculate_bandwidth()
1393 data->display_pstate_change_enable[k] = 1; in calculate_bandwidth()
1394 data->num_displays_with_margin[i][j] = data->num_displays_with_margin[i][j] + 1; in calculate_bandwidth()
1395 …data->dispclk_required_for_dram_speed_change[i][j] = bw_max2(data->dispclk_required_for_dram_speed… in calculate_bandwidth()
1400 …data->dram_speed_change_margin = bw_sub(bw_sub(bw_sub(bw_sub(data->maximum_latency_hiding_with_cur… in calculate_bandwidth()
1401 …if ((bw_mtn(data->dram_speed_change_margin, bw_int_to_fixed(0)) && bw_ltn(data->dram_speed_change_… in calculate_bandwidth()
1403 …data->min_dram_speed_change_margin[i][j] = bw_min2(data->min_dram_speed_change_margin[i][j], data-… in calculate_bandwidth()
1405 …data->dispclk_required_for_dram_speed_change_pipe[i][j] = bw_max2(bw_div(bw_div(bw_mul(data->src_p… in calculate_bandwidth()
1406 …if ((bw_ltn(data->dispclk_required_for_dram_speed_change_pipe[i][j], vbios->high_voltage_max_dispc… in calculate_bandwidth()
1407 data->display_pstate_change_enable[k] = 1; in calculate_bandwidth()
1408 data->num_displays_with_margin[i][j] = data->num_displays_with_margin[i][j] + 1; in calculate_bandwidth()
1409 …data->dispclk_required_for_dram_speed_change[i][j] = bw_max2(data->dispclk_required_for_dram_speed… in calculate_bandwidth()
1419 if (data->enable[k] == 1 && data->display_pstate_change_enable[k] == 1) { in calculate_bandwidth()
1426 data->min_vblank_dram_speed_change_margin = bw_int_to_fixed(9999); in calculate_bandwidth()
1428 if (data->enable[k]) { in calculate_bandwidth()
1430 …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()
1431 …data->min_vblank_dram_speed_change_margin = bw_min2(data->min_vblank_dram_speed_change_margin, dat… in calculate_bandwidth()
1434 …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()
1435 …data->min_vblank_dram_speed_change_margin = bw_min2(data->min_vblank_dram_speed_change_margin, dat… in calculate_bandwidth()
1440 data->displays_with_same_mode[i] = bw_int_to_fixed(0); in calculate_bandwidth()
1441 …if (data->enable[i] == 1 && data->display_pstate_change_enable[i] == 0 && bw_mtn(data->v_blank_dra… in calculate_bandwidth()
1443 …data->display_synchronization_enabled) && (data->enable[j] == 1 && bw_equ(data->source_width_round… in calculate_bandwidth()
1444 … data->displays_with_same_mode[i] = bw_add(data->displays_with_same_mode[i], bw_int_to_fixed(1)); in calculate_bandwidth()
1452 …o_int(bw_max2(bw_int_to_fixed(number_of_aligned_displays_with_no_margin), data->displays_with_same… in calculate_bandwidth()
1458 …data->min_dram_speed_change_margin[high][s_high], bw_int_to_fixed(0)) && bw_ltn(data->min_dram_spe… in calculate_bandwidth()
1459 data->nbp_state_change_enable = bw_def_yes; in calculate_bandwidth()
1462 data->nbp_state_change_enable = bw_def_no; in calculate_bandwidth()
1476 if (data->enable[i]) { in calculate_bandwidth()
1477 …data->average_bandwidth_no_compression[i] = bw_div(bw_mul(bw_mul(bw_div(bw_mul(data->source_width_… in calculate_bandwidth()
1478 …data->average_bandwidth[i] = bw_div(data->average_bandwidth_no_compression[i], data->compression_r… in calculate_bandwidth()
1481 data->total_average_bandwidth_no_compression = bw_int_to_fixed(0); in calculate_bandwidth()
1482 data->total_average_bandwidth = bw_int_to_fixed(0); in calculate_bandwidth()
1484 if (data->enable[i]) { in calculate_bandwidth()
1485 …data->total_average_bandwidth_no_compression = bw_add(data->total_average_bandwidth_no_compression… in calculate_bandwidth()
1486 … data->total_average_bandwidth = bw_add(data->total_average_bandwidth, data->average_bandwidth[i]); in calculate_bandwidth()
1491 …ment only makes sense if the dmif and mcifwr data total page close-open time is less than the time… in calculate_bandwidth()
1494 data->min_cursor_memory_interface_buffer_size_in_time = bw_int_to_fixed(9999); in calculate_bandwidth()
1495 /* number of cursor lines stored in the cursor data return buffer*/ in calculate_bandwidth()
1498 if (data->enable[i]) { in calculate_bandwidth()
1499 if (bw_mtn(data->cursor_width_pixels[i], bw_int_to_fixed(0))) { in calculate_bandwidth()
1500 /*compute number of cursor lines stored in data return buffer*/ in calculate_bandwidth()
1501 if (bw_leq(data->cursor_width_pixels[i], bw_int_to_fixed(64)) && dceip->large_cursor == 1) { in calculate_bandwidth()
1507 …data->min_cursor_memory_interface_buffer_size_in_time = bw_min2(data->min_cursor_memory_interface_… in calculate_bandwidth()
1513 data->chunk_request_delay = 0; in calculate_bandwidth()
1516 …data->chunk_request_delay = bw_fixed_to_int(bw_div(bw_int_to_fixed(512), vbios->high_voltage_max_d… in calculate_bandwidth()
1518 …data->min_read_buffer_size_in_time = bw_min2(data->min_cursor_memory_interface_buffer_size_in_time… in calculate_bandwidth()
1519 …data->display_reads_time_for_data_transfer = bw_sub(bw_sub(data->min_read_buffer_size_in_time, dat… in calculate_bandwidth()
1520 …data->display_writes_time_for_data_transfer = bw_sub(data->min_mcifwr_size_in_time, vbios->mcifwrm… in calculate_bandwidth()
1521 …data->dmif_required_dram_bandwidth = bw_div(data->total_display_reads_required_dram_access_data, d… in calculate_bandwidth()
1522 …data->mcifwr_required_dram_bandwidth = bw_div(data->total_display_writes_required_dram_access_data… in calculate_bandwidth()
1523 …data->required_dmifmc_urgent_latency_for_page_close_open = bw_div((bw_sub(data->min_read_buffer_si… in calculate_bandwidth()
1524 …data->required_mcifmcwr_urgent_latency = bw_sub(data->min_mcifwr_size_in_time, data->mcifwr_total_… in calculate_bandwidth()
1525 …if (bw_mtn(data->scatter_gather_total_pte_requests, dceip->maximum_total_outstanding_pte_requests_… in calculate_bandwidth()
1526 data->required_dram_bandwidth_gbyte_per_second = bw_int_to_fixed(9999); in calculate_bandwidth()
1528 data->y_clk_level = high; in calculate_bandwidth()
1529 …data->dram_bandwidth = bw_mul(bw_div(bw_mul(bw_mul(data->dram_efficiency, yclk[high]), bw_int_to_f… in calculate_bandwidth()
1531 …>dmifmc_urgent_latency, data->required_dmifmc_urgent_latency_for_page_close_open) || bw_mtn(vbios-… in calculate_bandwidth()
1532 data->required_dram_bandwidth_gbyte_per_second = bw_int_to_fixed(9999); in calculate_bandwidth()
1534 data->y_clk_level = high; in calculate_bandwidth()
1535 …data->dram_bandwidth = bw_mul(bw_div(bw_mul(bw_mul(data->dram_efficiency, yclk[high]), bw_int_to_f… in calculate_bandwidth()
1538 …data->required_dram_bandwidth_gbyte_per_second = bw_div(bw_max2(data->dmif_required_dram_bandwidth… in calculate_bandwidth()
1539 …if (bw_ltn(data->total_average_bandwidth_no_compression, bw_mul(bw_mul(bw_mul(bw_frc_to_fixed(dcei… in calculate_bandwidth()
1540 …data->required_dram_bandwidth_gbyte_per_second, bw_int_to_fixed(1000)), bw_mul(bw_div(bw_mul(bw_mu… in calculate_bandwidth()
1542 data->y_clk_level = low; in calculate_bandwidth()
1543 …data->dram_bandwidth = bw_mul(bw_div(bw_mul(bw_mul(data->dram_efficiency, yclk[low]), bw_int_to_fi… in calculate_bandwidth()
1545 …else if (bw_ltn(data->total_average_bandwidth_no_compression, bw_mul(bw_mul(bw_mul(bw_frc_to_fixed… in calculate_bandwidth()
1546 …data->required_dram_bandwidth_gbyte_per_second, bw_int_to_fixed(1000)), bw_mul(bw_div(bw_mul(bw_mu… in calculate_bandwidth()
1548 data->y_clk_level = mid; in calculate_bandwidth()
1549 …data->dram_bandwidth = bw_mul(bw_div(bw_mul(bw_mul(data->dram_efficiency, yclk[mid]), bw_int_to_fi… in calculate_bandwidth()
1551 …else if (bw_ltn(data->total_average_bandwidth_no_compression, bw_mul(bw_mul(bw_mul(bw_frc_to_fixed… in calculate_bandwidth()
1552 …data->required_dram_bandwidth_gbyte_per_second, bw_int_to_fixed(1000)), bw_mul(bw_div(bw_mul(bw_mu… in calculate_bandwidth()
1554 data->y_clk_level = high; in calculate_bandwidth()
1555 …data->dram_bandwidth = bw_mul(bw_div(bw_mul(bw_mul(data->dram_efficiency, yclk[high]), bw_int_to_f… in calculate_bandwidth()
1559 data->y_clk_level = high; in calculate_bandwidth()
1560 …data->dram_bandwidth = bw_mul(bw_div(bw_mul(bw_mul(data->dram_efficiency, yclk[high]), bw_int_to_f… in calculate_bandwidth()
1566 …the one that allows the transfer of all pipe's data buffer size through the sclk bus in the time f… in calculate_bandwidth()
1568 …data->dmif_required_sclk = bw_div(bw_div(data->total_display_reads_required_data, data->display_re… in calculate_bandwidth()
1569 …data->mcifwr_required_sclk = bw_div(bw_div(data->total_display_writes_required_data, data->display… in calculate_bandwidth()
1570 …if (bw_mtn(data->scatter_gather_total_pte_requests, dceip->maximum_total_outstanding_pte_requests_… in calculate_bandwidth()
1571 data->required_sclk = bw_int_to_fixed(9999); in calculate_bandwidth()
1573 data->sclk_level = s_high; in calculate_bandwidth()
1575 …>dmifmc_urgent_latency, data->required_dmifmc_urgent_latency_for_page_close_open) || bw_mtn(vbios-… in calculate_bandwidth()
1576 data->required_sclk = bw_int_to_fixed(9999); in calculate_bandwidth()
1578 data->sclk_level = s_high; in calculate_bandwidth()
1581 data->required_sclk = bw_max2(data->dmif_required_sclk, data->mcifwr_required_sclk); in calculate_bandwidth()
1582 …if (bw_ltn(data->total_average_bandwidth_no_compression, bw_mul(bw_mul(bw_frc_to_fixed(dceip->max_… in calculate_bandwidth()
1583 …data->required_sclk, sclk[s_low]) && (data->cpup_state_change_enable == bw_def_no || (bw_mtn(data-… in calculate_bandwidth()
1585 data->sclk_level = s_low; in calculate_bandwidth()
1586 data->required_sclk = vbios->low_sclk; in calculate_bandwidth()
1588 …else if (bw_ltn(data->total_average_bandwidth_no_compression, bw_mul(bw_mul(bw_frc_to_fixed(dceip-… in calculate_bandwidth()
1589 …data->required_sclk, sclk[s_mid1]) && (data->cpup_state_change_enable == bw_def_no || (bw_mtn(data… in calculate_bandwidth()
1591 data->sclk_level = s_mid1; in calculate_bandwidth()
1592 data->required_sclk = vbios->mid1_sclk; in calculate_bandwidth()
1594 …else if (bw_ltn(data->total_average_bandwidth_no_compression, bw_mul(bw_mul(bw_frc_to_fixed(dceip-… in calculate_bandwidth()
1595 …data->required_sclk, sclk[s_mid2]) && (data->cpup_state_change_enable == bw_def_no || (bw_mtn(data… in calculate_bandwidth()
1597 data->sclk_level = s_mid2; in calculate_bandwidth()
1598 data->required_sclk = vbios->mid2_sclk; in calculate_bandwidth()
1600 …else if (bw_ltn(data->total_average_bandwidth_no_compression, bw_mul(bw_mul(bw_frc_to_fixed(dceip-… in calculate_bandwidth()
1601 …data->required_sclk, sclk[s_mid3]) && (data->cpup_state_change_enable == bw_def_no || (bw_mtn(data… in calculate_bandwidth()
1603 data->sclk_level = s_mid3; in calculate_bandwidth()
1604 data->required_sclk = vbios->mid3_sclk; in calculate_bandwidth()
1606 …else if (bw_ltn(data->total_average_bandwidth_no_compression, bw_mul(bw_mul(bw_frc_to_fixed(dceip-… in calculate_bandwidth()
1607 …data->required_sclk, sclk[s_mid4]) && (data->cpup_state_change_enable == bw_def_no || (bw_mtn(data… in calculate_bandwidth()
1609 data->sclk_level = s_mid4; in calculate_bandwidth()
1610 data->required_sclk = vbios->mid4_sclk; in calculate_bandwidth()
1612 …else if (bw_ltn(data->total_average_bandwidth_no_compression, bw_mul(bw_mul(bw_frc_to_fixed(dceip-… in calculate_bandwidth()
1613 …data->required_sclk, sclk[s_mid5]) && (data->cpup_state_change_enable == bw_def_no || (bw_mtn(data… in calculate_bandwidth()
1615 data->sclk_level = s_mid5; in calculate_bandwidth()
1616 data->required_sclk = vbios->mid5_sclk; in calculate_bandwidth()
1618 …else if (bw_ltn(data->total_average_bandwidth_no_compression, bw_mul(bw_mul(bw_frc_to_fixed(dceip-… in calculate_bandwidth()
1619 …data->required_sclk, sclk[s_mid6]) && (data->cpup_state_change_enable == bw_def_no || (bw_mtn(data… in calculate_bandwidth()
1621 data->sclk_level = s_mid6; in calculate_bandwidth()
1622 data->required_sclk = vbios->mid6_sclk; in calculate_bandwidth()
1624 …else if (bw_ltn(data->total_average_bandwidth_no_compression, bw_mul(bw_mul(bw_frc_to_fixed(dceip-… in calculate_bandwidth()
1625 && bw_ltn(data->required_sclk, sclk[s_high])) { in calculate_bandwidth()
1627 data->sclk_level = s_high; in calculate_bandwidth()
1628 data->required_sclk = vbios->high_sclk; in calculate_bandwidth()
1630 …else if (bw_meq(data->total_average_bandwidth_no_compression, bw_mul(bw_mul(bw_frc_to_fixed(dceip-… in calculate_bandwidth()
1631 && bw_ltn(data->required_sclk, sclk[s_high])) { in calculate_bandwidth()
1633 data->sclk_level = s_high; in calculate_bandwidth()
1634 data->required_sclk = vbios->high_sclk; in calculate_bandwidth()
1638 data->sclk_level = s_high; in calculate_bandwidth()
1656 …data->downspread_factor = bw_add(bw_int_to_fixed(1), bw_div(vbios->down_spread_percentage, bw_int_… in calculate_bandwidth()
1658 if (data->enable[i]) { in calculate_bandwidth()
1660 switch (data->lb_bpc[i]) { in calculate_bandwidth()
1662 data->v_scaler_efficiency = dceip->graphics_vscaler_efficiency6_bit_per_component; in calculate_bandwidth()
1665 data->v_scaler_efficiency = dceip->graphics_vscaler_efficiency8_bit_per_component; in calculate_bandwidth()
1668 data->v_scaler_efficiency = dceip->graphics_vscaler_efficiency10_bit_per_component; in calculate_bandwidth()
1671 data->v_scaler_efficiency = dceip->graphics_vscaler_efficiency12_bit_per_component; in calculate_bandwidth()
1674 if (data->use_alpha[i] == 1) { in calculate_bandwidth()
1675 … data->v_scaler_efficiency = bw_min2(data->v_scaler_efficiency, dceip->alpha_vscaler_efficiency); in calculate_bandwidth()
1679 switch (data->lb_bpc[i]) { in calculate_bandwidth()
1681 data->v_scaler_efficiency = dceip->underlay_vscaler_efficiency6_bit_per_component; in calculate_bandwidth()
1684 data->v_scaler_efficiency = dceip->underlay_vscaler_efficiency8_bit_per_component; in calculate_bandwidth()
1687 data->v_scaler_efficiency = dceip->underlay_vscaler_efficiency10_bit_per_component; in calculate_bandwidth()
1690 data->v_scaler_efficiency = dceip->underlay_vscaler_efficiency12_bit_per_component; in calculate_bandwidth()
1694 if (dceip->pre_downscaler_enabled && bw_mtn(data->hsr[i], bw_int_to_fixed(1))) { in calculate_bandwidth()
1695 …data->scaler_limits_factor = bw_max2(bw_div(data->v_taps[i], data->v_scaler_efficiency), bw_div(da… in calculate_bandwidth()
1698 …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()
1700 …data->display_pipe_pixel_throughput = bw_div(bw_div(bw_mul(bw_max2(data->lb_lines_in_per_line_out_… in calculate_bandwidth()
1701 …data->dispclk_required_without_ramping[i] = bw_mul(data->downspread_factor, bw_max2(bw_mul(data->p… in calculate_bandwidth()
1702 …data->dispclk_required_with_ramping[i] = bw_mul(dceip->dispclk_ramping_factor, bw_max2(bw_mul(data… in calculate_bandwidth()
1705 data->total_dispclk_required_with_ramping = bw_int_to_fixed(0); in calculate_bandwidth()
1706 data->total_dispclk_required_without_ramping = bw_int_to_fixed(0); in calculate_bandwidth()
1708 if (data->enable[i]) { in calculate_bandwidth()
1709 if (bw_ltn(data->total_dispclk_required_with_ramping, data->dispclk_required_with_ramping[i])) { in calculate_bandwidth()
1710 data->total_dispclk_required_with_ramping = data->dispclk_required_with_ramping[i]; in calculate_bandwidth()
1712 …if (bw_ltn(data->total_dispclk_required_without_ramping, data->dispclk_required_without_ramping[i]… in calculate_bandwidth()
1713 data->total_dispclk_required_without_ramping = data->dispclk_required_without_ramping[i]; in calculate_bandwidth()
1717 data->total_read_request_bandwidth = bw_int_to_fixed(0); in calculate_bandwidth()
1718 data->total_write_request_bandwidth = bw_int_to_fixed(0); in calculate_bandwidth()
1720 if (data->enable[i]) { in calculate_bandwidth()
1722 …data->total_read_request_bandwidth = bw_add(data->total_read_request_bandwidth, data->request_band… in calculate_bandwidth()
1725 …data->total_write_request_bandwidth = bw_add(data->total_write_request_bandwidth, data->request_ba… in calculate_bandwidth()
1729 …data->dispclk_required_for_total_read_request_bandwidth = bw_div(bw_mul(data->total_read_request_b… in calculate_bandwidth()
1730 …data->total_dispclk_required_with_ramping_with_request_bandwidth = bw_max2(data->total_dispclk_req… in calculate_bandwidth()
1731 …data->total_dispclk_required_without_ramping_with_request_bandwidth = bw_max2(data->total_dispclk_… in calculate_bandwidth()
1732 if (data->cpuc_state_change_enable == bw_def_yes) { in calculate_bandwidth()
1733 …data->total_dispclk_required_with_ramping_with_request_bandwidth = bw_max3(data->total_dispclk_req… in calculate_bandwidth()
1734 …data->total_dispclk_required_without_ramping_with_request_bandwidth = bw_max3(data->total_dispclk_… in calculate_bandwidth()
1736 if (data->cpup_state_change_enable == bw_def_yes) { in calculate_bandwidth()
1737 …data->total_dispclk_required_with_ramping_with_request_bandwidth = bw_max2(data->total_dispclk_req… in calculate_bandwidth()
1738 …data->total_dispclk_required_without_ramping_with_request_bandwidth = bw_max2(data->total_dispclk_… in calculate_bandwidth()
1740 if (data->nbp_state_change_enable == bw_def_yes && data->increase_voltage_to_support_mclk_switch) { in calculate_bandwidth()
1741 …data->total_dispclk_required_with_ramping_with_request_bandwidth = bw_max2(data->total_dispclk_req… in calculate_bandwidth()
1742 …data->total_dispclk_required_without_ramping_with_request_bandwidth = bw_max2(data->total_dispclk_… in calculate_bandwidth()
1744 …if (bw_ltn(data->total_dispclk_required_with_ramping_with_request_bandwidth, vbios->high_voltage_m… in calculate_bandwidth()
1745 data->dispclk = data->total_dispclk_required_with_ramping_with_request_bandwidth; in calculate_bandwidth()
1747 …else if (bw_ltn(data->total_dispclk_required_without_ramping_with_request_bandwidth, vbios->high_v… in calculate_bandwidth()
1748 data->dispclk = vbios->high_voltage_max_dispclk; in calculate_bandwidth()
1751 data->dispclk = data->total_dispclk_required_without_ramping_with_request_bandwidth; in calculate_bandwidth()
1764 …d(yclk_message), vbios->low_yclk) && sclk_message == bw_def_low && bw_ltn(data->dispclk, vbios->lo… in calculate_bandwidth()
1767 …) && (sclk_message == bw_def_low || sclk_message == bw_def_mid) && bw_ltn(data->dispclk, vbios->mi… in calculate_bandwidth()
1770 …w || sclk_message == bw_def_mid || sclk_message == bw_def_high) && bw_leq(data->dispclk, vbios->hi… in calculate_bandwidth()
1771 if ((data->nbp_state_change_enable == bw_def_no && nbp_state_change_enable_blank == bw_def_no)) { in calculate_bandwidth()
1782 data->max_phyclk = vbios->low_voltage_max_phyclk; in calculate_bandwidth()
1785 data->max_phyclk = vbios->mid_voltage_max_phyclk; in calculate_bandwidth()
1788 data->max_phyclk = vbios->high_voltage_max_phyclk; in calculate_bandwidth()
1791 data->blackout_recovery_time = bw_int_to_fixed(0); in calculate_bandwidth()
1793 …if (data->enable[k] && bw_mtn(vbios->blackout_duration, bw_int_to_fixed(0)) && data->cpup_state_ch… in calculate_bandwidth()
1795 …data->blackout_recovery_time = bw_max2(data->blackout_recovery_time, bw_add(bw_mul(bw_int_to_fixed… in calculate_bandwidth()
1796 …data->adjusted_data_buffer_size[k], bw_mul(bw_div(bw_mul(data->display_bandwidth[k], data->useful_… in calculate_bandwidth()
1797 …data->blackout_recovery_time = bw_max2(data->blackout_recovery_time, bw_div((bw_add(bw_mul(bw_div(… in calculate_bandwidth()
1801 …data->blackout_recovery_time = bw_max2(data->blackout_recovery_time, bw_add(bw_mul(bw_int_to_fixed… in calculate_bandwidth()
1802 …data->adjusted_data_buffer_size[k], bw_mul(bw_div(bw_mul(data->display_bandwidth[k], data->useful_… in calculate_bandwidth()
1803 …data->blackout_recovery_time = bw_max2(data->blackout_recovery_time, bw_div((bw_add(bw_mul(bw_div(… in calculate_bandwidth()
1809 …/*during self-refresh, sclk can be reduced to dispclk divided by the minimum pixels in the data fi… in calculate_bandwidth()
1810 …/*the data fifo entry is 16 pixels for the writeback, 64 bytes/bytes_per_pixel for the graphics, 1… in calculate_bandwidth()
1812 …/*in parallel mode (underlay pipe), the data read from the dmifv buffer is variable and based on t… in calculate_bandwidth()
1813 /*in orthogonal mode (underlay pipe), the data read from the dmifv buffer is fixed at 16 bytes.*/ in calculate_bandwidth()
1815 if (data->enable[i]) { in calculate_bandwidth()
1817 data->pixels_per_data_fifo_entry[i] = bw_int_to_fixed(16); in calculate_bandwidth()
1820 …data->pixels_per_data_fifo_entry[i] = bw_div(bw_int_to_fixed(64), bw_int_to_fixed(data->bytes_per_… in calculate_bandwidth()
1822 else if (data->orthogonal_rotation[i] == 0) { in calculate_bandwidth()
1823 data->pixels_per_data_fifo_entry[i] = bw_int_to_fixed(16); in calculate_bandwidth()
1826 …data->pixels_per_data_fifo_entry[i] = bw_div(bw_int_to_fixed(16), bw_int_to_fixed(data->bytes_per_… in calculate_bandwidth()
1830 data->min_pixels_per_data_fifo_entry = bw_int_to_fixed(9999); in calculate_bandwidth()
1832 if (data->enable[i]) { in calculate_bandwidth()
1833 if (bw_mtn(data->min_pixels_per_data_fifo_entry, data->pixels_per_data_fifo_entry[i])) { in calculate_bandwidth()
1834 data->min_pixels_per_data_fifo_entry = data->pixels_per_data_fifo_entry[i]; in calculate_bandwidth()
1838 …data->sclk_deep_sleep = bw_max2(bw_div(bw_mul(data->dispclk, bw_frc_to_fixed(115, 100)), data->min… in calculate_bandwidth()
1840 … transfer time, the urgent trip times to get data for the first pixel, and the urgent trip times t… in calculate_bandwidth()
1841 … of the data burst time plus the pixel transfer time, the data burst times to get data for the fir… in calculate_bandwidth()
1842 … of the data burst time plus the pixel transfer time, the data burst times to get data for the fir… in calculate_bandwidth()
1845 data->chunk_request_time = bw_int_to_fixed(0); in calculate_bandwidth()
1846 data->cursor_request_time = bw_int_to_fixed(0); in calculate_bandwidth()
1849 if (data->enable[i]) { in calculate_bandwidth()
1850 …data->chunk_request_time = bw_add(data->chunk_request_time, (bw_div((bw_div(bw_int_to_fixed(pixels… in calculate_bandwidth()
1853 /*compute total time to request cursor data*/ in calculate_bandwidth()
1854 …data->cursor_request_time = (bw_div(data->cursor_total_data, (bw_mul(bw_int_to_fixed(32), sclk[dat… in calculate_bandwidth()
1856 if (data->enable[i]) { in calculate_bandwidth()
1857 …data->line_source_pixels_transfer_time = bw_max2(bw_div(bw_div(data->src_pixels_for_first_output_p… in calculate_bandwidth()
1859 …data->urgent_watermark[i] = bw_add(bw_add(bw_add(bw_add(bw_add(data->total_dmifmc_urgent_latency, … in calculate_bandwidth()
1860 …data->stutter_exit_watermark[i] = bw_add(bw_sub(vbios->stutter_self_refresh_exit_latency, data->to… in calculate_bandwidth()
1861 …data->stutter_entry_watermark[i] = bw_add(bw_sub(bw_add(vbios->stutter_self_refresh_exit_latency, … in calculate_bandwidth()
1863 if (data->display_pstate_change_enable[i] == 1) { in calculate_bandwidth()
1864 …data->nbp_state_change_watermark[i] = bw_add(bw_add(vbios->nbp_state_change_latency, data->dmif_bu… in calculate_bandwidth()
1868 data->nbp_state_change_watermark[i] = bw_int_to_fixed(131000); in calculate_bandwidth()
1872 …data->urgent_watermark[i] = bw_add(bw_add(bw_add(bw_add(bw_add(vbios->mcifwrmc_urgent_latency, dat… in calculate_bandwidth()
1873 data->stutter_exit_watermark[i] = bw_int_to_fixed(0); in calculate_bandwidth()
1874 data->stutter_entry_watermark[i] = bw_int_to_fixed(0); in calculate_bandwidth()
1875 if (data->display_pstate_change_enable[i] == 1) { in calculate_bandwidth()
1876 …data->nbp_state_change_watermark[i] = bw_add(bw_add(vbios->nbp_state_change_latency, data->mcifwr_… in calculate_bandwidth()
1880 data->nbp_state_change_watermark[i] = bw_int_to_fixed(131000); in calculate_bandwidth()
1888 data->stutter_mode_enable = data->cpuc_state_change_enable; in calculate_bandwidth()
1889 if (data->number_of_displays > 1) { in calculate_bandwidth()
1891 if (data->enable[i]) { in calculate_bandwidth()
1892 …if ((bw_mtn(data->stutter_exit_watermark[i], data->minimum_latency_hiding[i]) || bw_mtn(data->stut… in calculate_bandwidth()
1893 data->stutter_mode_enable = bw_def_no; in calculate_bandwidth()
1912 …/*is the ratio between the ideal dram access time (which is the data buffer size in memory divided… in calculate_bandwidth()
1913 …data->dmifdram_access_efficiency = bw_min2(bw_div(bw_div(data->total_display_reads_required_dram_a… in calculate_bandwidth()
1914 if (bw_mtn(data->total_display_writes_required_dram_access_data, bw_int_to_fixed(0))) { in calculate_bandwidth()
1915 …data->mcifwrdram_access_efficiency = bw_min2(bw_div(bw_div(data->total_display_writes_required_dra… in calculate_bandwidth()
1918 data->mcifwrdram_access_efficiency = bw_int_to_fixed(0); in calculate_bandwidth()
1922 …/*the frame-average stutter cycle used is the minimum for all pipes of the frame-average data buff… in calculate_bandwidth()
1925 /*the burst time is the data needed during the stutter cycle divided by the available bandwidth*/ in calculate_bandwidth()
1926 /*compute the time read all the data from the dmif buffer to the lb (dram refresh period)*/ in calculate_bandwidth()
1928 if (data->enable[i]) { in calculate_bandwidth()
1929 …data->stutter_refresh_duration[i] = bw_sub(bw_mul(bw_div(bw_div(bw_mul(bw_div(bw_div(data->adjuste… in calculate_bandwidth()
1930 …data->stutter_dmif_buffer_size[i] = bw_div(bw_mul(bw_mul(bw_div(bw_mul(bw_mul(data->stutter_refres… in calculate_bandwidth()
1933 data->min_stutter_refresh_duration = bw_int_to_fixed(9999); in calculate_bandwidth()
1934 data->total_stutter_dmif_buffer_size = 0; in calculate_bandwidth()
1935 data->total_bytes_requested = 0; in calculate_bandwidth()
1936 data->min_stutter_dmif_buffer_size = 9999; in calculate_bandwidth()
1938 if (data->enable[i]) { in calculate_bandwidth()
1939 if (bw_mtn(data->min_stutter_refresh_duration, data->stutter_refresh_duration[i])) { in calculate_bandwidth()
1940 data->min_stutter_refresh_duration = data->stutter_refresh_duration[i]; in calculate_bandwidth()
1941 …data->total_bytes_requested = bw_fixed_to_int(bw_add(bw_int_to_fixed(data->total_bytes_requested),… in calculate_bandwidth()
1942 data->min_stutter_dmif_buffer_size = bw_fixed_to_int(data->stutter_dmif_buffer_size[i]); in calculate_bandwidth()
1944 …data->total_stutter_dmif_buffer_size = bw_fixed_to_int(bw_add(data->stutter_dmif_buffer_size[i], b… in calculate_bandwidth()
1947 …data->stutter_burst_time = bw_div(bw_int_to_fixed(data->total_stutter_dmif_buffer_size), bw_mul(sc… in calculate_bandwidth()
1948 data->num_stutter_bursts = data->total_bytes_requested / data->min_stutter_dmif_buffer_size; in calculate_bandwidth()
1949 …data->total_stutter_cycle_duration = bw_add(bw_add(data->min_stutter_refresh_duration, vbios->stut… in calculate_bandwidth()
1950 data->time_in_self_refresh = data->min_stutter_refresh_duration; in calculate_bandwidth()
1951 if (data->d1_display_write_back_dwb_enable == 1) { in calculate_bandwidth()
1952 data->stutter_efficiency = bw_int_to_fixed(0); in calculate_bandwidth()
1954 else if (bw_ltn(data->time_in_self_refresh, bw_int_to_fixed(0))) { in calculate_bandwidth()
1955 data->stutter_efficiency = bw_int_to_fixed(0); in calculate_bandwidth()
1959 …data->stutter_efficiency = bw_max2(bw_int_to_fixed(0), bw_mul((bw_sub(bw_int_to_fixed(1), (bw_div(… in calculate_bandwidth()
1964 data->worst_number_of_trips_to_memory = bw_int_to_fixed(1); in calculate_bandwidth()
1966 if (data->enable[i] && data->scatter_gather_enable_for_pipe[i] == 1) { in calculate_bandwidth()
1967 …data->number_of_trips_to_memory_for_getting_apte_row[i] = bw_ceil2(bw_div(data->scatter_gather_pte… in calculate_bandwidth()
1968 …if (bw_ltn(data->worst_number_of_trips_to_memory, data->number_of_trips_to_memory_for_getting_apte… in calculate_bandwidth()
1969 data->worst_number_of_trips_to_memory = data->number_of_trips_to_memory_for_getting_apte_row[i]; in calculate_bandwidth()
1973 …data->immediate_flip_time = bw_mul(data->worst_number_of_trips_to_memory, data->total_dmifmc_urgen… in calculate_bandwidth()
1976 …data->latency_for_non_dmif_clients = bw_add(data->total_dmifmc_urgent_latency, data->dmif_burst_ti… in calculate_bandwidth()
1977 if (data->d1_display_write_back_dwb_enable == 1) { in calculate_bandwidth()
1978 …data->latency_for_non_mcifwr_clients = bw_add(vbios->mcifwrmc_urgent_latency, dceip->mcifwr_all_su… in calculate_bandwidth()
1981 data->latency_for_non_mcifwr_clients = bw_int_to_fixed(0); in calculate_bandwidth()
1984 …data->dmifmc_urgent_latency_supported_in_high_sclk_and_yclk = bw_div((bw_sub(data->min_read_buffer… in calculate_bandwidth()
1987 data->v_blank_nbp_state_dram_speed_change_latency_supported = bw_int_to_fixed(99999); in calculate_bandwidth()
1988 data->nbp_state_dram_speed_change_latency_supported = bw_int_to_fixed(99999); in calculate_bandwidth()
1990 if (data->enable[i]) { in calculate_bandwidth()
1991 …data->nbp_state_dram_speed_change_latency_supported = bw_min2(data->nbp_state_dram_speed_change_la… in calculate_bandwidth()
1992 …data->v_blank_nbp_state_dram_speed_change_latency_supported = bw_min2(data->v_blank_nbp_state_dram… in calculate_bandwidth()
1997 …data->display_reads_time_for_data_transfer_and_urgent_latency = bw_sub(data->min_read_buffer_size_… in calculate_bandwidth()
1998 …if (pipe_check == bw_def_ok && (bw_mtn(data->display_reads_time_for_data_transfer_and_urgent_laten… in calculate_bandwidth()
1999 …data->dmif_required_sclk_for_urgent_latency[i] = bw_div(bw_div(data->total_display_reads_required_… in calculate_bandwidth()
2002 data->dmif_required_sclk_for_urgent_latency[i] = bw_int_to_fixed(bw_def_na); in calculate_bandwidth()
2007 data->output_bpphdmi[k] = bw_def_na; in calculate_bandwidth()
2008 data->output_bppdp4_lane_hbr[k] = bw_def_na; in calculate_bandwidth()
2009 data->output_bppdp4_lane_hbr2[k] = bw_def_na; in calculate_bandwidth()
2010 data->output_bppdp4_lane_hbr3[k] = bw_def_na; in calculate_bandwidth()
2011 if (data->enable[k]) { in calculate_bandwidth()
2012 …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()
2013 if (bw_meq(data->max_phyclk, bw_int_to_fixed(270))) { in calculate_bandwidth()
2014 …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()
2016 if (bw_meq(data->max_phyclk, bw_int_to_fixed(540))) { in calculate_bandwidth()
2017 …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()
2019 if (bw_meq(data->max_phyclk, bw_int_to_fixed(810))) { in calculate_bandwidth()
2020 …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()
2760 const struct pipe_ctx pipe[], int pipe_count, struct bw_calcs_data *data) in populate_initial_data() argument
2765 data->underlay_surface_type = bw_def_420; in populate_initial_data()
2766 data->panning_and_bezel_adjustment = bw_def_none; in populate_initial_data()
2767 data->graphics_lb_bpc = 10; in populate_initial_data()
2768 data->underlay_lb_bpc = 8; in populate_initial_data()
2769 data->underlay_tiling_mode = bw_def_tiled; in populate_initial_data()
2770 data->graphics_tiling_mode = bw_def_tiled; in populate_initial_data()
2771 data->underlay_micro_tile_mode = bw_def_display_micro_tiling; in populate_initial_data()
2772 data->graphics_micro_tile_mode = bw_def_display_micro_tiling; in populate_initial_data()
2773 data->increase_voltage_to_support_mclk_switch = true; in populate_initial_data()
2784 data->d0_underlay_mode = bw_def_underlay_only; in populate_initial_data()
2786 data->d0_underlay_mode = bw_def_blend; in populate_initial_data()
2789 data->d1_underlay_mode = bw_def_underlay_only; in populate_initial_data()
2791 data->d1_underlay_mode = bw_def_blend; in populate_initial_data()
2794 data->fbc_en[num_displays + 4] = false; in populate_initial_data()
2795 data->lpt_en[num_displays + 4] = false; in populate_initial_data()
2796 data->h_total[num_displays + 4] = bw_int_to_fixed(pipe[i].stream->timing.h_total); in populate_initial_data()
2797 data->v_total[num_displays + 4] = bw_int_to_fixed(pipe[i].stream->timing.v_total); in populate_initial_data()
2798 data->pixel_rate[num_displays + 4] = bw_frc_to_fixed(pipe[i].stream->timing.pix_clk_100hz, 10000); in populate_initial_data()
2799 data->src_width[num_displays + 4] = bw_int_to_fixed(pipe[i].plane_res.scl_data.viewport.width); in populate_initial_data()
2800 data->pitch_in_pixels[num_displays + 4] = data->src_width[num_displays + 4]; in populate_initial_data()
2801 data->src_height[num_displays + 4] = bw_int_to_fixed(pipe[i].plane_res.scl_data.viewport.height); in populate_initial_data()
2802 data->h_taps[num_displays + 4] = bw_int_to_fixed(pipe[i].plane_res.scl_data.taps.h_taps); in populate_initial_data()
2803 data->v_taps[num_displays + 4] = bw_int_to_fixed(pipe[i].plane_res.scl_data.taps.v_taps); in populate_initial_data()
2804 …data->h_scale_ratio[num_displays + 4] = fixed31_32_to_bw_fixed(pipe[i].plane_res.scl_data.ratios.h… in populate_initial_data()
2805 …data->v_scale_ratio[num_displays + 4] = fixed31_32_to_bw_fixed(pipe[i].plane_res.scl_data.ratios.v… in populate_initial_data()
2808 data->rotation_angle[num_displays + 4] = bw_int_to_fixed(0); in populate_initial_data()
2811 data->rotation_angle[num_displays + 4] = bw_int_to_fixed(90); in populate_initial_data()
2814 data->rotation_angle[num_displays + 4] = bw_int_to_fixed(180); in populate_initial_data()
2817 data->rotation_angle[num_displays + 4] = bw_int_to_fixed(270); in populate_initial_data()
2826 data->bytes_per_pixel[num_displays + 4] = 2; in populate_initial_data()
2835 data->bytes_per_pixel[num_displays + 4] = 4; in populate_initial_data()
2839 data->bytes_per_pixel[num_displays + 4] = 8; in populate_initial_data()
2842 data->bytes_per_pixel[num_displays + 4] = 4; in populate_initial_data()
2845 data->interlace_mode[num_displays + 4] = false; in populate_initial_data()
2846 data->stereo_mode[num_displays + 4] = bw_def_mono; in populate_initial_data()
2850 data->fbc_en[num_displays * 2 + j] = false; in populate_initial_data()
2851 data->lpt_en[num_displays * 2 + j] = false; in populate_initial_data()
2853 …data->src_height[num_displays * 2 + j] = bw_int_to_fixed(pipe[i].bottom_pipe->plane_res.scl_data.v… in populate_initial_data()
2854 …data->src_width[num_displays * 2 + j] = bw_int_to_fixed(pipe[i].bottom_pipe->plane_res.scl_data.vi… in populate_initial_data()
2855 data->pitch_in_pixels[num_displays * 2 + j] = bw_int_to_fixed( in populate_initial_data()
2857 …data->h_taps[num_displays * 2 + j] = bw_int_to_fixed(pipe[i].bottom_pipe->plane_res.scl_data.taps.… in populate_initial_data()
2858 …data->v_taps[num_displays * 2 + j] = bw_int_to_fixed(pipe[i].bottom_pipe->plane_res.scl_data.taps.… in populate_initial_data()
2859 data->h_scale_ratio[num_displays * 2 + j] = fixed31_32_to_bw_fixed( in populate_initial_data()
2861 data->v_scale_ratio[num_displays * 2 + j] = fixed31_32_to_bw_fixed( in populate_initial_data()
2865 data->rotation_angle[num_displays * 2 + j] = bw_int_to_fixed(0); in populate_initial_data()
2868 data->rotation_angle[num_displays * 2 + j] = bw_int_to_fixed(90); in populate_initial_data()
2871 data->rotation_angle[num_displays * 2 + j] = bw_int_to_fixed(180); in populate_initial_data()
2874 data->rotation_angle[num_displays * 2 + j] = bw_int_to_fixed(270); in populate_initial_data()
2879 data->stereo_mode[num_displays * 2 + j] = bw_def_mono; in populate_initial_data()
2892 data->fbc_en[num_displays + 4] = false; in populate_initial_data()
2893 data->lpt_en[num_displays + 4] = false; in populate_initial_data()
2894 data->h_total[num_displays + 4] = bw_int_to_fixed(pipe[i].stream->timing.h_total); in populate_initial_data()
2895 data->v_total[num_displays + 4] = bw_int_to_fixed(pipe[i].stream->timing.v_total); in populate_initial_data()
2899 data->pixel_rate[num_displays + 4] = bw_frc_to_fixed(pixel_clock_100hz, 10000); in populate_initial_data()
2901 data->src_width[num_displays + 4] = bw_int_to_fixed(pipe[i].plane_res.scl_data.viewport.width); in populate_initial_data()
2902 data->pitch_in_pixels[num_displays + 4] = data->src_width[num_displays + 4]; in populate_initial_data()
2903 data->src_height[num_displays + 4] = bw_int_to_fixed(pipe[i].plane_res.scl_data.viewport.height); in populate_initial_data()
2904 data->h_taps[num_displays + 4] = bw_int_to_fixed(pipe[i].plane_res.scl_data.taps.h_taps); in populate_initial_data()
2905 data->v_taps[num_displays + 4] = bw_int_to_fixed(pipe[i].plane_res.scl_data.taps.v_taps); in populate_initial_data()
2906 …data->h_scale_ratio[num_displays + 4] = fixed31_32_to_bw_fixed(pipe[i].plane_res.scl_data.ratios.h… in populate_initial_data()
2907 …data->v_scale_ratio[num_displays + 4] = fixed31_32_to_bw_fixed(pipe[i].plane_res.scl_data.ratios.v… in populate_initial_data()
2910 data->rotation_angle[num_displays + 4] = bw_int_to_fixed(0); in populate_initial_data()
2913 data->rotation_angle[num_displays + 4] = bw_int_to_fixed(90); in populate_initial_data()
2916 data->rotation_angle[num_displays + 4] = bw_int_to_fixed(180); in populate_initial_data()
2919 data->rotation_angle[num_displays + 4] = bw_int_to_fixed(270); in populate_initial_data()
2929 data->bytes_per_pixel[num_displays + 4] = 2; in populate_initial_data()
2938 data->bytes_per_pixel[num_displays + 4] = 4; in populate_initial_data()
2942 data->bytes_per_pixel[num_displays + 4] = 8; in populate_initial_data()
2945 data->bytes_per_pixel[num_displays + 4] = 4; in populate_initial_data()
2952 data->src_width[num_displays + 4] = bw_int_to_fixed(pipe[i].stream->src.width); in populate_initial_data()
2953 data->pitch_in_pixels[num_displays + 4] = data->src_width[num_displays + 4]; in populate_initial_data()
2954 data->src_height[num_displays + 4] = bw_int_to_fixed(pipe[i].stream->src.height); in populate_initial_data()
2955 …data->h_taps[num_displays + 4] = pipe[i].stream->src.width == pipe[i].stream->dst.width ? bw_int_t… in populate_initial_data()
2956 …data->v_taps[num_displays + 4] = pipe[i].stream->src.height == pipe[i].stream->dst.height ? bw_int… in populate_initial_data()
2957 …data->h_scale_ratio[num_displays + 4] = bw_frc_to_fixed(pipe[i].stream->src.width, pipe[i].stream-… in populate_initial_data()
2958 …data->v_scale_ratio[num_displays + 4] = bw_frc_to_fixed(pipe[i].stream->src.height, pipe[i].stream… in populate_initial_data()
2959 data->rotation_angle[num_displays + 4] = bw_int_to_fixed(0); in populate_initial_data()
2960 data->bytes_per_pixel[num_displays + 4] = 4; in populate_initial_data()
2962 data->src_width[num_displays + 4] = bw_int_to_fixed(pipe[i].stream->timing.h_addressable); in populate_initial_data()
2963 data->pitch_in_pixels[num_displays + 4] = data->src_width[num_displays + 4]; in populate_initial_data()
2964 data->src_height[num_displays + 4] = bw_int_to_fixed(pipe[i].stream->timing.v_addressable); in populate_initial_data()
2965 data->h_taps[num_displays + 4] = bw_int_to_fixed(1); in populate_initial_data()
2966 data->v_taps[num_displays + 4] = bw_int_to_fixed(1); in populate_initial_data()
2967 data->h_scale_ratio[num_displays + 4] = bw_int_to_fixed(1); in populate_initial_data()
2968 data->v_scale_ratio[num_displays + 4] = bw_int_to_fixed(1); in populate_initial_data()
2969 data->rotation_angle[num_displays + 4] = bw_int_to_fixed(0); in populate_initial_data()
2970 data->bytes_per_pixel[num_displays + 4] = 4; in populate_initial_data()
2973 data->interlace_mode[num_displays + 4] = false; in populate_initial_data()
2974 data->stereo_mode[num_displays + 4] = bw_def_mono; in populate_initial_data()
2978 data->number_of_displays = num_displays; in populate_initial_data()
3010 * In this case 'calcs_output' contains data for HW programming
3021 struct bw_calcs_data *data = kzalloc(sizeof(struct bw_calcs_data), in bw_calcs() local
3023 if (!data) in bw_calcs()
3026 populate_initial_data(pipe, pipe_count, data); in bw_calcs()
3033 if (data->number_of_displays != 0) { in bw_calcs()
3050 print_bw_calcs_data(ctx, data); in bw_calcs()
3052 calculate_bandwidth(dceip, vbios, data); in bw_calcs()
3054 yclk_lvl = data->y_clk_level; in bw_calcs()
3055 sclk_lvl = data->sclk_level; in bw_calcs()
3058 data->nbp_state_change_enable; in bw_calcs()
3060 data->cpuc_state_change_enable; in bw_calcs()
3062 data->cpup_state_change_enable; in bw_calcs()
3064 data->stutter_mode_enable; in bw_calcs()
3066 bw_fixed_to_int(bw_mul(data->dispclk, in bw_calcs()
3069 bw_fixed_to_int(data->blackout_recovery_time); in bw_calcs()
3071 bw_fixed_to_int(bw_mul(data->required_sclk, in bw_calcs()
3074 bw_fixed_to_int(bw_mul(data->sclk_deep_sleep, in bw_calcs()
3089 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3092 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3095 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3100 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3103 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3107 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3110 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3114 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()
3126 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3130 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3133 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3137 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3140 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3144 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()
3207 calculate_bandwidth(dceip, vbios, data); in bw_calcs()
3210 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3213 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3216 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()
3231 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3235 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()
3247 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3251 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3254 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3258 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3261 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3265 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()
3328 calculate_bandwidth(dceip, vbios, data); in bw_calcs()
3331 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3334 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3337 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3341 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3344 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3348 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3351 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3355 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3360 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3363 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3366 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3370 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3373 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3377 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3380 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3384 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()
3416 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3419 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3422 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3426 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3429 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3433 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3436 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3440 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3461 calculate_bandwidth(dceip, vbios, data); in bw_calcs()
3464 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3467 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3470 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3474 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3477 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3481 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3484 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3488 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3492 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3495 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3498 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3502 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3505 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3509 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3512 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3516 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3520 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3523 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3526 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3530 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3533 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3537 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3540 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3544 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3548 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3551 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3554 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3558 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3561 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3565 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3568 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3572 bw_fixed_to_int(bw_mul(data-> in bw_calcs()
3594 kfree(data); in bw_calcs()