lkml.org 
[lkml]   [2020]   [Jun]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH v5 2/7] hwmon: pmbus: adm1266: Add Block process call
Hi,

I love your patch! Perhaps something to improve:

[auto build test WARNING on hwmon/hwmon-next]
[also build test WARNING on linux/master robh/for-next linus/master v5.8-rc2 next-20200624]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use as documented in
https://git-scm.com/docs/git-format-patch]

url: https://github.com/0day-ci/linux/commits/alexandru-tachici-analog-com/hwmon-pmbus-adm1266-add-support/20200624-232203
base: https://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging.git hwmon-next
config: x86_64-allyesconfig (attached as .config)
compiler: clang version 11.0.0 (https://github.com/llvm/llvm-project 1d4c87335d5236ea1f35937e1014980ba961ae34)
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 x86_64 cross compiling tool for clang build
# apt-get install binutils-x86-64-linux-gnu
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64

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

All warnings (new ones prefixed by >>):

>> drivers/hwmon/pmbus/adm1266.c:27:5: warning: no previous prototype for function 'pmbus_block_xfer' [-Wmissing-prototypes]
int pmbus_block_xfer(struct i2c_client *client, u8 cmd, u8 w_len,
^
drivers/hwmon/pmbus/adm1266.c:27:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
int pmbus_block_xfer(struct i2c_client *client, u8 cmd, u8 w_len,
^
static
1 warning generated.

vim +/pmbus_block_xfer +27 drivers/hwmon/pmbus/adm1266.c

21
22 /* Different from Block Read as it sends data and waits for the slave to
23 * return a value dependent on that data. The protocol is simply a Write Block
24 * followed by a Read Block without the Read-Block command field and the
25 * Write-Block STOP bit.
26 */
> 27 int pmbus_block_xfer(struct i2c_client *client, u8 cmd, u8 w_len,
28 u8 *data_w, u8 *data_r)
29 {
30 u8 write_buf[ADM1266_PMBUS_BLOCK_MAX + 2];
31 struct i2c_msg msgs[2] = {
32 {
33 .addr = client->addr,
34 .flags = 0,
35 .buf = write_buf,
36 .len = w_len + 2,
37 },
38 {
39 .addr = client->addr,
40 .flags = I2C_M_RD,
41 .len = ADM1266_PMBUS_BLOCK_MAX + 2,
42 }
43 };
44 u8 addr = 0;
45 u8 crc = 0;
46 int ret;
47
48 msgs[0].buf[0] = cmd;
49 msgs[0].buf[1] = w_len;
50 memcpy(&msgs[0].buf[2], data_w, w_len);
51
52 msgs[0].buf = i2c_get_dma_safe_msg_buf(&msgs[0], 1);
53 if (!msgs[0].buf)
54 return -ENOMEM;
55
56 msgs[1].buf = i2c_get_dma_safe_msg_buf(&msgs[1], 1);
57 if (!msgs[1].buf) {
58 i2c_put_dma_safe_msg_buf(msgs[0].buf, &msgs[0], false);
59 return -ENOMEM;
60 }
61
62 ret = i2c_transfer(client->adapter, msgs, 2);
63 if (ret != 2) {
64 ret = -EPROTO;
65 goto cleanup;
66 }
67
68 if (client->flags & I2C_CLIENT_PEC) {
69 addr = i2c_8bit_addr_from_msg(&msgs[0]);
70 crc = crc8(pmbus_crc_table, &addr, 1, crc);
71 crc = crc8(pmbus_crc_table, msgs[0].buf, msgs[0].len, crc);
72
73 addr = i2c_8bit_addr_from_msg(&msgs[1]);
74 crc = crc8(pmbus_crc_table, &addr, 1, crc);
75 crc = crc8(pmbus_crc_table, msgs[1].buf, msgs[1].buf[0] + 1,
76 crc);
77
78 if (crc != msgs[1].buf[msgs[1].buf[0] + 1]) {
79 ret = -EBADMSG;
80 goto cleanup;
81 }
82 }
83
84 memcpy(data_r, &msgs[1].buf[1], msgs[1].buf[0]);
85 ret = msgs[1].buf[0];
86
87 cleanup:
88 i2c_put_dma_safe_msg_buf(msgs[0].buf, &msgs[0], true);
89 i2c_put_dma_safe_msg_buf(msgs[1].buf, &msgs[1], true);
90
91 return ret;
92 }
93

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
[unhandled content-type:application/gzip]
\
 
 \ /
  Last update: 2020-06-25 00:29    [W:0.134 / U:0.156 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site