[linux-chenxing:mstar_v5_14_rebase_i2_drm 257/349] drivers/clk/mstar/clk-msc313-mux.c:27:2: error: implicit declaration of function 'regmap_field_read'; did you mean 'regmap_field_write'?

From: kernel test robot
Date: Sun Jul 18 2021 - 14:52:52 EST


tree: git://github.com/linux-chenxing/linux.git mstar_v5_14_rebase_i2_drm
head: 93dfb2364436067bf34c6d4ddcd282496182cc0f
commit: 395724ba20fe2aa13e0167b43b6914f94f128df0 [257/349] clk: mstar: msc313 clock mux base
config: mips-bigsur_defconfig (attached as .config)
compiler: mips64-linux-gcc (GCC) 10.3.0
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
# https://github.com/linux-chenxing/linux/commit/395724ba20fe2aa13e0167b43b6914f94f128df0
git remote add linux-chenxing git://github.com/linux-chenxing/linux.git
git fetch --no-tags linux-chenxing mstar_v5_14_rebase_i2_drm
git checkout 395724ba20fe2aa13e0167b43b6914f94f128df0
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-10.3.0 make.cross ARCH=mips

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@xxxxxxxxx>

All errors (new ones prefixed by >>):

drivers/clk/mstar/clk-msc313-mux.c: In function 'msc313_mux_mux_get_parent':
>> drivers/clk/mstar/clk-msc313-mux.c:27:2: error: implicit declaration of function 'regmap_field_read'; did you mean 'regmap_field_write'? [-Werror=implicit-function-declaration]
27 | regmap_field_read(mux->mux, &index);
| ^~~~~~~~~~~~~~~~~
| regmap_field_write
drivers/clk/mstar/clk-msc313-mux.c: In function 'msc313_mux_register_muxes':
>> drivers/clk/mstar/clk-msc313-mux.c:146:10: error: variable 'gate_field' has initializer but incomplete type
146 | struct reg_field gate_field = REG_FIELD(mux_data->offset,
| ^~~~~~~~~
>> drivers/clk/mstar/clk-msc313-mux.c:146:33: error: implicit declaration of function 'REG_FIELD' [-Werror=implicit-function-declaration]
146 | struct reg_field gate_field = REG_FIELD(mux_data->offset,
| ^~~~~~~~~
>> drivers/clk/mstar/clk-msc313-mux.c:146:20: error: storage size of 'gate_field' isn't known
146 | struct reg_field gate_field = REG_FIELD(mux_data->offset,
| ^~~~~~~~~~
>> drivers/clk/mstar/clk-msc313-mux.c:148:10: error: variable 'mux_field' has initializer but incomplete type
148 | struct reg_field mux_field = REG_FIELD(mux_data->offset,
| ^~~~~~~~~
>> drivers/clk/mstar/clk-msc313-mux.c:148:20: error: storage size of 'mux_field' isn't known
148 | struct reg_field mux_field = REG_FIELD(mux_data->offset,
| ^~~~~~~~~
>> drivers/clk/mstar/clk-msc313-mux.c:150:10: error: variable 'deglitch_field' has initializer but incomplete type
150 | struct reg_field deglitch_field = REG_FIELD(mux_data->offset,
| ^~~~~~~~~
>> drivers/clk/mstar/clk-msc313-mux.c:150:20: error: storage size of 'deglitch_field' isn't known
150 | struct reg_field deglitch_field = REG_FIELD(mux_data->offset,
| ^~~~~~~~~~~~~~
>> drivers/clk/mstar/clk-msc313-mux.c:157:16: error: implicit declaration of function 'devm_regmap_field_alloc' [-Werror=implicit-function-declaration]
157 | mux->gate = devm_regmap_field_alloc(dev, regmap, gate_field);
| ^~~~~~~~~~~~~~~~~~~~~~~
drivers/clk/mstar/clk-msc313-mux.c:150:20: warning: unused variable 'deglitch_field' [-Wunused-variable]
150 | struct reg_field deglitch_field = REG_FIELD(mux_data->offset,
| ^~~~~~~~~~~~~~
drivers/clk/mstar/clk-msc313-mux.c:148:20: warning: unused variable 'mux_field' [-Wunused-variable]
148 | struct reg_field mux_field = REG_FIELD(mux_data->offset,
| ^~~~~~~~~
drivers/clk/mstar/clk-msc313-mux.c:146:20: warning: unused variable 'gate_field' [-Wunused-variable]
146 | struct reg_field gate_field = REG_FIELD(mux_data->offset,
| ^~~~~~~~~~
cc1: some warnings being treated as errors


vim +27 drivers/clk/mstar/clk-msc313-mux.c

21
22 static u8 msc313_mux_mux_get_parent(struct clk_hw *hw)
23 {
24 struct msc313_mux *mux = mux_to_mux(hw);
25 unsigned int index;
26
> 27 regmap_field_read(mux->mux, &index);
28
29 return index;
30 }
31
32 static const struct clk_ops msc313_mux_mux_ops = {
33 .set_parent = msc313_mux_mux_set_parent,
34 .get_parent = msc313_mux_mux_get_parent,
35 };
36
37 static int msc313_mux_deglitch_enable(struct clk_hw *hw)
38 {
39 struct msc313_mux *mux = deglitch_to_mux(hw);
40
41 if (mux->gate)
42 regmap_field_write(mux->gate, 0);
43
44 return 0;
45 }
46
47 static void msc313_mux_deglitch_disable(struct clk_hw *hw)
48 {
49 struct msc313_mux *mux = deglitch_to_mux(hw);
50
51 if (mux->gate)
52 regmap_field_write(mux->gate, 1);
53 }
54
55 static int msc313_mux_deglitch_is_enabled(struct clk_hw *hw)
56 {
57 struct msc313_mux *mux = deglitch_to_mux(hw);
58 unsigned int notgated;
59
60 if (mux->gate) {
61 regmap_field_read(mux->gate, &notgated);
62 return !notgated;
63 }
64
65 return 1;
66 }
67
68 static int msc313_mux_deglitch_set_parent(struct clk_hw *hw, u8 index)
69 {
70 struct msc313_mux *mux = deglitch_to_mux(hw);
71
72 if (!mux->deglitch)
73 return -ENOTSUPP;
74
75 return regmap_field_write(mux->deglitch, index);
76 }
77
78 static u8 msc313_mux_deglitch_get_parent(struct clk_hw *hw)
79 {
80 struct msc313_mux *mux = deglitch_to_mux(hw);
81 unsigned int index = 0;
82
83 if (mux->deglitch){
84 regmap_field_read(mux->deglitch, &index);
85 }
86
87 return index;
88 }
89
90 static const struct clk_ops msc313_mux_deglitch_ops = {
91 .enable = msc313_mux_deglitch_enable,
92 .disable = msc313_mux_deglitch_disable,
93 .is_enabled = msc313_mux_deglitch_is_enabled,
94 .set_parent = msc313_mux_deglitch_set_parent,
95 .get_parent = msc313_mux_deglitch_get_parent,
96 };
97
98 struct clk_hw *msc313_mux_xlate(struct of_phandle_args *clkspec, void *data)
99 {
100 struct msc313_muxes *muxes = data;
101 unsigned int of_idx = clkspec->args[0];
102 unsigned int idx = of_idx / 2;
103
104 /* mux, deglitch, mux, deglitch,.. */
105 if (of_idx >= muxes->muxes_data->num_muxes * 2)
106 return ERR_PTR(-EINVAL);
107
108 if (of_idx % 2)
109 return &muxes->muxes[idx].deglitch_hw;
110
111 return &muxes->muxes[idx].mux_hw;
112 }
113
114 struct msc313_muxes *msc313_mux_register_muxes(struct device *dev,
115 struct regmap *regmap, const struct msc313_muxes_data *muxes_data,
116 int (*fill_clk_parent_data)(struct clk_parent_data*, void*, const void*, const struct msc313_muxes*, unsigned int, unsigned int), void *data)
117 {
118 const struct msc313_mux_data *mux_data = muxes_data->muxes;
119 struct clk_init_data mux_init = {
120 .ops = &msc313_mux_mux_ops,
121 };
122 struct clk_init_data deglitch_init = {
123 .ops = &msc313_mux_deglitch_ops,
124 };
125 struct clk_parent_data *dynamic_parent_data = NULL;
126 struct msc313_muxes *muxes;
127 struct msc313_mux *mux;
128 struct clk_hw *clk_hw;
129 int i, ret, mux_parent;
130
131 /*
132 * If using the dynamic clk_parent_data mode you have to have both
133 * a callback and data.
134 */
135 if ((fill_clk_parent_data && !data) || (!fill_clk_parent_data && data))
136 return ERR_PTR(-EINVAL);
137
138 muxes = devm_kzalloc(dev, struct_size(muxes, muxes, muxes_data->num_muxes), GFP_KERNEL);
139 if (!muxes)
140 return ERR_PTR(-ENOMEM);
141
142 muxes->muxes_data = muxes_data;
143 mux = muxes->muxes;
144
145 for (i = 0; i < muxes_data->num_muxes; i++, mux++, mux_data++) {
> 146 struct reg_field gate_field = REG_FIELD(mux_data->offset,
147 mux_data->gate_shift, mux_data->gate_shift);
> 148 struct reg_field mux_field = REG_FIELD(mux_data->offset,
149 mux_data->mux_shift, mux_data->mux_shift + (mux_data->mux_width - 1));
> 150 struct reg_field deglitch_field = REG_FIELD(mux_data->offset,
151 mux_data->deglitch_shift, mux_data->deglitch_shift);
152
153 if(!mux_data->name)
154 continue;
155
156 if (mux_data->gate_shift != -1) {
> 157 mux->gate = devm_regmap_field_alloc(dev, regmap, gate_field);

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx

Attachment: .config.gz
Description: application/gzip