drivers/gpu/drm/rcar-du/rcar_du_crtc.c:737: undefined reference to `rcar_lvds_clk_enable'
From: kbuild test robot
Date: Sat May 09 2020 - 09:05:20 EST
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: d5eeab8d7e269e8cfc53b915bccd7bd30485bcbf
commit: def2fbffe62c00c330c7f41584a356001179c59c kconfig: allow symbols implied by y to become m
date: 8 weeks ago
config: arm64-randconfig-r024-20200509 (attached as .config)
compiler: aarch64-linux-gcc (GCC) 9.3.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
git checkout def2fbffe62c00c330c7f41584a356001179c59c
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day GCC_VERSION=9.3.0 make.cross ARCH=arm64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kbuild test robot <lkp@xxxxxxxxx>
All errors (new ones prefixed by >>):
aarch64-linux-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:737: undefined reference to `rcar_lvds_clk_enable'
drivers/gpu/drm/rcar-du/rcar_du_crtc.c:737:(.text+0x1408): relocation truncated to fit: R_AARCH64_CALL26 against undefined symbol `rcar_lvds_clk_enable'
aarch64-linux-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:771: undefined reference to `rcar_lvds_clk_disable'
drivers/gpu/drm/rcar-du/rcar_du_crtc.c:771:(.text+0x19bc): relocation truncated to fit: R_AARCH64_CALL26 against undefined symbol `rcar_lvds_clk_disable'
aarch64-linux-ld: drivers/gpu/drm/rcar-du/rcar_du_drv.o: in function `rcar_du_init':
>> drivers/gpu/drm/rcar-du/rcar_du_drv.c:613: undefined reference to `rcar_du_of_init'
drivers/gpu/drm/rcar-du/rcar_du_drv.c:613:(.init.text+0x18): relocation truncated to fit: R_AARCH64_CALL26 against undefined symbol `rcar_du_of_init'
aarch64-linux-ld: drivers/gpu/drm/rcar-du/rcar_du_encoder.o: in function `rcar_du_encoder_init':
>> drivers/gpu/drm/rcar-du/rcar_du_encoder.c:107: undefined reference to `rcar_lvds_dual_link'
drivers/gpu/drm/rcar-du/rcar_du_encoder.c:107:(.text+0x1e8): relocation truncated to fit: R_AARCH64_CALL26 against undefined symbol `rcar_lvds_dual_link'
vim +737 drivers/gpu/drm/rcar-du/rcar_du_crtc.c
b8a43032a7b8d7 Laurent Pinchart 2018-11-24 711
0b20a0f8c3cb6f Laurent Pinchart 2017-06-30 712 static void rcar_du_crtc_atomic_enable(struct drm_crtc *crtc,
0b20a0f8c3cb6f Laurent Pinchart 2017-06-30 713 struct drm_crtc_state *old_state)
4bf8e1962f91ee Laurent Pinchart 2013-06-19 714 {
4bf8e1962f91ee Laurent Pinchart 2013-06-19 715 struct rcar_du_crtc *rcrtc = to_rcar_crtc(crtc);
a6cc417d3eee4a Laurent Pinchart 2019-01-17 716 struct rcar_du_crtc_state *rstate = to_rcar_crtc_state(crtc->state);
b764f2f66ed48c Kieran Bingham 2019-03-15 717 struct rcar_du_device *rcdu = rcrtc->dev;
4bf8e1962f91ee Laurent Pinchart 2013-06-19 718
78b6bb1d24dbf0 Jacopo Mondi 2019-10-17 719 if (rcrtc->cmm)
78b6bb1d24dbf0 Jacopo Mondi 2019-10-17 720 rcar_cmm_enable(rcrtc->cmm);
f66ee304ae8990 Laurent Pinchart 2013-06-14 721 rcar_du_crtc_get(rcrtc);
a6cc417d3eee4a Laurent Pinchart 2019-01-17 722
a6cc417d3eee4a Laurent Pinchart 2019-01-17 723 /*
a6cc417d3eee4a Laurent Pinchart 2019-01-17 724 * On D3/E3 the dot clock is provided by the LVDS encoder attached to
a6cc417d3eee4a Laurent Pinchart 2019-01-17 725 * the DU channel. We need to enable its clock output explicitly if
a6cc417d3eee4a Laurent Pinchart 2019-01-17 726 * the LVDS output is disabled.
a6cc417d3eee4a Laurent Pinchart 2019-01-17 727 */
a6cc417d3eee4a Laurent Pinchart 2019-01-17 728 if (rcdu->info->lvds_clk_mask & BIT(rcrtc->index) &&
a6cc417d3eee4a Laurent Pinchart 2019-01-17 729 rstate->outputs == BIT(RCAR_DU_OUTPUT_DPAD0)) {
a6cc417d3eee4a Laurent Pinchart 2019-01-17 730 struct rcar_du_encoder *encoder =
a6cc417d3eee4a Laurent Pinchart 2019-01-17 731 rcdu->encoders[RCAR_DU_OUTPUT_LVDS0 + rcrtc->index];
a6cc417d3eee4a Laurent Pinchart 2019-01-17 732 const struct drm_display_mode *mode =
a6cc417d3eee4a Laurent Pinchart 2019-01-17 733 &crtc->state->adjusted_mode;
35a61fe9218a9d Boris Brezillon 2019-12-03 734 struct drm_bridge *bridge;
a6cc417d3eee4a Laurent Pinchart 2019-01-17 735
35a61fe9218a9d Boris Brezillon 2019-12-03 736 bridge = drm_bridge_chain_get_first_bridge(&encoder->base);
35a61fe9218a9d Boris Brezillon 2019-12-03 @737 rcar_lvds_clk_enable(bridge, mode->clock * 1000);
a6cc417d3eee4a Laurent Pinchart 2019-01-17 738 }
a6cc417d3eee4a Laurent Pinchart 2019-01-17 739
4bf8e1962f91ee Laurent Pinchart 2013-06-19 740 rcar_du_crtc_start(rcrtc);
78b6bb1d24dbf0 Jacopo Mondi 2019-10-17 741
78b6bb1d24dbf0 Jacopo Mondi 2019-10-17 742 /*
78b6bb1d24dbf0 Jacopo Mondi 2019-10-17 743 * TODO: The chip manual indicates that CMM tables should be written
78b6bb1d24dbf0 Jacopo Mondi 2019-10-17 744 * after the DU channel has been activated. Investigate the impact
78b6bb1d24dbf0 Jacopo Mondi 2019-10-17 745 * of this restriction on the first displayed frame.
78b6bb1d24dbf0 Jacopo Mondi 2019-10-17 746 */
78b6bb1d24dbf0 Jacopo Mondi 2019-10-17 747 rcar_du_cmm_setup(crtc);
beff155a7eae6d Laurent Pinchart 2015-02-20 748 }
beff155a7eae6d Laurent Pinchart 2015-02-20 749
64581714b58bc3 Laurent Pinchart 2017-06-30 750 static void rcar_du_crtc_atomic_disable(struct drm_crtc *crtc,
64581714b58bc3 Laurent Pinchart 2017-06-30 751 struct drm_crtc_state *old_state)
beff155a7eae6d Laurent Pinchart 2015-02-20 752 {
beff155a7eae6d Laurent Pinchart 2015-02-20 753 struct rcar_du_crtc *rcrtc = to_rcar_crtc(crtc);
a6cc417d3eee4a Laurent Pinchart 2019-01-17 754 struct rcar_du_crtc_state *rstate = to_rcar_crtc_state(old_state);
b764f2f66ed48c Kieran Bingham 2019-03-15 755 struct rcar_du_device *rcdu = rcrtc->dev;
beff155a7eae6d Laurent Pinchart 2015-02-20 756
4bf8e1962f91ee Laurent Pinchart 2013-06-19 757 rcar_du_crtc_stop(rcrtc);
f66ee304ae8990 Laurent Pinchart 2013-06-14 758 rcar_du_crtc_put(rcrtc);
beff155a7eae6d Laurent Pinchart 2015-02-20 759
a6cc417d3eee4a Laurent Pinchart 2019-01-17 760 if (rcdu->info->lvds_clk_mask & BIT(rcrtc->index) &&
a6cc417d3eee4a Laurent Pinchart 2019-01-17 761 rstate->outputs == BIT(RCAR_DU_OUTPUT_DPAD0)) {
a6cc417d3eee4a Laurent Pinchart 2019-01-17 762 struct rcar_du_encoder *encoder =
a6cc417d3eee4a Laurent Pinchart 2019-01-17 763 rcdu->encoders[RCAR_DU_OUTPUT_LVDS0 + rcrtc->index];
35a61fe9218a9d Boris Brezillon 2019-12-03 764 struct drm_bridge *bridge;
a6cc417d3eee4a Laurent Pinchart 2019-01-17 765
a6cc417d3eee4a Laurent Pinchart 2019-01-17 766 /*
a6cc417d3eee4a Laurent Pinchart 2019-01-17 767 * Disable the LVDS clock output, see
a6cc417d3eee4a Laurent Pinchart 2019-01-17 768 * rcar_du_crtc_atomic_enable().
a6cc417d3eee4a Laurent Pinchart 2019-01-17 769 */
35a61fe9218a9d Boris Brezillon 2019-12-03 770 bridge = drm_bridge_chain_get_first_bridge(&encoder->base);
35a61fe9218a9d Boris Brezillon 2019-12-03 @771 rcar_lvds_clk_disable(bridge);
a6cc417d3eee4a Laurent Pinchart 2019-01-17 772 }
a6cc417d3eee4a Laurent Pinchart 2019-01-17 773
6dd47cfd03a058 Laurent Pinchart 2017-02-10 774 spin_lock_irq(&crtc->dev->event_lock);
6dd47cfd03a058 Laurent Pinchart 2017-02-10 775 if (crtc->state->event) {
6dd47cfd03a058 Laurent Pinchart 2017-02-10 776 drm_crtc_send_vblank_event(crtc, crtc->state->event);
6dd47cfd03a058 Laurent Pinchart 2017-02-10 777 crtc->state->event = NULL;
6dd47cfd03a058 Laurent Pinchart 2017-02-10 778 }
6dd47cfd03a058 Laurent Pinchart 2017-02-10 779 spin_unlock_irq(&crtc->dev->event_lock);
4bf8e1962f91ee Laurent Pinchart 2013-06-19 780 }
4bf8e1962f91ee Laurent Pinchart 2013-06-19 781
:::::: The code at line 737 was first introduced by commit
:::::: 35a61fe9218a9d32a93447bdcca1d0f167cd0433 drm: Stop accessing encoder->bridge directly
:::::: TO: Boris Brezillon <boris.brezillon@xxxxxxxxxxxxx>
:::::: CC: Boris Brezillon <boris.brezillon@xxxxxxxxxxxxx>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx
Attachment:
.config.gz
Description: application/gzip