[PATCH v3 1/3] PCI: of: Match pci devices or drivers against OF DT nodes
kernel test robot
lkp at intel.com
Fri Feb 3 00:23:52 PST 2023
Hi,
Thank you for the patch! Yet something to improve:
[auto build test ERROR on helgaas-pci/next]
[also build test ERROR on helgaas-pci/for-linus wireless-next/main wireless/main linus/master v6.2-rc6 next-20230203]
[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/equu-openmail-cc/wifi-ath9k-stop-loading-incompatible-DT-cal-data/20230202-165536
base: https://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci.git next
patch link: https://lore.kernel.org/r/20230202075524.2911058-2-equu%40openmail.cc
patch subject: [PATCH v3 1/3] PCI: of: Match pci devices or drivers against OF DT nodes
config: i386-randconfig-a005 (https://download.01.org/0day-ci/archive/20230203/202302031611.JepssFdR-lkp@intel.com/config)
compiler: gcc-11 (Debian 11.3.0-8) 11.3.0
reproduce (this is a W=1 build):
# https://github.com/intel-lab-lkp/linux/commit/1c1bc10b9cc6f7a71ba1fb7bdc505195a2c3e759
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review equu-openmail-cc/wifi-ath9k-stop-loading-incompatible-DT-cal-data/20230202-165536
git checkout 1c1bc10b9cc6f7a71ba1fb7bdc505195a2c3e759
# save the config file
mkdir build_dir && cp config build_dir/.config
make W=1 O=build_dir ARCH=i386 olddefconfig
make W=1 O=build_dir ARCH=i386 SHELL=/bin/bash drivers/
If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp at intel.com>
All errors (new ones prefixed by >>):
drivers/pci/of.c: In function 'of_pci_compat_to_device_id':
>> drivers/pci/of.c:296:25: error: expected ';' before '}' token
296 | return 0
| ^
| ;
297 | }
| ~
drivers/pci/of.c:319:25: error: expected ';' before '}' token
319 | return 0
| ^
| ;
320 | }
| ~
drivers/pci/of.c:330:25: error: expected ';' before '}' token
330 | return 0
| ^
| ;
331 | }
| ~
>> drivers/pci/of.c:346:25: error: expected ';' before 'compat'
346 | return 0
| ^
| ;
347 |
348 | compat++;
| ~~~~~~
vim +296 drivers/pci/of.c
255
256 /**
257 * of_pci_compat_to_device_id() - Decode an OF compatibility string into a
258 * pci_device_id structure.
259 * @compat: the compatibility string to decode, could be NULL
260 * @id: pointer to a struct pci_device_id, to store the result
261 * @rev: pointer to output revision info, PCI_ANY_ID if no revision in @compat
262 * @req_pcie: pointer to output whether @compat mandates PCIe compatibility
263 *
264 * returns 0 when success, -EINVAL when failed.
265 */
266 int of_pci_compat_to_device_id(const char *compat, struct pci_device_id *id,
267 u32 *rev, u32 *req_pcie)
268 {
269 union {
270 u8 u8;
271 u16 u16;
272 u32 u32;
273 } res = {0};
274 *req_pcie = 0;
275 *rev = PCI_ANY_ID;
276 if (!compat || strncasecmp(compat, "pci", 3) != 0)
277 return -EINVAL;
278 compat += 3;
279
280 if (strncasecmp(compat, "class,", 6) == 0) {
281 /* pciclass,CCSSPP */
282 compat += 6;
283 if ((strlen(compat) < 4)
284 || kstrtouint(compat, 16, &id->class))
285 return -EINVAL;
286 if (id->class < 0x10000) {
287 id->class <<= 8;
288 id->class_mask = 0xFFFF00;
289 } else {
290 id->class_mask = PCI_ANY_ID;
291 }
292 id->vendor = PCI_ANY_ID;
293 id->device = PCI_ANY_ID;
294 id->subvendor = PCI_ANY_ID;
295 id->subdevice = PCI_ANY_ID;
> 296 return 0
297 }
298
299 if (strncasecmp(compat, "ex", 2) == 0) {
300 /* pciex... */
301 *req_pcie = 1;
302 compat += 2;
303 }
304 if (kstrtou16(compat, 16, &res.u16))
305 return -EINVAL;
306 id->vendor = res.u16;
307 compat = strchr(compat, ',');
308 if (!compat)
309 return -EINVAL;
310 compat++;
311 if (kstrtou16(compat, 16, &res.u16))
312 return -EINVAL;
313 id->device = res.u16;
314 compat = strchr(compat, '.');
315 if (compat == NULL) {
316 /* pciVVVV,DDDD */
317 id->subvendor = PCI_ANY_ID;
318 id->subdevice = PCI_ANY_ID;
319 return 0
320 }
321
322 compat++;
323 if (strlen(compat) == 2) {
324 /* pciVVVV,DDDD.RR */
325 if (kstrtou8(compat, 16, &res.u8))
326 return -EINVAL;
327 *rev = res.u8;
328 id->subvendor = PCI_ANY_ID;
329 id->subdevice = PCI_ANY_ID;
330 return 0
331 }
332
333 if (kstrtou16(compat, 16, &res.u16))
334 return -EINVAL;
335 id->subvendor = res.u16;
336 compat = strchr(compat, '.');
337 if (!compat)
338 return -EINVAL;
339 compat++;
340 if (kstrtou16(compat, 16, &res.u16))
341 return -EINVAL;
342 id->subdevice = res.u16;
343 compat = strchr(compat, '.');
344 if (compat == NULL)
345 /* pciVVVV,DDDD.SSSS.ssss */
> 346 return 0
347
348 compat++;
349 if (strlen(compat) == 2) {
350 /* pciVVVV,DDDD.SSSS.ssss.RR */
351 if (kstrtou8(compat, 16, &res.u8))
352 return -EINVAL;
353 *rev = res.u8;
354 }
355 return 0;
356 }
357
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests
More information about the ath10k
mailing list