Messages in this thread | | | Date | Tue, 13 Feb 2018 09:30:13 +0000 | From | Lee Jones <> | Subject | Re: drivers/watchdog/rave-sp-wdt.c:278: undefined reference to `nvmem_cell_get' |
| |
On Tue, 13 Feb 2018, kbuild test robot wrote:
> tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master > head: 178e834c47b0d01352c48730235aae69898fbc02 > commit: c3bb333457218ca4ed9553be47c0f567b4ef8a38 watchdog: Add RAVE SP watchdog driver > date: 5 weeks ago > config: x86_64-randconfig-u0-02131401 (attached as .config) > compiler: gcc-5 (Debian 5.5.0-3) 5.4.1 20171010 > reproduce: > git checkout c3bb333457218ca4ed9553be47c0f567b4ef8a38 > # save the attached .config to linux build tree > make ARCH=x86_64 > > All errors (new ones prefixed by >>): > > drivers/watchdog/rave-sp-wdt.o: In function `rave_sp_wdt_probe': > >> drivers/watchdog/rave-sp-wdt.c:278: undefined reference to `nvmem_cell_get' > >> drivers/watchdog/rave-sp-wdt.c:281: undefined reference to `nvmem_cell_read' > >> drivers/watchdog/rave-sp-wdt.c:287: undefined reference to `nvmem_cell_put' > make[2]: *** [vmlinux] Error 1
Looks like the RAVE Watchdog driver should select NVMEM?
> vim +278 drivers/watchdog/rave-sp-wdt.c > > 252 > 253 static int rave_sp_wdt_probe(struct platform_device *pdev) > 254 { > 255 struct device *dev = &pdev->dev; > 256 struct watchdog_device *wdd; > 257 struct rave_sp_wdt *sp_wd; > 258 struct nvmem_cell *cell; > 259 __le16 timeout = 0; > 260 int ret; > 261 > 262 sp_wd = devm_kzalloc(dev, sizeof(*sp_wd), GFP_KERNEL); > 263 if (!sp_wd) > 264 return -ENOMEM; > 265 > 266 sp_wd->variant = of_device_get_match_data(dev); > 267 sp_wd->sp = dev_get_drvdata(dev->parent); > 268 > 269 wdd = &sp_wd->wdd; > 270 wdd->parent = dev; > 271 wdd->info = &rave_sp_wdt_info; > 272 wdd->ops = &rave_sp_wdt_ops; > 273 wdd->min_timeout = sp_wd->variant->min_timeout; > 274 wdd->max_timeout = sp_wd->variant->max_timeout; > 275 wdd->status = WATCHDOG_NOWAYOUT_INIT_STATUS; > 276 wdd->timeout = 60; > 277 > > 278 cell = nvmem_cell_get(dev, "wdt-timeout"); > 279 if (!IS_ERR(cell)) { > 280 size_t len; > > 281 void *value = nvmem_cell_read(cell, &len); > 282 > 283 if (!IS_ERR(value)) { > 284 memcpy(&timeout, value, min(len, sizeof(timeout))); > 285 kfree(value); > 286 } > > 287 nvmem_cell_put(cell); > 288 } > 289 watchdog_init_timeout(wdd, le16_to_cpu(timeout), dev); > 290 watchdog_set_restart_priority(wdd, 255); > 291 watchdog_stop_on_unregister(wdd); > 292 > 293 sp_wd->reboot_notifier.notifier_call = rave_sp_wdt_reboot_notifier; > 294 ret = devm_register_reboot_notifier(dev, &sp_wd->reboot_notifier); > 295 if (ret) { > 296 dev_err(dev, "Failed to register reboot notifier\n"); > 297 return ret; > 298 } > 299 > 300 /* > 301 * We don't know if watchdog is running now. To be sure, let's > 302 * start it and depend on watchdog core to ping it > 303 */ > 304 wdd->max_hw_heartbeat_ms = wdd->max_timeout * 1000; > 305 ret = rave_sp_wdt_start(wdd); > 306 if (ret) { > 307 dev_err(dev, "Watchdog didn't start\n"); > 308 return ret; > 309 } > 310 > 311 ret = devm_watchdog_register_device(dev, wdd); > 312 if (ret) { > 313 dev_err(dev, "Failed to register watchdog device\n"); > 314 rave_sp_wdt_stop(wdd); > 315 return ret; > 316 } > 317 > 318 return 0; > 319 } > 320 > > --- > 0-DAY kernel test infrastructure Open Source Technology Center > https://lists.01.org/pipermail/kbuild-all Intel Corporation
-- Lee Jones Linaro Services Technical Lead Linaro.org │ Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog
| |