Hi Guenter, [auto build test ERROR on v4.5-rc1] [also build test ERROR on next-20160125] [if your patch is applied to the wrong git tree, please drop us a note to help improving the system] url: https://github.com/0day-ci/linux/commits/Guenter-Roeck/watchdog-gpio-Convert-to-use-infrastructure-triggered-keepalives/20160126-231612 config: i386-randconfig-x005-01261041 (attached as .config) reproduce: # save the attached .config to linux build tree make ARCH=i386 All errors (new ones prefixed by >>): drivers/watchdog/gpio_wdt.c: In function 'gpio_wdt_start': >> drivers/watchdog/gpio_wdt.c:72:10: error: 'WDOG_HW_RUNNING' undeclared (first use in this function) set_bit(WDOG_HW_RUNNING, &wdd->status); ^ drivers/watchdog/gpio_wdt.c:72:10: note: each undeclared identifier is reported only once for each function it appears in drivers/watchdog/gpio_wdt.c: In function 'gpio_wdt_stop': drivers/watchdog/gpio_wdt.c:83:13: error: 'WDOG_HW_RUNNING' undeclared (first use in this function) clear_bit(WDOG_HW_RUNNING, &wdd->status); ^ drivers/watchdog/gpio_wdt.c: In function 'gpio_wdt_probe': >> drivers/watchdog/gpio_wdt.c:155:11: error: 'struct watchdog_device' has no member named 'max_hw_timeout_ms' priv->wdd.max_hw_timeout_ms = hw_margin; ^ vim +/WDOG_HW_RUNNING +72 drivers/watchdog/gpio_wdt.c 66 { 67 struct gpio_wdt_priv *priv = watchdog_get_drvdata(wdd); 68 69 priv->state = priv->active_low; 70 gpio_direction_output(priv->gpio, priv->state); 71 > 72 set_bit(WDOG_HW_RUNNING, &wdd->status); 73 74 return gpio_wdt_ping(wdd); 75 } 76 77 static int gpio_wdt_stop(struct watchdog_device *wdd) 78 { 79 struct gpio_wdt_priv *priv = watchdog_get_drvdata(wdd); 80 81 if (!priv->always_running) { 82 gpio_wdt_disable(priv); 83 clear_bit(WDOG_HW_RUNNING, &wdd->status); 84 } 85 86 return 0; 87 } 88 89 static const struct watchdog_info gpio_wdt_ident = { 90 .options = WDIOF_MAGICCLOSE | WDIOF_KEEPALIVEPING | 91 WDIOF_SETTIMEOUT, 92 .identity = "GPIO Watchdog", 93 }; 94 95 static const struct watchdog_ops gpio_wdt_ops = { 96 .owner = THIS_MODULE, 97 .start = gpio_wdt_start, 98 .stop = gpio_wdt_stop, 99 .ping = gpio_wdt_ping, 100 }; 101 102 static int gpio_wdt_probe(struct platform_device *pdev) 103 { 104 struct gpio_wdt_priv *priv; 105 enum of_gpio_flags flags; 106 unsigned int hw_margin; 107 unsigned long f = 0; 108 const char *algo; 109 int ret; 110 111 priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL); 112 if (!priv) 113 return -ENOMEM; 114 115 priv->gpio = of_get_gpio_flags(pdev->dev.of_node, 0, &flags); 116 if (!gpio_is_valid(priv->gpio)) 117 return priv->gpio; 118 119 priv->active_low = flags & OF_GPIO_ACTIVE_LOW; 120 121 ret = of_property_read_string(pdev->dev.of_node, "hw_algo", &algo); 122 if (ret) 123 return ret; 124 if (!strcmp(algo, "toggle")) { 125 priv->hw_algo = HW_ALGO_TOGGLE; 126 f = GPIOF_IN; 127 } else if (!strcmp(algo, "level")) { 128 priv->hw_algo = HW_ALGO_LEVEL; 129 f = priv->active_low ? GPIOF_OUT_INIT_HIGH : GPIOF_OUT_INIT_LOW; 130 } else { 131 return -EINVAL; 132 } 133 134 ret = devm_gpio_request_one(&pdev->dev, priv->gpio, f, 135 dev_name(&pdev->dev)); 136 if (ret) 137 return ret; 138 139 ret = of_property_read_u32(pdev->dev.of_node, 140 "hw_margin_ms", &hw_margin); 141 if (ret) 142 return ret; 143 /* Disallow values lower than 2 and higher than 65535 ms */ 144 if (hw_margin < 2 || hw_margin > 65535) 145 return -EINVAL; 146 147 priv->always_running = of_property_read_bool(pdev->dev.of_node, 148 "always-running"); 149 150 watchdog_set_drvdata(&priv->wdd, priv); 151 152 priv->wdd.info = &gpio_wdt_ident; 153 priv->wdd.ops = &gpio_wdt_ops; 154 priv->wdd.min_timeout = SOFT_TIMEOUT_MIN; > 155 priv->wdd.max_hw_timeout_ms = hw_margin; 156 priv->wdd.parent = &pdev->dev; 157 158 if (watchdog_init_timeout(&priv->wdd, 0, &pdev->dev) < 0) --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation
Attachment:
.config.gz
Description: Binary data