tree:   git://git.ragnatech.se/linux media-tree
head:   708d75fe1c7c6e9abc5381b6fcc32b49830383d0
commit: b03c2fb97adcc65d3c4098c4aa41fbaa6623ebf2 [32/140] media: add SECO cec 
driver
config: i386-randconfig-x006-201847 (attached as .config)
compiler: gcc-7 (Debian 7.3.0-1) 7.3.0
reproduce:
        git checkout b03c2fb97adcc65d3c4098c4aa41fbaa6623ebf2
        # save the attached .config to linux build tree
        make ARCH=i386 

Note: the ragnatech/media-tree HEAD 708d75fe1c7c6e9abc5381b6fcc32b49830383d0 
builds fine.
      It only hurts bisectibility.

All error/warnings (new ones prefixed by >>):

   drivers/media/platform/seco-cec/seco-cec.c: In function 'secocec_tx_done':
>> drivers/media/platform/seco-cec/seco-cec.c:237:4: error: implicit 
>> declaration of function 'cec_transmit_attempt_done' 
>> [-Werror=implicit-function-declaration]
       cec_transmit_attempt_done(adap, CEC_TX_STATUS_NACK);
       ^~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/media/platform/seco-cec/seco-cec.c: In function 'secocec_rx_done':
>> drivers/media/platform/seco-cec/seco-cec.c:316:2: error: implicit 
>> declaration of function 'cec_received_msg'; did you mean 
>> 'free_reserved_page'? [-Werror=implicit-function-declaration]
     cec_received_msg(cec->cec_adap, &msg);
     ^~~~~~~~~~~~~~~~
     free_reserved_page
   drivers/media/platform/seco-cec/seco-cec.c: In function 'secocec_probe':
>> drivers/media/platform/seco-cec/seco-cec.c:527:22: error: implicit 
>> declaration of function 'cec_allocate_adapter'; did you mean 
>> 'cec_delete_adapter'? [-Werror=implicit-function-declaration]
     secocec->cec_adap = cec_allocate_adapter(&secocec_cec_adap_ops,
                         ^~~~~~~~~~~~~~~~~~~~
                         cec_delete_adapter
>> drivers/media/platform/seco-cec/seco-cec.c:527:20: warning: assignment makes 
>> pointer from integer without a cast [-Wint-conversion]
     secocec->cec_adap = cec_allocate_adapter(&secocec_cec_adap_ops,
                       ^
   cc1: some warnings being treated as errors

vim +/cec_transmit_attempt_done +237 drivers/media/platform/seco-cec/seco-cec.c

   232  
   233  static void secocec_tx_done(struct cec_adapter *adap, u16 status_val)
   234  {
   235          if (status_val & SECOCEC_STATUS_TX_ERROR_MASK) {
   236                  if (status_val & SECOCEC_STATUS_TX_NACK_ERROR)
 > 237                          cec_transmit_attempt_done(adap, 
 > CEC_TX_STATUS_NACK);
   238                  else
   239                          cec_transmit_attempt_done(adap, 
CEC_TX_STATUS_ERROR);
   240          } else {
   241                  cec_transmit_attempt_done(adap, CEC_TX_STATUS_OK);
   242          }
   243  
   244          /* Reset status reg */
   245          status_val = SECOCEC_STATUS_TX_ERROR_MASK |
   246                  SECOCEC_STATUS_MSG_SENT_MASK |
   247                  SECOCEC_STATUS_TX_NACK_ERROR;
   248          smb_wr16(SECOCEC_STATUS, status_val);
   249  }
   250  
   251  static void secocec_rx_done(struct cec_adapter *adap, u16 status_val)
   252  {
   253          struct secocec_data *cec = cec_get_drvdata(adap);
   254          struct device *dev = cec->dev;
   255          struct cec_msg msg = { };
   256          bool flag_overflow = false;
   257          u8 payload_len, i = 0;
   258          u8 *payload_msg;
   259          u16 val = 0;
   260          int status;
   261  
   262          if (status_val & SECOCEC_STATUS_RX_OVERFLOW_MASK) {
   263                  /* NOTE: Untested, it also might not be necessary */
   264                  dev_warn(dev, "Received more than 16 bytes. 
Discarding");
   265                  flag_overflow = true;
   266          }
   267  
   268          if (status_val & SECOCEC_STATUS_RX_ERROR_MASK) {
   269                  dev_warn(dev, "Message received with errors. 
Discarding");
   270                  status = -EIO;
   271                  goto rxerr;
   272          }
   273  
   274          /* Read message length */
   275          status = smb_rd16(SECOCEC_READ_DATA_LENGTH, &val);
   276          if (status)
   277                  return;
   278  
   279          /* Device msg len already accounts for the header */
   280          msg.len = min(val + 1, CEC_MAX_MSG_SIZE);
   281  
   282          /* Read logical address */
   283          status = smb_rd16(SECOCEC_READ_BYTE0, &val);
   284          if (status)
   285                  return;
   286  
   287          /* device stores source LA and destination */
   288          msg.msg[0] = val;
   289  
   290          /* Read operation ID */
   291          status = smb_rd16(SECOCEC_READ_OPERATION_ID, &val);
   292          if (status)
   293                  return;
   294  
   295          msg.msg[1] = val;
   296  
   297          /* Read data if present */
   298          if (msg.len > 1) {
   299                  payload_len = msg.len - 2;
   300                  payload_msg = &msg.msg[2];
   301  
   302                  /* device stores 2 bytes in every 16-bit val */
   303                  for (i = 0; i < payload_len; i += 2) {
   304                          status = smb_rd16(SECOCEC_READ_DATA_00 + i / 2, 
&val);
   305                          if (status)
   306                                  return;
   307  
   308                          /* low byte, skipping header */
   309                          payload_msg[i] = val & 0x00ff;
   310  
   311                          /* hi byte */
   312                          payload_msg[i + 1] = (val & 0xff00) >> 8;
   313                  }
   314          }
   315  
 > 316          cec_received_msg(cec->cec_adap, &msg);
   317  
   318          /* Reset status reg */
   319          status_val = SECOCEC_STATUS_MSG_RECEIVED_MASK;
   320          if (flag_overflow)
   321                  status_val |= SECOCEC_STATUS_RX_OVERFLOW_MASK;
   322  
   323          status = smb_wr16(SECOCEC_STATUS, status_val);
   324  
   325          return;
   326  
   327  rxerr:
   328          /* Reset error reg */
   329          status_val = SECOCEC_STATUS_MSG_RECEIVED_MASK |
   330                  SECOCEC_STATUS_RX_ERROR_MASK;
   331          if (flag_overflow)
   332                  status_val |= SECOCEC_STATUS_RX_OVERFLOW_MASK;
   333          smb_wr16(SECOCEC_STATUS, status_val);
   334  }
   335  

---
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