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:
Родитель
38dc07039c
Коммит
34dfb85f03
|
@ -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;
|
||||||
|
|
Загрузка…
Ссылка в новой задаче