All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: Jerome Brunet <jbrunet@baylibre.com>,
	Jean Delvare <jdelvare@suse.com>,
	Guenter Roeck <linux@roeck-us.net>,
	Jonathan Corbet <corbet@lwn.net>,
	Patrick Rudolph <patrick.rudolph@9elements.com>,
	Naresh Solanki <naresh.solanki@9elements.com>,
	Rob Herring <robh@kernel.org>,
	Krzysztof Kozlowski <krzk@kernel.org>,
	Conor Dooley <conor+dt@kernel.org>,
	Delphine CC Chiu <Delphine_CC_Chiu@wiwynn.com>
Cc: oe-kbuild-all@lists.linux.dev, linux-hwmon@vger.kernel.org,
	linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org,
	devicetree@vger.kernel.org, linux-i2c@vger.kernel.org,
	Vaishnav Achath <vaishnav.a@ti.com>
Subject: Re: [PATCH v3 6/6] hwmon: (pmbus/tps25990): add initial support
Date: Tue, 29 Oct 2024 21:49:48 +0800	[thread overview]
Message-ID: <202410292137.CftTdTLk-lkp@intel.com> (raw)
In-Reply-To: <20241024-tps25990-v3-6-b6a6e9d4b506@baylibre.com>

Hi Jerome,

kernel test robot noticed the following build errors:

[auto build test ERROR on 516ddbfef736c843866a0b2db559ce89b40ce378]

url:    https://github.com/intel-lab-lkp/linux/commits/Jerome-Brunet/hwmon-pmbus-core-allow-drivers-to-override-WRITE_PROTECT/20241025-021525
base:   516ddbfef736c843866a0b2db559ce89b40ce378
patch link:    https://lore.kernel.org/r/20241024-tps25990-v3-6-b6a6e9d4b506%40baylibre.com
patch subject: [PATCH v3 6/6] hwmon: (pmbus/tps25990): add initial support
config: i386-randconfig-061-20241029 (https://download.01.org/0day-ci/archive/20241029/202410292137.CftTdTLk-lkp@intel.com/config)
compiler: clang version 19.1.2 (https://github.com/llvm/llvm-project 7ba7d8e2f7b6445b60679da826210cdde29eaf8b)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20241029/202410292137.CftTdTLk-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202410292137.CftTdTLk-lkp@intel.com/

All errors (new ones prefixed by >>):

   In file included from drivers/hwmon/pmbus/tps25990.c:9:
   In file included from include/linux/i2c.h:19:
   In file included from include/linux/regulator/consumer.h:35:
   In file included from include/linux/suspend.h:5:
   In file included from include/linux/swap.h:9:
   In file included from include/linux/memcontrol.h:21:
   In file included from include/linux/mm.h:2213:
   include/linux/vmstat.h:518:36: warning: arithmetic between different enumeration types ('enum node_stat_item' and 'enum lru_list') [-Wenum-enum-conversion]
     518 |         return node_stat_name(NR_LRU_BASE + lru) + 3; // skip "nr_"
         |                               ~~~~~~~~~~~ ^ ~~~
>> drivers/hwmon/pmbus/tps25990.c:201:14: error: call to undeclared function 'FIELD_GET'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
     201 |                 ret = 1 << FIELD_GET(PK_MIN_AVG_AVG_CNT, ret);
         |                            ^
>> drivers/hwmon/pmbus/tps25990.c:260:11: error: call to undeclared function 'FIELD_PREP'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
     260 |                                              FIELD_PREP(PK_MIN_AVG_AVG_CNT, value));
         |                                              ^
   1 warning and 2 errors generated.


vim +/FIELD_GET +201 drivers/hwmon/pmbus/tps25990.c

    85	
    86	static int tps25990_read_word_data(struct i2c_client *client,
    87					   int page, int phase, int reg)
    88	{
    89		int ret;
    90	
    91		switch (reg) {
    92		case PMBUS_VIRT_READ_VIN_MAX:
    93			ret = pmbus_read_word_data(client, page, phase,
    94						   TPS25990_READ_VIN_PEAK);
    95			break;
    96	
    97		case PMBUS_VIRT_READ_VIN_MIN:
    98			ret = pmbus_read_word_data(client, page, phase,
    99						   TPS25990_READ_VIN_MIN);
   100			break;
   101	
   102		case PMBUS_VIRT_READ_VIN_AVG:
   103			ret = pmbus_read_word_data(client, page, phase,
   104						   TPS25990_READ_VIN_AVG);
   105			break;
   106	
   107		case PMBUS_VIRT_READ_VOUT_MIN:
   108			ret = pmbus_read_word_data(client, page, phase,
   109						   TPS25990_READ_VOUT_MIN);
   110			break;
   111	
   112		case PMBUS_VIRT_READ_VOUT_AVG:
   113			ret = pmbus_read_word_data(client, page, phase,
   114						   TPS25990_READ_VOUT_AVG);
   115			break;
   116	
   117		case PMBUS_VIRT_READ_IIN_AVG:
   118			ret = pmbus_read_word_data(client, page, phase,
   119						   TPS25990_READ_IIN_AVG);
   120			break;
   121	
   122		case PMBUS_VIRT_READ_IIN_MAX:
   123			return TPS25990_READ_IIN_PEAK;
   124			ret = pmbus_read_word_data(client, page, phase,
   125						   TPS25990_READ_IIN_PEAK);
   126			break;
   127	
   128		case PMBUS_VIRT_READ_TEMP_AVG:
   129			ret = pmbus_read_word_data(client, page, phase,
   130						   TPS25990_READ_TEMP_AVG);
   131			break;
   132	
   133		case PMBUS_VIRT_READ_TEMP_MAX:
   134			ret = pmbus_read_word_data(client, page, phase,
   135						   TPS25990_READ_TEMP_PEAK);
   136			break;
   137	
   138		case PMBUS_VIRT_READ_PIN_AVG:
   139			ret = pmbus_read_word_data(client, page, phase,
   140						   TPS25990_READ_PIN_AVG);
   141			break;
   142	
   143		case PMBUS_VIRT_READ_PIN_MAX:
   144			ret = pmbus_read_word_data(client, page, phase,
   145						   TPS25990_READ_PIN_PEAK);
   146			break;
   147	
   148		case PMBUS_VIRT_READ_VMON:
   149			ret = pmbus_read_word_data(client, page, phase,
   150						   TPS25990_READ_VAUX);
   151			break;
   152	
   153		case PMBUS_VIN_UV_WARN_LIMIT:
   154		case PMBUS_VIN_UV_FAULT_LIMIT:
   155		case PMBUS_VIN_OV_WARN_LIMIT:
   156		case PMBUS_VOUT_UV_WARN_LIMIT:
   157		case PMBUS_IIN_OC_WARN_LIMIT:
   158		case PMBUS_OT_WARN_LIMIT:
   159		case PMBUS_OT_FAULT_LIMIT:
   160		case PMBUS_PIN_OP_WARN_LIMIT:
   161			/*
   162			 * These registers provide an 8 bits value instead of a
   163			 * 10bits one. Just shifting twice the register value is
   164			 * enough to make the sensor type conversion work, even
   165			 * if the datasheet provides different m, b and R for
   166			 * those.
   167			 */
   168			ret = pmbus_read_word_data(client, page, phase, reg);
   169			if (ret < 0)
   170				break;
   171			ret <<= TPS25990_8B_SHIFT;
   172			break;
   173	
   174		case PMBUS_VIN_OV_FAULT_LIMIT:
   175			ret = pmbus_read_word_data(client, page, phase, reg);
   176			if (ret < 0)
   177				break;
   178			ret = DIV_ROUND_CLOSEST(ret * TPS25990_VIN_OVF_NUM,
   179						TPS25990_VIN_OVF_DIV);
   180			ret += TPS25990_VIN_OVF_OFF;
   181			break;
   182	
   183		case PMBUS_IIN_OC_FAULT_LIMIT:
   184			/*
   185			 * VIREF directly sets the over-current limit at which the eFuse
   186			 * will turn the FET off and trigger a fault. Expose it through
   187			 * this generic property instead of a manufacturer specific one.
   188			 */
   189			ret = pmbus_read_byte_data(client, page, TPS25990_VIREF);
   190			if (ret < 0)
   191				break;
   192			ret = DIV_ROUND_CLOSEST(ret * TPS25990_IIN_OCF_NUM,
   193						TPS25990_IIN_OCF_DIV);
   194			ret += TPS25990_IIN_OCF_OFF;
   195			break;
   196	
   197		case PMBUS_VIRT_SAMPLES:
   198			ret = pmbus_read_byte_data(client, page, TPS25990_PK_MIN_AVG);
   199			if (ret < 0)
   200				break;
 > 201			ret = 1 << FIELD_GET(PK_MIN_AVG_AVG_CNT, ret);
   202			break;
   203	
   204		case PMBUS_VIRT_RESET_TEMP_HISTORY:
   205		case PMBUS_VIRT_RESET_VIN_HISTORY:
   206		case PMBUS_VIRT_RESET_IIN_HISTORY:
   207		case PMBUS_VIRT_RESET_PIN_HISTORY:
   208		case PMBUS_VIRT_RESET_VOUT_HISTORY:
   209			ret = 0;
   210			break;
   211	
   212		default:
   213			ret = -ENODATA;
   214			break;
   215		}
   216	
   217		return ret;
   218	}
   219	
   220	static int tps25990_write_word_data(struct i2c_client *client,
   221					    int page, int reg, u16 value)
   222	{
   223		int ret;
   224	
   225		switch (reg) {
   226		case PMBUS_VIN_UV_WARN_LIMIT:
   227		case PMBUS_VIN_UV_FAULT_LIMIT:
   228		case PMBUS_VIN_OV_WARN_LIMIT:
   229		case PMBUS_VOUT_UV_WARN_LIMIT:
   230		case PMBUS_IIN_OC_WARN_LIMIT:
   231		case PMBUS_OT_WARN_LIMIT:
   232		case PMBUS_OT_FAULT_LIMIT:
   233		case PMBUS_PIN_OP_WARN_LIMIT:
   234			value >>= TPS25990_8B_SHIFT;
   235			value = clamp_val(value, 0, 0xff);
   236			ret = pmbus_write_word_data(client, page, reg, value);
   237			break;
   238	
   239		case PMBUS_VIN_OV_FAULT_LIMIT:
   240			value -= TPS25990_VIN_OVF_OFF;
   241			value = DIV_ROUND_CLOSEST(((unsigned int)value) * TPS25990_VIN_OVF_DIV,
   242						  TPS25990_VIN_OVF_NUM);
   243			value = clamp_val(value, 0, 0xf);
   244			ret = pmbus_write_word_data(client, page, reg, value);
   245			break;
   246	
   247		case PMBUS_IIN_OC_FAULT_LIMIT:
   248			value -= TPS25990_IIN_OCF_OFF;
   249			value = DIV_ROUND_CLOSEST(((unsigned int)value) * TPS25990_IIN_OCF_DIV,
   250						TPS25990_IIN_OCF_NUM);
   251			value = clamp_val(value, 0, 0x3f);
   252			ret = pmbus_write_byte_data(client, page, TPS25990_VIREF, value);
   253			break;
   254	
   255		case PMBUS_VIRT_SAMPLES:
   256			value = clamp_val(value, 1, 1 << PK_MIN_AVG_AVG_CNT);
   257			value = ilog2(value);
   258			ret = pmbus_update_byte_data(client, page, TPS25990_PK_MIN_AVG,
   259						     PK_MIN_AVG_AVG_CNT,
 > 260						     FIELD_PREP(PK_MIN_AVG_AVG_CNT, value));
   261			break;
   262	
   263		case PMBUS_VIRT_RESET_TEMP_HISTORY:
   264		case PMBUS_VIRT_RESET_VIN_HISTORY:
   265		case PMBUS_VIRT_RESET_IIN_HISTORY:
   266		case PMBUS_VIRT_RESET_PIN_HISTORY:
   267		case PMBUS_VIRT_RESET_VOUT_HISTORY:
   268			/*
   269			 * TPS25990 has history resets based on MIN/AVG/PEAK instead of per
   270			 * sensor type. Exposing this quirk in hwmon is not desirable so
   271			 * reset MIN, AVG and PEAK together. Even is there effectively only
   272			 * one reset, which resets everything, expose the 5 entries so
   273			 * userspace is not required map a sensor type to another to trigger
   274			 * a reset
   275			 */
   276			ret = pmbus_update_byte_data(client, 0, TPS25990_PK_MIN_AVG,
   277						     PK_MIN_AVG_RST_MASK,
   278						     PK_MIN_AVG_RST_MASK);
   279			break;
   280	
   281		default:
   282			ret = -ENODATA;
   283			break;
   284		}
   285	
   286		return ret;
   287	}
   288	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

      parent reply	other threads:[~2024-10-29 13:50 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-10-24 18:10 [PATCH v3 0/6] hwmon: pmbus: add tps25990 efuse support Jerome Brunet
2024-10-24 18:10 ` [PATCH v3 1/6] hwmon: (pmbus/core) allow drivers to override WRITE_PROTECT Jerome Brunet
2024-10-24 18:10 ` [PATCH v3 2/6] hwmon: (pmbus/core) improve handling of write protected regulators Jerome Brunet
2024-11-01 14:59   ` Guenter Roeck
2024-10-24 18:10 ` [PATCH v3 3/6] hwmon: (pmbus/core) add wp module param Jerome Brunet
2024-11-01 15:08   ` Guenter Roeck
2024-11-04  8:43     ` Jerome Brunet
2024-11-04 13:57       ` Guenter Roeck
2024-11-04 14:18       ` Guenter Roeck
2024-11-04 14:39         ` Jerome Brunet
2024-11-04 15:08           ` Guenter Roeck
2024-10-24 18:10 ` [PATCH v3 4/6] hwmon: (pmbus/core) clear faults after setting smbalert mask Jerome Brunet
2024-11-01 15:10   ` Guenter Roeck
2024-11-04  8:28     ` Jerome Brunet
2024-11-04 13:51       ` Guenter Roeck
2024-10-24 18:10 ` [PATCH v3 5/6] dt-bindings: hwmon: pmbus: add ti tps25990 support Jerome Brunet
2024-10-24 18:10 ` [PATCH v3 6/6] hwmon: (pmbus/tps25990): add initial support Jerome Brunet
2024-10-25 14:04   ` kernel test robot
2024-10-29 13:49   ` kernel test robot [this message]

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=202410292137.CftTdTLk-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=Delphine_CC_Chiu@wiwynn.com \
    --cc=conor+dt@kernel.org \
    --cc=corbet@lwn.net \
    --cc=devicetree@vger.kernel.org \
    --cc=jbrunet@baylibre.com \
    --cc=jdelvare@suse.com \
    --cc=krzk@kernel.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-hwmon@vger.kernel.org \
    --cc=linux-i2c@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@roeck-us.net \
    --cc=naresh.solanki@9elements.com \
    --cc=oe-kbuild-all@lists.linux.dev \
    --cc=patrick.rudolph@9elements.com \
    --cc=robh@kernel.org \
    --cc=vaishnav.a@ti.com \
    /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.