CC: [email protected] TO: Frank Wunderlich <[email protected]>
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 :::::: branch date: 2 days ago :::::: commit date: 8 days ago 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 <[email protected]> Reported-by: Dan Carpenter <[email protected]> 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 281cc69c12f5b49 Benjamin Gaignard 2021-05-17 3889 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; 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; 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; 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; 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 } 2048e3286f347db Mark Yao 2014-08-22 4025 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/[email protected]
.config.gz
Description: application/gzip
_______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
