Re: [PATCH 5/5] drm/rockchip: Add dmc notifier in vop driver

From: kbuild test robot
Date: Thu Sep 01 2016 - 20:35:51 EST


Hi Lin,

[auto build test ERROR on next-20160825]
[cannot apply to rockchip/for-next devfreq/for-rafael linus/master v4.8-rc4 v4.8-rc3 v4.8-rc2 v4.8-rc4]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
[Suggest to use git(>=2.9.0) format-patch --base=<commit> (or --base=auto for convenience) to record what (public, well-known) commit your patch series was built on]
[Check https://git-scm.com/docs/git-format-patch for more information]

url: https://github.com/0day-ci/linux/commits/Lin-Huang/rk3399-support-ddr-frequency-scaling/20160902-063701
config: arm-multi_v7_defconfig (attached as .config)
compiler: arm-linux-gnueabi-gcc (Debian 5.4.0-6) 5.4.0 20160609
reproduce:
wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/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 >>):

In file included from drivers/gpu/drm/rockchip/rockchip_drm_vop.c:23:0:
include/linux/devfreq-event.h:190:21: error: redefinition of 'devfreq_event_get_drvdata'
static inline void *devfreq_event_get_drvdata(struct devfreq_event_dev *edev)
^
include/linux/devfreq-event.h:151:21: note: previous definition of 'devfreq_event_get_drvdata' was here
static inline void *devfreq_event_get_drvdata(struct devfreq_event_dev *edev)
^
drivers/gpu/drm/rockchip/rockchip_drm_vop.c: In function 'vop_crtc_disable':
>> drivers/gpu/drm/rockchip/rockchip_drm_vop.c:653:13: error: invalid storage class for function 'vop_plane_destroy'
static void vop_plane_destroy(struct drm_plane *plane)
^
>> drivers/gpu/drm/rockchip/rockchip_drm_vop.c:653:1: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
static void vop_plane_destroy(struct drm_plane *plane)
^
>> drivers/gpu/drm/rockchip/rockchip_drm_vop.c:658:12: error: invalid storage class for function 'vop_plane_prepare_fb'
static int vop_plane_prepare_fb(struct drm_plane *plane,
^
>> drivers/gpu/drm/rockchip/rockchip_drm_vop.c:667:13: error: invalid storage class for function 'vop_plane_cleanup_fb'
static void vop_plane_cleanup_fb(struct drm_plane *plane,
^
>> drivers/gpu/drm/rockchip/rockchip_drm_vop.c:674:12: error: invalid storage class for function 'vop_plane_atomic_check'
static int vop_plane_atomic_check(struct drm_plane *plane,
^
>> drivers/gpu/drm/rockchip/rockchip_drm_vop.c:731:13: error: invalid storage class for function 'vop_plane_atomic_disable'
static void vop_plane_atomic_disable(struct drm_plane *plane,
^
>> drivers/gpu/drm/rockchip/rockchip_drm_vop.c:756:13: error: invalid storage class for function 'vop_plane_atomic_update'
static void vop_plane_atomic_update(struct drm_plane *plane,
^
>> drivers/gpu/drm/rockchip/rockchip_drm_vop.c:866:16: error: initializer element is not constant
.prepare_fb = vop_plane_prepare_fb,
^
drivers/gpu/drm/rockchip/rockchip_drm_vop.c:866:16: note: (near initialization for 'plane_helper_funcs.prepare_fb')
drivers/gpu/drm/rockchip/rockchip_drm_vop.c:867:16: error: initializer element is not constant
.cleanup_fb = vop_plane_cleanup_fb,
^
drivers/gpu/drm/rockchip/rockchip_drm_vop.c:867:16: note: (near initialization for 'plane_helper_funcs.cleanup_fb')
drivers/gpu/drm/rockchip/rockchip_drm_vop.c:868:18: error: initializer element is not constant
.atomic_check = vop_plane_atomic_check,
^
drivers/gpu/drm/rockchip/rockchip_drm_vop.c:868:18: note: (near initialization for 'plane_helper_funcs.atomic_check')
drivers/gpu/drm/rockchip/rockchip_drm_vop.c:869:19: error: initializer element is not constant
.atomic_update = vop_plane_atomic_update,
^
drivers/gpu/drm/rockchip/rockchip_drm_vop.c:869:19: note: (near initialization for 'plane_helper_funcs.atomic_update')
drivers/gpu/drm/rockchip/rockchip_drm_vop.c:870:20: error: initializer element is not constant
.atomic_disable = vop_plane_atomic_disable,
^
drivers/gpu/drm/rockchip/rockchip_drm_vop.c:870:20: note: (near initialization for 'plane_helper_funcs.atomic_disable')
>> drivers/gpu/drm/rockchip/rockchip_drm_vop.c:873:13: error: invalid storage class for function 'vop_atomic_plane_reset'
static void vop_atomic_plane_reset(struct drm_plane *plane)
^
>> drivers/gpu/drm/rockchip/rockchip_drm_vop.c:891:1: error: invalid storage class for function 'vop_atomic_plane_duplicate_state'
vop_atomic_plane_duplicate_state(struct drm_plane *plane)
^
>> drivers/gpu/drm/rockchip/rockchip_drm_vop.c:911:13: error: invalid storage class for function 'vop_atomic_plane_destroy_state'
static void vop_atomic_plane_destroy_state(struct drm_plane *plane,
^
drivers/gpu/drm/rockchip/rockchip_drm_vop.c:924:13: error: initializer element is not constant
.destroy = vop_plane_destroy,
^
drivers/gpu/drm/rockchip/rockchip_drm_vop.c:924:13: note: (near initialization for 'vop_plane_funcs.destroy')
drivers/gpu/drm/rockchip/rockchip_drm_vop.c:925:11: error: initializer element is not constant
.reset = vop_atomic_plane_reset,
^
drivers/gpu/drm/rockchip/rockchip_drm_vop.c:925:11: note: (near initialization for 'vop_plane_funcs.reset')
drivers/gpu/drm/rockchip/rockchip_drm_vop.c:926:28: error: initializer element is not constant
.atomic_duplicate_state = vop_atomic_plane_duplicate_state,
^
drivers/gpu/drm/rockchip/rockchip_drm_vop.c:926:28: note: (near initialization for 'vop_plane_funcs.atomic_duplicate_state')
drivers/gpu/drm/rockchip/rockchip_drm_vop.c:927:26: error: initializer element is not constant
.atomic_destroy_state = vop_atomic_plane_destroy_state,
^
drivers/gpu/drm/rockchip/rockchip_drm_vop.c:927:26: note: (near initialization for 'vop_plane_funcs.atomic_destroy_state')
>> drivers/gpu/drm/rockchip/rockchip_drm_vop.c:930:12: error: invalid storage class for function 'vop_crtc_enable_vblank'
static int vop_crtc_enable_vblank(struct drm_crtc *crtc)
^
>> drivers/gpu/drm/rockchip/rockchip_drm_vop.c:947:13: error: invalid storage class for function 'vop_crtc_disable_vblank'
static void vop_crtc_disable_vblank(struct drm_crtc *crtc)
^
>> drivers/gpu/drm/rockchip/rockchip_drm_vop.c:962:13: error: invalid storage class for function 'vop_crtc_wait_for_update'
static void vop_crtc_wait_for_update(struct drm_crtc *crtc)
^
drivers/gpu/drm/rockchip/rockchip_drm_vop.c:971:19: error: initializer element is not constant
.enable_vblank = vop_crtc_enable_vblank,
^
drivers/gpu/drm/rockchip/rockchip_drm_vop.c:971:19: note: (near initialization for 'private_crtc_funcs.enable_vblank')
drivers/gpu/drm/rockchip/rockchip_drm_vop.c:972:20: error: initializer element is not constant
.disable_vblank = vop_crtc_disable_vblank,
^
drivers/gpu/drm/rockchip/rockchip_drm_vop.c:972:20: note: (near initialization for 'private_crtc_funcs.disable_vblank')
drivers/gpu/drm/rockchip/rockchip_drm_vop.c:973:21: error: initializer element is not constant
.wait_for_update = vop_crtc_wait_for_update,
^
drivers/gpu/drm/rockchip/rockchip_drm_vop.c:973:21: note: (near initialization for 'private_crtc_funcs.wait_for_update')
>> drivers/gpu/drm/rockchip/rockchip_drm_vop.c:976:13: error: invalid storage class for function 'vop_crtc_mode_fixup'
static bool vop_crtc_mode_fixup(struct drm_crtc *crtc,
^
>> drivers/gpu/drm/rockchip/rockchip_drm_vop.c:988:13: error: invalid storage class for function 'vop_crtc_enable'
static void vop_crtc_enable(struct drm_crtc *crtc)
^
>> drivers/gpu/drm/rockchip/rockchip_drm_vop.c:1090:13: error: invalid storage class for function 'vop_crtc_atomic_flush'
static void vop_crtc_atomic_flush(struct drm_crtc *crtc,
^
>> drivers/gpu/drm/rockchip/rockchip_drm_vop.c:1105:13: error: invalid storage class for function 'vop_crtc_atomic_begin'
static void vop_crtc_atomic_begin(struct drm_crtc *crtc,
^
drivers/gpu/drm/rockchip/rockchip_drm_vop.c:1122:12: error: initializer element is not constant
.enable = vop_crtc_enable,
^
drivers/gpu/drm/rockchip/rockchip_drm_vop.c:1122:12: note: (near initialization for 'vop_crtc_helper_funcs.enable')
drivers/gpu/drm/rockchip/rockchip_drm_vop.c:1124:16: error: initializer element is not constant
.mode_fixup = vop_crtc_mode_fixup,
^
drivers/gpu/drm/rockchip/rockchip_drm_vop.c:1124:16: note: (near initialization for 'vop_crtc_helper_funcs.mode_fixup')
drivers/gpu/drm/rockchip/rockchip_drm_vop.c:1125:18: error: initializer element is not constant
.atomic_flush = vop_crtc_atomic_flush,
^
drivers/gpu/drm/rockchip/rockchip_drm_vop.c:1125:18: note: (near initialization for 'vop_crtc_helper_funcs.atomic_flush')
drivers/gpu/drm/rockchip/rockchip_drm_vop.c:1126:18: error: initializer element is not constant
.atomic_begin = vop_crtc_atomic_begin,
^
drivers/gpu/drm/rockchip/rockchip_drm_vop.c:1126:18: note: (near initialization for 'vop_crtc_helper_funcs.atomic_begin')
>> drivers/gpu/drm/rockchip/rockchip_drm_vop.c:1129:13: error: invalid storage class for function 'vop_crtc_destroy'
static void vop_crtc_destroy(struct drm_crtc *crtc)
^
>> drivers/gpu/drm/rockchip/rockchip_drm_vop.c:1134:13: error: invalid storage class for function 'vop_crtc_reset'
static void vop_crtc_reset(struct drm_crtc *crtc)
^

vim +/vop_plane_destroy +653 drivers/gpu/drm/rockchip/rockchip_drm_vop.c

4bb85264 Lin Huang 2016-09-02 647 if (vop->devfreq_event_dev)
4bb85264 Lin Huang 2016-09-02 648 devfreq_event_enable_edev(vop->devfreq_event_dev);
4bb85264 Lin Huang 2016-09-02 649 devfreq_resume_device(vop->devfreq);
893b6cad Daniel Vetter 2016-06-08 650 }
2048e328 Mark Yao 2014-08-22 651 }
2048e328 Mark Yao 2014-08-22 652
63ebb9fa Mark Yao 2015-11-30 @653 static void vop_plane_destroy(struct drm_plane *plane)
2048e328 Mark Yao 2014-08-22 654 {
63ebb9fa Mark Yao 2015-11-30 655 drm_plane_cleanup(plane);
2048e328 Mark Yao 2014-08-22 656 }
2048e328 Mark Yao 2014-08-22 657
44d0237a Mark Yao 2016-04-29 @658 static int vop_plane_prepare_fb(struct drm_plane *plane,
1832040d Chris Wilson 2016-08-18 659 struct drm_plane_state *new_state)
44d0237a Mark Yao 2016-04-29 660 {
44d0237a Mark Yao 2016-04-29 661 if (plane->state->fb)
44d0237a Mark Yao 2016-04-29 662 drm_framebuffer_reference(plane->state->fb);
44d0237a Mark Yao 2016-04-29 663
44d0237a Mark Yao 2016-04-29 664 return 0;
44d0237a Mark Yao 2016-04-29 665 }
44d0237a Mark Yao 2016-04-29 666
44d0237a Mark Yao 2016-04-29 @667 static void vop_plane_cleanup_fb(struct drm_plane *plane,
1832040d Chris Wilson 2016-08-18 668 struct drm_plane_state *old_state)
44d0237a Mark Yao 2016-04-29 669 {
44d0237a Mark Yao 2016-04-29 670 if (old_state->fb)
44d0237a Mark Yao 2016-04-29 671 drm_framebuffer_unreference(old_state->fb);
44d0237a Mark Yao 2016-04-29 672 }
44d0237a Mark Yao 2016-04-29 673
63ebb9fa Mark Yao 2015-11-30 @674 static int vop_plane_atomic_check(struct drm_plane *plane,
63ebb9fa Mark Yao 2015-11-30 675 struct drm_plane_state *state)
2048e328 Mark Yao 2014-08-22 676 {
63ebb9fa Mark Yao 2015-11-30 677 struct drm_crtc *crtc = state->crtc;
92915da6 John Keeping 2016-03-04 678 struct drm_crtc_state *crtc_state;
63ebb9fa Mark Yao 2015-11-30 679 struct drm_framebuffer *fb = state->fb;
2048e328 Mark Yao 2014-08-22 680 struct vop_win *vop_win = to_vop_win(plane);
63ebb9fa Mark Yao 2015-11-30 681 struct vop_plane_state *vop_plane_state = to_vop_plane_state(state);
2048e328 Mark Yao 2014-08-22 682 const struct vop_win_data *win = vop_win->data;
2048e328 Mark Yao 2014-08-22 683 int ret;
63ebb9fa Mark Yao 2015-11-30 684 struct drm_rect clip;
4c156c21 Mark Yao 2015-06-26 685 int min_scale = win->phy->scl ? FRAC_16_16(1, 8) :
4c156c21 Mark Yao 2015-06-26 686 DRM_PLANE_HELPER_NO_SCALING;
4c156c21 Mark Yao 2015-06-26 687 int max_scale = win->phy->scl ? FRAC_16_16(8, 1) :
4c156c21 Mark Yao 2015-06-26 688 DRM_PLANE_HELPER_NO_SCALING;
2048e328 Mark Yao 2014-08-22 689
63ebb9fa Mark Yao 2015-11-30 690 if (!crtc || !fb)
63ebb9fa Mark Yao 2015-11-30 691 goto out_disable;
92915da6 John Keeping 2016-03-04 692
92915da6 John Keeping 2016-03-04 693 crtc_state = drm_atomic_get_existing_crtc_state(state->state, crtc);
92915da6 John Keeping 2016-03-04 694 if (WARN_ON(!crtc_state))
92915da6 John Keeping 2016-03-04 695 return -EINVAL;
92915da6 John Keeping 2016-03-04 696
63ebb9fa Mark Yao 2015-11-30 697 clip.x1 = 0;
63ebb9fa Mark Yao 2015-11-30 698 clip.y1 = 0;
92915da6 John Keeping 2016-03-04 699 clip.x2 = crtc_state->adjusted_mode.hdisplay;
92915da6 John Keeping 2016-03-04 700 clip.y2 = crtc_state->adjusted_mode.vdisplay;
63ebb9fa Mark Yao 2015-11-30 701
f9b96be0 Ville Syrjälä 2016-07-26 702 ret = drm_plane_helper_check_state(state, &clip,
f9b96be0 Ville Syrjälä 2016-07-26 703 min_scale, max_scale,
f9b96be0 Ville Syrjälä 2016-07-26 704 true, true);
2048e328 Mark Yao 2014-08-22 705 if (ret)
2048e328 Mark Yao 2014-08-22 706 return ret;
2048e328 Mark Yao 2014-08-22 707
f9b96be0 Ville Syrjälä 2016-07-26 708 if (!state->visible)
63ebb9fa Mark Yao 2015-11-30 709 goto out_disable;
84c7f8ca Mark Yao 2015-07-20 710
63ebb9fa Mark Yao 2015-11-30 711 vop_plane_state->format = vop_convert_format(fb->pixel_format);
63ebb9fa Mark Yao 2015-11-30 712 if (vop_plane_state->format < 0)
63ebb9fa Mark Yao 2015-11-30 713 return vop_plane_state->format;
2048e328 Mark Yao 2014-08-22 714
84c7f8ca Mark Yao 2015-07-20 715 /*
84c7f8ca Mark Yao 2015-07-20 716 * Src.x1 can be odd when do clip, but yuv plane start point
84c7f8ca Mark Yao 2015-07-20 717 * need align with 2 pixel.
84c7f8ca Mark Yao 2015-07-20 718 */
f9b96be0 Ville Syrjälä 2016-07-26 719 if (is_yuv_support(fb->pixel_format) && ((state->src.x1 >> 16) % 2))
63ebb9fa Mark Yao 2015-11-30 720 return -EINVAL;
84c7f8ca Mark Yao 2015-07-20 721
63ebb9fa Mark Yao 2015-11-30 722 vop_plane_state->enable = true;
2048e328 Mark Yao 2014-08-22 723
63ebb9fa Mark Yao 2015-11-30 724 return 0;
2048e328 Mark Yao 2014-08-22 725
63ebb9fa Mark Yao 2015-11-30 726 out_disable:
63ebb9fa Mark Yao 2015-11-30 727 vop_plane_state->enable = false;
63ebb9fa Mark Yao 2015-11-30 728 return 0;
63ebb9fa Mark Yao 2015-11-30 729 }
2048e328 Mark Yao 2014-08-22 730
63ebb9fa Mark Yao 2015-11-30 @731 static void vop_plane_atomic_disable(struct drm_plane *plane,
63ebb9fa Mark Yao 2015-11-30 732 struct drm_plane_state *old_state)
63ebb9fa Mark Yao 2015-11-30 733 {
63ebb9fa Mark Yao 2015-11-30 734 struct vop_plane_state *vop_plane_state = to_vop_plane_state(old_state);
63ebb9fa Mark Yao 2015-11-30 735 struct vop_win *vop_win = to_vop_win(plane);
63ebb9fa Mark Yao 2015-11-30 736 const struct vop_win_data *win = vop_win->data;
63ebb9fa Mark Yao 2015-11-30 737 struct vop *vop = to_vop(old_state->crtc);
2048e328 Mark Yao 2014-08-22 738
63ebb9fa Mark Yao 2015-11-30 739 if (!old_state->crtc)
63ebb9fa Mark Yao 2015-11-30 740 return;
84c7f8ca Mark Yao 2015-07-20 741
4f9d39a7 Daniel Vetter 2016-06-08 742 spin_lock_irq(&plane->dev->event_lock);
4f9d39a7 Daniel Vetter 2016-06-08 743 vop_win->enable = false;
4f9d39a7 Daniel Vetter 2016-06-08 744 vop_win->yrgb_mst = 0;
4f9d39a7 Daniel Vetter 2016-06-08 745 spin_unlock_irq(&plane->dev->event_lock);
4f9d39a7 Daniel Vetter 2016-06-08 746
63ebb9fa Mark Yao 2015-11-30 747 spin_lock(&vop->reg_lock);
63ebb9fa Mark Yao 2015-11-30 748
63ebb9fa Mark Yao 2015-11-30 749 VOP_WIN_SET(vop, win, enable, 0);
84c7f8ca Mark Yao 2015-07-20 750
63ebb9fa Mark Yao 2015-11-30 751 spin_unlock(&vop->reg_lock);
84c7f8ca Mark Yao 2015-07-20 752
63ebb9fa Mark Yao 2015-11-30 753 vop_plane_state->enable = false;
84c7f8ca Mark Yao 2015-07-20 754 }
84c7f8ca Mark Yao 2015-07-20 755
63ebb9fa Mark Yao 2015-11-30 @756 static void vop_plane_atomic_update(struct drm_plane *plane,
63ebb9fa Mark Yao 2015-11-30 757 struct drm_plane_state *old_state)
63ebb9fa Mark Yao 2015-11-30 758 {
63ebb9fa Mark Yao 2015-11-30 759 struct drm_plane_state *state = plane->state;

:::::: The code at line 653 was first introduced by commit
:::::: 63ebb9fa7ff06d194362ed4a5d0a31ac7612a89c drm/rockchip: Convert to support atomic API

:::::: TO: Mark Yao <mark.yao@xxxxxxxxxxxxxx>
:::::: CC: Mark Yao <mark.yao@xxxxxxxxxxxxxx>

---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation

Attachment: .config.gz
Description: Binary data