Re: [PATCH 8/8] drm/bridge: it66121: Allow link this driver as a lib

From: kernel test robot
Date: Mon Nov 20 2023 - 04:09:39 EST


Hi Sui,

kernel test robot noticed the following build warnings:

[auto build test WARNING on drm-misc/drm-misc-next]
[also build test WARNING on linus/master v6.7-rc2 next-20231120]
[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/Sui-Jingfeng/drm-bridge-it66121-Use-dev-replace-ctx-dev-in-the-it66121_probe/20231114-231203
base: git://anongit.freedesktop.org/drm/drm-misc drm-misc-next
patch link: https://lore.kernel.org/r/20231114150130.497915-9-sui.jingfeng%40linux.dev
patch subject: [PATCH 8/8] drm/bridge: it66121: Allow link this driver as a lib
config: x86_64-buildonly-randconfig-004-20231120 (https://download.01.org/0day-ci/archive/20231120/202311201649.qjEbx5YL-lkp@xxxxxxxxx/config)
compiler: clang version 16.0.4 (https://github.com/llvm/llvm-project.git ae42196bc493ffe877a7e3dff8be32035dea4d07)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231120/202311201649.qjEbx5YL-lkp@xxxxxxxxx/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@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202311201649.qjEbx5YL-lkp@xxxxxxxxx/

All warnings (new ones prefixed by >>):

>> drivers/gpu/drm/bridge/ite-it66121.c:1654:5: warning: no previous prototype for function 'it66121_create_bridge' [-Wmissing-prototypes]
int it66121_create_bridge(struct i2c_client *client, bool of_support,
^
drivers/gpu/drm/bridge/ite-it66121.c:1654:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
int it66121_create_bridge(struct i2c_client *client, bool of_support,
^
static
>> drivers/gpu/drm/bridge/ite-it66121.c:1752:6: warning: no previous prototype for function 'it66121_destroy_bridge' [-Wmissing-prototypes]
void it66121_destroy_bridge(struct drm_bridge *bridge)
^
drivers/gpu/drm/bridge/ite-it66121.c:1752:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
void it66121_destroy_bridge(struct drm_bridge *bridge)
^
static
2 warnings generated.


vim +/it66121_create_bridge +1654 drivers/gpu/drm/bridge/ite-it66121.c

1653
> 1654 int it66121_create_bridge(struct i2c_client *client, bool of_support,
1655 bool hpd_support, bool audio_support,
1656 struct drm_bridge **bridge)
1657 {
1658 struct device *dev = &client->dev;
1659 int ret;
1660 struct it66121_ctx *ctx;
1661
1662 ctx = devm_kzalloc(dev, sizeof(*ctx), GFP_KERNEL);
1663 if (!ctx)
1664 return -ENOMEM;
1665
1666 ctx->dev = dev;
1667 ctx->client = client;
1668 mutex_init(&ctx->lock);
1669
1670 if (of_support) {
1671 ret = it66121_of_read_bus_width(dev, &ctx->bus_width);
1672 if (ret)
1673 return ret;
1674
1675 ret = it66121_of_get_next_bridge(dev, &ctx->next_bridge);
1676 if (ret)
1677 return ret;
1678 } else {
1679 ctx->bus_width = 24;
1680 ctx->next_bridge = NULL;
1681 }
1682
1683 it66121_hw_reset(ctx);
1684
1685 ctx->regmap = devm_regmap_init_i2c(client, &it66121_regmap_config);
1686 if (IS_ERR(ctx->regmap))
1687 return PTR_ERR(ctx->regmap);
1688
1689 ret = it66121_read_chip_id(ctx, false);
1690 if (ret)
1691 return ret;
1692
1693 ctx->info = it66121_get_match_data(ctx->vender_id, ctx->device_id);
1694 if (!ctx->info)
1695 return -ENODEV;
1696
1697 if (hpd_support) {
1698 ret = devm_request_threaded_irq(dev, client->irq, NULL,
1699 it66121_irq_threaded_handler,
1700 IRQF_ONESHOT, dev_name(dev),
1701 ctx);
1702 if (ret < 0) {
1703 dev_err(dev, "Failed to request irq: %d\n", ret);
1704 return ret;
1705 }
1706 }
1707
1708 it66121_bridge_init_base(&ctx->bridge, dev->of_node, true);
1709
1710 if (audio_support)
1711 it66121_audio_codec_init(ctx, dev);
1712
1713 *bridge = &ctx->bridge;
1714
1715 dev_info(dev, "IT66121 probed, chip id: 0x%x:0x%x, revision: %u\n",
1716 ctx->vender_id, ctx->device_id, ctx->revision);
1717
1718 return 0;
1719 }
1720 EXPORT_SYMBOL_GPL(it66121_create_bridge);
1721
1722 static int it66121_probe(struct i2c_client *client)
1723 {
1724 struct device *dev = &client->dev;
1725 struct it66121_ctx *ctx;
1726 struct drm_bridge *bridge;
1727 int ret;
1728
1729 if (!i2c_check_functionality(client->adapter, I2C_FUNC_I2C)) {
1730 dev_err(dev, "I2C check functionality failed.\n");
1731 return -ENXIO;
1732 }
1733
1734 ret = devm_regulator_bulk_get_enable(dev, ARRAY_SIZE(it66121_supplies),
1735 it66121_supplies);
1736 if (ret) {
1737 dev_err(dev, "Failed to enable power supplies\n");
1738 return ret;
1739 }
1740
1741 ret = it66121_create_bridge(client, true, true, true, &bridge);
1742 if (ret)
1743 return ret;
1744
1745 ctx = bridge_to_it66121(bridge);
1746
1747 i2c_set_clientdata(client, ctx);
1748
1749 return 0;
1750 }
1751
> 1752 void it66121_destroy_bridge(struct drm_bridge *bridge)
1753 {
1754 struct it66121_ctx *ctx = bridge_to_it66121(bridge);
1755
1756 drm_bridge_remove(bridge);
1757
1758 mutex_destroy(&ctx->lock);
1759 }
1760 EXPORT_SYMBOL_GPL(it66121_destroy_bridge);
1761

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