Commit adb9d5a2 authored by Thomas Zimmermann's avatar Thomas Zimmermann

drm/dp: Move DisplayPort helpers into separate helper module

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.

v3:
	* fix include statement in DRM selftests
v2:
	* move DP helper code into dp/ (Jani)
Signed-off-by: default avatarThomas Zimmermann <tzimmermann@suse.de>
Acked-by: default avatarLyude Paul <lyude@redhat.com>
Acked-by: default avatarDaniel Vetter <daniel@ffwll.ch>
Link: https://patchwork.freedesktop.org/patch/msgid/20220114114535.29157-4-tzimmermann@suse.de
parent 3681eb24
...@@ -80,6 +80,12 @@ config DRM_DEBUG_SELFTEST ...@@ -80,6 +80,12 @@ config DRM_DEBUG_SELFTEST
If in doubt, say "N". If in doubt, say "N".
config DRM_DP_HELPER
tristate
depends on DRM
help
DRM helpers for DisplayPort.
config DRM_KMS_HELPER config DRM_KMS_HELPER
tristate tristate
depends on DRM depends on DRM
...@@ -236,6 +242,7 @@ config DRM_RADEON ...@@ -236,6 +242,7 @@ config DRM_RADEON
depends on DRM && PCI && MMU depends on DRM && PCI && MMU
depends on AGP || !AGP depends on AGP || !AGP
select FW_LOADER select FW_LOADER
select DRM_DP_HELPER
select DRM_KMS_HELPER select DRM_KMS_HELPER
select DRM_TTM select DRM_TTM
select DRM_TTM_HELPER select DRM_TTM_HELPER
...@@ -256,6 +263,7 @@ config DRM_AMDGPU ...@@ -256,6 +263,7 @@ config DRM_AMDGPU
tristate "AMD GPU" tristate "AMD GPU"
depends on DRM && PCI && MMU depends on DRM && PCI && MMU
select FW_LOADER select FW_LOADER
select DRM_DP_HELPER
select DRM_KMS_HELPER select DRM_KMS_HELPER
select DRM_SCHED select DRM_SCHED
select DRM_TTM select DRM_TTM
......
...@@ -48,21 +48,18 @@ obj-$(CONFIG_DRM_VRAM_HELPER) += drm_vram_helper.o ...@@ -48,21 +48,18 @@ obj-$(CONFIG_DRM_VRAM_HELPER) += drm_vram_helper.o
drm_ttm_helper-y := drm_gem_ttm_helper.o drm_ttm_helper-y := drm_gem_ttm_helper.o
obj-$(CONFIG_DRM_TTM_HELPER) += drm_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_dsc.o drm_encoder_slave.o drm_flip_work.o drm_hdcp.o \
drm_probe_helper.o \ drm_probe_helper.o \
drm_plane_helper.o drm_dp_mst_topology.o drm_atomic_helper.o \ drm_plane_helper.o drm_atomic_helper.o \
drm_kms_helper_common.o drm_dp_dual_mode_helper.o \ drm_kms_helper_common.o \
drm_simple_kms_helper.o drm_modeset_helper.o \ drm_simple_kms_helper.o drm_modeset_helper.o \
drm_scdc_helper.o drm_gem_atomic_helper.o \ drm_scdc_helper.o drm_gem_atomic_helper.o \
drm_gem_framebuffer_helper.o \ drm_gem_framebuffer_helper.o \
drm_atomic_state_helper.o drm_damage_helper.o \ drm_atomic_state_helper.o drm_damage_helper.o \
drm_format_helper.o drm_self_refresh_helper.o drm_rect.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_PANEL_BRIDGE) += bridge/panel.o
drm_kms_helper-$(CONFIG_DRM_FBDEV_EMULATION) += drm_fb_helper.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_KMS_HELPER) += drm_kms_helper.o
obj-$(CONFIG_DRM_DEBUG_SELFTEST) += selftests/ obj-$(CONFIG_DRM_DEBUG_SELFTEST) += selftests/
...@@ -72,6 +69,7 @@ obj-$(CONFIG_DRM_MIPI_DBI) += drm_mipi_dbi.o ...@@ -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_MIPI_DSI) += drm_mipi_dsi.o
obj-$(CONFIG_DRM_PANEL_ORIENTATION_QUIRKS) += drm_panel_orientation_quirks.o obj-$(CONFIG_DRM_PANEL_ORIENTATION_QUIRKS) += drm_panel_orientation_quirks.o
obj-y += arm/ obj-y += arm/
obj-y += dp/
obj-$(CONFIG_DRM_TTM) += ttm/ obj-$(CONFIG_DRM_TTM) += ttm/
obj-$(CONFIG_DRM_SCHED) += scheduler/ obj-$(CONFIG_DRM_SCHED) += scheduler/
obj-$(CONFIG_DRM_TDFX) += tdfx/ obj-$(CONFIG_DRM_TDFX) += tdfx/
......
...@@ -184,6 +184,7 @@ config DRM_PARADE_PS8640 ...@@ -184,6 +184,7 @@ config DRM_PARADE_PS8640
tristate "Parade PS8640 MIPI DSI to eDP Converter" tristate "Parade PS8640 MIPI DSI to eDP Converter"
depends on OF depends on OF
select DRM_DP_AUX_BUS select DRM_DP_AUX_BUS
select DRM_DP_HELPER
select DRM_KMS_HELPER select DRM_KMS_HELPER
select DRM_MIPI_DSI select DRM_MIPI_DSI
select DRM_PANEL select DRM_PANEL
...@@ -254,6 +255,7 @@ config DRM_TOSHIBA_TC358764 ...@@ -254,6 +255,7 @@ config DRM_TOSHIBA_TC358764
config DRM_TOSHIBA_TC358767 config DRM_TOSHIBA_TC358767
tristate "Toshiba TC358767 eDP bridge" tristate "Toshiba TC358767 eDP bridge"
depends on OF depends on OF
select DRM_DP_HELPER
select DRM_KMS_HELPER select DRM_KMS_HELPER
select REGMAP_I2C select REGMAP_I2C
select DRM_PANEL select DRM_PANEL
...@@ -273,6 +275,7 @@ config DRM_TOSHIBA_TC358768 ...@@ -273,6 +275,7 @@ config DRM_TOSHIBA_TC358768
config DRM_TOSHIBA_TC358775 config DRM_TOSHIBA_TC358775
tristate "Toshiba TC358775 DSI/LVDS bridge" tristate "Toshiba TC358775 DSI/LVDS bridge"
depends on OF depends on OF
select DRM_DP_HELPER
select DRM_KMS_HELPER select DRM_KMS_HELPER
select REGMAP_I2C select REGMAP_I2C
select DRM_PANEL select DRM_PANEL
...@@ -300,6 +303,7 @@ config DRM_TI_SN65DSI83 ...@@ -300,6 +303,7 @@ config DRM_TI_SN65DSI83
config DRM_TI_SN65DSI86 config DRM_TI_SN65DSI86
tristate "TI SN65DSI86 DSI to eDP bridge" tristate "TI SN65DSI86 DSI to eDP bridge"
depends on OF depends on OF
select DRM_DP_HELPER
select DRM_KMS_HELPER select DRM_KMS_HELPER
select REGMAP_I2C select REGMAP_I2C
select DRM_PANEL select DRM_PANEL
......
...@@ -3,6 +3,7 @@ config DRM_ANALOGIX_ANX6345 ...@@ -3,6 +3,7 @@ config DRM_ANALOGIX_ANX6345
tristate "Analogix ANX6345 bridge" tristate "Analogix ANX6345 bridge"
depends on OF depends on OF
select DRM_ANALOGIX_DP select DRM_ANALOGIX_DP
select DRM_DP_HELPER
select DRM_KMS_HELPER select DRM_KMS_HELPER
select REGMAP_I2C select REGMAP_I2C
help help
...@@ -14,6 +15,7 @@ config DRM_ANALOGIX_ANX6345 ...@@ -14,6 +15,7 @@ config DRM_ANALOGIX_ANX6345
config DRM_ANALOGIX_ANX78XX config DRM_ANALOGIX_ANX78XX
tristate "Analogix ANX78XX bridge" tristate "Analogix ANX78XX bridge"
select DRM_ANALOGIX_DP select DRM_ANALOGIX_DP
select DRM_DP_HELPER
select DRM_KMS_HELPER select DRM_KMS_HELPER
select REGMAP_I2C select REGMAP_I2C
help help
......
# SPDX-License-Identifier: GPL-2.0-only # SPDX-License-Identifier: GPL-2.0-only
config DRM_CDNS_MHDP8546 config DRM_CDNS_MHDP8546
tristate "Cadence DPI/DP bridge" tristate "Cadence DPI/DP bridge"
select DRM_DP_HELPER
select DRM_KMS_HELPER select DRM_KMS_HELPER
select DRM_PANEL_BRIDGE select DRM_PANEL_BRIDGE
depends on OF depends on OF
......
# 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
// 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);
...@@ -29,7 +29,6 @@ ...@@ -29,7 +29,6 @@
#include <drm/drm_print.h> #include <drm/drm_print.h>
#include "drm_dp_helper_internal.h"
#include "drm_crtc_helper_internal.h" #include "drm_crtc_helper_internal.h"
MODULE_AUTHOR("David Airlie, Jesse Barnes"); MODULE_AUTHOR("David Airlie, Jesse Barnes");
...@@ -62,17 +61,3 @@ MODULE_PARM_DESC(edid_firmware, ...@@ -62,17 +61,3 @@ MODULE_PARM_DESC(edid_firmware,
"DEPRECATED. Use drm.edid_firmware module parameter instead."); "DEPRECATED. Use drm.edid_firmware module parameter instead.");
#endif #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);
...@@ -9,6 +9,7 @@ config DRM_I915 ...@@ -9,6 +9,7 @@ config DRM_I915
# the shmem_readpage() which depends upon tmpfs # the shmem_readpage() which depends upon tmpfs
select SHMEM select SHMEM
select TMPFS select TMPFS
select DRM_DP_HELPER
select DRM_KMS_HELPER select DRM_KMS_HELPER
select DRM_PANEL select DRM_PANEL
select DRM_MIPI_DSI select DRM_MIPI_DSI
......
...@@ -12,6 +12,7 @@ config DRM_MSM ...@@ -12,6 +12,7 @@ config DRM_MSM
select IOMMU_IO_PGTABLE select IOMMU_IO_PGTABLE
select QCOM_MDT_LOADER if ARCH_QCOM select QCOM_MDT_LOADER if ARCH_QCOM
select REGULATOR select REGULATOR
select DRM_DP_HELPER
select DRM_KMS_HELPER select DRM_KMS_HELPER
select DRM_PANEL select DRM_PANEL
select DRM_BRIDGE select DRM_BRIDGE
......
...@@ -4,6 +4,7 @@ config DRM_NOUVEAU ...@@ -4,6 +4,7 @@ config DRM_NOUVEAU
depends on DRM && PCI && MMU depends on DRM && PCI && MMU
select IOMMU_API select IOMMU_API
select FW_LOADER select FW_LOADER
select DRM_DP_HELPER
select DRM_KMS_HELPER select DRM_KMS_HELPER
select DRM_TTM select DRM_TTM
select DRM_TTM_HELPER select DRM_TTM_HELPER
......
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
config DRM_ROCKCHIP config DRM_ROCKCHIP
tristate "DRM Support for Rockchip" tristate "DRM Support for Rockchip"
depends on DRM && ROCKCHIP_IOMMU depends on DRM && ROCKCHIP_IOMMU
select DRM_DP_HELPER
select DRM_GEM_CMA_HELPER select DRM_GEM_CMA_HELPER
select DRM_KMS_HELPER select DRM_KMS_HELPER
select DRM_PANEL select DRM_PANEL
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
#include <drm/drm_dp_mst_helper.h> #include <drm/drm_dp_mst_helper.h>
#include <drm/drm_print.h> #include <drm/drm_print.h>
#include "../drm_dp_mst_topology_internal.h" #include "../dp/drm_dp_mst_topology_internal.h"
#include "test-drm_modeset_common.h" #include "test-drm_modeset_common.h"
int igt_dp_mst_calc_pbn_mode(void *ignored) int igt_dp_mst_calc_pbn_mode(void *ignored)
......
...@@ -5,6 +5,7 @@ config DRM_TEGRA ...@@ -5,6 +5,7 @@ config DRM_TEGRA
depends on COMMON_CLK depends on COMMON_CLK
depends on DRM depends on DRM
depends on OF depends on OF
select DRM_DP_HELPER
select DRM_KMS_HELPER select DRM_KMS_HELPER
select DRM_MIPI_DSI select DRM_MIPI_DSI
select DRM_PANEL select DRM_PANEL
......
...@@ -6,6 +6,7 @@ config DRM_ZYNQMP_DPSUB ...@@ -6,6 +6,7 @@ config DRM_ZYNQMP_DPSUB
depends on PHY_XILINX_ZYNQMP depends on PHY_XILINX_ZYNQMP
depends on XILINX_ZYNQMP_DPDMA depends on XILINX_ZYNQMP_DPDMA
select DMA_ENGINE select DMA_ENGINE
select DRM_DP_HELPER
select DRM_GEM_CMA_HELPER select DRM_GEM_CMA_HELPER
select DRM_KMS_HELPER select DRM_KMS_HELPER
select GENERIC_PHY select GENERIC_PHY
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment