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

drm: Rely on mode_config data for fb_helper initialization

Instead of receiving the num_crts as a parameter, we can read it
directly from the mode_config structure. I audited the drivers that
invoke this helper and I believe all of them initialize the mode_config
struct accordingly, prior to calling the fb_helper.

I used the following coccinelle hack to make this transformation, except
for the function headers and comment updates. The first and second
rules are split because I couldn't find a way to remove the unused
temporary variables at the same time I removed the parameter.

// <smpl>
@r@
expression A,B,D,E;
identifier C;
@@
(
- drm_fb_helper_init(A,B,C,D)
+ drm_fb_helper_init(A,B,D)
|
- drm_fbdev_cma_init_with_funcs(A,B,C,D,E)
+ drm_fbdev_cma_init_with_funcs(A,B,D,E)
|
- drm_fbdev_cma_init(A,B,C,D)
+ drm_fbdev_cma_init(A,B,D)
)

@@
expression A,B,C,D,E;
@@
(
- drm_fb_helper_init(A,B,C,D)
+ drm_fb_helper_init(A,B,D)
|
- drm_fbdev_cma_init_with_funcs(A,B,C,D,E)
+ drm_fbdev_cma_init_with_funcs(A,B,D,E)
|
- drm_fbdev_cma_init(A,B,C,D)
+ drm_fbdev_cma_init(A,B,D)
)

@@
identifier r.C;
type T;
expression V;
@@
- T C;
<...
when != C
- C = V;
...>
// </smpl>

Changes since v1:
- Rebased on top of the tip of drm-misc-next.
- Remove mention to sti since a proper fix got merged.

Suggested-by: Daniel Vetter <daniel.vetter@intel.com>
Signed-off-by: Gabriel Krisman Bertazi <krisman@collabora.co.uk>
Reviewed-by: Eric Anholt <eric@anholt.net>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Link: http://patchwork.freedesktop.org/patch/msgid/20170202162640.27261-1-krisman@collabora.co.uk

authored by

Gabriel Krisman Bertazi and committed by
Daniel Vetter
e4563f6b f30c9257

+43 -73
-1
drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c
··· 374 374 &amdgpu_fb_helper_funcs); 375 375 376 376 ret = drm_fb_helper_init(adev->ddev, &rfbdev->helper, 377 - adev->mode_info.num_crtc, 378 377 AMDGPUFB_CONN_LIMIT); 379 378 if (ret) { 380 379 kfree(rfbdev);
+1 -2
drivers/gpu/drm/arc/arcpgu_drv.c
··· 135 135 drm_kms_helper_poll_init(drm); 136 136 137 137 arcpgu->fbdev = drm_fbdev_cma_init(drm, 16, 138 - drm->mode_config.num_crtc, 139 - drm->mode_config.num_connector); 138 + drm->mode_config.num_connector); 140 139 if (IS_ERR(arcpgu->fbdev)) { 141 140 ret = PTR_ERR(arcpgu->fbdev); 142 141 arcpgu->fbdev = NULL;
+1 -1
drivers/gpu/drm/arm/hdlcd_drv.c
··· 349 349 drm_mode_config_reset(drm); 350 350 drm_kms_helper_poll_init(drm); 351 351 352 - hdlcd->fbdev = drm_fbdev_cma_init(drm, 32, drm->mode_config.num_crtc, 352 + hdlcd->fbdev = drm_fbdev_cma_init(drm, 32, 353 353 drm->mode_config.num_connector); 354 354 355 355 if (IS_ERR(hdlcd->fbdev)) {
+1 -1
drivers/gpu/drm/arm/malidp_drv.c
··· 457 457 458 458 drm_mode_config_reset(drm); 459 459 460 - malidp->fbdev = drm_fbdev_cma_init(drm, 32, drm->mode_config.num_crtc, 460 + malidp->fbdev = drm_fbdev_cma_init(drm, 32, 461 461 drm->mode_config.num_connector); 462 462 463 463 if (IS_ERR(malidp->fbdev)) {
+1 -1
drivers/gpu/drm/armada/armada_fbdev.c
··· 137 137 138 138 drm_fb_helper_prepare(dev, fbh, &armada_fb_helper_funcs); 139 139 140 - ret = drm_fb_helper_init(dev, fbh, 1, 1); 140 + ret = drm_fb_helper_init(dev, fbh, 1); 141 141 if (ret) { 142 142 DRM_ERROR("failed to initialize drm fb helper\n"); 143 143 goto err_fb_helper;
+1 -2
drivers/gpu/drm/ast/ast_fb.c
··· 315 315 316 316 drm_fb_helper_prepare(dev, &afbdev->helper, &ast_fb_helper_funcs); 317 317 318 - ret = drm_fb_helper_init(dev, &afbdev->helper, 319 - 1, 1); 318 + ret = drm_fb_helper_init(dev, &afbdev->helper, 1); 320 319 if (ret) 321 320 goto free; 322 321
-1
drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
··· 647 647 platform_set_drvdata(pdev, dev); 648 648 649 649 dc->fbdev = drm_fbdev_cma_init(dev, 24, 650 - dev->mode_config.num_crtc, 651 650 dev->mode_config.num_connector); 652 651 if (IS_ERR(dc->fbdev)) 653 652 dc->fbdev = NULL;
+1 -2
drivers/gpu/drm/bochs/bochs_fbdev.c
··· 169 169 drm_fb_helper_prepare(bochs->dev, &bochs->fb.helper, 170 170 &bochs_fb_helper_funcs); 171 171 172 - ret = drm_fb_helper_init(bochs->dev, &bochs->fb.helper, 173 - 1, 1); 172 + ret = drm_fb_helper_init(bochs->dev, &bochs->fb.helper, 1); 174 173 if (ret) 175 174 return ret; 176 175
+1 -1
drivers/gpu/drm/cirrus/cirrus_fbdev.c
··· 289 289 &cirrus_fb_helper_funcs); 290 290 291 291 ret = drm_fb_helper_init(cdev->dev, &gfbdev->helper, 292 - cdev->num_crtc, CIRRUSFB_CONN_LIMIT); 292 + CIRRUSFB_CONN_LIMIT); 293 293 if (ret) 294 294 return ret; 295 295
+7 -8
drivers/gpu/drm/drm_fb_cma_helper.c
··· 489 489 * drm_fbdev_cma_init_with_funcs() - Allocate and initializes a drm_fbdev_cma struct 490 490 * @dev: DRM device 491 491 * @preferred_bpp: Preferred bits per pixel for the device 492 - * @num_crtc: Number of CRTCs 493 492 * @max_conn_count: Maximum number of connectors 494 493 * @funcs: fb helper functions, in particular a custom dirty() callback 495 494 * 496 495 * Returns a newly allocated drm_fbdev_cma struct or a ERR_PTR. 497 496 */ 498 497 struct drm_fbdev_cma *drm_fbdev_cma_init_with_funcs(struct drm_device *dev, 499 - unsigned int preferred_bpp, unsigned int num_crtc, 500 - unsigned int max_conn_count, const struct drm_framebuffer_funcs *funcs) 498 + unsigned int preferred_bpp, unsigned int max_conn_count, 499 + const struct drm_framebuffer_funcs *funcs) 501 500 { 502 501 struct drm_fbdev_cma *fbdev_cma; 503 502 struct drm_fb_helper *helper; ··· 513 514 514 515 drm_fb_helper_prepare(dev, helper, &drm_fb_cma_helper_funcs); 515 516 516 - ret = drm_fb_helper_init(dev, helper, num_crtc, max_conn_count); 517 + ret = drm_fb_helper_init(dev, helper, max_conn_count); 517 518 if (ret < 0) { 518 519 dev_err(dev->dev, "Failed to initialize drm fb helper.\n"); 519 520 goto err_free; ··· 553 554 * Returns a newly allocated drm_fbdev_cma struct or a ERR_PTR. 554 555 */ 555 556 struct drm_fbdev_cma *drm_fbdev_cma_init(struct drm_device *dev, 556 - unsigned int preferred_bpp, unsigned int num_crtc, 557 - unsigned int max_conn_count) 557 + unsigned int preferred_bpp, unsigned int max_conn_count) 558 558 { 559 - return drm_fbdev_cma_init_with_funcs(dev, preferred_bpp, num_crtc, 560 - max_conn_count, &drm_fb_cma_funcs); 559 + return drm_fbdev_cma_init_with_funcs(dev, preferred_bpp, 560 + max_conn_count, 561 + &drm_fb_cma_funcs); 561 562 } 562 563 EXPORT_SYMBOL_GPL(drm_fbdev_cma_init); 563 564
+5 -5
drivers/gpu/drm/drm_fb_helper.c
··· 712 712 * drm_fb_helper_init - initialize a drm_fb_helper structure 713 713 * @dev: drm device 714 714 * @fb_helper: driver-allocated fbdev helper structure to initialize 715 - * @crtc_count: maximum number of crtcs to support in this fbdev emulation 716 715 * @max_conn_count: max connector count 717 716 * 718 717 * This allocates the structures for the fbdev helper with the given limits. ··· 726 727 */ 727 728 int drm_fb_helper_init(struct drm_device *dev, 728 729 struct drm_fb_helper *fb_helper, 729 - int crtc_count, int max_conn_count) 730 + int max_conn_count) 730 731 { 731 732 struct drm_crtc *crtc; 733 + struct drm_mode_config *config = &dev->mode_config; 732 734 int i; 733 735 734 736 if (!drm_fbdev_emulation) ··· 738 738 if (!max_conn_count) 739 739 return -EINVAL; 740 740 741 - fb_helper->crtc_info = kcalloc(crtc_count, sizeof(struct drm_fb_helper_crtc), GFP_KERNEL); 741 + fb_helper->crtc_info = kcalloc(config->num_crtc, sizeof(struct drm_fb_helper_crtc), GFP_KERNEL); 742 742 if (!fb_helper->crtc_info) 743 743 return -ENOMEM; 744 744 745 - fb_helper->crtc_count = crtc_count; 745 + fb_helper->crtc_count = config->num_crtc; 746 746 fb_helper->connector_info = kcalloc(dev->mode_config.num_connector, sizeof(struct drm_fb_helper_connector *), GFP_KERNEL); 747 747 if (!fb_helper->connector_info) { 748 748 kfree(fb_helper->crtc_info); ··· 751 751 fb_helper->connector_info_alloc_count = dev->mode_config.num_connector; 752 752 fb_helper->connector_count = 0; 753 753 754 - for (i = 0; i < crtc_count; i++) { 754 + for (i = 0; i < fb_helper->crtc_count; i++) { 755 755 fb_helper->crtc_info[i].mode_set.connectors = 756 756 kcalloc(max_conn_count, 757 757 sizeof(struct drm_connector *),
+1 -4
drivers/gpu/drm/exynos/exynos_drm_fbdev.c
··· 208 208 struct exynos_drm_fbdev *fbdev; 209 209 struct exynos_drm_private *private = dev->dev_private; 210 210 struct drm_fb_helper *helper; 211 - unsigned int num_crtc; 212 211 int ret; 213 212 214 213 if (!dev->mode_config.num_crtc || !dev->mode_config.num_connector) ··· 224 225 225 226 drm_fb_helper_prepare(dev, helper, &exynos_drm_fb_helper_funcs); 226 227 227 - num_crtc = dev->mode_config.num_crtc; 228 - 229 - ret = drm_fb_helper_init(dev, helper, num_crtc, MAX_CONNECTOR); 228 + ret = drm_fb_helper_init(dev, helper, MAX_CONNECTOR); 230 229 if (ret < 0) { 231 230 DRM_ERROR("failed to initialize drm fb helper.\n"); 232 231 goto err_init;
+1 -1
drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
··· 94 94 "Invalid legacyfb_depth. Defaulting to 24bpp\n"); 95 95 legacyfb_depth = 24; 96 96 } 97 - fsl_dev->fbdev = drm_fbdev_cma_init(dev, legacyfb_depth, 1, 1); 97 + fsl_dev->fbdev = drm_fbdev_cma_init(dev, legacyfb_depth, 1); 98 98 if (IS_ERR(fsl_dev->fbdev)) { 99 99 ret = PTR_ERR(fsl_dev->fbdev); 100 100 fsl_dev->fbdev = NULL;
+1 -1
drivers/gpu/drm/gma500/framebuffer.c
··· 564 564 drm_fb_helper_prepare(dev, &fbdev->psb_fb_helper, &psb_fb_helper_funcs); 565 565 566 566 ret = drm_fb_helper_init(dev, &fbdev->psb_fb_helper, 567 - dev_priv->ops->crtcs, INTELFB_CONN_LIMIT); 567 + INTELFB_CONN_LIMIT); 568 568 if (ret) 569 569 goto free; 570 570
+1 -2
drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_fbdev.c
··· 200 200 &hibmc_fbdev_helper_funcs); 201 201 202 202 /* Now just one crtc and one channel */ 203 - ret = drm_fb_helper_init(priv->dev, 204 - &hifbdev->helper, 1, 1); 203 + ret = drm_fb_helper_init(priv->dev, &hifbdev->helper, 1); 205 204 if (ret) { 206 205 DRM_ERROR("failed to initialize fb helper: %d\n", ret); 207 206 return ret;
+1 -2
drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c
··· 59 59 drm_fbdev_cma_hotplug_event(priv->fbdev); 60 60 } else { 61 61 priv->fbdev = drm_fbdev_cma_init(dev, 32, 62 - dev->mode_config.num_crtc, 63 - dev->mode_config.num_connector); 62 + dev->mode_config.num_connector); 64 63 if (IS_ERR(priv->fbdev)) 65 64 priv->fbdev = NULL; 66 65 }
+1 -2
drivers/gpu/drm/i915/intel_fbdev.c
··· 713 713 if (!intel_fbdev_init_bios(dev, ifbdev)) 714 714 ifbdev->preferred_bpp = 32; 715 715 716 - ret = drm_fb_helper_init(dev, &ifbdev->helper, 717 - INTEL_INFO(dev_priv)->num_pipes, 4); 716 + ret = drm_fb_helper_init(dev, &ifbdev->helper, 4); 718 717 if (ret) { 719 718 kfree(ifbdev); 720 719 return ret;
+1 -2
drivers/gpu/drm/imx/imx-drm-core.c
··· 389 389 dev_warn(dev, "Invalid legacyfb_depth. Defaulting to 16bpp\n"); 390 390 legacyfb_depth = 16; 391 391 } 392 - imxdrm->fbhelper = drm_fbdev_cma_init(drm, legacyfb_depth, 393 - drm->mode_config.num_crtc, MAX_CRTC); 392 + imxdrm->fbhelper = drm_fbdev_cma_init(drm, legacyfb_depth, MAX_CRTC); 394 393 if (IS_ERR(imxdrm->fbhelper)) { 395 394 ret = PTR_ERR(imxdrm->fbhelper); 396 395 imxdrm->fbhelper = NULL;
-1
drivers/gpu/drm/meson/meson_drv.c
··· 279 279 drm->mode_config.funcs = &meson_mode_config_funcs; 280 280 281 281 priv->fbdev = drm_fbdev_cma_init(drm, 32, 282 - drm->mode_config.num_crtc, 283 282 drm->mode_config.num_connector); 284 283 if (IS_ERR(priv->fbdev)) { 285 284 ret = PTR_ERR(priv->fbdev);
+1 -1
drivers/gpu/drm/mgag200/mgag200_fb.c
··· 286 286 drm_fb_helper_prepare(mdev->dev, &mfbdev->helper, &mga_fb_helper_funcs); 287 287 288 288 ret = drm_fb_helper_init(mdev->dev, &mfbdev->helper, 289 - mdev->num_crtc, MGAG200FB_CONN_LIMIT); 289 + MGAG200FB_CONN_LIMIT); 290 290 if (ret) 291 291 goto err_fb_helper; 292 292
+1 -2
drivers/gpu/drm/msm/msm_fbdev.c
··· 201 201 202 202 drm_fb_helper_prepare(dev, helper, &msm_fb_helper_funcs); 203 203 204 - ret = drm_fb_helper_init(dev, helper, 205 - priv->num_crtcs, priv->num_connectors); 204 + ret = drm_fb_helper_init(dev, helper, priv->num_connectors); 206 205 if (ret) { 207 206 dev_err(dev->dev, "could not init fbdev: ret=%d\n", ret); 208 207 goto fail;
+1 -1
drivers/gpu/drm/mxsfb/mxsfb_drv.c
··· 218 218 219 219 drm_kms_helper_poll_init(drm); 220 220 221 - mxsfb->fbdev = drm_fbdev_cma_init(drm, 32, drm->mode_config.num_crtc, 221 + mxsfb->fbdev = drm_fbdev_cma_init(drm, 32, 222 222 drm->mode_config.num_connector); 223 223 if (IS_ERR(mxsfb->fbdev)) { 224 224 mxsfb->fbdev = NULL;
+1 -2
drivers/gpu/drm/nouveau/nouveau_fbcon.c
··· 507 507 508 508 drm_fb_helper_prepare(dev, &fbcon->helper, &nouveau_fbcon_helper_funcs); 509 509 510 - ret = drm_fb_helper_init(dev, &fbcon->helper, 511 - dev->mode_config.num_crtc, 4); 510 + ret = drm_fb_helper_init(dev, &fbcon->helper, 4); 512 511 if (ret) 513 512 goto free; 514 513
+1 -2
drivers/gpu/drm/omapdrm/omap_fbdev.c
··· 263 263 264 264 drm_fb_helper_prepare(dev, helper, &omap_fb_helper_funcs); 265 265 266 - ret = drm_fb_helper_init(dev, helper, 267 - priv->num_crtcs, priv->num_connectors); 266 + ret = drm_fb_helper_init(dev, helper, priv->num_connectors); 268 267 if (ret) { 269 268 dev_err(dev->dev, "could not init fbdev: ret=%d\n", ret); 270 269 goto fail;
-1
drivers/gpu/drm/qxl/qxl_fb.c
··· 399 399 &qxl_fb_helper_funcs); 400 400 401 401 ret = drm_fb_helper_init(&qdev->ddev, &qfbdev->helper, 402 - qxl_num_crtc, 403 402 QXLFB_CONN_LIMIT); 404 403 if (ret) 405 404 goto free;
-1
drivers/gpu/drm/radeon/radeon_fb.c
··· 366 366 &radeon_fb_helper_funcs); 367 367 368 368 ret = drm_fb_helper_init(rdev->ddev, &rfbdev->helper, 369 - rdev->num_crtc, 370 369 RADEONFB_CONN_LIMIT); 371 370 if (ret) 372 371 goto free;
+1 -1
drivers/gpu/drm/rcar-du/rcar_du_kms.c
··· 662 662 drm_kms_helper_poll_init(dev); 663 663 664 664 if (dev->mode_config.num_connector) { 665 - fbdev = drm_fbdev_cma_init(dev, 32, dev->mode_config.num_crtc, 665 + fbdev = drm_fbdev_cma_init(dev, 32, 666 666 dev->mode_config.num_connector); 667 667 if (IS_ERR(fbdev)) 668 668 return PTR_ERR(fbdev);
+1 -4
drivers/gpu/drm/rockchip/rockchip_drm_fbdev.c
··· 129 129 { 130 130 struct rockchip_drm_private *private = dev->dev_private; 131 131 struct drm_fb_helper *helper; 132 - unsigned int num_crtc; 133 132 int ret; 134 133 135 134 if (!dev->mode_config.num_crtc || !dev->mode_config.num_connector) 136 135 return -EINVAL; 137 136 138 - num_crtc = dev->mode_config.num_crtc; 139 - 140 137 helper = &private->fbdev_helper; 141 138 142 139 drm_fb_helper_prepare(dev, helper, &rockchip_drm_fb_helper_funcs); 143 140 144 - ret = drm_fb_helper_init(dev, helper, num_crtc, ROCKCHIP_MAX_CONNECTOR); 141 + ret = drm_fb_helper_init(dev, helper, ROCKCHIP_MAX_CONNECTOR); 145 142 if (ret < 0) { 146 143 dev_err(dev->dev, "Failed to initialize drm fb helper - %d.\n", 147 144 ret);
+1 -1
drivers/gpu/drm/sti/sti_drv.c
··· 360 360 361 361 private = ddev->dev_private; 362 362 if (ddev->mode_config.num_connector) { 363 - fbdev = drm_fbdev_cma_init(ddev, 32, ddev->mode_config.num_crtc, 363 + fbdev = drm_fbdev_cma_init(ddev, 32, 364 364 ddev->mode_config.num_connector); 365 365 if (IS_ERR(fbdev)) { 366 366 DRM_DEBUG_DRIVER("Warning: fails to create fbdev\n");
+1 -3
drivers/gpu/drm/sun4i/sun4i_framebuffer.c
··· 40 40 41 41 drm->mode_config.funcs = &sun4i_de_mode_config_funcs; 42 42 43 - return drm_fbdev_cma_init(drm, 32, 44 - drm->mode_config.num_crtc, 45 - drm->mode_config.num_connector); 43 + return drm_fbdev_cma_init(drm, 32, drm->mode_config.num_connector); 46 44 } 47 45 48 46 void sun4i_framebuffer_free(struct drm_device *drm)
+1 -1
drivers/gpu/drm/tegra/fb.c
··· 309 309 struct drm_device *drm = fbdev->base.dev; 310 310 int err; 311 311 312 - err = drm_fb_helper_init(drm, &fbdev->base, num_crtc, max_connectors); 312 + err = drm_fb_helper_init(drm, &fbdev->base, max_connectors); 313 313 if (err < 0) { 314 314 dev_err(drm->dev, "failed to initialize DRM FB helper: %d\n", 315 315 err);
+1 -2
drivers/gpu/drm/tilcdc/tilcdc_drv.c
··· 403 403 drm_mode_config_reset(ddev); 404 404 405 405 priv->fbdev = drm_fbdev_cma_init(ddev, bpp, 406 - ddev->mode_config.num_crtc, 407 - ddev->mode_config.num_connector); 406 + ddev->mode_config.num_connector); 408 407 if (IS_ERR(priv->fbdev)) { 409 408 ret = PTR_ERR(priv->fbdev); 410 409 goto init_failed;
+1 -2
drivers/gpu/drm/udl/udl_fb.c
··· 441 441 442 442 drm_fb_helper_prepare(dev, &ufbdev->helper, &udl_fb_helper_funcs); 443 443 444 - ret = drm_fb_helper_init(dev, &ufbdev->helper, 445 - 1, 1); 444 + ret = drm_fb_helper_init(dev, &ufbdev->helper, 1); 446 445 if (ret) 447 446 goto free; 448 447
-1
drivers/gpu/drm/vc4/vc4_kms.c
··· 231 231 drm_mode_config_reset(dev); 232 232 233 233 vc4->fbdev = drm_fbdev_cma_init(dev, 32, 234 - dev->mode_config.num_crtc, 235 234 dev->mode_config.num_connector); 236 235 if (IS_ERR(vc4->fbdev)) 237 236 vc4->fbdev = NULL;
-1
drivers/gpu/drm/virtio/virtgpu_fb.c
··· 387 387 drm_fb_helper_prepare(vgdev->ddev, &vgfbdev->helper, 388 388 &virtio_gpu_fb_helper_funcs); 389 389 ret = drm_fb_helper_init(vgdev->ddev, &vgfbdev->helper, 390 - vgdev->num_scanouts, 391 390 VIRTIO_GPUFB_CONN_LIMIT); 392 391 if (ret) { 393 392 kfree(vgfbdev);
+1 -1
drivers/gpu/drm/zte/zx_drm_drv.c
··· 141 141 drm_mode_config_reset(drm); 142 142 drm_kms_helper_poll_init(drm); 143 143 144 - priv->fbdev = drm_fbdev_cma_init(drm, 32, drm->mode_config.num_crtc, 144 + priv->fbdev = drm_fbdev_cma_init(drm, 32, 145 145 drm->mode_config.num_connector); 146 146 if (IS_ERR(priv->fbdev)) { 147 147 ret = PTR_ERR(priv->fbdev);
+3 -4
include/drm/drm_fb_cma_helper.h
··· 16 16 struct drm_plane_state; 17 17 18 18 struct drm_fbdev_cma *drm_fbdev_cma_init_with_funcs(struct drm_device *dev, 19 - unsigned int preferred_bpp, unsigned int num_crtc, 20 - unsigned int max_conn_count, const struct drm_framebuffer_funcs *funcs); 19 + unsigned int preferred_bpp, unsigned int max_conn_count, 20 + const struct drm_framebuffer_funcs *funcs); 21 21 struct drm_fbdev_cma *drm_fbdev_cma_init(struct drm_device *dev, 22 - unsigned int preferred_bpp, unsigned int num_crtc, 23 - unsigned int max_conn_count); 22 + unsigned int preferred_bpp, unsigned int max_conn_count); 24 23 void drm_fbdev_cma_fini(struct drm_fbdev_cma *fbdev_cma); 25 24 26 25 void drm_fbdev_cma_restore_mode(struct drm_fbdev_cma *fbdev_cma);
+1 -2
include/drm/drm_fb_helper.h
··· 236 236 void drm_fb_helper_prepare(struct drm_device *dev, struct drm_fb_helper *helper, 237 237 const struct drm_fb_helper_funcs *funcs); 238 238 int drm_fb_helper_init(struct drm_device *dev, 239 - struct drm_fb_helper *helper, int crtc_count, 240 - int max_conn); 239 + struct drm_fb_helper *helper, int max_conn); 241 240 void drm_fb_helper_fini(struct drm_fb_helper *helper); 242 241 int drm_fb_helper_blank(int blank, struct fb_info *info); 243 242 int drm_fb_helper_pan_display(struct fb_var_screeninfo *var,