All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v4 00/10] Add per channel properies support in tmp421
@ 2021-10-12  9:14 Krzysztof Adamski
  2021-10-12  9:14 ` [PATCH v4 01/10] dt-bindings: hwmon: add missing tmp421 binding Krzysztof Adamski
                   ` (9 more replies)
  0 siblings, 10 replies; 29+ messages in thread
From: Krzysztof Adamski @ 2021-10-12  9:14 UTC (permalink / raw)
  To: Guenter Roeck, Jean Delvare; +Cc: Rob Herring, linux-hwmon, devicetree

Hi,

This series adds support for defining per-channel properies (like
n-factor and label) to the TMP421 driver. It starts by adding the
missing DT binding for tmp421, in the form that was there before any of
my changes. Then I do the changes to the driver and finally adjust the
bindings to my changes.

The precedence for this case is:
[PATCH v9 2/2] hwmon: (ina3221) Read channel input source info from DT
Which can be found here:
https://lkml.org/lkml/2018/10/2/136

My patches does similar thing but to tmp422 - we need a way to define
the labels for specific channels as well as to define the n-factor (that
is board specific as it depends on the diodes used for remote sensing).
A possibility to disable unused channels seems like a good idea too.

Here comes v4. Changes compared to v3:
- fixed of by one error in the tmp421_probe_child_from_dt
- fixed errors in binding description
  - there are maximum 3 remote sensors
  - the n-factor range is -128..127
- changed "input@X" nodes into "channel@X" in DT
- changed "n-factor" property into "ti,n-factor" in DT

Changes compared to v2:
- fixed the $id path in DT
- moved the tmp421_enable_channels() call inside of tmp421_init_client()
- fixed some unneeded line brakes
- added "ignore non input related DT nodes" patch for skipping all
  subnodes that are not input@X without raising an error. I'm not
  completly convinced this is what we should do so I made it a separate
  patch so that you can easily skip it, if you decide to

Changes compared to v1:
- fixed sparse warnings about making function declarations static
- changed the policy for broken DT - in case of errors, the probe will
  return an error instead of continuing
- in addition to disabling the channels specified in DT, the probe
  function will also enable all the others in case they were disabled by
  some other code earlier
  NOTE: this may be a backwards incompatible change - if some channels
  were disabled by some bootloader code previously the channels would
  stay like that and now they would be enabled during probe, even if
  nothing is specified in DT. Is this what we want?
- added support for HWMON_T_ENABLE
- updated documentation
- NOTE: I haven't changed anything related to DT as the discussion has
  no clear conclusion yet.


Krzysztof Adamski (10):
  dt-bindings: hwmon: add missing tmp421 binding
  hwmon: (tmp421) introduce a channel struct
  hwmon: (tmp421) add support for defining labels from DT
  hwmon: (tmp421) support disabling channels from DT
  hwmon: (tmp421) support specifying n-factor via DT
  hwmon: (tmp421) really disable channels
  hwmon: (tmp421) support HWMON_T_ENABLE
  hwmon: (tmp421) update documentation
  hwmon: (tmp421) ignore non-channel related DT nodes
  dt-bindings: hwmon: allow specifying channels for tmp421

 .../devicetree/bindings/hwmon/ti,tmp421.yaml  | 110 ++++++++++++
 Documentation/hwmon/tmp421.rst                |  10 ++
 drivers/hwmon/tmp421.c                        | 168 ++++++++++++++++--
 3 files changed, 278 insertions(+), 10 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/hwmon/ti,tmp421.yaml

-- 
2.31.1


^ permalink raw reply	[flat|nested] 29+ messages in thread
* Re: [PATCH v4 06/10] hwmon: (tmp421) really disable channels
  2021-10-12  9:29 ` [PATCH v4 06/10] hwmon: (tmp421) really disable channels Krzysztof Adamski
  2021-10-12 14:37   ` Guenter Roeck
@ 2021-10-13  8:36 ` Dan Carpenter
  2021-10-13 18:50     ` kernel test robot
  2 siblings, 0 replies; 29+ messages in thread
From: kernel test robot @ 2021-10-12 22:41 UTC (permalink / raw)
  To: kbuild

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

CC: kbuild-all(a)lists.01.org
In-Reply-To: <eaee0947c813b04b77ee8364724d1a406dccc33b.1634029538.git.krzysztof.adamski@nokia.com>
References: <eaee0947c813b04b77ee8364724d1a406dccc33b.1634029538.git.krzysztof.adamski@nokia.com>
TO: Krzysztof Adamski <krzysztof.adamski@nokia.com>
TO: Guenter Roeck <linux@roeck-us.net>
TO: Jean Delvare <jdelvare@suse.com>
CC: Rob Herring <robh+dt@kernel.org>
CC: linux-hwmon(a)vger.kernel.org
CC: devicetree(a)vger.kernel.org

Hi Krzysztof,

I love your patch! Perhaps something to improve:

[auto build test WARNING on groeck-staging/hwmon-next]
[also build test WARNING on next-20211012]
[cannot apply to robh/for-next v5.15-rc5]
[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/Krzysztof-Adamski/Add-per-channel-properies-support-in-tmp421/20211012-173142
base:   https://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging.git hwmon-next
:::::: branch date: 13 hours ago
:::::: commit date: 13 hours ago
config: i386-randconfig-m031-20211012 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0

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

smatch warnings:
drivers/hwmon/tmp421.c:178 tmp421_enable_channels() error: uninitialized symbol 'err'.

vim +/err +178 drivers/hwmon/tmp421.c

9410700b881f86 Andre Prendel     2009-09-15  167  
4a0f8262fe071b Krzysztof Adamski 2021-10-12  168  static int tmp421_enable_channels(struct tmp421_data *data)
4a0f8262fe071b Krzysztof Adamski 2021-10-12  169  {
4a0f8262fe071b Krzysztof Adamski 2021-10-12  170  	int err;
4a0f8262fe071b Krzysztof Adamski 2021-10-12  171  	struct i2c_client *client = data->client;
4a0f8262fe071b Krzysztof Adamski 2021-10-12  172  	struct device *dev = &client->dev;
4a0f8262fe071b Krzysztof Adamski 2021-10-12  173  	int cfg = i2c_smbus_read_byte_data(client, TMP421_CONFIG_REG_2);
4a0f8262fe071b Krzysztof Adamski 2021-10-12  174  	int i;
4a0f8262fe071b Krzysztof Adamski 2021-10-12  175  
4a0f8262fe071b Krzysztof Adamski 2021-10-12  176  	if (cfg < 0) {
4a0f8262fe071b Krzysztof Adamski 2021-10-12  177  		dev_err(dev, "error reading register, can't disable channels\n");
4a0f8262fe071b Krzysztof Adamski 2021-10-12 @178  		return err;
4a0f8262fe071b Krzysztof Adamski 2021-10-12  179  	}
4a0f8262fe071b Krzysztof Adamski 2021-10-12  180  
4a0f8262fe071b Krzysztof Adamski 2021-10-12  181  	cfg &= ~TMP421_CONFIG_REG_REN_MASK;
4a0f8262fe071b Krzysztof Adamski 2021-10-12  182  	for (i = 0; i < data->channels; i++)
4a0f8262fe071b Krzysztof Adamski 2021-10-12  183  		if (data->channel[i].enabled)
4a0f8262fe071b Krzysztof Adamski 2021-10-12  184  			cfg |= TMP421_CONFIG_REG_REN(i);
4a0f8262fe071b Krzysztof Adamski 2021-10-12  185  
4a0f8262fe071b Krzysztof Adamski 2021-10-12  186  	err = i2c_smbus_write_byte_data(client, TMP421_CONFIG_REG_2, cfg);
4a0f8262fe071b Krzysztof Adamski 2021-10-12  187  	if (err < 0)
4a0f8262fe071b Krzysztof Adamski 2021-10-12  188  		dev_err(dev, "error writing register, can't disable channels\n");
4a0f8262fe071b Krzysztof Adamski 2021-10-12  189  
4a0f8262fe071b Krzysztof Adamski 2021-10-12  190  	return err;
4a0f8262fe071b Krzysztof Adamski 2021-10-12  191  }
4a0f8262fe071b Krzysztof Adamski 2021-10-12  192  

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

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 34043 bytes --]

^ permalink raw reply	[flat|nested] 29+ messages in thread
* Re: [PATCH v4 06/10] hwmon: (tmp421) really disable channels
@ 2021-11-16  0:53 kernel test robot
  2021-11-16  9:09   ` kernel test robot
  0 siblings, 1 reply; 29+ messages in thread
From: kernel test robot @ 2021-11-16  0:53 UTC (permalink / raw)
  To: kbuild

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

CC: llvm(a)lists.linux.dev
CC: kbuild-all(a)lists.01.org
In-Reply-To: <eaee0947c813b04b77ee8364724d1a406dccc33b.1634029538.git.krzysztof.adamski@nokia.com>
References: <eaee0947c813b04b77ee8364724d1a406dccc33b.1634029538.git.krzysztof.adamski@nokia.com>
TO: Krzysztof Adamski <krzysztof.adamski@nokia.com>

Hi Krzysztof,

I love your patch! Perhaps something to improve:

[auto build test WARNING on groeck-staging/hwmon-next]
[cannot apply to robh/for-next v5.16-rc1 next-20211115]
[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/Krzysztof-Adamski/Add-per-channel-properies-support-in-tmp421/20211012-173142
base:   https://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging.git hwmon-next
:::::: branch date: 5 weeks ago
:::::: commit date: 5 weeks ago
config: arm-randconfig-c002-20211013 (attached as .config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project b6a8c695542b2987eb9a203d5663a0740cb4725f)
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 arm cross compiling tool for clang build
        # apt-get install binutils-arm-linux-gnueabi
        # https://github.com/0day-ci/linux/commit/4a0f8262fe071b0b27c6fba7455627f3c5a5209e
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Krzysztof-Adamski/Add-per-channel-properies-support-in-tmp421/20211012-173142
        git checkout 4a0f8262fe071b0b27c6fba7455627f3c5a5209e
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=arm 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 >>)
                        ^
   include/linux/hid.h:1005:28: note: Assuming 'bmap' is null
           if (unlikely(c > limit || !bmap)) {
                                     ^
   include/linux/compiler.h:78:42: note: expanded from macro 'unlikely'
   # define unlikely(x)    __builtin_expect(!!(x), 0)
                                               ^
   include/linux/hid.h:1005:2: note: Taking true branch
           if (unlikely(c > limit || !bmap)) {
           ^
   include/linux/hid.h:1006:3: note: Assuming the condition is true
                   pr_warn_ratelimited("%s: Invalid code %d type %d\n",
                   ^
   include/linux/printk.h:656:2: note: expanded from macro 'pr_warn_ratelimited'
           printk_ratelimited(KERN_WARNING pr_fmt(fmt), ##__VA_ARGS__)
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/printk.h:639:6: note: expanded from macro 'printk_ratelimited'
           if (__ratelimit(&_rs))                                          \
               ^~~~~~~~~~~~~~~~~
   include/linux/ratelimit_types.h:41:28: note: expanded from macro '__ratelimit'
   #define __ratelimit(state) ___ratelimit(state, __func__)
                              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/hid.h:1006:3: note: Taking true branch
                   pr_warn_ratelimited("%s: Invalid code %d type %d\n",
                   ^
   include/linux/printk.h:656:2: note: expanded from macro 'pr_warn_ratelimited'
           printk_ratelimited(KERN_WARNING pr_fmt(fmt), ##__VA_ARGS__)
           ^
   include/linux/printk.h:639:2: note: expanded from macro 'printk_ratelimited'
           if (__ratelimit(&_rs))                                          \
           ^
   include/linux/hid.h:1006:3: note: Loop condition is false.  Exiting loop
                   pr_warn_ratelimited("%s: Invalid code %d type %d\n",
                   ^
   include/linux/printk.h:656:2: note: expanded from macro 'pr_warn_ratelimited'
           printk_ratelimited(KERN_WARNING pr_fmt(fmt), ##__VA_ARGS__)
           ^
   include/linux/printk.h:640:3: note: expanded from macro 'printk_ratelimited'
                   printk(fmt, ##__VA_ARGS__);                             \
                   ^
   include/linux/printk.h:446:26: note: expanded from macro 'printk'
   #define printk(fmt, ...) printk_index_wrap(_printk, fmt, ##__VA_ARGS__)
                            ^
   include/linux/printk.h:417:3: note: expanded from macro 'printk_index_wrap'
                   __printk_index_emit(_fmt, NULL, NULL);                  \
                   ^
   include/linux/printk.h:392:34: note: expanded from macro '__printk_index_emit'
   #define __printk_index_emit(...) do {} while (0)
                                    ^
   include/linux/hid.h:1007:9: note: Access to field 'name' results in a dereference of a null pointer (loaded from variable 'input')
                                       input->name, c, type);
                                       ^
   include/linux/printk.h:656:49: note: expanded from macro 'pr_warn_ratelimited'
           printk_ratelimited(KERN_WARNING pr_fmt(fmt), ##__VA_ARGS__)
                                                          ^~~~~~~~~~~
   include/linux/printk.h:640:17: note: expanded from macro 'printk_ratelimited'
                   printk(fmt, ##__VA_ARGS__);                             \
                                 ^~~~~~~~~~~
   include/linux/printk.h:446:60: note: expanded from macro 'printk'
   #define printk(fmt, ...) printk_index_wrap(_printk, fmt, ##__VA_ARGS__)
                                                              ^~~~~~~~~~~
   include/linux/printk.h:418:19: note: expanded from macro 'printk_index_wrap'
                   _p_func(_fmt, ##__VA_ARGS__);                           \
                                   ^~~~~~~~~~~
   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.
   2 warnings generated.
   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.
   2 warnings generated.
   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/media/i2c/imx258.c:781:3: warning: Value stored to 'ret' is never read [clang-analyzer-deadcode.DeadStores]
                   ret = imx258_write_reg(imx258, IMX258_REG_TEST_PATTERN,
                   ^     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/media/i2c/imx258.c:781:3: note: Value stored to 'ret' is never read
                   ret = imx258_write_reg(imx258, IMX258_REG_TEST_PATTERN,
                   ^     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   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.
   2 warnings generated.
   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.
   2 warnings generated.
   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.
   2 warnings generated.
   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.
   2 warnings generated.
   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.
   2 warnings generated.
   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.
   2 warnings generated.
   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.
   4 warnings generated.
>> drivers/hwmon/tmp421.c:178:3: warning: Undefined or garbage value returned to caller [clang-analyzer-core.uninitialized.UndefReturn]
                   return err;
                   ^
   drivers/hwmon/tmp421.c:410:6: note: Assuming 'data' is non-null
           if (!data)
               ^~~~~
   drivers/hwmon/tmp421.c:410:2: note: Taking false branch
           if (!data)
           ^
   drivers/hwmon/tmp421.c:413:2: note: Loop condition is false.  Exiting loop
           mutex_init(&data->update_lock);
           ^
   include/linux/mutex.h:101:32: note: expanded from macro 'mutex_init'
   #define mutex_init(mutex)                                               \
                                                                           ^
   drivers/hwmon/tmp421.c:414:6: note: Assuming field 'of_node' is null
           if (client->dev.of_node)
               ^~~~~~~~~~~~~~~~~~~
   drivers/hwmon/tmp421.c:414:2: note: Taking false branch
           if (client->dev.of_node)
           ^
   drivers/hwmon/tmp421.c:421:14: note: Assuming 'i' is >= field 'channels'
           for (i = 0; i < data->channels; i++) {
                       ^~~~~~~~~~~~~~~~~~
   drivers/hwmon/tmp421.c:421:2: note: Loop condition is false. Execution continues on line 426
           for (i = 0; i < data->channels; i++) {
           ^
   drivers/hwmon/tmp421.c:427:6: note: 'err' is 0
           if (err)
               ^~~
   drivers/hwmon/tmp421.c:427:2: note: Taking false branch
           if (err)
           ^
   drivers/hwmon/tmp421.c:430:8: note: Calling 'tmp421_init_client'
           err = tmp421_init_client(data);
                 ^~~~~~~~~~~~~~~~~~~~~~~~
   drivers/hwmon/tmp421.c:258:6: note: Assuming 'config' is >= 0
           if (config < 0) {
               ^~~~~~~~~~
   drivers/hwmon/tmp421.c:258:2: note: Taking false branch
           if (config < 0) {
           ^
   drivers/hwmon/tmp421.c:267:6: note: Assuming 'config' is equal to 'config_orig'
           if (config != config_orig) {
               ^~~~~~~~~~~~~~~~~~~~~
   drivers/hwmon/tmp421.c:267:2: note: Taking false branch
           if (config != config_orig) {
           ^
   drivers/hwmon/tmp421.c:272:9: note: Calling 'tmp421_enable_channels'
           return tmp421_enable_channels(data);
                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/hwmon/tmp421.c:170:2: note: 'err' declared without an initial value
           int err;
           ^~~~~~~
   drivers/hwmon/tmp421.c:176:6: note: Assuming 'cfg' is < 0
           if (cfg < 0) {
               ^~~~~~~
   drivers/hwmon/tmp421.c:176:2: note: Taking true branch
           if (cfg < 0) {
           ^
   drivers/hwmon/tmp421.c:177:3: note: Loop condition is false.  Exiting loop
                   dev_err(dev, "error reading register, can't disable channels\n");
                   ^
   include/linux/dev_printk.h:144:2: note: expanded from macro 'dev_err'
           dev_printk_index_wrap(_dev_err, KERN_ERR, dev, dev_fmt(fmt), ##__VA_ARGS__)
           ^
   include/linux/dev_printk.h:109:3: note: expanded from macro 'dev_printk_index_wrap'
                   dev_printk_index_emit(level, fmt);                      \
                   ^
   include/linux/dev_printk.h:105:2: note: expanded from macro 'dev_printk_index_emit'
           printk_index_subsys_emit("%s %s: ", level, fmt)
           ^
   include/linux/printk.h:413:2: note: expanded from macro 'printk_index_subsys_emit'
           __printk_index_emit(fmt, level, subsys_fmt_prefix)
           ^
   include/linux/printk.h:392:34: note: expanded from macro '__printk_index_emit'
   #define __printk_index_emit(...) do {} while (0)
                                    ^
   drivers/hwmon/tmp421.c:178:3: note: Undefined or garbage value returned to caller
                   return err;
                   ^      ~~~
   Suppressed 3 warnings (2 in non-user code, 1 with check filters).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   2 warnings generated.
   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.
   2 warnings generated.
   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.
   2 warnings generated.
   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.
   2 warnings generated.
   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.
   2 warnings generated.
   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.
   2 warnings generated.
   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.

vim +178 drivers/hwmon/tmp421.c

9410700b881f867 Andre Prendel     2009-09-15  167  
4a0f8262fe071b0 Krzysztof Adamski 2021-10-12  168  static int tmp421_enable_channels(struct tmp421_data *data)
4a0f8262fe071b0 Krzysztof Adamski 2021-10-12  169  {
4a0f8262fe071b0 Krzysztof Adamski 2021-10-12  170  	int err;
4a0f8262fe071b0 Krzysztof Adamski 2021-10-12  171  	struct i2c_client *client = data->client;
4a0f8262fe071b0 Krzysztof Adamski 2021-10-12  172  	struct device *dev = &client->dev;
4a0f8262fe071b0 Krzysztof Adamski 2021-10-12  173  	int cfg = i2c_smbus_read_byte_data(client, TMP421_CONFIG_REG_2);
4a0f8262fe071b0 Krzysztof Adamski 2021-10-12  174  	int i;
4a0f8262fe071b0 Krzysztof Adamski 2021-10-12  175  
4a0f8262fe071b0 Krzysztof Adamski 2021-10-12  176  	if (cfg < 0) {
4a0f8262fe071b0 Krzysztof Adamski 2021-10-12  177  		dev_err(dev, "error reading register, can't disable channels\n");
4a0f8262fe071b0 Krzysztof Adamski 2021-10-12 @178  		return err;
4a0f8262fe071b0 Krzysztof Adamski 2021-10-12  179  	}
4a0f8262fe071b0 Krzysztof Adamski 2021-10-12  180  
4a0f8262fe071b0 Krzysztof Adamski 2021-10-12  181  	cfg &= ~TMP421_CONFIG_REG_REN_MASK;
4a0f8262fe071b0 Krzysztof Adamski 2021-10-12  182  	for (i = 0; i < data->channels; i++)
4a0f8262fe071b0 Krzysztof Adamski 2021-10-12  183  		if (data->channel[i].enabled)
4a0f8262fe071b0 Krzysztof Adamski 2021-10-12  184  			cfg |= TMP421_CONFIG_REG_REN(i);
4a0f8262fe071b0 Krzysztof Adamski 2021-10-12  185  
4a0f8262fe071b0 Krzysztof Adamski 2021-10-12  186  	err = i2c_smbus_write_byte_data(client, TMP421_CONFIG_REG_2, cfg);
4a0f8262fe071b0 Krzysztof Adamski 2021-10-12  187  	if (err < 0)
4a0f8262fe071b0 Krzysztof Adamski 2021-10-12  188  		dev_err(dev, "error writing register, can't disable channels\n");
4a0f8262fe071b0 Krzysztof Adamski 2021-10-12  189  
4a0f8262fe071b0 Krzysztof Adamski 2021-10-12  190  	return err;
4a0f8262fe071b0 Krzysztof Adamski 2021-10-12  191  }
4a0f8262fe071b0 Krzysztof Adamski 2021-10-12  192  

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

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 34094 bytes --]

^ permalink raw reply	[flat|nested] 29+ messages in thread

end of thread, other threads:[~2021-11-16  9:09 UTC | newest]

Thread overview: 29+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-10-12  9:14 [PATCH v4 00/10] Add per channel properies support in tmp421 Krzysztof Adamski
2021-10-12  9:14 ` [PATCH v4 01/10] dt-bindings: hwmon: add missing tmp421 binding Krzysztof Adamski
2021-10-12  9:26 ` [PATCH v4 02/10] hwmon: (tmp421) introduce a channel struct Krzysztof Adamski
2021-10-12 14:25   ` Guenter Roeck
2021-10-12  9:27 ` [PATCH v4 03/10] hwmon: (tmp421) add support for defining labels from DT Krzysztof Adamski
2021-10-12 14:30   ` Guenter Roeck
2021-10-12  9:27 ` [PATCH v4 04/10] hwmon: (tmp421) support disabling channels " Krzysztof Adamski
2021-10-12 14:32   ` Guenter Roeck
2021-10-12  9:28 ` [PATCH v4 05/10] hwmon: (tmp421) support specifying n-factor via DT Krzysztof Adamski
2021-10-12 14:34   ` Guenter Roeck
2021-10-12  9:29 ` [PATCH v4 06/10] hwmon: (tmp421) really disable channels Krzysztof Adamski
2021-10-12 14:37   ` Guenter Roeck
2021-10-12 18:01   ` kernel test robot
2021-10-12 18:01     ` kernel test robot
2021-10-13 18:50   ` kernel test robot
2021-10-13 18:50     ` kernel test robot
2021-10-12  9:29 ` [PATCH v4 07/10] hwmon: (tmp421) support HWMON_T_ENABLE Krzysztof Adamski
2021-10-12 14:43   ` Guenter Roeck
2021-10-12  9:30 ` [PATCH v4 08/10] hwmon: (tmp421) update documentation Krzysztof Adamski
2021-10-12 14:43   ` Guenter Roeck
2021-10-12  9:30 ` [PATCH v4 09/10] hwmon: (tmp421) ignore non-channel related DT nodes Krzysztof Adamski
2021-10-12 14:44   ` Guenter Roeck
2021-10-12  9:30 ` [PATCH v4 10/10] dt-bindings: hwmon: allow specifying channels for tmp421 Krzysztof Adamski
2021-10-12 22:41 [PATCH v4 06/10] hwmon: (tmp421) really disable channels kernel test robot
2021-10-13  8:36 ` Dan Carpenter
2021-10-13  8:36 ` Dan Carpenter
2021-11-16  0:53 kernel test robot
2021-11-16  9:09 ` kernel test robot
2021-11-16  9:09   ` kernel test robot

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.