All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: cros-kernel-buildreports@googlegroups.com,
	Guenter Roeck <groeck@google.com>
Cc: oe-kbuild-all@lists.linux.dev
Subject: [chrome-os:chromeos-6.1 18091/19418] drivers/gpu/drm/imx/lcdc/imx-lcdc.c:411:16: warning: assignment to 'struct drm_bridge *' from 'int' makes pointer from integer without a cast
Date: Thu, 2 Nov 2023 18:13:09 +0800	[thread overview]
Message-ID: <202311021804.KXd3e8Sy-lkp@intel.com> (raw)

tree:   https://chromium.googlesource.com/chromiumos/third_party/kernel chromeos-6.1
head:   81f313361d7769059e5670bf82e47619d64e73c0
commit: 7f9a27710bf93d2ea46419283a1d272b355356b1 [18091/19418] UPSTREAM: drm/imx/lcdc: Implement DRM driver for imx25
config: xtensa-randconfig-002-20231102 (https://download.01.org/0day-ci/archive/20231102/202311021804.KXd3e8Sy-lkp@intel.com/config)
compiler: xtensa-linux-gcc (GCC) 13.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231102/202311021804.KXd3e8Sy-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202311021804.KXd3e8Sy-lkp@intel.com/

All warnings (new ones prefixed by >>):

   drivers/gpu/drm/imx/lcdc/imx-lcdc.c: In function 'imx_lcdc_probe':
   drivers/gpu/drm/imx/lcdc/imx-lcdc.c:411:18: error: implicit declaration of function 'devm_drm_of_get_bridge' [-Werror=implicit-function-declaration]
     411 |         bridge = devm_drm_of_get_bridge(dev, dev->of_node, 0, 0);
         |                  ^~~~~~~~~~~~~~~~~~~~~~
>> drivers/gpu/drm/imx/lcdc/imx-lcdc.c:411:16: warning: assignment to 'struct drm_bridge *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
     411 |         bridge = devm_drm_of_get_bridge(dev, dev->of_node, 0, 0);
         |                ^
   drivers/gpu/drm/imx/lcdc/imx-lcdc.c:449:15: error: implicit declaration of function 'drm_bridge_attach' [-Werror=implicit-function-declaration]
     449 |         ret = drm_bridge_attach(&lcdc->pipe.encoder, bridge, NULL, DRM_BRIDGE_ATTACH_NO_CONNECTOR);
         |               ^~~~~~~~~~~~~~~~~
   drivers/gpu/drm/imx/lcdc/imx-lcdc.c:449:68: error: 'DRM_BRIDGE_ATTACH_NO_CONNECTOR' undeclared (first use in this function)
     449 |         ret = drm_bridge_attach(&lcdc->pipe.encoder, bridge, NULL, DRM_BRIDGE_ATTACH_NO_CONNECTOR);
         |                                                                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/imx/lcdc/imx-lcdc.c:449:68: note: each undeclared identifier is reported only once for each function it appears in
   cc1: some warnings being treated as errors


vim +411 drivers/gpu/drm/imx/lcdc/imx-lcdc.c

   390	
   391	static int imx_lcdc_probe(struct platform_device *pdev)
   392	{
   393		struct imx_lcdc *lcdc;
   394		struct drm_device *drm;
   395		struct drm_bridge *bridge;
   396		int irq;
   397		int ret;
   398		struct device *dev = &pdev->dev;
   399	
   400		lcdc = devm_drm_dev_alloc(dev, &imx_lcdc_drm_driver,
   401					  struct imx_lcdc, drm);
   402		if (!lcdc)
   403			return -ENOMEM;
   404	
   405		drm = &lcdc->drm;
   406	
   407		lcdc->base = devm_platform_ioremap_resource(pdev, 0);
   408		if (IS_ERR(lcdc->base))
   409			return dev_err_probe(dev, PTR_ERR(lcdc->base), "Cannot get IO memory\n");
   410	
 > 411		bridge = devm_drm_of_get_bridge(dev, dev->of_node, 0, 0);
   412		if (IS_ERR(bridge))
   413			return dev_err_probe(dev, PTR_ERR(bridge), "Failed to find bridge\n");
   414	
   415		/* Get Clocks */
   416		lcdc->clk_ipg = devm_clk_get(dev, "ipg");
   417		if (IS_ERR(lcdc->clk_ipg))
   418			return dev_err_probe(dev, PTR_ERR(lcdc->clk_ipg), "Failed to get %s clk\n", "ipg");
   419	
   420		lcdc->clk_ahb = devm_clk_get(dev, "ahb");
   421		if (IS_ERR(lcdc->clk_ahb))
   422			return dev_err_probe(dev, PTR_ERR(lcdc->clk_ahb), "Failed to get %s clk\n", "ahb");
   423	
   424		lcdc->clk_per = devm_clk_get(dev, "per");
   425		if (IS_ERR(lcdc->clk_per))
   426			return dev_err_probe(dev, PTR_ERR(lcdc->clk_per), "Failed to get %s clk\n", "per");
   427	
   428		ret = dma_set_mask_and_coherent(drm->dev, DMA_BIT_MASK(32));
   429		if (ret)
   430			return dev_err_probe(dev, ret, "Cannot set DMA Mask\n");
   431	
   432		/* Modeset init */
   433		ret = drmm_mode_config_init(drm);
   434		if (ret)
   435			return dev_err_probe(dev, ret, "Cannot initialize mode configuration structure\n");
   436	
   437		/* CRTC, Plane, Encoder */
   438		ret = drm_simple_display_pipe_init(drm, &lcdc->pipe,
   439						   &imx_lcdc_pipe_funcs,
   440						   imx_lcdc_formats,
   441						   ARRAY_SIZE(imx_lcdc_formats), NULL, NULL);
   442		if (ret < 0)
   443			return dev_err_probe(drm->dev, ret, "Cannot setup simple display pipe\n");
   444	
   445		ret = drm_vblank_init(drm, drm->mode_config.num_crtc);
   446		if (ret < 0)
   447			return dev_err_probe(drm->dev, ret, "Failed to initialize vblank\n");
   448	
   449		ret = drm_bridge_attach(&lcdc->pipe.encoder, bridge, NULL, DRM_BRIDGE_ATTACH_NO_CONNECTOR);
   450		if (ret)
   451			return dev_err_probe(drm->dev, ret, "Cannot attach bridge\n");
   452	
   453		lcdc->connector = drm_bridge_connector_init(drm, &lcdc->pipe.encoder);
   454		if (IS_ERR(lcdc->connector))
   455			return dev_err_probe(drm->dev, PTR_ERR(lcdc->connector), "Cannot init bridge connector\n");
   456	
   457		drm_connector_attach_encoder(lcdc->connector, &lcdc->pipe.encoder);
   458	
   459		/*
   460		 * The LCDC controller does not have an enable bit. The
   461		 * controller starts directly when the clocks are enabled.
   462		 * If the clocks are enabled when the controller is not yet
   463		 * programmed with proper register values (enabled at the
   464		 * bootloader, for example) then it just goes into some undefined
   465		 * state.
   466		 * To avoid this issue, let's enable and disable LCDC IPG,
   467		 * PER and AHB clock so that we force some kind of 'reset'
   468		 * to the LCDC block.
   469		 */
   470	
   471		ret = clk_prepare_enable(lcdc->clk_ipg);
   472		if (ret)
   473			return dev_err_probe(dev, ret, "Cannot enable ipg clock\n");
   474		clk_disable_unprepare(lcdc->clk_ipg);
   475	
   476		ret = clk_prepare_enable(lcdc->clk_per);
   477		if (ret)
   478			return dev_err_probe(dev, ret, "Cannot enable per clock\n");
   479		clk_disable_unprepare(lcdc->clk_per);
   480	
   481		ret = clk_prepare_enable(lcdc->clk_ahb);
   482		if (ret)
   483			return dev_err_probe(dev, ret, "Cannot enable ahb clock\n");
   484		clk_disable_unprepare(lcdc->clk_ahb);
   485	
   486		drm->mode_config.min_width = LCDC_MIN_XRES;
   487		drm->mode_config.max_width = LCDC_MAX_XRES;
   488		drm->mode_config.min_height = LCDC_MIN_YRES;
   489		drm->mode_config.max_height = LCDC_MAX_YRES;
   490		drm->mode_config.preferred_depth = 16;
   491		drm->mode_config.funcs = &imx_lcdc_mode_config_funcs;
   492		drm->mode_config.helper_private = &imx_lcdc_mode_config_helpers;
   493	
   494		drm_mode_config_reset(drm);
   495	
   496		irq = platform_get_irq(pdev, 0);
   497		if (irq < 0) {
   498			ret = irq;
   499			return ret;
   500		}
   501	
   502		ret = devm_request_irq(dev, irq, imx_lcdc_irq_handler, 0, "imx-lcdc", lcdc);
   503		if (ret < 0)
   504			return dev_err_probe(drm->dev, ret, "Failed to install IRQ handler\n");
   505	
   506		platform_set_drvdata(pdev, drm);
   507	
   508		ret = drm_dev_register(&lcdc->drm, 0);
   509		if (ret)
   510			return dev_err_probe(dev, ret, "Cannot register device\n");
   511	
   512		drm_fbdev_generic_setup(drm, 0);
   513	
   514		return 0;
   515	}
   516	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

                 reply	other threads:[~2023-11-02 10:13 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202311021804.KXd3e8Sy-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=cros-kernel-buildreports@googlegroups.com \
    --cc=groeck@google.com \
    --cc=oe-kbuild-all@lists.linux.dev \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.