Re: [PATCH] mfd: Add driver for RAVE Supervisory Processor

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




Hi Andrey,

[auto build test WARNING on ljones-mfd/for-mfd-next]
[also build test WARNING on v4.12-rc4 next-20170608]
[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/Andrey-Smirnov/mfd-Add-driver-for-RAVE-Supervisory-Processor/20170607-194515
base:   https://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd.git for-mfd-next
config: tile-allmodconfig (attached as .config)
compiler: tilegx-linux-gcc (GCC) 4.6.2
reproduce:
        wget https://raw.githubusercontent.com/01org/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        make.cross ARCH=tile 

All warnings (new ones prefixed by >>):

   drivers//mfd/rave-sp.c: In function 'csum_ccitt':
   drivers//mfd/rave-sp.c:395:2: error: implicit declaration of function 'crc_ccitt_false'
   drivers//mfd/rave-sp.c: In function 'rave_sp_receive_reply':
>> drivers//mfd/rave-sp.c:542:3: warning: format '%u' expects argument of type 'unsigned int', but argument 4 has type 'size_t'
   drivers//mfd/rave-sp.c:542:3: warning: format '%u' expects argument of type 'unsigned int', but argument 5 has type 'size_t'
   cc1: some warnings being treated as errors

vim +542 drivers//mfd/rave-sp.c

   389		*crc = 1 + ~(*crc);
   390	}
   391	
   392	static void csum_ccitt(const u8 *buf, size_t size, u8 *crc)
   393	{
   394	
 > 395		const u16 calculated = crc_ccitt_false(0xffff, buf, size);
   396	
   397		*(__le16 *)crc = cpu_to_be16(calculated);
   398	}
   399	
   400	static void *stuff(unsigned char *dest, const unsigned char *src, size_t n)
   401	{
   402		size_t i;
   403	
   404		for (i = 0; i < n; i++) {
   405			const unsigned char byte = *src++;
   406	
   407			switch (byte) {
   408			case STX:
   409			case ETX:
   410			case DLE:
   411				*dest++ = DLE;
   412			default:
   413				*dest++ = byte;
   414			}
   415		}
   416	
   417		return dest;
   418	}
   419	
   420	static int rave_sp_write(struct rave_sp *sp, const u8 *data, u8 data_size)
   421	{
   422		size_t length;
   423		const size_t checksum_length = sp->variant->checksum->length;
   424		unsigned char crc[checksum_length];
   425		unsigned char frame[RAVE_SP_TX_BUFFER_SIZE];
   426		unsigned char *dest = frame;
   427	
   428		if (WARN_ON(data_size > sizeof(frame)))
   429			return -ENOMEM;
   430	
   431		sp->variant->checksum->subroutine(data, data_size, crc);
   432	
   433		*dest++ = STX;
   434		dest = stuff(dest, data, data_size);
   435		dest = stuff(dest, crc, checksum_length);
   436		*dest++ = ETX;
   437	
   438		length = dest - frame;
   439	
   440		print_hex_dump(KERN_DEBUG, "rave-sp tx: ", DUMP_PREFIX_NONE,
   441			       16, 1, frame, length, false);
   442	
   443		return serdev_device_write(sp->serdev, frame, length, HZ);
   444	}
   445	
   446	static u8 rave_sp_reply_code(u8 command)
   447	{
   448		switch (command) {
   449		case 0xA0 ... 0xBE:
   450			return command + 0x20;
   451		case 0xE0 ... 0xEF:
   452			return command | 0x01;
   453		default:
   454			return command + 0x40;
   455		}
   456	}
   457	
   458	int rave_sp_exec(struct rave_sp *sp,
   459			 void *__data,  size_t data_size,
   460			 void *reply_data, size_t reply_data_size)
   461	{
   462		int ret = 0;
   463		unsigned char *data = __data;
   464		const u8 ackid = (u8)atomic_inc_return(&sp->ackid);
   465		const int command = sp->variant->cmd.translate(data[0]);
   466		struct rave_sp_reply reply = {
   467			.code     = rave_sp_reply_code((u8)command),
   468			.ackid    = ackid,
   469			.data     = reply_data,
   470			.length   = reply_data_size,
   471			.received = COMPLETION_INITIALIZER_ONSTACK(reply.received),
   472		};
   473	
   474		if (command < 0)
   475			return command;
   476	
   477		mutex_lock(&sp->bus_lock);
   478	
   479		mutex_lock(&sp->reply_lock);
   480		sp->reply = &reply;
   481		mutex_unlock(&sp->reply_lock);
   482	
   483		data[0] = (u8)command;
   484		data[1] = ackid;
   485	
   486		rave_sp_write(sp, data, data_size);
   487	
   488		if (!wait_for_completion_timeout(&reply.received, HZ)) {
   489			dev_err(&sp->serdev->dev, "Command timeout\n");
   490			ret = -ETIMEDOUT;
   491	
   492			mutex_lock(&sp->reply_lock);
   493			sp->reply = NULL;
   494			mutex_unlock(&sp->reply_lock);
   495		}
   496	
   497		mutex_unlock(&sp->bus_lock);
   498		return ret;
   499	}
   500	EXPORT_SYMBOL(rave_sp_exec);
   501	
   502	static void rave_sp_receive_event(struct rave_sp *sp,
   503					  const unsigned char *data, size_t length)
   504	{
   505		u8 cmd[] = {
   506			[0] = rave_sp_reply_code(data[0]),
   507			[1] = data[1],
   508		};
   509	
   510		rave_sp_write(sp, cmd, sizeof(cmd));
   511	
   512		blocking_notifier_call_chain(&sp->event_notifier_list,
   513					     rave_sp_action(data[0], data[2]),
   514					     NULL);
   515	}
   516	
   517	static void rave_sp_receive_reply(struct rave_sp *sp,
   518					  const unsigned char *data, size_t length)
   519	{
   520		struct device *dev = &sp->serdev->dev;
   521		struct rave_sp_reply *reply;
   522		const  size_t payload_length = length - 2;
   523	
   524		mutex_lock(&sp->reply_lock);
   525		reply = sp->reply;
   526	
   527		if (reply && reply->code == data[0] && reply->ackid == data[1] &&
   528		    payload_length >= reply->length) {
   529			/*
   530			 * We are relying on memcpy(dst, src, 0) to be a no-op
   531			 * when handling commands that have a no-payload reply
   532			 */
   533			memcpy(reply->data, &data[2], reply->length);
   534			complete(&reply->received);
   535			sp->reply = NULL;
   536		} else {
   537			dev_err(dev, "Ignoring incorrect reply\n");
   538			dev_dbg(dev, "Code:   expected = 0x%08x received = 0x%08x\n",
   539				reply->code, data[0]);
   540			dev_dbg(dev, "ACK ID: expected = 0x%08x received = 0x%08x\n",
   541				reply->ackid, data[1]);
 > 542			dev_dbg(dev, "Length: expected = %u received = %u\n",
   543				reply->length, payload_length);
   544		}
   545	

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

Attachment: .config.gz
Description: application/gzip


[Index of Archives]     [Device Tree Compilter]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux PCI Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]
  Powered by Linux