* [linux-next:master 5127/9308] drivers/gpu/drm/tiny/st7571-i2c.c:214 st7571_send_command_list() error: uninitialized symbol 'ret'.
@ 2025-05-07 13:58 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2025-05-07 13:58 UTC (permalink / raw)
To: oe-kbuild; +Cc: lkp, Dan Carpenter
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
TO: Marcus Folkesson <marcus.folkesson@gmail.com>
CC: Javier Martinez Canillas <javierm@redhat.com>
CC: Thomas Zimmermann <tzimmrmann@suse.de>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head: 08710e696081d58163c8078e0e096be6d35c5fad
commit: 4b35f0f41ee295059c46a6f4ae97e4b5b8f10d9e [5127/9308] drm/st7571-i2c: add support for Sitronix ST7571 LCD controller
:::::: branch date: 6 hours ago
:::::: commit date: 2 weeks ago
config: loongarch-randconfig-r071-20250502 (https://download.01.org/0day-ci/archive/20250507/202505072151.8hpMcKVq-lkp@intel.com/config)
compiler: loongarch64-linux-gcc (GCC) 14.2.0
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@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202505072151.8hpMcKVq-lkp@intel.com/
smatch warnings:
drivers/gpu/drm/tiny/st7571-i2c.c:214 st7571_send_command_list() error: uninitialized symbol 'ret'.
drivers/gpu/drm/tiny/st7571-i2c.c:371 st7571_fb_update_rect_grayscale() error: uninitialized symbol 'x1'.
drivers/gpu/drm/tiny/st7571-i2c.c:371 st7571_fb_update_rect_grayscale() error: uninitialized symbol 'x2'.
vim +/ret +214 drivers/gpu/drm/tiny/st7571-i2c.c
4b35f0f41ee295 Marcus Folkesson 2025-04-23 202
4b35f0f41ee295 Marcus Folkesson 2025-04-23 203 static int st7571_send_command_list(struct st7571_device *st7571,
4b35f0f41ee295 Marcus Folkesson 2025-04-23 204 const u8 *cmd_list, size_t len)
4b35f0f41ee295 Marcus Folkesson 2025-04-23 205 {
4b35f0f41ee295 Marcus Folkesson 2025-04-23 206 int ret;
4b35f0f41ee295 Marcus Folkesson 2025-04-23 207
4b35f0f41ee295 Marcus Folkesson 2025-04-23 208 for (int i = 0; i < len; i++) {
4b35f0f41ee295 Marcus Folkesson 2025-04-23 209 ret = regmap_write(st7571->regmap, ST7571_COMMAND_MODE, cmd_list[i]);
4b35f0f41ee295 Marcus Folkesson 2025-04-23 210 if (ret < 0)
4b35f0f41ee295 Marcus Folkesson 2025-04-23 211 return ret;
4b35f0f41ee295 Marcus Folkesson 2025-04-23 212 }
4b35f0f41ee295 Marcus Folkesson 2025-04-23 213
4b35f0f41ee295 Marcus Folkesson 2025-04-23 @214 return ret;
4b35f0f41ee295 Marcus Folkesson 2025-04-23 215 }
4b35f0f41ee295 Marcus Folkesson 2025-04-23 216
4b35f0f41ee295 Marcus Folkesson 2025-04-23 217 static inline u8 st7571_transform_xy(const char *p, int x, int y)
4b35f0f41ee295 Marcus Folkesson 2025-04-23 218 {
4b35f0f41ee295 Marcus Folkesson 2025-04-23 219 int xrest = x % 8;
4b35f0f41ee295 Marcus Folkesson 2025-04-23 220 u8 result = 0;
4b35f0f41ee295 Marcus Folkesson 2025-04-23 221
4b35f0f41ee295 Marcus Folkesson 2025-04-23 222 /*
4b35f0f41ee295 Marcus Folkesson 2025-04-23 223 * Transforms an (x, y) pixel coordinate into a vertical 8-bit
4b35f0f41ee295 Marcus Folkesson 2025-04-23 224 * column from the framebuffer. It calculates the corresponding byte in the
4b35f0f41ee295 Marcus Folkesson 2025-04-23 225 * framebuffer, extracts the bit at the given x position across 8 consecutive
4b35f0f41ee295 Marcus Folkesson 2025-04-23 226 * rows, and packs those bits into a single byte.
4b35f0f41ee295 Marcus Folkesson 2025-04-23 227 *
4b35f0f41ee295 Marcus Folkesson 2025-04-23 228 * Return an 8-bit value representing a vertical column of pixels.
4b35f0f41ee295 Marcus Folkesson 2025-04-23 229 */
4b35f0f41ee295 Marcus Folkesson 2025-04-23 230 x = x / 8;
4b35f0f41ee295 Marcus Folkesson 2025-04-23 231 y = (y / 8) * 8;
4b35f0f41ee295 Marcus Folkesson 2025-04-23 232
4b35f0f41ee295 Marcus Folkesson 2025-04-23 233 for (int i = 0; i < 8; i++) {
4b35f0f41ee295 Marcus Folkesson 2025-04-23 234 int row_idx = y + i;
4b35f0f41ee295 Marcus Folkesson 2025-04-23 235 u8 byte = p[row_idx * 16 + x];
4b35f0f41ee295 Marcus Folkesson 2025-04-23 236 u8 bit = (byte >> xrest) & 1;
4b35f0f41ee295 Marcus Folkesson 2025-04-23 237
4b35f0f41ee295 Marcus Folkesson 2025-04-23 238 result |= (bit << i);
4b35f0f41ee295 Marcus Folkesson 2025-04-23 239 }
4b35f0f41ee295 Marcus Folkesson 2025-04-23 240
4b35f0f41ee295 Marcus Folkesson 2025-04-23 241 return result;
4b35f0f41ee295 Marcus Folkesson 2025-04-23 242 }
4b35f0f41ee295 Marcus Folkesson 2025-04-23 243
4b35f0f41ee295 Marcus Folkesson 2025-04-23 244 static int st7571_set_position(struct st7571_device *st7571, int x, int y)
4b35f0f41ee295 Marcus Folkesson 2025-04-23 245 {
4b35f0f41ee295 Marcus Folkesson 2025-04-23 246 u8 cmd_list[] = {
4b35f0f41ee295 Marcus Folkesson 2025-04-23 247 ST7571_SET_COLUMN_LSB(x),
4b35f0f41ee295 Marcus Folkesson 2025-04-23 248 ST7571_SET_COLUMN_MSB(x),
4b35f0f41ee295 Marcus Folkesson 2025-04-23 249 ST7571_SET_PAGE(y / ST7571_PAGE_HEIGHT),
4b35f0f41ee295 Marcus Folkesson 2025-04-23 250 };
4b35f0f41ee295 Marcus Folkesson 2025-04-23 251
4b35f0f41ee295 Marcus Folkesson 2025-04-23 252 return st7571_send_command_list(st7571, cmd_list, ARRAY_SIZE(cmd_list));
4b35f0f41ee295 Marcus Folkesson 2025-04-23 253 }
4b35f0f41ee295 Marcus Folkesson 2025-04-23 254
4b35f0f41ee295 Marcus Folkesson 2025-04-23 255 static int st7571_fb_clear_screen(struct st7571_device *st7571)
4b35f0f41ee295 Marcus Folkesson 2025-04-23 256 {
4b35f0f41ee295 Marcus Folkesson 2025-04-23 257 u32 npixels = st7571->ncols * round_up(st7571->nlines, ST7571_PAGE_HEIGHT) * st7571->bpp;
4b35f0f41ee295 Marcus Folkesson 2025-04-23 258 char pixelvalue = 0x00;
4b35f0f41ee295 Marcus Folkesson 2025-04-23 259
4b35f0f41ee295 Marcus Folkesson 2025-04-23 260 for (int i = 0; i < npixels; i++)
4b35f0f41ee295 Marcus Folkesson 2025-04-23 261 regmap_bulk_write(st7571->regmap, ST7571_DATA_MODE, &pixelvalue, 1);
4b35f0f41ee295 Marcus Folkesson 2025-04-23 262
4b35f0f41ee295 Marcus Folkesson 2025-04-23 263 return 0;
4b35f0f41ee295 Marcus Folkesson 2025-04-23 264 }
4b35f0f41ee295 Marcus Folkesson 2025-04-23 265
4b35f0f41ee295 Marcus Folkesson 2025-04-23 266 static void st7571_prepare_buffer_monochrome(struct st7571_device *st7571,
4b35f0f41ee295 Marcus Folkesson 2025-04-23 267 const struct iosys_map *vmap,
4b35f0f41ee295 Marcus Folkesson 2025-04-23 268 struct drm_framebuffer *fb,
4b35f0f41ee295 Marcus Folkesson 2025-04-23 269 struct drm_rect *rect,
4b35f0f41ee295 Marcus Folkesson 2025-04-23 270 struct drm_format_conv_state *fmtcnv_state)
4b35f0f41ee295 Marcus Folkesson 2025-04-23 271 {
4b35f0f41ee295 Marcus Folkesson 2025-04-23 272 unsigned int dst_pitch;
4b35f0f41ee295 Marcus Folkesson 2025-04-23 273 struct iosys_map dst;
4b35f0f41ee295 Marcus Folkesson 2025-04-23 274 u32 size;
4b35f0f41ee295 Marcus Folkesson 2025-04-23 275
4b35f0f41ee295 Marcus Folkesson 2025-04-23 276 switch (fb->format->format) {
4b35f0f41ee295 Marcus Folkesson 2025-04-23 277 case DRM_FORMAT_XRGB8888:
4b35f0f41ee295 Marcus Folkesson 2025-04-23 278 dst_pitch = DIV_ROUND_UP(drm_rect_width(rect), 8);
4b35f0f41ee295 Marcus Folkesson 2025-04-23 279 iosys_map_set_vaddr(&dst, st7571->hwbuf);
4b35f0f41ee295 Marcus Folkesson 2025-04-23 280
4b35f0f41ee295 Marcus Folkesson 2025-04-23 281 drm_fb_xrgb8888_to_mono(&dst, &dst_pitch, vmap, fb, rect, fmtcnv_state);
4b35f0f41ee295 Marcus Folkesson 2025-04-23 282 break;
4b35f0f41ee295 Marcus Folkesson 2025-04-23 283
4b35f0f41ee295 Marcus Folkesson 2025-04-23 284 case DRM_FORMAT_R1:
4b35f0f41ee295 Marcus Folkesson 2025-04-23 285 size = (rect->x2 - rect->x1) * (rect->y2 - rect->y1) / 8;
4b35f0f41ee295 Marcus Folkesson 2025-04-23 286 memcpy(st7571->hwbuf, vmap->vaddr, size);
4b35f0f41ee295 Marcus Folkesson 2025-04-23 287 break;
4b35f0f41ee295 Marcus Folkesson 2025-04-23 288 }
4b35f0f41ee295 Marcus Folkesson 2025-04-23 289 }
4b35f0f41ee295 Marcus Folkesson 2025-04-23 290
4b35f0f41ee295 Marcus Folkesson 2025-04-23 291 static void st7571_prepare_buffer_grayscale(struct st7571_device *st7571,
4b35f0f41ee295 Marcus Folkesson 2025-04-23 292 const struct iosys_map *vmap,
4b35f0f41ee295 Marcus Folkesson 2025-04-23 293 struct drm_framebuffer *fb,
4b35f0f41ee295 Marcus Folkesson 2025-04-23 294 struct drm_rect *rect,
4b35f0f41ee295 Marcus Folkesson 2025-04-23 295 struct drm_format_conv_state *fmtcnv_state)
4b35f0f41ee295 Marcus Folkesson 2025-04-23 296 {
4b35f0f41ee295 Marcus Folkesson 2025-04-23 297 u32 size = (rect->x2 - rect->x1) * (rect->y2 - rect->y1) / 8;
4b35f0f41ee295 Marcus Folkesson 2025-04-23 298 unsigned int dst_pitch;
4b35f0f41ee295 Marcus Folkesson 2025-04-23 299 struct iosys_map dst;
4b35f0f41ee295 Marcus Folkesson 2025-04-23 300
4b35f0f41ee295 Marcus Folkesson 2025-04-23 301 switch (fb->format->format) {
4b35f0f41ee295 Marcus Folkesson 2025-04-23 302 case DRM_FORMAT_XRGB8888: /* Only support XRGB8888 in monochrome mode */
4b35f0f41ee295 Marcus Folkesson 2025-04-23 303 dst_pitch = DIV_ROUND_UP(drm_rect_width(rect), 8);
4b35f0f41ee295 Marcus Folkesson 2025-04-23 304 iosys_map_set_vaddr(&dst, st7571->hwbuf);
4b35f0f41ee295 Marcus Folkesson 2025-04-23 305
4b35f0f41ee295 Marcus Folkesson 2025-04-23 306 drm_fb_xrgb8888_to_mono(&dst, &dst_pitch, vmap, fb, rect, fmtcnv_state);
4b35f0f41ee295 Marcus Folkesson 2025-04-23 307 break;
4b35f0f41ee295 Marcus Folkesson 2025-04-23 308
4b35f0f41ee295 Marcus Folkesson 2025-04-23 309 case DRM_FORMAT_R1:
4b35f0f41ee295 Marcus Folkesson 2025-04-23 310 size = (rect->x2 - rect->x1) * (rect->y2 - rect->y1) / 8;
4b35f0f41ee295 Marcus Folkesson 2025-04-23 311 memcpy(st7571->hwbuf, vmap->vaddr, size);
4b35f0f41ee295 Marcus Folkesson 2025-04-23 312 break;
4b35f0f41ee295 Marcus Folkesson 2025-04-23 313
4b35f0f41ee295 Marcus Folkesson 2025-04-23 314 case DRM_FORMAT_R2:
4b35f0f41ee295 Marcus Folkesson 2025-04-23 315 size = (rect->x2 - rect->x1) * (rect->y2 - rect->y1) / 4;
4b35f0f41ee295 Marcus Folkesson 2025-04-23 316 memcpy(st7571->hwbuf, vmap->vaddr, size);
4b35f0f41ee295 Marcus Folkesson 2025-04-23 317 break;
4b35f0f41ee295 Marcus Folkesson 2025-04-23 318 };
4b35f0f41ee295 Marcus Folkesson 2025-04-23 319 }
4b35f0f41ee295 Marcus Folkesson 2025-04-23 320
4b35f0f41ee295 Marcus Folkesson 2025-04-23 321 static int st7571_fb_update_rect_monochrome(struct drm_framebuffer *fb, struct drm_rect *rect)
4b35f0f41ee295 Marcus Folkesson 2025-04-23 322 {
4b35f0f41ee295 Marcus Folkesson 2025-04-23 323 struct st7571_device *st7571 = drm_to_st7571(fb->dev);
4b35f0f41ee295 Marcus Folkesson 2025-04-23 324 char *row = st7571->row;
4b35f0f41ee295 Marcus Folkesson 2025-04-23 325
4b35f0f41ee295 Marcus Folkesson 2025-04-23 326 /* Align y to display page boundaries */
4b35f0f41ee295 Marcus Folkesson 2025-04-23 327 rect->y1 = round_down(rect->y1, ST7571_PAGE_HEIGHT);
4b35f0f41ee295 Marcus Folkesson 2025-04-23 328 rect->y2 = min_t(unsigned int, round_up(rect->y2, ST7571_PAGE_HEIGHT), st7571->nlines);
4b35f0f41ee295 Marcus Folkesson 2025-04-23 329
4b35f0f41ee295 Marcus Folkesson 2025-04-23 330 for (int y = rect->y1; y < rect->y2; y += ST7571_PAGE_HEIGHT) {
4b35f0f41ee295 Marcus Folkesson 2025-04-23 331 for (int x = rect->x1; x < rect->x2; x++)
4b35f0f41ee295 Marcus Folkesson 2025-04-23 332 row[x] = st7571_transform_xy(st7571->hwbuf, x, y);
4b35f0f41ee295 Marcus Folkesson 2025-04-23 333
4b35f0f41ee295 Marcus Folkesson 2025-04-23 334 st7571_set_position(st7571, rect->x1, y);
4b35f0f41ee295 Marcus Folkesson 2025-04-23 335
4b35f0f41ee295 Marcus Folkesson 2025-04-23 336 /* TODO: Investige why we can't write multiple bytes at once */
4b35f0f41ee295 Marcus Folkesson 2025-04-23 337 for (int x = rect->x1; x < rect->x2; x++)
4b35f0f41ee295 Marcus Folkesson 2025-04-23 338 regmap_bulk_write(st7571->regmap, ST7571_DATA_MODE, row + x, 1);
4b35f0f41ee295 Marcus Folkesson 2025-04-23 339 }
4b35f0f41ee295 Marcus Folkesson 2025-04-23 340
4b35f0f41ee295 Marcus Folkesson 2025-04-23 341 return 0;
4b35f0f41ee295 Marcus Folkesson 2025-04-23 342 }
4b35f0f41ee295 Marcus Folkesson 2025-04-23 343
4b35f0f41ee295 Marcus Folkesson 2025-04-23 344 static int st7571_fb_update_rect_grayscale(struct drm_framebuffer *fb, struct drm_rect *rect)
4b35f0f41ee295 Marcus Folkesson 2025-04-23 345 {
4b35f0f41ee295 Marcus Folkesson 2025-04-23 346 struct st7571_device *st7571 = drm_to_st7571(fb->dev);
4b35f0f41ee295 Marcus Folkesson 2025-04-23 347 u32 format = fb->format->format;
4b35f0f41ee295 Marcus Folkesson 2025-04-23 348 char *row = st7571->row;
4b35f0f41ee295 Marcus Folkesson 2025-04-23 349 int x1;
4b35f0f41ee295 Marcus Folkesson 2025-04-23 350 int x2;
4b35f0f41ee295 Marcus Folkesson 2025-04-23 351
4b35f0f41ee295 Marcus Folkesson 2025-04-23 352 /* Align y to display page boundaries */
4b35f0f41ee295 Marcus Folkesson 2025-04-23 353 rect->y1 = round_down(rect->y1, ST7571_PAGE_HEIGHT);
4b35f0f41ee295 Marcus Folkesson 2025-04-23 354 rect->y2 = min_t(unsigned int, round_up(rect->y2, ST7571_PAGE_HEIGHT), st7571->nlines);
4b35f0f41ee295 Marcus Folkesson 2025-04-23 355
4b35f0f41ee295 Marcus Folkesson 2025-04-23 356 switch (format) {
4b35f0f41ee295 Marcus Folkesson 2025-04-23 357 case DRM_FORMAT_XRGB8888:
4b35f0f41ee295 Marcus Folkesson 2025-04-23 358 /* Threated as monochrome (R1) */
4b35f0f41ee295 Marcus Folkesson 2025-04-23 359 fallthrough;
4b35f0f41ee295 Marcus Folkesson 2025-04-23 360 case DRM_FORMAT_R1:
4b35f0f41ee295 Marcus Folkesson 2025-04-23 361 x1 = rect->x1;
4b35f0f41ee295 Marcus Folkesson 2025-04-23 362 x2 = rect->x2;
4b35f0f41ee295 Marcus Folkesson 2025-04-23 363 break;
4b35f0f41ee295 Marcus Folkesson 2025-04-23 364 case DRM_FORMAT_R2:
4b35f0f41ee295 Marcus Folkesson 2025-04-23 365 x1 = rect->x1 * 2;
4b35f0f41ee295 Marcus Folkesson 2025-04-23 366 x2 = rect->x2 * 2;
4b35f0f41ee295 Marcus Folkesson 2025-04-23 367 break;
4b35f0f41ee295 Marcus Folkesson 2025-04-23 368 }
4b35f0f41ee295 Marcus Folkesson 2025-04-23 369
4b35f0f41ee295 Marcus Folkesson 2025-04-23 370 for (int y = rect->y1; y < rect->y2; y += ST7571_PAGE_HEIGHT) {
4b35f0f41ee295 Marcus Folkesson 2025-04-23 @371 for (int x = x1; x < x2; x++)
4b35f0f41ee295 Marcus Folkesson 2025-04-23 372 row[x] = st7571_transform_xy(st7571->hwbuf, x, y);
4b35f0f41ee295 Marcus Folkesson 2025-04-23 373
4b35f0f41ee295 Marcus Folkesson 2025-04-23 374 st7571_set_position(st7571, rect->x1, y);
4b35f0f41ee295 Marcus Folkesson 2025-04-23 375
4b35f0f41ee295 Marcus Folkesson 2025-04-23 376 /* TODO: Investige why we can't write multiple bytes at once */
4b35f0f41ee295 Marcus Folkesson 2025-04-23 377 for (int x = x1; x < x2; x++) {
4b35f0f41ee295 Marcus Folkesson 2025-04-23 378 regmap_bulk_write(st7571->regmap, ST7571_DATA_MODE, row + x, 1);
4b35f0f41ee295 Marcus Folkesson 2025-04-23 379
4b35f0f41ee295 Marcus Folkesson 2025-04-23 380 /*
4b35f0f41ee295 Marcus Folkesson 2025-04-23 381 * As the display supports grayscale, all pixels must be written as two bits
4b35f0f41ee295 Marcus Folkesson 2025-04-23 382 * even if the format is monochrome.
4b35f0f41ee295 Marcus Folkesson 2025-04-23 383 *
4b35f0f41ee295 Marcus Folkesson 2025-04-23 384 * The bit values maps to the following grayscale:
4b35f0f41ee295 Marcus Folkesson 2025-04-23 385 * 0 0 = White
4b35f0f41ee295 Marcus Folkesson 2025-04-23 386 * 0 1 = Light gray
4b35f0f41ee295 Marcus Folkesson 2025-04-23 387 * 1 0 = Dark gray
4b35f0f41ee295 Marcus Folkesson 2025-04-23 388 * 1 1 = Black
4b35f0f41ee295 Marcus Folkesson 2025-04-23 389 *
4b35f0f41ee295 Marcus Folkesson 2025-04-23 390 * For monochrome formats, write the same value twice to get
4b35f0f41ee295 Marcus Folkesson 2025-04-23 391 * either a black or white pixel.
4b35f0f41ee295 Marcus Folkesson 2025-04-23 392 */
4b35f0f41ee295 Marcus Folkesson 2025-04-23 393 if (format == DRM_FORMAT_R1 || format == DRM_FORMAT_XRGB8888)
4b35f0f41ee295 Marcus Folkesson 2025-04-23 394 regmap_bulk_write(st7571->regmap, ST7571_DATA_MODE, row + x, 1);
4b35f0f41ee295 Marcus Folkesson 2025-04-23 395 }
4b35f0f41ee295 Marcus Folkesson 2025-04-23 396 }
4b35f0f41ee295 Marcus Folkesson 2025-04-23 397
4b35f0f41ee295 Marcus Folkesson 2025-04-23 398 return 0;
4b35f0f41ee295 Marcus Folkesson 2025-04-23 399 }
4b35f0f41ee295 Marcus Folkesson 2025-04-23 400
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2025-05-07 13:59 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-05-07 13:58 [linux-next:master 5127/9308] drivers/gpu/drm/tiny/st7571-i2c.c:214 st7571_send_command_list() error: uninitialized symbol 'ret' kernel test robot
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.