Re: [hverkuil-media-tree:for-v6.1c 3/3] drivers/media/platform/mediatek/mdp3/mtk-mdp3-comp.c:905:10: warning: cast to smaller integer type 'enum mdp_comp_type' from 'const void *'

From: Hans Verkuil
Date: Fri Aug 19 2022 - 11:32:18 EST


Hi Moudy,

On 19/08/2022 04:05, kernel test robot wrote:
> tree: git://linuxtv.org/hverkuil/media_tree.git for-v6.1c
> head: b2273b84e1291c52279edf13b08744833c1faaab
> commit: b2273b84e1291c52279edf13b08744833c1faaab [3/3] media: platform: mtk-mdp3: add MediaTek MDP3 driver
> config: arm64-allyesconfig (https://download.01.org/0day-ci/archive/20220819/202208190957.uDT8XE6b-lkp@xxxxxxxxx/config)
> compiler: clang version 16.0.0 (https://github.com/llvm/llvm-project aed5e3bea138ce581d682158eb61c27b3cfdd6ec)
> 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 arm64 cross compiling tool for clang build
> # apt-get install binutils-aarch64-linux-gnu
> git remote add hverkuil-media-tree git://linuxtv.org/hverkuil/media_tree.git
> git fetch --no-tags hverkuil-media-tree for-v6.1c
> git checkout b2273b84e1291c52279edf13b08744833c1faaab
> # 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=arm64 SHELL=/bin/bash drivers/media/platform/mediatek/mdp3/ drivers/vfio/pci/hisilicon/
>
> If you fix the issue, kindly add following tag where applicable
> Reported-by: kernel test robot <lkp@xxxxxxxxx>
>
> All warnings (new ones prefixed by >>):
>
>>> drivers/media/platform/mediatek/mdp3/mtk-mdp3-comp.c:905:10: warning: cast to smaller integer type 'enum mdp_comp_type' from 'const void *' [-Wvoid-pointer-to-enum-cast]
> type = (enum mdp_comp_type)of_id->data;
> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> drivers/media/platform/mediatek/mdp3/mtk-mdp3-comp.c:964:10: warning: cast to smaller integer type 'enum mdp_comp_type' from 'const void *' [-Wvoid-pointer-to-enum-cast]
> type = (enum mdp_comp_type)of_id->data;
> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Can you fix this? I believe you need to do this to fix this:

(enum mdp_comp_type)(uintptr_t)of_id->data

Regards,

Hans

> 2 warnings generated.
>
>
> vim +905 drivers/media/platform/mediatek/mdp3/mtk-mdp3-comp.c
>
> 883
> 884 static int mdp_comp_sub_create(struct mdp_dev *mdp)
> 885 {
> 886 struct device *dev = &mdp->pdev->dev;
> 887 struct device_node *node, *parent;
> 888
> 889 parent = dev->of_node->parent;
> 890
> 891 for_each_child_of_node(parent, node) {
> 892 const struct of_device_id *of_id;
> 893 enum mdp_comp_type type;
> 894 int id, alias_id;
> 895 struct mdp_comp *comp;
> 896
> 897 of_id = of_match_node(mdp_sub_comp_dt_ids, node);
> 898 if (!of_id)
> 899 continue;
> 900 if (!of_device_is_available(node)) {
> 901 dev_dbg(dev, "Skipping disabled sub comp. %pOF\n", node);
> 902 continue;
> 903 }
> 904
> > 905 type = (enum mdp_comp_type)of_id->data;
> 906 alias_id = mdp_comp_alias_id[type];
> 907 id = mdp_comp_get_id(type, alias_id);
> 908 if (id < 0) {
> 909 dev_err(dev,
> 910 "Fail to get sub comp. id: type %d alias %d\n",
> 911 type, alias_id);
> 912 return -EINVAL;
> 913 }
> 914 mdp_comp_alias_id[type]++;
> 915
> 916 comp = mdp_comp_create(mdp, node, id);
> 917 if (IS_ERR(comp))
> 918 return PTR_ERR(comp);
> 919 }
> 920
> 921 return 0;
> 922 }
> 923
>