static int mxr_runtime_resume(struct device *dev)
{
	struct mxr_device *mdev = to_mdev(dev);
	struct mxr_resources *res = &mdev->res;

	mxr_dbg(mdev, "resume - start\n");
	mutex_lock(&mdev->mutex);
	/* turn clocks on */
	clk_enable(res->mixer);
#if defined(CONFIG_ARCH_EXYNOS4)
	clk_enable(res->vp);
#endif
#if defined(CONFIG_CPU_EXYNOS4210)
	clk_enable(res->sclk_mixer);
#endif

	mdev->mif_handle = exynos5_bus_mif_min(800000);
	if (!mdev->mif_handle)
		dev_err(dev, "failed to request min_freq for mif\n");

	/* enable system mmu for tv. It must be enabled after enabling
	 * mixer's clock. Because of system mmu limitation. */
	mdev->vb2->resume(mdev->alloc_ctx);
	/* apply default configuration */
	mxr_reg_reset(mdev);
	mxr_dbg(mdev, "resume - finished\n");

	mutex_unlock(&mdev->mutex);
	return 0;
}
Exemplo n.º 2
0
static int mxr_runtime_resume(struct device *dev)
{
	struct mxr_device *mdev = to_mdev(dev);
	struct mxr_resources *res = &mdev->res;
	struct s5p_mxr_platdata *pdata = mdev->pdata;

	mxr_dbg(mdev, "resume - start\n");
	mutex_lock(&mdev->mutex);
	/* turn clocks on */
	if (is_ip_ver_5a || is_ip_ver_5s || is_ip_ver_5s2)
		clk_prepare_enable(res->axi_disp1);
	clk_prepare_enable(res->mixer);
#if defined(CONFIG_ARCH_EXYNOS4)
	clk_prepare_enable(res->vp);
#endif
	/* enable system mmu for tv. It must be enabled after enabling
	 * mixer's clock. Because of system mmu limitation. */
	mdev->vb2->resume(mdev->alloc_ctx);
	/* apply default configuration */
	mxr_reg_reset(mdev);
	mxr_dbg(mdev, "resume - finished\n");

	mutex_unlock(&mdev->mutex);
	return 0;
}
Exemplo n.º 3
0
static int mxr_runtime_resume(struct device *dev)
{
	struct mxr_device *mdev = to_mdev(dev);
	struct mxr_resources *res = &mdev->res;

	mxr_dbg(mdev, "resume - start\n");
	mutex_lock(&mdev->mutex);
	/* turn clocks on */
	clk_enable(res->mixer);
	clk_enable(res->vp);
	clk_enable(res->sclk_mixer);
	/* apply default configuration */
	mxr_reg_reset(mdev);
	mxr_dbg(mdev, "resume - finished\n");

	mutex_unlock(&mdev->mutex);
	return 0;
}
Exemplo n.º 4
0
static int mxr_runtime_resume(struct device *dev)
{
	struct mxr_device *mdev = to_mdev(dev);
	struct mxr_resources *res = &mdev->res;
	int ret;

	mxr_dbg(mdev, "resume - start\n");
	mutex_lock(&mdev->mutex);
	/* turn clocks on */
	ret = clk_prepare_enable(res->mixer);
	if (ret < 0) {
		dev_err(mdev->dev, "clk_prepare_enable(mixer) failed\n");
		goto fail;
	}
	ret = clk_prepare_enable(res->vp);
	if (ret < 0) {
		dev_err(mdev->dev, "clk_prepare_enable(vp) failed\n");
		goto fail_mixer;
	}
	ret = clk_prepare_enable(res->sclk_mixer);
	if (ret < 0) {
		dev_err(mdev->dev, "clk_prepare_enable(sclk_mixer) failed\n");
		goto fail_vp;
	}
	/* apply default configuration */
	mxr_reg_reset(mdev);
	mxr_dbg(mdev, "resume - finished\n");

	mutex_unlock(&mdev->mutex);
	return 0;

fail_vp:
	clk_disable_unprepare(res->vp);
fail_mixer:
	clk_disable_unprepare(res->mixer);
fail:
	mutex_unlock(&mdev->mutex);
	dev_err(mdev->dev, "resume failed\n");
	return ret;
}