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

Reply via email to