[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <202601252202.qioPfCgA-lkp@intel.com>
Date: Sun, 25 Jan 2026 22:56:35 +0800
From: kernel test robot <lkp@...el.com>
To: Mingyou Chen <qby140326@...il.com>, hansg@...nel.org,
ilpo.jarvinen@...ux.intel.com
Cc: oe-kbuild-all@...ts.linux.dev, platform-driver-x86@...r.kernel.org,
linux-kernel@...r.kernel.org, cryolitia.pukngae@...ux.dev,
Mingyou Chen <qby140326@...il.com>
Subject: Re: [PATCH v4] platform/x86: tongfang-mifs-wmi: Add new Tongfang
MIFS WMI driver
Hi Mingyou,
kernel test robot noticed the following build errors:
[auto build test ERROR on linus/master]
[also build test ERROR on v6.19-rc6 next-20260123]
[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/Mingyou-Chen/platform-x86-tongfang-mifs-wmi-Add-new-Tongfang-MIFS-WMI-driver/20260125-174727
base: linus/master
patch link: https://lore.kernel.org/r/20260125094422.6405-1-qby140326%40gmail.com
patch subject: [PATCH v4] platform/x86: tongfang-mifs-wmi: Add new Tongfang MIFS WMI driver
config: i386-allmodconfig (https://download.01.org/0day-ci/archive/20260125/202601252202.qioPfCgA-lkp@intel.com/config)
compiler: gcc-14 (Debian 14.2.0-19) 14.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260125/202601252202.qioPfCgA-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@...el.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202601252202.qioPfCgA-lkp@intel.com/
All error/warnings (new ones prefixed by >>):
drivers/platform/x86/tongfang-mifs-wmi.c: In function 'tongfang_mifs_wmi_call':
>> drivers/platform/x86/tongfang-mifs-wmi.c:143:27: error: storage size of 'in_buf' isn't known
143 | struct wmi_buffer in_buf, out_buf;
| ^~~~~~
>> drivers/platform/x86/tongfang-mifs-wmi.c:143:35: error: storage size of 'out_buf' isn't known
143 | struct wmi_buffer in_buf, out_buf;
| ^~~~~~~
>> drivers/platform/x86/tongfang-mifs-wmi.c:156:15: error: implicit declaration of function 'wmidev_invoke_method'; did you mean 'wmidev_evaluate_method'? [-Wimplicit-function-declaration]
156 | ret = wmidev_invoke_method(data->wdev, 0, 1, &in_buf,
| ^~~~~~~~~~~~~~~~~~~~
| wmidev_evaluate_method
>> drivers/platform/x86/tongfang-mifs-wmi.c:143:35: warning: unused variable 'out_buf' [-Wunused-variable]
143 | struct wmi_buffer in_buf, out_buf;
| ^~~~~~~
>> drivers/platform/x86/tongfang-mifs-wmi.c:143:27: warning: unused variable 'in_buf' [-Wunused-variable]
143 | struct wmi_buffer in_buf, out_buf;
| ^~~~~~
drivers/platform/x86/tongfang-mifs-wmi.c: In function 'laptop_profile_set':
>> drivers/platform/x86/tongfang-mifs-wmi.c:240:21: warning: this statement may fall through [-Wimplicit-fallthrough=]
240 | val = WMI_PP_PERFORMANCE;
| ~~~~^~~~~~~~~~~~~~~~~~~~
drivers/platform/x86/tongfang-mifs-wmi.c:241:9: note: here
241 | case PLATFORM_PROFILE_PERFORMANCE:
| ^~~~
vim +143 drivers/platform/x86/tongfang-mifs-wmi.c
138
139 static int tongfang_mifs_wmi_call(struct tongfang_mifs_wmi_data *data,
140 const struct tongfang_mifs_input *input,
141 struct tongfang_mifs_output *output)
142 {
> 143 struct wmi_buffer in_buf, out_buf;
144 int ret;
145
146 guard(mutex)(&data->lock);
147
148 in_buf.length = sizeof(*input);
149 in_buf.data = (void *)input;
150
151 if (output) {
152 out_buf.length = sizeof(*output);
153 out_buf.data = output;
154 }
155
> 156 ret = wmidev_invoke_method(data->wdev, 0, 1, &in_buf,
157 output ? &out_buf : NULL);
158
159 return ret;
160 }
161
162 static bool is_ac_online(void)
163 {
164 struct power_supply *psy;
165 union power_supply_propval val;
166 bool online = false;
167
168 psy = power_supply_get_by_name("ADP1");
169 if (!psy)
170 return false;
171
172 if (!power_supply_get_property(psy, POWER_SUPPLY_PROP_ONLINE, &val))
173 online = (val.intval == 1);
174
175 power_supply_put(psy);
176 return online;
177 }
178
179 static int laptop_profile_get(struct device *dev,
180 enum platform_profile_option *profile)
181 {
182 struct tongfang_mifs_wmi_data *data = dev_get_drvdata(dev);
183 struct tongfang_mifs_input input = {
184 .reserved1 = 0,
185 .operation = WMI_METHOD_GET,
186 .reserved2 = 0,
187 .function = WMI_FN_SYSTEM_PER_MODE,
188 };
189 struct tongfang_mifs_output result;
190 int ret;
191
192 ret = tongfang_mifs_wmi_call(data, &input, &result);
193
194 if (ret)
195 return ret;
196
197 switch (result.data[0]) {
198 case WMI_PP_BALANCED:
199 *profile = PLATFORM_PROFILE_BALANCED;
200 break;
201 case WMI_PP_PERFORMANCE:
202 *profile = PLATFORM_PROFILE_BALANCED_PERFORMANCE;
203 break;
204 case WMI_PP_QUIET:
205 *profile = PLATFORM_PROFILE_LOW_POWER;
206 break;
207 case WMI_PP_FULL_SPEED:
208 *profile = PLATFORM_PROFILE_PERFORMANCE;
209 break; /* Fullspeed */
210 default:
211 return -EINVAL;
212 }
213 return 0;
214 }
215
216
217 static int laptop_profile_set(struct device *dev,
218 enum platform_profile_option profile)
219 {
220 struct tongfang_mifs_wmi_data *data = dev_get_drvdata(dev);
221 struct tongfang_mifs_input input = {
222 .reserved1 = 0,
223 .operation = WMI_METHOD_SET,
224 .reserved2 = 0,
225 .function = WMI_FN_SYSTEM_PER_MODE,
226 };
227 struct tongfang_mifs_output ac_type_res;
228
229 u8 val;
230 int ret;
231
232 switch (profile) {
233 case PLATFORM_PROFILE_LOW_POWER:
234 val = WMI_PP_QUIET;
235 break;
236 case PLATFORM_PROFILE_BALANCED:
237 val = WMI_PP_BALANCED;
238 break;
239 case PLATFORM_PROFILE_BALANCED_PERFORMANCE:
> 240 val = WMI_PP_PERFORMANCE;
241 case PLATFORM_PROFILE_PERFORMANCE:
242 /* Check if Typec power is not connected for full-speed/performance mode */
243 input.operation = WMI_METHOD_GET;
244 input.function = WMI_FN_SYSTEM_AC_TYPE;
245 ret = tongfang_mifs_wmi_call(data, &input, &ac_type_res);
246 if (ret)
247 return ret;
248
249 /* Full-speed/performance mode requires DC power (not USB-C) */
250 if (ac_type_res.data[0] == WMI_SYSTEM_AC_TYPEC || !is_ac_online())
251 return -EOPNOTSUPP;
252
253 if (!val)
254 val = WMI_PP_FULL_SPEED;
255
256 /* Restore operation and function for the actual SET call */
257 input.operation = WMI_METHOD_SET;
258 input.function = WMI_FN_SYSTEM_PER_MODE;
259 break;
260 default:
261 return -EOPNOTSUPP;
262 }
263
264 input.payload[0] = val;
265
266 ret = tongfang_mifs_wmi_call(data, &input, NULL);
267 return ret;
268 }
269
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
Powered by blists - more mailing lists