/* release isi soft reset */
regmap_update_bits(gpr,
DISP_MIX_SFT_RSTN_CSR,
- EN_BUS_BLK_CLK_RSTN | EN_ISI_APB_CLK_RSTN | EN_ISI_PROC_CLK_RSTN,
- EN_BUS_BLK_CLK_RSTN | EN_ISI_APB_CLK_RSTN | EN_ISI_PROC_CLK_RSTN);
+ EN_ISI_APB_CLK_RSTN | EN_ISI_PROC_CLK_RSTN,
+ EN_ISI_APB_CLK_RSTN | EN_ISI_PROC_CLK_RSTN);
else
regmap_update_bits(gpr,
DISP_MIX_SFT_RSTN_CSR,
- EN_BUS_BLK_CLK_RSTN | EN_ISI_APB_CLK_RSTN | EN_ISI_APB_CLK_RSTN,
+ EN_ISI_APB_CLK_RSTN | EN_ISI_APB_CLK_RSTN,
0x0);
}
/* enable isi clks */
regmap_update_bits(gpr,
DISP_MIX_CLK_EN_CSR,
- EN_BUS_BLK_CLK | EN_ISI_APB_CLK | EN_ISI_PROC_CLK,
- EN_BUS_BLK_CLK | EN_ISI_APB_CLK | EN_ISI_PROC_CLK);
+ EN_ISI_APB_CLK | EN_ISI_PROC_CLK,
+ EN_ISI_APB_CLK | EN_ISI_PROC_CLK);
else
/* disable isi clks */
regmap_update_bits(gpr,
DISP_MIX_CLK_EN_CSR,
- EN_BUS_BLK_CLK | EN_ISI_APB_CLK | EN_ISI_PROC_CLK,
+ EN_ISI_APB_CLK | EN_ISI_PROC_CLK,
0x0);
}
static int mxc_isi_pm_resume(struct device *dev)
{
- struct mxc_isi_dev *mxc_isi = dev_get_drvdata(dev);
int ret;
ret = pm_runtime_force_resume(dev);
if (ret < 0)
return ret;
- disp_mix_sft_rstn(mxc_isi->gpr, false);
- disp_mix_clks_enable(mxc_isi->gpr, true);
-
return 0;
}
#endif
{
struct mxc_isi_dev *mxc_isi = dev_get_drvdata(dev);
+ disp_mix_clks_enable(mxc_isi->gpr, false);
mxc_isi_clk_disable(mxc_isi);
return 0;
dev_err(dev, "%s clk enable fail\n", __func__);
return ret;
}
+ disp_mix_sft_rstn(mxc_isi->gpr, false);
+ disp_mix_clks_enable(mxc_isi->gpr, true);
return 0;
}
static int mipi_csis_system_resume(struct device *dev)
{
- struct csi_state *state = dev_get_drvdata(dev);
int ret;
ret = pm_runtime_force_resume(dev);
dev_err(dev, "force resume %s failed!\n", dev_name(dev));
return ret;
}
- disp_mix_clks_enable(state->gpr, true);
- disp_mix_sft_rstn(state->gpr, false);
return 0;
}
if (ret < 0)
return ret;
+ disp_mix_clks_enable(state->gpr, false);
mipi_csis_clk_disable(state);
return 0;
}
if (ret < 0)
return ret;
- return mipi_csis_clk_enable(state);
+ ret = mipi_csis_clk_enable(state);
+ if (ret < 0)
+ return ret;
+
+ disp_mix_clks_enable(state->gpr, true);
+ disp_mix_sft_rstn(state->gpr, false);
+
+ return 0;
}
static int mipi_csis_remove(struct platform_device *pdev)