Hi Hugo,

kernel test robot noticed the following build errors:

[auto build test ERROR on 7c1a9408ce5f34ded5a85db81cf80e0975901685]

url:    
https://github.com/intel-lab-lkp/linux/commits/Hugo-Villeneuve/drm-rcar-du-rzg2l_mipi_dsi-Implement-host-transfers/20250521-011613
base:   7c1a9408ce5f34ded5a85db81cf80e0975901685
patch link:    
https://lore.kernel.org/r/20250520171034.3488482-2-hugo%40hugovil.com
patch subject: [PATCH 1/2] drm: rcar-du: rzg2l_mipi_dsi: Implement host 
transfers
config: m68k-allmodconfig 
(https://download.01.org/0day-ci/archive/20250522/202505221231.a6g8hqgd-...@intel.com/config)
compiler: m68k-linux-gcc (GCC) 14.2.0
reproduce (this is a W=1 build): 
(https://download.01.org/0day-ci/archive/20250522/202505221231.a6g8hqgd-...@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 <l...@intel.com>
| Closes: 
https://lore.kernel.org/oe-kbuild-all/202505221231.a6g8hqgd-...@intel.com/

All errors (new ones prefixed by >>):

   drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi.c: In function 
'rzg2l_mipi_dsi_read_response':
>> drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi.c:684:20: error: implicit 
>> declaration of function 'FIELD_GET' [-Wimplicit-function-declaration]
     684 |         datatype = FIELD_GET(RXRSS0R_DT, result);
         |                    ^~~~~~~~~
   drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi.c: In function 
'rzg2l_mipi_dsi_host_transfer':
>> drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi.c:742:26: error: implicit 
>> declaration of function 'FIELD_PREP' [-Wimplicit-function-declaration]
     742 |                 value |= FIELD_PREP(SQCH0DSC0AR_BTA, 
SQCH0DSC0AR_BTA_NON_READ);
         |                          ^~~~~~~~~~


vim +/FIELD_GET +684 drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi.c

   661  
   662  static ssize_t rzg2l_mipi_dsi_read_response(struct rzg2l_mipi_dsi *dsi,
   663                                              const struct mipi_dsi_msg 
*msg)
   664  {
   665          u8 *msg_rx = msg->rx_buf;
   666          u16 size;
   667          u8 datatype;
   668          u32 result;
   669  
   670          result = rzg2l_mipi_dsi_link_read(dsi, RXRSS0R);
   671          if (result & RXRSS0R_RXPKTDFAIL) {
   672                  dev_err(dsi->dev, "packet rx data did not save 
correctly\n");
   673                  return -EPROTO;
   674          }
   675  
   676          if (result & RXRSS0R_RXFAIL) {
   677                  dev_err(dsi->dev, "packet rx failure\n");
   678                  return -EPROTO;
   679          }
   680  
   681          if (!(result & RXRSS0R_RXSUC))
   682                  return -EPROTO;
   683  
 > 684          datatype = FIELD_GET(RXRSS0R_DT, result);
   685  
   686          switch (datatype) {
   687          case 0:
   688                  dev_dbg(dsi->dev, "ACK\n");
   689                  return 0;
   690          case MIPI_DSI_RX_END_OF_TRANSMISSION:
   691                  dev_dbg(dsi->dev, "EoTp\n");
   692                  return 0;
   693          case MIPI_DSI_RX_ACKNOWLEDGE_AND_ERROR_REPORT:
   694                  dev_dbg(dsi->dev, "Acknowledge and error report: 
$%02x%02x\n",
   695                          (u8)FIELD_GET(RXRSS0R_DATA1, result),
   696                          (u8)FIELD_GET(RXRSS0R_DATA0, result));
   697                  return 0;
   698          case MIPI_DSI_RX_DCS_SHORT_READ_RESPONSE_1BYTE:
   699          case MIPI_DSI_RX_GENERIC_SHORT_READ_RESPONSE_1BYTE:
   700                  msg_rx[0] = FIELD_GET(RXRSS0R_DATA0, result);
   701                  return 1;
   702          case MIPI_DSI_RX_DCS_SHORT_READ_RESPONSE_2BYTE:
   703          case MIPI_DSI_RX_GENERIC_SHORT_READ_RESPONSE_2BYTE:
   704                  msg_rx[0] = FIELD_GET(RXRSS0R_DATA0, result);
   705                  msg_rx[1] = FIELD_GET(RXRSS0R_DATA1, result);
   706                  return 2;
   707          case MIPI_DSI_RX_GENERIC_LONG_READ_RESPONSE:
   708          case MIPI_DSI_RX_DCS_LONG_READ_RESPONSE:
   709                  size = FIELD_GET(RXRSS0R_WC, result);
   710  
   711                  if (size > msg->rx_len) {
   712                          dev_err(dsi->dev, "rx buffer too small");
   713                          return -ENOSPC;
   714                  }
   715  
   716                  memcpy(msg_rx, dsi->dcs_buf_virt, size);
   717                  return size;
   718          default:
   719                  dev_err(dsi->dev, "unhandled response type: %02x\n", 
datatype);
   720                  return -EPROTO;
   721          }
   722  }
   723  
   724  static ssize_t rzg2l_mipi_dsi_host_transfer(struct mipi_dsi_host *host,
   725                                              const struct mipi_dsi_msg 
*msg)
   726  {
   727          struct rzg2l_mipi_dsi *dsi = host_to_rzg2l_mipi_dsi(host);
   728          struct mipi_dsi_packet packet;
   729          bool need_bta;
   730          u32 value;
   731          int ret;
   732  
   733          ret = mipi_dsi_create_packet(&packet, msg);
   734          if (ret < 0)
   735                  return ret;
   736  
   737          /* Terminate operation after this descriptor is finished */
   738          value = SQCH0DSC0AR_NXACT_TERM;
   739  
   740          if (msg->flags & MIPI_DSI_MSG_REQ_ACK) {
   741                  need_bta = true; /* Message with explicitly requested 
ACK */
 > 742                  value |= FIELD_PREP(SQCH0DSC0AR_BTA, 
 > SQCH0DSC0AR_BTA_NON_READ);
   743          } else if (msg->rx_buf && msg->rx_len > 0) {
   744                  need_bta = true; /* Read request */
   745                  value |= FIELD_PREP(SQCH0DSC0AR_BTA, 
SQCH0DSC0AR_BTA_READ);
   746          } else {
   747                  need_bta = false;
   748                  value |= FIELD_PREP(SQCH0DSC0AR_BTA, 
SQCH0DSC0AR_BTA_NONE);
   749          }
   750  
   751          /* Set transmission speed */
   752          if (msg->flags & MIPI_DSI_MSG_USE_LPM)
   753                  value |= SQCH0DSC0AR_SPD_LOW;
   754          else
   755                  value |= SQCH0DSC0AR_SPD_HIGH;
   756  
   757          /* Write TX packet header */
   758          value |= FIELD_PREP(SQCH0DSC0AR_DT, packet.header[0]) |
   759                  FIELD_PREP(SQCH0DSC0AR_DATA0, packet.header[1]) |
   760                  FIELD_PREP(SQCH0DSC0AR_DATA1, packet.header[2]);
   761  
   762          if (mipi_dsi_packet_format_is_long(msg->type)) {
   763                  value |= SQCH0DSC0AR_FMT_LONG;
   764  
   765                  if (packet.payload_length > RZG2L_DCS_BUF_SIZE) {
   766                          dev_err(dsi->dev, "Packet Tx payload size (%d) 
too large",
   767                                  (unsigned int)packet.payload_length);
   768                          return -ENOSPC;
   769                  }
   770  
   771                  /* Copy TX packet payload data to memory space */
   772                  memcpy(dsi->dcs_buf_virt, packet.payload, 
packet.payload_length);
   773          } else {
   774                  value |= SQCH0DSC0AR_FMT_SHORT;
   775          }
   776  
   777          rzg2l_mipi_dsi_link_write(dsi, SQCH0DSC0AR, value);
   778  
   779          /*
   780           * Write: specify payload data source location, only used for
   781           *        long packet.
   782           * Read:  specify payload data storage location of response
   783           *        packet. Note: a read packet is always a short packet.
   784           *        If the response packet is a short packet or a long 
packet
   785           *        with WC = 0 (no payload), DTSEL is meaningless.
   786           */
   787          rzg2l_mipi_dsi_link_write(dsi, SQCH0DSC0BR, 
SQCH0DSC0BR_DTSEL_MEM_SPACE);
   788  
   789          /*
   790           * Set SQCHxSR.AACTFIN bit when descriptor actions are finished.
   791           * Read: set Rx result save slot number to 0 (ACTCODE).
   792           */
   793          rzg2l_mipi_dsi_link_write(dsi, SQCH0DSC0CR, SQCH0DSC0CR_FINACT);
   794  
   795          /* Set rx/tx payload data address, only relevant for long 
packet. */
   796          rzg2l_mipi_dsi_link_write(dsi, SQCH0DSC0DR, 
(u32)dsi->dcs_buf_phys);
   797  
   798          /* Start sequence 0 operation */
   799          value = rzg2l_mipi_dsi_link_read(dsi, SQCH0SET0R);
   800          value |= SQCH0SET0R_START;
   801          rzg2l_mipi_dsi_link_write(dsi, SQCH0SET0R, value);
   802  
   803          /* Wait for operation to finish */
   804          ret = read_poll_timeout(rzg2l_mipi_dsi_link_read,
   805                                  value, value & SQCH0SR_ADESFIN,
   806                                  2000, 20000, false, dsi, SQCH0SR);
   807          if (ret == 0) {
   808                  /* Success: clear status bit */
   809                  rzg2l_mipi_dsi_link_write(dsi, SQCH0SCR, 
SQCH0SCR_ADESFIN);
   810  
   811                  if (need_bta)
   812                          ret = rzg2l_mipi_dsi_read_response(dsi, msg);
   813                  else
   814                          ret = packet.payload_length;
   815          }
   816  
   817          return ret;
   818  }
   819  

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

Reply via email to