mbox series

[v2,0/5] drm/dp: Move DisplayPort helpers into own module

Message ID 20211215104318.18866-1-tzimmermann@suse.de
Headers show
Series drm/dp: Move DisplayPort helpers into own module | expand

Message

Thomas Zimmermann Dec. 15, 2021, 10:43 a.m. UTC
Split-off DisplayPort functions from KMS helper library and move them
into their own module. Reduces the size of drm_kms_helper.ko by ~50%.

This patchset is part of an on-going effort to reduce the minimum
binary size of the DRM core and helpers. It's helpful for systems with
early-boot DRM graphics, which requires DRM to be linked into the
kernel image.

v2:
	* move helper library into subdirectory (Jani)
	* also move DP AUX bus helpers

Thomas Zimmermann (5):
  drm/dp_mst: Remove trailing whitespace.
  drm/dp: Move DP declarations into separate header file
  drm/dp: Move DisplayPort helpers into separate helper module
  drm/dp: Move public DisplayPort headers into dp/
  drm/dp: Move DisplayPort AUX bus helpers into dp/

 drivers/gpu/drm/Kconfig                       |  8 +++++
 drivers/gpu/drm/Makefile                      | 12 +++----
 .../gpu/drm/amd/amdgpu/amdgpu_connectors.c    |  2 +-
 drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h      |  4 +--
 drivers/gpu/drm/amd/amdgpu/atombios_dp.c      |  2 +-
 .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c |  2 +-
 .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h |  2 +-
 .../display/amdgpu_dm/amdgpu_dm_mst_types.c   |  4 +--
 .../drm/amd/display/dc/core/dc_link_dpcd.c    |  2 +-
 drivers/gpu/drm/amd/display/dc/dsc/dc_dsc.c   |  2 +-
 drivers/gpu/drm/amd/display/dc/os_types.h     |  2 +-
 .../gpu/drm/amd/display/include/dpcd_defs.h   |  2 +-
 .../gpu/drm/amd/display/modules/hdcp/hdcp.h   |  2 +-
 drivers/gpu/drm/bridge/Kconfig                |  4 +++
 drivers/gpu/drm/bridge/analogix/Kconfig       |  2 ++
 .../drm/bridge/analogix/analogix-anx6345.c    |  2 +-
 .../drm/bridge/analogix/analogix-anx78xx.c    |  2 +-
 .../drm/bridge/analogix/analogix-i2c-dptx.c   |  2 +-
 .../drm/bridge/analogix/analogix_dp_core.h    |  2 +-
 drivers/gpu/drm/bridge/analogix/anx7625.c     |  2 +-
 drivers/gpu/drm/bridge/cadence/Kconfig        |  1 +
 .../drm/bridge/cadence/cdns-mhdp8546-core.c   |  2 +-
 .../drm/bridge/cadence/cdns-mhdp8546-core.h   |  2 +-
 drivers/gpu/drm/bridge/parade-ps8640.c        |  4 +--
 drivers/gpu/drm/bridge/tc358767.c             |  2 +-
 drivers/gpu/drm/bridge/tc358775.c             |  2 +-
 drivers/gpu/drm/bridge/ti-sn65dsi86.c         |  4 +--
 drivers/gpu/drm/dp/Makefile                   |  9 +++++
 .../gpu/drm/{drm_dp_helper.c => dp/drm_dp.c}  |  6 ++--
 drivers/gpu/drm/{ => dp}/drm_dp_aux_bus.c     |  4 +--
 drivers/gpu/drm/{ => dp}/drm_dp_aux_dev.c     |  6 ++--
 drivers/gpu/drm/{ => dp}/drm_dp_cec.c         |  2 +-
 .../drm/{ => dp}/drm_dp_dual_mode_helper.c    |  2 +-
 drivers/gpu/drm/dp/drm_dp_helper_internal.h   | 33 +++++++++++++++++++
 drivers/gpu/drm/dp/drm_dp_helper_mod.c        | 22 +++++++++++++
 .../gpu/drm/{ => dp}/drm_dp_mst_topology.c    |  6 ++--
 .../{ => dp}/drm_dp_mst_topology_internal.h   |  2 +-
 drivers/gpu/drm/drm_crtc_helper_internal.h    | 27 ---------------
 drivers/gpu/drm/drm_dsc.c                     |  2 +-
 drivers/gpu/drm/drm_kms_helper_common.c       | 14 --------
 drivers/gpu/drm/gma500/cdv_intel_dp.c         |  2 +-
 drivers/gpu/drm/gma500/intel_bios.c           |  2 +-
 drivers/gpu/drm/i915/Kconfig                  |  1 +
 drivers/gpu/drm/i915/display/intel_bios.c     |  2 +-
 drivers/gpu/drm/i915/display/intel_display.c  |  2 +-
 .../drm/i915/display/intel_display_types.h    |  4 +--
 drivers/gpu/drm/i915/display/intel_dp.c       |  2 +-
 drivers/gpu/drm/i915/display/intel_dp_hdcp.c  |  4 +--
 .../drm/i915/display/intel_dp_link_training.h |  2 +-
 drivers/gpu/drm/i915/display/intel_lspcon.c   |  2 +-
 drivers/gpu/drm/msm/Kconfig                   |  1 +
 drivers/gpu/drm/msm/dp/dp_audio.c             |  2 +-
 drivers/gpu/drm/msm/dp/dp_aux.h               |  2 +-
 drivers/gpu/drm/msm/dp/dp_catalog.c           |  2 +-
 drivers/gpu/drm/msm/dp/dp_ctrl.c              |  2 +-
 drivers/gpu/drm/msm/edp/edp.h                 |  2 +-
 drivers/gpu/drm/msm/edp/edp_ctrl.c            |  2 +-
 drivers/gpu/drm/nouveau/Kconfig               |  1 +
 drivers/gpu/drm/nouveau/dispnv50/disp.c       |  2 +-
 drivers/gpu/drm/nouveau/nouveau_connector.h   |  2 +-
 drivers/gpu/drm/nouveau/nouveau_dp.c          |  2 +-
 drivers/gpu/drm/nouveau/nouveau_encoder.h     |  4 +--
 drivers/gpu/drm/panel/panel-edp.c             |  4 +--
 .../gpu/drm/panel/panel-samsung-atna33xc20.c  |  4 +--
 drivers/gpu/drm/radeon/atombios_dp.c          |  2 +-
 drivers/gpu/drm/radeon/radeon_connectors.c    |  2 +-
 drivers/gpu/drm/radeon/radeon_dp_mst.c        |  2 +-
 drivers/gpu/drm/radeon/radeon_mode.h          |  4 +--
 drivers/gpu/drm/rockchip/Kconfig              |  1 +
 .../gpu/drm/rockchip/analogix_dp-rockchip.c   |  2 +-
 drivers/gpu/drm/rockchip/cdn-dp-core.c        |  2 +-
 drivers/gpu/drm/rockchip/cdn-dp-core.h        |  2 +-
 drivers/gpu/drm/rockchip/rockchip_lvds.c      |  2 +-
 drivers/gpu/drm/rockchip/rockchip_rgb.c       |  2 +-
 .../drm/selftests/test-drm_dp_mst_helper.c    |  2 +-
 drivers/gpu/drm/tegra/Kconfig                 |  1 +
 drivers/gpu/drm/tegra/dp.c                    |  2 +-
 drivers/gpu/drm/tegra/dpaux.c                 |  2 +-
 drivers/gpu/drm/tegra/sor.c                   |  2 +-
 drivers/gpu/drm/xlnx/Kconfig                  |  1 +
 drivers/gpu/drm/xlnx/zynqmp_dp.c              |  2 +-
 include/drm/{ => dp}/drm_dp_aux_bus.h         |  0
 .../drm/{ => dp}/drm_dp_dual_mode_helper.h    |  0
 include/drm/{ => dp}/drm_dp_helper.h          |  0
 include/drm/{ => dp}/drm_dp_mst_helper.h      |  2 +-
 include/drm/drm_dsc.h                         |  2 +-
 86 files changed, 173 insertions(+), 133 deletions(-)
 create mode 100644 drivers/gpu/drm/dp/Makefile
 rename drivers/gpu/drm/{drm_dp_helper.c => dp/drm_dp.c} (99%)
 rename drivers/gpu/drm/{ => dp}/drm_dp_aux_bus.c (99%)
 rename drivers/gpu/drm/{ => dp}/drm_dp_aux_dev.c (98%)
 rename drivers/gpu/drm/{ => dp}/drm_dp_cec.c (99%)
 rename drivers/gpu/drm/{ => dp}/drm_dp_dual_mode_helper.c (99%)
 create mode 100644 drivers/gpu/drm/dp/drm_dp_helper_internal.h
 create mode 100644 drivers/gpu/drm/dp/drm_dp_helper_mod.c
 rename drivers/gpu/drm/{ => dp}/drm_dp_mst_topology.c (99%)
 rename drivers/gpu/drm/{ => dp}/drm_dp_mst_topology_internal.h (94%)
 rename include/drm/{ => dp}/drm_dp_aux_bus.h (100%)
 rename include/drm/{ => dp}/drm_dp_dual_mode_helper.h (100%)
 rename include/drm/{ => dp}/drm_dp_helper.h (100%)
 rename include/drm/{ => dp}/drm_dp_mst_helper.h (99%)


base-commit: 3f422828221d9ceefcddef0be33561b1646a1cbe
prerequisite-patch-id: c2b2f08f0eccc9f5df0c0da49fa1d36267deb11d
prerequisite-patch-id: c67e5d886a47b7d0266d81100837557fda34cb24
prerequisite-patch-id: d7624cd450e9961cb3a1efa61f906213316ab2a5
--
2.34.1

Comments

Javier Martinez Canillas Jan. 11, 2022, 10:21 a.m. UTC | #1
On Wed, Dec 15, 2021 at 12:12 PM Thomas Zimmermann <tzimmermann@suse.de> wrote:
>
> Hi
>
> Am 15.12.21 um 12:04 schrieb Jani Nikula:
> > On Wed, 15 Dec 2021, Thomas Zimmermann <tzimmermann@suse.de> wrote:
> >>      * move DP helper code into dp/ (Jani)
> >
> > I suggested adding the subdirectory, but I'm going to bikeshed the name,
> > which I didn't suggest.
> >
> > $ find drivers/gpu/drm -mindepth 1 -maxdepth 1 -type d | wc -l
> > 68
> >
> > Assuming we move more of the drm modules to subdirectories, how are they
> > going to stand out from drivers?
> >
> > I suggested drm_dp, which I understand results in tautology, but hey,
> > all the filenames under drm/ also have drm_*.[ch]. And I find that very
> > useful for git greps and other code archeology. With just the dp name,
> > you'd have to know and list all the drm subdirectories when looking up
> > stuff that's part of drm but not drivers.
>
> I think we have enough filename prefixes already. drm/drm_dp/drm_dp_ is
> just ridiculous.
>

Maybe what can be done is to just add a drivers/gpu/drm/core
subdirectory that would contain all the DRM core code ?

Then the dp helpers could be moved to drivers/gpu/drm/core/dp/drm_dp.c
for example. This would also make easy to differentiate the drm
modules from the drivers with just:

$ find drivers/gpu/drm -mindepth 1 -maxdepth 1 -type d -not -name core

Best regards,
Javier
Lyude Paul Jan. 11, 2022, 6:58 p.m. UTC | #2
Acked-by: Lyude Paul <lyude@redhat.com>

On Wed, 2021-12-15 at 11:43 +0100, Thomas Zimmermann wrote:
> Move DisplayPort functions into a separate module to reduce the size
> of the KMS helpers. Select DRM_DP_HELPER for all users of the code. To
> avoid naming conflicts, rename drm_dp_helper.c to drm_dp.c
> 
> This change can help to reduce the size of the kernel binary. Some
> numbers from a x86-64 test build:
> 
> Before:
>         drm_kms_helper.ko:      447480 bytes
> 
> After:
>         drm_dp_helper.ko:       216632 bytes
>         drm_kms_helper.ko:      239424 bytes
> 
> For early-boot graphics, generic DRM drivers, such as simpledrm,
> require DRM KMS helpers to be built into the kernel. Generic helper
> functions for DisplayPort take up a significant portion of DRM KMS
> helper library. These functions are not used by generic drivers and
> can be loaded as a module.
> 
> v2:
>         * move DP helper code into dp/ (Jani)
> 
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
> ---
>  drivers/gpu/drm/Kconfig                       |  8 +++++++
>  drivers/gpu/drm/Makefile                      | 10 ++++-----
>  drivers/gpu/drm/bridge/Kconfig                |  4 ++++
>  drivers/gpu/drm/bridge/analogix/Kconfig       |  2 ++
>  drivers/gpu/drm/bridge/cadence/Kconfig        |  1 +
>  drivers/gpu/drm/dp/Makefile                   |  7 ++++++
>  .../gpu/drm/{drm_dp_helper.c => dp/drm_dp.c}  |  0
>  drivers/gpu/drm/{ => dp}/drm_dp_aux_dev.c     |  0
>  drivers/gpu/drm/{ => dp}/drm_dp_cec.c         |  0
>  .../drm/{ => dp}/drm_dp_dual_mode_helper.c    |  0
>  .../gpu/drm/{ => dp}/drm_dp_helper_internal.h |  0
>  drivers/gpu/drm/dp/drm_dp_helper_mod.c        | 22 +++++++++++++++++++
>  .../gpu/drm/{ => dp}/drm_dp_mst_topology.c    |  0
>  .../{ => dp}/drm_dp_mst_topology_internal.h   |  0
>  drivers/gpu/drm/drm_kms_helper_common.c       | 15 -------------
>  drivers/gpu/drm/i915/Kconfig                  |  1 +
>  drivers/gpu/drm/msm/Kconfig                   |  1 +
>  drivers/gpu/drm/nouveau/Kconfig               |  1 +
>  drivers/gpu/drm/rockchip/Kconfig              |  1 +
>  drivers/gpu/drm/tegra/Kconfig                 |  1 +
>  drivers/gpu/drm/xlnx/Kconfig                  |  1 +
>  21 files changed, 54 insertions(+), 21 deletions(-)
>  create mode 100644 drivers/gpu/drm/dp/Makefile
>  rename drivers/gpu/drm/{drm_dp_helper.c => dp/drm_dp.c} (100%)
>  rename drivers/gpu/drm/{ => dp}/drm_dp_aux_dev.c (100%)
>  rename drivers/gpu/drm/{ => dp}/drm_dp_cec.c (100%)
>  rename drivers/gpu/drm/{ => dp}/drm_dp_dual_mode_helper.c (100%)
>  rename drivers/gpu/drm/{ => dp}/drm_dp_helper_internal.h (100%)
>  create mode 100644 drivers/gpu/drm/dp/drm_dp_helper_mod.c
>  rename drivers/gpu/drm/{ => dp}/drm_dp_mst_topology.c (100%)
>  rename drivers/gpu/drm/{ => dp}/drm_dp_mst_topology_internal.h (100%)
> 
> diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig
> index b1f22e457fd0..91f54aeb0b7c 100644
> --- a/drivers/gpu/drm/Kconfig
> +++ b/drivers/gpu/drm/Kconfig
> @@ -80,6 +80,12 @@ config DRM_DEBUG_SELFTEST
>  
>           If in doubt, say "N".
>  
> +config DRM_DP_HELPER
> +       tristate
> +       depends on DRM
> +       help
> +         DRM helpers for DisplayPort.
> +
>  config DRM_KMS_HELPER
>         tristate
>         depends on DRM
> @@ -236,6 +242,7 @@ config DRM_RADEON
>         depends on DRM && PCI && MMU
>         depends on AGP || !AGP
>         select FW_LOADER
> +       select DRM_DP_HELPER
>          select DRM_KMS_HELPER
>          select DRM_TTM
>         select DRM_TTM_HELPER
> @@ -256,6 +263,7 @@ config DRM_AMDGPU
>         tristate "AMD GPU"
>         depends on DRM && PCI && MMU
>         select FW_LOADER
> +       select DRM_DP_HELPER
>         select DRM_KMS_HELPER
>         select DRM_SCHED
>         select DRM_TTM
> diff --git a/drivers/gpu/drm/Makefile b/drivers/gpu/drm/Makefile
> index 301a44dc18e3..69be80ef1d31 100644
> --- a/drivers/gpu/drm/Makefile
> +++ b/drivers/gpu/drm/Makefile
> @@ -48,21 +48,18 @@ obj-$(CONFIG_DRM_VRAM_HELPER) += drm_vram_helper.o
>  drm_ttm_helper-y := drm_gem_ttm_helper.o
>  obj-$(CONFIG_DRM_TTM_HELPER) += drm_ttm_helper.o
>  
> -drm_kms_helper-y := drm_bridge_connector.o drm_crtc_helper.o
> drm_dp_helper.o \
> +drm_kms_helper-y := drm_bridge_connector.o drm_crtc_helper.o \
>                 drm_dsc.o drm_encoder_slave.o drm_flip_work.o drm_hdcp.o \
>                 drm_probe_helper.o \
> -               drm_plane_helper.o drm_dp_mst_topology.o drm_atomic_helper.o
> \
> -               drm_kms_helper_common.o drm_dp_dual_mode_helper.o \
> +               drm_plane_helper.o drm_atomic_helper.o \
> +               drm_kms_helper_common.o \
>                 drm_simple_kms_helper.o drm_modeset_helper.o \
>                 drm_scdc_helper.o drm_gem_atomic_helper.o \
>                 drm_gem_framebuffer_helper.o \
>                 drm_atomic_state_helper.o drm_damage_helper.o \
>                 drm_format_helper.o drm_self_refresh_helper.o drm_rect.o
> -
>  drm_kms_helper-$(CONFIG_DRM_PANEL_BRIDGE) += bridge/panel.o
>  drm_kms_helper-$(CONFIG_DRM_FBDEV_EMULATION) += drm_fb_helper.o
> -drm_kms_helper-$(CONFIG_DRM_DP_AUX_CHARDEV) += drm_dp_aux_dev.o
> -drm_kms_helper-$(CONFIG_DRM_DP_CEC) += drm_dp_cec.o
>  
>  obj-$(CONFIG_DRM_KMS_HELPER) += drm_kms_helper.o
>  obj-$(CONFIG_DRM_DEBUG_SELFTEST) += selftests/
> @@ -72,6 +69,7 @@ obj-$(CONFIG_DRM_MIPI_DBI) += drm_mipi_dbi.o
>  obj-$(CONFIG_DRM_MIPI_DSI) += drm_mipi_dsi.o
>  obj-$(CONFIG_DRM_PANEL_ORIENTATION_QUIRKS) +=
> drm_panel_orientation_quirks.o
>  obj-y                  += arm/
> +obj-y                  += dp/
>  obj-$(CONFIG_DRM_TTM)  += ttm/
>  obj-$(CONFIG_DRM_SCHED)        += scheduler/
>  obj-$(CONFIG_DRM_TDFX) += tdfx/
> diff --git a/drivers/gpu/drm/bridge/Kconfig b/drivers/gpu/drm/bridge/Kconfig
> index 61db5a66b493..a27435a4c9c4 100644
> --- a/drivers/gpu/drm/bridge/Kconfig
> +++ b/drivers/gpu/drm/bridge/Kconfig
> @@ -183,6 +183,7 @@ config DRM_PARADE_PS8640
>         tristate "Parade PS8640 MIPI DSI to eDP Converter"
>         depends on OF
>         select DRM_DP_AUX_BUS
> +       select DRM_DP_HELPER
>         select DRM_KMS_HELPER
>         select DRM_MIPI_DSI
>         select DRM_PANEL
> @@ -253,6 +254,7 @@ config DRM_TOSHIBA_TC358764
>  config DRM_TOSHIBA_TC358767
>         tristate "Toshiba TC358767 eDP bridge"
>         depends on OF
> +       select DRM_DP_HELPER
>         select DRM_KMS_HELPER
>         select REGMAP_I2C
>         select DRM_PANEL
> @@ -272,6 +274,7 @@ config DRM_TOSHIBA_TC358768
>  config DRM_TOSHIBA_TC358775
>         tristate "Toshiba TC358775 DSI/LVDS bridge"
>         depends on OF
> +       select DRM_DP_HELPER
>         select DRM_KMS_HELPER
>         select REGMAP_I2C
>         select DRM_PANEL
> @@ -299,6 +302,7 @@ config DRM_TI_SN65DSI83
>  config DRM_TI_SN65DSI86
>         tristate "TI SN65DSI86 DSI to eDP bridge"
>         depends on OF
> +       select DRM_DP_HELPER
>         select DRM_KMS_HELPER
>         select REGMAP_I2C
>         select DRM_PANEL
> diff --git a/drivers/gpu/drm/bridge/analogix/Kconfig
> b/drivers/gpu/drm/bridge/analogix/Kconfig
> index 2ef6eb2b786c..319ba0df57be 100644
> --- a/drivers/gpu/drm/bridge/analogix/Kconfig
> +++ b/drivers/gpu/drm/bridge/analogix/Kconfig
> @@ -3,6 +3,7 @@ config DRM_ANALOGIX_ANX6345
>         tristate "Analogix ANX6345 bridge"
>         depends on OF
>         select DRM_ANALOGIX_DP
> +       select DRM_DP_HELPER
>         select DRM_KMS_HELPER
>         select REGMAP_I2C
>         help
> @@ -14,6 +15,7 @@ config DRM_ANALOGIX_ANX6345
>  config DRM_ANALOGIX_ANX78XX
>         tristate "Analogix ANX78XX bridge"
>         select DRM_ANALOGIX_DP
> +       select DRM_DP_HELPER
>         select DRM_KMS_HELPER
>         select REGMAP_I2C
>         help
> diff --git a/drivers/gpu/drm/bridge/cadence/Kconfig
> b/drivers/gpu/drm/bridge/cadence/Kconfig
> index ef8c230e0f62..de697bade05e 100644
> --- a/drivers/gpu/drm/bridge/cadence/Kconfig
> +++ b/drivers/gpu/drm/bridge/cadence/Kconfig
> @@ -1,6 +1,7 @@
>  # SPDX-License-Identifier: GPL-2.0-only
>  config DRM_CDNS_MHDP8546
>         tristate "Cadence DPI/DP bridge"
> +       select DRM_DP_HELPER
>         select DRM_KMS_HELPER
>         select DRM_PANEL_BRIDGE
>         depends on OF
> diff --git a/drivers/gpu/drm/dp/Makefile b/drivers/gpu/drm/dp/Makefile
> new file mode 100644
> index 000000000000..5b892aeff5ab
> --- /dev/null
> +++ b/drivers/gpu/drm/dp/Makefile
> @@ -0,0 +1,7 @@
> +# SPDX-License-Identifier: MIT
> +
> +drm_dp_helper-y := drm_dp.o drm_dp_dual_mode_helper.o drm_dp_helper_mod.o
> drm_dp_mst_topology.o
> +drm_dp_helper-$(CONFIG_DRM_DP_AUX_CHARDEV) += drm_dp_aux_dev.o
> +drm_dp_helper-$(CONFIG_DRM_DP_CEC) += drm_dp_cec.o
> +
> +obj-$(CONFIG_DRM_DP_HELPER) += drm_dp_helper.o
> diff --git a/drivers/gpu/drm/drm_dp_helper.c b/drivers/gpu/drm/dp/drm_dp.c
> similarity index 100%
> rename from drivers/gpu/drm/drm_dp_helper.c
> rename to drivers/gpu/drm/dp/drm_dp.c
> diff --git a/drivers/gpu/drm/drm_dp_aux_dev.c
> b/drivers/gpu/drm/dp/drm_dp_aux_dev.c
> similarity index 100%
> rename from drivers/gpu/drm/drm_dp_aux_dev.c
> rename to drivers/gpu/drm/dp/drm_dp_aux_dev.c
> diff --git a/drivers/gpu/drm/drm_dp_cec.c b/drivers/gpu/drm/dp/drm_dp_cec.c
> similarity index 100%
> rename from drivers/gpu/drm/drm_dp_cec.c
> rename to drivers/gpu/drm/dp/drm_dp_cec.c
> diff --git a/drivers/gpu/drm/drm_dp_dual_mode_helper.c
> b/drivers/gpu/drm/dp/drm_dp_dual_mode_helper.c
> similarity index 100%
> rename from drivers/gpu/drm/drm_dp_dual_mode_helper.c
> rename to drivers/gpu/drm/dp/drm_dp_dual_mode_helper.c
> diff --git a/drivers/gpu/drm/drm_dp_helper_internal.h
> b/drivers/gpu/drm/dp/drm_dp_helper_internal.h
> similarity index 100%
> rename from drivers/gpu/drm/drm_dp_helper_internal.h
> rename to drivers/gpu/drm/dp/drm_dp_helper_internal.h
> diff --git a/drivers/gpu/drm/dp/drm_dp_helper_mod.c
> b/drivers/gpu/drm/dp/drm_dp_helper_mod.c
> new file mode 100644
> index 000000000000..db753de24000
> --- /dev/null
> +++ b/drivers/gpu/drm/dp/drm_dp_helper_mod.c
> @@ -0,0 +1,22 @@
> +// SPDX-License-Identifier: MIT
> +
> +#include <linux/module.h>
> +
> +#include "drm_dp_helper_internal.h"
> +
> +MODULE_DESCRIPTION("DRM DisplayPort helper");
> +MODULE_LICENSE("GPL and additional rights");
> +
> +static int __init drm_dp_helper_module_init(void)
> +{
> +       return drm_dp_aux_dev_init();
> +}
> +
> +static void __exit drm_dp_helper_module_exit(void)
> +{
> +       /* Call exit functions from specific dp helpers here */
> +       drm_dp_aux_dev_exit();
> +}
> +
> +module_init(drm_dp_helper_module_init);
> +module_exit(drm_dp_helper_module_exit);
> diff --git a/drivers/gpu/drm/drm_dp_mst_topology.c
> b/drivers/gpu/drm/dp/drm_dp_mst_topology.c
> similarity index 100%
> rename from drivers/gpu/drm/drm_dp_mst_topology.c
> rename to drivers/gpu/drm/dp/drm_dp_mst_topology.c
> diff --git a/drivers/gpu/drm/drm_dp_mst_topology_internal.h
> b/drivers/gpu/drm/dp/drm_dp_mst_topology_internal.h
> similarity index 100%
> rename from drivers/gpu/drm/drm_dp_mst_topology_internal.h
> rename to drivers/gpu/drm/dp/drm_dp_mst_topology_internal.h
> diff --git a/drivers/gpu/drm/drm_kms_helper_common.c
> b/drivers/gpu/drm/drm_kms_helper_common.c
> index 88260d26409c..8be20080cd8d 100644
> --- a/drivers/gpu/drm/drm_kms_helper_common.c
> +++ b/drivers/gpu/drm/drm_kms_helper_common.c
> @@ -29,7 +29,6 @@
>  
>  #include <drm/drm_print.h>
>  
> -#include "drm_dp_helper_internal.h"
>  #include "drm_crtc_helper_internal.h"
>  
>  MODULE_AUTHOR("David Airlie, Jesse Barnes");
> @@ -62,17 +61,3 @@ MODULE_PARM_DESC(edid_firmware,
>                  "DEPRECATED. Use drm.edid_firmware module parameter
> instead.");
>  
>  #endif
> -
> -static int __init drm_kms_helper_init(void)
> -{
> -       return drm_dp_aux_dev_init();
> -}
> -
> -static void __exit drm_kms_helper_exit(void)
> -{
> -       /* Call exit functions from specific kms helpers here */
> -       drm_dp_aux_dev_exit();
> -}
> -
> -module_init(drm_kms_helper_init);
> -module_exit(drm_kms_helper_exit);
> diff --git a/drivers/gpu/drm/i915/Kconfig b/drivers/gpu/drm/i915/Kconfig
> index a4c94dc2e216..b68e8b551b83 100644
> --- a/drivers/gpu/drm/i915/Kconfig
> +++ b/drivers/gpu/drm/i915/Kconfig
> @@ -9,6 +9,7 @@ config DRM_I915
>         # the shmem_readpage() which depends upon tmpfs
>         select SHMEM
>         select TMPFS
> +       select DRM_DP_HELPER
>         select DRM_KMS_HELPER
>         select DRM_PANEL
>         select DRM_MIPI_DSI
> diff --git a/drivers/gpu/drm/msm/Kconfig b/drivers/gpu/drm/msm/Kconfig
> index 39197b4beea7..75015b0e165e 100644
> --- a/drivers/gpu/drm/msm/Kconfig
> +++ b/drivers/gpu/drm/msm/Kconfig
> @@ -12,6 +12,7 @@ config DRM_MSM
>         select IOMMU_IO_PGTABLE
>         select QCOM_MDT_LOADER if ARCH_QCOM
>         select REGULATOR
> +       select DRM_DP_HELPER
>         select DRM_KMS_HELPER
>         select DRM_PANEL
>         select DRM_BRIDGE
> diff --git a/drivers/gpu/drm/nouveau/Kconfig
> b/drivers/gpu/drm/nouveau/Kconfig
> index 9436310d0854..3ec690b6f0b4 100644
> --- a/drivers/gpu/drm/nouveau/Kconfig
> +++ b/drivers/gpu/drm/nouveau/Kconfig
> @@ -4,6 +4,7 @@ config DRM_NOUVEAU
>         depends on DRM && PCI && MMU
>         select IOMMU_API
>         select FW_LOADER
> +       select DRM_DP_HELPER
>         select DRM_KMS_HELPER
>         select DRM_TTM
>         select DRM_TTM_HELPER
> diff --git a/drivers/gpu/drm/rockchip/Kconfig
> b/drivers/gpu/drm/rockchip/Kconfig
> index 9f1ecefc3933..d59dca5efb52 100644
> --- a/drivers/gpu/drm/rockchip/Kconfig
> +++ b/drivers/gpu/drm/rockchip/Kconfig
> @@ -2,6 +2,7 @@
>  config DRM_ROCKCHIP
>         tristate "DRM Support for Rockchip"
>         depends on DRM && ROCKCHIP_IOMMU
> +       select DRM_DP_HELPER
>         select DRM_GEM_CMA_HELPER
>         select DRM_KMS_HELPER
>         select DRM_PANEL
> diff --git a/drivers/gpu/drm/tegra/Kconfig b/drivers/gpu/drm/tegra/Kconfig
> index 1650a448eabd..dc88adc7ba40 100644
> --- a/drivers/gpu/drm/tegra/Kconfig
> +++ b/drivers/gpu/drm/tegra/Kconfig
> @@ -5,6 +5,7 @@ config DRM_TEGRA
>         depends on COMMON_CLK
>         depends on DRM
>         depends on OF
> +       select DRM_DP_HELPER
>         select DRM_KMS_HELPER
>         select DRM_MIPI_DSI
>         select DRM_PANEL
> diff --git a/drivers/gpu/drm/xlnx/Kconfig b/drivers/gpu/drm/xlnx/Kconfig
> index d8d38d86d5c6..06cf477dbcdd 100644
> --- a/drivers/gpu/drm/xlnx/Kconfig
> +++ b/drivers/gpu/drm/xlnx/Kconfig
> @@ -6,6 +6,7 @@ config DRM_ZYNQMP_DPSUB
>         depends on PHY_XILINX_ZYNQMP
>         depends on XILINX_ZYNQMP_DPDMA
>         select DMA_ENGINE
> +       select DRM_DP_HELPER
>         select DRM_GEM_CMA_HELPER
>         select DRM_KMS_HELPER
>         select GENERIC_PHY