Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

drm/gud: rearrange gud_probe() to prepare for function splitting

gud_probe() is currently very large and does many things, including
pipeline setup and feature detection, as well as having USB functions.

This patch re-orders the code in gud_probe() to make it more organised
and easier to split apart in the future.

Signed-off-by: Ruben Wauters <rubenru09@aol.com>
Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>
Link: https://lore.kernel.org/r/20251020140147.5017-1-rubenru09@aol.com/

+24 -21
+24 -21
drivers/gpu/drm/gud/gud_drv.c
··· 249 249 return gud_usb_set(gdrm, request, 0, &val, sizeof(val)); 250 250 } 251 251 252 - static int gud_get_properties(struct gud_device *gdrm) 252 + static int gud_plane_add_properties(struct gud_device *gdrm) 253 253 { 254 254 struct gud_property_req *properties; 255 255 unsigned int i, num_properties; ··· 463 463 return PTR_ERR(gdrm); 464 464 465 465 drm = &gdrm->drm; 466 - drm->mode_config.funcs = &gud_mode_config_funcs; 467 - ret = drmm_mode_config_init(drm); 468 - if (ret) 469 - return ret; 470 466 471 467 gdrm->flags = le32_to_cpu(desc.flags); 472 468 gdrm->compression = desc.compression & GUD_COMPRESSION_LZ4; ··· 479 483 if (ret) 480 484 return ret; 481 485 486 + usb_set_intfdata(intf, gdrm); 487 + 488 + dma_dev = usb_intf_get_dma_device(intf); 489 + if (dma_dev) { 490 + drm_dev_set_dma_dev(drm, dma_dev); 491 + put_device(dma_dev); 492 + } else { 493 + dev_warn(dev, "buffer sharing not supported"); /* not an error */ 494 + } 495 + 496 + /* Mode config init */ 497 + ret = drmm_mode_config_init(drm); 498 + if (ret) 499 + return ret; 500 + 482 501 drm->mode_config.min_width = le32_to_cpu(desc.min_width); 483 502 drm->mode_config.max_width = le32_to_cpu(desc.max_width); 484 503 drm->mode_config.min_height = le32_to_cpu(desc.min_height); 485 504 drm->mode_config.max_height = le32_to_cpu(desc.max_height); 505 + drm->mode_config.funcs = &gud_mode_config_funcs; 486 506 507 + /* Format init */ 487 508 formats_dev = devm_kmalloc(dev, GUD_FORMATS_MAX_NUM, GFP_KERNEL); 488 509 /* Add room for emulated XRGB8888 */ 489 510 formats = devm_kmalloc_array(dev, GUD_FORMATS_MAX_NUM + 1, sizeof(*formats), GFP_KERNEL); ··· 600 587 return -ENOMEM; 601 588 } 602 589 590 + /* Pipeline init */ 603 591 ret = drm_universal_plane_init(drm, &gdrm->plane, 0, 604 592 &gud_plane_funcs, 605 593 formats, num_formats, ··· 612 598 drm_plane_helper_add(&gdrm->plane, &gud_plane_helper_funcs); 613 599 drm_plane_enable_fb_damage_clips(&gdrm->plane); 614 600 615 - devm_kfree(dev, formats); 616 - devm_kfree(dev, formats_dev); 617 - 618 - ret = gud_get_properties(gdrm); 601 + ret = gud_plane_add_properties(gdrm); 619 602 if (ret) { 620 - dev_err(dev, "Failed to get properties (error=%d)\n", ret); 603 + dev_err(dev, "Failed to add properties (error=%d)\n", ret); 621 604 return ret; 622 605 } 623 606 ··· 632 621 } 633 622 634 623 drm_mode_config_reset(drm); 635 - 636 - usb_set_intfdata(intf, gdrm); 637 - 638 - dma_dev = usb_intf_get_dma_device(intf); 639 - if (dma_dev) { 640 - drm_dev_set_dma_dev(drm, dma_dev); 641 - put_device(dma_dev); 642 - } else { 643 - dev_warn(dev, "buffer sharing not supported"); /* not an error */ 644 - } 624 + drm_kms_helper_poll_init(drm); 645 625 646 626 drm_debugfs_add_file(drm, "stats", gud_stats_debugfs, NULL); 647 627 ··· 640 638 if (ret) 641 639 return ret; 642 640 643 - drm_kms_helper_poll_init(drm); 641 + devm_kfree(dev, formats); 642 + devm_kfree(dev, formats_dev); 644 643 645 644 drm_client_setup(drm, NULL); 646 645