drm/sun4i: Force the mixer rate at 150MHz
It seems like the mixer can only run properly when clocked at 150MHz. In order to have something more robust than simply a fire-and-forget assigned-clocks-rate, let's put that in the code. Reviewed-by: Chen-Yu Tsai <wens@csie.org> Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com> Link: https://patchwork.freedesktop.org/patch/msgid/f5f05307972ed05250e8094b302d68b9e7e167f6.1513854122.git-series.maxime.ripard@free-electrons.com
This commit is contained in:
parent
104fe24a5f
commit
edea372bd2
@ -398,6 +398,15 @@ static int sun8i_mixer_bind(struct device *dev, struct device *master,
|
||||
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);
|
||||
@ -474,6 +483,7 @@ static const struct sun8i_mixer_cfg sun8i_v3s_mixer_cfg = {
|
||||
.ui_num = 1,
|
||||
.scaler_mask = 0x3,
|
||||
.ccsc = 0,
|
||||
.mod_rate = 150000000,
|
||||
};
|
||||
|
||||
static const struct of_device_id sun8i_mixer_of_table[] = {
|
||||
|
@ -121,12 +121,15 @@ struct de2_fmt_info {
|
||||
* 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 {
|
||||
|
Loading…
Reference in New Issue
Block a user