From 34dfb85f03957f5f396058e2f3c15686e77c28ba Mon Sep 17 00:00:00 2001 From: Laurent Pinchart Date: Sat, 5 Aug 2017 01:44:09 +0300 Subject: [PATCH] drm: omapdrm: Move FEAT_VENC_REQUIRES_TV_DAC_CLK to venc driver The FEAT_VENC_REQUIRES_TV_DAC_CLK is specific to the VENC, move it from the omap_dss_features structure to the venc driver. Signed-off-by: Laurent Pinchart Signed-off-by: Tomi Valkeinen --- drivers/gpu/drm/omapdrm/dss/dss_features.c | 2 -- drivers/gpu/drm/omapdrm/dss/dss_features.h | 1 - drivers/gpu/drm/omapdrm/dss/venc.c | 14 +++++++++++++- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/omapdrm/dss/dss_features.c b/drivers/gpu/drm/omapdrm/dss/dss_features.c index b0a07c6558cd..dcdc66be28de 100644 --- a/drivers/gpu/drm/omapdrm/dss/dss_features.c +++ b/drivers/gpu/drm/omapdrm/dss/dss_features.c @@ -166,7 +166,6 @@ static const enum dss_feat_id omap3430_dss_feat_list[] = { FEAT_ROWREPEATENABLE, FEAT_RESIZECONF, FEAT_DSI_REVERSE_TXCLKESC, - FEAT_VENC_REQUIRES_TV_DAC_CLK, FEAT_CPR, FEAT_PRELOAD, FEAT_FIR_COEF_V, @@ -185,7 +184,6 @@ static const enum dss_feat_id am35xx_dss_feat_list[] = { FEAT_ROWREPEATENABLE, FEAT_RESIZECONF, FEAT_DSI_REVERSE_TXCLKESC, - FEAT_VENC_REQUIRES_TV_DAC_CLK, FEAT_CPR, FEAT_PRELOAD, FEAT_FIR_COEF_V, diff --git a/drivers/gpu/drm/omapdrm/dss/dss_features.h b/drivers/gpu/drm/omapdrm/dss/dss_features.h index 24c57c55e785..f296bc77f220 100644 --- a/drivers/gpu/drm/omapdrm/dss/dss_features.h +++ b/drivers/gpu/drm/omapdrm/dss/dss_features.h @@ -50,7 +50,6 @@ enum dss_feat_id { FEAT_HDMI_AUDIO_USE_MCLK, FEAT_HANDLE_UV_SEPARATE, FEAT_ATTR2, - FEAT_VENC_REQUIRES_TV_DAC_CLK, FEAT_CPR, FEAT_PRELOAD, FEAT_FIR_COEF_V, diff --git a/drivers/gpu/drm/omapdrm/dss/venc.c b/drivers/gpu/drm/omapdrm/dss/venc.c index 9e4fc000e961..b0a85b10fa38 100644 --- a/drivers/gpu/drm/omapdrm/dss/venc.c +++ b/drivers/gpu/drm/omapdrm/dss/venc.c @@ -37,6 +37,7 @@ #include #include #include +#include #include "omapdss.h" #include "dss.h" @@ -309,6 +310,7 @@ static struct { struct videomode vm; enum omap_dss_venc_type type; bool invert_polarity; + bool requires_tv_dac_clk; struct omap_dss_device output; } venc; @@ -691,7 +693,7 @@ static int venc_get_clocks(struct platform_device *pdev) { struct clk *clk; - if (dss_has_feature(FEAT_VENC_REQUIRES_TV_DAC_CLK)) { + if (venc.requires_tv_dac_clk) { clk = devm_clk_get(&pdev->dev, "tv_dac_clk"); if (IS_ERR(clk)) { DSSERR("can't get tv_dac_clk\n"); @@ -826,6 +828,12 @@ err: } /* VENC HW IP initialisation */ +static const struct soc_device_attribute venc_soc_devices[] = { + { .machine = "OMAP3[45]*" }, + { .machine = "AM35*" }, + { /* sentinel */ } +}; + static int venc_bind(struct device *dev, struct device *master, void *data) { struct platform_device *pdev = to_platform_device(dev); @@ -835,6 +843,10 @@ static int venc_bind(struct device *dev, struct device *master, void *data) venc.pdev = pdev; + /* The OMAP34xx, OMAP35xx and AM35xx VENC require the TV DAC clock. */ + if (soc_device_match(venc_soc_devices)) + venc.requires_tv_dac_clk = true; + mutex_init(&venc.venc_lock); venc.wss_data = 0; -- 2.20.1