Hi Cheng-Yi,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on asoc/for-next]
[also build test ERROR on v4.19-rc4 next-20180919]
[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/Cheng-Yi-Chiang/ASoC-max9892x-Add-documentation-for-reset-gpio-support/20180914-010006
base:   https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git 
for-next
config: x86_64-randconfig-s3-09201857 (attached as .config)
compiler: gcc-7 (Debian 7.3.0-1) 7.3.0
reproduce:
        # save the attached .config to linux build tree
        make ARCH=x86_64 

All errors (new ones prefixed by >>):

   sound/soc/codecs/max98927.c: In function 'max98927_i2c_toggle_reset':
>> sound/soc/codecs/max98927.c:884:2: error: implicit declaration of function 
>> 'gpiod_set_value_cansleep'; did you mean 'gpio_set_value_cansleep'? 
>> [-Werror=implicit-function-declaration]
     gpiod_set_value_cansleep(max98927->reset_gpio, 1);
     ^~~~~~~~~~~~~~~~~~~~~~~~
     gpio_set_value_cansleep
>> sound/soc/codecs/max98927.c:902:2: error: implicit declaration of function 
>> 'devm_gpiod_put'; did you mean 'devm_gpio_free'? 
>> [-Werror=implicit-function-declaration]
     devm_gpiod_put(dev, max98927->reset_gpio);
     ^~~~~~~~~~~~~~
     devm_gpio_free
   sound/soc/codecs/max98927.c: In function 'max98927_i2c_probe':
>> sound/soc/codecs/max98927.c:950:25: error: implicit declaration of function 
>> 'devm_gpiod_get_optional'; did you mean 'devm_gpio_request_one'? 
>> [-Werror=implicit-function-declaration]
     max98927->reset_gpio = devm_gpiod_get_optional(
                            ^~~~~~~~~~~~~~~~~~~~~~~
                            devm_gpio_request_one
>> sound/soc/codecs/max98927.c:951:24: error: 'GPIOD_OUT_LOW' undeclared (first 
>> use in this function); did you mean 'GPIOF_INIT_LOW'?
       &i2c->dev, "reset", GPIOD_OUT_LOW);
                           ^~~~~~~~~~~~~
                           GPIOF_INIT_LOW
   sound/soc/codecs/max98927.c:951:24: note: each undeclared identifier is 
reported only once for each function it appears in
   cc1: some warnings being treated as errors

vim +884 sound/soc/codecs/max98927.c

   873  
   874  static int max98927_i2c_toggle_reset(struct device *dev,
   875                                       struct max98927_priv *max98927)
   876  {
   877          /*
   878           * If we do not have reset gpio, assume platform firmware
   879           * controls the regulator and toggles it for us.
   880           */
   881          if (!max98927->reset_gpio)
   882                  return 0;
   883  
 > 884          gpiod_set_value_cansleep(max98927->reset_gpio, 1);
   885  
   886          /*
   887           * We need to wait a bit before we are allowed to release reset 
GPIO.
   888           */
   889          usleep_range(MAX98927_MIN_RESET_US, MAX98927_MIN_RESET_US + 5);
   890  
   891          gpiod_set_value_cansleep(max98927->reset_gpio, 0);
   892  
   893          /*
   894           * We need to wait a bit before I2C communication is available.
   895           */
   896          usleep_range(MAX98927_RELEASE_RESET_DELAY_US,
   897                       MAX98927_RELEASE_RESET_DELAY_US + 5);
   898  
   899          /*
   900           * Release reset GPIO because we are not going to use it.
   901           */
 > 902          devm_gpiod_put(dev, max98927->reset_gpio);
   903  
   904          return 0;
   905  }
   906  
   907  static bool max98927_is_first_to_reset(struct max98927_priv *max98927)
   908  {
   909          struct max98927_priv *p;
   910  
   911          if (!max98927->reset_gpio)
   912                  return false;
   913  
   914          list_for_each_entry(p, &reset_list, list) {
   915                  if (max98927->reset_gpio == p->reset_gpio)
   916                          return false;
   917          }
   918  
   919          return true;
   920  }
   921  
   922  static int max98927_i2c_probe(struct i2c_client *i2c,
   923          const struct i2c_device_id *id)
   924  {
   925  
   926          int ret = 0, value;
   927          int reg = 0;
   928          struct max98927_priv *max98927 = NULL;
   929  
   930          max98927 = devm_kzalloc(&i2c->dev,
   931                  sizeof(*max98927), GFP_KERNEL);
   932  
   933          if (!max98927) {
   934                  ret = -ENOMEM;
   935                  return ret;
   936          }
   937          i2c_set_clientdata(i2c, max98927);
   938  
   939          /* update interleave mode info */
   940          if (!of_property_read_u32(i2c->dev.of_node,
   941                  "interleave_mode", &value)) {
   942                  if (value > 0)
   943                          max98927->interleave_mode = 1;
   944                  else
   945                          max98927->interleave_mode = 0;
   946          } else
   947                  max98927->interleave_mode = 0;
   948  
   949          /* Gets optional GPIO for reset line. */
 > 950          max98927->reset_gpio = devm_gpiod_get_optional(
 > 951                          &i2c->dev, "reset", GPIOD_OUT_LOW);
   952          if (IS_ERR(max98927->reset_gpio)) {
   953                  ret = PTR_ERR(max98927->reset_gpio);
   954                  dev_err(&i2c->dev, "error getting reset gpio: %d\n", 
ret);
   955                  return ret;
   956          }
   957  
   958          /*
   959           * Only toggle reset line for the first instance when the
   960           * reset line is shared among instances. For example,
   961           * left and right amplifier share the same reset line, and
   962           * we should only toggle the reset line once.
   963           */
   964          if (max98927_is_first_to_reset(max98927)) {
   965                  dev_info(&i2c->dev, "%s: toggle reset line\n", 
__func__);
   966                  ret = max98927_i2c_toggle_reset(&i2c->dev, max98927);
   967                  if (ret)
   968                          return ret;
   969          }
   970  
   971          /* regmap initialization */
   972          max98927->regmap
   973                  = devm_regmap_init_i2c(i2c, &max98927_regmap);
   974          if (IS_ERR(max98927->regmap)) {
   975                  ret = PTR_ERR(max98927->regmap);
   976                  dev_err(&i2c->dev,
   977                          "Failed to allocate regmap: %d\n", ret);
   978                  return ret;
   979          }
   980  
   981          /* Check Revision ID */
   982          ret = regmap_read(max98927->regmap,
   983                  MAX98927_R01FF_REV_ID, &reg);
   984          if (ret < 0) {
   985                  dev_err(&i2c->dev,
   986                          "Failed to read: 0x%02X\n", 
MAX98927_R01FF_REV_ID);
   987                  return ret;
   988          }
   989          dev_info(&i2c->dev, "MAX98927 revisionID: 0x%02X\n", reg);
   990  
   991          /* voltage/current slot configuration */
   992          max98927_slot_config(i2c, max98927);
   993  
   994          /* codec registeration */
   995          ret = devm_snd_soc_register_component(&i2c->dev,
   996                  &soc_component_dev_max98927,
   997                  max98927_dai, ARRAY_SIZE(max98927_dai));
   998          if (ret < 0)
   999                  dev_err(&i2c->dev, "Failed to register component: 
%d\n", ret);
  1000  
  1001          list_add(&max98927->list, &reset_list);
  1002  
  1003          return ret;
  1004  }
  1005  

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