Hi Kuogee, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on next-20230123] [also build test WARNING on linus/master v6.2-rc5] [cannot apply to drm-misc/drm-misc-next drm/drm-next drm-exynos/exynos-drm-next drm-intel/for-linux-next drm-intel/for-linux-next-fixes drm-tip/drm-tip v6.2-rc5 v6.2-rc4 v6.2-rc3] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/Kuogee-Hsieh/drm-msm-dp-add-dpcd-read-of-both-dsc-and-fec-capability/20230124-022759 patch link: https://lore.kernel.org/r/1674498274-6010-6-git-send-email-quic_khsieh%40quicinc.com patch subject: [PATCH v1 05/14] drm/msm/dp: upgrade tu calculation base on newest algorithm config: m68k-allmodconfig (https://download.01.org/0day-ci/archive/20230124/202301240854.5yJVG3RR-lkp@xxxxxxxxx/config) compiler: m68k-linux-gcc (GCC) 12.1.0 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 # https://github.com/intel-lab-lkp/linux/commit/286a3dd6028ada56b471b5cb977f5ed461b094e4 git remote add linux-review https://github.com/intel-lab-lkp/linux git fetch --no-tags linux-review Kuogee-Hsieh/drm-msm-dp-add-dpcd-read-of-both-dsc-and-fec-capability/20230124-022759 git checkout 286a3dd6028ada56b471b5cb977f5ed461b094e4 # save the config file mkdir build_dir && cp config build_dir/.config COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=m68k olddefconfig COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=m68k SHELL=/bin/bash drivers/gpu/drm/msm/ If you fix the issue, kindly add following tag where applicable | Reported-by: kernel test robot <lkp@xxxxxxxxx> All warnings (new ones prefixed by >>): drivers/gpu/drm/msm/dp/dp_ctrl.c: In function '_tu_param_compare': drivers/gpu/drm/msm/dp/dp_ctrl.c:282:20: warning: variable 'b_frac' set but not used [-Wunused-but-set-variable] 282 | u32 b_int, b_frac, b_sign; | ^~~~~~ drivers/gpu/drm/msm/dp/dp_ctrl.c:282:13: warning: variable 'b_int' set but not used [-Wunused-but-set-variable] 282 | u32 b_int, b_frac, b_sign; | ^~~~~ drivers/gpu/drm/msm/dp/dp_ctrl.c:281:20: warning: variable 'a_frac' set but not used [-Wunused-but-set-variable] 281 | u32 a_int, a_frac, a_sign; | ^~~~~~ drivers/gpu/drm/msm/dp/dp_ctrl.c:281:13: warning: variable 'a_int' set but not used [-Wunused-but-set-variable] 281 | u32 a_int, a_frac, a_sign; | ^~~~~ drivers/gpu/drm/msm/dp/dp_ctrl.c: In function 'dp_panel_update_tu_timings': drivers/gpu/drm/msm/dp/dp_ctrl.c:344:13: warning: variable 'overhead_dsc' set but not used [-Wunused-but-set-variable] 344 | s64 overhead_dsc; | ^~~~~~~~~~~~ In file included from drivers/gpu/drm/msm/dp/dp_ctrl.c:18: drivers/gpu/drm/msm/dp/dp_ctrl.c: In function '_dp_ctrl_calc_tu': drivers/gpu/drm/msm/dp/dp_ctrl.c:823:27: warning: format '%d' expects argument of type 'int', but argument 4 has type 's64' {aka 'long long int'} [-Wformat=] 823 | DRM_DEBUG("Info: increase HBLANK_MARGIN to %d. (PLUS%d)\n", HBLANK_MARGIN, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~ | | | s64 {aka long long int} include/drm/drm_print.h:524:65: note: in definition of macro '__drm_dbg' 524 | #define __drm_dbg(fmt, ...) ___drm_dbg(NULL, fmt, ##__VA_ARGS__) | ^~~~~~~~~~~ drivers/gpu/drm/msm/dp/dp_ctrl.c:823:17: note: in expansion of macro 'DRM_DEBUG' 823 | DRM_DEBUG("Info: increase HBLANK_MARGIN to %d. (PLUS%d)\n", HBLANK_MARGIN, | ^~~~~~~~~ drivers/gpu/drm/msm/dp/dp_ctrl.c:823:61: note: format string is defined here 823 | DRM_DEBUG("Info: increase HBLANK_MARGIN to %d. (PLUS%d)\n", HBLANK_MARGIN, | ~^ | | | int | %lld drivers/gpu/drm/msm/dp/dp_ctrl.c:823:27: warning: format '%d' expects argument of type 'int', but argument 5 has type 's64' {aka 'long long int'} [-Wformat=] 823 | DRM_DEBUG("Info: increase HBLANK_MARGIN to %d. (PLUS%d)\n", HBLANK_MARGIN, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 824 | HBLANK_MARGIN_EXTRA); | ~~~~~~~~~~~~~~~~~~~ | | | s64 {aka long long int} include/drm/drm_print.h:524:65: note: in definition of macro '__drm_dbg' 524 | #define __drm_dbg(fmt, ...) ___drm_dbg(NULL, fmt, ##__VA_ARGS__) | ^~~~~~~~~~~ drivers/gpu/drm/msm/dp/dp_ctrl.c:823:17: note: in expansion of macro 'DRM_DEBUG' 823 | DRM_DEBUG("Info: increase HBLANK_MARGIN to %d. (PLUS%d)\n", HBLANK_MARGIN, | ^~~~~~~~~ drivers/gpu/drm/msm/dp/dp_ctrl.c:823:70: note: format string is defined here 823 | DRM_DEBUG("Info: increase HBLANK_MARGIN to %d. (PLUS%d)\n", HBLANK_MARGIN, | ~^ | | | int | %lld drivers/gpu/drm/msm/dp/dp_ctrl.c: In function '_dp_ctrl_calc_tu.constprop': >> drivers/gpu/drm/msm/dp/dp_ctrl.c:1072:1: warning: the frame size of 1084 bytes is larger than 1024 bytes [-Wframe-larger-than=] 1072 | } | ^ vim +1072 drivers/gpu/drm/msm/dp/dp_ctrl.c 286a3dd6028ada Kuogee Hsieh 2023-01-23 743 286a3dd6028ada Kuogee Hsieh 2023-01-23 744 202aceac8bb3ae Kuogee Hsieh 2022-02-17 745 static void _dp_ctrl_calc_tu(struct dp_ctrl_private *ctrl, 202aceac8bb3ae Kuogee Hsieh 2022-02-17 746 struct dp_tu_calc_input *in, c943b4948b5848 Chandan Uddaraju 2020-08-27 747 struct dp_vc_tu_mapping_table *tu_table) c943b4948b5848 Chandan Uddaraju 2020-08-27 748 { 286a3dd6028ada Kuogee Hsieh 2023-01-23 749 struct tu_algo_data tu; c943b4948b5848 Chandan Uddaraju 2020-08-27 750 int compare_result_1, compare_result_2; 286a3dd6028ada Kuogee Hsieh 2023-01-23 751 u64 temp = 0, temp1; c943b4948b5848 Chandan Uddaraju 2020-08-27 752 s64 temp_fp = 0, temp1_fp = 0, temp2_fp = 0; c943b4948b5848 Chandan Uddaraju 2020-08-27 753 c943b4948b5848 Chandan Uddaraju 2020-08-27 754 s64 LCLK_FAST_SKEW_fp = drm_fixp_from_fraction(6, 10000); /* 0.0006 */ c943b4948b5848 Chandan Uddaraju 2020-08-27 755 s64 RATIO_SCALE_fp = drm_fixp_from_fraction(1001, 1000); c943b4948b5848 Chandan Uddaraju 2020-08-27 756 c943b4948b5848 Chandan Uddaraju 2020-08-27 757 u8 DP_BRUTE_FORCE = 1; c943b4948b5848 Chandan Uddaraju 2020-08-27 758 s64 BRUTE_FORCE_THRESHOLD_fp = drm_fixp_from_fraction(1, 10); /* 0.1 */ c943b4948b5848 Chandan Uddaraju 2020-08-27 759 uint EXTRA_PIXCLK_CYCLE_DELAY = 4; 286a3dd6028ada Kuogee Hsieh 2023-01-23 760 s64 HBLANK_MARGIN = drm_fixp_from_fraction(4, 1); 286a3dd6028ada Kuogee Hsieh 2023-01-23 761 s64 HBLANK_MARGIN_EXTRA = 0; c943b4948b5848 Chandan Uddaraju 2020-08-27 762 c943b4948b5848 Chandan Uddaraju 2020-08-27 763 286a3dd6028ada Kuogee Hsieh 2023-01-23 764 memset(&tu, 0, sizeof(tu)); c943b4948b5848 Chandan Uddaraju 2020-08-27 765 286a3dd6028ada Kuogee Hsieh 2023-01-23 766 dp_panel_update_tu_timings(in, &tu); c943b4948b5848 Chandan Uddaraju 2020-08-27 767 286a3dd6028ada Kuogee Hsieh 2023-01-23 768 tu.err_fp = drm_fixp_from_fraction(1000, 1); /* 1000 */ c943b4948b5848 Chandan Uddaraju 2020-08-27 769 286a3dd6028ada Kuogee Hsieh 2023-01-23 770 temp1_fp = drm_fixp_from_fraction(4, 1); 286a3dd6028ada Kuogee Hsieh 2023-01-23 771 temp2_fp = drm_fixp_mul(temp1_fp, tu.lclk_fp); 286a3dd6028ada Kuogee Hsieh 2023-01-23 772 temp_fp = drm_fixp_div(temp2_fp, tu.pclk_fp); 286a3dd6028ada Kuogee Hsieh 2023-01-23 773 tu.extra_buffer_margin = fixp2int_ceil(temp_fp); cc9014bf63a4d8 Lee Jones 2020-11-24 774 286a3dd6028ada Kuogee Hsieh 2023-01-23 775 if (in->compress_ratio == 375 && tu.bpp == 30) 286a3dd6028ada Kuogee Hsieh 2023-01-23 776 temp1_fp = drm_fixp_from_fraction(24, 8); 286a3dd6028ada Kuogee Hsieh 2023-01-23 777 else 286a3dd6028ada Kuogee Hsieh 2023-01-23 778 temp1_fp = drm_fixp_from_fraction(tu.bpp, 8); cc9014bf63a4d8 Lee Jones 2020-11-24 779 286a3dd6028ada Kuogee Hsieh 2023-01-23 780 temp2_fp = drm_fixp_mul(tu.pclk_fp, temp1_fp); 286a3dd6028ada Kuogee Hsieh 2023-01-23 781 temp1_fp = drm_fixp_from_fraction(tu.nlanes, 1); 286a3dd6028ada Kuogee Hsieh 2023-01-23 782 temp2_fp = drm_fixp_div(temp2_fp, temp1_fp); 286a3dd6028ada Kuogee Hsieh 2023-01-23 783 tu.ratio_fp = drm_fixp_div(temp2_fp, tu.lclk_fp); 286a3dd6028ada Kuogee Hsieh 2023-01-23 784 286a3dd6028ada Kuogee Hsieh 2023-01-23 785 tu.original_ratio_fp = tu.ratio_fp; 286a3dd6028ada Kuogee Hsieh 2023-01-23 786 tu.boundary_moderation_en = false; 286a3dd6028ada Kuogee Hsieh 2023-01-23 787 tu.upper_boundary_count = 0; 286a3dd6028ada Kuogee Hsieh 2023-01-23 788 tu.lower_boundary_count = 0; 286a3dd6028ada Kuogee Hsieh 2023-01-23 789 tu.i_upper_boundary_count = 0; 286a3dd6028ada Kuogee Hsieh 2023-01-23 790 tu.i_lower_boundary_count = 0; 286a3dd6028ada Kuogee Hsieh 2023-01-23 791 tu.valid_lower_boundary_link = 0; 286a3dd6028ada Kuogee Hsieh 2023-01-23 792 tu.even_distribution_BF = 0; 286a3dd6028ada Kuogee Hsieh 2023-01-23 793 tu.even_distribution_legacy = 0; 286a3dd6028ada Kuogee Hsieh 2023-01-23 794 tu.even_distribution = 0; 286a3dd6028ada Kuogee Hsieh 2023-01-23 795 tu.hbp_delayStartCheck = 0; 286a3dd6028ada Kuogee Hsieh 2023-01-23 796 tu.pre_tu_hw_pipe_delay = 0; 286a3dd6028ada Kuogee Hsieh 2023-01-23 797 tu.post_tu_hw_pipe_delay = 0; 286a3dd6028ada Kuogee Hsieh 2023-01-23 798 tu.link_config_hactive_time = 0; 286a3dd6028ada Kuogee Hsieh 2023-01-23 799 tu.delay_start_link_lclk = 0; 286a3dd6028ada Kuogee Hsieh 2023-01-23 800 tu.tu_active_cycles = 0; 286a3dd6028ada Kuogee Hsieh 2023-01-23 801 tu.resolution_line_time = 0; 286a3dd6028ada Kuogee Hsieh 2023-01-23 802 tu.last_partial_lclk = 0; 286a3dd6028ada Kuogee Hsieh 2023-01-23 803 tu.delay_start_time_fp = 0; 286a3dd6028ada Kuogee Hsieh 2023-01-23 804 tu.second_loop_set = 0; 286a3dd6028ada Kuogee Hsieh 2023-01-23 805 286a3dd6028ada Kuogee Hsieh 2023-01-23 806 tu.err_fp = drm_fixp_from_fraction(1000, 1); 286a3dd6028ada Kuogee Hsieh 2023-01-23 807 tu.n_err_fp = 0; 286a3dd6028ada Kuogee Hsieh 2023-01-23 808 tu.n_n_err_fp = 0; 286a3dd6028ada Kuogee Hsieh 2023-01-23 809 286a3dd6028ada Kuogee Hsieh 2023-01-23 810 temp = drm_fixp2int(tu.lwidth_fp); 286a3dd6028ada Kuogee Hsieh 2023-01-23 811 if ((((u32)temp % tu.nlanes) != 0) && (_tu_param_compare(tu.ratio_fp, DRM_FIXED_ONE) == 2) 286a3dd6028ada Kuogee Hsieh 2023-01-23 812 && (tu.dsc_en == 0)) { 286a3dd6028ada Kuogee Hsieh 2023-01-23 813 tu.ratio_fp = drm_fixp_mul(tu.ratio_fp, RATIO_SCALE_fp); 286a3dd6028ada Kuogee Hsieh 2023-01-23 814 if (_tu_param_compare(tu.ratio_fp, DRM_FIXED_ONE) == 1) 286a3dd6028ada Kuogee Hsieh 2023-01-23 815 tu.ratio_fp = DRM_FIXED_ONE; c943b4948b5848 Chandan Uddaraju 2020-08-27 816 } c943b4948b5848 Chandan Uddaraju 2020-08-27 817 286a3dd6028ada Kuogee Hsieh 2023-01-23 818 if (_tu_param_compare(tu.ratio_fp, DRM_FIXED_ONE) == 1) 286a3dd6028ada Kuogee Hsieh 2023-01-23 819 tu.ratio_fp = DRM_FIXED_ONE; c943b4948b5848 Chandan Uddaraju 2020-08-27 820 286a3dd6028ada Kuogee Hsieh 2023-01-23 821 if (HBLANK_MARGIN_EXTRA != 0) { 286a3dd6028ada Kuogee Hsieh 2023-01-23 822 HBLANK_MARGIN += HBLANK_MARGIN_EXTRA; 286a3dd6028ada Kuogee Hsieh 2023-01-23 823 DRM_DEBUG("Info: increase HBLANK_MARGIN to %d. (PLUS%d)\n", HBLANK_MARGIN, 286a3dd6028ada Kuogee Hsieh 2023-01-23 824 HBLANK_MARGIN_EXTRA); c943b4948b5848 Chandan Uddaraju 2020-08-27 825 } c943b4948b5848 Chandan Uddaraju 2020-08-27 826 286a3dd6028ada Kuogee Hsieh 2023-01-23 827 for (tu.tu_size = 32; tu.tu_size <= 64; tu.tu_size++) { 286a3dd6028ada Kuogee Hsieh 2023-01-23 828 temp1_fp = drm_fixp_from_fraction(tu.tu_size, 1); 286a3dd6028ada Kuogee Hsieh 2023-01-23 829 temp2_fp = drm_fixp_mul(tu.ratio_fp, temp1_fp); 286a3dd6028ada Kuogee Hsieh 2023-01-23 830 temp = fixp2int_ceil(temp2_fp); c943b4948b5848 Chandan Uddaraju 2020-08-27 831 temp1_fp = drm_fixp_from_fraction(temp, 1); 286a3dd6028ada Kuogee Hsieh 2023-01-23 832 tu.n_err_fp = temp1_fp - temp2_fp; c943b4948b5848 Chandan Uddaraju 2020-08-27 833 286a3dd6028ada Kuogee Hsieh 2023-01-23 834 if (tu.n_err_fp < tu.err_fp) { 286a3dd6028ada Kuogee Hsieh 2023-01-23 835 tu.err_fp = tu.n_err_fp; 286a3dd6028ada Kuogee Hsieh 2023-01-23 836 tu.tu_size_desired = tu.tu_size; c943b4948b5848 Chandan Uddaraju 2020-08-27 837 } c943b4948b5848 Chandan Uddaraju 2020-08-27 838 } c943b4948b5848 Chandan Uddaraju 2020-08-27 839 286a3dd6028ada Kuogee Hsieh 2023-01-23 840 tu.tu_size_minus1 = tu.tu_size_desired - 1; c943b4948b5848 Chandan Uddaraju 2020-08-27 841 286a3dd6028ada Kuogee Hsieh 2023-01-23 842 temp1_fp = drm_fixp_from_fraction(tu.tu_size_desired, 1); 286a3dd6028ada Kuogee Hsieh 2023-01-23 843 temp2_fp = drm_fixp_mul(tu.ratio_fp, temp1_fp); 286a3dd6028ada Kuogee Hsieh 2023-01-23 844 tu.valid_boundary_link = fixp2int_ceil(temp2_fp); c943b4948b5848 Chandan Uddaraju 2020-08-27 845 286a3dd6028ada Kuogee Hsieh 2023-01-23 846 temp1_fp = drm_fixp_from_fraction(tu.bpp, 8); 286a3dd6028ada Kuogee Hsieh 2023-01-23 847 temp2_fp = tu.lwidth_fp; c943b4948b5848 Chandan Uddaraju 2020-08-27 848 temp2_fp = drm_fixp_mul(temp2_fp, temp1_fp); c943b4948b5848 Chandan Uddaraju 2020-08-27 849 286a3dd6028ada Kuogee Hsieh 2023-01-23 850 temp1_fp = drm_fixp_from_fraction(tu.valid_boundary_link, 1); c943b4948b5848 Chandan Uddaraju 2020-08-27 851 temp2_fp = drm_fixp_div(temp2_fp, temp1_fp); 286a3dd6028ada Kuogee Hsieh 2023-01-23 852 tu.n_tus = drm_fixp2int(temp2_fp); c943b4948b5848 Chandan Uddaraju 2020-08-27 853 if ((temp2_fp & 0xFFFFFFFF) > 0xFFFFF000) 286a3dd6028ada Kuogee Hsieh 2023-01-23 854 tu.n_tus += 1; c943b4948b5848 Chandan Uddaraju 2020-08-27 855 286a3dd6028ada Kuogee Hsieh 2023-01-23 856 tu.even_distribution_legacy = tu.n_tus % tu.nlanes == 0 ? 1 : 0; 286a3dd6028ada Kuogee Hsieh 2023-01-23 857 DRM_DEBUG("Info: n_sym = %d, num_of_tus = %d\n", 286a3dd6028ada Kuogee Hsieh 2023-01-23 858 tu.valid_boundary_link, tu.n_tus); 202aceac8bb3ae Kuogee Hsieh 2022-02-17 859 286a3dd6028ada Kuogee Hsieh 2023-01-23 860 _dp_calc_extra_bytes(&tu); c943b4948b5848 Chandan Uddaraju 2020-08-27 861 286a3dd6028ada Kuogee Hsieh 2023-01-23 862 tu.filler_size = tu.tu_size_desired - tu.valid_boundary_link; c943b4948b5848 Chandan Uddaraju 2020-08-27 863 286a3dd6028ada Kuogee Hsieh 2023-01-23 864 temp1_fp = drm_fixp_from_fraction(tu.tu_size_desired, 1); 286a3dd6028ada Kuogee Hsieh 2023-01-23 865 tu.ratio_by_tu_fp = drm_fixp_mul(tu.ratio_fp, temp1_fp); c943b4948b5848 Chandan Uddaraju 2020-08-27 866 286a3dd6028ada Kuogee Hsieh 2023-01-23 867 tu.delay_start_link = tu.extra_pclk_cycles_in_link_clk + 286a3dd6028ada Kuogee Hsieh 2023-01-23 868 tu.filler_size + tu.extra_buffer_margin; c943b4948b5848 Chandan Uddaraju 2020-08-27 869 286a3dd6028ada Kuogee Hsieh 2023-01-23 870 tu.resulting_valid_fp = 286a3dd6028ada Kuogee Hsieh 2023-01-23 871 drm_fixp_from_fraction(tu.valid_boundary_link, 1); c943b4948b5848 Chandan Uddaraju 2020-08-27 872 286a3dd6028ada Kuogee Hsieh 2023-01-23 873 temp1_fp = drm_fixp_from_fraction(tu.tu_size_desired, 1); 286a3dd6028ada Kuogee Hsieh 2023-01-23 874 temp2_fp = drm_fixp_div(tu.resulting_valid_fp, temp1_fp); 286a3dd6028ada Kuogee Hsieh 2023-01-23 875 tu.TU_ratio_err_fp = temp2_fp - tu.original_ratio_fp; c943b4948b5848 Chandan Uddaraju 2020-08-27 876 286a3dd6028ada Kuogee Hsieh 2023-01-23 877 temp1_fp = drm_fixp_from_fraction((tu.hbp_relative_to_pclk - HBLANK_MARGIN), 1); 286a3dd6028ada Kuogee Hsieh 2023-01-23 878 tu.hbp_time_fp = drm_fixp_div(temp1_fp, tu.pclk_fp); c943b4948b5848 Chandan Uddaraju 2020-08-27 879 286a3dd6028ada Kuogee Hsieh 2023-01-23 880 temp1_fp = drm_fixp_from_fraction(tu.delay_start_link, 1); 286a3dd6028ada Kuogee Hsieh 2023-01-23 881 tu.delay_start_time_fp = drm_fixp_div(temp1_fp, tu.lclk_fp); c943b4948b5848 Chandan Uddaraju 2020-08-27 882 286a3dd6028ada Kuogee Hsieh 2023-01-23 883 compare_result_1 = _tu_param_compare(tu.hbp_time_fp, 286a3dd6028ada Kuogee Hsieh 2023-01-23 884 tu.delay_start_time_fp); 286a3dd6028ada Kuogee Hsieh 2023-01-23 885 if (compare_result_1 == 2) /* hbp_time_fp < delay_start_time_fp */ 286a3dd6028ada Kuogee Hsieh 2023-01-23 886 tu.min_hblank_violated = 1; c943b4948b5848 Chandan Uddaraju 2020-08-27 887 286a3dd6028ada Kuogee Hsieh 2023-01-23 888 tu.hactive_time_fp = drm_fixp_div(tu.lwidth_fp, tu.pclk_fp); c943b4948b5848 Chandan Uddaraju 2020-08-27 889 286a3dd6028ada Kuogee Hsieh 2023-01-23 890 compare_result_2 = _tu_param_compare(tu.hactive_time_fp, 286a3dd6028ada Kuogee Hsieh 2023-01-23 891 tu.delay_start_time_fp); c943b4948b5848 Chandan Uddaraju 2020-08-27 892 if (compare_result_2 == 2) 286a3dd6028ada Kuogee Hsieh 2023-01-23 893 tu.min_hblank_violated = 1; c943b4948b5848 Chandan Uddaraju 2020-08-27 894 c943b4948b5848 Chandan Uddaraju 2020-08-27 895 /* brute force */ c943b4948b5848 Chandan Uddaraju 2020-08-27 896 286a3dd6028ada Kuogee Hsieh 2023-01-23 897 tu.delay_start_link_extra_pixclk = EXTRA_PIXCLK_CYCLE_DELAY; 286a3dd6028ada Kuogee Hsieh 2023-01-23 898 tu.diff_abs_fp = tu.resulting_valid_fp - tu.ratio_by_tu_fp; c943b4948b5848 Chandan Uddaraju 2020-08-27 899 286a3dd6028ada Kuogee Hsieh 2023-01-23 900 temp = drm_fixp2int(tu.diff_abs_fp); 286a3dd6028ada Kuogee Hsieh 2023-01-23 901 if (!temp && tu.diff_abs_fp <= 0xffff) 286a3dd6028ada Kuogee Hsieh 2023-01-23 902 tu.diff_abs_fp = 0; c943b4948b5848 Chandan Uddaraju 2020-08-27 903 c943b4948b5848 Chandan Uddaraju 2020-08-27 904 /* if(diff_abs < 0) diff_abs *= -1 */ 286a3dd6028ada Kuogee Hsieh 2023-01-23 905 if (tu.diff_abs_fp < 0) 286a3dd6028ada Kuogee Hsieh 2023-01-23 906 tu.diff_abs_fp = drm_fixp_mul(tu.diff_abs_fp, -1); 286a3dd6028ada Kuogee Hsieh 2023-01-23 907 286a3dd6028ada Kuogee Hsieh 2023-01-23 908 tu.boundary_mod_lower_err = 0; 286a3dd6028ada Kuogee Hsieh 2023-01-23 909 286a3dd6028ada Kuogee Hsieh 2023-01-23 910 temp1_fp = drm_fixp_div(tu.orig_lclk_fp, tu.orig_pclk_fp); 286a3dd6028ada Kuogee Hsieh 2023-01-23 911 286a3dd6028ada Kuogee Hsieh 2023-01-23 912 temp2_fp = drm_fixp_from_fraction(tu.orig_lwidth + tu.orig_hbp, 2); 286a3dd6028ada Kuogee Hsieh 2023-01-23 913 temp_fp = drm_fixp_mul(temp1_fp, temp2_fp); 286a3dd6028ada Kuogee Hsieh 2023-01-23 914 tu.resolution_line_time = drm_fixp2int(temp_fp); 286a3dd6028ada Kuogee Hsieh 2023-01-23 915 tu.pre_tu_hw_pipe_delay = fixp2int_ceil(temp1_fp) + 2 /*cdc fifo write jitter+2*/ 286a3dd6028ada Kuogee Hsieh 2023-01-23 916 + 3 /*pre-delay start cycles*/ 286a3dd6028ada Kuogee Hsieh 2023-01-23 917 + 3 /*post-delay start cycles*/ + 1 /*BE on the link*/; 286a3dd6028ada Kuogee Hsieh 2023-01-23 918 tu.post_tu_hw_pipe_delay = 4 /*BS_on_the_link*/ + 1 /*BE_next_ren*/; 286a3dd6028ada Kuogee Hsieh 2023-01-23 919 286a3dd6028ada Kuogee Hsieh 2023-01-23 920 temp1_fp = drm_fixp_from_fraction(tu.bpp, 8); 286a3dd6028ada Kuogee Hsieh 2023-01-23 921 temp1_fp = drm_fixp_mul(tu.lwidth_fp, temp1_fp); 286a3dd6028ada Kuogee Hsieh 2023-01-23 922 tu.n_symbols = fixp2int_ceil(temp1_fp); 286a3dd6028ada Kuogee Hsieh 2023-01-23 923 286a3dd6028ada Kuogee Hsieh 2023-01-23 924 if (tu.rb2) { 286a3dd6028ada Kuogee Hsieh 2023-01-23 925 temp1_fp = drm_fixp_mul(tu.delay_start_time_fp, tu.lclk_fp); 286a3dd6028ada Kuogee Hsieh 2023-01-23 926 tu.delay_start_link_lclk = fixp2int_ceil(temp1_fp); 286a3dd6028ada Kuogee Hsieh 2023-01-23 927 286a3dd6028ada Kuogee Hsieh 2023-01-23 928 tu.new_valid_boundary_link = tu.valid_boundary_link; 286a3dd6028ada Kuogee Hsieh 2023-01-23 929 tu.i_upper_boundary_count = 1; 286a3dd6028ada Kuogee Hsieh 2023-01-23 930 tu.i_lower_boundary_count = 0; 286a3dd6028ada Kuogee Hsieh 2023-01-23 931 286a3dd6028ada Kuogee Hsieh 2023-01-23 932 temp1 = tu.i_upper_boundary_count * tu.new_valid_boundary_link; 286a3dd6028ada Kuogee Hsieh 2023-01-23 933 temp1 += tu.i_lower_boundary_count * (tu.new_valid_boundary_link - 1); 286a3dd6028ada Kuogee Hsieh 2023-01-23 934 tu.average_valid2_fp = drm_fixp_from_fraction(temp1, 286a3dd6028ada Kuogee Hsieh 2023-01-23 935 (tu.i_upper_boundary_count + tu.i_lower_boundary_count)); 286a3dd6028ada Kuogee Hsieh 2023-01-23 936 286a3dd6028ada Kuogee Hsieh 2023-01-23 937 temp1_fp = drm_fixp_from_fraction(tu.bpp, 8); 286a3dd6028ada Kuogee Hsieh 2023-01-23 938 temp1_fp = drm_fixp_mul(tu.lwidth_fp, temp1_fp); 286a3dd6028ada Kuogee Hsieh 2023-01-23 939 temp2_fp = drm_fixp_div(temp1_fp, tu.average_valid2_fp); 286a3dd6028ada Kuogee Hsieh 2023-01-23 940 tu.n_tus = drm_fixp2int(temp2_fp); 286a3dd6028ada Kuogee Hsieh 2023-01-23 941 286a3dd6028ada Kuogee Hsieh 2023-01-23 942 tu.n_tus_per_lane = tu.n_tus / tu.nlanes; 286a3dd6028ada Kuogee Hsieh 2023-01-23 943 tu.paired_tus = (int)((tu.n_tus_per_lane) / 286a3dd6028ada Kuogee Hsieh 2023-01-23 944 (tu.i_upper_boundary_count + tu.i_lower_boundary_count)); 286a3dd6028ada Kuogee Hsieh 2023-01-23 945 286a3dd6028ada Kuogee Hsieh 2023-01-23 946 tu.remainder_tus = tu.n_tus_per_lane - tu.paired_tus * 286a3dd6028ada Kuogee Hsieh 2023-01-23 947 (tu.i_upper_boundary_count + tu.i_lower_boundary_count); 286a3dd6028ada Kuogee Hsieh 2023-01-23 948 286a3dd6028ada Kuogee Hsieh 2023-01-23 949 if (tu.remainder_tus > tu.i_upper_boundary_count) { 286a3dd6028ada Kuogee Hsieh 2023-01-23 950 temp = (tu.remainder_tus - tu.i_upper_boundary_count) * 286a3dd6028ada Kuogee Hsieh 2023-01-23 951 (tu.new_valid_boundary_link - 1); 286a3dd6028ada Kuogee Hsieh 2023-01-23 952 temp += (tu.i_upper_boundary_count * tu.new_valid_boundary_link); 286a3dd6028ada Kuogee Hsieh 2023-01-23 953 temp *= tu.nlanes; 286a3dd6028ada Kuogee Hsieh 2023-01-23 954 } else { 286a3dd6028ada Kuogee Hsieh 2023-01-23 955 temp = tu.nlanes * tu.remainder_tus * tu.new_valid_boundary_link; 286a3dd6028ada Kuogee Hsieh 2023-01-23 956 } c943b4948b5848 Chandan Uddaraju 2020-08-27 957 286a3dd6028ada Kuogee Hsieh 2023-01-23 958 temp1 = tu.i_lower_boundary_count * (tu.new_valid_boundary_link - 1); 286a3dd6028ada Kuogee Hsieh 2023-01-23 959 temp1 += tu.i_upper_boundary_count * tu.new_valid_boundary_link; 286a3dd6028ada Kuogee Hsieh 2023-01-23 960 temp1 *= tu.paired_tus * tu.nlanes; 286a3dd6028ada Kuogee Hsieh 2023-01-23 961 temp1_fp = drm_fixp_from_fraction(tu.n_symbols - temp1 - temp, tu.nlanes); 286a3dd6028ada Kuogee Hsieh 2023-01-23 962 tu.last_partial_lclk = fixp2int_ceil(temp1_fp); c943b4948b5848 Chandan Uddaraju 2020-08-27 963 286a3dd6028ada Kuogee Hsieh 2023-01-23 964 tu.tu_active_cycles = (int)((tu.n_tus_per_lane * tu.tu_size) + 286a3dd6028ada Kuogee Hsieh 2023-01-23 965 tu.last_partial_lclk); c943b4948b5848 Chandan Uddaraju 2020-08-27 966 286a3dd6028ada Kuogee Hsieh 2023-01-23 967 temp = tu.pre_tu_hw_pipe_delay + tu.delay_start_link_lclk + 286a3dd6028ada Kuogee Hsieh 2023-01-23 968 tu.tu_active_cycles + tu.post_tu_hw_pipe_delay; cc9014bf63a4d8 Lee Jones 2020-11-24 969 286a3dd6028ada Kuogee Hsieh 2023-01-23 970 if (tu.fec_en == 1) { 286a3dd6028ada Kuogee Hsieh 2023-01-23 971 if (tu.nlanes == 1) { 286a3dd6028ada Kuogee Hsieh 2023-01-23 972 temp1_fp = drm_fixp_from_fraction(temp, 500); 286a3dd6028ada Kuogee Hsieh 2023-01-23 973 tu.parity_symbols = fixp2int_ceil(temp1_fp) * 12 + 1; 286a3dd6028ada Kuogee Hsieh 2023-01-23 974 } else { 286a3dd6028ada Kuogee Hsieh 2023-01-23 975 temp1_fp = drm_fixp_from_fraction(temp, 250); 286a3dd6028ada Kuogee Hsieh 2023-01-23 976 tu.parity_symbols = fixp2int_ceil(temp1_fp) * 6 + 1; c943b4948b5848 Chandan Uddaraju 2020-08-27 977 } 286a3dd6028ada Kuogee Hsieh 2023-01-23 978 } else { //no fec BW impact 286a3dd6028ada Kuogee Hsieh 2023-01-23 979 tu.parity_symbols = 0; c943b4948b5848 Chandan Uddaraju 2020-08-27 980 } 286a3dd6028ada Kuogee Hsieh 2023-01-23 981 286a3dd6028ada Kuogee Hsieh 2023-01-23 982 tu.link_config_hactive_time = temp + tu.parity_symbols; 286a3dd6028ada Kuogee Hsieh 2023-01-23 983 286a3dd6028ada Kuogee Hsieh 2023-01-23 984 if (tu.link_config_hactive_time + 1 /*margin*/ >= tu.resolution_line_time) 286a3dd6028ada Kuogee Hsieh 2023-01-23 985 tu.min_hblank_violated = 1; c943b4948b5848 Chandan Uddaraju 2020-08-27 986 } c943b4948b5848 Chandan Uddaraju 2020-08-27 987 286a3dd6028ada Kuogee Hsieh 2023-01-23 988 tu.delay_start_time_fp = 0; 286a3dd6028ada Kuogee Hsieh 2023-01-23 989 286a3dd6028ada Kuogee Hsieh 2023-01-23 990 if ((tu.diff_abs_fp != 0 && 286a3dd6028ada Kuogee Hsieh 2023-01-23 991 ((tu.diff_abs_fp > BRUTE_FORCE_THRESHOLD_fp) || 286a3dd6028ada Kuogee Hsieh 2023-01-23 992 (tu.even_distribution_legacy == 0) || 286a3dd6028ada Kuogee Hsieh 2023-01-23 993 (DP_BRUTE_FORCE == 1))) || 286a3dd6028ada Kuogee Hsieh 2023-01-23 994 (tu.min_hblank_violated == 1)) { 286a3dd6028ada Kuogee Hsieh 2023-01-23 995 _dp_calc_boundary(&tu); 286a3dd6028ada Kuogee Hsieh 2023-01-23 996 286a3dd6028ada Kuogee Hsieh 2023-01-23 997 if (tu.boundary_moderation_en) { c943b4948b5848 Chandan Uddaraju 2020-08-27 998 temp1_fp = drm_fixp_from_fraction( 286a3dd6028ada Kuogee Hsieh 2023-01-23 999 (tu.upper_boundary_count * 286a3dd6028ada Kuogee Hsieh 2023-01-23 1000 tu.valid_boundary_link + 286a3dd6028ada Kuogee Hsieh 2023-01-23 1001 tu.lower_boundary_count * 286a3dd6028ada Kuogee Hsieh 2023-01-23 1002 (tu.valid_boundary_link - 1)), 1); c943b4948b5848 Chandan Uddaraju 2020-08-27 1003 temp2_fp = drm_fixp_from_fraction( 286a3dd6028ada Kuogee Hsieh 2023-01-23 1004 (tu.upper_boundary_count + 286a3dd6028ada Kuogee Hsieh 2023-01-23 1005 tu.lower_boundary_count), 1); 286a3dd6028ada Kuogee Hsieh 2023-01-23 1006 tu.resulting_valid_fp = c943b4948b5848 Chandan Uddaraju 2020-08-27 1007 drm_fixp_div(temp1_fp, temp2_fp); c943b4948b5848 Chandan Uddaraju 2020-08-27 1008 c943b4948b5848 Chandan Uddaraju 2020-08-27 1009 temp1_fp = drm_fixp_from_fraction( 286a3dd6028ada Kuogee Hsieh 2023-01-23 1010 tu.tu_size_desired, 1); 286a3dd6028ada Kuogee Hsieh 2023-01-23 1011 tu.ratio_by_tu_fp = 286a3dd6028ada Kuogee Hsieh 2023-01-23 1012 drm_fixp_mul(tu.original_ratio_fp, temp1_fp); c943b4948b5848 Chandan Uddaraju 2020-08-27 1013 286a3dd6028ada Kuogee Hsieh 2023-01-23 1014 tu.valid_lower_boundary_link = 286a3dd6028ada Kuogee Hsieh 2023-01-23 1015 tu.valid_boundary_link - 1; c943b4948b5848 Chandan Uddaraju 2020-08-27 1016 286a3dd6028ada Kuogee Hsieh 2023-01-23 1017 temp1_fp = drm_fixp_from_fraction(tu.bpp, 8); 286a3dd6028ada Kuogee Hsieh 2023-01-23 1018 temp1_fp = drm_fixp_mul(tu.lwidth_fp, temp1_fp); c943b4948b5848 Chandan Uddaraju 2020-08-27 1019 temp2_fp = drm_fixp_div(temp1_fp, 286a3dd6028ada Kuogee Hsieh 2023-01-23 1020 tu.resulting_valid_fp); 286a3dd6028ada Kuogee Hsieh 2023-01-23 1021 tu.n_tus = drm_fixp2int(temp2_fp); c943b4948b5848 Chandan Uddaraju 2020-08-27 1022 286a3dd6028ada Kuogee Hsieh 2023-01-23 1023 tu.tu_size_minus1 = tu.tu_size_desired - 1; 286a3dd6028ada Kuogee Hsieh 2023-01-23 1024 tu.even_distribution_BF = 1; c943b4948b5848 Chandan Uddaraju 2020-08-27 1025 c943b4948b5848 Chandan Uddaraju 2020-08-27 1026 temp1_fp = 286a3dd6028ada Kuogee Hsieh 2023-01-23 1027 drm_fixp_from_fraction(tu.tu_size_desired, 1); c943b4948b5848 Chandan Uddaraju 2020-08-27 1028 temp2_fp = 286a3dd6028ada Kuogee Hsieh 2023-01-23 1029 drm_fixp_div(tu.resulting_valid_fp, temp1_fp); 286a3dd6028ada Kuogee Hsieh 2023-01-23 1030 tu.TU_ratio_err_fp = temp2_fp - tu.original_ratio_fp; c943b4948b5848 Chandan Uddaraju 2020-08-27 1031 } c943b4948b5848 Chandan Uddaraju 2020-08-27 1032 } c943b4948b5848 Chandan Uddaraju 2020-08-27 1033 286a3dd6028ada Kuogee Hsieh 2023-01-23 1034 if (tu.async_en) { 286a3dd6028ada Kuogee Hsieh 2023-01-23 1035 temp2_fp = drm_fixp_mul(LCLK_FAST_SKEW_fp, tu.lwidth_fp); 286a3dd6028ada Kuogee Hsieh 2023-01-23 1036 temp = fixp2int_ceil(temp2_fp); c943b4948b5848 Chandan Uddaraju 2020-08-27 1037 286a3dd6028ada Kuogee Hsieh 2023-01-23 1038 temp1_fp = drm_fixp_from_fraction(tu.nlanes, 1); 286a3dd6028ada Kuogee Hsieh 2023-01-23 1039 temp2_fp = drm_fixp_mul(tu.original_ratio_fp, temp1_fp); 286a3dd6028ada Kuogee Hsieh 2023-01-23 1040 temp1_fp = drm_fixp_from_fraction(tu.bpp, 8); c943b4948b5848 Chandan Uddaraju 2020-08-27 1041 temp2_fp = drm_fixp_div(temp1_fp, temp2_fp); c943b4948b5848 Chandan Uddaraju 2020-08-27 1042 temp1_fp = drm_fixp_from_fraction(temp, 1); c943b4948b5848 Chandan Uddaraju 2020-08-27 1043 temp2_fp = drm_fixp_mul(temp1_fp, temp2_fp); c943b4948b5848 Chandan Uddaraju 2020-08-27 1044 temp = drm_fixp2int(temp2_fp); c943b4948b5848 Chandan Uddaraju 2020-08-27 1045 286a3dd6028ada Kuogee Hsieh 2023-01-23 1046 tu.delay_start_link += (int)temp; 286a3dd6028ada Kuogee Hsieh 2023-01-23 1047 } c943b4948b5848 Chandan Uddaraju 2020-08-27 1048 286a3dd6028ada Kuogee Hsieh 2023-01-23 1049 temp1_fp = drm_fixp_from_fraction(tu.delay_start_link, 1); 286a3dd6028ada Kuogee Hsieh 2023-01-23 1050 tu.delay_start_time_fp = drm_fixp_div(temp1_fp, tu.lclk_fp); c943b4948b5848 Chandan Uddaraju 2020-08-27 1051 c943b4948b5848 Chandan Uddaraju 2020-08-27 1052 /* OUTPUTS */ 286a3dd6028ada Kuogee Hsieh 2023-01-23 1053 tu_table->valid_boundary_link = tu.valid_boundary_link; 286a3dd6028ada Kuogee Hsieh 2023-01-23 1054 tu_table->delay_start_link = tu.delay_start_link; 286a3dd6028ada Kuogee Hsieh 2023-01-23 1055 tu_table->boundary_moderation_en = tu.boundary_moderation_en; 286a3dd6028ada Kuogee Hsieh 2023-01-23 1056 tu_table->valid_lower_boundary_link = tu.valid_lower_boundary_link; 286a3dd6028ada Kuogee Hsieh 2023-01-23 1057 tu_table->upper_boundary_count = tu.upper_boundary_count; 286a3dd6028ada Kuogee Hsieh 2023-01-23 1058 tu_table->lower_boundary_count = tu.lower_boundary_count; 286a3dd6028ada Kuogee Hsieh 2023-01-23 1059 tu_table->tu_size_minus1 = tu.tu_size_minus1; 286a3dd6028ada Kuogee Hsieh 2023-01-23 1060 286a3dd6028ada Kuogee Hsieh 2023-01-23 1061 DRM_DEBUG("TU: valid_boundary_link: %d\n", tu_table->valid_boundary_link); 286a3dd6028ada Kuogee Hsieh 2023-01-23 1062 DRM_DEBUG("TU: delay_start_link: %d\n", tu_table->delay_start_link); 286a3dd6028ada Kuogee Hsieh 2023-01-23 1063 DRM_DEBUG("TU: boundary_moderation_en: %d\n", c943b4948b5848 Chandan Uddaraju 2020-08-27 1064 tu_table->boundary_moderation_en); 286a3dd6028ada Kuogee Hsieh 2023-01-23 1065 DRM_DEBUG("TU: valid_lower_boundary_link: %d\n", c943b4948b5848 Chandan Uddaraju 2020-08-27 1066 tu_table->valid_lower_boundary_link); 286a3dd6028ada Kuogee Hsieh 2023-01-23 1067 DRM_DEBUG("TU: upper_boundary_count: %d\n", c943b4948b5848 Chandan Uddaraju 2020-08-27 1068 tu_table->upper_boundary_count); 286a3dd6028ada Kuogee Hsieh 2023-01-23 1069 DRM_DEBUG("TU: lower_boundary_count: %d\n", c943b4948b5848 Chandan Uddaraju 2020-08-27 1070 tu_table->lower_boundary_count); 286a3dd6028ada Kuogee Hsieh 2023-01-23 1071 DRM_DEBUG("TU: tu_size_minus1: %d\n", tu_table->tu_size_minus1); c943b4948b5848 Chandan Uddaraju 2020-08-27 @1072 } c943b4948b5848 Chandan Uddaraju 2020-08-27 1073 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests