tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master head: 274d7803837da78dfc911bcda0d593412676fc20 commit: 957fe62d7d15f43d49e8cbacafaff8ede7d6cb30 [4750/11993] drm: rcar-du: Fix DSI enable & disable sequence config: arm-randconfig-r005-20221001 compiler: arm-linux-gnueabi-gcc (GCC) 12.1.0 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 # https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=957fe62d7d15f43d49e8cbacafaff8ede7d6cb30 git remote add linux-next https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git git fetch --no-tags linux-next master git checkout 957fe62d7d15f43d49e8cbacafaff8ede7d6cb30 # save the config file mkdir build_dir && cp config build_dir/.config COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=arm SHELL=/bin/bash If you fix the issue, kindly add following tag where applicable | Reported-by: kernel test robot All errors (new ones prefixed by >>): arm-linux-gnueabi-ld: drivers/gpu/drm/rcar-du/rcar_du_crtc.o: in function `rcar_du_crtc_atomic_enable': >> drivers/gpu/drm/rcar-du/rcar_du_crtc.c:760: undefined reference to `rcar_mipi_dsi_pclk_enable' arm-linux-gnueabi-ld: drivers/gpu/drm/rcar-du/rcar_du_crtc.o: in function `rcar_du_crtc_atomic_disable': >> drivers/gpu/drm/rcar-du/rcar_du_crtc.c:806: undefined reference to `rcar_mipi_dsi_pclk_disable' vim +760 drivers/gpu/drm/rcar-du/rcar_du_crtc.c 725 726 static void rcar_du_crtc_atomic_enable(struct drm_crtc *crtc, 727 struct drm_atomic_state *state) 728 { 729 struct rcar_du_crtc *rcrtc = to_rcar_crtc(crtc); 730 struct rcar_du_crtc_state *rstate = to_rcar_crtc_state(crtc->state); 731 struct rcar_du_device *rcdu = rcrtc->dev; 732 733 if (rcrtc->cmm) 734 rcar_cmm_enable(rcrtc->cmm); 735 rcar_du_crtc_get(rcrtc); 736 737 /* 738 * On D3/E3 the dot clock is provided by the LVDS encoder attached to 739 * the DU channel. We need to enable its clock output explicitly if 740 * the LVDS output is disabled. 741 */ 742 if (rcdu->info->lvds_clk_mask & BIT(rcrtc->index) && 743 rstate->outputs == BIT(RCAR_DU_OUTPUT_DPAD0)) { 744 struct drm_bridge *bridge = rcdu->lvds[rcrtc->index]; 745 const struct drm_display_mode *mode = 746 &crtc->state->adjusted_mode; 747 748 rcar_lvds_pclk_enable(bridge, mode->clock * 1000); 749 } 750 751 /* 752 * Similarly to LVDS, on V3U the dot clock is provided by the DSI 753 * encoder, and we need to enable the DSI clocks before enabling the CRTC. 754 */ 755 if ((rcdu->info->dsi_clk_mask & BIT(rcrtc->index)) && 756 (rstate->outputs & 757 (BIT(RCAR_DU_OUTPUT_DSI0) | BIT(RCAR_DU_OUTPUT_DSI1)))) { 758 struct drm_bridge *bridge = rcdu->dsi[rcrtc->index]; 759 > 760 rcar_mipi_dsi_pclk_enable(bridge, state); 761 } 762 763 rcar_du_crtc_start(rcrtc); 764 765 /* 766 * TODO: The chip manual indicates that CMM tables should be written 767 * after the DU channel has been activated. Investigate the impact 768 * of this restriction on the first displayed frame. 769 */ 770 rcar_du_cmm_setup(crtc); 771 } 772 773 static void rcar_du_crtc_atomic_disable(struct drm_crtc *crtc, 774 struct drm_atomic_state *state) 775 { 776 struct drm_crtc_state *old_state = drm_atomic_get_old_crtc_state(state, 777 crtc); 778 struct rcar_du_crtc *rcrtc = to_rcar_crtc(crtc); 779 struct rcar_du_crtc_state *rstate = to_rcar_crtc_state(old_state); 780 struct rcar_du_device *rcdu = rcrtc->dev; 781 782 rcar_du_crtc_stop(rcrtc); 783 rcar_du_crtc_put(rcrtc); 784 785 if (rcdu->info->lvds_clk_mask & BIT(rcrtc->index) && 786 rstate->outputs == BIT(RCAR_DU_OUTPUT_DPAD0)) { 787 struct drm_bridge *bridge = rcdu->lvds[rcrtc->index]; 788 789 /* 790 * Disable the LVDS clock output, see 791 * rcar_du_crtc_atomic_enable(). 792 */ 793 rcar_lvds_pclk_disable(bridge); 794 } 795 796 if ((rcdu->info->dsi_clk_mask & BIT(rcrtc->index)) && 797 (rstate->outputs & 798 (BIT(RCAR_DU_OUTPUT_DSI0) | BIT(RCAR_DU_OUTPUT_DSI1)))) { 799 struct drm_bridge *bridge = rcdu->dsi[rcrtc->index]; 800 801 /* 802 * Disable the DSI clock output, see 803 * rcar_du_crtc_atomic_enable(). 804 */ 805 > 806 rcar_mipi_dsi_pclk_disable(bridge); 807 } 808 809 spin_lock_irq(&crtc->dev->event_lock); 810 if (crtc->state->event) { 811 drm_crtc_send_vblank_event(crtc, crtc->state->event); 812 crtc->state->event = NULL; 813 } 814 spin_unlock_irq(&crtc->dev->event_lock); 815 } 816 -- 0-DAY CI Kernel Test Service https://01.org/lkp