diff mbox

[v2] drm: Rely on mode_config data for fb_helper initialization

Message ID 20170202162640.27261-1-krisman@collabora.co.uk (mailing list archive)
State New, archived
Headers show

Commit Message

Gabriel Krisman Bertazi Feb. 2, 2017, 4:26 p.m. UTC
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>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c            |  1 -
 drivers/gpu/drm/arc/arcpgu_drv.c                  |  3 +--
 drivers/gpu/drm/arm/hdlcd_drv.c                   |  2 +-
 drivers/gpu/drm/arm/malidp_drv.c                  |  2 +-
 drivers/gpu/drm/armada/armada_fbdev.c             |  2 +-
 drivers/gpu/drm/ast/ast_fb.c                      |  3 +--
 drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c      |  1 -
 drivers/gpu/drm/bochs/bochs_fbdev.c               |  3 +--
 drivers/gpu/drm/cirrus/cirrus_fbdev.c             |  2 +-
 drivers/gpu/drm/drm_fb_cma_helper.c               | 15 +++++++--------
 drivers/gpu/drm/drm_fb_helper.c                   | 10 +++++-----
 drivers/gpu/drm/exynos/exynos_drm_fbdev.c         |  5 +----
 drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c         |  2 +-
 drivers/gpu/drm/gma500/framebuffer.c              |  2 +-
 drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_fbdev.c |  3 +--
 drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c   |  3 +--
 drivers/gpu/drm/i915/intel_fbdev.c                |  3 +--
 drivers/gpu/drm/imx/imx-drm-core.c                |  3 +--
 drivers/gpu/drm/meson/meson_drv.c                 |  1 -
 drivers/gpu/drm/mgag200/mgag200_fb.c              |  2 +-
 drivers/gpu/drm/msm/msm_fbdev.c                   |  3 +--
 drivers/gpu/drm/mxsfb/mxsfb_drv.c                 |  2 +-
 drivers/gpu/drm/nouveau/nouveau_fbcon.c           |  3 +--
 drivers/gpu/drm/omapdrm/omap_fbdev.c              |  3 +--
 drivers/gpu/drm/qxl/qxl_fb.c                      |  1 -
 drivers/gpu/drm/radeon/radeon_fb.c                |  1 -
 drivers/gpu/drm/rcar-du/rcar_du_kms.c             |  2 +-
 drivers/gpu/drm/rockchip/rockchip_drm_fbdev.c     |  5 +----
 drivers/gpu/drm/sti/sti_drv.c                     |  2 +-
 drivers/gpu/drm/sun4i/sun4i_framebuffer.c         |  4 +---
 drivers/gpu/drm/tegra/fb.c                        |  2 +-
 drivers/gpu/drm/tilcdc/tilcdc_drv.c               |  3 +--
 drivers/gpu/drm/udl/udl_fb.c                      |  3 +--
 drivers/gpu/drm/vc4/vc4_kms.c                     |  1 -
 drivers/gpu/drm/virtio/virtgpu_fb.c               |  1 -
 drivers/gpu/drm/zte/zx_drm_drv.c                  |  2 +-
 include/drm/drm_fb_cma_helper.h                   |  7 +++----
 include/drm/drm_fb_helper.h                       |  3 +--
 38 files changed, 43 insertions(+), 73 deletions(-)

Comments

Daniel Vetter Feb. 2, 2017, 6:12 p.m. UTC | #1
On Thu, Feb 02, 2017 at 02:26:40PM -0200, Gabriel Krisman Bertazi wrote:
> 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>

Yup, this applied cleanly, thanks for respinning.
-Daniel

> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c            |  1 -
>  drivers/gpu/drm/arc/arcpgu_drv.c                  |  3 +--
>  drivers/gpu/drm/arm/hdlcd_drv.c                   |  2 +-
>  drivers/gpu/drm/arm/malidp_drv.c                  |  2 +-
>  drivers/gpu/drm/armada/armada_fbdev.c             |  2 +-
>  drivers/gpu/drm/ast/ast_fb.c                      |  3 +--
>  drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c      |  1 -
>  drivers/gpu/drm/bochs/bochs_fbdev.c               |  3 +--
>  drivers/gpu/drm/cirrus/cirrus_fbdev.c             |  2 +-
>  drivers/gpu/drm/drm_fb_cma_helper.c               | 15 +++++++--------
>  drivers/gpu/drm/drm_fb_helper.c                   | 10 +++++-----
>  drivers/gpu/drm/exynos/exynos_drm_fbdev.c         |  5 +----
>  drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c         |  2 +-
>  drivers/gpu/drm/gma500/framebuffer.c              |  2 +-
>  drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_fbdev.c |  3 +--
>  drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c   |  3 +--
>  drivers/gpu/drm/i915/intel_fbdev.c                |  3 +--
>  drivers/gpu/drm/imx/imx-drm-core.c                |  3 +--
>  drivers/gpu/drm/meson/meson_drv.c                 |  1 -
>  drivers/gpu/drm/mgag200/mgag200_fb.c              |  2 +-
>  drivers/gpu/drm/msm/msm_fbdev.c                   |  3 +--
>  drivers/gpu/drm/mxsfb/mxsfb_drv.c                 |  2 +-
>  drivers/gpu/drm/nouveau/nouveau_fbcon.c           |  3 +--
>  drivers/gpu/drm/omapdrm/omap_fbdev.c              |  3 +--
>  drivers/gpu/drm/qxl/qxl_fb.c                      |  1 -
>  drivers/gpu/drm/radeon/radeon_fb.c                |  1 -
>  drivers/gpu/drm/rcar-du/rcar_du_kms.c             |  2 +-
>  drivers/gpu/drm/rockchip/rockchip_drm_fbdev.c     |  5 +----
>  drivers/gpu/drm/sti/sti_drv.c                     |  2 +-
>  drivers/gpu/drm/sun4i/sun4i_framebuffer.c         |  4 +---
>  drivers/gpu/drm/tegra/fb.c                        |  2 +-
>  drivers/gpu/drm/tilcdc/tilcdc_drv.c               |  3 +--
>  drivers/gpu/drm/udl/udl_fb.c                      |  3 +--
>  drivers/gpu/drm/vc4/vc4_kms.c                     |  1 -
>  drivers/gpu/drm/virtio/virtgpu_fb.c               |  1 -
>  drivers/gpu/drm/zte/zx_drm_drv.c                  |  2 +-
>  include/drm/drm_fb_cma_helper.h                   |  7 +++----
>  include/drm/drm_fb_helper.h                       |  3 +--
>  38 files changed, 43 insertions(+), 73 deletions(-)
> 
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c
> index 838943d0962e..36ce3cac81ba 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c
> @@ -374,7 +374,6 @@ int amdgpu_fbdev_init(struct amdgpu_device *adev)
>  			&amdgpu_fb_helper_funcs);
>  
>  	ret = drm_fb_helper_init(adev->ddev, &rfbdev->helper,
> -				 adev->mode_info.num_crtc,
>  				 AMDGPUFB_CONN_LIMIT);
>  	if (ret) {
>  		kfree(rfbdev);
> diff --git a/drivers/gpu/drm/arc/arcpgu_drv.c b/drivers/gpu/drm/arc/arcpgu_drv.c
> index 0b6eaa49a1db..8d8344ed655e 100644
> --- a/drivers/gpu/drm/arc/arcpgu_drv.c
> +++ b/drivers/gpu/drm/arc/arcpgu_drv.c
> @@ -135,8 +135,7 @@ static int arcpgu_load(struct drm_device *drm)
>  	drm_kms_helper_poll_init(drm);
>  
>  	arcpgu->fbdev = drm_fbdev_cma_init(drm, 16,
> -					      drm->mode_config.num_crtc,
> -					      drm->mode_config.num_connector);
> +					   drm->mode_config.num_connector);
>  	if (IS_ERR(arcpgu->fbdev)) {
>  		ret = PTR_ERR(arcpgu->fbdev);
>  		arcpgu->fbdev = NULL;
> diff --git a/drivers/gpu/drm/arm/hdlcd_drv.c b/drivers/gpu/drm/arm/hdlcd_drv.c
> index a2e5b04cdee3..4ce4f970920b 100644
> --- a/drivers/gpu/drm/arm/hdlcd_drv.c
> +++ b/drivers/gpu/drm/arm/hdlcd_drv.c
> @@ -349,7 +349,7 @@ static int hdlcd_drm_bind(struct device *dev)
>  	drm_mode_config_reset(drm);
>  	drm_kms_helper_poll_init(drm);
>  
> -	hdlcd->fbdev = drm_fbdev_cma_init(drm, 32, drm->mode_config.num_crtc,
> +	hdlcd->fbdev = drm_fbdev_cma_init(drm, 32,
>  					  drm->mode_config.num_connector);
>  
>  	if (IS_ERR(hdlcd->fbdev)) {
> diff --git a/drivers/gpu/drm/arm/malidp_drv.c b/drivers/gpu/drm/arm/malidp_drv.c
> index 99fb0ab39191..8b0672d4aee9 100644
> --- a/drivers/gpu/drm/arm/malidp_drv.c
> +++ b/drivers/gpu/drm/arm/malidp_drv.c
> @@ -457,7 +457,7 @@ static int malidp_bind(struct device *dev)
>  
>  	drm_mode_config_reset(drm);
>  
> -	malidp->fbdev = drm_fbdev_cma_init(drm, 32, drm->mode_config.num_crtc,
> +	malidp->fbdev = drm_fbdev_cma_init(drm, 32,
>  					   drm->mode_config.num_connector);
>  
>  	if (IS_ERR(malidp->fbdev)) {
> diff --git a/drivers/gpu/drm/armada/armada_fbdev.c b/drivers/gpu/drm/armada/armada_fbdev.c
> index 78335100cbc3..0233e1dc33e1 100644
> --- a/drivers/gpu/drm/armada/armada_fbdev.c
> +++ b/drivers/gpu/drm/armada/armada_fbdev.c
> @@ -137,7 +137,7 @@ int armada_fbdev_init(struct drm_device *dev)
>  
>  	drm_fb_helper_prepare(dev, fbh, &armada_fb_helper_funcs);
>  
> -	ret = drm_fb_helper_init(dev, fbh, 1, 1);
> +	ret = drm_fb_helper_init(dev, fbh, 1);
>  	if (ret) {
>  		DRM_ERROR("failed to initialize drm fb helper\n");
>  		goto err_fb_helper;
> diff --git a/drivers/gpu/drm/ast/ast_fb.c b/drivers/gpu/drm/ast/ast_fb.c
> index b085140fae95..5d0ffab411a8 100644
> --- a/drivers/gpu/drm/ast/ast_fb.c
> +++ b/drivers/gpu/drm/ast/ast_fb.c
> @@ -315,8 +315,7 @@ int ast_fbdev_init(struct drm_device *dev)
>  
>  	drm_fb_helper_prepare(dev, &afbdev->helper, &ast_fb_helper_funcs);
>  
> -	ret = drm_fb_helper_init(dev, &afbdev->helper,
> -				 1, 1);
> +	ret = drm_fb_helper_init(dev, &afbdev->helper, 1);
>  	if (ret)
>  		goto free;
>  
> diff --git a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
> index 0bf32d6ac39b..427bdff425c2 100644
> --- a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
> +++ b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
> @@ -647,7 +647,6 @@ static int atmel_hlcdc_dc_load(struct drm_device *dev)
>  	platform_set_drvdata(pdev, dev);
>  
>  	dc->fbdev = drm_fbdev_cma_init(dev, 24,
> -			dev->mode_config.num_crtc,
>  			dev->mode_config.num_connector);
>  	if (IS_ERR(dc->fbdev))
>  		dc->fbdev = NULL;
> diff --git a/drivers/gpu/drm/bochs/bochs_fbdev.c b/drivers/gpu/drm/bochs/bochs_fbdev.c
> index 0317c3df6a22..932a769637ef 100644
> --- a/drivers/gpu/drm/bochs/bochs_fbdev.c
> +++ b/drivers/gpu/drm/bochs/bochs_fbdev.c
> @@ -169,8 +169,7 @@ int bochs_fbdev_init(struct bochs_device *bochs)
>  	drm_fb_helper_prepare(bochs->dev, &bochs->fb.helper,
>  			      &bochs_fb_helper_funcs);
>  
> -	ret = drm_fb_helper_init(bochs->dev, &bochs->fb.helper,
> -				 1, 1);
> +	ret = drm_fb_helper_init(bochs->dev, &bochs->fb.helper, 1);
>  	if (ret)
>  		return ret;
>  
> diff --git a/drivers/gpu/drm/cirrus/cirrus_fbdev.c b/drivers/gpu/drm/cirrus/cirrus_fbdev.c
> index 79a5cd108245..4cc679278182 100644
> --- a/drivers/gpu/drm/cirrus/cirrus_fbdev.c
> +++ b/drivers/gpu/drm/cirrus/cirrus_fbdev.c
> @@ -289,7 +289,7 @@ int cirrus_fbdev_init(struct cirrus_device *cdev)
>  			      &cirrus_fb_helper_funcs);
>  
>  	ret = drm_fb_helper_init(cdev->dev, &gfbdev->helper,
> -				 cdev->num_crtc, CIRRUSFB_CONN_LIMIT);
> +				 CIRRUSFB_CONN_LIMIT);
>  	if (ret)
>  		return ret;
>  
> diff --git a/drivers/gpu/drm/drm_fb_cma_helper.c b/drivers/gpu/drm/drm_fb_cma_helper.c
> index 0ef8b284a4b8..596fabf18c3e 100644
> --- a/drivers/gpu/drm/drm_fb_cma_helper.c
> +++ b/drivers/gpu/drm/drm_fb_cma_helper.c
> @@ -489,15 +489,14 @@ static const struct drm_fb_helper_funcs drm_fb_cma_helper_funcs = {
>   * drm_fbdev_cma_init_with_funcs() - Allocate and initializes a drm_fbdev_cma struct
>   * @dev: DRM device
>   * @preferred_bpp: Preferred bits per pixel for the device
> - * @num_crtc: Number of CRTCs
>   * @max_conn_count: Maximum number of connectors
>   * @funcs: fb helper functions, in particular a custom dirty() callback
>   *
>   * Returns a newly allocated drm_fbdev_cma struct or a ERR_PTR.
>   */
>  struct drm_fbdev_cma *drm_fbdev_cma_init_with_funcs(struct drm_device *dev,
> -	unsigned int preferred_bpp, unsigned int num_crtc,
> -	unsigned int max_conn_count, const struct drm_framebuffer_funcs *funcs)
> +	unsigned int preferred_bpp, unsigned int max_conn_count,
> +	const struct drm_framebuffer_funcs *funcs)
>  {
>  	struct drm_fbdev_cma *fbdev_cma;
>  	struct drm_fb_helper *helper;
> @@ -514,7 +513,7 @@ struct drm_fbdev_cma *drm_fbdev_cma_init_with_funcs(struct drm_device *dev,
>  
>  	drm_fb_helper_prepare(dev, helper, &drm_fb_cma_helper_funcs);
>  
> -	ret = drm_fb_helper_init(dev, helper, num_crtc, max_conn_count);
> +	ret = drm_fb_helper_init(dev, helper, max_conn_count);
>  	if (ret < 0) {
>  		dev_err(dev->dev, "Failed to initialize drm fb helper.\n");
>  		goto err_free;
> @@ -554,11 +553,11 @@ EXPORT_SYMBOL_GPL(drm_fbdev_cma_init_with_funcs);
>   * Returns a newly allocated drm_fbdev_cma struct or a ERR_PTR.
>   */
>  struct drm_fbdev_cma *drm_fbdev_cma_init(struct drm_device *dev,
> -	unsigned int preferred_bpp, unsigned int num_crtc,
> -	unsigned int max_conn_count)
> +	unsigned int preferred_bpp, unsigned int max_conn_count)
>  {
> -	return drm_fbdev_cma_init_with_funcs(dev, preferred_bpp, num_crtc,
> -				max_conn_count, &drm_fb_cma_funcs);
> +	return drm_fbdev_cma_init_with_funcs(dev, preferred_bpp,
> +					     max_conn_count,
> +					     &drm_fb_cma_funcs);
>  }
>  EXPORT_SYMBOL_GPL(drm_fbdev_cma_init);
>  
> diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c
> index c7fafa175755..a30c645035de 100644
> --- a/drivers/gpu/drm/drm_fb_helper.c
> +++ b/drivers/gpu/drm/drm_fb_helper.c
> @@ -712,7 +712,6 @@ EXPORT_SYMBOL(drm_fb_helper_prepare);
>   * drm_fb_helper_init - initialize a drm_fb_helper structure
>   * @dev: drm device
>   * @fb_helper: driver-allocated fbdev helper structure to initialize
> - * @crtc_count: maximum number of crtcs to support in this fbdev emulation
>   * @max_conn_count: max connector count
>   *
>   * This allocates the structures for the fbdev helper with the given limits.
> @@ -727,9 +726,10 @@ EXPORT_SYMBOL(drm_fb_helper_prepare);
>   */
>  int drm_fb_helper_init(struct drm_device *dev,
>  		       struct drm_fb_helper *fb_helper,
> -		       int crtc_count, int max_conn_count)
> +		       int max_conn_count)
>  {
>  	struct drm_crtc *crtc;
> +	struct drm_mode_config *config = &dev->mode_config;
>  	int i;
>  
>  	if (!drm_fbdev_emulation)
> @@ -738,11 +738,11 @@ int drm_fb_helper_init(struct drm_device *dev,
>  	if (!max_conn_count)
>  		return -EINVAL;
>  
> -	fb_helper->crtc_info = kcalloc(crtc_count, sizeof(struct drm_fb_helper_crtc), GFP_KERNEL);
> +	fb_helper->crtc_info = kcalloc(config->num_crtc, sizeof(struct drm_fb_helper_crtc), GFP_KERNEL);
>  	if (!fb_helper->crtc_info)
>  		return -ENOMEM;
>  
> -	fb_helper->crtc_count = crtc_count;
> +	fb_helper->crtc_count = config->num_crtc;
>  	fb_helper->connector_info = kcalloc(dev->mode_config.num_connector, sizeof(struct drm_fb_helper_connector *), GFP_KERNEL);
>  	if (!fb_helper->connector_info) {
>  		kfree(fb_helper->crtc_info);
> @@ -751,7 +751,7 @@ int drm_fb_helper_init(struct drm_device *dev,
>  	fb_helper->connector_info_alloc_count = dev->mode_config.num_connector;
>  	fb_helper->connector_count = 0;
>  
> -	for (i = 0; i < crtc_count; i++) {
> +	for (i = 0; i < fb_helper->crtc_count; i++) {
>  		fb_helper->crtc_info[i].mode_set.connectors =
>  			kcalloc(max_conn_count,
>  				sizeof(struct drm_connector *),
> diff --git a/drivers/gpu/drm/exynos/exynos_drm_fbdev.c b/drivers/gpu/drm/exynos/exynos_drm_fbdev.c
> index a7884bea42eb..bcdb2720b68e 100644
> --- a/drivers/gpu/drm/exynos/exynos_drm_fbdev.c
> +++ b/drivers/gpu/drm/exynos/exynos_drm_fbdev.c
> @@ -208,7 +208,6 @@ int exynos_drm_fbdev_init(struct drm_device *dev)
>  	struct exynos_drm_fbdev *fbdev;
>  	struct exynos_drm_private *private = dev->dev_private;
>  	struct drm_fb_helper *helper;
> -	unsigned int num_crtc;
>  	int ret;
>  
>  	if (!dev->mode_config.num_crtc || !dev->mode_config.num_connector)
> @@ -225,9 +224,7 @@ int exynos_drm_fbdev_init(struct drm_device *dev)
>  
>  	drm_fb_helper_prepare(dev, helper, &exynos_drm_fb_helper_funcs);
>  
> -	num_crtc = dev->mode_config.num_crtc;
> -
> -	ret = drm_fb_helper_init(dev, helper, num_crtc, MAX_CONNECTOR);
> +	ret = drm_fb_helper_init(dev, helper, MAX_CONNECTOR);
>  	if (ret < 0) {
>  		DRM_ERROR("failed to initialize drm fb helper.\n");
>  		goto err_init;
> diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
> index 48705248f894..04173235f448 100644
> --- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
> +++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
> @@ -94,7 +94,7 @@ static int fsl_dcu_load(struct drm_device *dev, unsigned long flags)
>  			"Invalid legacyfb_depth.  Defaulting to 24bpp\n");
>  		legacyfb_depth = 24;
>  	}
> -	fsl_dev->fbdev = drm_fbdev_cma_init(dev, legacyfb_depth, 1, 1);
> +	fsl_dev->fbdev = drm_fbdev_cma_init(dev, legacyfb_depth, 1);
>  	if (IS_ERR(fsl_dev->fbdev)) {
>  		ret = PTR_ERR(fsl_dev->fbdev);
>  		fsl_dev->fbdev = NULL;
> diff --git a/drivers/gpu/drm/gma500/framebuffer.c b/drivers/gpu/drm/gma500/framebuffer.c
> index fd1488bf5189..da42d2e1d397 100644
> --- a/drivers/gpu/drm/gma500/framebuffer.c
> +++ b/drivers/gpu/drm/gma500/framebuffer.c
> @@ -564,7 +564,7 @@ int psb_fbdev_init(struct drm_device *dev)
>  	drm_fb_helper_prepare(dev, &fbdev->psb_fb_helper, &psb_fb_helper_funcs);
>  
>  	ret = drm_fb_helper_init(dev, &fbdev->psb_fb_helper,
> -				 dev_priv->ops->crtcs, INTELFB_CONN_LIMIT);
> +				 INTELFB_CONN_LIMIT);
>  	if (ret)
>  		goto free;
>  
> diff --git a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_fbdev.c b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_fbdev.c
> index 16fe79053ee1..d7a4d9095b33 100644
> --- a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_fbdev.c
> +++ b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_fbdev.c
> @@ -200,8 +200,7 @@ int hibmc_fbdev_init(struct hibmc_drm_private *priv)
>  			      &hibmc_fbdev_helper_funcs);
>  
>  	/* Now just one crtc and one channel */
> -	ret = drm_fb_helper_init(priv->dev,
> -				 &hifbdev->helper, 1, 1);
> +	ret = drm_fb_helper_init(priv->dev, &hifbdev->helper, 1);
>  	if (ret) {
>  		DRM_ERROR("failed to initialize fb helper: %d\n", ret);
>  		return ret;
> diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c
> index 7df0e8535e41..7ec93aec7e88 100644
> --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c
> +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c
> @@ -59,8 +59,7 @@ static void kirin_fbdev_output_poll_changed(struct drm_device *dev)
>  		drm_fbdev_cma_hotplug_event(priv->fbdev);
>  	} else {
>  		priv->fbdev = drm_fbdev_cma_init(dev, 32,
> -				dev->mode_config.num_crtc,
> -				dev->mode_config.num_connector);
> +						 dev->mode_config.num_connector);
>  		if (IS_ERR(priv->fbdev))
>  			priv->fbdev = NULL;
>  	}
> diff --git a/drivers/gpu/drm/i915/intel_fbdev.c b/drivers/gpu/drm/i915/intel_fbdev.c
> index e0d9e72cf3d1..1b8ba2e77539 100644
> --- a/drivers/gpu/drm/i915/intel_fbdev.c
> +++ b/drivers/gpu/drm/i915/intel_fbdev.c
> @@ -713,8 +713,7 @@ int intel_fbdev_init(struct drm_device *dev)
>  	if (!intel_fbdev_init_bios(dev, ifbdev))
>  		ifbdev->preferred_bpp = 32;
>  
> -	ret = drm_fb_helper_init(dev, &ifbdev->helper,
> -				 INTEL_INFO(dev_priv)->num_pipes, 4);
> +	ret = drm_fb_helper_init(dev, &ifbdev->helper, 4);
>  	if (ret) {
>  		kfree(ifbdev);
>  		return ret;
> diff --git a/drivers/gpu/drm/imx/imx-drm-core.c b/drivers/gpu/drm/imx/imx-drm-core.c
> index 33404295b447..5ae48836652e 100644
> --- a/drivers/gpu/drm/imx/imx-drm-core.c
> +++ b/drivers/gpu/drm/imx/imx-drm-core.c
> @@ -389,8 +389,7 @@ static int imx_drm_bind(struct device *dev)
>  		dev_warn(dev, "Invalid legacyfb_depth.  Defaulting to 16bpp\n");
>  		legacyfb_depth = 16;
>  	}
> -	imxdrm->fbhelper = drm_fbdev_cma_init(drm, legacyfb_depth,
> -				drm->mode_config.num_crtc, MAX_CRTC);
> +	imxdrm->fbhelper = drm_fbdev_cma_init(drm, legacyfb_depth, MAX_CRTC);
>  	if (IS_ERR(imxdrm->fbhelper)) {
>  		ret = PTR_ERR(imxdrm->fbhelper);
>  		imxdrm->fbhelper = NULL;
> diff --git a/drivers/gpu/drm/meson/meson_drv.c b/drivers/gpu/drm/meson/meson_drv.c
> index ff1f6019b97b..644d4c14dd40 100644
> --- a/drivers/gpu/drm/meson/meson_drv.c
> +++ b/drivers/gpu/drm/meson/meson_drv.c
> @@ -279,7 +279,6 @@ static int meson_drv_probe(struct platform_device *pdev)
>  	drm->mode_config.funcs = &meson_mode_config_funcs;
>  
>  	priv->fbdev = drm_fbdev_cma_init(drm, 32,
> -					 drm->mode_config.num_crtc,
>  					 drm->mode_config.num_connector);
>  	if (IS_ERR(priv->fbdev)) {
>  		ret = PTR_ERR(priv->fbdev);
> diff --git a/drivers/gpu/drm/mgag200/mgag200_fb.c b/drivers/gpu/drm/mgag200/mgag200_fb.c
> index 1a665e1671b8..a449bb91213a 100644
> --- a/drivers/gpu/drm/mgag200/mgag200_fb.c
> +++ b/drivers/gpu/drm/mgag200/mgag200_fb.c
> @@ -286,7 +286,7 @@ int mgag200_fbdev_init(struct mga_device *mdev)
>  	drm_fb_helper_prepare(mdev->dev, &mfbdev->helper, &mga_fb_helper_funcs);
>  
>  	ret = drm_fb_helper_init(mdev->dev, &mfbdev->helper,
> -				 mdev->num_crtc, MGAG200FB_CONN_LIMIT);
> +				 MGAG200FB_CONN_LIMIT);
>  	if (ret)
>  		goto err_fb_helper;
>  
> diff --git a/drivers/gpu/drm/msm/msm_fbdev.c b/drivers/gpu/drm/msm/msm_fbdev.c
> index f8a587eac6b8..6b1b375653f7 100644
> --- a/drivers/gpu/drm/msm/msm_fbdev.c
> +++ b/drivers/gpu/drm/msm/msm_fbdev.c
> @@ -201,8 +201,7 @@ struct drm_fb_helper *msm_fbdev_init(struct drm_device *dev)
>  
>  	drm_fb_helper_prepare(dev, helper, &msm_fb_helper_funcs);
>  
> -	ret = drm_fb_helper_init(dev, helper,
> -			priv->num_crtcs, priv->num_connectors);
> +	ret = drm_fb_helper_init(dev, helper, priv->num_connectors);
>  	if (ret) {
>  		dev_err(dev->dev, "could not init fbdev: ret=%d\n", ret);
>  		goto fail;
> diff --git a/drivers/gpu/drm/mxsfb/mxsfb_drv.c b/drivers/gpu/drm/mxsfb/mxsfb_drv.c
> index 955441f71500..cdfbe0284635 100644
> --- a/drivers/gpu/drm/mxsfb/mxsfb_drv.c
> +++ b/drivers/gpu/drm/mxsfb/mxsfb_drv.c
> @@ -218,7 +218,7 @@ static int mxsfb_load(struct drm_device *drm, unsigned long flags)
>  
>  	drm_kms_helper_poll_init(drm);
>  
> -	mxsfb->fbdev = drm_fbdev_cma_init(drm, 32, drm->mode_config.num_crtc,
> +	mxsfb->fbdev = drm_fbdev_cma_init(drm, 32,
>  					  drm->mode_config.num_connector);
>  	if (IS_ERR(mxsfb->fbdev)) {
>  		mxsfb->fbdev = NULL;
> diff --git a/drivers/gpu/drm/nouveau/nouveau_fbcon.c b/drivers/gpu/drm/nouveau/nouveau_fbcon.c
> index 9de6abb65781..971c147a3984 100644
> --- a/drivers/gpu/drm/nouveau/nouveau_fbcon.c
> +++ b/drivers/gpu/drm/nouveau/nouveau_fbcon.c
> @@ -507,8 +507,7 @@ nouveau_fbcon_init(struct drm_device *dev)
>  
>  	drm_fb_helper_prepare(dev, &fbcon->helper, &nouveau_fbcon_helper_funcs);
>  
> -	ret = drm_fb_helper_init(dev, &fbcon->helper,
> -				 dev->mode_config.num_crtc, 4);
> +	ret = drm_fb_helper_init(dev, &fbcon->helper, 4);
>  	if (ret)
>  		goto free;
>  
> diff --git a/drivers/gpu/drm/omapdrm/omap_fbdev.c b/drivers/gpu/drm/omapdrm/omap_fbdev.c
> index 2a839956dae6..942c4d483008 100644
> --- a/drivers/gpu/drm/omapdrm/omap_fbdev.c
> +++ b/drivers/gpu/drm/omapdrm/omap_fbdev.c
> @@ -263,8 +263,7 @@ struct drm_fb_helper *omap_fbdev_init(struct drm_device *dev)
>  
>  	drm_fb_helper_prepare(dev, helper, &omap_fb_helper_funcs);
>  
> -	ret = drm_fb_helper_init(dev, helper,
> -			priv->num_crtcs, priv->num_connectors);
> +	ret = drm_fb_helper_init(dev, helper, priv->num_connectors);
>  	if (ret) {
>  		dev_err(dev->dev, "could not init fbdev: ret=%d\n", ret);
>  		goto fail;
> diff --git a/drivers/gpu/drm/qxl/qxl_fb.c b/drivers/gpu/drm/qxl/qxl_fb.c
> index 53edfa498af5..d479b7a7abe4 100644
> --- a/drivers/gpu/drm/qxl/qxl_fb.c
> +++ b/drivers/gpu/drm/qxl/qxl_fb.c
> @@ -399,7 +399,6 @@ int qxl_fbdev_init(struct qxl_device *qdev)
>  			      &qxl_fb_helper_funcs);
>  
>  	ret = drm_fb_helper_init(&qdev->ddev, &qfbdev->helper,
> -				 qxl_num_crtc,
>  				 QXLFB_CONN_LIMIT);
>  	if (ret)
>  		goto free;
> diff --git a/drivers/gpu/drm/radeon/radeon_fb.c b/drivers/gpu/drm/radeon/radeon_fb.c
> index 6c10a83f3362..2be4fe9c7217 100644
> --- a/drivers/gpu/drm/radeon/radeon_fb.c
> +++ b/drivers/gpu/drm/radeon/radeon_fb.c
> @@ -366,7 +366,6 @@ int radeon_fbdev_init(struct radeon_device *rdev)
>  			      &radeon_fb_helper_funcs);
>  
>  	ret = drm_fb_helper_init(rdev->ddev, &rfbdev->helper,
> -				 rdev->num_crtc,
>  				 RADEONFB_CONN_LIMIT);
>  	if (ret)
>  		goto free;
> diff --git a/drivers/gpu/drm/rcar-du/rcar_du_kms.c b/drivers/gpu/drm/rcar-du/rcar_du_kms.c
> index b5d3f16cfa12..ff61f6032f2c 100644
> --- a/drivers/gpu/drm/rcar-du/rcar_du_kms.c
> +++ b/drivers/gpu/drm/rcar-du/rcar_du_kms.c
> @@ -662,7 +662,7 @@ int rcar_du_modeset_init(struct rcar_du_device *rcdu)
>  	drm_kms_helper_poll_init(dev);
>  
>  	if (dev->mode_config.num_connector) {
> -		fbdev = drm_fbdev_cma_init(dev, 32, dev->mode_config.num_crtc,
> +		fbdev = drm_fbdev_cma_init(dev, 32,
>  					   dev->mode_config.num_connector);
>  		if (IS_ERR(fbdev))
>  			return PTR_ERR(fbdev);
> diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_fbdev.c b/drivers/gpu/drm/rockchip/rockchip_drm_fbdev.c
> index 52d1fdf9f9da..70ad50dd594d 100644
> --- a/drivers/gpu/drm/rockchip/rockchip_drm_fbdev.c
> +++ b/drivers/gpu/drm/rockchip/rockchip_drm_fbdev.c
> @@ -129,19 +129,16 @@ int rockchip_drm_fbdev_init(struct drm_device *dev)
>  {
>  	struct rockchip_drm_private *private = dev->dev_private;
>  	struct drm_fb_helper *helper;
> -	unsigned int num_crtc;
>  	int ret;
>  
>  	if (!dev->mode_config.num_crtc || !dev->mode_config.num_connector)
>  		return -EINVAL;
>  
> -	num_crtc = dev->mode_config.num_crtc;
> -
>  	helper = &private->fbdev_helper;
>  
>  	drm_fb_helper_prepare(dev, helper, &rockchip_drm_fb_helper_funcs);
>  
> -	ret = drm_fb_helper_init(dev, helper, num_crtc, ROCKCHIP_MAX_CONNECTOR);
> +	ret = drm_fb_helper_init(dev, helper, ROCKCHIP_MAX_CONNECTOR);
>  	if (ret < 0) {
>  		dev_err(dev->dev, "Failed to initialize drm fb helper - %d.\n",
>  			ret);
> diff --git a/drivers/gpu/drm/sti/sti_drv.c b/drivers/gpu/drm/sti/sti_drv.c
> index acc056644cd0..788feed208d7 100644
> --- a/drivers/gpu/drm/sti/sti_drv.c
> +++ b/drivers/gpu/drm/sti/sti_drv.c
> @@ -360,7 +360,7 @@ static int sti_bind(struct device *dev)
>  
>  	private = ddev->dev_private;
>  	if (ddev->mode_config.num_connector) {
> -		fbdev = drm_fbdev_cma_init(ddev, 32, ddev->mode_config.num_crtc,
> +		fbdev = drm_fbdev_cma_init(ddev, 32,
>  					   ddev->mode_config.num_connector);
>  		if (IS_ERR(fbdev)) {
>  			DRM_DEBUG_DRIVER("Warning: fails to create fbdev\n");
> diff --git a/drivers/gpu/drm/sun4i/sun4i_framebuffer.c b/drivers/gpu/drm/sun4i/sun4i_framebuffer.c
> index 8b6ce619ad81..2c3beff8b53e 100644
> --- a/drivers/gpu/drm/sun4i/sun4i_framebuffer.c
> +++ b/drivers/gpu/drm/sun4i/sun4i_framebuffer.c
> @@ -40,9 +40,7 @@ struct drm_fbdev_cma *sun4i_framebuffer_init(struct drm_device *drm)
>  
>  	drm->mode_config.funcs = &sun4i_de_mode_config_funcs;
>  
> -	return drm_fbdev_cma_init(drm, 32,
> -				  drm->mode_config.num_crtc,
> -				  drm->mode_config.num_connector);
> +	return drm_fbdev_cma_init(drm, 32, drm->mode_config.num_connector);
>  }
>  
>  void sun4i_framebuffer_free(struct drm_device *drm)
> diff --git a/drivers/gpu/drm/tegra/fb.c b/drivers/gpu/drm/tegra/fb.c
> index f896e2ff7d47..f142f6a4db25 100644
> --- a/drivers/gpu/drm/tegra/fb.c
> +++ b/drivers/gpu/drm/tegra/fb.c
> @@ -309,7 +309,7 @@ static int tegra_fbdev_init(struct tegra_fbdev *fbdev,
>  	struct drm_device *drm = fbdev->base.dev;
>  	int err;
>  
> -	err = drm_fb_helper_init(drm, &fbdev->base, num_crtc, max_connectors);
> +	err = drm_fb_helper_init(drm, &fbdev->base, max_connectors);
>  	if (err < 0) {
>  		dev_err(drm->dev, "failed to initialize DRM FB helper: %d\n",
>  			err);
> diff --git a/drivers/gpu/drm/tilcdc/tilcdc_drv.c b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
> index 919294a735fe..372d86fbb093 100644
> --- a/drivers/gpu/drm/tilcdc/tilcdc_drv.c
> +++ b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
> @@ -403,8 +403,7 @@ static int tilcdc_init(struct drm_driver *ddrv, struct device *dev)
>  	drm_mode_config_reset(ddev);
>  
>  	priv->fbdev = drm_fbdev_cma_init(ddev, bpp,
> -			ddev->mode_config.num_crtc,
> -			ddev->mode_config.num_connector);
> +					 ddev->mode_config.num_connector);
>  	if (IS_ERR(priv->fbdev)) {
>  		ret = PTR_ERR(priv->fbdev);
>  		goto init_failed;
> diff --git a/drivers/gpu/drm/udl/udl_fb.c b/drivers/gpu/drm/udl/udl_fb.c
> index b8dc06d68777..8e8d60e9a1a2 100644
> --- a/drivers/gpu/drm/udl/udl_fb.c
> +++ b/drivers/gpu/drm/udl/udl_fb.c
> @@ -441,8 +441,7 @@ int udl_fbdev_init(struct drm_device *dev)
>  
>  	drm_fb_helper_prepare(dev, &ufbdev->helper, &udl_fb_helper_funcs);
>  
> -	ret = drm_fb_helper_init(dev, &ufbdev->helper,
> -				 1, 1);
> +	ret = drm_fb_helper_init(dev, &ufbdev->helper, 1);
>  	if (ret)
>  		goto free;
>  
> diff --git a/drivers/gpu/drm/vc4/vc4_kms.c b/drivers/gpu/drm/vc4/vc4_kms.c
> index be8dd8262f27..ad7925a9e0ea 100644
> --- a/drivers/gpu/drm/vc4/vc4_kms.c
> +++ b/drivers/gpu/drm/vc4/vc4_kms.c
> @@ -231,7 +231,6 @@ int vc4_kms_load(struct drm_device *dev)
>  	drm_mode_config_reset(dev);
>  
>  	vc4->fbdev = drm_fbdev_cma_init(dev, 32,
> -					dev->mode_config.num_crtc,
>  					dev->mode_config.num_connector);
>  	if (IS_ERR(vc4->fbdev))
>  		vc4->fbdev = NULL;
> diff --git a/drivers/gpu/drm/virtio/virtgpu_fb.c b/drivers/gpu/drm/virtio/virtgpu_fb.c
> index 24f99fc9d8a4..163a67db8cf1 100644
> --- a/drivers/gpu/drm/virtio/virtgpu_fb.c
> +++ b/drivers/gpu/drm/virtio/virtgpu_fb.c
> @@ -387,7 +387,6 @@ int virtio_gpu_fbdev_init(struct virtio_gpu_device *vgdev)
>  	drm_fb_helper_prepare(vgdev->ddev, &vgfbdev->helper,
>  			      &virtio_gpu_fb_helper_funcs);
>  	ret = drm_fb_helper_init(vgdev->ddev, &vgfbdev->helper,
> -				 vgdev->num_scanouts,
>  				 VIRTIO_GPUFB_CONN_LIMIT);
>  	if (ret) {
>  		kfree(vgfbdev);
> diff --git a/drivers/gpu/drm/zte/zx_drm_drv.c b/drivers/gpu/drm/zte/zx_drm_drv.c
> index 13081fed902d..5c6944a1e72c 100644
> --- a/drivers/gpu/drm/zte/zx_drm_drv.c
> +++ b/drivers/gpu/drm/zte/zx_drm_drv.c
> @@ -141,7 +141,7 @@ static int zx_drm_bind(struct device *dev)
>  	drm_mode_config_reset(drm);
>  	drm_kms_helper_poll_init(drm);
>  
> -	priv->fbdev = drm_fbdev_cma_init(drm, 32, drm->mode_config.num_crtc,
> +	priv->fbdev = drm_fbdev_cma_init(drm, 32,
>  					 drm->mode_config.num_connector);
>  	if (IS_ERR(priv->fbdev)) {
>  		ret = PTR_ERR(priv->fbdev);
> diff --git a/include/drm/drm_fb_cma_helper.h b/include/drm/drm_fb_cma_helper.h
> index 8dd6e5585e51..a5ecc0a58260 100644
> --- a/include/drm/drm_fb_cma_helper.h
> +++ b/include/drm/drm_fb_cma_helper.h
> @@ -16,11 +16,10 @@ struct drm_plane;
>  struct drm_plane_state;
>  
>  struct drm_fbdev_cma *drm_fbdev_cma_init_with_funcs(struct drm_device *dev,
> -	unsigned int preferred_bpp, unsigned int num_crtc,
> -	unsigned int max_conn_count, const struct drm_framebuffer_funcs *funcs);
> +	unsigned int preferred_bpp, unsigned int max_conn_count,
> +	const struct drm_framebuffer_funcs *funcs);
>  struct drm_fbdev_cma *drm_fbdev_cma_init(struct drm_device *dev,
> -	unsigned int preferred_bpp, unsigned int num_crtc,
> -	unsigned int max_conn_count);
> +	unsigned int preferred_bpp, unsigned int max_conn_count);
>  void drm_fbdev_cma_fini(struct drm_fbdev_cma *fbdev_cma);
>  
>  void drm_fbdev_cma_restore_mode(struct drm_fbdev_cma *fbdev_cma);
> diff --git a/include/drm/drm_fb_helper.h b/include/drm/drm_fb_helper.h
> index e62e1cf22678..278820ee17ad 100644
> --- a/include/drm/drm_fb_helper.h
> +++ b/include/drm/drm_fb_helper.h
> @@ -236,8 +236,7 @@ struct drm_fb_helper {
>  void drm_fb_helper_prepare(struct drm_device *dev, struct drm_fb_helper *helper,
>  			   const struct drm_fb_helper_funcs *funcs);
>  int drm_fb_helper_init(struct drm_device *dev,
> -		       struct drm_fb_helper *helper, int crtc_count,
> -		       int max_conn);
> +		       struct drm_fb_helper *helper, int max_conn);
>  void drm_fb_helper_fini(struct drm_fb_helper *helper);
>  int drm_fb_helper_blank(int blank, struct fb_info *info);
>  int drm_fb_helper_pan_display(struct fb_var_screeninfo *var,
> -- 
> 2.11.0
> 
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
Daniel Vetter March 1, 2017, 10:33 a.m. UTC | #2
On Thu, Feb 02, 2017 at 02:26:40PM -0200, Gabriel Krisman Bertazi wrote:
> 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>

You forgot to update the kernel-doc, building them now generates new
warnings. Please fix in a follow-up patch.

Thanks, Daniel
> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c            |  1 -
>  drivers/gpu/drm/arc/arcpgu_drv.c                  |  3 +--
>  drivers/gpu/drm/arm/hdlcd_drv.c                   |  2 +-
>  drivers/gpu/drm/arm/malidp_drv.c                  |  2 +-
>  drivers/gpu/drm/armada/armada_fbdev.c             |  2 +-
>  drivers/gpu/drm/ast/ast_fb.c                      |  3 +--
>  drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c      |  1 -
>  drivers/gpu/drm/bochs/bochs_fbdev.c               |  3 +--
>  drivers/gpu/drm/cirrus/cirrus_fbdev.c             |  2 +-
>  drivers/gpu/drm/drm_fb_cma_helper.c               | 15 +++++++--------
>  drivers/gpu/drm/drm_fb_helper.c                   | 10 +++++-----
>  drivers/gpu/drm/exynos/exynos_drm_fbdev.c         |  5 +----
>  drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c         |  2 +-
>  drivers/gpu/drm/gma500/framebuffer.c              |  2 +-
>  drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_fbdev.c |  3 +--
>  drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c   |  3 +--
>  drivers/gpu/drm/i915/intel_fbdev.c                |  3 +--
>  drivers/gpu/drm/imx/imx-drm-core.c                |  3 +--
>  drivers/gpu/drm/meson/meson_drv.c                 |  1 -
>  drivers/gpu/drm/mgag200/mgag200_fb.c              |  2 +-
>  drivers/gpu/drm/msm/msm_fbdev.c                   |  3 +--
>  drivers/gpu/drm/mxsfb/mxsfb_drv.c                 |  2 +-
>  drivers/gpu/drm/nouveau/nouveau_fbcon.c           |  3 +--
>  drivers/gpu/drm/omapdrm/omap_fbdev.c              |  3 +--
>  drivers/gpu/drm/qxl/qxl_fb.c                      |  1 -
>  drivers/gpu/drm/radeon/radeon_fb.c                |  1 -
>  drivers/gpu/drm/rcar-du/rcar_du_kms.c             |  2 +-
>  drivers/gpu/drm/rockchip/rockchip_drm_fbdev.c     |  5 +----
>  drivers/gpu/drm/sti/sti_drv.c                     |  2 +-
>  drivers/gpu/drm/sun4i/sun4i_framebuffer.c         |  4 +---
>  drivers/gpu/drm/tegra/fb.c                        |  2 +-
>  drivers/gpu/drm/tilcdc/tilcdc_drv.c               |  3 +--
>  drivers/gpu/drm/udl/udl_fb.c                      |  3 +--
>  drivers/gpu/drm/vc4/vc4_kms.c                     |  1 -
>  drivers/gpu/drm/virtio/virtgpu_fb.c               |  1 -
>  drivers/gpu/drm/zte/zx_drm_drv.c                  |  2 +-
>  include/drm/drm_fb_cma_helper.h                   |  7 +++----
>  include/drm/drm_fb_helper.h                       |  3 +--
>  38 files changed, 43 insertions(+), 73 deletions(-)
> 
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c
> index 838943d0962e..36ce3cac81ba 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c
> @@ -374,7 +374,6 @@ int amdgpu_fbdev_init(struct amdgpu_device *adev)
>  			&amdgpu_fb_helper_funcs);
>  
>  	ret = drm_fb_helper_init(adev->ddev, &rfbdev->helper,
> -				 adev->mode_info.num_crtc,
>  				 AMDGPUFB_CONN_LIMIT);
>  	if (ret) {
>  		kfree(rfbdev);
> diff --git a/drivers/gpu/drm/arc/arcpgu_drv.c b/drivers/gpu/drm/arc/arcpgu_drv.c
> index 0b6eaa49a1db..8d8344ed655e 100644
> --- a/drivers/gpu/drm/arc/arcpgu_drv.c
> +++ b/drivers/gpu/drm/arc/arcpgu_drv.c
> @@ -135,8 +135,7 @@ static int arcpgu_load(struct drm_device *drm)
>  	drm_kms_helper_poll_init(drm);
>  
>  	arcpgu->fbdev = drm_fbdev_cma_init(drm, 16,
> -					      drm->mode_config.num_crtc,
> -					      drm->mode_config.num_connector);
> +					   drm->mode_config.num_connector);
>  	if (IS_ERR(arcpgu->fbdev)) {
>  		ret = PTR_ERR(arcpgu->fbdev);
>  		arcpgu->fbdev = NULL;
> diff --git a/drivers/gpu/drm/arm/hdlcd_drv.c b/drivers/gpu/drm/arm/hdlcd_drv.c
> index a2e5b04cdee3..4ce4f970920b 100644
> --- a/drivers/gpu/drm/arm/hdlcd_drv.c
> +++ b/drivers/gpu/drm/arm/hdlcd_drv.c
> @@ -349,7 +349,7 @@ static int hdlcd_drm_bind(struct device *dev)
>  	drm_mode_config_reset(drm);
>  	drm_kms_helper_poll_init(drm);
>  
> -	hdlcd->fbdev = drm_fbdev_cma_init(drm, 32, drm->mode_config.num_crtc,
> +	hdlcd->fbdev = drm_fbdev_cma_init(drm, 32,
>  					  drm->mode_config.num_connector);
>  
>  	if (IS_ERR(hdlcd->fbdev)) {
> diff --git a/drivers/gpu/drm/arm/malidp_drv.c b/drivers/gpu/drm/arm/malidp_drv.c
> index 99fb0ab39191..8b0672d4aee9 100644
> --- a/drivers/gpu/drm/arm/malidp_drv.c
> +++ b/drivers/gpu/drm/arm/malidp_drv.c
> @@ -457,7 +457,7 @@ static int malidp_bind(struct device *dev)
>  
>  	drm_mode_config_reset(drm);
>  
> -	malidp->fbdev = drm_fbdev_cma_init(drm, 32, drm->mode_config.num_crtc,
> +	malidp->fbdev = drm_fbdev_cma_init(drm, 32,
>  					   drm->mode_config.num_connector);
>  
>  	if (IS_ERR(malidp->fbdev)) {
> diff --git a/drivers/gpu/drm/armada/armada_fbdev.c b/drivers/gpu/drm/armada/armada_fbdev.c
> index 78335100cbc3..0233e1dc33e1 100644
> --- a/drivers/gpu/drm/armada/armada_fbdev.c
> +++ b/drivers/gpu/drm/armada/armada_fbdev.c
> @@ -137,7 +137,7 @@ int armada_fbdev_init(struct drm_device *dev)
>  
>  	drm_fb_helper_prepare(dev, fbh, &armada_fb_helper_funcs);
>  
> -	ret = drm_fb_helper_init(dev, fbh, 1, 1);
> +	ret = drm_fb_helper_init(dev, fbh, 1);
>  	if (ret) {
>  		DRM_ERROR("failed to initialize drm fb helper\n");
>  		goto err_fb_helper;
> diff --git a/drivers/gpu/drm/ast/ast_fb.c b/drivers/gpu/drm/ast/ast_fb.c
> index b085140fae95..5d0ffab411a8 100644
> --- a/drivers/gpu/drm/ast/ast_fb.c
> +++ b/drivers/gpu/drm/ast/ast_fb.c
> @@ -315,8 +315,7 @@ int ast_fbdev_init(struct drm_device *dev)
>  
>  	drm_fb_helper_prepare(dev, &afbdev->helper, &ast_fb_helper_funcs);
>  
> -	ret = drm_fb_helper_init(dev, &afbdev->helper,
> -				 1, 1);
> +	ret = drm_fb_helper_init(dev, &afbdev->helper, 1);
>  	if (ret)
>  		goto free;
>  
> diff --git a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
> index 0bf32d6ac39b..427bdff425c2 100644
> --- a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
> +++ b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
> @@ -647,7 +647,6 @@ static int atmel_hlcdc_dc_load(struct drm_device *dev)
>  	platform_set_drvdata(pdev, dev);
>  
>  	dc->fbdev = drm_fbdev_cma_init(dev, 24,
> -			dev->mode_config.num_crtc,
>  			dev->mode_config.num_connector);
>  	if (IS_ERR(dc->fbdev))
>  		dc->fbdev = NULL;
> diff --git a/drivers/gpu/drm/bochs/bochs_fbdev.c b/drivers/gpu/drm/bochs/bochs_fbdev.c
> index 0317c3df6a22..932a769637ef 100644
> --- a/drivers/gpu/drm/bochs/bochs_fbdev.c
> +++ b/drivers/gpu/drm/bochs/bochs_fbdev.c
> @@ -169,8 +169,7 @@ int bochs_fbdev_init(struct bochs_device *bochs)
>  	drm_fb_helper_prepare(bochs->dev, &bochs->fb.helper,
>  			      &bochs_fb_helper_funcs);
>  
> -	ret = drm_fb_helper_init(bochs->dev, &bochs->fb.helper,
> -				 1, 1);
> +	ret = drm_fb_helper_init(bochs->dev, &bochs->fb.helper, 1);
>  	if (ret)
>  		return ret;
>  
> diff --git a/drivers/gpu/drm/cirrus/cirrus_fbdev.c b/drivers/gpu/drm/cirrus/cirrus_fbdev.c
> index 79a5cd108245..4cc679278182 100644
> --- a/drivers/gpu/drm/cirrus/cirrus_fbdev.c
> +++ b/drivers/gpu/drm/cirrus/cirrus_fbdev.c
> @@ -289,7 +289,7 @@ int cirrus_fbdev_init(struct cirrus_device *cdev)
>  			      &cirrus_fb_helper_funcs);
>  
>  	ret = drm_fb_helper_init(cdev->dev, &gfbdev->helper,
> -				 cdev->num_crtc, CIRRUSFB_CONN_LIMIT);
> +				 CIRRUSFB_CONN_LIMIT);
>  	if (ret)
>  		return ret;
>  
> diff --git a/drivers/gpu/drm/drm_fb_cma_helper.c b/drivers/gpu/drm/drm_fb_cma_helper.c
> index 0ef8b284a4b8..596fabf18c3e 100644
> --- a/drivers/gpu/drm/drm_fb_cma_helper.c
> +++ b/drivers/gpu/drm/drm_fb_cma_helper.c
> @@ -489,15 +489,14 @@ static const struct drm_fb_helper_funcs drm_fb_cma_helper_funcs = {
>   * drm_fbdev_cma_init_with_funcs() - Allocate and initializes a drm_fbdev_cma struct
>   * @dev: DRM device
>   * @preferred_bpp: Preferred bits per pixel for the device
> - * @num_crtc: Number of CRTCs
>   * @max_conn_count: Maximum number of connectors
>   * @funcs: fb helper functions, in particular a custom dirty() callback
>   *
>   * Returns a newly allocated drm_fbdev_cma struct or a ERR_PTR.
>   */
>  struct drm_fbdev_cma *drm_fbdev_cma_init_with_funcs(struct drm_device *dev,
> -	unsigned int preferred_bpp, unsigned int num_crtc,
> -	unsigned int max_conn_count, const struct drm_framebuffer_funcs *funcs)
> +	unsigned int preferred_bpp, unsigned int max_conn_count,
> +	const struct drm_framebuffer_funcs *funcs)
>  {
>  	struct drm_fbdev_cma *fbdev_cma;
>  	struct drm_fb_helper *helper;
> @@ -514,7 +513,7 @@ struct drm_fbdev_cma *drm_fbdev_cma_init_with_funcs(struct drm_device *dev,
>  
>  	drm_fb_helper_prepare(dev, helper, &drm_fb_cma_helper_funcs);
>  
> -	ret = drm_fb_helper_init(dev, helper, num_crtc, max_conn_count);
> +	ret = drm_fb_helper_init(dev, helper, max_conn_count);
>  	if (ret < 0) {
>  		dev_err(dev->dev, "Failed to initialize drm fb helper.\n");
>  		goto err_free;
> @@ -554,11 +553,11 @@ EXPORT_SYMBOL_GPL(drm_fbdev_cma_init_with_funcs);
>   * Returns a newly allocated drm_fbdev_cma struct or a ERR_PTR.
>   */
>  struct drm_fbdev_cma *drm_fbdev_cma_init(struct drm_device *dev,
> -	unsigned int preferred_bpp, unsigned int num_crtc,
> -	unsigned int max_conn_count)
> +	unsigned int preferred_bpp, unsigned int max_conn_count)
>  {
> -	return drm_fbdev_cma_init_with_funcs(dev, preferred_bpp, num_crtc,
> -				max_conn_count, &drm_fb_cma_funcs);
> +	return drm_fbdev_cma_init_with_funcs(dev, preferred_bpp,
> +					     max_conn_count,
> +					     &drm_fb_cma_funcs);
>  }
>  EXPORT_SYMBOL_GPL(drm_fbdev_cma_init);
>  
> diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c
> index c7fafa175755..a30c645035de 100644
> --- a/drivers/gpu/drm/drm_fb_helper.c
> +++ b/drivers/gpu/drm/drm_fb_helper.c
> @@ -712,7 +712,6 @@ EXPORT_SYMBOL(drm_fb_helper_prepare);
>   * drm_fb_helper_init - initialize a drm_fb_helper structure
>   * @dev: drm device
>   * @fb_helper: driver-allocated fbdev helper structure to initialize
> - * @crtc_count: maximum number of crtcs to support in this fbdev emulation
>   * @max_conn_count: max connector count
>   *
>   * This allocates the structures for the fbdev helper with the given limits.
> @@ -727,9 +726,10 @@ EXPORT_SYMBOL(drm_fb_helper_prepare);
>   */
>  int drm_fb_helper_init(struct drm_device *dev,
>  		       struct drm_fb_helper *fb_helper,
> -		       int crtc_count, int max_conn_count)
> +		       int max_conn_count)
>  {
>  	struct drm_crtc *crtc;
> +	struct drm_mode_config *config = &dev->mode_config;
>  	int i;
>  
>  	if (!drm_fbdev_emulation)
> @@ -738,11 +738,11 @@ int drm_fb_helper_init(struct drm_device *dev,
>  	if (!max_conn_count)
>  		return -EINVAL;
>  
> -	fb_helper->crtc_info = kcalloc(crtc_count, sizeof(struct drm_fb_helper_crtc), GFP_KERNEL);
> +	fb_helper->crtc_info = kcalloc(config->num_crtc, sizeof(struct drm_fb_helper_crtc), GFP_KERNEL);
>  	if (!fb_helper->crtc_info)
>  		return -ENOMEM;
>  
> -	fb_helper->crtc_count = crtc_count;
> +	fb_helper->crtc_count = config->num_crtc;
>  	fb_helper->connector_info = kcalloc(dev->mode_config.num_connector, sizeof(struct drm_fb_helper_connector *), GFP_KERNEL);
>  	if (!fb_helper->connector_info) {
>  		kfree(fb_helper->crtc_info);
> @@ -751,7 +751,7 @@ int drm_fb_helper_init(struct drm_device *dev,
>  	fb_helper->connector_info_alloc_count = dev->mode_config.num_connector;
>  	fb_helper->connector_count = 0;
>  
> -	for (i = 0; i < crtc_count; i++) {
> +	for (i = 0; i < fb_helper->crtc_count; i++) {
>  		fb_helper->crtc_info[i].mode_set.connectors =
>  			kcalloc(max_conn_count,
>  				sizeof(struct drm_connector *),
> diff --git a/drivers/gpu/drm/exynos/exynos_drm_fbdev.c b/drivers/gpu/drm/exynos/exynos_drm_fbdev.c
> index a7884bea42eb..bcdb2720b68e 100644
> --- a/drivers/gpu/drm/exynos/exynos_drm_fbdev.c
> +++ b/drivers/gpu/drm/exynos/exynos_drm_fbdev.c
> @@ -208,7 +208,6 @@ int exynos_drm_fbdev_init(struct drm_device *dev)
>  	struct exynos_drm_fbdev *fbdev;
>  	struct exynos_drm_private *private = dev->dev_private;
>  	struct drm_fb_helper *helper;
> -	unsigned int num_crtc;
>  	int ret;
>  
>  	if (!dev->mode_config.num_crtc || !dev->mode_config.num_connector)
> @@ -225,9 +224,7 @@ int exynos_drm_fbdev_init(struct drm_device *dev)
>  
>  	drm_fb_helper_prepare(dev, helper, &exynos_drm_fb_helper_funcs);
>  
> -	num_crtc = dev->mode_config.num_crtc;
> -
> -	ret = drm_fb_helper_init(dev, helper, num_crtc, MAX_CONNECTOR);
> +	ret = drm_fb_helper_init(dev, helper, MAX_CONNECTOR);
>  	if (ret < 0) {
>  		DRM_ERROR("failed to initialize drm fb helper.\n");
>  		goto err_init;
> diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
> index 48705248f894..04173235f448 100644
> --- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
> +++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
> @@ -94,7 +94,7 @@ static int fsl_dcu_load(struct drm_device *dev, unsigned long flags)
>  			"Invalid legacyfb_depth.  Defaulting to 24bpp\n");
>  		legacyfb_depth = 24;
>  	}
> -	fsl_dev->fbdev = drm_fbdev_cma_init(dev, legacyfb_depth, 1, 1);
> +	fsl_dev->fbdev = drm_fbdev_cma_init(dev, legacyfb_depth, 1);
>  	if (IS_ERR(fsl_dev->fbdev)) {
>  		ret = PTR_ERR(fsl_dev->fbdev);
>  		fsl_dev->fbdev = NULL;
> diff --git a/drivers/gpu/drm/gma500/framebuffer.c b/drivers/gpu/drm/gma500/framebuffer.c
> index fd1488bf5189..da42d2e1d397 100644
> --- a/drivers/gpu/drm/gma500/framebuffer.c
> +++ b/drivers/gpu/drm/gma500/framebuffer.c
> @@ -564,7 +564,7 @@ int psb_fbdev_init(struct drm_device *dev)
>  	drm_fb_helper_prepare(dev, &fbdev->psb_fb_helper, &psb_fb_helper_funcs);
>  
>  	ret = drm_fb_helper_init(dev, &fbdev->psb_fb_helper,
> -				 dev_priv->ops->crtcs, INTELFB_CONN_LIMIT);
> +				 INTELFB_CONN_LIMIT);
>  	if (ret)
>  		goto free;
>  
> diff --git a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_fbdev.c b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_fbdev.c
> index 16fe79053ee1..d7a4d9095b33 100644
> --- a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_fbdev.c
> +++ b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_fbdev.c
> @@ -200,8 +200,7 @@ int hibmc_fbdev_init(struct hibmc_drm_private *priv)
>  			      &hibmc_fbdev_helper_funcs);
>  
>  	/* Now just one crtc and one channel */
> -	ret = drm_fb_helper_init(priv->dev,
> -				 &hifbdev->helper, 1, 1);
> +	ret = drm_fb_helper_init(priv->dev, &hifbdev->helper, 1);
>  	if (ret) {
>  		DRM_ERROR("failed to initialize fb helper: %d\n", ret);
>  		return ret;
> diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c
> index 7df0e8535e41..7ec93aec7e88 100644
> --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c
> +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c
> @@ -59,8 +59,7 @@ static void kirin_fbdev_output_poll_changed(struct drm_device *dev)
>  		drm_fbdev_cma_hotplug_event(priv->fbdev);
>  	} else {
>  		priv->fbdev = drm_fbdev_cma_init(dev, 32,
> -				dev->mode_config.num_crtc,
> -				dev->mode_config.num_connector);
> +						 dev->mode_config.num_connector);
>  		if (IS_ERR(priv->fbdev))
>  			priv->fbdev = NULL;
>  	}
> diff --git a/drivers/gpu/drm/i915/intel_fbdev.c b/drivers/gpu/drm/i915/intel_fbdev.c
> index e0d9e72cf3d1..1b8ba2e77539 100644
> --- a/drivers/gpu/drm/i915/intel_fbdev.c
> +++ b/drivers/gpu/drm/i915/intel_fbdev.c
> @@ -713,8 +713,7 @@ int intel_fbdev_init(struct drm_device *dev)
>  	if (!intel_fbdev_init_bios(dev, ifbdev))
>  		ifbdev->preferred_bpp = 32;
>  
> -	ret = drm_fb_helper_init(dev, &ifbdev->helper,
> -				 INTEL_INFO(dev_priv)->num_pipes, 4);
> +	ret = drm_fb_helper_init(dev, &ifbdev->helper, 4);
>  	if (ret) {
>  		kfree(ifbdev);
>  		return ret;
> diff --git a/drivers/gpu/drm/imx/imx-drm-core.c b/drivers/gpu/drm/imx/imx-drm-core.c
> index 33404295b447..5ae48836652e 100644
> --- a/drivers/gpu/drm/imx/imx-drm-core.c
> +++ b/drivers/gpu/drm/imx/imx-drm-core.c
> @@ -389,8 +389,7 @@ static int imx_drm_bind(struct device *dev)
>  		dev_warn(dev, "Invalid legacyfb_depth.  Defaulting to 16bpp\n");
>  		legacyfb_depth = 16;
>  	}
> -	imxdrm->fbhelper = drm_fbdev_cma_init(drm, legacyfb_depth,
> -				drm->mode_config.num_crtc, MAX_CRTC);
> +	imxdrm->fbhelper = drm_fbdev_cma_init(drm, legacyfb_depth, MAX_CRTC);
>  	if (IS_ERR(imxdrm->fbhelper)) {
>  		ret = PTR_ERR(imxdrm->fbhelper);
>  		imxdrm->fbhelper = NULL;
> diff --git a/drivers/gpu/drm/meson/meson_drv.c b/drivers/gpu/drm/meson/meson_drv.c
> index ff1f6019b97b..644d4c14dd40 100644
> --- a/drivers/gpu/drm/meson/meson_drv.c
> +++ b/drivers/gpu/drm/meson/meson_drv.c
> @@ -279,7 +279,6 @@ static int meson_drv_probe(struct platform_device *pdev)
>  	drm->mode_config.funcs = &meson_mode_config_funcs;
>  
>  	priv->fbdev = drm_fbdev_cma_init(drm, 32,
> -					 drm->mode_config.num_crtc,
>  					 drm->mode_config.num_connector);
>  	if (IS_ERR(priv->fbdev)) {
>  		ret = PTR_ERR(priv->fbdev);
> diff --git a/drivers/gpu/drm/mgag200/mgag200_fb.c b/drivers/gpu/drm/mgag200/mgag200_fb.c
> index 1a665e1671b8..a449bb91213a 100644
> --- a/drivers/gpu/drm/mgag200/mgag200_fb.c
> +++ b/drivers/gpu/drm/mgag200/mgag200_fb.c
> @@ -286,7 +286,7 @@ int mgag200_fbdev_init(struct mga_device *mdev)
>  	drm_fb_helper_prepare(mdev->dev, &mfbdev->helper, &mga_fb_helper_funcs);
>  
>  	ret = drm_fb_helper_init(mdev->dev, &mfbdev->helper,
> -				 mdev->num_crtc, MGAG200FB_CONN_LIMIT);
> +				 MGAG200FB_CONN_LIMIT);
>  	if (ret)
>  		goto err_fb_helper;
>  
> diff --git a/drivers/gpu/drm/msm/msm_fbdev.c b/drivers/gpu/drm/msm/msm_fbdev.c
> index f8a587eac6b8..6b1b375653f7 100644
> --- a/drivers/gpu/drm/msm/msm_fbdev.c
> +++ b/drivers/gpu/drm/msm/msm_fbdev.c
> @@ -201,8 +201,7 @@ struct drm_fb_helper *msm_fbdev_init(struct drm_device *dev)
>  
>  	drm_fb_helper_prepare(dev, helper, &msm_fb_helper_funcs);
>  
> -	ret = drm_fb_helper_init(dev, helper,
> -			priv->num_crtcs, priv->num_connectors);
> +	ret = drm_fb_helper_init(dev, helper, priv->num_connectors);
>  	if (ret) {
>  		dev_err(dev->dev, "could not init fbdev: ret=%d\n", ret);
>  		goto fail;
> diff --git a/drivers/gpu/drm/mxsfb/mxsfb_drv.c b/drivers/gpu/drm/mxsfb/mxsfb_drv.c
> index 955441f71500..cdfbe0284635 100644
> --- a/drivers/gpu/drm/mxsfb/mxsfb_drv.c
> +++ b/drivers/gpu/drm/mxsfb/mxsfb_drv.c
> @@ -218,7 +218,7 @@ static int mxsfb_load(struct drm_device *drm, unsigned long flags)
>  
>  	drm_kms_helper_poll_init(drm);
>  
> -	mxsfb->fbdev = drm_fbdev_cma_init(drm, 32, drm->mode_config.num_crtc,
> +	mxsfb->fbdev = drm_fbdev_cma_init(drm, 32,
>  					  drm->mode_config.num_connector);
>  	if (IS_ERR(mxsfb->fbdev)) {
>  		mxsfb->fbdev = NULL;
> diff --git a/drivers/gpu/drm/nouveau/nouveau_fbcon.c b/drivers/gpu/drm/nouveau/nouveau_fbcon.c
> index 9de6abb65781..971c147a3984 100644
> --- a/drivers/gpu/drm/nouveau/nouveau_fbcon.c
> +++ b/drivers/gpu/drm/nouveau/nouveau_fbcon.c
> @@ -507,8 +507,7 @@ nouveau_fbcon_init(struct drm_device *dev)
>  
>  	drm_fb_helper_prepare(dev, &fbcon->helper, &nouveau_fbcon_helper_funcs);
>  
> -	ret = drm_fb_helper_init(dev, &fbcon->helper,
> -				 dev->mode_config.num_crtc, 4);
> +	ret = drm_fb_helper_init(dev, &fbcon->helper, 4);
>  	if (ret)
>  		goto free;
>  
> diff --git a/drivers/gpu/drm/omapdrm/omap_fbdev.c b/drivers/gpu/drm/omapdrm/omap_fbdev.c
> index 2a839956dae6..942c4d483008 100644
> --- a/drivers/gpu/drm/omapdrm/omap_fbdev.c
> +++ b/drivers/gpu/drm/omapdrm/omap_fbdev.c
> @@ -263,8 +263,7 @@ struct drm_fb_helper *omap_fbdev_init(struct drm_device *dev)
>  
>  	drm_fb_helper_prepare(dev, helper, &omap_fb_helper_funcs);
>  
> -	ret = drm_fb_helper_init(dev, helper,
> -			priv->num_crtcs, priv->num_connectors);
> +	ret = drm_fb_helper_init(dev, helper, priv->num_connectors);
>  	if (ret) {
>  		dev_err(dev->dev, "could not init fbdev: ret=%d\n", ret);
>  		goto fail;
> diff --git a/drivers/gpu/drm/qxl/qxl_fb.c b/drivers/gpu/drm/qxl/qxl_fb.c
> index 53edfa498af5..d479b7a7abe4 100644
> --- a/drivers/gpu/drm/qxl/qxl_fb.c
> +++ b/drivers/gpu/drm/qxl/qxl_fb.c
> @@ -399,7 +399,6 @@ int qxl_fbdev_init(struct qxl_device *qdev)
>  			      &qxl_fb_helper_funcs);
>  
>  	ret = drm_fb_helper_init(&qdev->ddev, &qfbdev->helper,
> -				 qxl_num_crtc,
>  				 QXLFB_CONN_LIMIT);
>  	if (ret)
>  		goto free;
> diff --git a/drivers/gpu/drm/radeon/radeon_fb.c b/drivers/gpu/drm/radeon/radeon_fb.c
> index 6c10a83f3362..2be4fe9c7217 100644
> --- a/drivers/gpu/drm/radeon/radeon_fb.c
> +++ b/drivers/gpu/drm/radeon/radeon_fb.c
> @@ -366,7 +366,6 @@ int radeon_fbdev_init(struct radeon_device *rdev)
>  			      &radeon_fb_helper_funcs);
>  
>  	ret = drm_fb_helper_init(rdev->ddev, &rfbdev->helper,
> -				 rdev->num_crtc,
>  				 RADEONFB_CONN_LIMIT);
>  	if (ret)
>  		goto free;
> diff --git a/drivers/gpu/drm/rcar-du/rcar_du_kms.c b/drivers/gpu/drm/rcar-du/rcar_du_kms.c
> index b5d3f16cfa12..ff61f6032f2c 100644
> --- a/drivers/gpu/drm/rcar-du/rcar_du_kms.c
> +++ b/drivers/gpu/drm/rcar-du/rcar_du_kms.c
> @@ -662,7 +662,7 @@ int rcar_du_modeset_init(struct rcar_du_device *rcdu)
>  	drm_kms_helper_poll_init(dev);
>  
>  	if (dev->mode_config.num_connector) {
> -		fbdev = drm_fbdev_cma_init(dev, 32, dev->mode_config.num_crtc,
> +		fbdev = drm_fbdev_cma_init(dev, 32,
>  					   dev->mode_config.num_connector);
>  		if (IS_ERR(fbdev))
>  			return PTR_ERR(fbdev);
> diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_fbdev.c b/drivers/gpu/drm/rockchip/rockchip_drm_fbdev.c
> index 52d1fdf9f9da..70ad50dd594d 100644
> --- a/drivers/gpu/drm/rockchip/rockchip_drm_fbdev.c
> +++ b/drivers/gpu/drm/rockchip/rockchip_drm_fbdev.c
> @@ -129,19 +129,16 @@ int rockchip_drm_fbdev_init(struct drm_device *dev)
>  {
>  	struct rockchip_drm_private *private = dev->dev_private;
>  	struct drm_fb_helper *helper;
> -	unsigned int num_crtc;
>  	int ret;
>  
>  	if (!dev->mode_config.num_crtc || !dev->mode_config.num_connector)
>  		return -EINVAL;
>  
> -	num_crtc = dev->mode_config.num_crtc;
> -
>  	helper = &private->fbdev_helper;
>  
>  	drm_fb_helper_prepare(dev, helper, &rockchip_drm_fb_helper_funcs);
>  
> -	ret = drm_fb_helper_init(dev, helper, num_crtc, ROCKCHIP_MAX_CONNECTOR);
> +	ret = drm_fb_helper_init(dev, helper, ROCKCHIP_MAX_CONNECTOR);
>  	if (ret < 0) {
>  		dev_err(dev->dev, "Failed to initialize drm fb helper - %d.\n",
>  			ret);
> diff --git a/drivers/gpu/drm/sti/sti_drv.c b/drivers/gpu/drm/sti/sti_drv.c
> index acc056644cd0..788feed208d7 100644
> --- a/drivers/gpu/drm/sti/sti_drv.c
> +++ b/drivers/gpu/drm/sti/sti_drv.c
> @@ -360,7 +360,7 @@ static int sti_bind(struct device *dev)
>  
>  	private = ddev->dev_private;
>  	if (ddev->mode_config.num_connector) {
> -		fbdev = drm_fbdev_cma_init(ddev, 32, ddev->mode_config.num_crtc,
> +		fbdev = drm_fbdev_cma_init(ddev, 32,
>  					   ddev->mode_config.num_connector);
>  		if (IS_ERR(fbdev)) {
>  			DRM_DEBUG_DRIVER("Warning: fails to create fbdev\n");
> diff --git a/drivers/gpu/drm/sun4i/sun4i_framebuffer.c b/drivers/gpu/drm/sun4i/sun4i_framebuffer.c
> index 8b6ce619ad81..2c3beff8b53e 100644
> --- a/drivers/gpu/drm/sun4i/sun4i_framebuffer.c
> +++ b/drivers/gpu/drm/sun4i/sun4i_framebuffer.c
> @@ -40,9 +40,7 @@ struct drm_fbdev_cma *sun4i_framebuffer_init(struct drm_device *drm)
>  
>  	drm->mode_config.funcs = &sun4i_de_mode_config_funcs;
>  
> -	return drm_fbdev_cma_init(drm, 32,
> -				  drm->mode_config.num_crtc,
> -				  drm->mode_config.num_connector);
> +	return drm_fbdev_cma_init(drm, 32, drm->mode_config.num_connector);
>  }
>  
>  void sun4i_framebuffer_free(struct drm_device *drm)
> diff --git a/drivers/gpu/drm/tegra/fb.c b/drivers/gpu/drm/tegra/fb.c
> index f896e2ff7d47..f142f6a4db25 100644
> --- a/drivers/gpu/drm/tegra/fb.c
> +++ b/drivers/gpu/drm/tegra/fb.c
> @@ -309,7 +309,7 @@ static int tegra_fbdev_init(struct tegra_fbdev *fbdev,
>  	struct drm_device *drm = fbdev->base.dev;
>  	int err;
>  
> -	err = drm_fb_helper_init(drm, &fbdev->base, num_crtc, max_connectors);
> +	err = drm_fb_helper_init(drm, &fbdev->base, max_connectors);
>  	if (err < 0) {
>  		dev_err(drm->dev, "failed to initialize DRM FB helper: %d\n",
>  			err);
> diff --git a/drivers/gpu/drm/tilcdc/tilcdc_drv.c b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
> index 919294a735fe..372d86fbb093 100644
> --- a/drivers/gpu/drm/tilcdc/tilcdc_drv.c
> +++ b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
> @@ -403,8 +403,7 @@ static int tilcdc_init(struct drm_driver *ddrv, struct device *dev)
>  	drm_mode_config_reset(ddev);
>  
>  	priv->fbdev = drm_fbdev_cma_init(ddev, bpp,
> -			ddev->mode_config.num_crtc,
> -			ddev->mode_config.num_connector);
> +					 ddev->mode_config.num_connector);
>  	if (IS_ERR(priv->fbdev)) {
>  		ret = PTR_ERR(priv->fbdev);
>  		goto init_failed;
> diff --git a/drivers/gpu/drm/udl/udl_fb.c b/drivers/gpu/drm/udl/udl_fb.c
> index b8dc06d68777..8e8d60e9a1a2 100644
> --- a/drivers/gpu/drm/udl/udl_fb.c
> +++ b/drivers/gpu/drm/udl/udl_fb.c
> @@ -441,8 +441,7 @@ int udl_fbdev_init(struct drm_device *dev)
>  
>  	drm_fb_helper_prepare(dev, &ufbdev->helper, &udl_fb_helper_funcs);
>  
> -	ret = drm_fb_helper_init(dev, &ufbdev->helper,
> -				 1, 1);
> +	ret = drm_fb_helper_init(dev, &ufbdev->helper, 1);
>  	if (ret)
>  		goto free;
>  
> diff --git a/drivers/gpu/drm/vc4/vc4_kms.c b/drivers/gpu/drm/vc4/vc4_kms.c
> index be8dd8262f27..ad7925a9e0ea 100644
> --- a/drivers/gpu/drm/vc4/vc4_kms.c
> +++ b/drivers/gpu/drm/vc4/vc4_kms.c
> @@ -231,7 +231,6 @@ int vc4_kms_load(struct drm_device *dev)
>  	drm_mode_config_reset(dev);
>  
>  	vc4->fbdev = drm_fbdev_cma_init(dev, 32,
> -					dev->mode_config.num_crtc,
>  					dev->mode_config.num_connector);
>  	if (IS_ERR(vc4->fbdev))
>  		vc4->fbdev = NULL;
> diff --git a/drivers/gpu/drm/virtio/virtgpu_fb.c b/drivers/gpu/drm/virtio/virtgpu_fb.c
> index 24f99fc9d8a4..163a67db8cf1 100644
> --- a/drivers/gpu/drm/virtio/virtgpu_fb.c
> +++ b/drivers/gpu/drm/virtio/virtgpu_fb.c
> @@ -387,7 +387,6 @@ int virtio_gpu_fbdev_init(struct virtio_gpu_device *vgdev)
>  	drm_fb_helper_prepare(vgdev->ddev, &vgfbdev->helper,
>  			      &virtio_gpu_fb_helper_funcs);
>  	ret = drm_fb_helper_init(vgdev->ddev, &vgfbdev->helper,
> -				 vgdev->num_scanouts,
>  				 VIRTIO_GPUFB_CONN_LIMIT);
>  	if (ret) {
>  		kfree(vgfbdev);
> diff --git a/drivers/gpu/drm/zte/zx_drm_drv.c b/drivers/gpu/drm/zte/zx_drm_drv.c
> index 13081fed902d..5c6944a1e72c 100644
> --- a/drivers/gpu/drm/zte/zx_drm_drv.c
> +++ b/drivers/gpu/drm/zte/zx_drm_drv.c
> @@ -141,7 +141,7 @@ static int zx_drm_bind(struct device *dev)
>  	drm_mode_config_reset(drm);
>  	drm_kms_helper_poll_init(drm);
>  
> -	priv->fbdev = drm_fbdev_cma_init(drm, 32, drm->mode_config.num_crtc,
> +	priv->fbdev = drm_fbdev_cma_init(drm, 32,
>  					 drm->mode_config.num_connector);
>  	if (IS_ERR(priv->fbdev)) {
>  		ret = PTR_ERR(priv->fbdev);
> diff --git a/include/drm/drm_fb_cma_helper.h b/include/drm/drm_fb_cma_helper.h
> index 8dd6e5585e51..a5ecc0a58260 100644
> --- a/include/drm/drm_fb_cma_helper.h
> +++ b/include/drm/drm_fb_cma_helper.h
> @@ -16,11 +16,10 @@ struct drm_plane;
>  struct drm_plane_state;
>  
>  struct drm_fbdev_cma *drm_fbdev_cma_init_with_funcs(struct drm_device *dev,
> -	unsigned int preferred_bpp, unsigned int num_crtc,
> -	unsigned int max_conn_count, const struct drm_framebuffer_funcs *funcs);
> +	unsigned int preferred_bpp, unsigned int max_conn_count,
> +	const struct drm_framebuffer_funcs *funcs);
>  struct drm_fbdev_cma *drm_fbdev_cma_init(struct drm_device *dev,
> -	unsigned int preferred_bpp, unsigned int num_crtc,
> -	unsigned int max_conn_count);
> +	unsigned int preferred_bpp, unsigned int max_conn_count);
>  void drm_fbdev_cma_fini(struct drm_fbdev_cma *fbdev_cma);
>  
>  void drm_fbdev_cma_restore_mode(struct drm_fbdev_cma *fbdev_cma);
> diff --git a/include/drm/drm_fb_helper.h b/include/drm/drm_fb_helper.h
> index e62e1cf22678..278820ee17ad 100644
> --- a/include/drm/drm_fb_helper.h
> +++ b/include/drm/drm_fb_helper.h
> @@ -236,8 +236,7 @@ struct drm_fb_helper {
>  void drm_fb_helper_prepare(struct drm_device *dev, struct drm_fb_helper *helper,
>  			   const struct drm_fb_helper_funcs *funcs);
>  int drm_fb_helper_init(struct drm_device *dev,
> -		       struct drm_fb_helper *helper, int crtc_count,
> -		       int max_conn);
> +		       struct drm_fb_helper *helper, int max_conn);
>  void drm_fb_helper_fini(struct drm_fb_helper *helper);
>  int drm_fb_helper_blank(int blank, struct fb_info *info);
>  int drm_fb_helper_pan_display(struct fb_var_screeninfo *var,
> -- 
> 2.11.0
> 
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
diff mbox

Patch

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c
index 838943d0962e..36ce3cac81ba 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c
@@ -374,7 +374,6 @@  int amdgpu_fbdev_init(struct amdgpu_device *adev)
 			&amdgpu_fb_helper_funcs);
 
 	ret = drm_fb_helper_init(adev->ddev, &rfbdev->helper,
-				 adev->mode_info.num_crtc,
 				 AMDGPUFB_CONN_LIMIT);
 	if (ret) {
 		kfree(rfbdev);
diff --git a/drivers/gpu/drm/arc/arcpgu_drv.c b/drivers/gpu/drm/arc/arcpgu_drv.c
index 0b6eaa49a1db..8d8344ed655e 100644
--- a/drivers/gpu/drm/arc/arcpgu_drv.c
+++ b/drivers/gpu/drm/arc/arcpgu_drv.c
@@ -135,8 +135,7 @@  static int arcpgu_load(struct drm_device *drm)
 	drm_kms_helper_poll_init(drm);
 
 	arcpgu->fbdev = drm_fbdev_cma_init(drm, 16,
-					      drm->mode_config.num_crtc,
-					      drm->mode_config.num_connector);
+					   drm->mode_config.num_connector);
 	if (IS_ERR(arcpgu->fbdev)) {
 		ret = PTR_ERR(arcpgu->fbdev);
 		arcpgu->fbdev = NULL;
diff --git a/drivers/gpu/drm/arm/hdlcd_drv.c b/drivers/gpu/drm/arm/hdlcd_drv.c
index a2e5b04cdee3..4ce4f970920b 100644
--- a/drivers/gpu/drm/arm/hdlcd_drv.c
+++ b/drivers/gpu/drm/arm/hdlcd_drv.c
@@ -349,7 +349,7 @@  static int hdlcd_drm_bind(struct device *dev)
 	drm_mode_config_reset(drm);
 	drm_kms_helper_poll_init(drm);
 
-	hdlcd->fbdev = drm_fbdev_cma_init(drm, 32, drm->mode_config.num_crtc,
+	hdlcd->fbdev = drm_fbdev_cma_init(drm, 32,
 					  drm->mode_config.num_connector);
 
 	if (IS_ERR(hdlcd->fbdev)) {
diff --git a/drivers/gpu/drm/arm/malidp_drv.c b/drivers/gpu/drm/arm/malidp_drv.c
index 99fb0ab39191..8b0672d4aee9 100644
--- a/drivers/gpu/drm/arm/malidp_drv.c
+++ b/drivers/gpu/drm/arm/malidp_drv.c
@@ -457,7 +457,7 @@  static int malidp_bind(struct device *dev)
 
 	drm_mode_config_reset(drm);
 
-	malidp->fbdev = drm_fbdev_cma_init(drm, 32, drm->mode_config.num_crtc,
+	malidp->fbdev = drm_fbdev_cma_init(drm, 32,
 					   drm->mode_config.num_connector);
 
 	if (IS_ERR(malidp->fbdev)) {
diff --git a/drivers/gpu/drm/armada/armada_fbdev.c b/drivers/gpu/drm/armada/armada_fbdev.c
index 78335100cbc3..0233e1dc33e1 100644
--- a/drivers/gpu/drm/armada/armada_fbdev.c
+++ b/drivers/gpu/drm/armada/armada_fbdev.c
@@ -137,7 +137,7 @@  int armada_fbdev_init(struct drm_device *dev)
 
 	drm_fb_helper_prepare(dev, fbh, &armada_fb_helper_funcs);
 
-	ret = drm_fb_helper_init(dev, fbh, 1, 1);
+	ret = drm_fb_helper_init(dev, fbh, 1);
 	if (ret) {
 		DRM_ERROR("failed to initialize drm fb helper\n");
 		goto err_fb_helper;
diff --git a/drivers/gpu/drm/ast/ast_fb.c b/drivers/gpu/drm/ast/ast_fb.c
index b085140fae95..5d0ffab411a8 100644
--- a/drivers/gpu/drm/ast/ast_fb.c
+++ b/drivers/gpu/drm/ast/ast_fb.c
@@ -315,8 +315,7 @@  int ast_fbdev_init(struct drm_device *dev)
 
 	drm_fb_helper_prepare(dev, &afbdev->helper, &ast_fb_helper_funcs);
 
-	ret = drm_fb_helper_init(dev, &afbdev->helper,
-				 1, 1);
+	ret = drm_fb_helper_init(dev, &afbdev->helper, 1);
 	if (ret)
 		goto free;
 
diff --git a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
index 0bf32d6ac39b..427bdff425c2 100644
--- a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
+++ b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
@@ -647,7 +647,6 @@  static int atmel_hlcdc_dc_load(struct drm_device *dev)
 	platform_set_drvdata(pdev, dev);
 
 	dc->fbdev = drm_fbdev_cma_init(dev, 24,
-			dev->mode_config.num_crtc,
 			dev->mode_config.num_connector);
 	if (IS_ERR(dc->fbdev))
 		dc->fbdev = NULL;
diff --git a/drivers/gpu/drm/bochs/bochs_fbdev.c b/drivers/gpu/drm/bochs/bochs_fbdev.c
index 0317c3df6a22..932a769637ef 100644
--- a/drivers/gpu/drm/bochs/bochs_fbdev.c
+++ b/drivers/gpu/drm/bochs/bochs_fbdev.c
@@ -169,8 +169,7 @@  int bochs_fbdev_init(struct bochs_device *bochs)
 	drm_fb_helper_prepare(bochs->dev, &bochs->fb.helper,
 			      &bochs_fb_helper_funcs);
 
-	ret = drm_fb_helper_init(bochs->dev, &bochs->fb.helper,
-				 1, 1);
+	ret = drm_fb_helper_init(bochs->dev, &bochs->fb.helper, 1);
 	if (ret)
 		return ret;
 
diff --git a/drivers/gpu/drm/cirrus/cirrus_fbdev.c b/drivers/gpu/drm/cirrus/cirrus_fbdev.c
index 79a5cd108245..4cc679278182 100644
--- a/drivers/gpu/drm/cirrus/cirrus_fbdev.c
+++ b/drivers/gpu/drm/cirrus/cirrus_fbdev.c
@@ -289,7 +289,7 @@  int cirrus_fbdev_init(struct cirrus_device *cdev)
 			      &cirrus_fb_helper_funcs);
 
 	ret = drm_fb_helper_init(cdev->dev, &gfbdev->helper,
-				 cdev->num_crtc, CIRRUSFB_CONN_LIMIT);
+				 CIRRUSFB_CONN_LIMIT);
 	if (ret)
 		return ret;
 
diff --git a/drivers/gpu/drm/drm_fb_cma_helper.c b/drivers/gpu/drm/drm_fb_cma_helper.c
index 0ef8b284a4b8..596fabf18c3e 100644
--- a/drivers/gpu/drm/drm_fb_cma_helper.c
+++ b/drivers/gpu/drm/drm_fb_cma_helper.c
@@ -489,15 +489,14 @@  static const struct drm_fb_helper_funcs drm_fb_cma_helper_funcs = {
  * drm_fbdev_cma_init_with_funcs() - Allocate and initializes a drm_fbdev_cma struct
  * @dev: DRM device
  * @preferred_bpp: Preferred bits per pixel for the device
- * @num_crtc: Number of CRTCs
  * @max_conn_count: Maximum number of connectors
  * @funcs: fb helper functions, in particular a custom dirty() callback
  *
  * Returns a newly allocated drm_fbdev_cma struct or a ERR_PTR.
  */
 struct drm_fbdev_cma *drm_fbdev_cma_init_with_funcs(struct drm_device *dev,
-	unsigned int preferred_bpp, unsigned int num_crtc,
-	unsigned int max_conn_count, const struct drm_framebuffer_funcs *funcs)
+	unsigned int preferred_bpp, unsigned int max_conn_count,
+	const struct drm_framebuffer_funcs *funcs)
 {
 	struct drm_fbdev_cma *fbdev_cma;
 	struct drm_fb_helper *helper;
@@ -514,7 +513,7 @@  struct drm_fbdev_cma *drm_fbdev_cma_init_with_funcs(struct drm_device *dev,
 
 	drm_fb_helper_prepare(dev, helper, &drm_fb_cma_helper_funcs);
 
-	ret = drm_fb_helper_init(dev, helper, num_crtc, max_conn_count);
+	ret = drm_fb_helper_init(dev, helper, max_conn_count);
 	if (ret < 0) {
 		dev_err(dev->dev, "Failed to initialize drm fb helper.\n");
 		goto err_free;
@@ -554,11 +553,11 @@  EXPORT_SYMBOL_GPL(drm_fbdev_cma_init_with_funcs);
  * Returns a newly allocated drm_fbdev_cma struct or a ERR_PTR.
  */
 struct drm_fbdev_cma *drm_fbdev_cma_init(struct drm_device *dev,
-	unsigned int preferred_bpp, unsigned int num_crtc,
-	unsigned int max_conn_count)
+	unsigned int preferred_bpp, unsigned int max_conn_count)
 {
-	return drm_fbdev_cma_init_with_funcs(dev, preferred_bpp, num_crtc,
-				max_conn_count, &drm_fb_cma_funcs);
+	return drm_fbdev_cma_init_with_funcs(dev, preferred_bpp,
+					     max_conn_count,
+					     &drm_fb_cma_funcs);
 }
 EXPORT_SYMBOL_GPL(drm_fbdev_cma_init);
 
diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c
index c7fafa175755..a30c645035de 100644
--- a/drivers/gpu/drm/drm_fb_helper.c
+++ b/drivers/gpu/drm/drm_fb_helper.c
@@ -712,7 +712,6 @@  EXPORT_SYMBOL(drm_fb_helper_prepare);
  * drm_fb_helper_init - initialize a drm_fb_helper structure
  * @dev: drm device
  * @fb_helper: driver-allocated fbdev helper structure to initialize
- * @crtc_count: maximum number of crtcs to support in this fbdev emulation
  * @max_conn_count: max connector count
  *
  * This allocates the structures for the fbdev helper with the given limits.
@@ -727,9 +726,10 @@  EXPORT_SYMBOL(drm_fb_helper_prepare);
  */
 int drm_fb_helper_init(struct drm_device *dev,
 		       struct drm_fb_helper *fb_helper,
-		       int crtc_count, int max_conn_count)
+		       int max_conn_count)
 {
 	struct drm_crtc *crtc;
+	struct drm_mode_config *config = &dev->mode_config;
 	int i;
 
 	if (!drm_fbdev_emulation)
@@ -738,11 +738,11 @@  int drm_fb_helper_init(struct drm_device *dev,
 	if (!max_conn_count)
 		return -EINVAL;
 
-	fb_helper->crtc_info = kcalloc(crtc_count, sizeof(struct drm_fb_helper_crtc), GFP_KERNEL);
+	fb_helper->crtc_info = kcalloc(config->num_crtc, sizeof(struct drm_fb_helper_crtc), GFP_KERNEL);
 	if (!fb_helper->crtc_info)
 		return -ENOMEM;
 
-	fb_helper->crtc_count = crtc_count;
+	fb_helper->crtc_count = config->num_crtc;
 	fb_helper->connector_info = kcalloc(dev->mode_config.num_connector, sizeof(struct drm_fb_helper_connector *), GFP_KERNEL);
 	if (!fb_helper->connector_info) {
 		kfree(fb_helper->crtc_info);
@@ -751,7 +751,7 @@  int drm_fb_helper_init(struct drm_device *dev,
 	fb_helper->connector_info_alloc_count = dev->mode_config.num_connector;
 	fb_helper->connector_count = 0;
 
-	for (i = 0; i < crtc_count; i++) {
+	for (i = 0; i < fb_helper->crtc_count; i++) {
 		fb_helper->crtc_info[i].mode_set.connectors =
 			kcalloc(max_conn_count,
 				sizeof(struct drm_connector *),
diff --git a/drivers/gpu/drm/exynos/exynos_drm_fbdev.c b/drivers/gpu/drm/exynos/exynos_drm_fbdev.c
index a7884bea42eb..bcdb2720b68e 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_fbdev.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_fbdev.c
@@ -208,7 +208,6 @@  int exynos_drm_fbdev_init(struct drm_device *dev)
 	struct exynos_drm_fbdev *fbdev;
 	struct exynos_drm_private *private = dev->dev_private;
 	struct drm_fb_helper *helper;
-	unsigned int num_crtc;
 	int ret;
 
 	if (!dev->mode_config.num_crtc || !dev->mode_config.num_connector)
@@ -225,9 +224,7 @@  int exynos_drm_fbdev_init(struct drm_device *dev)
 
 	drm_fb_helper_prepare(dev, helper, &exynos_drm_fb_helper_funcs);
 
-	num_crtc = dev->mode_config.num_crtc;
-
-	ret = drm_fb_helper_init(dev, helper, num_crtc, MAX_CONNECTOR);
+	ret = drm_fb_helper_init(dev, helper, MAX_CONNECTOR);
 	if (ret < 0) {
 		DRM_ERROR("failed to initialize drm fb helper.\n");
 		goto err_init;
diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
index 48705248f894..04173235f448 100644
--- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
+++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
@@ -94,7 +94,7 @@  static int fsl_dcu_load(struct drm_device *dev, unsigned long flags)
 			"Invalid legacyfb_depth.  Defaulting to 24bpp\n");
 		legacyfb_depth = 24;
 	}
-	fsl_dev->fbdev = drm_fbdev_cma_init(dev, legacyfb_depth, 1, 1);
+	fsl_dev->fbdev = drm_fbdev_cma_init(dev, legacyfb_depth, 1);
 	if (IS_ERR(fsl_dev->fbdev)) {
 		ret = PTR_ERR(fsl_dev->fbdev);
 		fsl_dev->fbdev = NULL;
diff --git a/drivers/gpu/drm/gma500/framebuffer.c b/drivers/gpu/drm/gma500/framebuffer.c
index fd1488bf5189..da42d2e1d397 100644
--- a/drivers/gpu/drm/gma500/framebuffer.c
+++ b/drivers/gpu/drm/gma500/framebuffer.c
@@ -564,7 +564,7 @@  int psb_fbdev_init(struct drm_device *dev)
 	drm_fb_helper_prepare(dev, &fbdev->psb_fb_helper, &psb_fb_helper_funcs);
 
 	ret = drm_fb_helper_init(dev, &fbdev->psb_fb_helper,
-				 dev_priv->ops->crtcs, INTELFB_CONN_LIMIT);
+				 INTELFB_CONN_LIMIT);
 	if (ret)
 		goto free;
 
diff --git a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_fbdev.c b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_fbdev.c
index 16fe79053ee1..d7a4d9095b33 100644
--- a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_fbdev.c
+++ b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_fbdev.c
@@ -200,8 +200,7 @@  int hibmc_fbdev_init(struct hibmc_drm_private *priv)
 			      &hibmc_fbdev_helper_funcs);
 
 	/* Now just one crtc and one channel */
-	ret = drm_fb_helper_init(priv->dev,
-				 &hifbdev->helper, 1, 1);
+	ret = drm_fb_helper_init(priv->dev, &hifbdev->helper, 1);
 	if (ret) {
 		DRM_ERROR("failed to initialize fb helper: %d\n", ret);
 		return ret;
diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c
index 7df0e8535e41..7ec93aec7e88 100644
--- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c
+++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c
@@ -59,8 +59,7 @@  static void kirin_fbdev_output_poll_changed(struct drm_device *dev)
 		drm_fbdev_cma_hotplug_event(priv->fbdev);
 	} else {
 		priv->fbdev = drm_fbdev_cma_init(dev, 32,
-				dev->mode_config.num_crtc,
-				dev->mode_config.num_connector);
+						 dev->mode_config.num_connector);
 		if (IS_ERR(priv->fbdev))
 			priv->fbdev = NULL;
 	}
diff --git a/drivers/gpu/drm/i915/intel_fbdev.c b/drivers/gpu/drm/i915/intel_fbdev.c
index e0d9e72cf3d1..1b8ba2e77539 100644
--- a/drivers/gpu/drm/i915/intel_fbdev.c
+++ b/drivers/gpu/drm/i915/intel_fbdev.c
@@ -713,8 +713,7 @@  int intel_fbdev_init(struct drm_device *dev)
 	if (!intel_fbdev_init_bios(dev, ifbdev))
 		ifbdev->preferred_bpp = 32;
 
-	ret = drm_fb_helper_init(dev, &ifbdev->helper,
-				 INTEL_INFO(dev_priv)->num_pipes, 4);
+	ret = drm_fb_helper_init(dev, &ifbdev->helper, 4);
 	if (ret) {
 		kfree(ifbdev);
 		return ret;
diff --git a/drivers/gpu/drm/imx/imx-drm-core.c b/drivers/gpu/drm/imx/imx-drm-core.c
index 33404295b447..5ae48836652e 100644
--- a/drivers/gpu/drm/imx/imx-drm-core.c
+++ b/drivers/gpu/drm/imx/imx-drm-core.c
@@ -389,8 +389,7 @@  static int imx_drm_bind(struct device *dev)
 		dev_warn(dev, "Invalid legacyfb_depth.  Defaulting to 16bpp\n");
 		legacyfb_depth = 16;
 	}
-	imxdrm->fbhelper = drm_fbdev_cma_init(drm, legacyfb_depth,
-				drm->mode_config.num_crtc, MAX_CRTC);
+	imxdrm->fbhelper = drm_fbdev_cma_init(drm, legacyfb_depth, MAX_CRTC);
 	if (IS_ERR(imxdrm->fbhelper)) {
 		ret = PTR_ERR(imxdrm->fbhelper);
 		imxdrm->fbhelper = NULL;
diff --git a/drivers/gpu/drm/meson/meson_drv.c b/drivers/gpu/drm/meson/meson_drv.c
index ff1f6019b97b..644d4c14dd40 100644
--- a/drivers/gpu/drm/meson/meson_drv.c
+++ b/drivers/gpu/drm/meson/meson_drv.c
@@ -279,7 +279,6 @@  static int meson_drv_probe(struct platform_device *pdev)
 	drm->mode_config.funcs = &meson_mode_config_funcs;
 
 	priv->fbdev = drm_fbdev_cma_init(drm, 32,
-					 drm->mode_config.num_crtc,
 					 drm->mode_config.num_connector);
 	if (IS_ERR(priv->fbdev)) {
 		ret = PTR_ERR(priv->fbdev);
diff --git a/drivers/gpu/drm/mgag200/mgag200_fb.c b/drivers/gpu/drm/mgag200/mgag200_fb.c
index 1a665e1671b8..a449bb91213a 100644
--- a/drivers/gpu/drm/mgag200/mgag200_fb.c
+++ b/drivers/gpu/drm/mgag200/mgag200_fb.c
@@ -286,7 +286,7 @@  int mgag200_fbdev_init(struct mga_device *mdev)
 	drm_fb_helper_prepare(mdev->dev, &mfbdev->helper, &mga_fb_helper_funcs);
 
 	ret = drm_fb_helper_init(mdev->dev, &mfbdev->helper,
-				 mdev->num_crtc, MGAG200FB_CONN_LIMIT);
+				 MGAG200FB_CONN_LIMIT);
 	if (ret)
 		goto err_fb_helper;
 
diff --git a/drivers/gpu/drm/msm/msm_fbdev.c b/drivers/gpu/drm/msm/msm_fbdev.c
index f8a587eac6b8..6b1b375653f7 100644
--- a/drivers/gpu/drm/msm/msm_fbdev.c
+++ b/drivers/gpu/drm/msm/msm_fbdev.c
@@ -201,8 +201,7 @@  struct drm_fb_helper *msm_fbdev_init(struct drm_device *dev)
 
 	drm_fb_helper_prepare(dev, helper, &msm_fb_helper_funcs);
 
-	ret = drm_fb_helper_init(dev, helper,
-			priv->num_crtcs, priv->num_connectors);
+	ret = drm_fb_helper_init(dev, helper, priv->num_connectors);
 	if (ret) {
 		dev_err(dev->dev, "could not init fbdev: ret=%d\n", ret);
 		goto fail;
diff --git a/drivers/gpu/drm/mxsfb/mxsfb_drv.c b/drivers/gpu/drm/mxsfb/mxsfb_drv.c
index 955441f71500..cdfbe0284635 100644
--- a/drivers/gpu/drm/mxsfb/mxsfb_drv.c
+++ b/drivers/gpu/drm/mxsfb/mxsfb_drv.c
@@ -218,7 +218,7 @@  static int mxsfb_load(struct drm_device *drm, unsigned long flags)
 
 	drm_kms_helper_poll_init(drm);
 
-	mxsfb->fbdev = drm_fbdev_cma_init(drm, 32, drm->mode_config.num_crtc,
+	mxsfb->fbdev = drm_fbdev_cma_init(drm, 32,
 					  drm->mode_config.num_connector);
 	if (IS_ERR(mxsfb->fbdev)) {
 		mxsfb->fbdev = NULL;
diff --git a/drivers/gpu/drm/nouveau/nouveau_fbcon.c b/drivers/gpu/drm/nouveau/nouveau_fbcon.c
index 9de6abb65781..971c147a3984 100644
--- a/drivers/gpu/drm/nouveau/nouveau_fbcon.c
+++ b/drivers/gpu/drm/nouveau/nouveau_fbcon.c
@@ -507,8 +507,7 @@  nouveau_fbcon_init(struct drm_device *dev)
 
 	drm_fb_helper_prepare(dev, &fbcon->helper, &nouveau_fbcon_helper_funcs);
 
-	ret = drm_fb_helper_init(dev, &fbcon->helper,
-				 dev->mode_config.num_crtc, 4);
+	ret = drm_fb_helper_init(dev, &fbcon->helper, 4);
 	if (ret)
 		goto free;
 
diff --git a/drivers/gpu/drm/omapdrm/omap_fbdev.c b/drivers/gpu/drm/omapdrm/omap_fbdev.c
index 2a839956dae6..942c4d483008 100644
--- a/drivers/gpu/drm/omapdrm/omap_fbdev.c
+++ b/drivers/gpu/drm/omapdrm/omap_fbdev.c
@@ -263,8 +263,7 @@  struct drm_fb_helper *omap_fbdev_init(struct drm_device *dev)
 
 	drm_fb_helper_prepare(dev, helper, &omap_fb_helper_funcs);
 
-	ret = drm_fb_helper_init(dev, helper,
-			priv->num_crtcs, priv->num_connectors);
+	ret = drm_fb_helper_init(dev, helper, priv->num_connectors);
 	if (ret) {
 		dev_err(dev->dev, "could not init fbdev: ret=%d\n", ret);
 		goto fail;
diff --git a/drivers/gpu/drm/qxl/qxl_fb.c b/drivers/gpu/drm/qxl/qxl_fb.c
index 53edfa498af5..d479b7a7abe4 100644
--- a/drivers/gpu/drm/qxl/qxl_fb.c
+++ b/drivers/gpu/drm/qxl/qxl_fb.c
@@ -399,7 +399,6 @@  int qxl_fbdev_init(struct qxl_device *qdev)
 			      &qxl_fb_helper_funcs);
 
 	ret = drm_fb_helper_init(&qdev->ddev, &qfbdev->helper,
-				 qxl_num_crtc,
 				 QXLFB_CONN_LIMIT);
 	if (ret)
 		goto free;
diff --git a/drivers/gpu/drm/radeon/radeon_fb.c b/drivers/gpu/drm/radeon/radeon_fb.c
index 6c10a83f3362..2be4fe9c7217 100644
--- a/drivers/gpu/drm/radeon/radeon_fb.c
+++ b/drivers/gpu/drm/radeon/radeon_fb.c
@@ -366,7 +366,6 @@  int radeon_fbdev_init(struct radeon_device *rdev)
 			      &radeon_fb_helper_funcs);
 
 	ret = drm_fb_helper_init(rdev->ddev, &rfbdev->helper,
-				 rdev->num_crtc,
 				 RADEONFB_CONN_LIMIT);
 	if (ret)
 		goto free;
diff --git a/drivers/gpu/drm/rcar-du/rcar_du_kms.c b/drivers/gpu/drm/rcar-du/rcar_du_kms.c
index b5d3f16cfa12..ff61f6032f2c 100644
--- a/drivers/gpu/drm/rcar-du/rcar_du_kms.c
+++ b/drivers/gpu/drm/rcar-du/rcar_du_kms.c
@@ -662,7 +662,7 @@  int rcar_du_modeset_init(struct rcar_du_device *rcdu)
 	drm_kms_helper_poll_init(dev);
 
 	if (dev->mode_config.num_connector) {
-		fbdev = drm_fbdev_cma_init(dev, 32, dev->mode_config.num_crtc,
+		fbdev = drm_fbdev_cma_init(dev, 32,
 					   dev->mode_config.num_connector);
 		if (IS_ERR(fbdev))
 			return PTR_ERR(fbdev);
diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_fbdev.c b/drivers/gpu/drm/rockchip/rockchip_drm_fbdev.c
index 52d1fdf9f9da..70ad50dd594d 100644
--- a/drivers/gpu/drm/rockchip/rockchip_drm_fbdev.c
+++ b/drivers/gpu/drm/rockchip/rockchip_drm_fbdev.c
@@ -129,19 +129,16 @@  int rockchip_drm_fbdev_init(struct drm_device *dev)
 {
 	struct rockchip_drm_private *private = dev->dev_private;
 	struct drm_fb_helper *helper;
-	unsigned int num_crtc;
 	int ret;
 
 	if (!dev->mode_config.num_crtc || !dev->mode_config.num_connector)
 		return -EINVAL;
 
-	num_crtc = dev->mode_config.num_crtc;
-
 	helper = &private->fbdev_helper;
 
 	drm_fb_helper_prepare(dev, helper, &rockchip_drm_fb_helper_funcs);
 
-	ret = drm_fb_helper_init(dev, helper, num_crtc, ROCKCHIP_MAX_CONNECTOR);
+	ret = drm_fb_helper_init(dev, helper, ROCKCHIP_MAX_CONNECTOR);
 	if (ret < 0) {
 		dev_err(dev->dev, "Failed to initialize drm fb helper - %d.\n",
 			ret);
diff --git a/drivers/gpu/drm/sti/sti_drv.c b/drivers/gpu/drm/sti/sti_drv.c
index acc056644cd0..788feed208d7 100644
--- a/drivers/gpu/drm/sti/sti_drv.c
+++ b/drivers/gpu/drm/sti/sti_drv.c
@@ -360,7 +360,7 @@  static int sti_bind(struct device *dev)
 
 	private = ddev->dev_private;
 	if (ddev->mode_config.num_connector) {
-		fbdev = drm_fbdev_cma_init(ddev, 32, ddev->mode_config.num_crtc,
+		fbdev = drm_fbdev_cma_init(ddev, 32,
 					   ddev->mode_config.num_connector);
 		if (IS_ERR(fbdev)) {
 			DRM_DEBUG_DRIVER("Warning: fails to create fbdev\n");
diff --git a/drivers/gpu/drm/sun4i/sun4i_framebuffer.c b/drivers/gpu/drm/sun4i/sun4i_framebuffer.c
index 8b6ce619ad81..2c3beff8b53e 100644
--- a/drivers/gpu/drm/sun4i/sun4i_framebuffer.c
+++ b/drivers/gpu/drm/sun4i/sun4i_framebuffer.c
@@ -40,9 +40,7 @@  struct drm_fbdev_cma *sun4i_framebuffer_init(struct drm_device *drm)
 
 	drm->mode_config.funcs = &sun4i_de_mode_config_funcs;
 
-	return drm_fbdev_cma_init(drm, 32,
-				  drm->mode_config.num_crtc,
-				  drm->mode_config.num_connector);
+	return drm_fbdev_cma_init(drm, 32, drm->mode_config.num_connector);
 }
 
 void sun4i_framebuffer_free(struct drm_device *drm)
diff --git a/drivers/gpu/drm/tegra/fb.c b/drivers/gpu/drm/tegra/fb.c
index f896e2ff7d47..f142f6a4db25 100644
--- a/drivers/gpu/drm/tegra/fb.c
+++ b/drivers/gpu/drm/tegra/fb.c
@@ -309,7 +309,7 @@  static int tegra_fbdev_init(struct tegra_fbdev *fbdev,
 	struct drm_device *drm = fbdev->base.dev;
 	int err;
 
-	err = drm_fb_helper_init(drm, &fbdev->base, num_crtc, max_connectors);
+	err = drm_fb_helper_init(drm, &fbdev->base, max_connectors);
 	if (err < 0) {
 		dev_err(drm->dev, "failed to initialize DRM FB helper: %d\n",
 			err);
diff --git a/drivers/gpu/drm/tilcdc/tilcdc_drv.c b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
index 919294a735fe..372d86fbb093 100644
--- a/drivers/gpu/drm/tilcdc/tilcdc_drv.c
+++ b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
@@ -403,8 +403,7 @@  static int tilcdc_init(struct drm_driver *ddrv, struct device *dev)
 	drm_mode_config_reset(ddev);
 
 	priv->fbdev = drm_fbdev_cma_init(ddev, bpp,
-			ddev->mode_config.num_crtc,
-			ddev->mode_config.num_connector);
+					 ddev->mode_config.num_connector);
 	if (IS_ERR(priv->fbdev)) {
 		ret = PTR_ERR(priv->fbdev);
 		goto init_failed;
diff --git a/drivers/gpu/drm/udl/udl_fb.c b/drivers/gpu/drm/udl/udl_fb.c
index b8dc06d68777..8e8d60e9a1a2 100644
--- a/drivers/gpu/drm/udl/udl_fb.c
+++ b/drivers/gpu/drm/udl/udl_fb.c
@@ -441,8 +441,7 @@  int udl_fbdev_init(struct drm_device *dev)
 
 	drm_fb_helper_prepare(dev, &ufbdev->helper, &udl_fb_helper_funcs);
 
-	ret = drm_fb_helper_init(dev, &ufbdev->helper,
-				 1, 1);
+	ret = drm_fb_helper_init(dev, &ufbdev->helper, 1);
 	if (ret)
 		goto free;
 
diff --git a/drivers/gpu/drm/vc4/vc4_kms.c b/drivers/gpu/drm/vc4/vc4_kms.c
index be8dd8262f27..ad7925a9e0ea 100644
--- a/drivers/gpu/drm/vc4/vc4_kms.c
+++ b/drivers/gpu/drm/vc4/vc4_kms.c
@@ -231,7 +231,6 @@  int vc4_kms_load(struct drm_device *dev)
 	drm_mode_config_reset(dev);
 
 	vc4->fbdev = drm_fbdev_cma_init(dev, 32,
-					dev->mode_config.num_crtc,
 					dev->mode_config.num_connector);
 	if (IS_ERR(vc4->fbdev))
 		vc4->fbdev = NULL;
diff --git a/drivers/gpu/drm/virtio/virtgpu_fb.c b/drivers/gpu/drm/virtio/virtgpu_fb.c
index 24f99fc9d8a4..163a67db8cf1 100644
--- a/drivers/gpu/drm/virtio/virtgpu_fb.c
+++ b/drivers/gpu/drm/virtio/virtgpu_fb.c
@@ -387,7 +387,6 @@  int virtio_gpu_fbdev_init(struct virtio_gpu_device *vgdev)
 	drm_fb_helper_prepare(vgdev->ddev, &vgfbdev->helper,
 			      &virtio_gpu_fb_helper_funcs);
 	ret = drm_fb_helper_init(vgdev->ddev, &vgfbdev->helper,
-				 vgdev->num_scanouts,
 				 VIRTIO_GPUFB_CONN_LIMIT);
 	if (ret) {
 		kfree(vgfbdev);
diff --git a/drivers/gpu/drm/zte/zx_drm_drv.c b/drivers/gpu/drm/zte/zx_drm_drv.c
index 13081fed902d..5c6944a1e72c 100644
--- a/drivers/gpu/drm/zte/zx_drm_drv.c
+++ b/drivers/gpu/drm/zte/zx_drm_drv.c
@@ -141,7 +141,7 @@  static int zx_drm_bind(struct device *dev)
 	drm_mode_config_reset(drm);
 	drm_kms_helper_poll_init(drm);
 
-	priv->fbdev = drm_fbdev_cma_init(drm, 32, drm->mode_config.num_crtc,
+	priv->fbdev = drm_fbdev_cma_init(drm, 32,
 					 drm->mode_config.num_connector);
 	if (IS_ERR(priv->fbdev)) {
 		ret = PTR_ERR(priv->fbdev);
diff --git a/include/drm/drm_fb_cma_helper.h b/include/drm/drm_fb_cma_helper.h
index 8dd6e5585e51..a5ecc0a58260 100644
--- a/include/drm/drm_fb_cma_helper.h
+++ b/include/drm/drm_fb_cma_helper.h
@@ -16,11 +16,10 @@  struct drm_plane;
 struct drm_plane_state;
 
 struct drm_fbdev_cma *drm_fbdev_cma_init_with_funcs(struct drm_device *dev,
-	unsigned int preferred_bpp, unsigned int num_crtc,
-	unsigned int max_conn_count, const struct drm_framebuffer_funcs *funcs);
+	unsigned int preferred_bpp, unsigned int max_conn_count,
+	const struct drm_framebuffer_funcs *funcs);
 struct drm_fbdev_cma *drm_fbdev_cma_init(struct drm_device *dev,
-	unsigned int preferred_bpp, unsigned int num_crtc,
-	unsigned int max_conn_count);
+	unsigned int preferred_bpp, unsigned int max_conn_count);
 void drm_fbdev_cma_fini(struct drm_fbdev_cma *fbdev_cma);
 
 void drm_fbdev_cma_restore_mode(struct drm_fbdev_cma *fbdev_cma);
diff --git a/include/drm/drm_fb_helper.h b/include/drm/drm_fb_helper.h
index e62e1cf22678..278820ee17ad 100644
--- a/include/drm/drm_fb_helper.h
+++ b/include/drm/drm_fb_helper.h
@@ -236,8 +236,7 @@  struct drm_fb_helper {
 void drm_fb_helper_prepare(struct drm_device *dev, struct drm_fb_helper *helper,
 			   const struct drm_fb_helper_funcs *funcs);
 int drm_fb_helper_init(struct drm_device *dev,
-		       struct drm_fb_helper *helper, int crtc_count,
-		       int max_conn);
+		       struct drm_fb_helper *helper, int max_conn);
 void drm_fb_helper_fini(struct drm_fb_helper *helper);
 int drm_fb_helper_blank(int blank, struct fb_info *info);
 int drm_fb_helper_pan_display(struct fb_var_screeninfo *var,