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

Reply via email to