All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: kbuild@lists.01.org
Subject: Re: [PATCH 4/7] iio: adc: sc27xx: add support for PMIC sc2720 and sc2721
Date: Sun, 09 Jan 2022 12:48:41 +0800	[thread overview]
Message-ID: <202201091245.f4fNhDsc-lkp@intel.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 20840 bytes --]

CC: llvm(a)lists.linux.dev
CC: kbuild-all(a)lists.01.org
In-Reply-To: <20220106125947.139523-5-gengcixi@gmail.com>
References: <20220106125947.139523-5-gengcixi@gmail.com>
TO: Cixi Geng <gengcixi@gmail.com>
TO: orsonzhai(a)gmail.com
TO: baolin.wang7(a)gmail.com
TO: zhang.lyra(a)gmail.com
TO: jic23(a)kernel.org
TO: lars(a)metafoo.de
TO: robh+dt(a)kernel.org
TO: lgirdwood(a)gmail.com
TO: broonie(a)kernel.org
CC: yuming.zhu1(a)unisoc.com
CC: linux-iio(a)vger.kernel.org

Hi Cixi,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on jic23-iio/togreg]
[also build test WARNING on v5.16-rc8 next-20220107]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Cixi-Geng/iio-adc-sc27xx-adjust-structure-and-add-PMIC-s-support/20220106-210151
base:   https://git.kernel.org/pub/scm/linux/kernel/git/jic23/iio.git togreg
:::::: branch date: 3 days ago
:::::: commit date: 3 days ago
config: mips-randconfig-c004-20220107 (https://download.01.org/0day-ci/archive/20220109/202201091245.f4fNhDsc-lkp(a)intel.com/config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 32167bfe64a4c5dd4eb3f7a58e24f4cba76f5ac2)
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # install mips cross compiling tool for clang build
        # apt-get install binutils-mips-linux-gnu
        # https://github.com/0day-ci/linux/commit/cd6ab0edd81be2a2adf0a3c88d3386311de1b1a9
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Cixi-Geng/iio-adc-sc27xx-adjust-structure-and-add-PMIC-s-support/20220106-210151
        git checkout cd6ab0edd81be2a2adf0a3c88d3386311de1b1a9
        # save the config file to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=mips clang-analyzer 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>


clang-analyzer warnings: (new ones prefixed by >>)
                   ^
   drivers/input/keyboard/pmic8xxx-keypad.c:194:7: note: Calling 'pmic8xxx_kp_read_data'
           rc = pmic8xxx_kp_read_data(kp, new_state, KEYP_RECENT_DATA,
                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/input/keyboard/pmic8xxx-keypad.c:160:2: note: Loop condition is true.  Entering loop body
           for (row = 0; row < read_rows; row++) {
           ^
   drivers/input/keyboard/pmic8xxx-keypad.c:162:7: note: Assuming 'rc' is not equal to 0
                   if (rc)
                       ^~
   drivers/input/keyboard/pmic8xxx-keypad.c:162:3: note: Taking true branch
                   if (rc)
                   ^
   drivers/input/keyboard/pmic8xxx-keypad.c:163:4: note: Returning without writing to '*state'
                           return rc;
                           ^
   drivers/input/keyboard/pmic8xxx-keypad.c:194:7: note: Returning from 'pmic8xxx_kp_read_data'
           rc = pmic8xxx_kp_read_data(kp, new_state, KEYP_RECENT_DATA,
                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/input/keyboard/pmic8xxx-keypad.c:196:6: note: Assuming 'rc' is >= 0
           if (rc < 0) {
               ^~~~~~
   drivers/input/keyboard/pmic8xxx-keypad.c:196:2: note: Taking false branch
           if (rc < 0) {
           ^
   drivers/input/keyboard/pmic8xxx-keypad.c:206:6: note: Assuming 'rc' is >= 0
           if (rc < 0) {
               ^~~~~~
   drivers/input/keyboard/pmic8xxx-keypad.c:206:2: note: Taking false branch
           if (rc < 0) {
           ^
   drivers/input/keyboard/pmic8xxx-keypad.c:213:6: note: Assuming 'rc' is >= 0
           if (rc < 0)
               ^~~~~~
   drivers/input/keyboard/pmic8xxx-keypad.c:213:2: note: Taking false branch
           if (rc < 0)
           ^
   drivers/input/keyboard/pmic8xxx-keypad.c:216:2: note: Returning without writing to '*new_state'
           return rc;
           ^
   drivers/input/keyboard/pmic8xxx-keypad.c:334:7: note: Returning from 'pmic8xxx_kp_read_matrix'
           rc = pmic8xxx_kp_read_matrix(kp, new_state, old_state);
                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/input/keyboard/pmic8xxx-keypad.c:335:6: note: 'rc' is >= 0
           if (rc < 0) {
               ^~
   drivers/input/keyboard/pmic8xxx-keypad.c:335:2: note: Taking false branch
           if (rc < 0) {
           ^
   drivers/input/keyboard/pmic8xxx-keypad.c:340:2: note: Calling '__pmic8xxx_kp_scan_matrix'
           __pmic8xxx_kp_scan_matrix(kp, new_state, kp->stuckstate);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/input/keyboard/pmic8xxx-keypad.c:224:7: note: The value 0 is assigned to 'row'
           for (row = 0; row < kp->num_rows; row++) {
                ^~~~~~~
   drivers/input/keyboard/pmic8xxx-keypad.c:224:16: note: Assuming 'row' is < field 'num_rows'
           for (row = 0; row < kp->num_rows; row++) {
                         ^~~~~~~~~~~~~~~~~~
   drivers/input/keyboard/pmic8xxx-keypad.c:224:2: note: Loop condition is true.  Entering loop body
           for (row = 0; row < kp->num_rows; row++) {
           ^
   drivers/input/keyboard/pmic8xxx-keypad.c:225:37: note: The left operand of '^' is a garbage value
                   int bits_changed = new_state[row] ^ old_state[row];
                                      ~~~~~~~~~~~~~~ ^
   drivers/input/keyboard/pmic8xxx-keypad.c:257:33: warning: The left operand of '&' is a garbage value [clang-analyzer-core.UndefinedBinaryOperatorResult]
                   row_state = (~new_state[row]) &
                                                 ^
   drivers/input/keyboard/pmic8xxx-keypad.c:352:6: note: Assuming 'rc' is >= 0
           if (rc < 0) {
               ^~~~~~
   drivers/input/keyboard/pmic8xxx-keypad.c:352:2: note: Taking false branch
           if (rc < 0) {
           ^
   drivers/input/keyboard/pmic8xxx-keypad.c:359:7: note: Calling 'pmic8xxx_kp_scan_matrix'
           rc = pmic8xxx_kp_scan_matrix(kp, events);
                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/input/keyboard/pmic8xxx-keypad.c:280:2: note: Control jumps to 'case 1:' @line 281
           switch (events) {
           ^
   drivers/input/keyboard/pmic8xxx-keypad.c:283:7: note: 'rc' is >= 0
                   if (rc < 0)
                       ^~
   drivers/input/keyboard/pmic8xxx-keypad.c:283:3: note: Taking false branch
                   if (rc < 0)
                   ^
   drivers/input/keyboard/pmic8xxx-keypad.c:287:7: note: Calling 'pmic8xxx_detect_ghost_keys'
                   if (pmic8xxx_detect_ghost_keys(kp, new_state))
                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/input/keyboard/pmic8xxx-keypad.c:256:16: note: Assuming 'row' is < field 'num_rows'
           for (row = 0; row < kp->num_rows; row++) {
                         ^~~~~~~~~~~~~~~~~~
   drivers/input/keyboard/pmic8xxx-keypad.c:256:2: note: Loop condition is true.  Entering loop body
           for (row = 0; row < kp->num_rows; row++) {
           ^
   drivers/input/keyboard/pmic8xxx-keypad.c:257:33: note: The left operand of '&' is a garbage value
                   row_state = (~new_state[row]) &
                                ~~~~~~~~~~~~~~~  ^
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   3 warnings generated.
>> drivers/iio/adc/sc27xx_adc.c:461:8: warning: Assigned value is garbage or undefined [clang-analyzer-core.uninitialized.Assign]
                   *val = value;
                        ^ ~~~~~
   drivers/iio/adc/sc27xx_adc.c:368:11: note: 'value' declared without an initial value
           u32 tmp, value, status;
                    ^~~~~
   drivers/iio/adc/sc27xx_adc.c:371:6: note: Assuming 'ret' is 0
           if (ret) {
               ^~~
   drivers/iio/adc/sc27xx_adc.c:371:2: note: Taking false branch
           if (ret) {
           ^
   drivers/iio/adc/sc27xx_adc.c:381:6: note: Assuming field 'pmic_type' is equal to SC2721_ADC
           if (data->var_data->pmic_type == SC2721_ADC) {
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/iio/adc/sc27xx_adc.c:381:2: note: Taking true branch
           if (data->var_data->pmic_type == SC2721_ADC) {
           ^
   drivers/iio/adc/sc27xx_adc.c:382:8: note: Assuming 'channel' is equal to 30
                   if ((channel == 30) || (channel == 31)) {
                        ^~~~~~~~~~~~~
   drivers/iio/adc/sc27xx_adc.c:382:23: note: Left side of '||' is true
                   if ((channel == 30) || (channel == 31)) {
                                       ^
   drivers/iio/adc/sc27xx_adc.c:386:8: note: Assuming 'ret' is 0
                           if (ret) {
                               ^~~
   drivers/iio/adc/sc27xx_adc.c:386:4: note: Taking false branch
                           if (ret) {
                           ^
   drivers/iio/adc/sc27xx_adc.c:396:6: note: Assuming 'ret' is not equal to 0
           if (ret)
               ^~~
   drivers/iio/adc/sc27xx_adc.c:396:2: note: Taking true branch
           if (ret)
           ^
   drivers/iio/adc/sc27xx_adc.c:397:3: note: Control jumps to line 448
                   goto unlock_adc;
                   ^
   drivers/iio/adc/sc27xx_adc.c:448:22: note: Field 'pmic_type' is equal to SC2721_ADC
           if (data->var_data->pmic_type == SC2721_ADC) {
                               ^
   drivers/iio/adc/sc27xx_adc.c:448:2: note: Taking true branch
           if (data->var_data->pmic_type == SC2721_ADC) {
           ^
   drivers/iio/adc/sc27xx_adc.c:449:8: note: 'channel' is equal to 30
                   if ((channel == 30) || (channel == 31)) {
                        ^~~~~~~
   drivers/iio/adc/sc27xx_adc.c:449:23: note: Left side of '||' is true
                   if ((channel == 30) || (channel == 31)) {
                                       ^
   drivers/iio/adc/sc27xx_adc.c:453:8: note: Assuming 'ret' is 0
                           if (ret)
                               ^~~
   drivers/iio/adc/sc27xx_adc.c:453:4: note: Taking false branch
                           if (ret)
                           ^
   drivers/iio/adc/sc27xx_adc.c:460:7: note: 'ret' is 0
           if (!ret)
                ^~~
   drivers/iio/adc/sc27xx_adc.c:460:2: note: Taking true branch
           if (!ret)
           ^
   drivers/iio/adc/sc27xx_adc.c:461:8: note: Assigned value is garbage or undefined
                   *val = value;
                        ^ ~~~~~
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   3 warnings generated.
   drivers/hwspinlock/qcom_hwspinlock.c:158:24: warning: Passed-by-value struct argument contains uninitialized data (e.g., field: 'id_size') [clang-analyzer-core.CallAndMessage]
                   bank->lock[i].priv = devm_regmap_field_alloc(&pdev->dev,
                                        ^
   drivers/hwspinlock/qcom_hwspinlock.c:132:2: note: 'field' initialized here
           struct reg_field field;
           ^~~~~~~~~~~~~~~~~~~~~~
   drivers/hwspinlock/qcom_hwspinlock.c:140:6: note: Left side of '&&' is true
           if (IS_ERR(regmap) && PTR_ERR(regmap) == -ENODEV)
               ^
   drivers/hwspinlock/qcom_hwspinlock.c:140:2: note: Taking true branch
           if (IS_ERR(regmap) && PTR_ERR(regmap) == -ENODEV)
           ^
   drivers/hwspinlock/qcom_hwspinlock.c:143:6: note: Calling 'IS_ERR'
           if (IS_ERR(regmap))
               ^~~~~~~~~~~~~~
   include/linux/err.h:36:9: note: Assuming the condition is false
           return IS_ERR_VALUE((unsigned long)ptr);
                  ^
   include/linux/err.h:22:34: note: expanded from macro 'IS_ERR_VALUE'
   #define IS_ERR_VALUE(x) unlikely((unsigned long)(void *)(x) >= (unsigned long)-MAX_ERRNO)
                           ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/compiler.h:78:42: note: expanded from macro 'unlikely'
   # define unlikely(x)    __builtin_expect(!!(x), 0)
                                               ^
   include/linux/err.h:36:2: note: Returning zero, which participates in a condition later
           return IS_ERR_VALUE((unsigned long)ptr);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/hwspinlock/qcom_hwspinlock.c:143:6: note: Returning from 'IS_ERR'
           if (IS_ERR(regmap))
               ^~~~~~~~~~~~~~
   drivers/hwspinlock/qcom_hwspinlock.c:143:2: note: Taking false branch
           if (IS_ERR(regmap))

vim +461 drivers/iio/adc/sc27xx_adc.c

b39db3bcbc9a96 Cixi Geng   2022-01-06  363  
5df362a6cf49ca Freeman Liu 2018-06-21  364  static int sc27xx_adc_read(struct sc27xx_adc_data *data, int channel,
5df362a6cf49ca Freeman Liu 2018-06-21  365  			   int scale, int *val)
5df362a6cf49ca Freeman Liu 2018-06-21  366  {
5df362a6cf49ca Freeman Liu 2018-06-21  367  	int ret;
8de877d2bba5c3 Freeman Liu 2019-07-25  368  	u32 tmp, value, status;
5df362a6cf49ca Freeman Liu 2018-06-21  369  
5df362a6cf49ca Freeman Liu 2018-06-21  370  	ret = hwspin_lock_timeout_raw(data->hwlock, SC27XX_ADC_HWLOCK_TIMEOUT);
5df362a6cf49ca Freeman Liu 2018-06-21  371  	if (ret) {
5df362a6cf49ca Freeman Liu 2018-06-21  372  		dev_err(data->dev, "timeout to get the hwspinlock\n");
5df362a6cf49ca Freeman Liu 2018-06-21  373  		return ret;
5df362a6cf49ca Freeman Liu 2018-06-21  374  	}
5df362a6cf49ca Freeman Liu 2018-06-21  375  
cd6ab0edd81be2 Cixi Geng   2022-01-06  376  	/*
cd6ab0edd81be2 Cixi Geng   2022-01-06  377  	 * According to the sc2721 chip data sheet, the reference voltage of
cd6ab0edd81be2 Cixi Geng   2022-01-06  378  	 * specific channel 30 and channel 31 in ADC module needs to be set from
cd6ab0edd81be2 Cixi Geng   2022-01-06  379  	 * the default 2.8v to 3.5v.
cd6ab0edd81be2 Cixi Geng   2022-01-06  380  	 */
cd6ab0edd81be2 Cixi Geng   2022-01-06  381  	if (data->var_data->pmic_type == SC2721_ADC) {
cd6ab0edd81be2 Cixi Geng   2022-01-06  382  		if ((channel == 30) || (channel == 31)) {
cd6ab0edd81be2 Cixi Geng   2022-01-06  383  			ret = regulator_set_voltage(data->volref,
cd6ab0edd81be2 Cixi Geng   2022-01-06  384  						SC27XX_ADC_REFVOL_VDD35,
cd6ab0edd81be2 Cixi Geng   2022-01-06  385  						SC27XX_ADC_REFVOL_VDD35);
cd6ab0edd81be2 Cixi Geng   2022-01-06  386  			if (ret) {
cd6ab0edd81be2 Cixi Geng   2022-01-06  387  				dev_err(data->dev, "failed to set the volref 3.5V\n");
cd6ab0edd81be2 Cixi Geng   2022-01-06  388  				hwspin_unlock_raw(data->hwlock);
cd6ab0edd81be2 Cixi Geng   2022-01-06  389  				return ret;
cd6ab0edd81be2 Cixi Geng   2022-01-06  390  			}
cd6ab0edd81be2 Cixi Geng   2022-01-06  391  		}
cd6ab0edd81be2 Cixi Geng   2022-01-06  392  	}
cd6ab0edd81be2 Cixi Geng   2022-01-06  393  
5df362a6cf49ca Freeman Liu 2018-06-21  394  	ret = regmap_update_bits(data->regmap, data->base + SC27XX_ADC_CTL,
5df362a6cf49ca Freeman Liu 2018-06-21  395  				 SC27XX_ADC_EN, SC27XX_ADC_EN);
5df362a6cf49ca Freeman Liu 2018-06-21  396  	if (ret)
5df362a6cf49ca Freeman Liu 2018-06-21  397  		goto unlock_adc;
5df362a6cf49ca Freeman Liu 2018-06-21  398  
8de877d2bba5c3 Freeman Liu 2019-07-25  399  	ret = regmap_update_bits(data->regmap, data->base + SC27XX_ADC_INT_CLR,
8de877d2bba5c3 Freeman Liu 2019-07-25  400  				 SC27XX_ADC_IRQ_CLR, SC27XX_ADC_IRQ_CLR);
8de877d2bba5c3 Freeman Liu 2019-07-25  401  	if (ret)
8de877d2bba5c3 Freeman Liu 2019-07-25  402  		goto disable_adc;
8de877d2bba5c3 Freeman Liu 2019-07-25  403  
5df362a6cf49ca Freeman Liu 2018-06-21  404  	/* Configure the channel id and scale */
b39db3bcbc9a96 Cixi Geng   2022-01-06  405  	tmp = (scale << data->var_data->scale_shift) & data->var_data->scale_mask;
5df362a6cf49ca Freeman Liu 2018-06-21  406  	tmp |= channel & SC27XX_ADC_CHN_ID_MASK;
5df362a6cf49ca Freeman Liu 2018-06-21  407  	ret = regmap_update_bits(data->regmap, data->base + SC27XX_ADC_CH_CFG,
b39db3bcbc9a96 Cixi Geng   2022-01-06  408  				 SC27XX_ADC_CHN_ID_MASK |
b39db3bcbc9a96 Cixi Geng   2022-01-06  409  				 data->var_data->scale_mask,
5df362a6cf49ca Freeman Liu 2018-06-21  410  				 tmp);
5df362a6cf49ca Freeman Liu 2018-06-21  411  	if (ret)
5df362a6cf49ca Freeman Liu 2018-06-21  412  		goto disable_adc;
5df362a6cf49ca Freeman Liu 2018-06-21  413  
5df362a6cf49ca Freeman Liu 2018-06-21  414  	/* Select 12bit conversion mode, and only sample 1 time */
5df362a6cf49ca Freeman Liu 2018-06-21  415  	tmp = SC27XX_ADC_12BIT_MODE;
5df362a6cf49ca Freeman Liu 2018-06-21  416  	tmp |= (0 << SC27XX_ADC_RUN_NUM_SHIFT) & SC27XX_ADC_RUN_NUM_MASK;
5df362a6cf49ca Freeman Liu 2018-06-21  417  	ret = regmap_update_bits(data->regmap, data->base + SC27XX_ADC_CTL,
5df362a6cf49ca Freeman Liu 2018-06-21  418  				 SC27XX_ADC_RUN_NUM_MASK | SC27XX_ADC_12BIT_MODE,
5df362a6cf49ca Freeman Liu 2018-06-21  419  				 tmp);
5df362a6cf49ca Freeman Liu 2018-06-21  420  	if (ret)
5df362a6cf49ca Freeman Liu 2018-06-21  421  		goto disable_adc;
5df362a6cf49ca Freeman Liu 2018-06-21  422  
5df362a6cf49ca Freeman Liu 2018-06-21  423  	ret = regmap_update_bits(data->regmap, data->base + SC27XX_ADC_CTL,
5df362a6cf49ca Freeman Liu 2018-06-21  424  				 SC27XX_ADC_CHN_RUN, SC27XX_ADC_CHN_RUN);
5df362a6cf49ca Freeman Liu 2018-06-21  425  	if (ret)
5df362a6cf49ca Freeman Liu 2018-06-21  426  		goto disable_adc;
5df362a6cf49ca Freeman Liu 2018-06-21  427  
8de877d2bba5c3 Freeman Liu 2019-07-25  428  	ret = regmap_read_poll_timeout(data->regmap,
8de877d2bba5c3 Freeman Liu 2019-07-25  429  				       data->base + SC27XX_ADC_INT_RAW,
8de877d2bba5c3 Freeman Liu 2019-07-25  430  				       status, (status & SC27XX_ADC_IRQ_RAW),
8de877d2bba5c3 Freeman Liu 2019-07-25  431  				       SC27XX_ADC_POLL_RAW_STATUS,
8de877d2bba5c3 Freeman Liu 2019-07-25  432  				       SC27XX_ADC_RDY_TIMEOUT);
8de877d2bba5c3 Freeman Liu 2019-07-25  433  	if (ret) {
8de877d2bba5c3 Freeman Liu 2019-07-25  434  		dev_err(data->dev, "read adc timeout, status = 0x%x\n", status);
8de877d2bba5c3 Freeman Liu 2019-07-25  435  		goto disable_adc;
750ac07eb2c856 Freeman Liu 2018-11-09  436  	}
5df362a6cf49ca Freeman Liu 2018-06-21  437  
8de877d2bba5c3 Freeman Liu 2019-07-25  438  	ret = regmap_read(data->regmap, data->base + SC27XX_ADC_DATA, &value);
8de877d2bba5c3 Freeman Liu 2019-07-25  439  	if (ret)
8de877d2bba5c3 Freeman Liu 2019-07-25  440  		goto disable_adc;
8de877d2bba5c3 Freeman Liu 2019-07-25  441  
8de877d2bba5c3 Freeman Liu 2019-07-25  442  	value &= SC27XX_ADC_DATA_MASK;
8de877d2bba5c3 Freeman Liu 2019-07-25  443  
5df362a6cf49ca Freeman Liu 2018-06-21  444  disable_adc:
5df362a6cf49ca Freeman Liu 2018-06-21  445  	regmap_update_bits(data->regmap, data->base + SC27XX_ADC_CTL,
5df362a6cf49ca Freeman Liu 2018-06-21  446  			   SC27XX_ADC_EN, 0);
5df362a6cf49ca Freeman Liu 2018-06-21  447  unlock_adc:
cd6ab0edd81be2 Cixi Geng   2022-01-06  448  	if (data->var_data->pmic_type == SC2721_ADC) {
cd6ab0edd81be2 Cixi Geng   2022-01-06  449  		if ((channel == 30) || (channel == 31)) {
cd6ab0edd81be2 Cixi Geng   2022-01-06  450  			ret = regulator_set_voltage(data->volref,
cd6ab0edd81be2 Cixi Geng   2022-01-06  451  						    SC27XX_ADC_REFVOL_VDD28,
cd6ab0edd81be2 Cixi Geng   2022-01-06  452  						    SC27XX_ADC_REFVOL_VDD28);
cd6ab0edd81be2 Cixi Geng   2022-01-06  453  			if (ret)
cd6ab0edd81be2 Cixi Geng   2022-01-06  454  				dev_err(data->dev, "failed to set the volref 2.8V\n");
cd6ab0edd81be2 Cixi Geng   2022-01-06  455  		}
cd6ab0edd81be2 Cixi Geng   2022-01-06  456  	}
cd6ab0edd81be2 Cixi Geng   2022-01-06  457  
5df362a6cf49ca Freeman Liu 2018-06-21  458  	hwspin_unlock_raw(data->hwlock);
5df362a6cf49ca Freeman Liu 2018-06-21  459  
5df362a6cf49ca Freeman Liu 2018-06-21  460  	if (!ret)
8de877d2bba5c3 Freeman Liu 2019-07-25 @461  		*val = value;
5df362a6cf49ca Freeman Liu 2018-06-21  462  
5df362a6cf49ca Freeman Liu 2018-06-21  463  	return ret;
5df362a6cf49ca Freeman Liu 2018-06-21  464  }
5df362a6cf49ca Freeman Liu 2018-06-21  465  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

             reply	other threads:[~2022-01-09  4:48 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-01-09  4:48 kernel test robot [this message]
  -- strict thread matches above, loose matches on Subject: below --
2022-01-07 16:21 [PATCH 4/7] iio: adc: sc27xx: add support for PMIC sc2720 and sc2721 kernel test robot
2022-01-10  5:17 ` Dan Carpenter
2022-01-10  5:17 ` Dan Carpenter
2022-01-06 12:59 [PATCH 0/7] iio: adc: sc27xx: adjust structure and add PMIC's support Cixi Geng
2022-01-06 12:59 ` [PATCH 4/7] iio: adc: sc27xx: add support for PMIC sc2720 and sc2721 Cixi Geng
2022-01-07  7:16   ` Baolin Wang
2022-01-09 16:13     ` Jonathan Cameron

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202201091245.f4fNhDsc-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=kbuild@lists.01.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.