Hi Laxman,

[auto build test ERROR on tegra/for-next]
[also build test ERROR on v4.9-rc3 next-20161028]
[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/Laxman-Dewangan/pinctrl-tegra-Add-support-for-IO-pad-control/20161102-173122
base:   https://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux.git for-next
config: arm-allmodconfig (attached as .config)
compiler: arm-linux-gnueabi-gcc (Debian 6.1.1-9) 6.1.1 20160705
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=arm 

All error/warnings (new ones prefixed by >>):

>> drivers/pinctrl/tegra/pinctrl-tegra-io-pad.c:42:20: error: field 'pad_id' 
>> has incomplete type
     enum tegra_io_pad pad_id;
                       ^~~~~~
   drivers/pinctrl/tegra/pinctrl-tegra-io-pad.c: In function 
'tegra_io_pad_pinconf_get':
>> drivers/pinctrl/tegra/pinctrl-tegra-io-pad.c:103:7: error: variable 'pad_id' 
>> has initializer but incomplete type
     enum tegra_io_pad pad_id = pad_cfg->pad_id;
          ^~~~~~~~~~~~
>> drivers/pinctrl/tegra/pinctrl-tegra-io-pad.c:103:20: error: storage size of 
>> 'pad_id' isn't known
     enum tegra_io_pad pad_id = pad_cfg->pad_id;
                       ^~~~~~
>> drivers/pinctrl/tegra/pinctrl-tegra-io-pad.c:109:9: error: implicit 
>> declaration of function 'tegra_io_pad_get_voltage' 
>> [-Werror=implicit-function-declaration]
      ret = tegra_io_pad_get_voltage(pad_id);
            ^~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/pinctrl/tegra/pinctrl-tegra-io-pad.c:116:9: error: implicit 
>> declaration of function 'tegra_io_pad_power_get_status' 
>> [-Werror=implicit-function-declaration]
      ret = tegra_io_pad_power_get_status(pad_id);
            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/pinctrl/tegra/pinctrl-tegra-io-pad.c:103:20: warning: unused 
>> variable 'pad_id' [-Wunused-variable]
     enum tegra_io_pad pad_id = pad_cfg->pad_id;
                       ^~~~~~
   drivers/pinctrl/tegra/pinctrl-tegra-io-pad.c: In function 
'tegra_io_pad_pinconf_set':
>> drivers/pinctrl/tegra/pinctrl-tegra-io-pad.c:150:10: error: implicit 
>> declaration of function 'tegra_io_pad_set_voltage' 
>> [-Werror=implicit-function-declaration]
       ret = tegra_io_pad_set_voltage(pad_id, param_val);
             ^~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/pinctrl/tegra/pinctrl-tegra-io-pad.c:161:11: error: implicit 
>> declaration of function 'tegra_io_pad_power_disable' 
>> [-Werror=implicit-function-declaration]
        ret = tegra_io_pad_power_disable(pad_id);
              ^~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/pinctrl/tegra/pinctrl-tegra-io-pad.c:163:11: error: implicit 
>> declaration of function 'tegra_io_pad_power_enable' 
>> [-Werror=implicit-function-declaration]
        ret = tegra_io_pad_power_enable(pad_id);
              ^~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/pinctrl/tegra/pinctrl-tegra-io-pad.c: At top level:
>> drivers/pinctrl/tegra/pinctrl-tegra-io-pad.c:307:13: error: 
>> 'TEGRA_IO_PAD_AUDIO' undeclared here (not in a function)
      .pad_id = TEGRA_IO_PAD_##_pad_id,   \
                ^
>> drivers/pinctrl/tegra/pinctrl-tegra-io-pad.c:232:2: note: in expansion of 
>> macro 'TEGRA_IO_PAD_INFO'
     _entry_(0, "audio", AUDIO, true, false),  \
     ^~~~~~~
>> drivers/pinctrl/tegra/pinctrl-tegra-io-pad.c:313:2: note: in expansion of 
>> macro 'TEGRA124_PAD_INFO_TABLE'
     TEGRA124_PAD_INFO_TABLE(TEGRA_IO_PAD_INFO),
     ^~~~~~~~~~~~~~~~~~~~~~~
>> drivers/pinctrl/tegra/pinctrl-tegra-io-pad.c:307:13: error: 
>> 'TEGRA_IO_PAD_BB' undeclared here (not in a function)
      .pad_id = TEGRA_IO_PAD_##_pad_id,   \
                ^
   drivers/pinctrl/tegra/pinctrl-tegra-io-pad.c:233:2: note: in expansion of 
macro 'TEGRA_IO_PAD_INFO'
     _entry_(1, "bb", BB, true, false),   \
     ^~~~~~~
>> drivers/pinctrl/tegra/pinctrl-tegra-io-pad.c:313:2: note: in expansion of 
>> macro 'TEGRA124_PAD_INFO_TABLE'
     TEGRA124_PAD_INFO_TABLE(TEGRA_IO_PAD_INFO),
     ^~~~~~~~~~~~~~~~~~~~~~~
>> drivers/pinctrl/tegra/pinctrl-tegra-io-pad.c:307:13: error: 
>> 'TEGRA_IO_PAD_CAM' undeclared here (not in a function)
      .pad_id = TEGRA_IO_PAD_##_pad_id,   \
                ^
   drivers/pinctrl/tegra/pinctrl-tegra-io-pad.c:234:2: note: in expansion of 
macro 'TEGRA_IO_PAD_INFO'
     _entry_(2, "cam", CAM, true, false),   \
     ^~~~~~~
>> drivers/pinctrl/tegra/pinctrl-tegra-io-pad.c:313:2: note: in expansion of 
>> macro 'TEGRA124_PAD_INFO_TABLE'
     TEGRA124_PAD_INFO_TABLE(TEGRA_IO_PAD_INFO),
     ^~~~~~~~~~~~~~~~~~~~~~~
>> drivers/pinctrl/tegra/pinctrl-tegra-io-pad.c:307:13: error: 
>> 'TEGRA_IO_PAD_COMP' undeclared here (not in a function)
      .pad_id = TEGRA_IO_PAD_##_pad_id,   \
                ^
   drivers/pinctrl/tegra/pinctrl-tegra-io-pad.c:235:2: note: in expansion of 
macro 'TEGRA_IO_PAD_INFO'
     _entry_(3, "comp", COMP, true, false),   \
     ^~~~~~~
>> drivers/pinctrl/tegra/pinctrl-tegra-io-pad.c:313:2: note: in expansion of 
>> macro 'TEGRA124_PAD_INFO_TABLE'
     TEGRA124_PAD_INFO_TABLE(TEGRA_IO_PAD_INFO),
     ^~~~~~~~~~~~~~~~~~~~~~~
>> drivers/pinctrl/tegra/pinctrl-tegra-io-pad.c:307:13: error: 
>> 'TEGRA_IO_PAD_CSIA' undeclared here (not in a function)
      .pad_id = TEGRA_IO_PAD_##_pad_id,   \
                ^
   drivers/pinctrl/tegra/pinctrl-tegra-io-pad.c:236:2: note: in expansion of 
macro 'TEGRA_IO_PAD_INFO'
     _entry_(4, "csia", CSIA, true, false),   \
     ^~~~~~~
>> drivers/pinctrl/tegra/pinctrl-tegra-io-pad.c:313:2: note: in expansion of 
>> macro 'TEGRA124_PAD_INFO_TABLE'
     TEGRA124_PAD_INFO_TABLE(TEGRA_IO_PAD_INFO),
     ^~~~~~~~~~~~~~~~~~~~~~~

vim +/pad_id +42 drivers/pinctrl/tegra/pinctrl-tegra-io-pad.c

    36          },
    37  };
    38  
    39  struct tegra_io_pads_cfg_info {
    40          const char *name;
    41          const unsigned int pins[1];
  > 42          enum tegra_io_pad pad_id;
    43          bool voltage_can_change;
    44          bool support_low_power_state;
    45  };
    46  
    47  struct tegra_io_pad_soc_data {
    48          const struct tegra_io_pads_cfg_info *pads_cfg;
    49          int num_pads_cfg;
    50          const struct pinctrl_pin_desc *pins_desc;
    51          int num_pins_desc;
    52  };
    53  
    54  struct tegra_io_pads_info {
    55          struct device *dev;
    56          struct pinctrl_dev *pctl;
    57          const struct tegra_io_pad_soc_data *soc_data;
    58  };
    59  
    60  static int tegra_iop_pinctrl_get_groups_count(struct pinctrl_dev 
*pctldev)
    61  {
    62          struct tegra_io_pads_info *tiopi = 
pinctrl_dev_get_drvdata(pctldev);
    63  
    64          return tiopi->soc_data->num_pads_cfg;
    65  }
    66  
    67  static const char *tegra_iop_pinctrl_get_group_name(struct pinctrl_dev 
*pctldev,
    68                                                      unsigned int group)
    69  {
    70          struct tegra_io_pads_info *tiopi = 
pinctrl_dev_get_drvdata(pctldev);
    71  
    72          return tiopi->soc_data->pads_cfg[group].name;
    73  }
    74  
    75  static int tegra_iop_pinctrl_get_group_pins(struct pinctrl_dev *pctldev,
    76                                              unsigned int group,
    77                                              const unsigned int **pins,
    78                                              unsigned int *num_pins)
    79  {
    80          struct tegra_io_pads_info *tiopi = 
pinctrl_dev_get_drvdata(pctldev);
    81  
    82          *pins = tiopi->soc_data->pads_cfg[group].pins;
    83          *num_pins = 1;
    84  
    85          return 0;
    86  }
    87  
    88  static const struct pinctrl_ops tegra_iop_pinctrl_ops = {
    89          .get_groups_count       = tegra_iop_pinctrl_get_groups_count,
    90          .get_group_name         = tegra_iop_pinctrl_get_group_name,
    91          .get_group_pins         = tegra_iop_pinctrl_get_group_pins,
    92          .dt_node_to_map         = pinconf_generic_dt_node_to_map_pin,
    93          .dt_free_map            = pinctrl_utils_free_map,
    94  };
    95  
    96  static int tegra_io_pad_pinconf_get(struct pinctrl_dev *pctldev,
    97                                      unsigned int pin, unsigned long 
*config)
    98  {
    99          struct tegra_io_pads_info *tiopi = 
pinctrl_dev_get_drvdata(pctldev);
   100          int param = pinconf_to_config_param(*config);
   101          const struct tegra_io_pads_cfg_info *pad_cfg =
   102                                          &tiopi->soc_data->pads_cfg[pin];
 > 103          enum tegra_io_pad pad_id = pad_cfg->pad_id;
   104          int arg = 0;
   105          int ret;
   106  
   107          switch (param) {
   108          case TEGRA_IO_PAD_POWER_SOURCE_VOLTAGE:
 > 109                  ret = tegra_io_pad_get_voltage(pad_id);
   110                  if (ret < 0)
   111                          return ret;
   112                  arg = ret;
   113                  break;
   114  
   115          case PIN_CONFIG_LOW_POWER_MODE:
 > 116                  ret = tegra_io_pad_power_get_status(pad_id);
   117                  if (ret < 0)
   118                          return ret;
   119                  arg = !ret;
   120                  break;
   121  
   122          default:
   123                  dev_err(tiopi->dev, "The parameter %d not supported\n", 
param);
   124                  return -EINVAL;
   125          }
   126  
   127          *config = pinconf_to_config_packed(param, (u16)arg);
   128          return 0;
   129  }
   130  
   131  static int tegra_io_pad_pinconf_set(struct pinctrl_dev *pctldev,
   132                                      unsigned int pin, unsigned long 
*configs,
   133                                      unsigned int num_configs)
   134  {
   135          struct tegra_io_pads_info *tiopi = 
pinctrl_dev_get_drvdata(pctldev);
   136          const struct tegra_io_pads_cfg_info *pad_cfg =
   137                                          &tiopi->soc_data->pads_cfg[pin];
   138          int pad_id = pad_cfg->pad_id;
   139          u16 param_val;
   140          int param;
   141          int ret;
   142          int i;
   143  
   144          for (i = 0; i < num_configs; i++) {
   145                  param = pinconf_to_config_param(configs[i]);
   146                  param_val = pinconf_to_config_argument(configs[i]);
   147  
   148                  switch (param) {
   149                  case TEGRA_IO_PAD_POWER_SOURCE_VOLTAGE:
 > 150                          ret = tegra_io_pad_set_voltage(pad_id, 
 > param_val);
   151                          if (ret < 0) {
   152                                  dev_err(tiopi->dev,
   153                                          "Failed to set voltage %d of 
pin %u: %d\n",
   154                                          param_val, pin, ret);
   155                                  return ret;
   156                          }
   157                          break;
   158  
   159                  case PIN_CONFIG_LOW_POWER_MODE:
   160                          if (param_val)
 > 161                                  ret = 
 > tegra_io_pad_power_disable(pad_id);
   162                          else
 > 163                                  ret = tegra_io_pad_power_enable(pad_id);
   164                          if (ret < 0) {
   165                                  dev_err(tiopi->dev,
   166                                          "Failed to set DPD %d of pin 
%u: %d\n",
   167                                          param_val, pin, ret);
   168                                  return ret;
   169                          }
   170                          break;
   171  
   172                  default:
   173                          dev_err(tiopi->dev, "The parameter %d not 
supported\n",
   174                                  param);
   175                          return -EINVAL;
   176                  }
   177          }
   178  
   179          return 0;
   180  }
   181  
   182  static const struct pinconf_ops tegra_io_pad_pinconf_ops = {
   183          .pin_config_get = tegra_io_pad_pinconf_get,
   184          .pin_config_set = tegra_io_pad_pinconf_set,
   185  };
   186  
   187  static struct pinctrl_desc tegra_iop_pinctrl_desc = {
   188          .name = "pinctrl-tegra-io-pads",
   189          .pctlops = &tegra_iop_pinctrl_ops,
   190          .confops = &tegra_io_pad_pinconf_ops,
   191          .custom_params = tegra_io_pads_cfg_params,
   192          .num_custom_params = ARRAY_SIZE(tegra_io_pads_cfg_params),
   193  };
   194  
   195  static int tegra_iop_pinctrl_probe(struct platform_device *pdev)
   196  {
   197          struct device *dev = &pdev->dev;
   198          const struct platform_device_id *id = 
platform_get_device_id(pdev);
   199          struct device_node *np_parent = pdev->dev.parent->of_node;
   200          struct tegra_io_pads_info *tiopi;
   201  
   202          if (!np_parent) {
   203                  dev_err(&pdev->dev, "PMC should be register from DT\n");
   204                  return -ENODEV;
   205          }
   206  
   207          tiopi = devm_kzalloc(&pdev->dev, sizeof(*tiopi), GFP_KERNEL);
   208          if (!tiopi)
   209                  return -ENOMEM;
   210  
   211          tiopi->dev = &pdev->dev;
   212          pdev->dev.of_node = np_parent;
   213          tiopi->soc_data = (const struct tegra_io_pad_soc_data 
*)id->driver_data;
   214          tegra_iop_pinctrl_desc.pins = tiopi->soc_data->pins_desc;
   215          tegra_iop_pinctrl_desc.npins = tiopi->soc_data->num_pins_desc;
   216          platform_set_drvdata(pdev, tiopi);
   217  
   218          tiopi->pctl = devm_pinctrl_register(dev, 
&tegra_iop_pinctrl_desc,
   219                                              tiopi);
   220          if (IS_ERR(tiopi->pctl)) {
   221                  int ret = PTR_ERR(tiopi->pctl);
   222  
   223                  dev_err(dev, "Failed to register io-pad pinctrl driver: 
%d\n",
   224                          ret);
   225                  return ret;
   226          }
   227  
   228          return 0;
   229  }
   230  
   231  #define TEGRA124_PAD_INFO_TABLE(_entry_)                        \
 > 232          _entry_(0, "audio", AUDIO, true, false),                \
   233          _entry_(1, "bb", BB, true, false),                      \
   234          _entry_(2, "cam", CAM, true, false),                    \
   235          _entry_(3, "comp", COMP, true, false),                  \

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