tree:
https://github.com/frank-w/BPI-R2-4.14 5.15-bpi-r2-pro
head: 88eea49adcf099eca9307fe394b40a0e2c8bde02
commit: 281cc69c12f5b49abc38fc6cd91964446b435691 [85/99] drm: forward port of VOP2 driver
config: x86_64-randconfig-m001-20211103 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
Reported-by: Dan Carpenter <dan.carpenter(a)oracle.com>
smatch warnings:
drivers/gpu/drm/rockchip/rockchip_drm_vop.c:3989 vop_create_crtc() warn: missing error
code 'ret'
vim +/ret +3989 drivers/gpu/drm/rockchip/rockchip_drm_vop.c
2048e3286f347db Mark Yao 2014-08-22 3890 static int vop_create_crtc(struct vop
*vop)
2048e3286f347db Mark Yao 2014-08-22 3891 {
2048e3286f347db Mark Yao 2014-08-22 3892 struct device *dev = vop->dev;
281cc69c12f5b49 Benjamin Gaignard 2021-05-17 3893 const struct vop_data *vop_data =
vop->data;
2048e3286f347db Mark Yao 2014-08-22 3894 struct drm_device *drm_dev =
vop->drm_dev;
281cc69c12f5b49 Benjamin Gaignard 2021-05-17 3895 struct rockchip_drm_private *private
= drm_dev->dev_private;
328b51c0f5a07f3 Douglas Anderson 2016-03-07 3896 struct drm_plane *primary = NULL,
*cursor = NULL, *plane, *tmp;
2048e3286f347db Mark Yao 2014-08-22 3897 struct drm_crtc *crtc =
&vop->crtc;
2048e3286f347db Mark Yao 2014-08-22 3898 struct device_node *port;
281cc69c12f5b49 Benjamin Gaignard 2021-05-17 3899 uint64_t feature = 0;
281cc69c12f5b49 Benjamin Gaignard 2021-05-17 3900 int ret = 0;
Better to not initialize "ret" to a throw away value. The compiler
wants to help find bugs.
2048e3286f347db Mark Yao 2014-08-22 3901 int i;
2048e3286f347db Mark Yao 2014-08-22 3902
2048e3286f347db Mark Yao 2014-08-22 3903 /*
2048e3286f347db Mark Yao 2014-08-22 3904 * Create drm_plane for primary and
cursor planes first, since we need
2048e3286f347db Mark Yao 2014-08-22 3905 * to pass them to
drm_crtc_init_with_planes, which sets the
2048e3286f347db Mark Yao 2014-08-22 3906 * "possible_crtcs" to the
newly initialized crtc.
2048e3286f347db Mark Yao 2014-08-22 3907 */
281cc69c12f5b49 Benjamin Gaignard 2021-05-17 3908 for (i = 0; i < vop->num_wins;
i++) {
281cc69c12f5b49 Benjamin Gaignard 2021-05-17 3909 struct vop_win *win =
&vop->win[i];
2048e3286f347db Mark Yao 2014-08-22 3910
281cc69c12f5b49 Benjamin Gaignard 2021-05-17 3911 if (win->type !=
DRM_PLANE_TYPE_PRIMARY &&
281cc69c12f5b49 Benjamin Gaignard 2021-05-17 3912 win->type !=
DRM_PLANE_TYPE_CURSOR)
2048e3286f347db Mark Yao 2014-08-22 3913 continue;
2048e3286f347db Mark Yao 2014-08-22 3914
281cc69c12f5b49 Benjamin Gaignard 2021-05-17 3915 if (vop_plane_init(vop, win, 0)) {
281cc69c12f5b49 Benjamin Gaignard 2021-05-17 3916 DRM_DEV_ERROR(vop->dev,
"failed to init plane\n");
2048e3286f347db Mark Yao 2014-08-22 3917 goto err_cleanup_planes;
Preserve the error code from ret = vop_plane_init(); This would have
been detected by the compiler.
2048e3286f347db Mark Yao 2014-08-22 3918 }
2048e3286f347db Mark Yao 2014-08-22 3919
281cc69c12f5b49 Benjamin Gaignard 2021-05-17 3920 plane = &win->base;
2048e3286f347db Mark Yao 2014-08-22 3921 if (plane->type ==
DRM_PLANE_TYPE_PRIMARY)
2048e3286f347db Mark Yao 2014-08-22 3922 primary = plane;
2048e3286f347db Mark Yao 2014-08-22 3923 else if (plane->type ==
DRM_PLANE_TYPE_CURSOR)
2048e3286f347db Mark Yao 2014-08-22 3924 cursor = plane;
2048e3286f347db Mark Yao 2014-08-22 3925 }
2048e3286f347db Mark Yao 2014-08-22 3926
2048e3286f347db Mark Yao 2014-08-22 3927 ret =
drm_crtc_init_with_planes(drm_dev, crtc, primary, cursor,
f98828769c8838f Ville Syrjälä 2015-12-09 3928 &vop_crtc_funcs, NULL);
2048e3286f347db Mark Yao 2014-08-22 3929 if (ret)
328b51c0f5a07f3 Douglas Anderson 2016-03-07 3930 goto err_cleanup_planes;
2048e3286f347db Mark Yao 2014-08-22 3931
2048e3286f347db Mark Yao 2014-08-22 3932 drm_crtc_helper_add(crtc,
&vop_crtc_helper_funcs);
2048e3286f347db Mark Yao 2014-08-22 3933
2048e3286f347db Mark Yao 2014-08-22 3934 /*
2048e3286f347db Mark Yao 2014-08-22 3935 * Create drm_planes for overlay
windows with possible_crtcs restricted
2048e3286f347db Mark Yao 2014-08-22 3936 * to the newly created crtc.
2048e3286f347db Mark Yao 2014-08-22 3937 */
281cc69c12f5b49 Benjamin Gaignard 2021-05-17 3938 for (i = 0; i < vop->num_wins;
i++) {
281cc69c12f5b49 Benjamin Gaignard 2021-05-17 3939 struct vop_win *win =
&vop->win[i];
a3e77e1655961f4 Ville Syrjälä 2018-06-26 3940 unsigned long possible_crtcs =
drm_crtc_mask(crtc);
2048e3286f347db Mark Yao 2014-08-22 3941
281cc69c12f5b49 Benjamin Gaignard 2021-05-17 3942 if (win->type !=
DRM_PLANE_TYPE_OVERLAY)
2048e3286f347db Mark Yao 2014-08-22 3943 continue;
2048e3286f347db Mark Yao 2014-08-22 3944
281cc69c12f5b49 Benjamin Gaignard 2021-05-17 3945 if (vop_plane_init(vop, win,
possible_crtcs)) {
281cc69c12f5b49 Benjamin Gaignard 2021-05-17 3946 DRM_DEV_ERROR(vop->dev,
"failed to init overlay\n");
2048e3286f347db Mark Yao 2014-08-22 3947 goto err_cleanup_crtc;
Preserve.
2048e3286f347db Mark Yao 2014-08-22 3948 }
281cc69c12f5b49 Benjamin Gaignard 2021-05-17 3949 vop_plane_add_properties(vop,
&win->base, win);
2048e3286f347db Mark Yao 2014-08-22 3950 }
2048e3286f347db Mark Yao 2014-08-22 3951
2048e3286f347db Mark Yao 2014-08-22 3952 port =
of_get_child_by_name(dev->of_node, "port");
2048e3286f347db Mark Yao 2014-08-22 3953 if (!port) {
4bf99144d2b407b Rob Herring 2017-07-18 3954 DRM_DEV_ERROR(vop->dev, "no
port node found in %pOF\n",
4bf99144d2b407b Rob Herring 2017-07-18 3955 dev->of_node);
328b51c0f5a07f3 Douglas Anderson 2016-03-07 3956 ret = -ENOENT;
2048e3286f347db Mark Yao 2014-08-22 3957 goto err_cleanup_crtc;
2048e3286f347db Mark Yao 2014-08-22 3958 }
2048e3286f347db Mark Yao 2014-08-22 3959
47a7eb4597775ec Tomasz Figa 2016-09-14 3960
drm_flip_work_init(&vop->fb_unref_work, "fb_unref",
47a7eb4597775ec Tomasz Figa 2016-09-14 3961 vop_fb_unref_worker);
47a7eb4597775ec Tomasz Figa 2016-09-14 3962
1067219b27e29e9 Mark Yao 2015-02-04 3963
init_completion(&vop->dsp_hold_completion);
69c34e41f5d4e8a Yakir Yang 2016-07-24 3964
init_completion(&vop->line_flag_completion);
2048e3286f347db Mark Yao 2014-08-22 3965 crtc->port = port;
281cc69c12f5b49 Benjamin Gaignard 2021-05-17 3966 rockchip_register_crtc_funcs(crtc,
&private_crtc_funcs);
281cc69c12f5b49 Benjamin Gaignard 2021-05-17 3967
281cc69c12f5b49 Benjamin Gaignard 2021-05-17 3968 #define
VOP_ATTACH_MODE_CONFIG_PROP(prop, v) \
281cc69c12f5b49 Benjamin Gaignard 2021-05-17 3969
drm_object_attach_property(&crtc->base, drm_dev->mode_config.prop, v)
281cc69c12f5b49 Benjamin Gaignard 2021-05-17 3970
281cc69c12f5b49 Benjamin Gaignard 2021-05-17 3971
VOP_ATTACH_MODE_CONFIG_PROP(tv_left_margin_property, 100);
281cc69c12f5b49 Benjamin Gaignard 2021-05-17 3972
VOP_ATTACH_MODE_CONFIG_PROP(tv_right_margin_property, 100);
281cc69c12f5b49 Benjamin Gaignard 2021-05-17 3973
VOP_ATTACH_MODE_CONFIG_PROP(tv_top_margin_property, 100);
281cc69c12f5b49 Benjamin Gaignard 2021-05-17 3974
VOP_ATTACH_MODE_CONFIG_PROP(tv_bottom_margin_property, 100);
281cc69c12f5b49 Benjamin Gaignard 2021-05-17 3975
281cc69c12f5b49 Benjamin Gaignard 2021-05-17 3976 #undef VOP_ATTACH_MODE_CONFIG_PROP
281cc69c12f5b49 Benjamin Gaignard 2021-05-17 3977
drm_object_attach_property(&crtc->base, private->alpha_scale_prop, 0);
281cc69c12f5b49 Benjamin Gaignard 2021-05-17 3978 if (vop_data->feature &
VOP_FEATURE_AFBDC)
281cc69c12f5b49 Benjamin Gaignard 2021-05-17 3979 feature |=
BIT(ROCKCHIP_DRM_CRTC_FEATURE_AFBDC);
281cc69c12f5b49 Benjamin Gaignard 2021-05-17 3980
drm_object_attach_property(&crtc->base, vop->feature_prop,
281cc69c12f5b49 Benjamin Gaignard 2021-05-17 3981 feature);
281cc69c12f5b49 Benjamin Gaignard 2021-05-17 3982 if (vop->lut_regs) {
281cc69c12f5b49 Benjamin Gaignard 2021-05-17 3983 u16 *r_base, *g_base, *b_base;
281cc69c12f5b49 Benjamin Gaignard 2021-05-17 3984 u32 lut_len = vop->lut_len;
2048e3286f347db Mark Yao 2014-08-22 3985
281cc69c12f5b49 Benjamin Gaignard 2021-05-17 3986 vop->lut =
devm_kmalloc_array(dev, lut_len, sizeof(*vop->lut),
281cc69c12f5b49 Benjamin Gaignard 2021-05-17 3987 GFP_KERNEL);
281cc69c12f5b49 Benjamin Gaignard 2021-05-17 3988 if (!vop->lut)
281cc69c12f5b49 Benjamin Gaignard 2021-05-17 @3989 goto err_unregister_crtc_funcs;
"ret = -ENOMEM;"
281cc69c12f5b49 Benjamin Gaignard 2021-05-17 3990
281cc69c12f5b49 Benjamin Gaignard 2021-05-17 3991 if (vop_of_init_display_lut(vop)) {
281cc69c12f5b49 Benjamin Gaignard 2021-05-17 3992 for (i = 0; i < lut_len; i++) {
281cc69c12f5b49 Benjamin Gaignard 2021-05-17 3993 u32 r = i * lut_len * lut_len;
281cc69c12f5b49 Benjamin Gaignard 2021-05-17 3994 u32 g = i * lut_len;
281cc69c12f5b49 Benjamin Gaignard 2021-05-17 3995 u32 b = i;
281cc69c12f5b49 Benjamin Gaignard 2021-05-17 3996
281cc69c12f5b49 Benjamin Gaignard 2021-05-17 3997 vop->lut[i] = r | g | b;
281cc69c12f5b49 Benjamin Gaignard 2021-05-17 3998 }
281cc69c12f5b49 Benjamin Gaignard 2021-05-17 3999 }
281cc69c12f5b49 Benjamin Gaignard 2021-05-17 4000
281cc69c12f5b49 Benjamin Gaignard 2021-05-17 4001 drm_mode_crtc_set_gamma_size(crtc,
lut_len);
281cc69c12f5b49 Benjamin Gaignard 2021-05-17 4002 drm_crtc_enable_color_mgmt(crtc, 0,
false, lut_len);
281cc69c12f5b49 Benjamin Gaignard 2021-05-17 4003 r_base = crtc->gamma_store;
281cc69c12f5b49 Benjamin Gaignard 2021-05-17 4004 g_base = r_base +
crtc->gamma_size;
281cc69c12f5b49 Benjamin Gaignard 2021-05-17 4005 b_base = g_base +
crtc->gamma_size;
6c836d965bad5e1 Sean Paul 2019-06-11 4006
281cc69c12f5b49 Benjamin Gaignard 2021-05-17 4007 for (i = 0; i < lut_len; i++) {
281cc69c12f5b49 Benjamin Gaignard 2021-05-17 4008
rockchip_vop_crtc_fb_gamma_get(crtc, &r_base[i],
281cc69c12f5b49 Benjamin Gaignard 2021-05-17 4009 &g_base[i],
&b_base[i],
281cc69c12f5b49 Benjamin Gaignard 2021-05-17 4010 i);
281cc69c12f5b49 Benjamin Gaignard 2021-05-17 4011 }
281cc69c12f5b49 Benjamin Gaignard 2021-05-17 4012 }
2048e3286f347db Mark Yao 2014-08-22 4013 return 0;
2048e3286f347db Mark Yao 2014-08-22 4014
281cc69c12f5b49 Benjamin Gaignard 2021-05-17 4015 err_unregister_crtc_funcs:
281cc69c12f5b49 Benjamin Gaignard 2021-05-17 4016
rockchip_unregister_crtc_funcs(crtc);
2048e3286f347db Mark Yao 2014-08-22 4017 err_cleanup_crtc:
2048e3286f347db Mark Yao 2014-08-22 4018 drm_crtc_cleanup(crtc);
2048e3286f347db Mark Yao 2014-08-22 4019 err_cleanup_planes:
328b51c0f5a07f3 Douglas Anderson 2016-03-07 4020 list_for_each_entry_safe(plane, tmp,
&drm_dev->mode_config.plane_list,
328b51c0f5a07f3 Douglas Anderson 2016-03-07 4021 head)
2048e3286f347db Mark Yao 2014-08-22 4022 drm_plane_cleanup(plane);
2048e3286f347db Mark Yao 2014-08-22 4023 return ret;
2048e3286f347db Mark Yao 2014-08-22 4024 }
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
_______________________________________________
kbuild mailing list -- kbuild(a)lists.01.org
To unsubscribe send an email to kbuild-leave(a)lists.01.org