lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [day] [month] [year] [list]
Date:   Mon, 5 Apr 2021 07:09:30 +0800
From:   kernel test robot <lkp@...el.com>
To:     Kees Cook <keescook@...omium.org>
Cc:     kbuild-all@...ts.01.org, clang-built-linux@...glegroups.com,
        linux-kernel@...r.kernel.org,
        Andrew Morton <akpm@...ux-foundation.org>,
        Linux Memory Management List <linux-mm@...ck.org>
Subject: drivers/gpu/drm/amd/amdgpu/../display/dc/calcs/dcn_calc_auto.c:1176:6:
 warning: stack frame size of 2576 bytes in function
 'dispclkdppclkdcfclk_deep_sleep_prefetch_parameters_watermarks_and_performance_calculation'

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   2023a53bdf41b7646b1d384b6816af06309f73a5
commit: d0a3ac549f389c1511a4df0d7638536305205d20 ubsan: enable for all*config builds
date:   4 months ago
config: powerpc64-randconfig-r011-20210404 (attached as .config)
compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project 30df6d5d6a8537d3ec7d8fe4299289a4c5a74d5c)
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # install powerpc64 cross compiling tool for clang build
        # apt-get install binutils-powerpc64-linux-gnu
        # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d0a3ac549f389c1511a4df0d7638536305205d20
        git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
        git fetch --no-tags linus master
        git checkout d0a3ac549f389c1511a4df0d7638536305205d20
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=powerpc64 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@...el.com>

All warnings (new ones prefixed by >>):

   drivers/gpu/drm/amd/amdgpu/../display/dc/calcs/dcn_calc_auto.c:121:6: warning: stack frame size of 5552 bytes in function 'mode_support_and_system_configuration' [-Wframe-larger-than=]
   void mode_support_and_system_configuration(struct dcn_bw_internal_vars *v)
        ^
>> drivers/gpu/drm/amd/amdgpu/../display/dc/calcs/dcn_calc_auto.c:1176:6: warning: stack frame size of 2576 bytes in function 'dispclkdppclkdcfclk_deep_sleep_prefetch_parameters_watermarks_and_performance_calculation' [-Wframe-larger-than=]
   void dispclkdppclkdcfclk_deep_sleep_prefetch_parameters_watermarks_and_performance_calculation(struct dcn_bw_internal_vars *v)
        ^
   2 warnings generated.


vim +/dispclkdppclkdcfclk_deep_sleep_prefetch_parameters_watermarks_and_performance_calculation +1176 drivers/gpu/drm/amd/amdgpu/../display/dc/calcs/dcn_calc_auto.c

5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   120  
74c49c7ac14f3a Harry Wentland     2017-05-08   121  void mode_support_and_system_configuration(struct dcn_bw_internal_vars *v)
74c49c7ac14f3a Harry Wentland     2017-05-08   122  {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   123  	int i;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   124  	int j;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   125  	int k;
74c49c7ac14f3a Harry Wentland     2017-05-08   126  	/*mode support, voltage state and soc configuration*/
74c49c7ac14f3a Harry Wentland     2017-05-08   127  
74c49c7ac14f3a Harry Wentland     2017-05-08   128  	/*scale ratio support check*/
74c49c7ac14f3a Harry Wentland     2017-05-08   129  
74c49c7ac14f3a Harry Wentland     2017-05-08   130  	v->scale_ratio_support = dcn_bw_yes;
74c49c7ac14f3a Harry Wentland     2017-05-08   131  	for (k = 0; k <= v->number_of_active_planes - 1; k++) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   132  		if (v->h_ratio[k] > v->max_hscl_ratio || v->v_ratio[k] > v->max_vscl_ratio || v->h_ratio[k] > v->htaps[k] || v->v_ratio[k] > v->vtaps[k] || (v->source_pixel_format[k] != dcn_bw_rgb_sub_64 && v->source_pixel_format[k] != dcn_bw_rgb_sub_32 && v->source_pixel_format[k] != dcn_bw_rgb_sub_16 && (v->h_ratio[k] / 2.0 > v->hta_pschroma[k] || v->v_ratio[k] / 2.0 > v->vta_pschroma[k]))) {
74c49c7ac14f3a Harry Wentland     2017-05-08   133  			v->scale_ratio_support = dcn_bw_no;
74c49c7ac14f3a Harry Wentland     2017-05-08   134  		}
74c49c7ac14f3a Harry Wentland     2017-05-08   135  	}
74c49c7ac14f3a Harry Wentland     2017-05-08   136  	/*source format, pixel format and scan support check*/
74c49c7ac14f3a Harry Wentland     2017-05-08   137  
74c49c7ac14f3a Harry Wentland     2017-05-08   138  	v->source_format_pixel_and_scan_support = dcn_bw_yes;
74c49c7ac14f3a Harry Wentland     2017-05-08   139  	for (k = 0; k <= v->number_of_active_planes - 1; k++) {
afa80d64d20ac1 Dmytro Laktyushkin 2017-06-21   140  		if ((v->source_surface_mode[k] == dcn_bw_sw_linear && v->source_scan[k] != dcn_bw_hor) || ((v->source_surface_mode[k] == dcn_bw_sw_4_kb_d || v->source_surface_mode[k] == dcn_bw_sw_4_kb_d_x || v->source_surface_mode[k] == dcn_bw_sw_64_kb_d || v->source_surface_mode[k] == dcn_bw_sw_64_kb_d_t || v->source_surface_mode[k] == dcn_bw_sw_64_kb_d_x || v->source_surface_mode[k] == dcn_bw_sw_var_d || v->source_surface_mode[k] == dcn_bw_sw_var_d_x) && v->source_pixel_format[k] != dcn_bw_rgb_sub_64)) {
74c49c7ac14f3a Harry Wentland     2017-05-08   141  			v->source_format_pixel_and_scan_support = dcn_bw_no;
74c49c7ac14f3a Harry Wentland     2017-05-08   142  		}
74c49c7ac14f3a Harry Wentland     2017-05-08   143  	}
74c49c7ac14f3a Harry Wentland     2017-05-08   144  	/*bandwidth support check*/
74c49c7ac14f3a Harry Wentland     2017-05-08   145  
74c49c7ac14f3a Harry Wentland     2017-05-08   146  	for (k = 0; k <= v->number_of_active_planes - 1; k++) {
74c49c7ac14f3a Harry Wentland     2017-05-08   147  		if (v->source_scan[k] == dcn_bw_hor) {
74c49c7ac14f3a Harry Wentland     2017-05-08   148  			v->swath_width_ysingle_dpp[k] = v->viewport_width[k];
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   149  		}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   150  		else {
74c49c7ac14f3a Harry Wentland     2017-05-08   151  			v->swath_width_ysingle_dpp[k] = v->viewport_height[k];
74c49c7ac14f3a Harry Wentland     2017-05-08   152  		}
74c49c7ac14f3a Harry Wentland     2017-05-08   153  		if (v->source_pixel_format[k] == dcn_bw_rgb_sub_64) {
74c49c7ac14f3a Harry Wentland     2017-05-08   154  			v->byte_per_pixel_in_dety[k] = 8.0;
74c49c7ac14f3a Harry Wentland     2017-05-08   155  			v->byte_per_pixel_in_detc[k] = 0.0;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   156  		}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   157  		else if (v->source_pixel_format[k] == dcn_bw_rgb_sub_32) {
74c49c7ac14f3a Harry Wentland     2017-05-08   158  			v->byte_per_pixel_in_dety[k] = 4.0;
74c49c7ac14f3a Harry Wentland     2017-05-08   159  			v->byte_per_pixel_in_detc[k] = 0.0;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   160  		}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   161  		else if (v->source_pixel_format[k] == dcn_bw_rgb_sub_16) {
74c49c7ac14f3a Harry Wentland     2017-05-08   162  			v->byte_per_pixel_in_dety[k] = 2.0;
74c49c7ac14f3a Harry Wentland     2017-05-08   163  			v->byte_per_pixel_in_detc[k] = 0.0;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   164  		}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   165  		else if (v->source_pixel_format[k] == dcn_bw_yuv420_sub_8) {
74c49c7ac14f3a Harry Wentland     2017-05-08   166  			v->byte_per_pixel_in_dety[k] = 1.0;
74c49c7ac14f3a Harry Wentland     2017-05-08   167  			v->byte_per_pixel_in_detc[k] = 2.0;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   168  		}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   169  		else {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   170  			v->byte_per_pixel_in_dety[k] = 4.0f / 3.0f;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   171  			v->byte_per_pixel_in_detc[k] = 8.0f / 3.0f;
74c49c7ac14f3a Harry Wentland     2017-05-08   172  		}
74c49c7ac14f3a Harry Wentland     2017-05-08   173  	}
74c49c7ac14f3a Harry Wentland     2017-05-08   174  	v->total_read_bandwidth_consumed_gbyte_per_second = 0.0;
74c49c7ac14f3a Harry Wentland     2017-05-08   175  	for (k = 0; k <= v->number_of_active_planes - 1; k++) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   176  		v->read_bandwidth[k] = v->swath_width_ysingle_dpp[k] * (dcn_bw_ceil2(v->byte_per_pixel_in_dety[k], 1.0) * v->v_ratio[k] +dcn_bw_ceil2(v->byte_per_pixel_in_detc[k], 2.0) / 2.0 * v->v_ratio[k] / 2) / (v->htotal[k] / v->pixel_clock[k]);
74c49c7ac14f3a Harry Wentland     2017-05-08   177  		if (v->dcc_enable[k] == dcn_bw_yes) {
74c49c7ac14f3a Harry Wentland     2017-05-08   178  			v->read_bandwidth[k] = v->read_bandwidth[k] * (1 + 1 / 256);
74c49c7ac14f3a Harry Wentland     2017-05-08   179  		}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   180  		if (v->pte_enable == dcn_bw_yes && v->source_scan[k] != dcn_bw_hor && (v->source_surface_mode[k] == dcn_bw_sw_4_kb_s || v->source_surface_mode[k] == dcn_bw_sw_4_kb_s_x || v->source_surface_mode[k] == dcn_bw_sw_4_kb_d || v->source_surface_mode[k] == dcn_bw_sw_4_kb_d_x)) {
74c49c7ac14f3a Harry Wentland     2017-05-08   181  			v->read_bandwidth[k] = v->read_bandwidth[k] * (1 + 1 / 64);
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   182  		}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   183  		else if (v->pte_enable == dcn_bw_yes && v->source_scan[k] == dcn_bw_hor && (v->source_pixel_format[k] == dcn_bw_rgb_sub_64 || v->source_pixel_format[k] == dcn_bw_rgb_sub_32) && (v->source_surface_mode[k] == dcn_bw_sw_64_kb_s || v->source_surface_mode[k] == dcn_bw_sw_64_kb_s_t || v->source_surface_mode[k] == dcn_bw_sw_64_kb_s_x || v->source_surface_mode[k] == dcn_bw_sw_64_kb_d || v->source_surface_mode[k] == dcn_bw_sw_64_kb_d_t || v->source_surface_mode[k] == dcn_bw_sw_64_kb_d_x)) {
74c49c7ac14f3a Harry Wentland     2017-05-08   184  			v->read_bandwidth[k] = v->read_bandwidth[k] * (1 + 1 / 256);
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   185  		}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   186  		else if (v->pte_enable == dcn_bw_yes) {
74c49c7ac14f3a Harry Wentland     2017-05-08   187  			v->read_bandwidth[k] = v->read_bandwidth[k] * (1 + 1 / 512);
74c49c7ac14f3a Harry Wentland     2017-05-08   188  		}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   189  		v->total_read_bandwidth_consumed_gbyte_per_second = v->total_read_bandwidth_consumed_gbyte_per_second + v->read_bandwidth[k] / 1000.0;
74c49c7ac14f3a Harry Wentland     2017-05-08   190  	}
74c49c7ac14f3a Harry Wentland     2017-05-08   191  	v->total_write_bandwidth_consumed_gbyte_per_second = 0.0;
74c49c7ac14f3a Harry Wentland     2017-05-08   192  	for (k = 0; k <= v->number_of_active_planes - 1; k++) {
74c49c7ac14f3a Harry Wentland     2017-05-08   193  		if (v->output[k] == dcn_bw_writeback && v->output_format[k] == dcn_bw_444) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   194  			v->write_bandwidth[k] = v->scaler_rec_out_width[k] / (v->htotal[k] / v->pixel_clock[k]) * 4.0;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   195  		}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   196  		else if (v->output[k] == dcn_bw_writeback) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   197  			v->write_bandwidth[k] = v->scaler_rec_out_width[k] / (v->htotal[k] / v->pixel_clock[k]) * 1.5;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   198  		}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   199  		else {
74c49c7ac14f3a Harry Wentland     2017-05-08   200  			v->write_bandwidth[k] = 0.0;
74c49c7ac14f3a Harry Wentland     2017-05-08   201  		}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   202  		v->total_write_bandwidth_consumed_gbyte_per_second = v->total_write_bandwidth_consumed_gbyte_per_second + v->write_bandwidth[k] / 1000.0;
74c49c7ac14f3a Harry Wentland     2017-05-08   203  	}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   204  	v->total_bandwidth_consumed_gbyte_per_second = v->total_read_bandwidth_consumed_gbyte_per_second + v->total_write_bandwidth_consumed_gbyte_per_second;
74c49c7ac14f3a Harry Wentland     2017-05-08   205  	v->dcc_enabled_in_any_plane = dcn_bw_no;
74c49c7ac14f3a Harry Wentland     2017-05-08   206  	for (k = 0; k <= v->number_of_active_planes - 1; k++) {
74c49c7ac14f3a Harry Wentland     2017-05-08   207  		if (v->dcc_enable[k] == dcn_bw_yes) {
74c49c7ac14f3a Harry Wentland     2017-05-08   208  			v->dcc_enabled_in_any_plane = dcn_bw_yes;
74c49c7ac14f3a Harry Wentland     2017-05-08   209  		}
74c49c7ac14f3a Harry Wentland     2017-05-08   210  	}
74c49c7ac14f3a Harry Wentland     2017-05-08   211  	for (i = 0; i <= number_of_states_plus_one; i++) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   212  		v->return_bw_todcn_per_state =dcn_bw_min2(v->return_bus_width * v->dcfclk_per_state[i], v->fabric_and_dram_bandwidth_per_state[i] * 1000.0 * v->percent_of_ideal_drambw_received_after_urg_latency / 100.0);
74c49c7ac14f3a Harry Wentland     2017-05-08   213  		v->return_bw_per_state[i] = v->return_bw_todcn_per_state;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   214  		if (v->dcc_enabled_in_any_plane == dcn_bw_yes && v->return_bw_todcn_per_state > v->dcfclk_per_state[i] * v->return_bus_width / 4.0) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   215  			v->return_bw_per_state[i] =dcn_bw_min2(v->return_bw_per_state[i], v->return_bw_todcn_per_state * 4.0 * (1.0 - v->urgent_latency / ((v->rob_buffer_size_in_kbyte - v->pixel_chunk_size_in_kbyte) * 1024.0 / (v->return_bw_todcn_per_state - v->dcfclk_per_state[i] * v->return_bus_width / 4.0) + v->urgent_latency)));
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   216  		}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   217  		v->critical_point = 2.0 * v->return_bus_width * v->dcfclk_per_state[i] * v->urgent_latency / (v->return_bw_todcn_per_state * v->urgent_latency + (v->rob_buffer_size_in_kbyte - v->pixel_chunk_size_in_kbyte) * 1024.0);
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   218  		if (v->dcc_enabled_in_any_plane == dcn_bw_yes && v->critical_point > 1.0 && v->critical_point < 4.0) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   219  			v->return_bw_per_state[i] =dcn_bw_min2(v->return_bw_per_state[i], dcn_bw_pow(4.0 * v->return_bw_todcn_per_state * (v->rob_buffer_size_in_kbyte - v->pixel_chunk_size_in_kbyte) * 1024.0 * v->return_bus_width * v->dcfclk_per_state[i] * v->urgent_latency / (v->return_bw_todcn_per_state * v->urgent_latency + (v->rob_buffer_size_in_kbyte - v->pixel_chunk_size_in_kbyte) * 1024.0), 2));
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   220  		}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   221  		v->return_bw_todcn_per_state =dcn_bw_min2(v->return_bus_width * v->dcfclk_per_state[i], v->fabric_and_dram_bandwidth_per_state[i] * 1000.0);
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   222  		if (v->dcc_enabled_in_any_plane == dcn_bw_yes && v->return_bw_todcn_per_state > v->dcfclk_per_state[i] * v->return_bus_width / 4.0) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   223  			v->return_bw_per_state[i] =dcn_bw_min2(v->return_bw_per_state[i], v->return_bw_todcn_per_state * 4.0 * (1.0 - v->urgent_latency / ((v->rob_buffer_size_in_kbyte - v->pixel_chunk_size_in_kbyte) * 1024.0 / (v->return_bw_todcn_per_state - v->dcfclk_per_state[i] * v->return_bus_width / 4.0) + v->urgent_latency)));
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   224  		}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   225  		v->critical_point = 2.0 * v->return_bus_width * v->dcfclk_per_state[i] * v->urgent_latency / (v->return_bw_todcn_per_state * v->urgent_latency + (v->rob_buffer_size_in_kbyte - v->pixel_chunk_size_in_kbyte) * 1024.0);
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   226  		if (v->dcc_enabled_in_any_plane == dcn_bw_yes && v->critical_point > 1.0 && v->critical_point < 4.0) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   227  			v->return_bw_per_state[i] =dcn_bw_min2(v->return_bw_per_state[i], dcn_bw_pow(4.0 * v->return_bw_todcn_per_state * (v->rob_buffer_size_in_kbyte - v->pixel_chunk_size_in_kbyte) * 1024.0 * v->return_bus_width * v->dcfclk_per_state[i] * v->urgent_latency / (v->return_bw_todcn_per_state * v->urgent_latency + (v->rob_buffer_size_in_kbyte - v->pixel_chunk_size_in_kbyte) * 1024.0), 2));
74c49c7ac14f3a Harry Wentland     2017-05-08   228  		}
74c49c7ac14f3a Harry Wentland     2017-05-08   229  	}
74c49c7ac14f3a Harry Wentland     2017-05-08   230  	for (i = 0; i <= number_of_states_plus_one; i++) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   231  		if ((v->total_read_bandwidth_consumed_gbyte_per_second * 1000.0 <= v->return_bw_per_state[i]) && (v->total_bandwidth_consumed_gbyte_per_second * 1000.0 <= v->fabric_and_dram_bandwidth_per_state[i] * 1000.0 * v->percent_of_ideal_drambw_received_after_urg_latency / 100.0)) {
74c49c7ac14f3a Harry Wentland     2017-05-08   232  			v->bandwidth_support[i] = dcn_bw_yes;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   233  		}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   234  		else {
74c49c7ac14f3a Harry Wentland     2017-05-08   235  			v->bandwidth_support[i] = dcn_bw_no;
74c49c7ac14f3a Harry Wentland     2017-05-08   236  		}
74c49c7ac14f3a Harry Wentland     2017-05-08   237  	}
74c49c7ac14f3a Harry Wentland     2017-05-08   238  	/*writeback latency support check*/
74c49c7ac14f3a Harry Wentland     2017-05-08   239  
74c49c7ac14f3a Harry Wentland     2017-05-08   240  	v->writeback_latency_support = dcn_bw_yes;
74c49c7ac14f3a Harry Wentland     2017-05-08   241  	for (k = 0; k <= v->number_of_active_planes - 1; k++) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   242  		if (v->output[k] == dcn_bw_writeback && v->output_format[k] == dcn_bw_444 && v->scaler_rec_out_width[k] / (v->htotal[k] / v->pixel_clock[k]) * 4.0 > (v->writeback_luma_buffer_size + v->writeback_chroma_buffer_size) * 1024.0 / v->write_back_latency) {
74c49c7ac14f3a Harry Wentland     2017-05-08   243  			v->writeback_latency_support = dcn_bw_no;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   244  		}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   245  		else if (v->output[k] == dcn_bw_writeback && v->scaler_rec_out_width[k] / (v->htotal[k] / v->pixel_clock[k]) >dcn_bw_min2(v->writeback_luma_buffer_size, 2.0 * v->writeback_chroma_buffer_size) * 1024.0 / v->write_back_latency) {
74c49c7ac14f3a Harry Wentland     2017-05-08   246  			v->writeback_latency_support = dcn_bw_no;
74c49c7ac14f3a Harry Wentland     2017-05-08   247  		}
74c49c7ac14f3a Harry Wentland     2017-05-08   248  	}
74c49c7ac14f3a Harry Wentland     2017-05-08   249  	/*re-ordering buffer support check*/
74c49c7ac14f3a Harry Wentland     2017-05-08   250  
74c49c7ac14f3a Harry Wentland     2017-05-08   251  	for (i = 0; i <= number_of_states_plus_one; i++) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   252  		v->urgent_round_trip_and_out_of_order_latency_per_state[i] = (v->round_trip_ping_latency_cycles + 32.0) / v->dcfclk_per_state[i] + v->urgent_out_of_order_return_per_channel * v->number_of_channels / v->return_bw_per_state[i];
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   253  		if ((v->rob_buffer_size_in_kbyte - v->pixel_chunk_size_in_kbyte) * 1024.0 / v->return_bw_per_state[i] > v->urgent_round_trip_and_out_of_order_latency_per_state[i]) {
74c49c7ac14f3a Harry Wentland     2017-05-08   254  			v->rob_support[i] = dcn_bw_yes;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   255  		}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   256  		else {
74c49c7ac14f3a Harry Wentland     2017-05-08   257  			v->rob_support[i] = dcn_bw_no;
74c49c7ac14f3a Harry Wentland     2017-05-08   258  		}
74c49c7ac14f3a Harry Wentland     2017-05-08   259  	}
74c49c7ac14f3a Harry Wentland     2017-05-08   260  	/*display io support check*/
74c49c7ac14f3a Harry Wentland     2017-05-08   261  
74c49c7ac14f3a Harry Wentland     2017-05-08   262  	for (k = 0; k <= v->number_of_active_planes - 1; k++) {
74c49c7ac14f3a Harry Wentland     2017-05-08   263  		if (v->output[k] == dcn_bw_dp && v->dsc_capability == dcn_bw_yes) {
74c49c7ac14f3a Harry Wentland     2017-05-08   264  			if (v->output_format[k] == dcn_bw_420) {
74c49c7ac14f3a Harry Wentland     2017-05-08   265  				v->required_output_bw = v->pixel_clock[k] / 2.0;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   266  			}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   267  			else {
74c49c7ac14f3a Harry Wentland     2017-05-08   268  				v->required_output_bw = v->pixel_clock[k];
74c49c7ac14f3a Harry Wentland     2017-05-08   269  			}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   270  		}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   271  		else if (v->output_format[k] == dcn_bw_420) {
74c49c7ac14f3a Harry Wentland     2017-05-08   272  			v->required_output_bw = v->pixel_clock[k] * 3.0 / 2.0;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   273  		}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   274  		else {
74c49c7ac14f3a Harry Wentland     2017-05-08   275  			v->required_output_bw = v->pixel_clock[k] * 3.0;
74c49c7ac14f3a Harry Wentland     2017-05-08   276  		}
74c49c7ac14f3a Harry Wentland     2017-05-08   277  		if (v->output[k] == dcn_bw_hdmi) {
6dd28867b1f964 Charlene Liu       2017-07-31   278  			v->required_phyclk[k] = v->required_output_bw;
6dd28867b1f964 Charlene Liu       2017-07-31   279  			switch (v->output_deep_color[k]) {
6dd28867b1f964 Charlene Liu       2017-07-31   280  			case dcn_bw_encoder_10bpc:
6dd28867b1f964 Charlene Liu       2017-07-31   281  				v->required_phyclk[k] =  v->required_phyclk[k] * 5.0 / 4;
6dd28867b1f964 Charlene Liu       2017-07-31   282  			break;
6dd28867b1f964 Charlene Liu       2017-07-31   283  			case dcn_bw_encoder_12bpc:
6dd28867b1f964 Charlene Liu       2017-07-31   284  				v->required_phyclk[k] =  v->required_phyclk[k] * 3.0 / 2;
6dd28867b1f964 Charlene Liu       2017-07-31   285  				break;
6dd28867b1f964 Charlene Liu       2017-07-31   286  			default:
6dd28867b1f964 Charlene Liu       2017-07-31   287  				break;
6dd28867b1f964 Charlene Liu       2017-07-31   288  			}
f0f8b2db570bf3 Charlene Liu       2017-07-31   289  			v->required_phyclk[k] = v->required_phyclk[k] / 3.0;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   290  		}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   291  		else if (v->output[k] == dcn_bw_dp) {
74c49c7ac14f3a Harry Wentland     2017-05-08   292  			v->required_phyclk[k] = v->required_output_bw / 4.0;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   293  		}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   294  		else {
74c49c7ac14f3a Harry Wentland     2017-05-08   295  			v->required_phyclk[k] = 0.0;
74c49c7ac14f3a Harry Wentland     2017-05-08   296  		}
74c49c7ac14f3a Harry Wentland     2017-05-08   297  	}
74c49c7ac14f3a Harry Wentland     2017-05-08   298  	for (i = 0; i <= number_of_states_plus_one; i++) {
74c49c7ac14f3a Harry Wentland     2017-05-08   299  		v->dio_support[i] = dcn_bw_yes;
74c49c7ac14f3a Harry Wentland     2017-05-08   300  		for (k = 0; k <= v->number_of_active_planes - 1; k++) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   301  			if (v->required_phyclk[k] > v->phyclk_per_state[i] || (v->output[k] == dcn_bw_hdmi && v->required_phyclk[k] > 600.0)) {
74c49c7ac14f3a Harry Wentland     2017-05-08   302  				v->dio_support[i] = dcn_bw_no;
74c49c7ac14f3a Harry Wentland     2017-05-08   303  			}
74c49c7ac14f3a Harry Wentland     2017-05-08   304  		}
74c49c7ac14f3a Harry Wentland     2017-05-08   305  	}
74c49c7ac14f3a Harry Wentland     2017-05-08   306  	/*total available writeback support check*/
74c49c7ac14f3a Harry Wentland     2017-05-08   307  
74c49c7ac14f3a Harry Wentland     2017-05-08   308  	v->total_number_of_active_writeback = 0.0;
74c49c7ac14f3a Harry Wentland     2017-05-08   309  	for (k = 0; k <= v->number_of_active_planes - 1; k++) {
74c49c7ac14f3a Harry Wentland     2017-05-08   310  		if (v->output[k] == dcn_bw_writeback) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   311  			v->total_number_of_active_writeback = v->total_number_of_active_writeback + 1.0;
74c49c7ac14f3a Harry Wentland     2017-05-08   312  		}
74c49c7ac14f3a Harry Wentland     2017-05-08   313  	}
74c49c7ac14f3a Harry Wentland     2017-05-08   314  	if (v->total_number_of_active_writeback <= v->max_num_writeback) {
74c49c7ac14f3a Harry Wentland     2017-05-08   315  		v->total_available_writeback_support = dcn_bw_yes;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   316  	}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   317  	else {
74c49c7ac14f3a Harry Wentland     2017-05-08   318  		v->total_available_writeback_support = dcn_bw_no;
74c49c7ac14f3a Harry Wentland     2017-05-08   319  	}
74c49c7ac14f3a Harry Wentland     2017-05-08   320  	/*maximum dispclk/dppclk support check*/
74c49c7ac14f3a Harry Wentland     2017-05-08   321  
74c49c7ac14f3a Harry Wentland     2017-05-08   322  	for (k = 0; k <= v->number_of_active_planes - 1; k++) {
74c49c7ac14f3a Harry Wentland     2017-05-08   323  		if (v->h_ratio[k] > 1.0) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   324  			v->pscl_factor[k] =dcn_bw_min2(v->max_dchub_topscl_throughput, v->max_pscl_tolb_throughput * v->h_ratio[k] /dcn_bw_ceil2(v->htaps[k] / 6.0, 1.0));
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   325  		}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   326  		else {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   327  			v->pscl_factor[k] =dcn_bw_min2(v->max_dchub_topscl_throughput, v->max_pscl_tolb_throughput);
74c49c7ac14f3a Harry Wentland     2017-05-08   328  		}
74c49c7ac14f3a Harry Wentland     2017-05-08   329  		if (v->byte_per_pixel_in_detc[k] == 0.0) {
74c49c7ac14f3a Harry Wentland     2017-05-08   330  			v->pscl_factor_chroma[k] = 0.0;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   331  			v->min_dppclk_using_single_dpp[k] = v->pixel_clock[k] *dcn_bw_max3(v->vtaps[k] / 6.0 *dcn_bw_min2(1.0, v->h_ratio[k]), v->h_ratio[k] * v->v_ratio[k] / v->pscl_factor[k], 1.0);
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   332  		}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   333  		else {
74c49c7ac14f3a Harry Wentland     2017-05-08   334  			if (v->h_ratio[k] / 2.0 > 1.0) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   335  				v->pscl_factor_chroma[k] =dcn_bw_min2(v->max_dchub_topscl_throughput, v->max_pscl_tolb_throughput * v->h_ratio[k] / 2.0 /dcn_bw_ceil2(v->hta_pschroma[k] / 6.0, 1.0));
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   336  			}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   337  			else {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   338  				v->pscl_factor_chroma[k] =dcn_bw_min2(v->max_dchub_topscl_throughput, v->max_pscl_tolb_throughput);
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   339  			}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   340  			v->min_dppclk_using_single_dpp[k] = v->pixel_clock[k] *dcn_bw_max5(v->vtaps[k] / 6.0 *dcn_bw_min2(1.0, v->h_ratio[k]), v->h_ratio[k] * v->v_ratio[k] / v->pscl_factor[k], v->vta_pschroma[k] / 6.0 *dcn_bw_min2(1.0, v->h_ratio[k] / 2.0), v->h_ratio[k] * v->v_ratio[k] / 4.0 / v->pscl_factor_chroma[k], 1.0);
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   341  		}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   342  	}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   343  	for (k = 0; k <= v->number_of_active_planes - 1; k++) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   344  		if ((v->source_pixel_format[k] == dcn_bw_rgb_sub_64 || v->source_pixel_format[k] == dcn_bw_rgb_sub_32 || v->source_pixel_format[k] == dcn_bw_rgb_sub_16)) {
74c49c7ac14f3a Harry Wentland     2017-05-08   345  			if (v->source_surface_mode[k] == dcn_bw_sw_linear) {
74c49c7ac14f3a Harry Wentland     2017-05-08   346  				v->read256_block_height_y[k] = 1.0;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   347  			}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   348  			else if (v->source_pixel_format[k] == dcn_bw_rgb_sub_64) {
74c49c7ac14f3a Harry Wentland     2017-05-08   349  				v->read256_block_height_y[k] = 4.0;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   350  			}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   351  			else {
74c49c7ac14f3a Harry Wentland     2017-05-08   352  				v->read256_block_height_y[k] = 8.0;
74c49c7ac14f3a Harry Wentland     2017-05-08   353  			}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   354  			v->read256_block_width_y[k] = 256.0 /dcn_bw_ceil2(v->byte_per_pixel_in_dety[k], 1.0) / v->read256_block_height_y[k];
74c49c7ac14f3a Harry Wentland     2017-05-08   355  			v->read256_block_height_c[k] = 0.0;
74c49c7ac14f3a Harry Wentland     2017-05-08   356  			v->read256_block_width_c[k] = 0.0;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   357  		}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   358  		else {
74c49c7ac14f3a Harry Wentland     2017-05-08   359  			if (v->source_surface_mode[k] == dcn_bw_sw_linear) {
74c49c7ac14f3a Harry Wentland     2017-05-08   360  				v->read256_block_height_y[k] = 1.0;
74c49c7ac14f3a Harry Wentland     2017-05-08   361  				v->read256_block_height_c[k] = 1.0;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   362  			}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   363  			else if (v->source_pixel_format[k] == dcn_bw_yuv420_sub_8) {
74c49c7ac14f3a Harry Wentland     2017-05-08   364  				v->read256_block_height_y[k] = 16.0;
74c49c7ac14f3a Harry Wentland     2017-05-08   365  				v->read256_block_height_c[k] = 8.0;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   366  			}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   367  			else {
74c49c7ac14f3a Harry Wentland     2017-05-08   368  				v->read256_block_height_y[k] = 8.0;
74c49c7ac14f3a Harry Wentland     2017-05-08   369  				v->read256_block_height_c[k] = 8.0;
74c49c7ac14f3a Harry Wentland     2017-05-08   370  			}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   371  			v->read256_block_width_y[k] = 256.0 /dcn_bw_ceil2(v->byte_per_pixel_in_dety[k], 1.0) / v->read256_block_height_y[k];
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   372  			v->read256_block_width_c[k] = 256.0 /dcn_bw_ceil2(v->byte_per_pixel_in_detc[k], 2.0) / v->read256_block_height_c[k];
74c49c7ac14f3a Harry Wentland     2017-05-08   373  		}
74c49c7ac14f3a Harry Wentland     2017-05-08   374  		if (v->source_scan[k] == dcn_bw_hor) {
74c49c7ac14f3a Harry Wentland     2017-05-08   375  			v->max_swath_height_y[k] = v->read256_block_height_y[k];
74c49c7ac14f3a Harry Wentland     2017-05-08   376  			v->max_swath_height_c[k] = v->read256_block_height_c[k];
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   377  		}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   378  		else {
74c49c7ac14f3a Harry Wentland     2017-05-08   379  			v->max_swath_height_y[k] = v->read256_block_width_y[k];
74c49c7ac14f3a Harry Wentland     2017-05-08   380  			v->max_swath_height_c[k] = v->read256_block_width_c[k];
74c49c7ac14f3a Harry Wentland     2017-05-08   381  		}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   382  		if ((v->source_pixel_format[k] == dcn_bw_rgb_sub_64 || v->source_pixel_format[k] == dcn_bw_rgb_sub_32 || v->source_pixel_format[k] == dcn_bw_rgb_sub_16)) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   383  			if (v->source_surface_mode[k] == dcn_bw_sw_linear || (v->source_pixel_format[k] == dcn_bw_rgb_sub_64 && (v->source_surface_mode[k] == dcn_bw_sw_4_kb_s || v->source_surface_mode[k] == dcn_bw_sw_4_kb_s_x || v->source_surface_mode[k] == dcn_bw_sw_64_kb_s || v->source_surface_mode[k] == dcn_bw_sw_64_kb_s_t || v->source_surface_mode[k] == dcn_bw_sw_64_kb_s_x || v->source_surface_mode[k] == dcn_bw_sw_var_s || v->source_surface_mode[k] == dcn_bw_sw_var_s_x) && v->source_scan[k] == dcn_bw_hor)) {
74c49c7ac14f3a Harry Wentland     2017-05-08   384  				v->min_swath_height_y[k] = v->max_swath_height_y[k];
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   385  			}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   386  			else {
74c49c7ac14f3a Harry Wentland     2017-05-08   387  				v->min_swath_height_y[k] = v->max_swath_height_y[k] / 2.0;
74c49c7ac14f3a Harry Wentland     2017-05-08   388  			}
74c49c7ac14f3a Harry Wentland     2017-05-08   389  			v->min_swath_height_c[k] = v->max_swath_height_c[k];
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   390  		}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   391  		else {
74c49c7ac14f3a Harry Wentland     2017-05-08   392  			if (v->source_surface_mode[k] == dcn_bw_sw_linear) {
74c49c7ac14f3a Harry Wentland     2017-05-08   393  				v->min_swath_height_y[k] = v->max_swath_height_y[k];
74c49c7ac14f3a Harry Wentland     2017-05-08   394  				v->min_swath_height_c[k] = v->max_swath_height_c[k];
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   395  			}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   396  			else if (v->source_pixel_format[k] == dcn_bw_yuv420_sub_8 && v->source_scan[k] == dcn_bw_hor) {
74c49c7ac14f3a Harry Wentland     2017-05-08   397  				v->min_swath_height_y[k] = v->max_swath_height_y[k] / 2.0;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   398  				if (v->bug_forcing_luma_and_chroma_request_to_same_size_fixed == dcn_bw_yes) {
74c49c7ac14f3a Harry Wentland     2017-05-08   399  					v->min_swath_height_c[k] = v->max_swath_height_c[k];
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   400  				}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   401  				else {
74c49c7ac14f3a Harry Wentland     2017-05-08   402  					v->min_swath_height_c[k] = v->max_swath_height_c[k] / 2.0;
74c49c7ac14f3a Harry Wentland     2017-05-08   403  				}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   404  			}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   405  			else if (v->source_pixel_format[k] == dcn_bw_yuv420_sub_10 && v->source_scan[k] == dcn_bw_hor) {
74c49c7ac14f3a Harry Wentland     2017-05-08   406  				v->min_swath_height_c[k] = v->max_swath_height_c[k] / 2.0;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   407  				if (v->bug_forcing_luma_and_chroma_request_to_same_size_fixed == dcn_bw_yes) {
74c49c7ac14f3a Harry Wentland     2017-05-08   408  					v->min_swath_height_y[k] = v->max_swath_height_y[k];
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   409  				}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   410  				else {
74c49c7ac14f3a Harry Wentland     2017-05-08   411  					v->min_swath_height_y[k] = v->max_swath_height_y[k] / 2.0;
74c49c7ac14f3a Harry Wentland     2017-05-08   412  				}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   413  			}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   414  			else {
74c49c7ac14f3a Harry Wentland     2017-05-08   415  				v->min_swath_height_y[k] = v->max_swath_height_y[k];
74c49c7ac14f3a Harry Wentland     2017-05-08   416  				v->min_swath_height_c[k] = v->max_swath_height_c[k];
74c49c7ac14f3a Harry Wentland     2017-05-08   417  			}
74c49c7ac14f3a Harry Wentland     2017-05-08   418  		}
74c49c7ac14f3a Harry Wentland     2017-05-08   419  		if (v->source_surface_mode[k] == dcn_bw_sw_linear) {
74c49c7ac14f3a Harry Wentland     2017-05-08   420  			v->maximum_swath_width = 8192.0;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   421  		}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   422  		else {
74c49c7ac14f3a Harry Wentland     2017-05-08   423  			v->maximum_swath_width = 5120.0;
74c49c7ac14f3a Harry Wentland     2017-05-08   424  		}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   425  		v->number_of_dpp_required_for_det_size =dcn_bw_ceil2(v->swath_width_ysingle_dpp[k] /dcn_bw_min2(v->maximum_swath_width, v->det_buffer_size_in_kbyte * 1024.0 / 2.0 / (v->byte_per_pixel_in_dety[k] * v->min_swath_height_y[k] + v->byte_per_pixel_in_detc[k] / 2.0 * v->min_swath_height_c[k])), 1.0);
74c49c7ac14f3a Harry Wentland     2017-05-08   426  		if (v->byte_per_pixel_in_detc[k] == 0.0) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   427  			v->number_of_dpp_required_for_lb_size =dcn_bw_ceil2((v->vtaps[k] +dcn_bw_max2(dcn_bw_ceil2(v->v_ratio[k], 1.0) - 2, 0.0)) * v->swath_width_ysingle_dpp[k] /dcn_bw_max2(v->h_ratio[k], 1.0) * v->lb_bit_per_pixel[k] / v->line_buffer_size, 1.0);
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   428  		}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   429  		else {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   430  			v->number_of_dpp_required_for_lb_size =dcn_bw_max2(dcn_bw_ceil2((v->vtaps[k] +dcn_bw_max2(dcn_bw_ceil2(v->v_ratio[k], 1.0) - 2, 0.0)) * v->swath_width_ysingle_dpp[k] /dcn_bw_max2(v->h_ratio[k], 1.0) * v->lb_bit_per_pixel[k] / v->line_buffer_size, 1.0),dcn_bw_ceil2((v->vta_pschroma[k] +dcn_bw_max2(dcn_bw_ceil2(v->v_ratio[k] / 2.0, 1.0) - 2, 0.0)) * v->swath_width_ysingle_dpp[k] / 2.0 /dcn_bw_max2(v->h_ratio[k] / 2.0, 1.0) * v->lb_bit_per_pixel[k] / v->line_buffer_size, 1.0));
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   431  		}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   432  		v->number_of_dpp_required_for_det_and_lb_size[k] =dcn_bw_max2(v->number_of_dpp_required_for_det_size, v->number_of_dpp_required_for_lb_size);
74c49c7ac14f3a Harry Wentland     2017-05-08   433  	}
74c49c7ac14f3a Harry Wentland     2017-05-08   434  	for (i = 0; i <= number_of_states_plus_one; i++) {
74c49c7ac14f3a Harry Wentland     2017-05-08   435  		for (j = 0; j <= 1; j++) {
74c49c7ac14f3a Harry Wentland     2017-05-08   436  			v->total_number_of_active_dpp[i][j] = 0.0;
74c49c7ac14f3a Harry Wentland     2017-05-08   437  			v->required_dispclk[i][j] = 0.0;
74c49c7ac14f3a Harry Wentland     2017-05-08   438  			v->dispclk_dppclk_support[i][j] = dcn_bw_yes;
74c49c7ac14f3a Harry Wentland     2017-05-08   439  			for (k = 0; k <= v->number_of_active_planes - 1; k++) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   440  				v->min_dispclk_using_single_dpp =dcn_bw_max2(v->pixel_clock[k], v->min_dppclk_using_single_dpp[k] * (j + 1)) * (1.0 + v->downspreading / 100.0);
74c49c7ac14f3a Harry Wentland     2017-05-08   441  				if (v->odm_capability == dcn_bw_yes) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   442  					v->min_dispclk_using_dual_dpp =dcn_bw_max2(v->pixel_clock[k] / 2.0, v->min_dppclk_using_single_dpp[k] / 2.0 * (j + 1)) * (1.0 + v->downspreading / 100.0);
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   443  				}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   444  				else {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   445  					v->min_dispclk_using_dual_dpp =dcn_bw_max2(v->pixel_clock[k], v->min_dppclk_using_single_dpp[k] / 2.0 * (j + 1)) * (1.0 + v->downspreading / 100.0);
74c49c7ac14f3a Harry Wentland     2017-05-08   446  				}
74c49c7ac14f3a Harry Wentland     2017-05-08   447  				if (i < number_of_states) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   448  					v->min_dispclk_using_single_dpp = v->min_dispclk_using_single_dpp * (1.0 + v->dispclk_ramping_margin / 100.0);
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   449  					v->min_dispclk_using_dual_dpp = v->min_dispclk_using_dual_dpp * (1.0 + v->dispclk_ramping_margin / 100.0);
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   450  				}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   451  				if (v->min_dispclk_using_single_dpp <=dcn_bw_min2(v->max_dispclk[i], (j + 1) * v->max_dppclk[i]) && v->number_of_dpp_required_for_det_and_lb_size[k] <= 1.0) {
74c49c7ac14f3a Harry Wentland     2017-05-08   452  					v->no_of_dpp[i][j][k] = 1.0;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   453  					v->required_dispclk[i][j] =dcn_bw_max2(v->required_dispclk[i][j], v->min_dispclk_using_single_dpp);
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   454  				}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   455  				else if (v->min_dispclk_using_dual_dpp <=dcn_bw_min2(v->max_dispclk[i], (j + 1) * v->max_dppclk[i])) {
74c49c7ac14f3a Harry Wentland     2017-05-08   456  					v->no_of_dpp[i][j][k] = 2.0;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   457  					v->required_dispclk[i][j] =dcn_bw_max2(v->required_dispclk[i][j], v->min_dispclk_using_dual_dpp);
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   458  				}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   459  				else {
74c49c7ac14f3a Harry Wentland     2017-05-08   460  					v->no_of_dpp[i][j][k] = 2.0;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   461  					v->required_dispclk[i][j] =dcn_bw_max2(v->required_dispclk[i][j], v->min_dispclk_using_dual_dpp);
74c49c7ac14f3a Harry Wentland     2017-05-08   462  					v->dispclk_dppclk_support[i][j] = dcn_bw_no;
74c49c7ac14f3a Harry Wentland     2017-05-08   463  				}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   464  				v->total_number_of_active_dpp[i][j] = v->total_number_of_active_dpp[i][j] + v->no_of_dpp[i][j][k];
74c49c7ac14f3a Harry Wentland     2017-05-08   465  			}
74c49c7ac14f3a Harry Wentland     2017-05-08   466  			if (v->total_number_of_active_dpp[i][j] > v->max_num_dpp) {
74c49c7ac14f3a Harry Wentland     2017-05-08   467  				v->total_number_of_active_dpp[i][j] = 0.0;
74c49c7ac14f3a Harry Wentland     2017-05-08   468  				v->required_dispclk[i][j] = 0.0;
74c49c7ac14f3a Harry Wentland     2017-05-08   469  				v->dispclk_dppclk_support[i][j] = dcn_bw_yes;
74c49c7ac14f3a Harry Wentland     2017-05-08   470  				for (k = 0; k <= v->number_of_active_planes - 1; k++) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   471  					v->min_dispclk_using_single_dpp =dcn_bw_max2(v->pixel_clock[k], v->min_dppclk_using_single_dpp[k] * (j + 1)) * (1.0 + v->downspreading / 100.0);
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   472  					v->min_dispclk_using_dual_dpp =dcn_bw_max2(v->pixel_clock[k], v->min_dppclk_using_single_dpp[k] / 2.0 * (j + 1)) * (1.0 + v->downspreading / 100.0);
74c49c7ac14f3a Harry Wentland     2017-05-08   473  					if (i < number_of_states) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   474  						v->min_dispclk_using_single_dpp = v->min_dispclk_using_single_dpp * (1.0 + v->dispclk_ramping_margin / 100.0);
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   475  						v->min_dispclk_using_dual_dpp = v->min_dispclk_using_dual_dpp * (1.0 + v->dispclk_ramping_margin / 100.0);
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   476  					}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   477  					if (v->number_of_dpp_required_for_det_and_lb_size[k] <= 1.0) {
74c49c7ac14f3a Harry Wentland     2017-05-08   478  						v->no_of_dpp[i][j][k] = 1.0;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   479  						v->required_dispclk[i][j] =dcn_bw_max2(v->required_dispclk[i][j], v->min_dispclk_using_single_dpp);
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   480  						if (v->min_dispclk_using_single_dpp >dcn_bw_min2(v->max_dispclk[i], (j + 1) * v->max_dppclk[i])) {
74c49c7ac14f3a Harry Wentland     2017-05-08   481  							v->dispclk_dppclk_support[i][j] = dcn_bw_no;
74c49c7ac14f3a Harry Wentland     2017-05-08   482  						}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   483  					}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   484  					else {
74c49c7ac14f3a Harry Wentland     2017-05-08   485  						v->no_of_dpp[i][j][k] = 2.0;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   486  						v->required_dispclk[i][j] =dcn_bw_max2(v->required_dispclk[i][j], v->min_dispclk_using_dual_dpp);
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   487  						if (v->min_dispclk_using_dual_dpp >dcn_bw_min2(v->max_dispclk[i], (j + 1) * v->max_dppclk[i])) {
74c49c7ac14f3a Harry Wentland     2017-05-08   488  							v->dispclk_dppclk_support[i][j] = dcn_bw_no;
74c49c7ac14f3a Harry Wentland     2017-05-08   489  						}
74c49c7ac14f3a Harry Wentland     2017-05-08   490  					}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   491  					v->total_number_of_active_dpp[i][j] = v->total_number_of_active_dpp[i][j] + v->no_of_dpp[i][j][k];
74c49c7ac14f3a Harry Wentland     2017-05-08   492  				}
74c49c7ac14f3a Harry Wentland     2017-05-08   493  			}
74c49c7ac14f3a Harry Wentland     2017-05-08   494  		}
74c49c7ac14f3a Harry Wentland     2017-05-08   495  	}
74c49c7ac14f3a Harry Wentland     2017-05-08   496  	/*viewport size check*/
74c49c7ac14f3a Harry Wentland     2017-05-08   497  
74c49c7ac14f3a Harry Wentland     2017-05-08   498  	v->viewport_size_support = dcn_bw_yes;
74c49c7ac14f3a Harry Wentland     2017-05-08   499  	for (k = 0; k <= v->number_of_active_planes - 1; k++) {
74c49c7ac14f3a Harry Wentland     2017-05-08   500  		if (v->number_of_dpp_required_for_det_and_lb_size[k] > 2.0) {
74c49c7ac14f3a Harry Wentland     2017-05-08   501  			v->viewport_size_support = dcn_bw_no;
74c49c7ac14f3a Harry Wentland     2017-05-08   502  		}
74c49c7ac14f3a Harry Wentland     2017-05-08   503  	}
74c49c7ac14f3a Harry Wentland     2017-05-08   504  	/*total available pipes support check*/
74c49c7ac14f3a Harry Wentland     2017-05-08   505  
74c49c7ac14f3a Harry Wentland     2017-05-08   506  	for (i = 0; i <= number_of_states_plus_one; i++) {
74c49c7ac14f3a Harry Wentland     2017-05-08   507  		for (j = 0; j <= 1; j++) {
74c49c7ac14f3a Harry Wentland     2017-05-08   508  			if (v->total_number_of_active_dpp[i][j] <= v->max_num_dpp) {
74c49c7ac14f3a Harry Wentland     2017-05-08   509  				v->total_available_pipes_support[i][j] = dcn_bw_yes;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   510  			}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   511  			else {
74c49c7ac14f3a Harry Wentland     2017-05-08   512  				v->total_available_pipes_support[i][j] = dcn_bw_no;
74c49c7ac14f3a Harry Wentland     2017-05-08   513  			}
74c49c7ac14f3a Harry Wentland     2017-05-08   514  		}
74c49c7ac14f3a Harry Wentland     2017-05-08   515  	}
74c49c7ac14f3a Harry Wentland     2017-05-08   516  	/*urgent latency support check*/
74c49c7ac14f3a Harry Wentland     2017-05-08   517  
74c49c7ac14f3a Harry Wentland     2017-05-08   518  	for (k = 0; k <= v->number_of_active_planes - 1; k++) {
74c49c7ac14f3a Harry Wentland     2017-05-08   519  		for (i = 0; i <= number_of_states_plus_one; i++) {
74c49c7ac14f3a Harry Wentland     2017-05-08   520  			for (j = 0; j <= 1; j++) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   521  				v->swath_width_yper_state[i][j][k] = v->swath_width_ysingle_dpp[k] / v->no_of_dpp[i][j][k];
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   522  				v->swath_width_granularity_y = 256.0 /dcn_bw_ceil2(v->byte_per_pixel_in_dety[k], 1.0) / v->max_swath_height_y[k];
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   523  				v->rounded_up_max_swath_size_bytes_y = (dcn_bw_ceil2(v->swath_width_yper_state[i][j][k] - 1.0, v->swath_width_granularity_y) + v->swath_width_granularity_y) * v->byte_per_pixel_in_dety[k] * v->max_swath_height_y[k];
74c49c7ac14f3a Harry Wentland     2017-05-08   524  				if (v->source_pixel_format[k] == dcn_bw_yuv420_sub_10) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   525  					v->rounded_up_max_swath_size_bytes_y =dcn_bw_ceil2(v->rounded_up_max_swath_size_bytes_y, 256.0) + 256;
74c49c7ac14f3a Harry Wentland     2017-05-08   526  				}
74c49c7ac14f3a Harry Wentland     2017-05-08   527  				if (v->max_swath_height_c[k] > 0.0) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   528  					v->swath_width_granularity_c = 256.0 /dcn_bw_ceil2(v->byte_per_pixel_in_detc[k], 2.0) / v->max_swath_height_c[k];
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   529  				}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   530  				v->rounded_up_max_swath_size_bytes_c = (dcn_bw_ceil2(v->swath_width_yper_state[i][j][k] / 2.0 - 1.0, v->swath_width_granularity_c) + v->swath_width_granularity_c) * v->byte_per_pixel_in_detc[k] * v->max_swath_height_c[k];
74c49c7ac14f3a Harry Wentland     2017-05-08   531  				if (v->source_pixel_format[k] == dcn_bw_yuv420_sub_10) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   532  					v->rounded_up_max_swath_size_bytes_c =dcn_bw_ceil2(v->rounded_up_max_swath_size_bytes_c, 256.0) + 256;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   533  				}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   534  				if (v->rounded_up_max_swath_size_bytes_y + v->rounded_up_max_swath_size_bytes_c <= v->det_buffer_size_in_kbyte * 1024.0 / 2.0) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   535  					v->swath_height_yper_state[i][j][k] = v->max_swath_height_y[k];
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   536  					v->swath_height_cper_state[i][j][k] = v->max_swath_height_c[k];
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   537  				}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   538  				else {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   539  					v->swath_height_yper_state[i][j][k] = v->min_swath_height_y[k];
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   540  					v->swath_height_cper_state[i][j][k] = v->min_swath_height_c[k];
74c49c7ac14f3a Harry Wentland     2017-05-08   541  				}
74c49c7ac14f3a Harry Wentland     2017-05-08   542  				if (v->byte_per_pixel_in_detc[k] == 0.0) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   543  					v->lines_in_det_luma = v->det_buffer_size_in_kbyte * 1024.0 / v->byte_per_pixel_in_dety[k] / v->swath_width_yper_state[i][j][k];
74c49c7ac14f3a Harry Wentland     2017-05-08   544  					v->lines_in_det_chroma = 0.0;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   545  				}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   546  				else if (v->swath_height_yper_state[i][j][k] <= v->swath_height_cper_state[i][j][k]) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   547  					v->lines_in_det_luma = v->det_buffer_size_in_kbyte * 1024.0 / 2.0 / v->byte_per_pixel_in_dety[k] / v->swath_width_yper_state[i][j][k];
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   548  					v->lines_in_det_chroma = v->det_buffer_size_in_kbyte * 1024.0 / 2.0 / v->byte_per_pixel_in_detc[k] / (v->swath_width_yper_state[i][j][k] / 2.0);
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   549  				}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   550  				else {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   551  					v->lines_in_det_luma = v->det_buffer_size_in_kbyte * 1024.0 * 2.0 / 3.0 / v->byte_per_pixel_in_dety[k] / v->swath_width_yper_state[i][j][k];
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   552  					v->lines_in_det_chroma = v->det_buffer_size_in_kbyte * 1024.0 / 3.0 / v->byte_per_pixel_in_dety[k] / (v->swath_width_yper_state[i][j][k] / 2.0);
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   553  				}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   554  				v->effective_lb_latency_hiding_source_lines_luma =dcn_bw_min2(v->max_line_buffer_lines,dcn_bw_floor2(v->line_buffer_size / v->lb_bit_per_pixel[k] / (v->swath_width_yper_state[i][j][k] /dcn_bw_max2(v->h_ratio[k], 1.0)), 1.0)) - (v->vtaps[k] - 1.0);
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   555  				v->effective_lb_latency_hiding_source_lines_chroma =dcn_bw_min2(v->max_line_buffer_lines,dcn_bw_floor2(v->line_buffer_size / v->lb_bit_per_pixel[k] / (v->swath_width_yper_state[i][j][k] / 2.0 /dcn_bw_max2(v->h_ratio[k] / 2.0, 1.0)), 1.0)) - (v->vta_pschroma[k] - 1.0);
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   556  				v->effective_detlb_lines_luma =dcn_bw_floor2(v->lines_in_det_luma +dcn_bw_min2(v->lines_in_det_luma * v->required_dispclk[i][j] * v->byte_per_pixel_in_dety[k] * v->pscl_factor[k] / v->return_bw_per_state[i], v->effective_lb_latency_hiding_source_lines_luma), v->swath_height_yper_state[i][j][k]);
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   557  				v->effective_detlb_lines_chroma =dcn_bw_floor2(v->lines_in_det_chroma +dcn_bw_min2(v->lines_in_det_chroma * v->required_dispclk[i][j] * v->byte_per_pixel_in_detc[k] * v->pscl_factor_chroma[k] / v->return_bw_per_state[i], v->effective_lb_latency_hiding_source_lines_chroma), v->swath_height_cper_state[i][j][k]);
74c49c7ac14f3a Harry Wentland     2017-05-08   558  				if (v->byte_per_pixel_in_detc[k] == 0.0) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   559  					v->urgent_latency_support_us_per_state[i][j][k] = v->effective_detlb_lines_luma * (v->htotal[k] / v->pixel_clock[k]) / v->v_ratio[k] - v->effective_detlb_lines_luma * v->swath_width_yper_state[i][j][k] *dcn_bw_ceil2(v->byte_per_pixel_in_dety[k], 1.0) / (v->return_bw_per_state[i] / v->no_of_dpp[i][j][k]);
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   560  				}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   561  				else {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   562  					v->urgent_latency_support_us_per_state[i][j][k] =dcn_bw_min2(v->effective_detlb_lines_luma * (v->htotal[k] / v->pixel_clock[k]) / v->v_ratio[k] - v->effective_detlb_lines_luma * v->swath_width_yper_state[i][j][k] *dcn_bw_ceil2(v->byte_per_pixel_in_dety[k], 1.0) / (v->return_bw_per_state[i] / v->no_of_dpp[i][j][k]), v->effective_detlb_lines_chroma * (v->htotal[k] / v->pixel_clock[k]) / (v->v_ratio[k] / 2.0) - v->effective_detlb_lines_chroma * v->swath_width_yper_state[i][j][k] / 2.0 *dcn_bw_ceil2(v->byte_per_pixel_in_detc[k], 2.0) / (v->return_bw_per_state[i] / v->no_of_dpp[i][j][k]));
74c49c7ac14f3a Harry Wentland     2017-05-08   563  				}
74c49c7ac14f3a Harry Wentland     2017-05-08   564  			}
74c49c7ac14f3a Harry Wentland     2017-05-08   565  		}
74c49c7ac14f3a Harry Wentland     2017-05-08   566  	}
74c49c7ac14f3a Harry Wentland     2017-05-08   567  	for (i = 0; i <= number_of_states_plus_one; i++) {
74c49c7ac14f3a Harry Wentland     2017-05-08   568  		for (j = 0; j <= 1; j++) {
74c49c7ac14f3a Harry Wentland     2017-05-08   569  			v->urgent_latency_support[i][j] = dcn_bw_yes;
74c49c7ac14f3a Harry Wentland     2017-05-08   570  			for (k = 0; k <= v->number_of_active_planes - 1; k++) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   571  				if (v->urgent_latency_support_us_per_state[i][j][k] < v->urgent_latency / 1.0) {
74c49c7ac14f3a Harry Wentland     2017-05-08   572  					v->urgent_latency_support[i][j] = dcn_bw_no;
74c49c7ac14f3a Harry Wentland     2017-05-08   573  				}
74c49c7ac14f3a Harry Wentland     2017-05-08   574  			}
74c49c7ac14f3a Harry Wentland     2017-05-08   575  		}
74c49c7ac14f3a Harry Wentland     2017-05-08   576  	}
74c49c7ac14f3a Harry Wentland     2017-05-08   577  	/*prefetch check*/
74c49c7ac14f3a Harry Wentland     2017-05-08   578  
74c49c7ac14f3a Harry Wentland     2017-05-08   579  	for (i = 0; i <= number_of_states_plus_one; i++) {
74c49c7ac14f3a Harry Wentland     2017-05-08   580  		for (j = 0; j <= 1; j++) {
74c49c7ac14f3a Harry Wentland     2017-05-08   581  			v->total_number_of_dcc_active_dpp[i][j] = 0.0;
74c49c7ac14f3a Harry Wentland     2017-05-08   582  			for (k = 0; k <= v->number_of_active_planes - 1; k++) {
74c49c7ac14f3a Harry Wentland     2017-05-08   583  				if (v->dcc_enable[k] == dcn_bw_yes) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   584  					v->total_number_of_dcc_active_dpp[i][j] = v->total_number_of_dcc_active_dpp[i][j] + v->no_of_dpp[i][j][k];
74c49c7ac14f3a Harry Wentland     2017-05-08   585  				}
74c49c7ac14f3a Harry Wentland     2017-05-08   586  			}
74c49c7ac14f3a Harry Wentland     2017-05-08   587  		}
74c49c7ac14f3a Harry Wentland     2017-05-08   588  	}
74c49c7ac14f3a Harry Wentland     2017-05-08   589  	for (i = 0; i <= number_of_states_plus_one; i++) {
74c49c7ac14f3a Harry Wentland     2017-05-08   590  		for (j = 0; j <= 1; j++) {
74c49c7ac14f3a Harry Wentland     2017-05-08   591  			v->projected_dcfclk_deep_sleep = 8.0;
74c49c7ac14f3a Harry Wentland     2017-05-08   592  			for (k = 0; k <= v->number_of_active_planes - 1; k++) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   593  				v->projected_dcfclk_deep_sleep =dcn_bw_max2(v->projected_dcfclk_deep_sleep, v->pixel_clock[k] / 16.0);
74c49c7ac14f3a Harry Wentland     2017-05-08   594  				if (v->byte_per_pixel_in_detc[k] == 0.0) {
74c49c7ac14f3a Harry Wentland     2017-05-08   595  					if (v->v_ratio[k] <= 1.0) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   596  						v->projected_dcfclk_deep_sleep =dcn_bw_max2(v->projected_dcfclk_deep_sleep, 1.1 *dcn_bw_ceil2(v->byte_per_pixel_in_dety[k], 1.0) / 64.0 * v->h_ratio[k] * v->pixel_clock[k] / v->no_of_dpp[i][j][k]);
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   597  					}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   598  					else {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   599  						v->projected_dcfclk_deep_sleep =dcn_bw_max2(v->projected_dcfclk_deep_sleep, 1.1 *dcn_bw_ceil2(v->byte_per_pixel_in_dety[k], 1.0) / 64.0 * v->pscl_factor[k] * v->required_dispclk[i][j] / (1 + j));
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   600  					}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   601  				}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   602  				else {
74c49c7ac14f3a Harry Wentland     2017-05-08   603  					if (v->v_ratio[k] <= 1.0) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   604  						v->projected_dcfclk_deep_sleep =dcn_bw_max2(v->projected_dcfclk_deep_sleep, 1.1 *dcn_bw_ceil2(v->byte_per_pixel_in_dety[k], 1.0) / 32.0 * v->h_ratio[k] * v->pixel_clock[k] / v->no_of_dpp[i][j][k]);
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   605  					}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   606  					else {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   607  						v->projected_dcfclk_deep_sleep =dcn_bw_max2(v->projected_dcfclk_deep_sleep, 1.1 *dcn_bw_ceil2(v->byte_per_pixel_in_dety[k], 1.0) / 32.0 * v->pscl_factor[k] * v->required_dispclk[i][j] / (1 + j));
74c49c7ac14f3a Harry Wentland     2017-05-08   608  					}
74c49c7ac14f3a Harry Wentland     2017-05-08   609  					if (v->v_ratio[k] / 2.0 <= 1.0) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   610  						v->projected_dcfclk_deep_sleep =dcn_bw_max2(v->projected_dcfclk_deep_sleep, 1.1 *dcn_bw_ceil2(v->byte_per_pixel_in_detc[k], 2.0) / 32.0 * v->h_ratio[k] / 2.0 * v->pixel_clock[k] / v->no_of_dpp[i][j][k]);
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   611  					}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   612  					else {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   613  						v->projected_dcfclk_deep_sleep =dcn_bw_max2(v->projected_dcfclk_deep_sleep, 1.1 *dcn_bw_ceil2(v->byte_per_pixel_in_detc[k], 2.0) / 32.0 * v->pscl_factor_chroma[k] * v->required_dispclk[i][j] / (1 + j));
74c49c7ac14f3a Harry Wentland     2017-05-08   614  					}
74c49c7ac14f3a Harry Wentland     2017-05-08   615  				}
74c49c7ac14f3a Harry Wentland     2017-05-08   616  			}
74c49c7ac14f3a Harry Wentland     2017-05-08   617  			for (k = 0; k <= v->number_of_active_planes - 1; k++) {
74c49c7ac14f3a Harry Wentland     2017-05-08   618  				if (v->dcc_enable[k] == dcn_bw_yes) {
74c49c7ac14f3a Harry Wentland     2017-05-08   619  					v->meta_req_height_y = 8.0 * v->read256_block_height_y[k];
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   620  					v->meta_req_width_y = 64.0 * 256.0 /dcn_bw_ceil2(v->byte_per_pixel_in_dety[k], 1.0) / v->meta_req_height_y;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   621  					v->meta_surface_width_y =dcn_bw_ceil2(v->viewport_width[k] / v->no_of_dpp[i][j][k] - 1.0, v->meta_req_width_y) + v->meta_req_width_y;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   622  					v->meta_surface_height_y =dcn_bw_ceil2(v->viewport_height[k] - 1.0, v->meta_req_height_y) + v->meta_req_height_y;
74c49c7ac14f3a Harry Wentland     2017-05-08   623  					if (v->pte_enable == dcn_bw_yes) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   624  						v->meta_pte_bytes_per_frame_y = (dcn_bw_ceil2((v->meta_surface_width_y * v->meta_surface_height_y *dcn_bw_ceil2(v->byte_per_pixel_in_dety[k], 1.0) / 256.0 - 4096.0) / 8.0 / 4096.0, 1.0) + 1) * 64.0;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   625  					}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   626  					else {
74c49c7ac14f3a Harry Wentland     2017-05-08   627  						v->meta_pte_bytes_per_frame_y = 0.0;
74c49c7ac14f3a Harry Wentland     2017-05-08   628  					}
74c49c7ac14f3a Harry Wentland     2017-05-08   629  					if (v->source_scan[k] == dcn_bw_hor) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   630  						v->meta_row_bytes_y = v->meta_surface_width_y * v->meta_req_height_y *dcn_bw_ceil2(v->byte_per_pixel_in_dety[k], 1.0) / 256.0;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   631  					}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   632  					else {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   633  						v->meta_row_bytes_y = v->meta_surface_height_y * v->meta_req_width_y *dcn_bw_ceil2(v->byte_per_pixel_in_dety[k], 1.0) / 256.0;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   634  					}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   635  				}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   636  				else {
74c49c7ac14f3a Harry Wentland     2017-05-08   637  					v->meta_pte_bytes_per_frame_y = 0.0;
74c49c7ac14f3a Harry Wentland     2017-05-08   638  					v->meta_row_bytes_y = 0.0;
74c49c7ac14f3a Harry Wentland     2017-05-08   639  				}
74c49c7ac14f3a Harry Wentland     2017-05-08   640  				if (v->pte_enable == dcn_bw_yes) {
74c49c7ac14f3a Harry Wentland     2017-05-08   641  					if (v->source_surface_mode[k] == dcn_bw_sw_linear) {
74c49c7ac14f3a Harry Wentland     2017-05-08   642  						v->macro_tile_block_size_bytes_y = 256.0;
74c49c7ac14f3a Harry Wentland     2017-05-08   643  						v->macro_tile_block_height_y = 1.0;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   644  					}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   645  					else if (v->source_surface_mode[k] == dcn_bw_sw_4_kb_s || v->source_surface_mode[k] == dcn_bw_sw_4_kb_s_x || v->source_surface_mode[k] == dcn_bw_sw_4_kb_d || v->source_surface_mode[k] == dcn_bw_sw_4_kb_d_x) {
74c49c7ac14f3a Harry Wentland     2017-05-08   646  						v->macro_tile_block_size_bytes_y = 4096.0;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   647  						v->macro_tile_block_height_y = 4.0 * v->read256_block_height_y[k];
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   648  					}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   649  					else if (v->source_surface_mode[k] == dcn_bw_sw_64_kb_s || v->source_surface_mode[k] == dcn_bw_sw_64_kb_s_t || v->source_surface_mode[k] == dcn_bw_sw_64_kb_s_x || v->source_surface_mode[k] == dcn_bw_sw_64_kb_d || v->source_surface_mode[k] == dcn_bw_sw_64_kb_d_t || v->source_surface_mode[k] == dcn_bw_sw_64_kb_d_x) {
74c49c7ac14f3a Harry Wentland     2017-05-08   650  						v->macro_tile_block_size_bytes_y = 64.0 * 1024;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   651  						v->macro_tile_block_height_y = 16.0 * v->read256_block_height_y[k];
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   652  					}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   653  					else {
74c49c7ac14f3a Harry Wentland     2017-05-08   654  						v->macro_tile_block_size_bytes_y = 256.0 * 1024;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   655  						v->macro_tile_block_height_y = 32.0 * v->read256_block_height_y[k];
74c49c7ac14f3a Harry Wentland     2017-05-08   656  					}
74c49c7ac14f3a Harry Wentland     2017-05-08   657  					if (v->macro_tile_block_size_bytes_y <= 65536.0) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   658  						v->data_pte_req_height_y = v->macro_tile_block_height_y;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   659  					}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   660  					else {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   661  						v->data_pte_req_height_y = 16.0 * v->read256_block_height_y[k];
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   662  					}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   663  					v->data_pte_req_width_y = 4096.0 /dcn_bw_ceil2(v->byte_per_pixel_in_dety[k], 1.0) / v->data_pte_req_height_y * 8;
74c49c7ac14f3a Harry Wentland     2017-05-08   664  					if (v->source_surface_mode[k] == dcn_bw_sw_linear) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   665  						v->dpte_bytes_per_row_y = 64.0 * (dcn_bw_ceil2((v->viewport_width[k] / v->no_of_dpp[i][j][k] *dcn_bw_min2(128.0, dcn_bw_pow(2.0,dcn_bw_floor2(dcn_bw_log(v->pte_buffer_size_in_requests * v->data_pte_req_width_y / (v->viewport_width[k] / v->no_of_dpp[i][j][k]), 2.0), 1.0))) - 1.0) / v->data_pte_req_width_y, 1.0) + 1);
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   666  					}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   667  					else if (v->source_scan[k] == dcn_bw_hor) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   668  						v->dpte_bytes_per_row_y = 64.0 * (dcn_bw_ceil2((v->viewport_width[k] / v->no_of_dpp[i][j][k] - 1.0) / v->data_pte_req_width_y, 1.0) + 1);
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   669  					}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   670  					else {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   671  						v->dpte_bytes_per_row_y = 64.0 * (dcn_bw_ceil2((v->viewport_height[k] - 1.0) / v->data_pte_req_height_y, 1.0) + 1);
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   672  					}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   673  				}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   674  				else {
74c49c7ac14f3a Harry Wentland     2017-05-08   675  					v->dpte_bytes_per_row_y = 0.0;
74c49c7ac14f3a Harry Wentland     2017-05-08   676  				}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   677  				if ((v->source_pixel_format[k] != dcn_bw_rgb_sub_64 && v->source_pixel_format[k] != dcn_bw_rgb_sub_32 && v->source_pixel_format[k] != dcn_bw_rgb_sub_16)) {
74c49c7ac14f3a Harry Wentland     2017-05-08   678  					if (v->dcc_enable[k] == dcn_bw_yes) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   679  						v->meta_req_height_c = 8.0 * v->read256_block_height_c[k];
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   680  						v->meta_req_width_c = 64.0 * 256.0 /dcn_bw_ceil2(v->byte_per_pixel_in_detc[k], 2.0) / v->meta_req_height_c;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   681  						v->meta_surface_width_c =dcn_bw_ceil2(v->viewport_width[k] / v->no_of_dpp[i][j][k] / 2.0 - 1.0, v->meta_req_width_c) + v->meta_req_width_c;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   682  						v->meta_surface_height_c =dcn_bw_ceil2(v->viewport_height[k] / 2.0 - 1.0, v->meta_req_height_c) + v->meta_req_height_c;
74c49c7ac14f3a Harry Wentland     2017-05-08   683  						if (v->pte_enable == dcn_bw_yes) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   684  							v->meta_pte_bytes_per_frame_c = (dcn_bw_ceil2((v->meta_surface_width_c * v->meta_surface_height_c *dcn_bw_ceil2(v->byte_per_pixel_in_detc[k], 2.0) / 256.0 - 4096.0) / 8.0 / 4096.0, 1.0) + 1) * 64.0;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   685  						}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   686  						else {
74c49c7ac14f3a Harry Wentland     2017-05-08   687  							v->meta_pte_bytes_per_frame_c = 0.0;
74c49c7ac14f3a Harry Wentland     2017-05-08   688  						}
74c49c7ac14f3a Harry Wentland     2017-05-08   689  						if (v->source_scan[k] == dcn_bw_hor) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   690  							v->meta_row_bytes_c = v->meta_surface_width_c * v->meta_req_height_c *dcn_bw_ceil2(v->byte_per_pixel_in_detc[k], 2.0) / 256.0;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   691  						}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   692  						else {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   693  							v->meta_row_bytes_c = v->meta_surface_height_c * v->meta_req_width_c *dcn_bw_ceil2(v->byte_per_pixel_in_detc[k], 2.0) / 256.0;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   694  						}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   695  					}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   696  					else {
74c49c7ac14f3a Harry Wentland     2017-05-08   697  						v->meta_pte_bytes_per_frame_c = 0.0;
74c49c7ac14f3a Harry Wentland     2017-05-08   698  						v->meta_row_bytes_c = 0.0;
74c49c7ac14f3a Harry Wentland     2017-05-08   699  					}
74c49c7ac14f3a Harry Wentland     2017-05-08   700  					if (v->pte_enable == dcn_bw_yes) {
74c49c7ac14f3a Harry Wentland     2017-05-08   701  						if (v->source_surface_mode[k] == dcn_bw_sw_linear) {
74c49c7ac14f3a Harry Wentland     2017-05-08   702  							v->macro_tile_block_size_bytes_c = 256.0;
74c49c7ac14f3a Harry Wentland     2017-05-08   703  							v->macro_tile_block_height_c = 1.0;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   704  						}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   705  						else if (v->source_surface_mode[k] == dcn_bw_sw_4_kb_s || v->source_surface_mode[k] == dcn_bw_sw_4_kb_s_x || v->source_surface_mode[k] == dcn_bw_sw_4_kb_d || v->source_surface_mode[k] == dcn_bw_sw_4_kb_d_x) {
74c49c7ac14f3a Harry Wentland     2017-05-08   706  							v->macro_tile_block_size_bytes_c = 4096.0;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   707  							v->macro_tile_block_height_c = 4.0 * v->read256_block_height_c[k];
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   708  						}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   709  						else if (v->source_surface_mode[k] == dcn_bw_sw_64_kb_s || v->source_surface_mode[k] == dcn_bw_sw_64_kb_s_t || v->source_surface_mode[k] == dcn_bw_sw_64_kb_s_x || v->source_surface_mode[k] == dcn_bw_sw_64_kb_d || v->source_surface_mode[k] == dcn_bw_sw_64_kb_d_t || v->source_surface_mode[k] == dcn_bw_sw_64_kb_d_x) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   710  							v->macro_tile_block_size_bytes_c = 64.0 * 1024;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   711  							v->macro_tile_block_height_c = 16.0 * v->read256_block_height_c[k];
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   712  						}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   713  						else {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   714  							v->macro_tile_block_size_bytes_c = 256.0 * 1024;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   715  							v->macro_tile_block_height_c = 32.0 * v->read256_block_height_c[k];
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   716  						}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   717  						v->macro_tile_block_width_c = v->macro_tile_block_size_bytes_c /dcn_bw_ceil2(v->byte_per_pixel_in_detc[k], 2.0) / v->macro_tile_block_height_c;
74c49c7ac14f3a Harry Wentland     2017-05-08   718  						if (v->macro_tile_block_size_bytes_c <= 65536.0) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   719  							v->data_pte_req_height_c = v->macro_tile_block_height_c;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   720  						}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   721  						else {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   722  							v->data_pte_req_height_c = 16.0 * v->read256_block_height_c[k];
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   723  						}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   724  						v->data_pte_req_width_c = 4096.0 /dcn_bw_ceil2(v->byte_per_pixel_in_detc[k], 2.0) / v->data_pte_req_height_c * 8;
74c49c7ac14f3a Harry Wentland     2017-05-08   725  						if (v->source_surface_mode[k] == dcn_bw_sw_linear) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   726  							v->dpte_bytes_per_row_c = 64.0 * (dcn_bw_ceil2((v->viewport_width[k] / v->no_of_dpp[i][j][k] / 2.0 * dcn_bw_min2(128.0, dcn_bw_pow(2.0,dcn_bw_floor2(dcn_bw_log(v->pte_buffer_size_in_requests * v->data_pte_req_width_c / (v->viewport_width[k] / v->no_of_dpp[i][j][k] / 2.0), 2.0), 1.0))) - 1.0) / v->data_pte_req_width_c, 1.0) + 1);
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   727  						}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   728  						else if (v->source_scan[k] == dcn_bw_hor) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   729  							v->dpte_bytes_per_row_c = 64.0 * (dcn_bw_ceil2((v->viewport_width[k] / v->no_of_dpp[i][j][k] / 2.0 - 1.0) / v->data_pte_req_width_c, 1.0) + 1);
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   730  						}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   731  						else {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   732  							v->dpte_bytes_per_row_c = 64.0 * (dcn_bw_ceil2((v->viewport_height[k] / 2.0 - 1.0) / v->data_pte_req_height_c, 1.0) + 1);
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   733  						}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   734  					}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   735  					else {
74c49c7ac14f3a Harry Wentland     2017-05-08   736  						v->dpte_bytes_per_row_c = 0.0;
74c49c7ac14f3a Harry Wentland     2017-05-08   737  					}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   738  				}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   739  				else {
74c49c7ac14f3a Harry Wentland     2017-05-08   740  					v->dpte_bytes_per_row_c = 0.0;
74c49c7ac14f3a Harry Wentland     2017-05-08   741  					v->meta_pte_bytes_per_frame_c = 0.0;
74c49c7ac14f3a Harry Wentland     2017-05-08   742  					v->meta_row_bytes_c = 0.0;
74c49c7ac14f3a Harry Wentland     2017-05-08   743  				}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   744  				v->dpte_bytes_per_row[k] = v->dpte_bytes_per_row_y + v->dpte_bytes_per_row_c;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   745  				v->meta_pte_bytes_per_frame[k] = v->meta_pte_bytes_per_frame_y + v->meta_pte_bytes_per_frame_c;
74c49c7ac14f3a Harry Wentland     2017-05-08   746  				v->meta_row_bytes[k] = v->meta_row_bytes_y + v->meta_row_bytes_c;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   747  				v->v_init_y = (v->v_ratio[k] + v->vtaps[k] + 1.0 + v->interlace_output[k] * 0.5 * v->v_ratio[k]) / 2.0;
74c49c7ac14f3a Harry Wentland     2017-05-08   748  				v->prefill_y[k] =dcn_bw_floor2(v->v_init_y, 1.0);
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   749  				v->max_num_sw_y[k] =dcn_bw_ceil2((v->prefill_y[k] - 1.0) / v->swath_height_yper_state[i][j][k], 1.0) + 1;
74c49c7ac14f3a Harry Wentland     2017-05-08   750  				if (v->prefill_y[k] > 1.0) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   751  					v->max_partial_sw_y =dcn_bw_mod((v->prefill_y[k] - 2.0), v->swath_height_yper_state[i][j][k]);
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   752  				}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   753  				else {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   754  					v->max_partial_sw_y =dcn_bw_mod((v->prefill_y[k] + v->swath_height_yper_state[i][j][k] - 2.0), v->swath_height_yper_state[i][j][k]);
74c49c7ac14f3a Harry Wentland     2017-05-08   755  				}
74c49c7ac14f3a Harry Wentland     2017-05-08   756  				v->max_partial_sw_y =dcn_bw_max2(1.0, v->max_partial_sw_y);
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   757  				v->prefetch_lines_y[k] = v->max_num_sw_y[k] * v->swath_height_yper_state[i][j][k] + v->max_partial_sw_y;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   758  				if ((v->source_pixel_format[k] != dcn_bw_rgb_sub_64 && v->source_pixel_format[k] != dcn_bw_rgb_sub_32 && v->source_pixel_format[k] != dcn_bw_rgb_sub_16)) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   759  					v->v_init_c = (v->v_ratio[k] / 2.0 + v->vtaps[k] + 1.0 + v->interlace_output[k] * 0.5 * v->v_ratio[k] / 2.0) / 2.0;
74c49c7ac14f3a Harry Wentland     2017-05-08   760  					v->prefill_c[k] =dcn_bw_floor2(v->v_init_c, 1.0);
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   761  					v->max_num_sw_c[k] =dcn_bw_ceil2((v->prefill_c[k] - 1.0) / v->swath_height_cper_state[i][j][k], 1.0) + 1;
74c49c7ac14f3a Harry Wentland     2017-05-08   762  					if (v->prefill_c[k] > 1.0) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   763  						v->max_partial_sw_c =dcn_bw_mod((v->prefill_c[k] - 2.0), v->swath_height_cper_state[i][j][k]);
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   764  					}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   765  					else {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   766  						v->max_partial_sw_c =dcn_bw_mod((v->prefill_c[k] + v->swath_height_cper_state[i][j][k] - 2.0), v->swath_height_cper_state[i][j][k]);
74c49c7ac14f3a Harry Wentland     2017-05-08   767  					}
74c49c7ac14f3a Harry Wentland     2017-05-08   768  					v->max_partial_sw_c =dcn_bw_max2(1.0, v->max_partial_sw_c);
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   769  					v->prefetch_lines_c[k] = v->max_num_sw_c[k] * v->swath_height_cper_state[i][j][k] + v->max_partial_sw_c;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   770  				}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   771  				else {
74c49c7ac14f3a Harry Wentland     2017-05-08   772  					v->prefetch_lines_c[k] = 0.0;
74c49c7ac14f3a Harry Wentland     2017-05-08   773  				}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   774  				v->dst_x_after_scaler = 90.0 * v->pixel_clock[k] / (v->required_dispclk[i][j] / (j + 1)) + 42.0 * v->pixel_clock[k] / v->required_dispclk[i][j];
74c49c7ac14f3a Harry Wentland     2017-05-08   775  				if (v->no_of_dpp[i][j][k] > 1.0) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   776  					v->dst_x_after_scaler = v->dst_x_after_scaler + v->scaler_rec_out_width[k] / 2.0;
74c49c7ac14f3a Harry Wentland     2017-05-08   777  				}
74c49c7ac14f3a Harry Wentland     2017-05-08   778  				if (v->output_format[k] == dcn_bw_420) {
74c49c7ac14f3a Harry Wentland     2017-05-08   779  					v->dst_y_after_scaler = 1.0;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   780  				}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   781  				else {
74c49c7ac14f3a Harry Wentland     2017-05-08   782  					v->dst_y_after_scaler = 0.0;
74c49c7ac14f3a Harry Wentland     2017-05-08   783  				}
74c49c7ac14f3a Harry Wentland     2017-05-08   784  				v->time_calc = 24.0 / v->projected_dcfclk_deep_sleep;
2961fef7058dcd Dmytro Laktyushkin 2017-12-04   785  				v->v_update_offset[k][j] = dcn_bw_ceil2(v->htotal[k] / 4.0, 1.0);
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   786  				v->total_repeater_delay = v->max_inter_dcn_tile_repeaters * (2.0 / (v->required_dispclk[i][j] / (j + 1)) + 3.0 / v->required_dispclk[i][j]);
2961fef7058dcd Dmytro Laktyushkin 2017-12-04   787  				v->v_update_width[k][j] = (14.0 / v->projected_dcfclk_deep_sleep + 12.0 / (v->required_dispclk[i][j] / (j + 1)) + v->total_repeater_delay) * v->pixel_clock[k];
2961fef7058dcd Dmytro Laktyushkin 2017-12-04   788  				v->v_ready_offset[k][j] = dcn_bw_max2(150.0 / (v->required_dispclk[i][j] / (j + 1)), v->total_repeater_delay + 20.0 / v->projected_dcfclk_deep_sleep + 10.0 / (v->required_dispclk[i][j] / (j + 1))) * v->pixel_clock[k];
2961fef7058dcd Dmytro Laktyushkin 2017-12-04   789  				v->time_setup = (v->v_update_offset[k][j] + v->v_update_width[k][j] + v->v_ready_offset[k][j]) / v->pixel_clock[k];
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   790  				v->extra_latency = v->urgent_round_trip_and_out_of_order_latency_per_state[i] + (v->total_number_of_active_dpp[i][j] * v->pixel_chunk_size_in_kbyte + v->total_number_of_dcc_active_dpp[i][j] * v->meta_chunk_size) * 1024.0 / v->return_bw_per_state[i];
74c49c7ac14f3a Harry Wentland     2017-05-08   791  				if (v->pte_enable == dcn_bw_yes) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   792  					v->extra_latency = v->extra_latency + v->total_number_of_active_dpp[i][j] * v->pte_chunk_size * 1024.0 / v->return_bw_per_state[i];
74c49c7ac14f3a Harry Wentland     2017-05-08   793  				}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   794  				if (v->can_vstartup_lines_exceed_vsync_plus_back_porch_lines_minus_one == dcn_bw_yes) {
74c49c7ac14f3a Harry Wentland     2017-05-08   795  					v->maximum_vstartup = v->vtotal[k] - v->vactive[k] - 1.0;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   796  				}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   797  				else {
74c49c7ac14f3a Harry Wentland     2017-05-08   798  					v->maximum_vstartup = v->v_sync_plus_back_porch[k] - 1.0;
74c49c7ac14f3a Harry Wentland     2017-05-08   799  				}
987741af33e5b8 Eric Yang          2018-11-21   800  
987741af33e5b8 Eric Yang          2018-11-21   801  				do {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   802  					v->line_times_for_prefetch[k] = v->maximum_vstartup - v->urgent_latency / (v->htotal[k] / v->pixel_clock[k]) - (v->time_calc + v->time_setup) / (v->htotal[k] / v->pixel_clock[k]) - (v->dst_y_after_scaler + v->dst_x_after_scaler / v->htotal[k]);
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   803  					v->line_times_for_prefetch[k] =dcn_bw_floor2(4.0 * (v->line_times_for_prefetch[k] + 0.125), 1.0) / 4;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   804  					v->prefetch_bw[k] = (v->meta_pte_bytes_per_frame[k] + 2.0 * v->meta_row_bytes[k] + 2.0 * v->dpte_bytes_per_row[k] + v->prefetch_lines_y[k] * v->swath_width_yper_state[i][j][k] *dcn_bw_ceil2(v->byte_per_pixel_in_dety[k], 1.0) + v->prefetch_lines_c[k] * v->swath_width_yper_state[i][j][k] / 2.0 *dcn_bw_ceil2(v->byte_per_pixel_in_detc[k], 2.0)) / (v->line_times_for_prefetch[k] * v->htotal[k] / v->pixel_clock[k]);
987741af33e5b8 Eric Yang          2018-11-21   805  
987741af33e5b8 Eric Yang          2018-11-21   806  					if (v->pte_enable == dcn_bw_yes && v->dcc_enable[k] == dcn_bw_yes) {
987741af33e5b8 Eric Yang          2018-11-21   807  						v->time_for_meta_pte_without_immediate_flip = dcn_bw_max3(
4a673157b8d1e4 Michael Strauss    2020-05-08   808  								v->meta_pte_bytes_frame[k] / v->prefetch_bw[k],
987741af33e5b8 Eric Yang          2018-11-21   809  								v->extra_latency,
987741af33e5b8 Eric Yang          2018-11-21   810  								v->htotal[k] / v->pixel_clock[k] / 4.0);
987741af33e5b8 Eric Yang          2018-11-21   811  					} else {
987741af33e5b8 Eric Yang          2018-11-21   812  						v->time_for_meta_pte_without_immediate_flip = v->htotal[k] / v->pixel_clock[k] / 4.0;
987741af33e5b8 Eric Yang          2018-11-21   813  					}
987741af33e5b8 Eric Yang          2018-11-21   814  
987741af33e5b8 Eric Yang          2018-11-21   815  					if (v->pte_enable == dcn_bw_yes || v->dcc_enable[k] == dcn_bw_yes) {
987741af33e5b8 Eric Yang          2018-11-21   816  						v->time_for_meta_and_dpte_row_without_immediate_flip = dcn_bw_max3((
4a673157b8d1e4 Michael Strauss    2020-05-08   817  								v->meta_row_bytes[k] + v->dpte_bytes_per_row[k]) / v->prefetch_bw[k],
987741af33e5b8 Eric Yang          2018-11-21   818  								v->htotal[k] / v->pixel_clock[k] - v->time_for_meta_pte_without_immediate_flip,
987741af33e5b8 Eric Yang          2018-11-21   819  								v->extra_latency);
987741af33e5b8 Eric Yang          2018-11-21   820  					} else {
987741af33e5b8 Eric Yang          2018-11-21   821  						v->time_for_meta_and_dpte_row_without_immediate_flip = dcn_bw_max2(
987741af33e5b8 Eric Yang          2018-11-21   822  								v->htotal[k] / v->pixel_clock[k] - v->time_for_meta_pte_without_immediate_flip,
987741af33e5b8 Eric Yang          2018-11-21   823  								v->extra_latency - v->time_for_meta_pte_with_immediate_flip);
987741af33e5b8 Eric Yang          2018-11-21   824  					}
987741af33e5b8 Eric Yang          2018-11-21   825  
987741af33e5b8 Eric Yang          2018-11-21   826  					v->lines_for_meta_pte_without_immediate_flip[k] =dcn_bw_floor2(4.0 * (v->time_for_meta_pte_without_immediate_flip / (v->htotal[k] / v->pixel_clock[k]) + 0.125), 1.0) / 4;
987741af33e5b8 Eric Yang          2018-11-21   827  					v->lines_for_meta_and_dpte_row_without_immediate_flip[k] =dcn_bw_floor2(4.0 * (v->time_for_meta_and_dpte_row_without_immediate_flip / (v->htotal[k] / v->pixel_clock[k]) + 0.125), 1.0) / 4;
987741af33e5b8 Eric Yang          2018-11-21   828  					v->maximum_vstartup = v->maximum_vstartup - 1;
987741af33e5b8 Eric Yang          2018-11-21   829  
4a673157b8d1e4 Michael Strauss    2020-05-08   830  					if (v->lines_for_meta_pte_without_immediate_flip[k] < 32.0 && v->lines_for_meta_and_dpte_row_without_immediate_flip[k] < 16.0)
987741af33e5b8 Eric Yang          2018-11-21   831  						break;
987741af33e5b8 Eric Yang          2018-11-21   832  
987741af33e5b8 Eric Yang          2018-11-21   833  				} while(1);
74c49c7ac14f3a Harry Wentland     2017-05-08   834  			}
74c49c7ac14f3a Harry Wentland     2017-05-08   835  			v->bw_available_for_immediate_flip = v->return_bw_per_state[i];
74c49c7ac14f3a Harry Wentland     2017-05-08   836  			for (k = 0; k <= v->number_of_active_planes - 1; k++) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   837  				v->bw_available_for_immediate_flip = v->bw_available_for_immediate_flip -dcn_bw_max2(v->read_bandwidth[k], v->prefetch_bw[k]);
74c49c7ac14f3a Harry Wentland     2017-05-08   838  			}
74c49c7ac14f3a Harry Wentland     2017-05-08   839  			for (k = 0; k <= v->number_of_active_planes - 1; k++) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   840  				v->total_immediate_flip_bytes[k] = 0.0;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   841  				if ((v->source_pixel_format[k] != dcn_bw_yuv420_sub_8 && v->source_pixel_format[k] != dcn_bw_yuv420_sub_10)) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   842  					v->total_immediate_flip_bytes[k] = v->total_immediate_flip_bytes[k] + v->meta_pte_bytes_per_frame[k] + v->meta_row_bytes[k] + v->dpte_bytes_per_row[k];
74c49c7ac14f3a Harry Wentland     2017-05-08   843  				}
74c49c7ac14f3a Harry Wentland     2017-05-08   844  			}
74c49c7ac14f3a Harry Wentland     2017-05-08   845  			for (k = 0; k <= v->number_of_active_planes - 1; k++) {
74c49c7ac14f3a Harry Wentland     2017-05-08   846  				if (v->pte_enable == dcn_bw_yes && v->dcc_enable[k] == dcn_bw_yes) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   847  					v->time_for_meta_pte_with_immediate_flip =dcn_bw_max5(v->meta_pte_bytes_per_frame[k] / v->prefetch_bw[k], v->meta_pte_bytes_per_frame[k] * v->total_immediate_flip_bytes[k] / (v->bw_available_for_immediate_flip * (v->meta_pte_bytes_per_frame[k] + v->meta_row_bytes[k] + v->dpte_bytes_per_row[k])), v->extra_latency, v->urgent_latency, v->htotal[k] / v->pixel_clock[k] / 4.0);
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   848  				}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   849  				else {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   850  					v->time_for_meta_pte_with_immediate_flip = v->htotal[k] / v->pixel_clock[k] / 4.0;
74c49c7ac14f3a Harry Wentland     2017-05-08   851  				}
74c49c7ac14f3a Harry Wentland     2017-05-08   852  				if (v->pte_enable == dcn_bw_yes || v->dcc_enable[k] == dcn_bw_yes) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   853  					v->time_for_meta_and_dpte_row_with_immediate_flip =dcn_bw_max5((v->meta_row_bytes[k] + v->dpte_bytes_per_row[k]) / v->prefetch_bw[k], (v->meta_row_bytes[k] + v->dpte_bytes_per_row[k]) * v->total_immediate_flip_bytes[k] / (v->bw_available_for_immediate_flip * (v->meta_pte_bytes_per_frame[k] + v->meta_row_bytes[k] + v->dpte_bytes_per_row[k])), v->htotal[k] / v->pixel_clock[k] - v->time_for_meta_pte_with_immediate_flip, v->extra_latency, 2.0 * v->urgent_latency);
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   854  				}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   855  				else {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   856  					v->time_for_meta_and_dpte_row_with_immediate_flip =dcn_bw_max2(v->htotal[k] / v->pixel_clock[k] - v->time_for_meta_pte_with_immediate_flip, v->extra_latency - v->time_for_meta_pte_with_immediate_flip);
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   857  				}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   858  				v->lines_for_meta_pte_with_immediate_flip[k] =dcn_bw_floor2(4.0 * (v->time_for_meta_pte_with_immediate_flip / (v->htotal[k] / v->pixel_clock[k]) + 0.125), 1.0) / 4;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   859  				v->lines_for_meta_and_dpte_row_with_immediate_flip[k] =dcn_bw_floor2(4.0 * (v->time_for_meta_and_dpte_row_with_immediate_flip / (v->htotal[k] / v->pixel_clock[k]) + 0.125), 1.0) / 4;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   860  				v->line_times_to_request_prefetch_pixel_data_with_immediate_flip = v->line_times_for_prefetch[k] - v->lines_for_meta_pte_with_immediate_flip[k] - v->lines_for_meta_and_dpte_row_with_immediate_flip[k];
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   861  				v->line_times_to_request_prefetch_pixel_data_without_immediate_flip = v->line_times_for_prefetch[k] - v->lines_for_meta_pte_without_immediate_flip[k] - v->lines_for_meta_and_dpte_row_without_immediate_flip[k];
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   862  				if (v->line_times_to_request_prefetch_pixel_data_with_immediate_flip > 0.0) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   863  					v->v_ratio_pre_ywith_immediate_flip[i][j][k] = v->prefetch_lines_y[k] / v->line_times_to_request_prefetch_pixel_data_with_immediate_flip;
74c49c7ac14f3a Harry Wentland     2017-05-08   864  					if ((v->swath_height_yper_state[i][j][k] > 4.0)) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   865  						if (v->line_times_to_request_prefetch_pixel_data_with_immediate_flip - (v->prefill_y[k] - 3.0) / 2.0 > 0.0) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   866  							v->v_ratio_pre_ywith_immediate_flip[i][j][k] =dcn_bw_max2(v->v_ratio_pre_ywith_immediate_flip[i][j][k], (v->max_num_sw_y[k] * v->swath_height_yper_state[i][j][k]) / (v->line_times_to_request_prefetch_pixel_data_with_immediate_flip - (v->prefill_y[k] - 3.0) / 2.0));
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   867  						}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   868  						else {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   869  							v->v_ratio_pre_ywith_immediate_flip[i][j][k] = 999999.0;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   870  						}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   871  					}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   872  					v->v_ratio_pre_cwith_immediate_flip[i][j][k] = v->prefetch_lines_c[k] / v->line_times_to_request_prefetch_pixel_data_with_immediate_flip;
74c49c7ac14f3a Harry Wentland     2017-05-08   873  					if ((v->swath_height_cper_state[i][j][k] > 4.0)) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   874  						if (v->line_times_to_request_prefetch_pixel_data_with_immediate_flip - (v->prefill_c[k] - 3.0) / 2.0 > 0.0) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   875  							v->v_ratio_pre_cwith_immediate_flip[i][j][k] =dcn_bw_max2(v->v_ratio_pre_cwith_immediate_flip[i][j][k], (v->max_num_sw_c[k] * v->swath_height_cper_state[i][j][k]) / (v->line_times_to_request_prefetch_pixel_data_with_immediate_flip - (v->prefill_c[k] - 3.0) / 2.0));
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   876  						}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   877  						else {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   878  							v->v_ratio_pre_cwith_immediate_flip[i][j][k] = 999999.0;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   879  						}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   880  					}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   881  					v->required_prefetch_pixel_data_bw_with_immediate_flip[i][j][k] = v->no_of_dpp[i][j][k] * (v->prefetch_lines_y[k] / v->line_times_to_request_prefetch_pixel_data_with_immediate_flip *dcn_bw_ceil2(v->byte_per_pixel_in_dety[k], 1.0) + v->prefetch_lines_c[k] / v->line_times_to_request_prefetch_pixel_data_with_immediate_flip *dcn_bw_ceil2(v->byte_per_pixel_in_detc[k], 2.0) / 2.0) * v->swath_width_yper_state[i][j][k] / (v->htotal[k] / v->pixel_clock[k]);
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   882  				}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   883  				else {
74c49c7ac14f3a Harry Wentland     2017-05-08   884  					v->v_ratio_pre_ywith_immediate_flip[i][j][k] = 999999.0;
74c49c7ac14f3a Harry Wentland     2017-05-08   885  					v->v_ratio_pre_cwith_immediate_flip[i][j][k] = 999999.0;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   886  					v->required_prefetch_pixel_data_bw_with_immediate_flip[i][j][k] = 999999.0;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   887  				}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   888  				if (v->line_times_to_request_prefetch_pixel_data_without_immediate_flip > 0.0) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   889  					v->v_ratio_pre_ywithout_immediate_flip[i][j][k] = v->prefetch_lines_y[k] / v->line_times_to_request_prefetch_pixel_data_without_immediate_flip;
74c49c7ac14f3a Harry Wentland     2017-05-08   890  					if ((v->swath_height_yper_state[i][j][k] > 4.0)) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   891  						if (v->line_times_to_request_prefetch_pixel_data_without_immediate_flip - (v->prefill_y[k] - 3.0) / 2.0 > 0.0) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   892  							v->v_ratio_pre_ywithout_immediate_flip[i][j][k] =dcn_bw_max2(v->v_ratio_pre_ywithout_immediate_flip[i][j][k], (v->max_num_sw_y[k] * v->swath_height_yper_state[i][j][k]) / (v->line_times_to_request_prefetch_pixel_data_without_immediate_flip - (v->prefill_y[k] - 3.0) / 2.0));
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   893  						}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   894  						else {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   895  							v->v_ratio_pre_ywithout_immediate_flip[i][j][k] = 999999.0;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   896  						}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   897  					}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   898  					v->v_ratio_pre_cwithout_immediate_flip[i][j][k] = v->prefetch_lines_c[k] / v->line_times_to_request_prefetch_pixel_data_without_immediate_flip;
74c49c7ac14f3a Harry Wentland     2017-05-08   899  					if ((v->swath_height_cper_state[i][j][k] > 4.0)) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   900  						if (v->line_times_to_request_prefetch_pixel_data_without_immediate_flip - (v->prefill_c[k] - 3.0) / 2.0 > 0.0) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   901  							v->v_ratio_pre_cwithout_immediate_flip[i][j][k] =dcn_bw_max2(v->v_ratio_pre_cwithout_immediate_flip[i][j][k], (v->max_num_sw_c[k] * v->swath_height_cper_state[i][j][k]) / (v->line_times_to_request_prefetch_pixel_data_without_immediate_flip - (v->prefill_c[k] - 3.0) / 2.0));
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   902  						}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   903  						else {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   904  							v->v_ratio_pre_cwithout_immediate_flip[i][j][k] = 999999.0;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   905  						}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   906  					}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   907  					v->required_prefetch_pixel_data_bw_without_immediate_flip[i][j][k] = v->no_of_dpp[i][j][k] * (v->prefetch_lines_y[k] / v->line_times_to_request_prefetch_pixel_data_without_immediate_flip *dcn_bw_ceil2(v->byte_per_pixel_in_dety[k], 1.0) + v->prefetch_lines_c[k] / v->line_times_to_request_prefetch_pixel_data_without_immediate_flip *dcn_bw_ceil2(v->byte_per_pixel_in_detc[k], 2.0) / 2.0) * v->swath_width_yper_state[i][j][k] / (v->htotal[k] / v->pixel_clock[k]);
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   908  				}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   909  				else {
74c49c7ac14f3a Harry Wentland     2017-05-08   910  					v->v_ratio_pre_ywithout_immediate_flip[i][j][k] = 999999.0;
74c49c7ac14f3a Harry Wentland     2017-05-08   911  					v->v_ratio_pre_cwithout_immediate_flip[i][j][k] = 999999.0;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   912  					v->required_prefetch_pixel_data_bw_without_immediate_flip[i][j][k] = 999999.0;
74c49c7ac14f3a Harry Wentland     2017-05-08   913  				}
74c49c7ac14f3a Harry Wentland     2017-05-08   914  			}
74c49c7ac14f3a Harry Wentland     2017-05-08   915  			v->maximum_read_bandwidth_with_prefetch_with_immediate_flip = 0.0;
74c49c7ac14f3a Harry Wentland     2017-05-08   916  			for (k = 0; k <= v->number_of_active_planes - 1; k++) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   917  				if ((v->source_pixel_format[k] != dcn_bw_yuv420_sub_8 && v->source_pixel_format[k] != dcn_bw_yuv420_sub_10)) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   918  					v->maximum_read_bandwidth_with_prefetch_with_immediate_flip = v->maximum_read_bandwidth_with_prefetch_with_immediate_flip +dcn_bw_max2(v->read_bandwidth[k], v->required_prefetch_pixel_data_bw_with_immediate_flip[i][j][k]) +dcn_bw_max2(v->meta_pte_bytes_per_frame[k] / (v->lines_for_meta_pte_with_immediate_flip[k] * v->htotal[k] / v->pixel_clock[k]), (v->meta_row_bytes[k] + v->dpte_bytes_per_row[k]) / (v->lines_for_meta_and_dpte_row_with_immediate_flip[k] * v->htotal[k] / v->pixel_clock[k]));
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   919  				}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   920  				else {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   921  					v->maximum_read_bandwidth_with_prefetch_with_immediate_flip = v->maximum_read_bandwidth_with_prefetch_with_immediate_flip +dcn_bw_max2(v->read_bandwidth[k], v->required_prefetch_pixel_data_bw_without_immediate_flip[i][j][k]);
74c49c7ac14f3a Harry Wentland     2017-05-08   922  				}
74c49c7ac14f3a Harry Wentland     2017-05-08   923  			}
74c49c7ac14f3a Harry Wentland     2017-05-08   924  			v->maximum_read_bandwidth_with_prefetch_without_immediate_flip = 0.0;
74c49c7ac14f3a Harry Wentland     2017-05-08   925  			for (k = 0; k <= v->number_of_active_planes - 1; k++) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   926  				v->maximum_read_bandwidth_with_prefetch_without_immediate_flip = v->maximum_read_bandwidth_with_prefetch_without_immediate_flip +dcn_bw_max2(v->read_bandwidth[k], v->required_prefetch_pixel_data_bw_without_immediate_flip[i][j][k]);
74c49c7ac14f3a Harry Wentland     2017-05-08   927  			}
74c49c7ac14f3a Harry Wentland     2017-05-08   928  			v->prefetch_supported_with_immediate_flip[i][j] = dcn_bw_yes;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   929  			if (v->maximum_read_bandwidth_with_prefetch_with_immediate_flip > v->return_bw_per_state[i]) {
74c49c7ac14f3a Harry Wentland     2017-05-08   930  				v->prefetch_supported_with_immediate_flip[i][j] = dcn_bw_no;
74c49c7ac14f3a Harry Wentland     2017-05-08   931  			}
74c49c7ac14f3a Harry Wentland     2017-05-08   932  			for (k = 0; k <= v->number_of_active_planes - 1; k++) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   933  				if (v->line_times_for_prefetch[k] < 2.0 || v->lines_for_meta_pte_with_immediate_flip[k] >= 8.0 || v->lines_for_meta_and_dpte_row_with_immediate_flip[k] >= 16.0) {
74c49c7ac14f3a Harry Wentland     2017-05-08   934  					v->prefetch_supported_with_immediate_flip[i][j] = dcn_bw_no;
74c49c7ac14f3a Harry Wentland     2017-05-08   935  				}
74c49c7ac14f3a Harry Wentland     2017-05-08   936  			}
74c49c7ac14f3a Harry Wentland     2017-05-08   937  			v->prefetch_supported_without_immediate_flip[i][j] = dcn_bw_yes;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   938  			if (v->maximum_read_bandwidth_with_prefetch_without_immediate_flip > v->return_bw_per_state[i]) {
74c49c7ac14f3a Harry Wentland     2017-05-08   939  				v->prefetch_supported_without_immediate_flip[i][j] = dcn_bw_no;
74c49c7ac14f3a Harry Wentland     2017-05-08   940  			}
74c49c7ac14f3a Harry Wentland     2017-05-08   941  			for (k = 0; k <= v->number_of_active_planes - 1; k++) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   942  				if (v->line_times_for_prefetch[k] < 2.0 || v->lines_for_meta_pte_without_immediate_flip[k] >= 8.0 || v->lines_for_meta_and_dpte_row_without_immediate_flip[k] >= 16.0) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   943  					v->prefetch_supported_without_immediate_flip[i][j] = dcn_bw_no;
74c49c7ac14f3a Harry Wentland     2017-05-08   944  				}
74c49c7ac14f3a Harry Wentland     2017-05-08   945  			}
74c49c7ac14f3a Harry Wentland     2017-05-08   946  		}
74c49c7ac14f3a Harry Wentland     2017-05-08   947  	}
74c49c7ac14f3a Harry Wentland     2017-05-08   948  	for (i = 0; i <= number_of_states_plus_one; i++) {
74c49c7ac14f3a Harry Wentland     2017-05-08   949  		for (j = 0; j <= 1; j++) {
74c49c7ac14f3a Harry Wentland     2017-05-08   950  			v->v_ratio_in_prefetch_supported_with_immediate_flip[i][j] = dcn_bw_yes;
74c49c7ac14f3a Harry Wentland     2017-05-08   951  			for (k = 0; k <= v->number_of_active_planes - 1; k++) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   952  				if ((((v->source_pixel_format[k] != dcn_bw_yuv420_sub_8 && v->source_pixel_format[k] != dcn_bw_yuv420_sub_10) && (v->v_ratio_pre_ywith_immediate_flip[i][j][k] > 4.0 || v->v_ratio_pre_cwith_immediate_flip[i][j][k] > 4.0)) || ((v->source_pixel_format[k] == dcn_bw_yuv420_sub_8 || v->source_pixel_format[k] == dcn_bw_yuv420_sub_10) && (v->v_ratio_pre_ywithout_immediate_flip[i][j][k] > 4.0 || v->v_ratio_pre_cwithout_immediate_flip[i][j][k] > 4.0)))) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   953  					v->v_ratio_in_prefetch_supported_with_immediate_flip[i][j] = dcn_bw_no;
74c49c7ac14f3a Harry Wentland     2017-05-08   954  				}
74c49c7ac14f3a Harry Wentland     2017-05-08   955  			}
74c49c7ac14f3a Harry Wentland     2017-05-08   956  			v->v_ratio_in_prefetch_supported_without_immediate_flip[i][j] = dcn_bw_yes;
74c49c7ac14f3a Harry Wentland     2017-05-08   957  			for (k = 0; k <= v->number_of_active_planes - 1; k++) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   958  				if ((v->v_ratio_pre_ywithout_immediate_flip[i][j][k] > 4.0 || v->v_ratio_pre_cwithout_immediate_flip[i][j][k] > 4.0)) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   959  					v->v_ratio_in_prefetch_supported_without_immediate_flip[i][j] = dcn_bw_no;
74c49c7ac14f3a Harry Wentland     2017-05-08   960  				}
74c49c7ac14f3a Harry Wentland     2017-05-08   961  			}
74c49c7ac14f3a Harry Wentland     2017-05-08   962  		}
74c49c7ac14f3a Harry Wentland     2017-05-08   963  	}
74c49c7ac14f3a Harry Wentland     2017-05-08   964  	/*mode support, voltage state and soc configuration*/
74c49c7ac14f3a Harry Wentland     2017-05-08   965  
74c49c7ac14f3a Harry Wentland     2017-05-08   966  	for (i = number_of_states_plus_one; i >= 0; i--) {
74c49c7ac14f3a Harry Wentland     2017-05-08   967  		for (j = 0; j <= 1; j++) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   968  			if (v->scale_ratio_support == dcn_bw_yes && v->source_format_pixel_and_scan_support == dcn_bw_yes && v->viewport_size_support == dcn_bw_yes && v->bandwidth_support[i] == dcn_bw_yes && v->dio_support[i] == dcn_bw_yes && v->urgent_latency_support[i][j] == dcn_bw_yes && v->rob_support[i] == dcn_bw_yes && v->dispclk_dppclk_support[i][j] == dcn_bw_yes && v->total_available_pipes_support[i][j] == dcn_bw_yes && v->total_available_writeback_support == dcn_bw_yes && v->writeback_latency_support == dcn_bw_yes) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   969  				if (v->prefetch_supported_with_immediate_flip[i][j] == dcn_bw_yes && v->v_ratio_in_prefetch_supported_with_immediate_flip[i][j] == dcn_bw_yes) {
74c49c7ac14f3a Harry Wentland     2017-05-08   970  					v->mode_support_with_immediate_flip[i][j] = dcn_bw_yes;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   971  				}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   972  				else {
74c49c7ac14f3a Harry Wentland     2017-05-08   973  					v->mode_support_with_immediate_flip[i][j] = dcn_bw_no;
74c49c7ac14f3a Harry Wentland     2017-05-08   974  				}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   975  				if (v->prefetch_supported_without_immediate_flip[i][j] == dcn_bw_yes && v->v_ratio_in_prefetch_supported_without_immediate_flip[i][j] == dcn_bw_yes) {
74c49c7ac14f3a Harry Wentland     2017-05-08   976  					v->mode_support_without_immediate_flip[i][j] = dcn_bw_yes;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   977  				}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   978  				else {
74c49c7ac14f3a Harry Wentland     2017-05-08   979  					v->mode_support_without_immediate_flip[i][j] = dcn_bw_no;
74c49c7ac14f3a Harry Wentland     2017-05-08   980  				}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   981  			}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   982  			else {
74c49c7ac14f3a Harry Wentland     2017-05-08   983  				v->mode_support_with_immediate_flip[i][j] = dcn_bw_no;
74c49c7ac14f3a Harry Wentland     2017-05-08   984  				v->mode_support_without_immediate_flip[i][j] = dcn_bw_no;
74c49c7ac14f3a Harry Wentland     2017-05-08   985  			}
74c49c7ac14f3a Harry Wentland     2017-05-08   986  		}
74c49c7ac14f3a Harry Wentland     2017-05-08   987  	}
74c49c7ac14f3a Harry Wentland     2017-05-08   988  	for (i = number_of_states_plus_one; i >= 0; i--) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   989  		if ((i == number_of_states_plus_one || v->mode_support_with_immediate_flip[i][1] == dcn_bw_yes || v->mode_support_with_immediate_flip[i][0] == dcn_bw_yes) && i >= v->voltage_override_level) {
74c49c7ac14f3a Harry Wentland     2017-05-08   990  			v->voltage_level_with_immediate_flip = i;
74c49c7ac14f3a Harry Wentland     2017-05-08   991  		}
74c49c7ac14f3a Harry Wentland     2017-05-08   992  	}
74c49c7ac14f3a Harry Wentland     2017-05-08   993  	for (i = number_of_states_plus_one; i >= 0; i--) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15   994  		if ((i == number_of_states_plus_one || v->mode_support_without_immediate_flip[i][1] == dcn_bw_yes || v->mode_support_without_immediate_flip[i][0] == dcn_bw_yes) && i >= v->voltage_override_level) {
74c49c7ac14f3a Harry Wentland     2017-05-08   995  			v->voltage_level_without_immediate_flip = i;
74c49c7ac14f3a Harry Wentland     2017-05-08   996  		}
74c49c7ac14f3a Harry Wentland     2017-05-08   997  	}
74c49c7ac14f3a Harry Wentland     2017-05-08   998  	if (v->voltage_level_with_immediate_flip == number_of_states_plus_one) {
74c49c7ac14f3a Harry Wentland     2017-05-08   999  		v->immediate_flip_supported = dcn_bw_no;
74c49c7ac14f3a Harry Wentland     2017-05-08  1000  		v->voltage_level = v->voltage_level_without_immediate_flip;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15  1001  	}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15  1002  	else {
74c49c7ac14f3a Harry Wentland     2017-05-08  1003  		v->immediate_flip_supported = dcn_bw_yes;
74c49c7ac14f3a Harry Wentland     2017-05-08  1004  		v->voltage_level = v->voltage_level_with_immediate_flip;
74c49c7ac14f3a Harry Wentland     2017-05-08  1005  	}
74c49c7ac14f3a Harry Wentland     2017-05-08  1006  	v->dcfclk = v->dcfclk_per_state[v->voltage_level];
74c49c7ac14f3a Harry Wentland     2017-05-08  1007  	v->fabric_and_dram_bandwidth = v->fabric_and_dram_bandwidth_per_state[v->voltage_level];
74c49c7ac14f3a Harry Wentland     2017-05-08  1008  	for (j = 0; j <= 1; j++) {
74c49c7ac14f3a Harry Wentland     2017-05-08  1009  		v->required_dispclk_per_ratio[j] = v->required_dispclk[v->voltage_level][j];
74c49c7ac14f3a Harry Wentland     2017-05-08  1010  		for (k = 0; k <= v->number_of_active_planes - 1; k++) {
74c49c7ac14f3a Harry Wentland     2017-05-08  1011  			v->dpp_per_plane_per_ratio[j][k] = v->no_of_dpp[v->voltage_level][j][k];
74c49c7ac14f3a Harry Wentland     2017-05-08  1012  		}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15  1013  		v->dispclk_dppclk_support_per_ratio[j] = v->dispclk_dppclk_support[v->voltage_level][j];
74c49c7ac14f3a Harry Wentland     2017-05-08  1014  	}
74c49c7ac14f3a Harry Wentland     2017-05-08  1015  	v->max_phyclk = v->phyclk_per_state[v->voltage_level];
74c49c7ac14f3a Harry Wentland     2017-05-08  1016  }
74c49c7ac14f3a Harry Wentland     2017-05-08  1017  void display_pipe_configuration(struct dcn_bw_internal_vars *v)
74c49c7ac14f3a Harry Wentland     2017-05-08  1018  {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15  1019  	int j;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15  1020  	int k;
74c49c7ac14f3a Harry Wentland     2017-05-08  1021  	/*display pipe configuration*/
74c49c7ac14f3a Harry Wentland     2017-05-08  1022  
74c49c7ac14f3a Harry Wentland     2017-05-08  1023  	for (j = 0; j <= 1; j++) {
74c49c7ac14f3a Harry Wentland     2017-05-08  1024  		v->total_number_of_active_dpp_per_ratio[j] = 0.0;
74c49c7ac14f3a Harry Wentland     2017-05-08  1025  		for (k = 0; k <= v->number_of_active_planes - 1; k++) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15  1026  			v->total_number_of_active_dpp_per_ratio[j] = v->total_number_of_active_dpp_per_ratio[j] + v->dpp_per_plane_per_ratio[j][k];
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15  1027  		}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15  1028  	}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15  1029  	if ((v->dispclk_dppclk_support_per_ratio[0] == dcn_bw_yes && v->dispclk_dppclk_support_per_ratio[1] == dcn_bw_no) || (v->dispclk_dppclk_support_per_ratio[0] == v->dispclk_dppclk_support_per_ratio[1] && (v->total_number_of_active_dpp_per_ratio[0] < v->total_number_of_active_dpp_per_ratio[1] || (((v->total_number_of_active_dpp_per_ratio[0] == v->total_number_of_active_dpp_per_ratio[1]) && v->required_dispclk_per_ratio[0] <= 0.5 * v->required_dispclk_per_ratio[1]))))) {
74c49c7ac14f3a Harry Wentland     2017-05-08  1030  		v->dispclk_dppclk_ratio = 1;
74c49c7ac14f3a Harry Wentland     2017-05-08  1031  		v->final_error_message = v->error_message[0];
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15  1032  	}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15  1033  	else {
74c49c7ac14f3a Harry Wentland     2017-05-08  1034  		v->dispclk_dppclk_ratio = 2;
74c49c7ac14f3a Harry Wentland     2017-05-08  1035  		v->final_error_message = v->error_message[1];
74c49c7ac14f3a Harry Wentland     2017-05-08  1036  	}
74c49c7ac14f3a Harry Wentland     2017-05-08  1037  	for (k = 0; k <= v->number_of_active_planes - 1; k++) {
74c49c7ac14f3a Harry Wentland     2017-05-08  1038  		v->dpp_per_plane[k] = v->dpp_per_plane_per_ratio[v->dispclk_dppclk_ratio - 1][k];
74c49c7ac14f3a Harry Wentland     2017-05-08  1039  	}
74c49c7ac14f3a Harry Wentland     2017-05-08  1040  	for (k = 0; k <= v->number_of_active_planes - 1; k++) {
74c49c7ac14f3a Harry Wentland     2017-05-08  1041  		if (v->source_pixel_format[k] == dcn_bw_rgb_sub_64) {
74c49c7ac14f3a Harry Wentland     2017-05-08  1042  			v->byte_per_pix_dety = 8.0;
74c49c7ac14f3a Harry Wentland     2017-05-08  1043  			v->byte_per_pix_detc = 0.0;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15  1044  		}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15  1045  		else if (v->source_pixel_format[k] == dcn_bw_rgb_sub_32) {
74c49c7ac14f3a Harry Wentland     2017-05-08  1046  			v->byte_per_pix_dety = 4.0;
74c49c7ac14f3a Harry Wentland     2017-05-08  1047  			v->byte_per_pix_detc = 0.0;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15  1048  		}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15  1049  		else if (v->source_pixel_format[k] == dcn_bw_rgb_sub_16) {
74c49c7ac14f3a Harry Wentland     2017-05-08  1050  			v->byte_per_pix_dety = 2.0;
74c49c7ac14f3a Harry Wentland     2017-05-08  1051  			v->byte_per_pix_detc = 0.0;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15  1052  		}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15  1053  		else if (v->source_pixel_format[k] == dcn_bw_yuv420_sub_8) {
74c49c7ac14f3a Harry Wentland     2017-05-08  1054  			v->byte_per_pix_dety = 1.0;
74c49c7ac14f3a Harry Wentland     2017-05-08  1055  			v->byte_per_pix_detc = 2.0;
74c49c7ac14f3a Harry Wentland     2017-05-08  1056  		}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15  1057  		else {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15  1058  			v->byte_per_pix_dety = 4.0f / 3.0f;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15  1059  			v->byte_per_pix_detc = 8.0f / 3.0f;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15  1060  		}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15  1061  		if ((v->source_pixel_format[k] == dcn_bw_rgb_sub_64 || v->source_pixel_format[k] == dcn_bw_rgb_sub_32 || v->source_pixel_format[k] == dcn_bw_rgb_sub_16)) {
74c49c7ac14f3a Harry Wentland     2017-05-08  1062  			if (v->source_surface_mode[k] == dcn_bw_sw_linear) {
74c49c7ac14f3a Harry Wentland     2017-05-08  1063  				v->read256_bytes_block_height_y = 1.0;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15  1064  			}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15  1065  			else if (v->source_pixel_format[k] == dcn_bw_rgb_sub_64) {
74c49c7ac14f3a Harry Wentland     2017-05-08  1066  				v->read256_bytes_block_height_y = 4.0;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15  1067  			}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15  1068  			else {
74c49c7ac14f3a Harry Wentland     2017-05-08  1069  				v->read256_bytes_block_height_y = 8.0;
74c49c7ac14f3a Harry Wentland     2017-05-08  1070  			}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15  1071  			v->read256_bytes_block_width_y = 256.0 /dcn_bw_ceil2(v->byte_per_pix_dety, 1.0) / v->read256_bytes_block_height_y;
74c49c7ac14f3a Harry Wentland     2017-05-08  1072  			v->read256_bytes_block_height_c = 0.0;
74c49c7ac14f3a Harry Wentland     2017-05-08  1073  			v->read256_bytes_block_width_c = 0.0;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15  1074  		}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15  1075  		else {
74c49c7ac14f3a Harry Wentland     2017-05-08  1076  			if (v->source_surface_mode[k] == dcn_bw_sw_linear) {
74c49c7ac14f3a Harry Wentland     2017-05-08  1077  				v->read256_bytes_block_height_y = 1.0;
74c49c7ac14f3a Harry Wentland     2017-05-08  1078  				v->read256_bytes_block_height_c = 1.0;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15  1079  			}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15  1080  			else if (v->source_pixel_format[k] == dcn_bw_yuv420_sub_8) {
74c49c7ac14f3a Harry Wentland     2017-05-08  1081  				v->read256_bytes_block_height_y = 16.0;
74c49c7ac14f3a Harry Wentland     2017-05-08  1082  				v->read256_bytes_block_height_c = 8.0;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15  1083  			}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15  1084  			else {
74c49c7ac14f3a Harry Wentland     2017-05-08  1085  				v->read256_bytes_block_height_y = 8.0;
74c49c7ac14f3a Harry Wentland     2017-05-08  1086  				v->read256_bytes_block_height_c = 8.0;
74c49c7ac14f3a Harry Wentland     2017-05-08  1087  			}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15  1088  			v->read256_bytes_block_width_y = 256.0 /dcn_bw_ceil2(v->byte_per_pix_dety, 1.0) / v->read256_bytes_block_height_y;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15  1089  			v->read256_bytes_block_width_c = 256.0 /dcn_bw_ceil2(v->byte_per_pix_detc, 2.0) / v->read256_bytes_block_height_c;
74c49c7ac14f3a Harry Wentland     2017-05-08  1090  		}
74c49c7ac14f3a Harry Wentland     2017-05-08  1091  		if (v->source_scan[k] == dcn_bw_hor) {
74c49c7ac14f3a Harry Wentland     2017-05-08  1092  			v->maximum_swath_height_y = v->read256_bytes_block_height_y;
74c49c7ac14f3a Harry Wentland     2017-05-08  1093  			v->maximum_swath_height_c = v->read256_bytes_block_height_c;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15  1094  		}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15  1095  		else {
74c49c7ac14f3a Harry Wentland     2017-05-08  1096  			v->maximum_swath_height_y = v->read256_bytes_block_width_y;
74c49c7ac14f3a Harry Wentland     2017-05-08  1097  			v->maximum_swath_height_c = v->read256_bytes_block_width_c;
74c49c7ac14f3a Harry Wentland     2017-05-08  1098  		}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15  1099  		if ((v->source_pixel_format[k] == dcn_bw_rgb_sub_64 || v->source_pixel_format[k] == dcn_bw_rgb_sub_32 || v->source_pixel_format[k] == dcn_bw_rgb_sub_16)) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15  1100  			if (v->source_surface_mode[k] == dcn_bw_sw_linear || (v->source_pixel_format[k] == dcn_bw_rgb_sub_64 && (v->source_surface_mode[k] == dcn_bw_sw_4_kb_s || v->source_surface_mode[k] == dcn_bw_sw_4_kb_s_x || v->source_surface_mode[k] == dcn_bw_sw_64_kb_s || v->source_surface_mode[k] == dcn_bw_sw_64_kb_s_t || v->source_surface_mode[k] == dcn_bw_sw_64_kb_s_x || v->source_surface_mode[k] == dcn_bw_sw_var_s || v->source_surface_mode[k] == dcn_bw_sw_var_s_x) && v->source_scan[k] == dcn_bw_hor)) {
74c49c7ac14f3a Harry Wentland     2017-05-08  1101  				v->minimum_swath_height_y = v->maximum_swath_height_y;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15  1102  			}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15  1103  			else {
74c49c7ac14f3a Harry Wentland     2017-05-08  1104  				v->minimum_swath_height_y = v->maximum_swath_height_y / 2.0;
74c49c7ac14f3a Harry Wentland     2017-05-08  1105  			}
74c49c7ac14f3a Harry Wentland     2017-05-08  1106  			v->minimum_swath_height_c = v->maximum_swath_height_c;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15  1107  		}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15  1108  		else {
74c49c7ac14f3a Harry Wentland     2017-05-08  1109  			if (v->source_surface_mode[k] == dcn_bw_sw_linear) {
74c49c7ac14f3a Harry Wentland     2017-05-08  1110  				v->minimum_swath_height_y = v->maximum_swath_height_y;
74c49c7ac14f3a Harry Wentland     2017-05-08  1111  				v->minimum_swath_height_c = v->maximum_swath_height_c;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15  1112  			}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15  1113  			else if (v->source_pixel_format[k] == dcn_bw_yuv420_sub_8 && v->source_scan[k] == dcn_bw_hor) {
74c49c7ac14f3a Harry Wentland     2017-05-08  1114  				v->minimum_swath_height_y = v->maximum_swath_height_y / 2.0;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15  1115  				if (v->bug_forcing_luma_and_chroma_request_to_same_size_fixed == dcn_bw_yes) {
74c49c7ac14f3a Harry Wentland     2017-05-08  1116  					v->minimum_swath_height_c = v->maximum_swath_height_c;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15  1117  				}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15  1118  				else {
74c49c7ac14f3a Harry Wentland     2017-05-08  1119  					v->minimum_swath_height_c = v->maximum_swath_height_c / 2.0;
74c49c7ac14f3a Harry Wentland     2017-05-08  1120  				}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15  1121  			}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15  1122  			else if (v->source_pixel_format[k] == dcn_bw_yuv420_sub_10 && v->source_scan[k] == dcn_bw_hor) {
74c49c7ac14f3a Harry Wentland     2017-05-08  1123  				v->minimum_swath_height_c = v->maximum_swath_height_c / 2.0;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15  1124  				if (v->bug_forcing_luma_and_chroma_request_to_same_size_fixed == dcn_bw_yes) {
74c49c7ac14f3a Harry Wentland     2017-05-08  1125  					v->minimum_swath_height_y = v->maximum_swath_height_y;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15  1126  				}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15  1127  				else {
74c49c7ac14f3a Harry Wentland     2017-05-08  1128  					v->minimum_swath_height_y = v->maximum_swath_height_y / 2.0;
74c49c7ac14f3a Harry Wentland     2017-05-08  1129  				}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15  1130  			}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15  1131  			else {
74c49c7ac14f3a Harry Wentland     2017-05-08  1132  				v->minimum_swath_height_y = v->maximum_swath_height_y;
74c49c7ac14f3a Harry Wentland     2017-05-08  1133  				v->minimum_swath_height_c = v->maximum_swath_height_c;
74c49c7ac14f3a Harry Wentland     2017-05-08  1134  			}
74c49c7ac14f3a Harry Wentland     2017-05-08  1135  		}
74c49c7ac14f3a Harry Wentland     2017-05-08  1136  		if (v->source_scan[k] == dcn_bw_hor) {
74c49c7ac14f3a Harry Wentland     2017-05-08  1137  			v->swath_width = v->viewport_width[k] / v->dpp_per_plane[k];
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15  1138  		}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15  1139  		else {
74c49c7ac14f3a Harry Wentland     2017-05-08  1140  			v->swath_width = v->viewport_height[k] / v->dpp_per_plane[k];
74c49c7ac14f3a Harry Wentland     2017-05-08  1141  		}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15  1142  		v->swath_width_granularity_y = 256.0 /dcn_bw_ceil2(v->byte_per_pix_dety, 1.0) / v->maximum_swath_height_y;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15  1143  		v->rounded_up_max_swath_size_bytes_y = (dcn_bw_ceil2(v->swath_width - 1.0, v->swath_width_granularity_y) + v->swath_width_granularity_y) * v->byte_per_pix_dety * v->maximum_swath_height_y;
74c49c7ac14f3a Harry Wentland     2017-05-08  1144  		if (v->source_pixel_format[k] == dcn_bw_yuv420_sub_10) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15  1145  			v->rounded_up_max_swath_size_bytes_y =dcn_bw_ceil2(v->rounded_up_max_swath_size_bytes_y, 256.0) + 256;
74c49c7ac14f3a Harry Wentland     2017-05-08  1146  		}
74c49c7ac14f3a Harry Wentland     2017-05-08  1147  		if (v->maximum_swath_height_c > 0.0) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15  1148  			v->swath_width_granularity_c = 256.0 /dcn_bw_ceil2(v->byte_per_pix_detc, 2.0) / v->maximum_swath_height_c;
74c49c7ac14f3a Harry Wentland     2017-05-08  1149  		}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15  1150  		v->rounded_up_max_swath_size_bytes_c = (dcn_bw_ceil2(v->swath_width / 2.0 - 1.0, v->swath_width_granularity_c) + v->swath_width_granularity_c) * v->byte_per_pix_detc * v->maximum_swath_height_c;
74c49c7ac14f3a Harry Wentland     2017-05-08  1151  		if (v->source_pixel_format[k] == dcn_bw_yuv420_sub_10) {
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15  1152  			v->rounded_up_max_swath_size_bytes_c =dcn_bw_ceil2(v->rounded_up_max_swath_size_bytes_c, 256.0) + 256;
74c49c7ac14f3a Harry Wentland     2017-05-08  1153  		}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15  1154  		if (v->rounded_up_max_swath_size_bytes_y + v->rounded_up_max_swath_size_bytes_c <= v->det_buffer_size_in_kbyte * 1024.0 / 2.0) {
74c49c7ac14f3a Harry Wentland     2017-05-08  1155  			v->swath_height_y[k] = v->maximum_swath_height_y;
74c49c7ac14f3a Harry Wentland     2017-05-08  1156  			v->swath_height_c[k] = v->maximum_swath_height_c;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15  1157  		}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15  1158  		else {
74c49c7ac14f3a Harry Wentland     2017-05-08  1159  			v->swath_height_y[k] = v->minimum_swath_height_y;
74c49c7ac14f3a Harry Wentland     2017-05-08  1160  			v->swath_height_c[k] = v->minimum_swath_height_c;
74c49c7ac14f3a Harry Wentland     2017-05-08  1161  		}
74c49c7ac14f3a Harry Wentland     2017-05-08  1162  		if (v->swath_height_c[k] == 0.0) {
74c49c7ac14f3a Harry Wentland     2017-05-08  1163  			v->det_buffer_size_y[k] = v->det_buffer_size_in_kbyte * 1024.0;
74c49c7ac14f3a Harry Wentland     2017-05-08  1164  			v->det_buffer_size_c[k] = 0.0;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15  1165  		}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15  1166  		else if (v->swath_height_y[k] <= v->swath_height_c[k]) {
74c49c7ac14f3a Harry Wentland     2017-05-08  1167  			v->det_buffer_size_y[k] = v->det_buffer_size_in_kbyte * 1024.0 / 2.0;
74c49c7ac14f3a Harry Wentland     2017-05-08  1168  			v->det_buffer_size_c[k] = v->det_buffer_size_in_kbyte * 1024.0 / 2.0;
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15  1169  		}
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15  1170  		else {
74c49c7ac14f3a Harry Wentland     2017-05-08  1171  			v->det_buffer_size_y[k] = v->det_buffer_size_in_kbyte * 1024.0 * 2.0 / 3.0;
74c49c7ac14f3a Harry Wentland     2017-05-08  1172  			v->det_buffer_size_c[k] = v->det_buffer_size_in_kbyte * 1024.0 / 3.0;
74c49c7ac14f3a Harry Wentland     2017-05-08  1173  		}
74c49c7ac14f3a Harry Wentland     2017-05-08  1174  	}
74c49c7ac14f3a Harry Wentland     2017-05-08  1175  }
5634fb6078dd9b Dmytro Laktyushkin 2017-06-15 @1176  void dispclkdppclkdcfclk_deep_sleep_prefetch_parameters_watermarks_and_performance_calculation(struct dcn_bw_internal_vars *v)

:::::: The code at line 1176 was first introduced by commit
:::::: 5634fb6078dd9b9f794e93eef2fef52150cdc827 drm/amd/display: dcn bw_calc_auto update rev 247 to 250

:::::: TO: Dmytro Laktyushkin <Dmytro.Laktyushkin@....com>
:::::: CC: Alex Deucher <alexander.deucher@....com>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

Download attachment ".config.gz" of type "application/gzip" (34893 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ