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 <laurent.pinchart@ideasonboard.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
This commit is contained in:
Laurent Pinchart 2017-08-05 01:44:09 +03:00 коммит произвёл Tomi Valkeinen
Родитель 38dc07039c
Коммит 34dfb85f03
3 изменённых файлов: 13 добавлений и 4 удалений

Просмотреть файл

@ -166,7 +166,6 @@ static const enum dss_feat_id omap3430_dss_feat_list[] = {
FEAT_ROWREPEATENABLE, FEAT_ROWREPEATENABLE,
FEAT_RESIZECONF, FEAT_RESIZECONF,
FEAT_DSI_REVERSE_TXCLKESC, FEAT_DSI_REVERSE_TXCLKESC,
FEAT_VENC_REQUIRES_TV_DAC_CLK,
FEAT_CPR, FEAT_CPR,
FEAT_PRELOAD, FEAT_PRELOAD,
FEAT_FIR_COEF_V, FEAT_FIR_COEF_V,
@ -185,7 +184,6 @@ static const enum dss_feat_id am35xx_dss_feat_list[] = {
FEAT_ROWREPEATENABLE, FEAT_ROWREPEATENABLE,
FEAT_RESIZECONF, FEAT_RESIZECONF,
FEAT_DSI_REVERSE_TXCLKESC, FEAT_DSI_REVERSE_TXCLKESC,
FEAT_VENC_REQUIRES_TV_DAC_CLK,
FEAT_CPR, FEAT_CPR,
FEAT_PRELOAD, FEAT_PRELOAD,
FEAT_FIR_COEF_V, FEAT_FIR_COEF_V,

Просмотреть файл

@ -50,7 +50,6 @@ enum dss_feat_id {
FEAT_HDMI_AUDIO_USE_MCLK, FEAT_HDMI_AUDIO_USE_MCLK,
FEAT_HANDLE_UV_SEPARATE, FEAT_HANDLE_UV_SEPARATE,
FEAT_ATTR2, FEAT_ATTR2,
FEAT_VENC_REQUIRES_TV_DAC_CLK,
FEAT_CPR, FEAT_CPR,
FEAT_PRELOAD, FEAT_PRELOAD,
FEAT_FIR_COEF_V, FEAT_FIR_COEF_V,

Просмотреть файл

@ -37,6 +37,7 @@
#include <linux/of.h> #include <linux/of.h>
#include <linux/of_graph.h> #include <linux/of_graph.h>
#include <linux/component.h> #include <linux/component.h>
#include <linux/sys_soc.h>
#include "omapdss.h" #include "omapdss.h"
#include "dss.h" #include "dss.h"
@ -309,6 +310,7 @@ static struct {
struct videomode vm; struct videomode vm;
enum omap_dss_venc_type type; enum omap_dss_venc_type type;
bool invert_polarity; bool invert_polarity;
bool requires_tv_dac_clk;
struct omap_dss_device output; struct omap_dss_device output;
} venc; } venc;
@ -691,7 +693,7 @@ static int venc_get_clocks(struct platform_device *pdev)
{ {
struct clk *clk; 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"); clk = devm_clk_get(&pdev->dev, "tv_dac_clk");
if (IS_ERR(clk)) { if (IS_ERR(clk)) {
DSSERR("can't get tv_dac_clk\n"); DSSERR("can't get tv_dac_clk\n");
@ -826,6 +828,12 @@ err:
} }
/* VENC HW IP initialisation */ /* 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) static int venc_bind(struct device *dev, struct device *master, void *data)
{ {
struct platform_device *pdev = to_platform_device(dev); 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; 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); mutex_init(&venc.venc_lock);
venc.wss_data = 0; venc.wss_data = 0;