* [chenxing:mstar_v6_5_reorder 6/700] drivers/clk/mstar/clk-msc313-mux.c:27:9: error: implicit declaration of function 'regmap_field_read'; did you mean 'regmap_field_write'?
@ 2026-07-29 10:51 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2026-07-29 10:51 UTC (permalink / raw)
To: Daniel Palmer; +Cc: oe-kbuild-all
tree: https://github.com/linux-chenxing/linux.git mstar_v6_5_reorder
head: 1a5c60e65ea399670a5384b869c4958338af2799
commit: b4e750e9c28b84519ef454234db2feb4664b72af [6/700] clk: mstar: msc313 clock mux base
config: nios2-allnoconfig (https://download.01.org/0day-ci/archive/20260729/202607291817.T3BHMhL0-lkp@intel.com/config)
compiler: nios2-linux-gcc (GCC) 11.5.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260729/202607291817.T3BHMhL0-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/202607291817.T3BHMhL0-lkp@intel.com/
All error/warnings (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:9: 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:163:30: error: variable 'gate_field' has initializer but incomplete type
163 | const struct reg_field gate_field = REG_FIELD(mux_data->offset,
| ^~~~~~~~~
>> drivers/clk/mstar/clk-msc313-mux.c:163:53: error: implicit declaration of function 'REG_FIELD' [-Werror=implicit-function-declaration]
163 | const struct reg_field gate_field = REG_FIELD(mux_data->offset,
| ^~~~~~~~~
>> drivers/clk/mstar/clk-msc313-mux.c:163:40: error: storage size of 'gate_field' isn't known
163 | const struct reg_field gate_field = REG_FIELD(mux_data->offset,
| ^~~~~~~~~~
>> drivers/clk/mstar/clk-msc313-mux.c:165:30: error: variable 'mux_field' has initializer but incomplete type
165 | const struct reg_field mux_field = REG_FIELD(mux_data->offset,
| ^~~~~~~~~
>> drivers/clk/mstar/clk-msc313-mux.c:165:40: error: storage size of 'mux_field' isn't known
165 | const struct reg_field mux_field = REG_FIELD(mux_data->offset,
| ^~~~~~~~~
>> drivers/clk/mstar/clk-msc313-mux.c:167:30: error: variable 'deglitch_field' has initializer but incomplete type
167 | const struct reg_field deglitch_field = REG_FIELD(mux_data->offset,
| ^~~~~~~~~
>> drivers/clk/mstar/clk-msc313-mux.c:167:40: error: storage size of 'deglitch_field' isn't known
167 | const struct reg_field deglitch_field = REG_FIELD(mux_data->offset,
| ^~~~~~~~~~~~~~
>> drivers/clk/mstar/clk-msc313-mux.c:174:37: error: implicit declaration of function 'devm_regmap_field_alloc' [-Werror=implicit-function-declaration]
174 | mux->gate = devm_regmap_field_alloc(dev, regmap, gate_field);
| ^~~~~~~~~~~~~~~~~~~~~~~
>> drivers/clk/mstar/clk-msc313-mux.c:167:40: warning: unused variable 'deglitch_field' [-Wunused-variable]
167 | const struct reg_field deglitch_field = REG_FIELD(mux_data->offset,
| ^~~~~~~~~~~~~~
>> drivers/clk/mstar/clk-msc313-mux.c:165:40: warning: unused variable 'mux_field' [-Wunused-variable]
165 | const struct reg_field mux_field = REG_FIELD(mux_data->offset,
| ^~~~~~~~~
>> drivers/clk/mstar/clk-msc313-mux.c:163:40: warning: unused variable 'gate_field' [-Wunused-variable]
163 | const 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 int msc313_mux_mux_determine_rate(struct clk_hw *hw, struct clk_rate_request *req)
33 {
34 struct msc313_mux *mux = mux_to_mux(hw);
35
36 return clk_mux_determine_rate_flags(hw, req, clk_hw_get_flags(&mux->mux_hw));
37 }
38
39 static const struct clk_ops msc313_mux_mux_ops = {
40 .set_parent = msc313_mux_mux_set_parent,
41 .get_parent = msc313_mux_mux_get_parent,
42 .determine_rate = msc313_mux_mux_determine_rate,
43 };
44
45 static int msc313_mux_deglitch_enable(struct clk_hw *hw)
46 {
47 struct msc313_mux *mux = deglitch_to_mux(hw);
48
49 if (mux->gate)
50 regmap_field_write(mux->gate, 0);
51
52 return 0;
53 }
54
55 static void msc313_mux_deglitch_disable(struct clk_hw *hw)
56 {
57 struct msc313_mux *mux = deglitch_to_mux(hw);
58
59 if (mux->gate)
60 regmap_field_write(mux->gate, 1);
61 }
62
63 static int msc313_mux_deglitch_is_enabled(struct clk_hw *hw)
64 {
65 struct msc313_mux *mux = deglitch_to_mux(hw);
66 unsigned int notgated;
67
68 if (mux->gate) {
69 regmap_field_read(mux->gate, ¬gated);
70 return !notgated;
71 }
72
73 return 1;
74 }
75
76 static int msc313_mux_deglitch_set_parent(struct clk_hw *hw, u8 index)
77 {
78 struct msc313_mux *mux = deglitch_to_mux(hw);
79
80 if (!mux->deglitch)
81 return -ENOTSUPP;
82
83 return regmap_field_write(mux->deglitch, index);
84 }
85
86 static u8 msc313_mux_deglitch_get_parent(struct clk_hw *hw)
87 {
88 struct msc313_mux *mux = deglitch_to_mux(hw);
89 unsigned int index = 0;
90
91 if (mux->deglitch) {
92 regmap_field_read(mux->deglitch, &index);
93 }
94
95 return index;
96 }
97
98 static int msc313_mux_deglitch_determine_rate(struct clk_hw *hw,
99 struct clk_rate_request *req)
100 {
101 struct msc313_mux *mux = deglitch_to_mux(hw);
102
103 return clk_mux_determine_rate_flags(hw, req, clk_hw_get_flags(&mux->deglitch_hw));
104 }
105
106 static const struct clk_ops msc313_mux_deglitch_ops = {
107 .enable = msc313_mux_deglitch_enable,
108 .disable = msc313_mux_deglitch_disable,
109 .is_enabled = msc313_mux_deglitch_is_enabled,
110 .set_parent = msc313_mux_deglitch_set_parent,
111 .get_parent = msc313_mux_deglitch_get_parent,
112 .determine_rate = msc313_mux_deglitch_determine_rate,
113 };
114
115 struct clk_hw *msc313_mux_xlate(struct of_phandle_args *clkspec, void *data)
116 {
117 struct msc313_muxes *muxes = data;
118 unsigned int of_idx = clkspec->args[0];
119 unsigned int idx = of_idx / 2;
120
121 /* mux, deglitch, mux, deglitch,.. */
122 if (of_idx >= muxes->muxes_data->num_muxes * 2)
123 return ERR_PTR(-EINVAL);
124
125 if (of_idx % 2)
126 return &muxes->muxes[idx].deglitch_hw;
127
128 return &muxes->muxes[idx].mux_hw;
129 }
130
131 struct msc313_muxes *msc313_mux_register_muxes(struct device *dev,
132 struct regmap *regmap, const struct msc313_muxes_data *muxes_data,
133 int (*fill_clk_parent_data)(struct clk_parent_data*, void*, const void*, const struct msc313_muxes*, unsigned int, unsigned int), void *data)
134 {
135 const struct msc313_mux_data *mux_data = muxes_data->muxes;
136 struct clk_init_data mux_init = {
137 .ops = &msc313_mux_mux_ops,
138 };
139 struct clk_init_data deglitch_init = {
140 .ops = &msc313_mux_deglitch_ops,
141 };
142 struct clk_parent_data *dynamic_parent_data = NULL;
143 struct msc313_muxes *muxes;
144 struct msc313_mux *mux;
145 struct clk_hw *clk_hw;
146 int i, ret, mux_parent;
147
148 /*
149 * If using the dynamic clk_parent_data mode you have to have both
150 * a callback and data.
151 */
152 if ((fill_clk_parent_data && !data) || (!fill_clk_parent_data && data))
153 return ERR_PTR(-EINVAL);
154
155 muxes = devm_kzalloc(dev, struct_size(muxes, muxes, muxes_data->num_muxes), GFP_KERNEL);
156 if (!muxes)
157 return ERR_PTR(-ENOMEM);
158
159 muxes->muxes_data = muxes_data;
160 mux = muxes->muxes;
161
162 for (i = 0; i < muxes_data->num_muxes; i++, mux++, mux_data++) {
> 163 const struct reg_field gate_field = REG_FIELD(mux_data->offset,
164 mux_data->gate_shift, mux_data->gate_shift);
> 165 const struct reg_field mux_field = REG_FIELD(mux_data->offset,
166 mux_data->mux_shift, mux_data->mux_shift + (mux_data->mux_width - 1));
> 167 const struct reg_field deglitch_field = REG_FIELD(mux_data->offset,
168 mux_data->deglitch_shift, mux_data->deglitch_shift);
169
170 if(!mux_data->name)
171 continue;
172
173 if (mux_data->gate_shift != -1) {
> 174 mux->gate = devm_regmap_field_alloc(dev, regmap, gate_field);
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2026-07-29 10:52 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-29 10:51 [chenxing:mstar_v6_5_reorder 6/700] drivers/clk/mstar/clk-msc313-mux.c:27:9: error: implicit declaration of function 'regmap_field_read'; did you mean 'regmap_field_write'? kernel test robot
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.