ret = PTR_ERR(mixer->mod_clk);
                goto err_disable_bus_clk;
        }
+
+       /*
+        * It seems that we need to enforce that rate for whatever
+        * reason for the mixer to be functional. Make sure it's the
+        * case.
+        */
+       if (mixer->cfg->mod_rate)
+               clk_set_rate(mixer->mod_clk, mixer->cfg->mod_rate);
+
        clk_prepare_enable(mixer->mod_clk);
 
        list_add_tail(&mixer->engine.list, &drv->engine_list);
        .ui_num = 1,
        .scaler_mask = 0x3,
        .ccsc = 0,
+       .mod_rate = 150000000,
 };
 
 static const struct of_device_id sun8i_mixer_of_table[] = {
 
  *     Set value to 0 if this is first mixer or second mixer with VEP support.
  *     Set value to 1 if this is second mixer without VEP support. Other values
  *     are invalid.
+ * @mod_rate: module clock rate that needs to be set in order to have
+ *     a functional block.
  */
 struct sun8i_mixer_cfg {
        int             vi_num;
        int             ui_num;
        int             scaler_mask;
        int             ccsc;
+       unsigned long   mod_rate;
 };
 
 struct sun8i_mixer {