Hi Baolin,

[auto build test ERROR on v4.9-rc8]
[cannot apply to balbi-usb/next usb/usb-testing battery/master next-20170220]
[if your patch is applied to the wrong git tree, please drop us a note to help 
improve the system]

url:    
https://github.com/0day-ci/linux/commits/Baolin-Wang/Introduce-usb-charger-framework-to-deal-with-the-usb-gadget-power-negotation/20170220-173051
config: i386-randconfig-x017-201708 (attached as .config)
compiler: gcc-6 (Debian 6.2.0-3) 6.2.0 20160901
reproduce:
        # save the attached .config to linux build tree
        make ARCH=i386 

All errors (new ones prefixed by >>):

   In file included from drivers/power/supply/wm831x_power.c:16:0:
   include/linux/usb/charger.h: In function 'usb_charger_get_state':
   include/linux/usb/charger.h:151:9: error: 'USB_CHARGER_REMOVE' undeclared 
(first use in this function)
     return USB_CHARGER_REMOVE;
            ^~~~~~~~~~~~~~~~~~
   include/linux/usb/charger.h:151:9: note: each undeclared identifier is 
reported only once for each function it appears in
   drivers/power/supply/wm831x_power.c: In function 'wm831x_usb_limit_change':
>> drivers/power/supply/wm831x_power.c:151:2: error: 'best' undeclared (first 
>> use in this function)
     best = 0;
     ^~~~
>> drivers/power/supply/wm831x_power.c:152:7: error: 'i' undeclared (first use 
>> in this function)
     for (i = 0; i < ARRAY_SIZE(wm831x_usb_limits); i++) {
          ^

vim +/best +151 drivers/power/supply/wm831x_power.c

    10  
    11  #include <linux/module.h>
    12  #include <linux/err.h>
    13  #include <linux/platform_device.h>
    14  #include <linux/power_supply.h>
    15  #include <linux/slab.h>
  > 16  #include <linux/usb/charger.h>
    17  
    18  #include <linux/mfd/wm831x/core.h>
    19  #include <linux/mfd/wm831x/auxadc.h>
    20  #include <linux/mfd/wm831x/pmu.h>
    21  #include <linux/mfd/wm831x/pdata.h>
    22  
    23  struct wm831x_power {
    24          struct wm831x *wm831x;
    25          struct power_supply *wall;
    26          struct power_supply *usb;
    27          struct power_supply *battery;
    28          struct power_supply_desc wall_desc;
    29          struct power_supply_desc usb_desc;
    30          struct power_supply_desc battery_desc;
    31          char wall_name[20];
    32          char usb_name[20];
    33          char battery_name[20];
    34          bool have_battery;
    35          struct usb_charger *usb_charger;
    36          struct notifier_block usb_notify;
    37  };
    38  
    39  static int wm831x_power_check_online(struct wm831x *wm831x, int supply,
    40                                       union power_supply_propval *val)
    41  {
    42          int ret;
    43  
    44          ret = wm831x_reg_read(wm831x, WM831X_SYSTEM_STATUS);
    45          if (ret < 0)
    46                  return ret;
    47  
    48          if (ret & supply)
    49                  val->intval = 1;
    50          else
    51                  val->intval = 0;
    52  
    53          return 0;
    54  }
    55  
    56  static int wm831x_power_read_voltage(struct wm831x *wm831x,
    57                                       enum wm831x_auxadc src,
    58                                       union power_supply_propval *val)
    59  {
    60          int ret;
    61  
    62          ret = wm831x_auxadc_read_uv(wm831x, src);
    63          if (ret >= 0)
    64                  val->intval = ret;
    65  
    66          return ret;
    67  }
    68  
    69  /*********************************************************************
    70   *              WALL Power
    71   *********************************************************************/
    72  static int wm831x_wall_get_prop(struct power_supply *psy,
    73                                  enum power_supply_property psp,
    74                                  union power_supply_propval *val)
    75  {
    76          struct wm831x_power *wm831x_power = 
dev_get_drvdata(psy->dev.parent);
    77          struct wm831x *wm831x = wm831x_power->wm831x;
    78          int ret = 0;
    79  
    80          switch (psp) {
    81          case POWER_SUPPLY_PROP_ONLINE:
    82                  ret = wm831x_power_check_online(wm831x, 
WM831X_PWR_WALL, val);
    83                  break;
    84          case POWER_SUPPLY_PROP_VOLTAGE_NOW:
    85                  ret = wm831x_power_read_voltage(wm831x, 
WM831X_AUX_WALL, val);
    86                  break;
    87          default:
    88                  ret = -EINVAL;
    89                  break;
    90          }
    91  
    92          return ret;
    93  }
    94  
    95  static enum power_supply_property wm831x_wall_props[] = {
    96          POWER_SUPPLY_PROP_ONLINE,
    97          POWER_SUPPLY_PROP_VOLTAGE_NOW,
    98  };
    99  
   100  /*********************************************************************
   101   *              USB Power
   102   *********************************************************************/
   103  static int wm831x_usb_get_prop(struct power_supply *psy,
   104                                 enum power_supply_property psp,
   105                                 union power_supply_propval *val)
   106  {
   107          struct wm831x_power *wm831x_power = 
dev_get_drvdata(psy->dev.parent);
   108          struct wm831x *wm831x = wm831x_power->wm831x;
   109          int ret = 0;
   110  
   111          switch (psp) {
   112          case POWER_SUPPLY_PROP_ONLINE:
   113                  ret = wm831x_power_check_online(wm831x, WM831X_PWR_USB, 
val);
   114                  break;
   115          case POWER_SUPPLY_PROP_VOLTAGE_NOW:
   116                  ret = wm831x_power_read_voltage(wm831x, WM831X_AUX_USB, 
val);
   117                  break;
   118          default:
   119                  ret = -EINVAL;
   120                  break;
   121          }
   122  
   123          return ret;
   124  }
   125  
   126  static enum power_supply_property wm831x_usb_props[] = {
   127          POWER_SUPPLY_PROP_ONLINE,
   128          POWER_SUPPLY_PROP_VOLTAGE_NOW,
   129  };
   130  
   131  /* In milliamps */
   132  static const unsigned int wm831x_usb_limits[] = {
   133          0,
   134          2,
   135          100,
   136          500,
   137          900,
   138          1500,
   139          1800,
   140          550,
   141  };
   142  
   143  static int wm831x_usb_limit_change(struct notifier_block *nb,
   144                                     unsigned long limit, void *data)
   145  {
   146          struct wm831x_power *wm831x_power = container_of(nb,
   147                                                           struct 
wm831x_power,
   148                                                           usb_notify);
   149  
   150          /* Find the highest supported limit */
 > 151          best = 0;
 > 152          for (i = 0; i < ARRAY_SIZE(wm831x_usb_limits); i++) {
   153                  if (limit >= wm831x_usb_limits[i] &&
   154                      wm831x_usb_limits[best] < wm831x_usb_limits[i])
   155                          best = i;

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

Attachment: .config.gz
Description: application/gzip

Reply via email to