[PATCH 4/4] drm/rcar-du: dsi: Implement DSI command support
kernel test robot
lkp at intel.com
Mon Jun 9 00:51:10 UTC 2025
Hi Marek,
kernel test robot noticed the following build warnings:
[auto build test WARNING on geert-renesas-devel/next]
[also build test WARNING on drm-exynos/exynos-drm-next linus/master v6.16-rc1 next-20250606]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Marek-Vasut/drm-rcar-du-dsi-Convert-register-bits-to-BIT-macro/20250609-054641
base: https://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-devel.git next
patch link: https://lore.kernel.org/r/20250608142636.54033-5-marek.vasut%2Brenesas%40mailbox.org
patch subject: [PATCH 4/4] drm/rcar-du: dsi: Implement DSI command support
config: i386-buildonly-randconfig-005-20250609 (https://download.01.org/0day-ci/archive/20250609/202506090832.Vo4IJeD2-lkp@intel.com/config)
compiler: clang version 20.1.2 (https://github.com/llvm/llvm-project 58df0ef89dd64126512e4ee27b4ac3fd8ddf6247)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250609/202506090832.Vo4IJeD2-lkp@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 <lkp at intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202506090832.Vo4IJeD2-lkp@intel.com/
All warnings (new ones prefixed by >>):
>> drivers/gpu/drm/renesas/rcar-du/rcar_mipi_dsi.c:1064:11: warning: format specifies type 'long' but the argument has type 'size_t' (aka 'unsigned int') [-Wformat]
1063 | "Long Packet Response longer than RX buffer (%d), limited to %ld Bytes\n",
| ~~~
| %zu
1064 | wc, msg->rx_len);
| ^~~~~~~~~~~
include/linux/dev_printk.h:156:70: note: expanded from macro 'dev_warn'
156 | dev_printk_index_wrap(_dev_warn, KERN_WARNING, dev, dev_fmt(fmt), ##__VA_ARGS__)
| ~~~ ^~~~~~~~~~~
include/linux/dev_printk.h:110:23: note: expanded from macro 'dev_printk_index_wrap'
110 | _p_func(dev, fmt, ##__VA_ARGS__); \
| ~~~ ^~~~~~~~~~~
drivers/gpu/drm/renesas/rcar-du/rcar_mipi_dsi.c:1090:7: warning: format specifies type 'long' but the argument has type 'size_t' (aka 'unsigned int') [-Wformat]
1089 | "Expected Short Packet Response too long (%ld), limited to 2 Bytes\n",
| ~~~
| %zu
1090 | msg->rx_len);
| ^~~~~~~~~~~
include/linux/dev_printk.h:156:70: note: expanded from macro 'dev_warn'
156 | dev_printk_index_wrap(_dev_warn, KERN_WARNING, dev, dev_fmt(fmt), ##__VA_ARGS__)
| ~~~ ^~~~~~~~~~~
include/linux/dev_printk.h:110:23: note: expanded from macro 'dev_printk_index_wrap'
110 | _p_func(dev, fmt, ##__VA_ARGS__); \
| ~~~ ^~~~~~~~~~~
2 warnings generated.
vim +1064 drivers/gpu/drm/renesas/rcar-du/rcar_mipi_dsi.c
1020
1021 static ssize_t rcar_mipi_dsi_host_rx_transfer(struct mipi_dsi_host *host,
1022 const struct mipi_dsi_msg *msg)
1023 {
1024 struct rcar_mipi_dsi *dsi = host_to_rcar_mipi_dsi(host);
1025 u8 *rx_buf = (u8 *)(msg->rx_buf);
1026 u32 reg, data, status, wc;
1027 int i, ret;
1028
1029 /* RX transfer received data validation and parsing starts here. */
1030 reg = rcar_mipi_dsi_read(dsi, TOSR);
1031 if (reg & TOSR_TATO) { /* Turn-Around TimeOut. */
1032 /* Clear TATO Turn-Around TimeOut bit. */
1033 rcar_mipi_dsi_write(dsi, TOSR, TOSR_TATO);
1034 return -ETIMEDOUT;
1035 }
1036
1037 reg = rcar_mipi_dsi_read(dsi, RXPSR);
1038
1039 if (msg->flags & MIPI_DSI_MSG_REQ_ACK) {
1040 /* Transfer with zero-length RX */
1041 if (!(reg & RXPSR_RCVACK)) {
1042 /* No ACK on RX response received */
1043 return -EINVAL;
1044 }
1045 } else {
1046 /* Transfer with non-zero-length RX */
1047 if (!(reg & RXPSR_RCVRESP)) {
1048 /* No packet header of RX response received */
1049 return -EINVAL;
1050 }
1051
1052 if (reg & (RXPSR_CRCERR | RXPSR_WCERR | RXPSR_AXIERR | RXPSR_OVRERR)) {
1053 /* Incorrect response payload */
1054 return -ENODATA;
1055 }
1056
1057 data = rcar_mipi_dsi_read(dsi, RXPHDR);
1058 if (data & RXPHDR_FMT) { /* Long Packet Response */
1059 /* Read Long Packet Response length from packet header. */
1060 wc = data & 0xffff;
1061 if (wc > msg->rx_len) {
1062 dev_warn(dsi->dev,
1063 "Long Packet Response longer than RX buffer (%d), limited to %ld Bytes\n",
> 1064 wc, msg->rx_len);
1065 wc = msg->rx_len;
1066 }
1067
1068 if (wc > 16) {
1069 dev_warn(dsi->dev,
1070 "Long Packet Response too long (%d), limited to 16 Bytes\n",
1071 wc);
1072 wc = 16;
1073 }
1074
1075 for (i = 0; i < msg->rx_len; i++) {
1076 if (!(i % 4))
1077 data = rcar_mipi_dsi_read(dsi, RXPPD0R + i);
1078
1079 rx_buf[i] = data & 0xff;
1080 data >>= 8;
1081 }
1082 } else { /* Short Packet Response */
1083 if (msg->rx_len >= 1)
1084 rx_buf[0] = data & 0xff;
1085 if (msg->rx_len >= 2)
1086 rx_buf[1] = (data >> 8) & 0xff;
1087 if (msg->rx_len >= 3) {
1088 dev_warn(dsi->dev,
1089 "Expected Short Packet Response too long (%ld), limited to 2 Bytes\n",
1090 msg->rx_len);
1091 }
1092 }
1093 }
1094
1095 if (reg & RXPSR_RCVAKE) {
1096 /* Acknowledge and Error report received */
1097 return -EFAULT;
1098 }
1099
1100 ret = read_poll_timeout(rcar_mipi_dsi_read, status,
1101 !(status & PPIDL0SR_DIR),
1102 2000, 10000, false, dsi, PPIDL0SR);
1103 if (ret < 0) {
1104 dev_err(dsi->dev, "Command RX DIR timeout (0x%08x)\n", status);
1105 return ret;
1106 }
1107
1108 ret = read_poll_timeout(rcar_mipi_dsi_read, status,
1109 status & PPIDL0SR_STPST,
1110 2000, 10000, false, dsi, PPIDL0SR);
1111 if (ret < 0) {
1112 dev_err(dsi->dev, "Command RX STPST timeout (0x%08x)\n", status);
1113 return ret;
1114 }
1115
1116 return 0;
1117 }
1118
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
More information about the dri-devel
mailing list