FEAT_ROWREPEATENABLE,
        FEAT_RESIZECONF,
        FEAT_DSI_REVERSE_TXCLKESC,
-       FEAT_VENC_REQUIRES_TV_DAC_CLK,
        FEAT_CPR,
        FEAT_PRELOAD,
        FEAT_FIR_COEF_V,
        FEAT_ROWREPEATENABLE,
        FEAT_RESIZECONF,
        FEAT_DSI_REVERSE_TXCLKESC,
-       FEAT_VENC_REQUIRES_TV_DAC_CLK,
        FEAT_CPR,
        FEAT_PRELOAD,
        FEAT_FIR_COEF_V,
 
 #include <linux/of.h>
 #include <linux/of_graph.h>
 #include <linux/component.h>
+#include <linux/sys_soc.h>
 
 #include "omapdss.h"
 #include "dss.h"
        struct videomode vm;
        enum omap_dss_venc_type type;
        bool invert_polarity;
+       bool requires_tv_dac_clk;
 
        struct omap_dss_device output;
 } venc;
 {
        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");
 }
 
 /* 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);
 
        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;