This series addresses below drm_fb_helper tasks from Documentation/gpu/todo.rst.
- The max connector argument for drm_fb_helper_init() isn't used anymore and can be removed.
- The helper doesn't keep an array of connectors anymore so these can be removed: drm_fb_helper_single_add_all_connectors(), drm_fb_helper_add_one_connector() and drm_fb_helper_remove_one_connector().
Changes since v1: - Squashed warning fixes into the patch that introduced the warnings (into 5/7) (Laurent) - Fixed reflow in in 9/9 (Laurent)
Pankaj Bharadiya (7): drm: Remove unused arg from drm_fb_helper_init drm/radeon: remove radeon_fb_{add,remove}_connector functions drm/amdgpu: Remove drm_fb_helper_{add,remove}_one_connector calls drm/i915/display: Remove drm_fb_helper_{add,remove}_one_connector calls drm: Remove drm_fb_helper add, add all and remove connector calls drm/fb-helper: Remove drm_fb_helper add, add_all and remove connector functions drm/todo: Update drm_fb_helper tasks
Documentation/gpu/todo.rst | 7 ----- drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c | 5 +--- .../display/amdgpu_dm/amdgpu_dm_mst_types.c | 13 --------- drivers/gpu/drm/armada/armada_fbdev.c | 8 +----- drivers/gpu/drm/bridge/tc358764.c | 3 --- drivers/gpu/drm/drm_fb_helper.c | 6 ++--- drivers/gpu/drm/exynos/exynos_drm_dsi.c | 1 - drivers/gpu/drm/exynos/exynos_drm_fbdev.c | 10 +------ drivers/gpu/drm/gma500/framebuffer.c | 6 +---- drivers/gpu/drm/i915/display/intel_dp_mst.c | 12 --------- drivers/gpu/drm/i915/display/intel_fbdev.c | 4 +-- drivers/gpu/drm/msm/msm_fbdev.c | 6 +---- drivers/gpu/drm/nouveau/dispnv50/disp.c | 7 ----- drivers/gpu/drm/nouveau/nouveau_fbcon.c | 6 +---- drivers/gpu/drm/omapdrm/omap_fbdev.c | 6 +---- drivers/gpu/drm/radeon/radeon_dp_mst.c | 10 ------- drivers/gpu/drm/radeon/radeon_fb.c | 19 +------------ drivers/gpu/drm/radeon/radeon_mode.h | 3 --- drivers/gpu/drm/rockchip/rockchip_drm_fbdev.c | 9 +------ drivers/gpu/drm/tegra/fb.c | 8 +----- include/drm/drm_fb_helper.h | 27 ++----------------- 21 files changed, 15 insertions(+), 161 deletions(-)
The max connector argument for drm_fb_helper_init() isn't used anymore hence remove it.
All the drm_fb_helper_init() calls are modified with below sementic patch.
@@ expression E1, E2, E3; @@ - drm_fb_helper_init(E1,E2, E3) + drm_fb_helper_init(E1,E2)
Signed-off-by: Pankaj Bharadiya pankaj.laxminarayan.bharadiya@intel.com --- drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c | 3 +-- drivers/gpu/drm/armada/armada_fbdev.c | 2 +- drivers/gpu/drm/drm_fb_helper.c | 6 ++---- drivers/gpu/drm/exynos/exynos_drm_fbdev.c | 2 +- drivers/gpu/drm/gma500/framebuffer.c | 2 +- drivers/gpu/drm/i915/display/intel_fbdev.c | 2 +- drivers/gpu/drm/msm/msm_fbdev.c | 2 +- drivers/gpu/drm/nouveau/nouveau_fbcon.c | 2 +- drivers/gpu/drm/omapdrm/omap_fbdev.c | 2 +- drivers/gpu/drm/radeon/radeon_fb.c | 3 +-- drivers/gpu/drm/rockchip/rockchip_drm_fbdev.c | 2 +- drivers/gpu/drm/tegra/fb.c | 2 +- include/drm/drm_fb_helper.h | 6 ++---- 13 files changed, 15 insertions(+), 21 deletions(-)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c index 2672dc64a310..579d614c7b70 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c @@ -336,8 +336,7 @@ int amdgpu_fbdev_init(struct amdgpu_device *adev) drm_fb_helper_prepare(adev->ddev, &rfbdev->helper, &amdgpu_fb_helper_funcs);
- ret = drm_fb_helper_init(adev->ddev, &rfbdev->helper, - AMDGPUFB_CONN_LIMIT); + ret = drm_fb_helper_init(adev->ddev, &rfbdev->helper); if (ret) { kfree(rfbdev); return ret; diff --git a/drivers/gpu/drm/armada/armada_fbdev.c b/drivers/gpu/drm/armada/armada_fbdev.c index ac8a78bfda03..6254353c00ae 100644 --- a/drivers/gpu/drm/armada/armada_fbdev.c +++ b/drivers/gpu/drm/armada/armada_fbdev.c @@ -129,7 +129,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); + ret = drm_fb_helper_init(dev, fbh); if (ret) { DRM_ERROR("failed to initialize drm fb helper\n"); goto err_fb_helper; diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c index 490a99de6ec1..a9771de4d17e 100644 --- a/drivers/gpu/drm/drm_fb_helper.c +++ b/drivers/gpu/drm/drm_fb_helper.c @@ -450,7 +450,6 @@ EXPORT_SYMBOL(drm_fb_helper_prepare); * drm_fb_helper_init - initialize a &struct drm_fb_helper * @dev: drm device * @fb_helper: driver-allocated fbdev helper structure to initialize - * @max_conn_count: max connector count (not used) * * This allocates the structures for the fbdev helper with the given limits. * Note that this won't yet touch the hardware (through the driver interfaces) @@ -463,8 +462,7 @@ EXPORT_SYMBOL(drm_fb_helper_prepare); * Zero if everything went ok, nonzero otherwise. */ int drm_fb_helper_init(struct drm_device *dev, - struct drm_fb_helper *fb_helper, - int max_conn_count) + struct drm_fb_helper *fb_helper) { int ret;
@@ -2125,7 +2123,7 @@ static int drm_fbdev_client_hotplug(struct drm_client_dev *client)
drm_fb_helper_prepare(dev, fb_helper, &drm_fb_helper_generic_funcs);
- ret = drm_fb_helper_init(dev, fb_helper, 0); + ret = drm_fb_helper_init(dev, fb_helper); if (ret) goto err;
diff --git a/drivers/gpu/drm/exynos/exynos_drm_fbdev.c b/drivers/gpu/drm/exynos/exynos_drm_fbdev.c index 647a1fd1d815..5afecb6a30ad 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_fbdev.c +++ b/drivers/gpu/drm/exynos/exynos_drm_fbdev.c @@ -200,7 +200,7 @@ int exynos_drm_fbdev_init(struct drm_device *dev)
drm_fb_helper_prepare(dev, helper, &exynos_drm_fb_helper_funcs);
- ret = drm_fb_helper_init(dev, helper, MAX_CONNECTOR); + ret = drm_fb_helper_init(dev, helper); if (ret < 0) { DRM_DEV_ERROR(dev->dev, "failed to initialize drm fb helper.\n"); diff --git a/drivers/gpu/drm/gma500/framebuffer.c b/drivers/gpu/drm/gma500/framebuffer.c index 1459076d1980..fe892e1243db 100644 --- a/drivers/gpu/drm/gma500/framebuffer.c +++ b/drivers/gpu/drm/gma500/framebuffer.c @@ -513,7 +513,7 @@ int psb_fbdev_init(struct drm_device *dev)
drm_fb_helper_prepare(dev, fb_helper, &psb_fb_helper_funcs);
- ret = drm_fb_helper_init(dev, fb_helper, INTELFB_CONN_LIMIT); + ret = drm_fb_helper_init(dev, fb_helper); if (ret) goto free;
diff --git a/drivers/gpu/drm/i915/display/intel_fbdev.c b/drivers/gpu/drm/i915/display/intel_fbdev.c index b6ee0d902003..8f65963266a3 100644 --- a/drivers/gpu/drm/i915/display/intel_fbdev.c +++ b/drivers/gpu/drm/i915/display/intel_fbdev.c @@ -452,7 +452,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, 4); + ret = drm_fb_helper_init(dev, &ifbdev->helper); if (ret) { kfree(ifbdev); return ret; diff --git a/drivers/gpu/drm/msm/msm_fbdev.c b/drivers/gpu/drm/msm/msm_fbdev.c index db48867df47d..b4f44146d9de 100644 --- a/drivers/gpu/drm/msm/msm_fbdev.c +++ b/drivers/gpu/drm/msm/msm_fbdev.c @@ -160,7 +160,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_connectors); + ret = drm_fb_helper_init(dev, helper); if (ret) { DRM_DEV_ERROR(dev->dev, "could not init fbdev: ret=%d\n", ret); goto fail; diff --git a/drivers/gpu/drm/nouveau/nouveau_fbcon.c b/drivers/gpu/drm/nouveau/nouveau_fbcon.c index 0c5cdda3c336..21fc7c63e2f7 100644 --- a/drivers/gpu/drm/nouveau/nouveau_fbcon.c +++ b/drivers/gpu/drm/nouveau/nouveau_fbcon.c @@ -558,7 +558,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, 4); + ret = drm_fb_helper_init(dev, &fbcon->helper); if (ret) goto free;
diff --git a/drivers/gpu/drm/omapdrm/omap_fbdev.c b/drivers/gpu/drm/omapdrm/omap_fbdev.c index b06e5cbfd03a..eba57ac31cc6 100644 --- a/drivers/gpu/drm/omapdrm/omap_fbdev.c +++ b/drivers/gpu/drm/omapdrm/omap_fbdev.c @@ -242,7 +242,7 @@ void 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_pipes); + ret = drm_fb_helper_init(dev, helper); if (ret) goto fail;
diff --git a/drivers/gpu/drm/radeon/radeon_fb.c b/drivers/gpu/drm/radeon/radeon_fb.c index ec0b7d6c994d..85548cf2529a 100644 --- a/drivers/gpu/drm/radeon/radeon_fb.c +++ b/drivers/gpu/drm/radeon/radeon_fb.c @@ -354,8 +354,7 @@ int radeon_fbdev_init(struct radeon_device *rdev) drm_fb_helper_prepare(rdev->ddev, &rfbdev->helper, &radeon_fb_helper_funcs);
- ret = drm_fb_helper_init(rdev->ddev, &rfbdev->helper, - RADEONFB_CONN_LIMIT); + ret = drm_fb_helper_init(rdev->ddev, &rfbdev->helper); if (ret) goto free;
diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_fbdev.c b/drivers/gpu/drm/rockchip/rockchip_drm_fbdev.c index 521fe42ac5e2..6ad4cce17089 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_fbdev.c +++ b/drivers/gpu/drm/rockchip/rockchip_drm_fbdev.c @@ -124,7 +124,7 @@ int rockchip_drm_fbdev_init(struct drm_device *dev)
drm_fb_helper_prepare(dev, helper, &rockchip_drm_fb_helper_funcs);
- ret = drm_fb_helper_init(dev, helper, ROCKCHIP_MAX_CONNECTOR); + ret = drm_fb_helper_init(dev, helper); if (ret < 0) { DRM_DEV_ERROR(dev->dev, "Failed to initialize drm fb helper - %d.\n", diff --git a/drivers/gpu/drm/tegra/fb.c b/drivers/gpu/drm/tegra/fb.c index 84f0e01e3428..feefe62be8dd 100644 --- a/drivers/gpu/drm/tegra/fb.c +++ b/drivers/gpu/drm/tegra/fb.c @@ -314,7 +314,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, max_connectors); + err = drm_fb_helper_init(drm, &fbdev->base); if (err < 0) { dev_err(drm->dev, "failed to initialize DRM FB helper: %d\n", err); diff --git a/include/drm/drm_fb_helper.h b/include/drm/drm_fb_helper.h index 1c6633da0f91..62e8dda6d1d1 100644 --- a/include/drm/drm_fb_helper.h +++ b/include/drm/drm_fb_helper.h @@ -213,8 +213,7 @@ drm_fb_helper_from_client(struct drm_client_dev *client) #ifdef CONFIG_DRM_FBDEV_EMULATION 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 max_conn); +int drm_fb_helper_init(struct drm_device *dev, struct drm_fb_helper *helper); 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, @@ -279,8 +278,7 @@ static inline void drm_fb_helper_prepare(struct drm_device *dev, }
static inline int drm_fb_helper_init(struct drm_device *dev, - struct drm_fb_helper *helper, - int max_conn) + struct drm_fb_helper *helper) { /* So drivers can use it to free the struct */ helper->dev = dev;
drm_fb_helper_{add,remove}_one_connector() are dummy functions now and serve no purpose. Hence remove their calls.
This is the preparatory step for removing the drm_fb_helper_{add,remove}_one_connector() functions from drm_fb_helper.h
Signed-off-by: Pankaj Bharadiya pankaj.laxminarayan.bharadiya@intel.com --- drivers/gpu/drm/radeon/radeon_dp_mst.c | 10 ---------- drivers/gpu/drm/radeon/radeon_fb.c | 12 ------------ drivers/gpu/drm/radeon/radeon_mode.h | 3 --- 3 files changed, 25 deletions(-)
diff --git a/drivers/gpu/drm/radeon/radeon_dp_mst.c b/drivers/gpu/drm/radeon/radeon_dp_mst.c index 28eef9282874..5a9fb0ad175a 100644 --- a/drivers/gpu/drm/radeon/radeon_dp_mst.c +++ b/drivers/gpu/drm/radeon/radeon_dp_mst.c @@ -303,23 +303,13 @@ static struct drm_connector *radeon_dp_add_mst_connector(struct drm_dp_mst_topol
static void radeon_dp_register_mst_connector(struct drm_connector *connector) { - struct drm_device *dev = connector->dev; - struct radeon_device *rdev = dev->dev_private; - - radeon_fb_add_connector(rdev, connector); - drm_connector_register(connector); }
static void radeon_dp_destroy_mst_connector(struct drm_dp_mst_topology_mgr *mgr, struct drm_connector *connector) { - struct radeon_connector *master = container_of(mgr, struct radeon_connector, mst_mgr); - struct drm_device *dev = master->base.dev; - struct radeon_device *rdev = dev->dev_private; - drm_connector_unregister(connector); - radeon_fb_remove_connector(rdev, connector); drm_connector_cleanup(connector);
kfree(connector); diff --git a/drivers/gpu/drm/radeon/radeon_fb.c b/drivers/gpu/drm/radeon/radeon_fb.c index 85548cf2529a..1c02cd771d52 100644 --- a/drivers/gpu/drm/radeon/radeon_fb.c +++ b/drivers/gpu/drm/radeon/radeon_fb.c @@ -403,15 +403,3 @@ bool radeon_fbdev_robj_is_fb(struct radeon_device *rdev, struct radeon_bo *robj) return true; return false; } - -void radeon_fb_add_connector(struct radeon_device *rdev, struct drm_connector *connector) -{ - if (rdev->mode_info.rfbdev) - drm_fb_helper_add_one_connector(&rdev->mode_info.rfbdev->helper, connector); -} - -void radeon_fb_remove_connector(struct radeon_device *rdev, struct drm_connector *connector) -{ - if (rdev->mode_info.rfbdev) - drm_fb_helper_remove_one_connector(&rdev->mode_info.rfbdev->helper, connector); -} diff --git a/drivers/gpu/drm/radeon/radeon_mode.h b/drivers/gpu/drm/radeon/radeon_mode.h index 629567da29f1..c7f223743d46 100644 --- a/drivers/gpu/drm/radeon/radeon_mode.h +++ b/drivers/gpu/drm/radeon/radeon_mode.h @@ -986,9 +986,6 @@ bool radeon_fbdev_robj_is_fb(struct radeon_device *rdev, struct radeon_bo *robj)
void radeon_crtc_handle_vblank(struct radeon_device *rdev, int crtc_id);
-void radeon_fb_add_connector(struct radeon_device *rdev, struct drm_connector *connector); -void radeon_fb_remove_connector(struct radeon_device *rdev, struct drm_connector *connector); - void radeon_crtc_handle_flip(struct radeon_device *rdev, int crtc_id);
int radeon_align_pitch(struct radeon_device *rdev, int width, int bpp, bool tiled);
drm_fb_helper_{add,remove}_one_connector() are dummy functions now and serve no purpose. Hence remove their calls.
This is the preparatory step for removing the drm_fb_helper_{add,remove}_one_connector() functions from drm_fb_helper.h
Signed-off-by: Pankaj Bharadiya pankaj.laxminarayan.bharadiya@intel.com --- .../drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c | 13 ------------- 1 file changed, 13 deletions(-)
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c index 0ef0eeb16778..0c4faba8ed28 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c @@ -440,9 +440,6 @@ dm_dp_add_mst_connector(struct drm_dp_mst_topology_mgr *mgr, static void dm_dp_destroy_mst_connector(struct drm_dp_mst_topology_mgr *mgr, struct drm_connector *connector) { - struct amdgpu_dm_connector *master = container_of(mgr, struct amdgpu_dm_connector, mst_mgr); - struct drm_device *dev = master->base.dev; - struct amdgpu_device *adev = dev->dev_private; struct amdgpu_dm_connector *aconnector = to_amdgpu_dm_connector(connector);
DRM_INFO("DM_MST: Disabling connector: %p [id: %d] [master: %p]\n", @@ -457,21 +454,11 @@ static void dm_dp_destroy_mst_connector(struct drm_dp_mst_topology_mgr *mgr, }
drm_connector_unregister(connector); - if (adev->mode_info.rfbdev) - drm_fb_helper_remove_one_connector(&adev->mode_info.rfbdev->helper, connector); drm_connector_put(connector); }
static void dm_dp_mst_register_connector(struct drm_connector *connector) { - struct drm_device *dev = connector->dev; - struct amdgpu_device *adev = dev->dev_private; - - if (adev->mode_info.rfbdev) - drm_fb_helper_add_one_connector(&adev->mode_info.rfbdev->helper, connector); - else - DRM_ERROR("adev->mode_info.rfbdev is NULL\n"); - drm_connector_register(connector); }
drm_fb_helper_{add,remove}_one_connector() are dummy functions now and serve no purpose. Hence remove their calls.
This is the preparatory step for removing the drm_fb_helper_{add,remove}_one_connector() functions from drm_fb_helper.h
Signed-off-by: Pankaj Bharadiya pankaj.laxminarayan.bharadiya@intel.com --- drivers/gpu/drm/i915/display/intel_dp_mst.c | 12 ------------ 1 file changed, 12 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_dp_mst.c b/drivers/gpu/drm/i915/display/intel_dp_mst.c index d7bfa7c350e9..b15404a3b1ca 100644 --- a/drivers/gpu/drm/i915/display/intel_dp_mst.c +++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c @@ -721,27 +721,15 @@ static struct drm_connector *intel_dp_add_mst_connector(struct drm_dp_mst_topolo
static void intel_dp_register_mst_connector(struct drm_connector *connector) { - struct drm_i915_private *dev_priv = to_i915(connector->dev); - - if (dev_priv->fbdev) - drm_fb_helper_add_one_connector(&dev_priv->fbdev->helper, - connector); - drm_connector_register(connector); }
static void intel_dp_destroy_mst_connector(struct drm_dp_mst_topology_mgr *mgr, struct drm_connector *connector) { - struct drm_i915_private *dev_priv = to_i915(connector->dev); - DRM_DEBUG_KMS("[CONNECTOR:%d:%s]\n", connector->base.id, connector->name); drm_connector_unregister(connector);
- if (dev_priv->fbdev) - drm_fb_helper_remove_one_connector(&dev_priv->fbdev->helper, - connector); - drm_connector_put(connector); }
drm_fb_helper_{add,remove}_one_connector() and drm_fb_helper_single_add_all_connectors() are dummy functions now and serve no purpose. Hence remove their calls.
This is the preparatory step for removing the drm_fb_helper_{add,remove}_one_connector() functions from drm_fb_helper.h
This removal is done using below sementic patch and unused variable compilation warnings are fixed manually.
@@ @@
- drm_fb_helper_single_add_all_connectors(...);
@@ expression e1; statement S; @@ - e1 = drm_fb_helper_single_add_all_connectors(...); - S
@@ @@
- drm_fb_helper_add_one_connector(...);
@@ @@
- drm_fb_helper_remove_one_connector(...);
Signed-off-by: Pankaj Bharadiya pankaj.laxminarayan.bharadiya@intel.com --- drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c | 2 -- drivers/gpu/drm/armada/armada_fbdev.c | 6 ------ drivers/gpu/drm/bridge/tc358764.c | 3 --- drivers/gpu/drm/exynos/exynos_drm_dsi.c | 1 - drivers/gpu/drm/exynos/exynos_drm_fbdev.c | 8 -------- drivers/gpu/drm/gma500/framebuffer.c | 4 ---- drivers/gpu/drm/i915/display/intel_fbdev.c | 2 -- drivers/gpu/drm/msm/msm_fbdev.c | 4 ---- drivers/gpu/drm/nouveau/dispnv50/disp.c | 7 ------- drivers/gpu/drm/nouveau/nouveau_fbcon.c | 4 ---- drivers/gpu/drm/omapdrm/omap_fbdev.c | 4 ---- drivers/gpu/drm/radeon/radeon_fb.c | 4 ---- drivers/gpu/drm/rockchip/rockchip_drm_fbdev.c | 7 ------- drivers/gpu/drm/tegra/fb.c | 6 ------ 14 files changed, 62 deletions(-)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c index 579d614c7b70..9ae7b61f696a 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c @@ -342,8 +342,6 @@ int amdgpu_fbdev_init(struct amdgpu_device *adev) return ret; }
- drm_fb_helper_single_add_all_connectors(&rfbdev->helper); - /* disable all the possible outputs/crtcs before entering KMS mode */ if (!amdgpu_device_has_dc_support(adev)) drm_helper_disable_unused_functions(adev->ddev); diff --git a/drivers/gpu/drm/armada/armada_fbdev.c b/drivers/gpu/drm/armada/armada_fbdev.c index 6254353c00ae..f2dc371bd8e5 100644 --- a/drivers/gpu/drm/armada/armada_fbdev.c +++ b/drivers/gpu/drm/armada/armada_fbdev.c @@ -135,12 +135,6 @@ int armada_fbdev_init(struct drm_device *dev) goto err_fb_helper; }
- ret = drm_fb_helper_single_add_all_connectors(fbh); - if (ret) { - DRM_ERROR("failed to add fb connectors\n"); - goto err_fb_setup; - } - ret = drm_fb_helper_initial_config(fbh, 32); if (ret) { DRM_ERROR("failed to set initial config\n"); diff --git a/drivers/gpu/drm/bridge/tc358764.c b/drivers/gpu/drm/bridge/tc358764.c index 283e4a8dd923..5ac1430fab04 100644 --- a/drivers/gpu/drm/bridge/tc358764.c +++ b/drivers/gpu/drm/bridge/tc358764.c @@ -375,7 +375,6 @@ static int tc358764_attach(struct drm_bridge *bridge, drm_connector_attach_encoder(&ctx->connector, bridge->encoder); drm_panel_attach(ctx->panel, &ctx->connector); ctx->connector.funcs->reset(&ctx->connector); - drm_fb_helper_add_one_connector(drm->fb_helper, &ctx->connector); drm_connector_register(&ctx->connector);
return 0; @@ -384,10 +383,8 @@ static int tc358764_attach(struct drm_bridge *bridge, static void tc358764_detach(struct drm_bridge *bridge) { struct tc358764 *ctx = bridge_to_tc358764(bridge); - struct drm_device *drm = bridge->dev;
drm_connector_unregister(&ctx->connector); - drm_fb_helper_remove_one_connector(drm->fb_helper, &ctx->connector); drm_panel_detach(ctx->panel); ctx->panel = NULL; drm_connector_put(&ctx->connector); diff --git a/drivers/gpu/drm/exynos/exynos_drm_dsi.c b/drivers/gpu/drm/exynos/exynos_drm_dsi.c index 669d3857502a..38e43d957ae0 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_dsi.c +++ b/drivers/gpu/drm/exynos/exynos_drm_dsi.c @@ -1514,7 +1514,6 @@ static int exynos_dsi_create_connector(struct drm_encoder *encoder) return 0;
connector->funcs->reset(connector); - drm_fb_helper_add_one_connector(drm->fb_helper, connector); drm_connector_register(connector); return 0; } diff --git a/drivers/gpu/drm/exynos/exynos_drm_fbdev.c b/drivers/gpu/drm/exynos/exynos_drm_fbdev.c index 5afecb6a30ad..e6ceaf36fb04 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_fbdev.c +++ b/drivers/gpu/drm/exynos/exynos_drm_fbdev.c @@ -207,14 +207,6 @@ int exynos_drm_fbdev_init(struct drm_device *dev) goto err_init; }
- ret = drm_fb_helper_single_add_all_connectors(helper); - if (ret < 0) { - DRM_DEV_ERROR(dev->dev, - "failed to register drm_fb_helper_connector.\n"); - goto err_setup; - - } - ret = drm_fb_helper_initial_config(helper, PREFERRED_BPP); if (ret < 0) { DRM_DEV_ERROR(dev->dev, diff --git a/drivers/gpu/drm/gma500/framebuffer.c b/drivers/gpu/drm/gma500/framebuffer.c index fe892e1243db..1d8f67e4795a 100644 --- a/drivers/gpu/drm/gma500/framebuffer.c +++ b/drivers/gpu/drm/gma500/framebuffer.c @@ -517,10 +517,6 @@ int psb_fbdev_init(struct drm_device *dev) if (ret) goto free;
- ret = drm_fb_helper_single_add_all_connectors(fb_helper); - if (ret) - goto fini; - /* disable all the possible outputs/crtcs before entering KMS mode */ drm_helper_disable_unused_functions(dev);
diff --git a/drivers/gpu/drm/i915/display/intel_fbdev.c b/drivers/gpu/drm/i915/display/intel_fbdev.c index 8f65963266a3..3bc804212a99 100644 --- a/drivers/gpu/drm/i915/display/intel_fbdev.c +++ b/drivers/gpu/drm/i915/display/intel_fbdev.c @@ -461,8 +461,6 @@ int intel_fbdev_init(struct drm_device *dev) dev_priv->fbdev = ifbdev; INIT_WORK(&dev_priv->fbdev_suspend_work, intel_fbdev_suspend_worker);
- drm_fb_helper_single_add_all_connectors(&ifbdev->helper); - return 0; }
diff --git a/drivers/gpu/drm/msm/msm_fbdev.c b/drivers/gpu/drm/msm/msm_fbdev.c index b4f44146d9de..47235f8c5922 100644 --- a/drivers/gpu/drm/msm/msm_fbdev.c +++ b/drivers/gpu/drm/msm/msm_fbdev.c @@ -166,10 +166,6 @@ struct drm_fb_helper *msm_fbdev_init(struct drm_device *dev) goto fail; }
- ret = drm_fb_helper_single_add_all_connectors(helper); - if (ret) - goto fini; - /* the fw fb could be anywhere in memory */ drm_fb_helper_remove_conflicting_framebuffers(NULL, "msm", false);
diff --git a/drivers/gpu/drm/nouveau/dispnv50/disp.c b/drivers/gpu/drm/nouveau/dispnv50/disp.c index a3dc2ba19fb2..4e164ad8003f 100644 --- a/drivers/gpu/drm/nouveau/dispnv50/disp.c +++ b/drivers/gpu/drm/nouveau/dispnv50/disp.c @@ -1260,23 +1260,16 @@ static void nv50_mstm_destroy_connector(struct drm_dp_mst_topology_mgr *mgr, struct drm_connector *connector) { - struct nouveau_drm *drm = nouveau_drm(connector->dev); struct nv50_mstc *mstc = nv50_mstc(connector);
drm_connector_unregister(&mstc->connector);
- drm_fb_helper_remove_one_connector(&drm->fbcon->helper, &mstc->connector); - drm_connector_put(&mstc->connector); }
static void nv50_mstm_register_connector(struct drm_connector *connector) { - struct nouveau_drm *drm = nouveau_drm(connector->dev); - - drm_fb_helper_add_one_connector(&drm->fbcon->helper, connector); - drm_connector_register(connector); }
diff --git a/drivers/gpu/drm/nouveau/nouveau_fbcon.c b/drivers/gpu/drm/nouveau/nouveau_fbcon.c index 21fc7c63e2f7..24d543a01f43 100644 --- a/drivers/gpu/drm/nouveau/nouveau_fbcon.c +++ b/drivers/gpu/drm/nouveau/nouveau_fbcon.c @@ -562,10 +562,6 @@ nouveau_fbcon_init(struct drm_device *dev) if (ret) goto free;
- ret = drm_fb_helper_single_add_all_connectors(&fbcon->helper); - if (ret) - goto fini; - if (preferred_bpp != 8 && preferred_bpp != 16 && preferred_bpp != 32) { if (drm->client.device.info.ram_size <= 32 * 1024 * 1024) preferred_bpp = 8; diff --git a/drivers/gpu/drm/omapdrm/omap_fbdev.c b/drivers/gpu/drm/omapdrm/omap_fbdev.c index eba57ac31cc6..09a84919ef73 100644 --- a/drivers/gpu/drm/omapdrm/omap_fbdev.c +++ b/drivers/gpu/drm/omapdrm/omap_fbdev.c @@ -246,10 +246,6 @@ void omap_fbdev_init(struct drm_device *dev) if (ret) goto fail;
- ret = drm_fb_helper_single_add_all_connectors(helper); - if (ret) - goto fini; - ret = drm_fb_helper_initial_config(helper, 32); if (ret) goto fini; diff --git a/drivers/gpu/drm/radeon/radeon_fb.c b/drivers/gpu/drm/radeon/radeon_fb.c index 1c02cd771d52..cf3156a65fc1 100644 --- a/drivers/gpu/drm/radeon/radeon_fb.c +++ b/drivers/gpu/drm/radeon/radeon_fb.c @@ -358,10 +358,6 @@ int radeon_fbdev_init(struct radeon_device *rdev) if (ret) goto free;
- ret = drm_fb_helper_single_add_all_connectors(&rfbdev->helper); - if (ret) - goto fini; - /* disable all the possible outputs/crtcs before entering KMS mode */ drm_helper_disable_unused_functions(rdev->ddev);
diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_fbdev.c b/drivers/gpu/drm/rockchip/rockchip_drm_fbdev.c index 6ad4cce17089..2fdc455c4ad7 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_fbdev.c +++ b/drivers/gpu/drm/rockchip/rockchip_drm_fbdev.c @@ -132,13 +132,6 @@ int rockchip_drm_fbdev_init(struct drm_device *dev) return ret; }
- ret = drm_fb_helper_single_add_all_connectors(helper); - if (ret < 0) { - DRM_DEV_ERROR(dev->dev, - "Failed to add connectors - %d.\n", ret); - goto err_drm_fb_helper_fini; - } - ret = drm_fb_helper_initial_config(helper, PREFERRED_BPP); if (ret < 0) { DRM_DEV_ERROR(dev->dev, diff --git a/drivers/gpu/drm/tegra/fb.c b/drivers/gpu/drm/tegra/fb.c index feefe62be8dd..b8a328f53862 100644 --- a/drivers/gpu/drm/tegra/fb.c +++ b/drivers/gpu/drm/tegra/fb.c @@ -321,12 +321,6 @@ static int tegra_fbdev_init(struct tegra_fbdev *fbdev, return err; }
- err = drm_fb_helper_single_add_all_connectors(&fbdev->base); - if (err < 0) { - dev_err(drm->dev, "failed to add connectors: %d\n", err); - goto fini; - } - err = drm_fb_helper_initial_config(&fbdev->base, preferred_bpp); if (err < 0) { dev_err(drm->dev, "failed to set initial configuration: %d\n",
drm_fb_helper_single_add_all_connectors(), drm_fb_helper_add_one_connector() and drm_fb_helper_remove_one_connector() don't keep an array of connectors anymore and are just dummy. Now we have no callers to these functions hence remove them.
Signed-off-by: Pankaj Bharadiya pankaj.laxminarayan.bharadiya@intel.com --- include/drm/drm_fb_helper.h | 21 --------------------- 1 file changed, 21 deletions(-)
diff --git a/include/drm/drm_fb_helper.h b/include/drm/drm_fb_helper.h index 62e8dda6d1d1..208dbf87afa3 100644 --- a/include/drm/drm_fb_helper.h +++ b/include/drm/drm_fb_helper.h @@ -451,27 +451,6 @@ drm_fbdev_generic_setup(struct drm_device *dev, unsigned int preferred_bpp)
#endif
-/* TODO: There's a todo entry to remove these three */ -static inline int -drm_fb_helper_single_add_all_connectors(struct drm_fb_helper *fb_helper) -{ - return 0; -} - -static inline int -drm_fb_helper_add_one_connector(struct drm_fb_helper *fb_helper, - struct drm_connector *connector) -{ - return 0; -} - -static inline int -drm_fb_helper_remove_one_connector(struct drm_fb_helper *fb_helper, - struct drm_connector *connector) -{ - return 0; -} - /** * drm_fb_helper_remove_conflicting_framebuffers - remove firmware-configured framebuffers * @a: memory range, users of which are to be removed
Remove completed drm_fb_helper tasks from todo list.
Signed-off-by: Pankaj Bharadiya pankaj.laxminarayan.bharadiya@intel.com --- Documentation/gpu/todo.rst | 7 ------- 1 file changed, 7 deletions(-)
diff --git a/Documentation/gpu/todo.rst b/Documentation/gpu/todo.rst index ccf5e8e34222..302180b76c4f 100644 --- a/Documentation/gpu/todo.rst +++ b/Documentation/gpu/todo.rst @@ -367,13 +367,6 @@ drm_fb_helper tasks these igt tests need to be fixed: kms_fbcon_fbt@psr and kms_fbcon_fbt@psr-suspend.
-- The max connector argument for drm_fb_helper_init() isn't used anymore and - can be removed. - -- The helper doesn't keep an array of connectors anymore so these can be - removed: drm_fb_helper_single_add_all_connectors(), - drm_fb_helper_add_one_connector() and drm_fb_helper_remove_one_connector(). - Level: Intermediate
connector register/unregister fixes
Hi Pankaj,
On Mon, 2 Mar 2020 at 16:33, Pankaj Bharadiya pankaj.laxminarayan.bharadiya@intel.com wrote:
This series addresses below drm_fb_helper tasks from Documentation/gpu/todo.rst.
The max connector argument for drm_fb_helper_init() isn't used anymore and can be removed.
The helper doesn't keep an array of connectors anymore so these can be removed: drm_fb_helper_single_add_all_connectors(), drm_fb_helper_add_one_connector() and drm_fb_helper_remove_one_connector().
Changes since v1:
- Squashed warning fixes into the patch that introduced the warnings (into 5/7) (Laurent)
- Fixed reflow in in 9/9 (Laurent)
For the future, include the changelog in the respective patches. This makes it easier for reviewers... Plus you're already changing the commit - might as well mention what/why :-)
Also do include the R-B, Acked-by, other tags accumulated up-to that point, when sending new revision.
That said, if you're interested in further cleaning this up, one can cleanup the drm_dp_mst_topology_cbs hooks. In particular ::register_connector is identical across the board - create a helper function using it directly in core, killing the hook.
While for ::destroy_connector - there's some amdgpu specific code in there... which I'm not sure if it should stay or not. To be on the save side - create a helper which will be called for drivers where the hook is !=NULL (aka everyone but amdgpu).
HTH Emil
On Mon, Mar 02, 2020 at 06:21:23PM +0000, Emil Velikov wrote:
Hi Pankaj,
On Mon, 2 Mar 2020 at 16:33, Pankaj Bharadiya pankaj.laxminarayan.bharadiya@intel.com wrote:
This series addresses below drm_fb_helper tasks from Documentation/gpu/todo.rst.
The max connector argument for drm_fb_helper_init() isn't used anymore and can be removed.
The helper doesn't keep an array of connectors anymore so these can be removed: drm_fb_helper_single_add_all_connectors(), drm_fb_helper_add_one_connector() and drm_fb_helper_remove_one_connector().
Changes since v1:
- Squashed warning fixes into the patch that introduced the warnings (into 5/7) (Laurent)
- Fixed reflow in in 9/9 (Laurent)
For the future, include the changelog in the respective patches. This makes it easier for reviewers... Plus you're already changing the commit - might as well mention what/why :-)
Also do include the R-B, Acked-by, other tags accumulated up-to that point, when sending new revision.
Yup, can you pls resend that entire pile with all the ack/review tags from the earlier versions included? If you don't do that you waste reviewers time. Another one is that resend right away also kinda wastes peoples time, because there's a much bigger chance that someone will review the old version, instead of your new one. Better wait of at least 1-2 days or so.
That said, if you're interested in further cleaning this up, one can cleanup the drm_dp_mst_topology_cbs hooks. In particular ::register_connector is identical across the board - create a helper function using it directly in core, killing the hook.
While for ::destroy_connector - there's some amdgpu specific code in there... which I'm not sure if it should stay or not. To be on the save side - create a helper which will be called for drivers where the hook is !=NULL (aka everyone but amdgpu).
Yeah that stuff looks fishy. Smells a bit like old mst code developed before Lyude fixed the refcounting for real, it seems to manually shut down stuff that should be cleaned up with normal code paths (modeset and/or final kref_put on the connector). -Daniel
On Mon, Mar 02, 2020 at 10:43:19PM +0100, Daniel Vetter wrote:
On Mon, Mar 02, 2020 at 06:21:23PM +0000, Emil Velikov wrote:
Hi Pankaj,
On Mon, 2 Mar 2020 at 16:33, Pankaj Bharadiya pankaj.laxminarayan.bharadiya@intel.com wrote:
This series addresses below drm_fb_helper tasks from Documentation/gpu/todo.rst.
The max connector argument for drm_fb_helper_init() isn't used anymore and can be removed.
The helper doesn't keep an array of connectors anymore so these can be removed: drm_fb_helper_single_add_all_connectors(), drm_fb_helper_add_one_connector() and drm_fb_helper_remove_one_connector().
Changes since v1:
- Squashed warning fixes into the patch that introduced the warnings (into 5/7) (Laurent)
- Fixed reflow in in 9/9 (Laurent)
For the future, include the changelog in the respective patches. This makes it easier for reviewers... Plus you're already changing the commit - might as well mention what/why :-)
Also do include the R-B, Acked-by, other tags accumulated up-to that point, when sending new revision.
Yup, can you pls resend that entire pile with all the ack/review tags from the earlier versions included? If you don't do that you waste reviewers time. Another one is that resend right away also kinda wastes peoples time, because there's a much bigger chance that someone will review the old version, instead of your new one. Better wait of at least 1-2 days or so.
Hm just noticed that people are still reviewing v1. I'd say lets forget about this v2 here, wait 1-2 days, and then resend with everything combined. Hopefully not too many will re-review v2 here and waste time on stuff that's reviewed already. Resending within hours is really not good on mailing lists (with merge requests or whatever it doesn't matter, because everyone always looks at the latest version). -Daniel
That said, if you're interested in further cleaning this up, one can cleanup the drm_dp_mst_topology_cbs hooks. In particular ::register_connector is identical across the board - create a helper function using it directly in core, killing the hook.
While for ::destroy_connector - there's some amdgpu specific code in there... which I'm not sure if it should stay or not. To be on the save side - create a helper which will be called for drivers where the hook is !=NULL (aka everyone but amdgpu).
Yeah that stuff looks fishy. Smells a bit like old mst code developed before Lyude fixed the refcounting for real, it seems to manually shut down stuff that should be cleaned up with normal code paths (modeset and/or final kref_put on the connector).
-Daniel
Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch
-----Original Message----- From: Daniel Vetter daniel@ffwll.ch Sent: 03 March 2020 03:15 To: Emil Velikov emil.l.velikov@gmail.com Cc: Laxminarayan Bharadiya, Pankaj pankaj.laxminarayan.bharadiya@intel.com; Jani Nikula jani.nikula@linux.intel.com; Daniel Vetter daniel@ffwll.ch; Intel Graphics Development intel-gfx@lists.freedesktop.org; ML dri-devel <dri- devel@lists.freedesktop.org> Subject: Re: [Intel-gfx] [PATCH v2 0/7] drm: drm_fb_helper cleanup.
On Mon, Mar 02, 2020 at 10:43:19PM +0100, Daniel Vetter wrote:
On Mon, Mar 02, 2020 at 06:21:23PM +0000, Emil Velikov wrote:
Hi Pankaj,
On Mon, 2 Mar 2020 at 16:33, Pankaj Bharadiya pankaj.laxminarayan.bharadiya@intel.com wrote:
This series addresses below drm_fb_helper tasks from Documentation/gpu/todo.rst.
The max connector argument for drm_fb_helper_init() isn't used anymore and can be removed.
The helper doesn't keep an array of connectors anymore so these can be removed: drm_fb_helper_single_add_all_connectors(), drm_fb_helper_add_one_connector() and drm_fb_helper_remove_one_connector().
Changes since v1:
- Squashed warning fixes into the patch that introduced the warnings (into 5/7) (Laurent)
- Fixed reflow in in 9/9 (Laurent)
For the future, include the changelog in the respective patches. This makes it easier for reviewers... Plus you're already changing the commit - might as well mention what/why :-)
Also do include the R-B, Acked-by, other tags accumulated up-to that point, when sending new revision.
Yup, can you pls resend that entire pile with all the ack/review tags from the earlier versions included? If you don't do that you waste reviewers time. Another one is that resend right away also kinda wastes peoples time, because there's a much bigger chance that someone will review the old version, instead of your new one. Better wait of at least 1-2 days or so.
Hm just noticed that people are still reviewing v1. I'd say lets forget about this v2 here, wait 1-2 days, and then resend with everything combined. Hopefully not too many will re-review v2 here and waste time on stuff that's reviewed already. Resending within hours is really not good on mailing lists (with merge requests or whatever it doesn't matter, because everyone always looks at the latest version).
Noted 😊. Thanks for the feedback. Will send the new series with tags accumulated after 1-2 days.
Thanks, Pankaj
-Daniel
That said, if you're interested in further cleaning this up, one can cleanup the drm_dp_mst_topology_cbs hooks. In particular ::register_connector is identical across the board - create a helper function using it directly in core, killing the hook.
While for ::destroy_connector - there's some amdgpu specific code in there... which I'm not sure if it should stay or not. To be on the save side - create a helper which will be called for drivers where the hook is !=NULL (aka everyone but amdgpu).
Yeah that stuff looks fishy. Smells a bit like old mst code developed before Lyude fixed the refcounting for real, it seems to manually shut down stuff that should be cleaned up with normal code paths (modeset and/or final kref_put on the connector).
-Daniel
Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch
-- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch
-----Original Message----- From: Emil Velikov emil.l.velikov@gmail.com Sent: 02 March 2020 23:51 To: Laxminarayan Bharadiya, Pankaj pankaj.laxminarayan.bharadiya@intel.com Cc: Jani Nikula jani.nikula@linux.intel.com; Daniel Vetter daniel@ffwll.ch; Intel Graphics Development <intel- gfx@lists.freedesktop.org>; ML dri-devel dri-devel@lists.freedesktop.org Subject: Re: [Intel-gfx] [PATCH v2 0/7] drm: drm_fb_helper cleanup.
Hi Pankaj,
On Mon, 2 Mar 2020 at 16:33, Pankaj Bharadiya pankaj.laxminarayan.bharadiya@intel.com wrote:
This series addresses below drm_fb_helper tasks from Documentation/gpu/todo.rst.
The max connector argument for drm_fb_helper_init() isn't used anymore and can be removed.
The helper doesn't keep an array of connectors anymore so these can be removed: drm_fb_helper_single_add_all_connectors(), drm_fb_helper_add_one_connector() and drm_fb_helper_remove_one_connector().
Changes since v1:
- Squashed warning fixes into the patch that introduced the warnings (into 5/7) (Laurent)
- Fixed reflow in in 9/9 (Laurent)
For the future, include the changelog in the respective patches. This makes it easier for reviewers... Plus you're already changing the commit - might as well mention what/why :- )
Also do include the R-B, Acked-by, other tags accumulated up-to that point, when sending new revision.
Noted, Thank you for the feedback. Will send new series with tags accumulated after 1-2 days.
That said, if you're interested in further cleaning this up, one can cleanup the drm_dp_mst_topology_cbs hooks. In particular ::register_connector is identical across the board - create a helper function using it directly in core, killing the hook.
While for ::destroy_connector - there's some amdgpu specific code in there... which I'm not sure if it should stay or not. To be on the save side - create a helper which will be called for drivers where the hook is !=NULL (aka everyone but amdgpu).
Will take a look.
Thanks, Pankaj
HTH Emil
dri-devel@lists.freedesktop.org