Re: [PATCH v7 1/4] drm/loongson: Add DRM Driver for Loongson 7A1000 bridge chip

From: kernel test robot
Date: Sat Jun 25 2022 - 07:28:23 EST


Hi Chenyang,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on drm-misc/drm-misc-next]
[also build test ERROR on linus/master v5.19-rc3 next-20220624]
[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/intel-lab-lkp/linux/commits/Chenyang-Li/drm-loongson-Add-DRM-Driver-for-Loongson-7A1000-bridge-chip/20220625-171037
base: git://anongit.freedesktop.org/drm/drm-misc drm-misc-next
config: powerpc-allmodconfig
compiler: powerpc-linux-gcc (GCC) 11.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/intel-lab-lkp/linux/commit/438d0791edb6352903bf09dfe214453526081075
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Chenyang-Li/drm-loongson-Add-DRM-Driver-for-Loongson-7A1000-bridge-chip/20220625-171037
git checkout 438d0791edb6352903bf09dfe214453526081075
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.3.0 make.cross W=1 O=build_dir ARCH=powerpc SHELL=/bin/bash drivers/gpu/drm/loongson/

If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <lkp@xxxxxxxxx>

All error/warnings (new ones prefixed by >>):

drivers/gpu/drm/loongson/loongson_crtc.c: In function 'loongson_crtc_mode_set_nofb':
>> drivers/gpu/drm/loongson/loongson_crtc.c:128:42: error: invalid use of undefined type 'struct drm_framebuffer'
128 | format = crtc->primary->state->fb->format;
| ^~
--
drivers/gpu/drm/loongson/loongson_device.c: In function 'loongson_gpu_offset':
>> drivers/gpu/drm/loongson/loongson_device.c:14:44: error: invalid use of undefined type 'struct drm_framebuffer'
14 | gbo = drm_gem_vram_of_gem(state->fb->obj[0]);
| ^~
--
In file included from include/linux/device.h:15,
from include/linux/pci.h:37,
from drivers/gpu/drm/loongson/loongson_drv.c:14:
drivers/gpu/drm/loongson/loongson_drv.c: In function 'loongson_device_init':
>> include/drm/drm_print.h:425:39: warning: format '%llx' expects argument of type 'long long unsigned int', but argument 3 has type 'resource_size_t' {aka 'unsigned int'} [-Wformat=]
425 | dev_##level##type((drm)->dev, "[drm] " fmt, ##__VA_ARGS__)
| ^~~~~~~~
include/linux/dev_printk.h:110:30: note: in definition of macro 'dev_printk_index_wrap'
110 | _p_func(dev, fmt, ##__VA_ARGS__); \
| ^~~
include/linux/dev_printk.h:150:58: note: in expansion of macro 'dev_fmt'
150 | dev_printk_index_wrap(_dev_info, KERN_INFO, dev, dev_fmt(fmt), ##__VA_ARGS__)
| ^~~~~~~
include/drm/drm_print.h:425:9: note: in expansion of macro 'dev_info'
425 | dev_##level##type((drm)->dev, "[drm] " fmt, ##__VA_ARGS__)
| ^~~~
include/drm/drm_print.h:429:9: note: in expansion of macro '__drm_printk'
429 | __drm_printk((drm), info,, fmt, ##__VA_ARGS__)
| ^~~~~~~~~~~~
drivers/gpu/drm/loongson/loongson_drv.c:91:9: note: in expansion of macro 'drm_info'
91 | drm_info(dev, "DC mmio base 0x%llx size 0x%llx io 0x%llx\n",
| ^~~~~~~~
include/drm/drm_print.h:425:39: warning: format '%llx' expects argument of type 'long long unsigned int', but argument 4 has type 'resource_size_t' {aka 'unsigned int'} [-Wformat=]
425 | dev_##level##type((drm)->dev, "[drm] " fmt, ##__VA_ARGS__)
| ^~~~~~~~
include/linux/dev_printk.h:110:30: note: in definition of macro 'dev_printk_index_wrap'
110 | _p_func(dev, fmt, ##__VA_ARGS__); \
| ^~~
include/linux/dev_printk.h:150:58: note: in expansion of macro 'dev_fmt'
150 | dev_printk_index_wrap(_dev_info, KERN_INFO, dev, dev_fmt(fmt), ##__VA_ARGS__)
| ^~~~~~~
include/drm/drm_print.h:425:9: note: in expansion of macro 'dev_info'
425 | dev_##level##type((drm)->dev, "[drm] " fmt, ##__VA_ARGS__)
| ^~~~
include/drm/drm_print.h:429:9: note: in expansion of macro '__drm_printk'
429 | __drm_printk((drm), info,, fmt, ##__VA_ARGS__)
| ^~~~~~~~~~~~
drivers/gpu/drm/loongson/loongson_drv.c:91:9: note: in expansion of macro 'drm_info'
91 | drm_info(dev, "DC mmio base 0x%llx size 0x%llx io 0x%llx\n",
| ^~~~~~~~
drivers/gpu/drm/loongson/loongson_drv.c: At top level:
drivers/gpu/drm/loongson/loongson_drv.c:99:5: warning: no previous prototype for 'loongson_modeset_init' [-Wmissing-prototypes]
99 | int loongson_modeset_init(struct loongson_device *ldev)
| ^~~~~~~~~~~~~~~~~~~~~
--
drivers/gpu/drm/loongson/loongson_plane.c: In function 'loongson_plane_atomic_update':
>> drivers/gpu/drm/loongson/loongson_plane.c:27:27: error: invalid use of undefined type 'struct drm_framebuffer'
27 | pitch = lstate->fb->pitches[0];
| ^~
drivers/gpu/drm/loongson/loongson_plane.c:33:27: error: invalid use of undefined type 'struct drm_framebuffer'
33 | depth = lstate->fb->format->cpp[0] << 3;
| ^~


vim +128 drivers/gpu/drm/loongson/loongson_crtc.c

102
103 static void loongson_crtc_mode_set_nofb(struct drm_crtc *crtc)
104 {
105 struct drm_device *dev = crtc->dev;
106 struct loongson_device *ldev = to_loongson_device(dev);
107 struct loongson_crtc *lcrtc = to_loongson_crtc(crtc);
108 struct drm_display_mode *mode = &crtc->state->adjusted_mode;
109 const struct drm_format_info *format;
110 struct pix_pll pll_cfg;
111 u32 hr, hss, hse, hfl;
112 u32 vr, vss, vse, vfl;
113 u32 pix_freq;
114 u32 reg_offset;
115
116 hr = mode->hdisplay;
117 hss = mode->hsync_start;
118 hse = mode->hsync_end;
119 hfl = mode->htotal;
120
121 vr = mode->vdisplay;
122 vss = mode->vsync_start;
123 vse = mode->vsync_end;
124 vfl = mode->vtotal;
125
126 pix_freq = mode->clock;
127 reg_offset = lcrtc->reg_offset;
> 128 format = crtc->primary->state->fb->format;
129
130 ls7a_mm_wreg(ldev, FB_DITCFG_REG + reg_offset, 0);
131 ls7a_mm_wreg(ldev, FB_DITTAB_LO_REG + reg_offset, 0);
132 ls7a_mm_wreg(ldev, FB_DITTAB_HI_REG + reg_offset, 0);
133 ls7a_mm_wreg(ldev, FB_PANCFG_REG + reg_offset, FB_PANCFG_DEF);
134 ls7a_mm_wreg(ldev, FB_PANTIM_REG + reg_offset, 0);
135
136 ls7a_mm_wreg(ldev, FB_HDISPLAY_REG + reg_offset, (hfl << 16) | hr);
137 ls7a_mm_wreg(ldev, FB_HSYNC_REG + reg_offset,
138 FB_HSYNC_PULSE | (hse << 16) | hss);
139
140 ls7a_mm_wreg(ldev, FB_VDISPLAY_REG + reg_offset, (vfl << 16) | vr);
141 ls7a_mm_wreg(ldev, FB_VSYNC_REG + reg_offset,
142 FB_VSYNC_PULSE | (vse << 16) | vss);
143
144 switch (format->format) {
145 case DRM_FORMAT_RGB565:
146 lcrtc->cfg_reg |= 0x3;
147 break;
148 case DRM_FORMAT_RGB888:
149 case DRM_FORMAT_XRGB8888:
150 case DRM_FORMAT_ARGB8888:
151 default:
152 lcrtc->cfg_reg |= 0x4;
153 break;
154 }
155
156 ls7a_mm_wreg(ldev, FB_CFG_REG + reg_offset, lcrtc->cfg_reg);
157
158 cal_freq(pix_freq, &pll_cfg);
159 config_pll(ldev, LS7A_PIX_PLL + reg_offset, &pll_cfg);
160 }
161

--
0-DAY CI Kernel Test Service
https://01.org/lkp