Hi Jackie, Thank you for the patch! Yet something to improve: [auto build test ERROR on pinchartl-media/drm/du/next] [also build test ERROR on drm-intel/for-linux-next drm-tip/drm-tip drm-exynos/exynos-drm-next tegra-drm/drm/tegra/for-next v5.14-rc3 next-20210727] [cannot apply to drm/drm-next] [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] url: https://github.com/0day-ci/linux/commits/Jackie-Liu/drm-rcar-du-crtc-force-depends-on-cmm/20210728-222353 base: git://linuxtv.org/pinchartl/media.git drm/du/next config: arm-defconfig (attached as .config) compiler: arm-linux-gnueabi-gcc (GCC) 10.3.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/0day-ci/linux/commit/d8277431962a65912c00e968b5df7bf103cda67a git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Jackie-Liu/drm-rcar-du-crtc-force-depends-on-cmm/20210728-222353 git checkout d8277431962a65912c00e968b5df7bf103cda67a # save the attached .config to linux build tree mkdir build_dir COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-10.3.0 make.cross O=build_dir ARCH=arm SHELL=/bin/bash drivers/gpu/drm/rcar-du/ If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@xxxxxxxxx> All errors (new ones prefixed by >>): >> drivers/gpu/drm/rcar-du/rcar_cmm.c:81:5: error: redefinition of 'rcar_cmm_setup' 81 | int rcar_cmm_setup(struct platform_device *pdev, | ^~~~~~~~~~~~~~ In file included from drivers/gpu/drm/rcar-du/rcar_cmm.c:16: drivers/gpu/drm/rcar-du/rcar_cmm.h:51:19: note: previous definition of 'rcar_cmm_setup' was here 51 | static inline int rcar_cmm_setup(struct platform_device *pdev, | ^~~~~~~~~~~~~~ >> drivers/gpu/drm/rcar-du/rcar_cmm.c:121:5: error: redefinition of 'rcar_cmm_enable' 121 | int rcar_cmm_enable(struct platform_device *pdev) | ^~~~~~~~~~~~~~~ In file included from drivers/gpu/drm/rcar-du/rcar_cmm.c:16: drivers/gpu/drm/rcar-du/rcar_cmm.h:42:19: note: previous definition of 'rcar_cmm_enable' was here 42 | static inline int rcar_cmm_enable(struct platform_device *pdev) | ^~~~~~~~~~~~~~~ >> drivers/gpu/drm/rcar-du/rcar_cmm.c:143:6: error: redefinition of 'rcar_cmm_disable' 143 | void rcar_cmm_disable(struct platform_device *pdev) | ^~~~~~~~~~~~~~~~ In file included from drivers/gpu/drm/rcar-du/rcar_cmm.c:16: drivers/gpu/drm/rcar-du/rcar_cmm.h:47:20: note: previous definition of 'rcar_cmm_disable' was here 47 | static inline void rcar_cmm_disable(struct platform_device *pdev) | ^~~~~~~~~~~~~~~~ >> drivers/gpu/drm/rcar-du/rcar_cmm.c:161:5: error: redefinition of 'rcar_cmm_init' 161 | int rcar_cmm_init(struct platform_device *pdev) | ^~~~~~~~~~~~~ In file included from drivers/gpu/drm/rcar-du/rcar_cmm.c:16: drivers/gpu/drm/rcar-du/rcar_cmm.h:37:19: note: previous definition of 'rcar_cmm_init' was here 37 | static inline int rcar_cmm_init(struct platform_device *pdev) | ^~~~~~~~~~~~~ vim +/rcar_cmm_setup +81 drivers/gpu/drm/rcar-du/rcar_cmm.c e08e934d6c289ed Jacopo Mondi 2019-10-17 64 e08e934d6c289ed Jacopo Mondi 2019-10-17 65 /* e08e934d6c289ed Jacopo Mondi 2019-10-17 66 * rcar_cmm_setup() - Configure the CMM unit e08e934d6c289ed Jacopo Mondi 2019-10-17 67 * @pdev: The platform device associated with the CMM instance e08e934d6c289ed Jacopo Mondi 2019-10-17 68 * @config: The CMM unit configuration e08e934d6c289ed Jacopo Mondi 2019-10-17 69 * e08e934d6c289ed Jacopo Mondi 2019-10-17 70 * Configure the CMM unit with the given configuration. Currently enabling, e08e934d6c289ed Jacopo Mondi 2019-10-17 71 * disabling and programming of the 1-D LUT unit is supported. e08e934d6c289ed Jacopo Mondi 2019-10-17 72 * e08e934d6c289ed Jacopo Mondi 2019-10-17 73 * As rcar_cmm_setup() accesses the CMM registers the unit should be powered e08e934d6c289ed Jacopo Mondi 2019-10-17 74 * and its functional clock enabled. To guarantee this, before any call to e08e934d6c289ed Jacopo Mondi 2019-10-17 75 * this function is made, the CMM unit has to be enabled by calling e08e934d6c289ed Jacopo Mondi 2019-10-17 76 * rcar_cmm_enable() first. e08e934d6c289ed Jacopo Mondi 2019-10-17 77 * e08e934d6c289ed Jacopo Mondi 2019-10-17 78 * TODO: Add support for LUT double buffer operations to avoid updating the e08e934d6c289ed Jacopo Mondi 2019-10-17 79 * LUT table entries while a frame is being displayed. e08e934d6c289ed Jacopo Mondi 2019-10-17 80 */ e08e934d6c289ed Jacopo Mondi 2019-10-17 @81 int rcar_cmm_setup(struct platform_device *pdev, e08e934d6c289ed Jacopo Mondi 2019-10-17 82 const struct rcar_cmm_config *config) e08e934d6c289ed Jacopo Mondi 2019-10-17 83 { e08e934d6c289ed Jacopo Mondi 2019-10-17 84 struct rcar_cmm *rcmm = platform_get_drvdata(pdev); e08e934d6c289ed Jacopo Mondi 2019-10-17 85 e08e934d6c289ed Jacopo Mondi 2019-10-17 86 /* Disable LUT if no table is provided. */ e08e934d6c289ed Jacopo Mondi 2019-10-17 87 if (!config->lut.table) { e08e934d6c289ed Jacopo Mondi 2019-10-17 88 if (rcmm->lut.enabled) { e08e934d6c289ed Jacopo Mondi 2019-10-17 89 rcar_cmm_write(rcmm, CM2_LUT_CTRL, 0); e08e934d6c289ed Jacopo Mondi 2019-10-17 90 rcmm->lut.enabled = false; e08e934d6c289ed Jacopo Mondi 2019-10-17 91 } e08e934d6c289ed Jacopo Mondi 2019-10-17 92 e08e934d6c289ed Jacopo Mondi 2019-10-17 93 return 0; e08e934d6c289ed Jacopo Mondi 2019-10-17 94 } e08e934d6c289ed Jacopo Mondi 2019-10-17 95 e08e934d6c289ed Jacopo Mondi 2019-10-17 96 /* Enable LUT and program the new gamma table values. */ e08e934d6c289ed Jacopo Mondi 2019-10-17 97 if (!rcmm->lut.enabled) { e08e934d6c289ed Jacopo Mondi 2019-10-17 98 rcar_cmm_write(rcmm, CM2_LUT_CTRL, CM2_LUT_CTRL_LUT_EN); e08e934d6c289ed Jacopo Mondi 2019-10-17 99 rcmm->lut.enabled = true; e08e934d6c289ed Jacopo Mondi 2019-10-17 100 } e08e934d6c289ed Jacopo Mondi 2019-10-17 101 e08e934d6c289ed Jacopo Mondi 2019-10-17 102 rcar_cmm_lut_write(rcmm, config->lut.table); e08e934d6c289ed Jacopo Mondi 2019-10-17 103 e08e934d6c289ed Jacopo Mondi 2019-10-17 104 return 0; e08e934d6c289ed Jacopo Mondi 2019-10-17 105 } e08e934d6c289ed Jacopo Mondi 2019-10-17 106 EXPORT_SYMBOL_GPL(rcar_cmm_setup); e08e934d6c289ed Jacopo Mondi 2019-10-17 107 e08e934d6c289ed Jacopo Mondi 2019-10-17 108 /* e08e934d6c289ed Jacopo Mondi 2019-10-17 109 * rcar_cmm_enable() - Enable the CMM unit e08e934d6c289ed Jacopo Mondi 2019-10-17 110 * @pdev: The platform device associated with the CMM instance e08e934d6c289ed Jacopo Mondi 2019-10-17 111 * e08e934d6c289ed Jacopo Mondi 2019-10-17 112 * When the output of the corresponding DU channel is routed to the CMM unit, e08e934d6c289ed Jacopo Mondi 2019-10-17 113 * the unit shall be enabled before the DU channel is started, and remain e08e934d6c289ed Jacopo Mondi 2019-10-17 114 * enabled until the channel is stopped. The CMM unit shall be disabled with e08e934d6c289ed Jacopo Mondi 2019-10-17 115 * rcar_cmm_disable(). e08e934d6c289ed Jacopo Mondi 2019-10-17 116 * e08e934d6c289ed Jacopo Mondi 2019-10-17 117 * Calls to rcar_cmm_enable() and rcar_cmm_disable() are not reference-counted. e08e934d6c289ed Jacopo Mondi 2019-10-17 118 * It is an error to attempt to enable an already enabled CMM unit, or to e08e934d6c289ed Jacopo Mondi 2019-10-17 119 * attempt to disable a disabled unit. e08e934d6c289ed Jacopo Mondi 2019-10-17 120 */ e08e934d6c289ed Jacopo Mondi 2019-10-17 @121 int rcar_cmm_enable(struct platform_device *pdev) e08e934d6c289ed Jacopo Mondi 2019-10-17 122 { e08e934d6c289ed Jacopo Mondi 2019-10-17 123 int ret; e08e934d6c289ed Jacopo Mondi 2019-10-17 124 136ce7684bc1ff4 Qinglang Miao 2020-11-27 125 ret = pm_runtime_resume_and_get(&pdev->dev); e08e934d6c289ed Jacopo Mondi 2019-10-17 126 if (ret < 0) e08e934d6c289ed Jacopo Mondi 2019-10-17 127 return ret; e08e934d6c289ed Jacopo Mondi 2019-10-17 128 e08e934d6c289ed Jacopo Mondi 2019-10-17 129 return 0; e08e934d6c289ed Jacopo Mondi 2019-10-17 130 } e08e934d6c289ed Jacopo Mondi 2019-10-17 131 EXPORT_SYMBOL_GPL(rcar_cmm_enable); e08e934d6c289ed Jacopo Mondi 2019-10-17 132 e08e934d6c289ed Jacopo Mondi 2019-10-17 133 /* e08e934d6c289ed Jacopo Mondi 2019-10-17 134 * rcar_cmm_disable() - Disable the CMM unit e08e934d6c289ed Jacopo Mondi 2019-10-17 135 * @pdev: The platform device associated with the CMM instance e08e934d6c289ed Jacopo Mondi 2019-10-17 136 * e08e934d6c289ed Jacopo Mondi 2019-10-17 137 * See rcar_cmm_enable() for usage information. e08e934d6c289ed Jacopo Mondi 2019-10-17 138 * e08e934d6c289ed Jacopo Mondi 2019-10-17 139 * Disabling the CMM unit disable all the internal processing blocks. The CMM e08e934d6c289ed Jacopo Mondi 2019-10-17 140 * state shall thus be restored with rcar_cmm_setup() when re-enabling the CMM e08e934d6c289ed Jacopo Mondi 2019-10-17 141 * unit after the next rcar_cmm_enable() call. e08e934d6c289ed Jacopo Mondi 2019-10-17 142 */ e08e934d6c289ed Jacopo Mondi 2019-10-17 @143 void rcar_cmm_disable(struct platform_device *pdev) e08e934d6c289ed Jacopo Mondi 2019-10-17 144 { e08e934d6c289ed Jacopo Mondi 2019-10-17 145 struct rcar_cmm *rcmm = platform_get_drvdata(pdev); e08e934d6c289ed Jacopo Mondi 2019-10-17 146 e08e934d6c289ed Jacopo Mondi 2019-10-17 147 rcar_cmm_write(rcmm, CM2_LUT_CTRL, 0); e08e934d6c289ed Jacopo Mondi 2019-10-17 148 rcmm->lut.enabled = false; e08e934d6c289ed Jacopo Mondi 2019-10-17 149 e08e934d6c289ed Jacopo Mondi 2019-10-17 150 pm_runtime_put(&pdev->dev); e08e934d6c289ed Jacopo Mondi 2019-10-17 151 } e08e934d6c289ed Jacopo Mondi 2019-10-17 152 EXPORT_SYMBOL_GPL(rcar_cmm_disable); e08e934d6c289ed Jacopo Mondi 2019-10-17 153 e08e934d6c289ed Jacopo Mondi 2019-10-17 154 /* e08e934d6c289ed Jacopo Mondi 2019-10-17 155 * rcar_cmm_init() - Initialize the CMM unit e08e934d6c289ed Jacopo Mondi 2019-10-17 156 * @pdev: The platform device associated with the CMM instance e08e934d6c289ed Jacopo Mondi 2019-10-17 157 * e08e934d6c289ed Jacopo Mondi 2019-10-17 158 * Return: 0 on success, -EPROBE_DEFER if the CMM is not available yet, e08e934d6c289ed Jacopo Mondi 2019-10-17 159 * -ENODEV if the DRM_RCAR_CMM config option is disabled e08e934d6c289ed Jacopo Mondi 2019-10-17 160 */ e08e934d6c289ed Jacopo Mondi 2019-10-17 @161 int rcar_cmm_init(struct platform_device *pdev) e08e934d6c289ed Jacopo Mondi 2019-10-17 162 { e08e934d6c289ed Jacopo Mondi 2019-10-17 163 struct rcar_cmm *rcmm = platform_get_drvdata(pdev); e08e934d6c289ed Jacopo Mondi 2019-10-17 164 e08e934d6c289ed Jacopo Mondi 2019-10-17 165 if (!rcmm) e08e934d6c289ed Jacopo Mondi 2019-10-17 166 return -EPROBE_DEFER; e08e934d6c289ed Jacopo Mondi 2019-10-17 167 e08e934d6c289ed Jacopo Mondi 2019-10-17 168 return 0; e08e934d6c289ed Jacopo Mondi 2019-10-17 169 } e08e934d6c289ed Jacopo Mondi 2019-10-17 170 EXPORT_SYMBOL_GPL(rcar_cmm_init); e08e934d6c289ed Jacopo Mondi 2019-10-17 171 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx
Attachment:
.config.gz
Description: application/gzip