Re: [RFT PATCH] watchdog: gpio: Convert to use infrastructure triggered keepalives

From: kbuild test robot
Date: Tue Jan 26 2016 - 10:42:27 EST


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