mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-29 13:53:33 +00:00
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: Stephen Boyd <swboyd@chromium.org> Reviewed-by: Stephen Boyd <swboyd@chromium.org> Signed-off-by: Dmitry 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: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
This commit is contained in:
parent
5d44531be0
commit
dc43e923cd
6 changed files with 115 additions and 11 deletions
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -312,8 +312,17 @@ static const struct dev_pm_ops mdss_pm_ops = {
|
|||
|
||||
static int find_mdp_node(struct device *dev, void *data)
|
||||
{
|
||||
return of_match_node(dpu_dt_match, dev->of_node) ||
|
||||
of_match_node(mdp5_dt_match, dev->of_node);
|
||||
#ifdef CONFIG_DRM_MSM_DPU
|
||||
if (of_match_node(dpu_dt_match, dev->of_node))
|
||||
return true;
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_DRM_MSM_MDP5
|
||||
if (of_match_node(mdp5_dt_match, dev->of_node))
|
||||
return true;
|
||||
#endif
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
static int mdss_probe(struct platform_device *pdev)
|
||||
|
|
Loading…
Reference in a new issue