Hi Chen,

[auto build test WARNING on v4.4-rc8]
[also build test WARNING on next-20160104]
[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/Chen-Feng/Add-Support-for-Hi6220-PMIC-Hi6553-MFD-Core/20160104-203635
config: parisc-allmodconfig (attached as .config)
reproduce:
        wget 
https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross
 -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        make.cross ARCH=parisc 

All warnings (new ones prefixed by >>):

   In file included from include/linux/platform_device.h:14:0,
                    from drivers/mfd/hi655x-pmic.c:19:
   include/linux/device.h:1329:1: warning: data definition has no type or 
storage class
    module_init(__driver##_init); \
    ^
   include/linux/platform_device.h:222:2: note: in expansion of macro 
'module_driver'
     module_driver(__platform_driver, platform_driver_register, \
     ^
>> drivers/mfd/hi655x-pmic.c:156:1: note: in expansion of macro 
>> 'module_platform_driver'
    module_platform_driver(hi655x_pmic_driver);
    ^
   include/linux/device.h:1329:1: error: type defaults to 'int' in declaration 
of 'module_init' [-Werror=implicit-int]
    module_init(__driver##_init); \
    ^
   include/linux/platform_device.h:222:2: note: in expansion of macro 
'module_driver'
     module_driver(__platform_driver, platform_driver_register, \
     ^
>> drivers/mfd/hi655x-pmic.c:156:1: note: in expansion of macro 
>> 'module_platform_driver'
    module_platform_driver(hi655x_pmic_driver);
    ^
   drivers/mfd/hi655x-pmic.c:156:1: warning: parameter names (without types) in 
function declaration
   In file included from include/linux/platform_device.h:14:0,
                    from drivers/mfd/hi655x-pmic.c:19:
   include/linux/device.h:1334:1: warning: data definition has no type or 
storage class
    module_exit(__driver##_exit);
    ^
   include/linux/platform_device.h:222:2: note: in expansion of macro 
'module_driver'
     module_driver(__platform_driver, platform_driver_register, \
     ^
>> drivers/mfd/hi655x-pmic.c:156:1: note: in expansion of macro 
>> 'module_platform_driver'
    module_platform_driver(hi655x_pmic_driver);
    ^
   include/linux/device.h:1334:1: error: type defaults to 'int' in declaration 
of 'module_exit' [-Werror=implicit-int]
    module_exit(__driver##_exit);
    ^
   include/linux/platform_device.h:222:2: note: in expansion of macro 
'module_driver'
     module_driver(__platform_driver, platform_driver_register, \
     ^
>> drivers/mfd/hi655x-pmic.c:156:1: note: in expansion of macro 
>> 'module_platform_driver'
    module_platform_driver(hi655x_pmic_driver);
    ^
   drivers/mfd/hi655x-pmic.c:156:1: warning: parameter names (without types) in 
function declaration
   drivers/mfd/hi655x-pmic.c:158:15: error: expected declaration specifiers or 
'...' before string constant
    MODULE_AUTHOR("Chen Feng <puck.c...@hisilicon.com>");
                  ^
   drivers/mfd/hi655x-pmic.c:159:20: error: expected declaration specifiers or 
'...' before string constant
    MODULE_DESCRIPTION("Hisi hi655x pmic driver");
                       ^
   drivers/mfd/hi655x-pmic.c:160:16: error: expected declaration specifiers or 
'...' before string constant
    MODULE_LICENSE("GPL v2");
                   ^
   In file included from include/linux/platform_device.h:14:0,
                    from drivers/mfd/hi655x-pmic.c:19:
   drivers/mfd/hi655x-pmic.c:156:24: warning: 'hi655x_pmic_driver_init' defined 
but not used [-Wunused-function]
    module_platform_driver(hi655x_pmic_driver);
                           ^
   include/linux/device.h:1325:19: note: in definition of macro 'module_driver'
    static int __init __driver##_init(void) \
                      ^
>> drivers/mfd/hi655x-pmic.c:156:1: note: in expansion of macro 
>> 'module_platform_driver'
    module_platform_driver(hi655x_pmic_driver);
    ^
   drivers/mfd/hi655x-pmic.c:156:24: warning: 'hi655x_pmic_driver_exit' defined 
but not used [-Wunused-function]
    module_platform_driver(hi655x_pmic_driver);
                           ^
   include/linux/device.h:1330:20: note: in definition of macro 'module_driver'
    static void __exit __driver##_exit(void) \
                       ^
>> drivers/mfd/hi655x-pmic.c:156:1: note: in expansion of macro 
>> 'module_platform_driver'
    module_platform_driver(hi655x_pmic_driver);
    ^
   cc1: some warnings being treated as errors

vim +/module_platform_driver +156 drivers/mfd/hi655x-pmic.c

    13  
    14  #include <linux/io.h>
    15  #include <linux/interrupt.h>
    16  #include <linux/init.h>
    17  #include <linux/gpio.h>
    18  #include <linux/of_gpio.h>
  > 19  #include <linux/platform_device.h>
    20  #include <linux/of_platform.h>
    21  #include <linux/mfd/hi655x-pmic.h>
    22  #include <linux/regmap.h>
    23  
    24  static const struct of_device_id of_hi655x_pmic_child_match_tbl[] = {
    25          { .compatible = "hisilicon,hi655x-regulator", },
    26          {},
    27  };
    28  
    29  static const struct of_device_id of_hi655x_pmic_match_tbl[] = {
    30          { .compatible = "hisilicon,hi655x-pmic", },
    31          {},
    32  };
    33  
    34  static const struct regmap_irq hi655x_irqs[] = {
    35          { .reg_offset = 0, .mask = OTMP_D1R_INT },
    36          { .reg_offset = 0, .mask = VSYS_2P5_R_INT },
    37          { .reg_offset = 0, .mask = VSYS_UV_D3R_INT },
    38          { .reg_offset = 0, .mask = VSYS_6P0_D200UR_INT },
    39          { .reg_offset = 0, .mask = PWRON_D4SR_INT },
    40          { .reg_offset = 0, .mask = PWRON_D20F_INT },
    41          { .reg_offset = 0, .mask = PWRON_D20R_INT },
    42          { .reg_offset = 0, .mask = RESERVE_INT },
    43  };
    44  
    45  static const struct regmap_irq_chip hi655x_irq_chip = {
    46          .name = "hi655x-pmic",
    47          .irqs = hi655x_irqs,
    48          .num_regs = 1,
    49          .num_irqs = ARRAY_SIZE(hi655x_irqs),
    50          .status_base = HI655X_IRQ_STAT_BASE,
    51          .mask_base = HI655X_IRQ_MASK_BASE,
    52  };
    53  
    54  static unsigned int hi655x_pmic_get_version(struct hi655x_pmic *pmic)
    55  {
    56          u32 val;
    57  
    58          regmap_read(pmic->regmap,
    59                      HI655X_BUS_ADDR(HI655X_VER_REG), &val);
    60  
    61          return val;
    62  }
    63  
    64  static struct regmap_config hi655x_regmap_config = {
    65          .reg_bits = 32,
    66          .reg_stride = HI655X_STRIDE,
    67          .val_bits = 8,
    68          .max_register = HI655X_BUS_ADDR(0xFFF),
    69  };
    70  
    71  static void hi655x_local_irq_clear(struct regmap *map)
    72  {
    73          int i;
    74  
    75          regmap_write(map, HI655X_ANA_IRQM_BASE, HI655X_IRQ_CLR);
    76          for (i = 0; i < HI655X_IRQ_ARRAY; i++) {
    77                  regmap_write(map, HI655X_IRQ_STAT_BASE + i * 
HI655X_STRIDE,
    78                               HI655X_IRQ_CLR);
    79          }
    80  }
    81  
    82  static int hi655x_pmic_probe(struct platform_device *pdev)
    83  {
    84          int ret;
    85          struct hi655x_pmic *pmic;
    86          struct device *dev = &pdev->dev;
    87          struct device_node *np = dev->of_node;
    88          void __iomem *base;
    89  
    90          pmic = devm_kzalloc(dev, sizeof(*pmic), GFP_KERNEL);
    91          pmic->dev = dev;
    92  
    93          pmic->res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
    94          if (!pmic->res) {
    95                  dev_err(dev, "platform_get_resource err\n");
    96                  return -ENOENT;
    97          }
    98          base = devm_ioremap_resource(dev, pmic->res);
    99          if (!base) {
   100                  dev_err(dev, "cannot map register memory\n");
   101                  return -ENOMEM;
   102          }
   103          pmic->regmap = devm_regmap_init_mmio_clk(dev, NULL, base,
   104                                                   &hi655x_regmap_config);
   105  
   106          pmic->ver = hi655x_pmic_get_version(pmic);
   107          if ((pmic->ver < PMU_VER_START) || (pmic->ver > PMU_VER_END)) {
   108                  dev_warn(dev, "it is wrong pmu version\n");
   109                  return -EINVAL;
   110          }
   111  
   112          hi655x_local_irq_clear(pmic->regmap);
   113  
   114          pmic->gpio = of_get_named_gpio(np, "pmic-gpios", 0);
   115          if (!gpio_is_valid(pmic->gpio)) {
   116                  dev_err(dev, "cannot get the pmic-gpios\n");
   117                  return -ENODEV;
   118          }
   119  
   120          ret = devm_gpio_request_one(dev, pmic->gpio, GPIOF_IN, 
"hi655x_pmic_irq");
   121          if (ret < 0) {
   122                  dev_err(dev, "failed to request gpio %d  ret = %d\n",
   123                          pmic->gpio, ret);
   124                  return ret;
   125          }
   126  
   127          ret = regmap_add_irq_chip(pmic->regmap, gpio_to_irq(pmic->gpio),
   128                                    IRQF_TRIGGER_LOW | IRQF_NO_SUSPEND, 0,
   129                                    &hi655x_irq_chip, &pmic->irq_data);
   130          if (ret) {
   131                  dev_err(dev, "add pmic irq chip error! ret %d\n", ret);
   132                  return ret;
   133          }
   134  
   135          /* bind pmic to device */
   136          platform_set_drvdata(pdev, pmic);
   137  
   138          /* populate sub nodes */
   139          ret = of_platform_populate(np, of_hi655x_pmic_child_match_tbl,
   140                                     NULL, dev);
   141          if (ret) {
   142                  regmap_del_irq_chip(pmic->irq, pmic->irq_data);
   143                  return ret;
   144          }
   145  
   146          return 0;
   147  }
   148  
   149  static struct platform_driver hi655x_pmic_driver = {
   150          .driver = {
   151                  .name = "hi655x-pmic",
   152                  .of_match_table = of_hi655x_pmic_match_tbl,
   153          },
   154          .probe  = hi655x_pmic_probe,
   155  };
 > 156  module_platform_driver(hi655x_pmic_driver);
   157  
   158  MODULE_AUTHOR("Chen Feng <puck.c...@hisilicon.com>");
   159  MODULE_DESCRIPTION("Hisi hi655x pmic driver");

---
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