Re: [PATCH] drm: xlnx: zynqmp: Use dev_err_probe()

From: kernel test robot
Date: Wed Mar 22 2023 - 17:52:06 EST


Hi,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on drm-misc/drm-misc-next]
[also build test WARNING on linus/master v6.3-rc3 next-20230322]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url: https://github.com/intel-lab-lkp/linux/commits/ye-xingchen-zte-com-cn/drm-xlnx-zynqmp-Use-dev_err_probe/20230322-162628
base: git://anongit.freedesktop.org/drm/drm-misc drm-misc-next
patch link: https://lore.kernel.org/r/202303221625255005719%40zte.com.cn
patch subject: [PATCH] drm: xlnx: zynqmp: Use dev_err_probe()
config: arm-randconfig-r014-20230322 (https://download.01.org/0day-ci/archive/20230323/202303230551.UxtIjawK-lkp@xxxxxxxxx/config)
compiler: clang version 17.0.0 (https://github.com/llvm/llvm-project 67409911353323ca5edf2049ef0df54132fa1ca7)
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
# install arm cross compiling tool for clang build
# apt-get install binutils-arm-linux-gnueabi
# https://github.com/intel-lab-lkp/linux/commit/68f0f0c914304e81941645b5b2e06ca1424527f9
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review ye-xingchen-zte-com-cn/drm-xlnx-zynqmp-Use-dev_err_probe/20230322-162628
git checkout 68f0f0c914304e81941645b5b2e06ca1424527f9
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=arm olddefconfig
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=arm SHELL=/bin/bash drivers/gpu/drm/xlnx/

If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@xxxxxxxxx>
| Link: https://lore.kernel.org/oe-kbuild-all/202303230551.UxtIjawK-lkp@xxxxxxxxx/

All warnings (new ones prefixed by >>):

>> drivers/gpu/drm/xlnx/zynqmp_dp.c:1704:33: warning: more '%' conversions than data arguments [-Wformat-insufficient-args]
"failed to get reset: %ld\n");
~~^
1 warning generated.


vim +1704 drivers/gpu/drm/xlnx/zynqmp_dp.c

1664
1665 /* -----------------------------------------------------------------------------
1666 * Initialization & Cleanup
1667 */
1668
1669 int zynqmp_dp_probe(struct zynqmp_dpsub *dpsub)
1670 {
1671 struct platform_device *pdev = to_platform_device(dpsub->dev);
1672 struct drm_bridge *bridge;
1673 struct zynqmp_dp *dp;
1674 struct resource *res;
1675 int ret;
1676
1677 dp = kzalloc(sizeof(*dp), GFP_KERNEL);
1678 if (!dp)
1679 return -ENOMEM;
1680
1681 dp->dev = &pdev->dev;
1682 dp->dpsub = dpsub;
1683 dp->status = connector_status_disconnected;
1684
1685 INIT_DELAYED_WORK(&dp->hpd_work, zynqmp_dp_hpd_work_func);
1686
1687 /* Acquire all resources (IOMEM, IRQ and PHYs). */
1688 res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "dp");
1689 dp->iomem = devm_ioremap_resource(dp->dev, res);
1690 if (IS_ERR(dp->iomem)) {
1691 ret = PTR_ERR(dp->iomem);
1692 goto err_free;
1693 }
1694
1695 dp->irq = platform_get_irq(pdev, 0);
1696 if (dp->irq < 0) {
1697 ret = dp->irq;
1698 goto err_free;
1699 }
1700
1701 dp->reset = devm_reset_control_get(dp->dev, NULL);
1702 if (IS_ERR(dp->reset)) {
1703 ret = dev_err_probe(dp->dev, PTR_ERR(dp->reset),
> 1704 "failed to get reset: %ld\n");
1705 goto err_free;
1706 }
1707
1708 ret = zynqmp_dp_reset(dp, false);
1709 if (ret < 0)
1710 goto err_free;
1711
1712 ret = zynqmp_dp_phy_probe(dp);
1713 if (ret)
1714 goto err_reset;
1715
1716 /* Initialize the bridge. */
1717 bridge = &dp->bridge;
1718 bridge->funcs = &zynqmp_dp_bridge_funcs;
1719 bridge->ops = DRM_BRIDGE_OP_DETECT | DRM_BRIDGE_OP_EDID
1720 | DRM_BRIDGE_OP_HPD;
1721 bridge->type = DRM_MODE_CONNECTOR_DisplayPort;
1722 dpsub->bridge = bridge;
1723
1724 /*
1725 * Acquire the next bridge in the chain. Ignore errors caused by port@5
1726 * not being connected for backward-compatibility with older DTs.
1727 */
1728 ret = drm_of_find_panel_or_bridge(dp->dev->of_node, 5, 0, NULL,
1729 &dp->next_bridge);
1730 if (ret < 0 && ret != -ENODEV)
1731 goto err_reset;
1732
1733 /* Initialize the hardware. */
1734 dp->config.misc0 &= ~ZYNQMP_DP_MAIN_STREAM_MISC0_SYNC_LOCK;
1735 zynqmp_dp_set_format(dp, NULL, ZYNQMP_DPSUB_FORMAT_RGB, 8);
1736
1737 zynqmp_dp_write(dp, ZYNQMP_DP_TX_PHY_POWER_DOWN,
1738 ZYNQMP_DP_TX_PHY_POWER_DOWN_ALL);
1739 zynqmp_dp_set(dp, ZYNQMP_DP_PHY_RESET, ZYNQMP_DP_PHY_RESET_ALL_RESET);
1740 zynqmp_dp_write(dp, ZYNQMP_DP_FORCE_SCRAMBLER_RESET, 1);
1741 zynqmp_dp_write(dp, ZYNQMP_DP_TRANSMITTER_ENABLE, 0);
1742 zynqmp_dp_write(dp, ZYNQMP_DP_INT_DS, 0xffffffff);
1743
1744 ret = zynqmp_dp_phy_init(dp);
1745 if (ret)
1746 goto err_reset;
1747
1748 zynqmp_dp_write(dp, ZYNQMP_DP_TRANSMITTER_ENABLE, 1);
1749
1750 /*
1751 * Now that the hardware is initialized and won't generate spurious
1752 * interrupts, request the IRQ.
1753 */
1754 ret = devm_request_threaded_irq(dp->dev, dp->irq, NULL,
1755 zynqmp_dp_irq_handler, IRQF_ONESHOT,
1756 dev_name(dp->dev), dp);
1757 if (ret < 0)
1758 goto err_phy_exit;
1759
1760 dpsub->dp = dp;
1761
1762 dev_dbg(dp->dev, "ZynqMP DisplayPort Tx probed with %u lanes\n",
1763 dp->num_lanes);
1764
1765 return 0;
1766
1767 err_phy_exit:
1768 zynqmp_dp_phy_exit(dp);
1769 err_reset:
1770 zynqmp_dp_reset(dp, true);
1771 err_free:
1772 kfree(dp);
1773 return ret;
1774 }
1775

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