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: Thomas Zimmermann <tzimmermann@suse.de> Acked-by: Lyude Paul <lyude@redhat.com> Acked-by: Daniel Vetter <daniel@ffwll.ch> Link: https://patchwork.freedesktop.org/patch/msgid/20220114114535.29157-4-tzimmermann@suse.de
This commit is contained in:
parent
3681eb24a9
commit
adb9d5a2cc
22 changed files with 55 additions and 22 deletions
|
@ -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
|
||||||
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
|
||||||
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
|
||||||
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
|
||||||
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
|
||||||
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
|
||||||
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
|
||||||
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
|
||||||
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
|
||||||
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
|
||||||
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
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
# 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
|
||||||
|
|
7
drivers/gpu/drm/dp/Makefile
Normal file
7
drivers/gpu/drm/dp/Makefile
Normal file
|
@ -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
|
22
drivers/gpu/drm/dp/drm_dp_helper_mod.c
Normal file
22
drivers/gpu/drm/dp/drm_dp_helper_mod.c
Normal file
|
@ -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);
|
|
@ -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,
|
||||||
"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
|
||||||
# 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
|
||||||
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
|
||||||
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 @@
|
||||||
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 @@
|
||||||
#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
|
||||||
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
|
||||||
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
|
||||||
|
|
Loading…
Add table
Reference in a new issue