[PATCH 1/4] drm: Plumb modifiers through plane init
kbuild test robot
lkp at intel.com
Tue Jul 25 05:40:08 UTC 2017
Hi Ben,
[auto build test ERROR on drm/drm-next]
[also build test ERROR on v4.13-rc2 next-20170724]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
url: https://github.com/0day-ci/linux/commits/Ben-Widawsky/drm-Plumb-modifiers-through-plane-init/20170725-062539
base: git://people.freedesktop.org/~airlied/linux.git drm-next
config: arm-sunxi_defconfig (attached as .config)
compiler: arm-linux-gnueabi-gcc (Debian 6.1.1-9) 6.1.1 20160705
reproduce:
wget https://raw.githubusercontent.com/01org/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
make.cross ARCH=arm
All error/warnings (new ones prefixed by >>):
drivers/gpu/drm/sun4i/sun8i_layer.c: In function 'sun8i_layer_init_one':
>> drivers/gpu/drm/sun4i/sun8i_layer.c:93:12: error: incompatible type for argument 7 of 'drm_universal_plane_init'
plane->type, NULL);
^~~~~
In file included from include/drm/drm_crtc.h:45:0,
from include/drm/drm_atomic_helper.h:31,
from drivers/gpu/drm/sun4i/sun8i_layer.c:16:
include/drm/drm_plane.h:550:5: note: expected 'const uint64_t * {aka const long long unsigned int *}' but argument is of type 'const enum drm_plane_type'
int drm_universal_plane_init(struct drm_device *dev,
^~~~~~~~~~~~~~~~~~~~~~~~
In file included from include/uapi/linux/posix_types.h:4:0,
from include/uapi/linux/types.h:13,
from include/linux/types.h:5,
from include/linux/mod_devicetable.h:11,
from include/linux/i2c.h:29,
from include/drm/drm_crtc.h:28,
from include/drm/drm_atomic_helper.h:31,
from drivers/gpu/drm/sun4i/sun8i_layer.c:16:
>> include/linux/stddef.h:7:14: error: incompatible type for argument 8 of 'drm_universal_plane_init'
#define NULL ((void *)0)
^
>> drivers/gpu/drm/sun4i/sun8i_layer.c:93:25: note: in expansion of macro 'NULL'
plane->type, NULL);
^~~~
In file included from include/drm/drm_crtc.h:45:0,
from include/drm/drm_atomic_helper.h:31,
from drivers/gpu/drm/sun4i/sun8i_layer.c:16:
include/drm/drm_plane.h:550:5: note: expected 'enum drm_plane_type' but argument is of type 'void *'
int drm_universal_plane_init(struct drm_device *dev,
^~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/gpu/drm/sun4i/sun8i_layer.c:90:8: error: too few arguments to function 'drm_universal_plane_init'
ret = drm_universal_plane_init(drm, &layer->plane, 0,
^~~~~~~~~~~~~~~~~~~~~~~~
In file included from include/drm/drm_crtc.h:45:0,
from include/drm/drm_atomic_helper.h:31,
from drivers/gpu/drm/sun4i/sun8i_layer.c:16:
include/drm/drm_plane.h:550:5: note: declared here
int drm_universal_plane_init(struct drm_device *dev,
^~~~~~~~~~~~~~~~~~~~~~~~
--
drivers/gpu//drm/sun4i/sun8i_layer.c: In function 'sun8i_layer_init_one':
drivers/gpu//drm/sun4i/sun8i_layer.c:93:12: error: incompatible type for argument 7 of 'drm_universal_plane_init'
plane->type, NULL);
^~~~~
In file included from include/drm/drm_crtc.h:45:0,
from include/drm/drm_atomic_helper.h:31,
from drivers/gpu//drm/sun4i/sun8i_layer.c:16:
include/drm/drm_plane.h:550:5: note: expected 'const uint64_t * {aka const long long unsigned int *}' but argument is of type 'const enum drm_plane_type'
int drm_universal_plane_init(struct drm_device *dev,
^~~~~~~~~~~~~~~~~~~~~~~~
In file included from include/uapi/linux/posix_types.h:4:0,
from include/uapi/linux/types.h:13,
from include/linux/types.h:5,
from include/linux/mod_devicetable.h:11,
from include/linux/i2c.h:29,
from include/drm/drm_crtc.h:28,
from include/drm/drm_atomic_helper.h:31,
from drivers/gpu//drm/sun4i/sun8i_layer.c:16:
>> include/linux/stddef.h:7:14: error: incompatible type for argument 8 of 'drm_universal_plane_init'
#define NULL ((void *)0)
^
drivers/gpu//drm/sun4i/sun8i_layer.c:93:25: note: in expansion of macro 'NULL'
plane->type, NULL);
^~~~
In file included from include/drm/drm_crtc.h:45:0,
from include/drm/drm_atomic_helper.h:31,
from drivers/gpu//drm/sun4i/sun8i_layer.c:16:
include/drm/drm_plane.h:550:5: note: expected 'enum drm_plane_type' but argument is of type 'void *'
int drm_universal_plane_init(struct drm_device *dev,
^~~~~~~~~~~~~~~~~~~~~~~~
drivers/gpu//drm/sun4i/sun8i_layer.c:90:8: error: too few arguments to function 'drm_universal_plane_init'
ret = drm_universal_plane_init(drm, &layer->plane, 0,
^~~~~~~~~~~~~~~~~~~~~~~~
In file included from include/drm/drm_crtc.h:45:0,
from include/drm/drm_atomic_helper.h:31,
from drivers/gpu//drm/sun4i/sun8i_layer.c:16:
include/drm/drm_plane.h:550:5: note: declared here
int drm_universal_plane_init(struct drm_device *dev,
^~~~~~~~~~~~~~~~~~~~~~~~
vim +/drm_universal_plane_init +93 drivers/gpu/drm/sun4i/sun8i_layer.c
9d75b8c0 Icenowy Zheng 2017-05-17 @16 #include <drm/drm_atomic_helper.h>
9d75b8c0 Icenowy Zheng 2017-05-17 17 #include <drm/drm_plane_helper.h>
9d75b8c0 Icenowy Zheng 2017-05-17 18 #include <drm/drmP.h>
9d75b8c0 Icenowy Zheng 2017-05-17 19
9d75b8c0 Icenowy Zheng 2017-05-17 20 #include "sun8i_layer.h"
9d75b8c0 Icenowy Zheng 2017-05-17 21 #include "sun8i_mixer.h"
9d75b8c0 Icenowy Zheng 2017-05-17 22
9d75b8c0 Icenowy Zheng 2017-05-17 23 struct sun8i_plane_desc {
9d75b8c0 Icenowy Zheng 2017-05-17 24 enum drm_plane_type type;
9d75b8c0 Icenowy Zheng 2017-05-17 25 const uint32_t *formats;
9d75b8c0 Icenowy Zheng 2017-05-17 26 uint32_t nformats;
9d75b8c0 Icenowy Zheng 2017-05-17 27 };
9d75b8c0 Icenowy Zheng 2017-05-17 28
9d75b8c0 Icenowy Zheng 2017-05-17 29 static void sun8i_mixer_layer_atomic_disable(struct drm_plane *plane,
9d75b8c0 Icenowy Zheng 2017-05-17 30 struct drm_plane_state *old_state)
9d75b8c0 Icenowy Zheng 2017-05-17 31 {
9d75b8c0 Icenowy Zheng 2017-05-17 32 struct sun8i_layer *layer = plane_to_sun8i_layer(plane);
9d75b8c0 Icenowy Zheng 2017-05-17 33 struct sun8i_mixer *mixer = layer->mixer;
9d75b8c0 Icenowy Zheng 2017-05-17 34
9d75b8c0 Icenowy Zheng 2017-05-17 35 sun8i_mixer_layer_enable(mixer, layer->id, false);
9d75b8c0 Icenowy Zheng 2017-05-17 36 }
9d75b8c0 Icenowy Zheng 2017-05-17 37
9d75b8c0 Icenowy Zheng 2017-05-17 38 static void sun8i_mixer_layer_atomic_update(struct drm_plane *plane,
9d75b8c0 Icenowy Zheng 2017-05-17 39 struct drm_plane_state *old_state)
9d75b8c0 Icenowy Zheng 2017-05-17 40 {
9d75b8c0 Icenowy Zheng 2017-05-17 41 struct sun8i_layer *layer = plane_to_sun8i_layer(plane);
9d75b8c0 Icenowy Zheng 2017-05-17 42 struct sun8i_mixer *mixer = layer->mixer;
9d75b8c0 Icenowy Zheng 2017-05-17 43
9d75b8c0 Icenowy Zheng 2017-05-17 44 sun8i_mixer_update_layer_coord(mixer, layer->id, plane);
9d75b8c0 Icenowy Zheng 2017-05-17 45 sun8i_mixer_update_layer_formats(mixer, layer->id, plane);
9d75b8c0 Icenowy Zheng 2017-05-17 46 sun8i_mixer_update_layer_buffer(mixer, layer->id, plane);
9d75b8c0 Icenowy Zheng 2017-05-17 47 sun8i_mixer_layer_enable(mixer, layer->id, true);
9d75b8c0 Icenowy Zheng 2017-05-17 48 }
9d75b8c0 Icenowy Zheng 2017-05-17 49
9d75b8c0 Icenowy Zheng 2017-05-17 50 static struct drm_plane_helper_funcs sun8i_mixer_layer_helper_funcs = {
9d75b8c0 Icenowy Zheng 2017-05-17 51 .atomic_disable = sun8i_mixer_layer_atomic_disable,
9d75b8c0 Icenowy Zheng 2017-05-17 52 .atomic_update = sun8i_mixer_layer_atomic_update,
9d75b8c0 Icenowy Zheng 2017-05-17 53 };
9d75b8c0 Icenowy Zheng 2017-05-17 54
9d75b8c0 Icenowy Zheng 2017-05-17 55 static const struct drm_plane_funcs sun8i_mixer_layer_funcs = {
9d75b8c0 Icenowy Zheng 2017-05-17 56 .atomic_destroy_state = drm_atomic_helper_plane_destroy_state,
9d75b8c0 Icenowy Zheng 2017-05-17 57 .atomic_duplicate_state = drm_atomic_helper_plane_duplicate_state,
9d75b8c0 Icenowy Zheng 2017-05-17 58 .destroy = drm_plane_cleanup,
9d75b8c0 Icenowy Zheng 2017-05-17 59 .disable_plane = drm_atomic_helper_disable_plane,
9d75b8c0 Icenowy Zheng 2017-05-17 60 .reset = drm_atomic_helper_plane_reset,
9d75b8c0 Icenowy Zheng 2017-05-17 61 .update_plane = drm_atomic_helper_update_plane,
9d75b8c0 Icenowy Zheng 2017-05-17 62 };
9d75b8c0 Icenowy Zheng 2017-05-17 63
9d75b8c0 Icenowy Zheng 2017-05-17 64 static const uint32_t sun8i_mixer_layer_formats[] = {
9d75b8c0 Icenowy Zheng 2017-05-17 65 DRM_FORMAT_RGB888,
9d75b8c0 Icenowy Zheng 2017-05-17 66 DRM_FORMAT_ARGB8888,
9d75b8c0 Icenowy Zheng 2017-05-17 67 DRM_FORMAT_XRGB8888,
9d75b8c0 Icenowy Zheng 2017-05-17 68 };
9d75b8c0 Icenowy Zheng 2017-05-17 69
9d75b8c0 Icenowy Zheng 2017-05-17 70 static const struct sun8i_plane_desc sun8i_mixer_planes[] = {
9d75b8c0 Icenowy Zheng 2017-05-17 71 {
9d75b8c0 Icenowy Zheng 2017-05-17 72 .type = DRM_PLANE_TYPE_PRIMARY,
9d75b8c0 Icenowy Zheng 2017-05-17 73 .formats = sun8i_mixer_layer_formats,
9d75b8c0 Icenowy Zheng 2017-05-17 74 .nformats = ARRAY_SIZE(sun8i_mixer_layer_formats),
9d75b8c0 Icenowy Zheng 2017-05-17 75 },
9d75b8c0 Icenowy Zheng 2017-05-17 76 };
9d75b8c0 Icenowy Zheng 2017-05-17 77
9d75b8c0 Icenowy Zheng 2017-05-17 78 static struct sun8i_layer *sun8i_layer_init_one(struct drm_device *drm,
9d75b8c0 Icenowy Zheng 2017-05-17 79 struct sun8i_mixer *mixer,
9d75b8c0 Icenowy Zheng 2017-05-17 80 const struct sun8i_plane_desc *plane)
9d75b8c0 Icenowy Zheng 2017-05-17 81 {
9d75b8c0 Icenowy Zheng 2017-05-17 82 struct sun8i_layer *layer;
9d75b8c0 Icenowy Zheng 2017-05-17 83 int ret;
9d75b8c0 Icenowy Zheng 2017-05-17 84
9d75b8c0 Icenowy Zheng 2017-05-17 85 layer = devm_kzalloc(drm->dev, sizeof(*layer), GFP_KERNEL);
9d75b8c0 Icenowy Zheng 2017-05-17 86 if (!layer)
9d75b8c0 Icenowy Zheng 2017-05-17 87 return ERR_PTR(-ENOMEM);
9d75b8c0 Icenowy Zheng 2017-05-17 88
9d75b8c0 Icenowy Zheng 2017-05-17 89 /* possible crtcs are set later */
9d75b8c0 Icenowy Zheng 2017-05-17 @90 ret = drm_universal_plane_init(drm, &layer->plane, 0,
9d75b8c0 Icenowy Zheng 2017-05-17 91 &sun8i_mixer_layer_funcs,
9d75b8c0 Icenowy Zheng 2017-05-17 92 plane->formats, plane->nformats,
9d75b8c0 Icenowy Zheng 2017-05-17 @93 plane->type, NULL);
9d75b8c0 Icenowy Zheng 2017-05-17 94 if (ret) {
9d75b8c0 Icenowy Zheng 2017-05-17 95 dev_err(drm->dev, "Couldn't initialize layer\n");
9d75b8c0 Icenowy Zheng 2017-05-17 96 return ERR_PTR(ret);
9d75b8c0 Icenowy Zheng 2017-05-17 97 }
9d75b8c0 Icenowy Zheng 2017-05-17 98
9d75b8c0 Icenowy Zheng 2017-05-17 99 drm_plane_helper_add(&layer->plane,
9d75b8c0 Icenowy Zheng 2017-05-17 100 &sun8i_mixer_layer_helper_funcs);
9d75b8c0 Icenowy Zheng 2017-05-17 101 layer->mixer = mixer;
9d75b8c0 Icenowy Zheng 2017-05-17 102
9d75b8c0 Icenowy Zheng 2017-05-17 103 return layer;
9d75b8c0 Icenowy Zheng 2017-05-17 104 }
9d75b8c0 Icenowy Zheng 2017-05-17 105
:::::: The code at line 93 was first introduced by commit
:::::: 9d75b8c0b999663d85cddda2791bb15b5f4a8f4a drm/sun4i: add support for Allwinner DE2 mixers
:::::: TO: Icenowy Zheng <icenowy at aosc.io>
:::::: CC: Maxime Ripard <maxime.ripard at free-electrons.com>
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
-------------- next part --------------
A non-text attachment was scrubbed...
Name: .config.gz
Type: application/gzip
Size: 21066 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/dri-devel/attachments/20170725/3caf2607/attachment-0001.gz>
More information about the dri-devel
mailing list