Re: [PATCH v6 14/14] drm/msm/dsi: Add support for DSC configuration
From: kernel test robot
Date: Tue Apr 05 2022 - 17:38:55 EST
Hi Vinod,
I love your patch! Perhaps something to improve:
[auto build test WARNING on 05241de1f69eb7f56b0a5e0bec96a7752fad1b2f]
url: https://github.com/intel-lab-lkp/linux/commits/Vinod-Koul/drm-msm-Add-Display-Stream-Compression-Support/20220405-003745
base: 05241de1f69eb7f56b0a5e0bec96a7752fad1b2f
config: hexagon-randconfig-r004-20220405 (https://download.01.org/0day-ci/archive/20220406/202204060308.OkAS3XG3-lkp@xxxxxxxxx/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project c4a1b07d0979e7ff20d7d541af666d822d66b566)
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/6c54db3ee1e02d639e568c37121f797ac586af3d
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Vinod-Koul/drm-msm-Add-Display-Stream-Compression-Support/20220405-003745
git checkout 6c54db3ee1e02d639e568c37121f797ac586af3d
# save the config file to linux build tree
mkdir build_dir
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=hexagon SHELL=/bin/bash drivers/gpu/drm/msm/
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@xxxxxxxxx>
All warnings (new ones prefixed by >>):
>> drivers/gpu/drm/msm/dsi/dsi_host.c:918:23: warning: variable 'reg_ctrl' set but not used [-Wunused-but-set-variable]
u32 reg, intf_width, reg_ctrl, reg_ctrl2;
^
1 warning generated.
vim +/reg_ctrl +918 drivers/gpu/drm/msm/dsi/dsi_host.c
914
915 static void dsi_update_dsc_timing(struct msm_dsi_host *msm_host, bool is_cmd_mode, u32 hdisplay)
916 {
917 struct msm_display_dsc_config *dsc = msm_host->dsc;
> 918 u32 reg, intf_width, reg_ctrl, reg_ctrl2;
919 u32 slice_per_intf, total_bytes_per_intf;
920 u32 pkt_per_line;
921 u32 bytes_in_slice;
922 u32 eol_byte_num;
923
924 /* first calculate dsc parameters and then program
925 * compress mode registers
926 */
927 intf_width = hdisplay;
928 slice_per_intf = DIV_ROUND_UP(intf_width, dsc->drm->slice_width);
929
930 /* If slice_per_pkt is greater than slice_per_intf
931 * then default to 1. This can happen during partial
932 * update.
933 */
934 if (slice_per_intf > dsc->drm->slice_count)
935 dsc->drm->slice_count = 1;
936
937 slice_per_intf = DIV_ROUND_UP(hdisplay, dsc->drm->slice_width);
938 bytes_in_slice = DIV_ROUND_UP(dsc->drm->slice_width * dsc->drm->bits_per_pixel, 8);
939
940 dsc->drm->slice_chunk_size = bytes_in_slice;
941
942 total_bytes_per_intf = bytes_in_slice * slice_per_intf;
943
944 eol_byte_num = total_bytes_per_intf % 3;
945 pkt_per_line = slice_per_intf / dsc->drm->slice_count;
946
947 if (is_cmd_mode) /* packet data type */
948 reg = DSI_COMMAND_COMPRESSION_MODE_CTRL_STREAM0_DATATYPE(MIPI_DSI_DCS_LONG_WRITE);
949 else
950 reg = DSI_VIDEO_COMPRESSION_MODE_CTRL_DATATYPE(MIPI_DSI_COMPRESSED_PIXEL_STREAM);
951
952 /* DSI_VIDEO_COMPRESSION_MODE & DSI_COMMAND_COMPRESSION_MODE
953 * registers have similar offsets, so for below common code use
954 * DSI_VIDEO_COMPRESSION_MODE_XXXX for setting bits
955 */
956 reg |= DSI_VIDEO_COMPRESSION_MODE_CTRL_PKT_PER_LINE(pkt_per_line >> 1);
957 reg |= DSI_VIDEO_COMPRESSION_MODE_CTRL_EOL_BYTE_NUM(eol_byte_num);
958 reg |= DSI_VIDEO_COMPRESSION_MODE_CTRL_EN;
959
960 if (is_cmd_mode) {
961 reg_ctrl = dsi_read(msm_host, REG_DSI_COMMAND_COMPRESSION_MODE_CTRL);
962 reg_ctrl2 = dsi_read(msm_host, REG_DSI_COMMAND_COMPRESSION_MODE_CTRL2);
963
964 reg_ctrl |= reg;
965 reg_ctrl2 |= DSI_COMMAND_COMPRESSION_MODE_CTRL2_STREAM0_SLICE_WIDTH(bytes_in_slice);
966
967 dsi_write(msm_host, REG_DSI_COMMAND_COMPRESSION_MODE_CTRL, reg);
968 dsi_write(msm_host, REG_DSI_COMMAND_COMPRESSION_MODE_CTRL2, reg_ctrl2);
969 } else {
970 dsi_write(msm_host, REG_DSI_VIDEO_COMPRESSION_MODE_CTRL, reg);
971 }
972 }
973
--
0-DAY CI Kernel Test Service
https://01.org/lkp