Commit dc43e923 authored by Dmitry Baryshkov's avatar Dmitry Baryshkov
Browse files

drm/msm: allow compile time selection of driver components



MSM DRM driver already allows one to compile out the DP or DSI support.
Add support for disabling other features like MDP4/MDP5/DPU drivers or
direct HDMI output support.

Suggested-by: default avatarStephen Boyd <swboyd@chromium.org>
Reviewed-by: default avatarStephen Boyd <swboyd@chromium.org>
Signed-off-by: default avatarDmitry Baryshkov <dmitry.baryshkov@linaro.org>
Patchwork: https://patchwork.freedesktop.org/patch/482508/
Link: https://lore.kernel.org/r/20220419155346.1272627-6-dmitry.baryshkov@linaro.org


Signed-off-by: default avatarDmitry Baryshkov <dmitry.baryshkov@linaro.org>
parent 5d44531b
Loading
Loading
Loading
Loading
+47 −3
Original line number Diff line number Diff line
@@ -47,12 +47,39 @@ config DRM_MSM_GPU_SUDO
	  Only use this if you are a driver developer.  This should *not*
	  be enabled for production kernels.  If unsure, say N.

config DRM_MSM_HDMI_HDCP
	bool "Enable HDMI HDCP support in MSM DRM driver"
config DRM_MSM_MDSS
	bool
	depends on DRM_MSM
	default n

config DRM_MSM_MDP4
	bool "Enable MDP4 support in MSM DRM driver"
	depends on DRM_MSM
	default y
	help
	  Choose this option to enable HDCP state machine
	  Compile in support for the Mobile Display Processor v4 (MDP4) in
	  the MSM DRM driver. It is the older display controller found in
	  devices using APQ8064/MSM8960/MSM8x60 platforms.

config DRM_MSM_MDP5
	bool "Enable MDP5 support in MSM DRM driver"
	depends on DRM_MSM
	select DRM_MSM_MDSS
	default y
	help
	  Compile in support for the Mobile Display Processor v5 (MDP5) in
	  the MSM DRM driver. It is the display controller found in devices
	  using e.g. APQ8016/MSM8916/APQ8096/MSM8996/MSM8974/SDM6x0 platforms.

config DRM_MSM_DPU
	bool "Enable DPU support in MSM DRM driver"
	depends on DRM_MSM
	select DRM_MSM_MDSS
	default y
	help
	  Compile in support for the Display Processing Unit in
	  the MSM DRM driver. It is the display controller found in devices
	  using e.g. SDM845 and newer platforms.

config DRM_MSM_DP
	bool "Enable DisplayPort support in MSM DRM driver"
@@ -117,3 +144,20 @@ config DRM_MSM_DSI_7NM_PHY
	help
	  Choose this option if DSI PHY on SM8150/SM8250/SC7280 is used on
	  the platform.

config DRM_MSM_HDMI
	bool "Enable HDMI support in MSM DRM driver"
	depends on DRM_MSM
	default y
	help
	  Compile in support for the HDMI output MSM DRM driver. It can
	  be a primary or a secondary display on device. Note that this is used
	  only for the direct HDMI output. If the device outputs HDMI data
	  throught some kind of DSI-to-HDMI bridge, this option can be disabled.

config DRM_MSM_HDMI_HDCP
	bool "Enable HDMI HDCP support in MSM DRM driver"
	depends on DRM_MSM && DRM_MSM_HDMI
	default y
	help
	  Choose this option to enable HDCP state machine
+18 −6
Original line number Diff line number Diff line
@@ -16,6 +16,8 @@ msm-y := \
	adreno/a6xx_gpu.o \
	adreno/a6xx_gmu.o \
	adreno/a6xx_hfi.o \

msm-$(CONFIG_DRM_MSM_HDMI) += \
	hdmi/hdmi.o \
	hdmi/hdmi_audio.o \
	hdmi/hdmi_bridge.o \
@@ -27,9 +29,10 @@ msm-y := \
	hdmi/hdmi_phy_8x60.o \
	hdmi/hdmi_phy_8x74.o \
	hdmi/hdmi_pll_8960.o \
	disp/mdp_format.o \
	disp/mdp_kms.o \

msm-$(CONFIG_DRM_MSM_MDP4) += \
	disp/mdp4/mdp4_crtc.o \
	disp/mdp4/mdp4_dsi_encoder.o \
	disp/mdp4/mdp4_dtv_encoder.o \
	disp/mdp4/mdp4_lcdc_encoder.o \
	disp/mdp4/mdp4_lvds_connector.o \
@@ -37,7 +40,10 @@ msm-y := \
	disp/mdp4/mdp4_irq.o \
	disp/mdp4/mdp4_kms.o \
	disp/mdp4/mdp4_plane.o \

msm-$(CONFIG_DRM_MSM_MDP5) += \
	disp/mdp5/mdp5_cfg.o \
	disp/mdp5/mdp5_cmd_encoder.o \
	disp/mdp5/mdp5_ctl.o \
	disp/mdp5/mdp5_crtc.o \
	disp/mdp5/mdp5_encoder.o \
@@ -47,6 +53,8 @@ msm-y := \
	disp/mdp5/mdp5_mixer.o \
	disp/mdp5/mdp5_plane.o \
	disp/mdp5/mdp5_smp.o \

msm-$(CONFIG_DRM_MSM_DPU) += \
	disp/dpu1/dpu_core_perf.o \
	disp/dpu1/dpu_crtc.o \
	disp/dpu1/dpu_encoder.o \
@@ -69,6 +77,13 @@ msm-y := \
	disp/dpu1/dpu_plane.o \
	disp/dpu1/dpu_rm.o \
	disp/dpu1/dpu_vbif.o \

msm-$(CONFIG_DRM_MSM_MDSS) += \
	msm_mdss.o \

msm-y += \
	disp/mdp_format.o \
	disp/mdp_kms.o \
	disp/msm_disp_snapshot.o \
	disp/msm_disp_snapshot_util.o \
	msm_atomic.o \
@@ -86,7 +101,6 @@ msm-y := \
	msm_gpu_devfreq.o \
	msm_io_utils.o \
	msm_iommu.o \
	msm_mdss.o \
	msm_perf.o \
	msm_rd.o \
	msm_ringbuffer.o \
@@ -117,12 +131,10 @@ msm-$(CONFIG_DRM_FBDEV_EMULATION) += msm_fbdev.o
msm-$(CONFIG_DRM_MSM_HDMI_HDCP) += hdmi/hdmi_hdcp.o

msm-$(CONFIG_DRM_MSM_DSI) += dsi/dsi.o \
			disp/mdp4/mdp4_dsi_encoder.o \
			dsi/dsi_cfg.o \
			dsi/dsi_host.o \
			dsi/dsi_manager.o \
			dsi/phy/dsi_phy.o \
			disp/mdp5/mdp5_cmd_encoder.o
			dsi/phy/dsi_phy.o

msm-$(CONFIG_DRM_MSM_DSI_28NM_PHY) += dsi/phy/dsi_phy_28nm.o
msm-$(CONFIG_DRM_MSM_DSI_20NM_PHY) += dsi/phy/dsi_phy_20nm.o
+3 −0
Original line number Diff line number Diff line
@@ -11,6 +11,8 @@

#include "mdp4_kms.h"

#ifdef CONFIG_DRM_MSM_DSI

struct mdp4_dsi_encoder {
	struct drm_encoder base;
	struct drm_panel *panel;
@@ -170,3 +172,4 @@ struct drm_encoder *mdp4_dsi_encoder_init(struct drm_device *dev)

	return ERR_PTR(ret);
}
#endif /* CONFIG_DRM_MSM_DSI */
+3 −0
Original line number Diff line number Diff line
@@ -8,6 +8,8 @@

#include "mdp5_kms.h"

#ifdef CONFIG_DRM_MSM_DSI

static struct mdp5_kms *get_kms(struct drm_encoder *encoder)
{
	struct msm_drm_private *priv = encoder->dev->dev_private;
@@ -198,3 +200,4 @@ int mdp5_cmd_encoder_set_split_display(struct drm_encoder *encoder,

	return 0;
}
#endif /* CONFIG_DRM_MSM_DSI */
+33 −0
Original line number Diff line number Diff line
@@ -291,10 +291,20 @@ struct drm_fb_helper *msm_fbdev_init(struct drm_device *dev);
void msm_fbdev_free(struct drm_device *dev);

struct hdmi;
#ifdef CONFIG_DRM_MSM_HDMI
int msm_hdmi_modeset_init(struct hdmi *hdmi, struct drm_device *dev,
		struct drm_encoder *encoder);
void __init msm_hdmi_register(void);
void __exit msm_hdmi_unregister(void);
#else
static inline int msm_hdmi_modeset_init(struct hdmi *hdmi, struct drm_device *dev,
		struct drm_encoder *encoder)
{
	return -EINVAL;
}
static inline void __init msm_hdmi_register(void) {}
static inline void __exit msm_hdmi_unregister(void) {}
#endif

struct msm_dsi;
#ifdef CONFIG_DRM_MSM_DSI
@@ -409,14 +419,37 @@ static inline void msm_dp_debugfs_init(struct msm_dp *dp_display,

#endif

#ifdef CONFIG_DRM_MSM_MDP4
void msm_mdp4_register(void);
void msm_mdp4_unregister(void);
#else
static inline void msm_mdp4_register(void) {}
static inline void msm_mdp4_unregister(void) {}
#endif

#ifdef CONFIG_DRM_MSM_MDP5
void msm_mdp_register(void);
void msm_mdp_unregister(void);
#else
static inline void msm_mdp_register(void) {}
static inline void msm_mdp_unregister(void) {}
#endif

#ifdef CONFIG_DRM_MSM_DPU
void msm_dpu_register(void);
void msm_dpu_unregister(void);
#else
static inline void msm_dpu_register(void) {}
static inline void msm_dpu_unregister(void) {}
#endif

#ifdef CONFIG_DRM_MSM_MDSS
void msm_mdss_register(void);
void msm_mdss_unregister(void);
#else
static inline void msm_mdss_register(void) {}
static inline void msm_mdss_unregister(void) {}
#endif

#ifdef CONFIG_DEBUG_FS
void msm_framebuffer_describe(struct drm_framebuffer *fb, struct seq_file *m);
Loading