Re: [PATCH v2 2/3] drm/tiny: Add driver for ili9341 with parallel bus

From: kernel test robot
Date: Wed Dec 02 2020 - 11:16:10 EST


Hi,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on linux/master]
[also build test ERROR on drm-intel/for-linux-next drm-exynos/exynos-drm-next tegra-drm/drm/tegra/for-next drm-tip/drm-tip linus/master v5.10-rc6 next-20201201]
[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/mdurnev-gmail-com/drm-mipi-dbi-Type-B-bus-support-drm-tiny-MRB2801/20201201-071109
base: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 09162bc32c880a791c6c0668ce0745cf7958f576
config: riscv-randconfig-r024-20201202 (attached as .config)
compiler: clang version 12.0.0 (https://github.com/llvm/llvm-project 2671fccf0381769276ca8246ec0499adcb9b0355)
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 riscv cross compiling tool for clang build
# apt-get install binutils-riscv64-linux-gnu
# https://github.com/0day-ci/linux/commit/6d76a991fa9d2c883126667b704c729eaa22df0e
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review mdurnev-gmail-com/drm-mipi-dbi-Type-B-bus-support-drm-tiny-MRB2801/20201201-071109
git checkout 6d76a991fa9d2c883126667b704c729eaa22df0e
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=riscv

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/tiny/ili9341_gpio.c:157:14: error: use of undeclared identifier 'mipi_dbi_release'; did you mean 'mipi_dbi_hw_reset'?
.release = mipi_dbi_release,
^~~~~~~~~~~~~~~~
mipi_dbi_hw_reset
include/drm/drm_mipi_dbi.h:184:6: note: 'mipi_dbi_hw_reset' declared here
void mipi_dbi_hw_reset(struct mipi_dbi *dbi);
^
>> drivers/gpu/drm/tiny/ili9341_gpio.c:158:2: error: use of undeclared identifier 'DRM_GEM_CMA_VMAP_DRIVER_OPS'
DRM_GEM_CMA_VMAP_DRIVER_OPS,
^
>> drivers/gpu/drm/tiny/ili9341_gpio.c:192:8: error: implicit declaration of function 'devm_drm_dev_init' [-Werror,-Wimplicit-function-declaration]
ret = devm_drm_dev_init(dev, drm, &ili9341gpio_driver);
^
3 errors generated.

vim +157 drivers/gpu/drm/tiny/ili9341_gpio.c

153
154 static struct drm_driver ili9341gpio_driver = {
155 .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
156 .fops = &ili9341gpio_fops,
> 157 .release = mipi_dbi_release,
> 158 DRM_GEM_CMA_VMAP_DRIVER_OPS,
159 .debugfs_init = mipi_dbi_debugfs_init,
160 .name = "ili9341gpio",
161 .desc = "Ilitek ILI9341",
162 .date = "20201114",
163 .major = 1,
164 .minor = 0,
165 };
166
167 static const struct of_device_id ili9341gpio_of_match[] = {
168 { .compatible = "ronbo,mrb2801" },
169 { }
170 };
171 MODULE_DEVICE_TABLE(of, ili9341gpio_of_match);
172
173 static int ili9341gpio_probe(struct platform_device *pdev)
174 {
175 struct device *dev = &pdev->dev;
176 struct mipi_dbi_dev *dbidev;
177 struct drm_device *drm;
178 struct mipi_dbi *dbi;
179 struct gpio_desc *dc;
180 struct gpio_desc *wr;
181 struct gpio_descs *db;
182 u32 rotation = 0;
183 u32 wr_delays[2] = {15, 60};
184 int ret;
185
186 dbidev = kzalloc(sizeof(*dbidev), GFP_KERNEL);
187 if (!dbidev)
188 return -ENOMEM;
189
190 dbi = &dbidev->dbi;
191 drm = &dbidev->drm;
> 192 ret = devm_drm_dev_init(dev, drm, &ili9341gpio_driver);
193 if (ret) {
194 kfree(dbidev);
195 return ret;
196 }
197
198 drm_mode_config_init(drm);
199
200 dbi->reset = devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_HIGH);
201 if (IS_ERR(dbi->reset)) {
202 DRM_DEV_ERROR(dev, "Failed to get gpio 'reset'\n");
203 return PTR_ERR(dbi->reset);
204 }
205
206 dc = devm_gpiod_get(dev, "dc", GPIOD_OUT_HIGH);
207 if (IS_ERR(dc)) {
208 DRM_DEV_ERROR(dev, "Failed to get gpio 'dc'\n");
209 return PTR_ERR(dc);
210 }
211
212 wr = devm_gpiod_get(dev, "wr", GPIOD_OUT_HIGH);
213 if (IS_ERR(wr)) {
214 DRM_DEV_ERROR(dev, "Failed to get gpio 'wr'\n");
215 return PTR_ERR(wr);
216 }
217
218 db = devm_gpiod_get_array(dev, "db", GPIOD_OUT_LOW);
219 if (IS_ERR(db)) {
220 DRM_DEV_ERROR(dev, "Failed to get gpio 'db'\n");
221 return PTR_ERR(db);
222 }
223 if (db->ndescs != 16 && db->ndescs != 8) {
224 /*
225 * The data bus can be either 8 or 16 bits wide.
226 * ILI9341 can work with 6, 8, 9, 16, and 18-bit parallel interfaces,
227 * but the MRB2801 board supports only 8 or 16-bit interfaces.
228 */
229 DRM_DEV_ERROR(dev, "Wrong number of bits in gpio 'db': %u\n", db->ndescs);
230 return PTR_ERR(db);
231 }
232
233 dbidev->backlight = devm_of_find_backlight(dev);
234 if (IS_ERR(dbidev->backlight))
235 return PTR_ERR(dbidev->backlight);
236
237 device_property_read_u32(dev, "rotation", &rotation);
238
239 device_property_read_u32_array(dev, "wr-up-down-delays", wr_delays, 2);
240
241 ret = mipi_dbi_gpio_init(dbi, dc, wr, db, wr_delays[0], wr_delays[1]);
242 if (ret)
243 return ret;
244
245 ret = mipi_dbi_dev_init(dbidev, &ili9341gpio_pipe_funcs, &yx240qv29_mode, rotation);
246 if (ret)
247 return ret;
248
249 drm_mode_config_reset(drm);
250
251 ret = drm_dev_register(drm, 0);
252 if (ret)
253 return ret;
254
255 platform_set_drvdata(pdev, drm);
256
257 drm_fbdev_generic_setup(drm, 0);
258
259 return 0;
260 }
261

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

Attachment: .config.gz
Description: application/gzip