summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/media/video/tegra/tegra_camera.c20
-rw-r--r--include/media/tegra_camera.h4
2 files changed, 14 insertions, 10 deletions
diff --git a/drivers/media/video/tegra/tegra_camera.c b/drivers/media/video/tegra/tegra_camera.c
index 36ecde087bed..de0c662ba613 100644
--- a/drivers/media/video/tegra/tegra_camera.c
+++ b/drivers/media/video/tegra/tegra_camera.c
@@ -96,17 +96,9 @@ static int tegra_camera_disable_clk(struct tegra_camera_dev *dev)
static int tegra_camera_enable_emc(struct tegra_camera_dev *dev)
{
- /*
- * tegra_camera wasn't added as a user of emc_clk until 3x.
- * set to 150 MHz, will likely need to be increased as we support
- * sensors with higher framerates and resolutions.
- */
clk_enable(dev->emc_clk);
-
#ifdef CONFIG_ARCH_TEGRA_2x_SOC
clk_set_rate(dev->emc_clk, 300000000);
-#else
- clk_set_rate(dev->emc_clk, 150000000);
#endif
return 0;
}
@@ -130,7 +122,8 @@ static int tegra_camera_clk_set_rate(struct tegra_camera_dev *dev)
return -EINVAL;
}
- if (info->id != TEGRA_CAMERA_MODULE_VI) {
+ if (info->id != TEGRA_CAMERA_MODULE_VI &&
+ info->id != TEGRA_CAMERA_MODULE_EMC) {
dev_err(dev->dev,
"%s: set rate only aplies to vi module %d\n",
__func__, info->id);
@@ -144,6 +137,14 @@ static int tegra_camera_clk_set_rate(struct tegra_camera_dev *dev)
case TEGRA_CAMERA_VI_SENSOR_CLK:
clk = dev->vi_sensor_clk;
break;
+ case TEGRA_CAMERA_EMC_CLK:
+ clk = dev->emc_clk;
+#ifndef CONFIG_ARCH_TEGRA_2x_SOC
+ dev_dbg(dev->dev, "%s: emc_clk rate=%lu\n",
+ __func__, info->rate);
+ clk_set_rate(dev->emc_clk, info->rate);
+#endif
+ goto set_rate_end;
default:
dev_err(dev->dev,
"%s: invalid clk id for set rate %d\n",
@@ -189,6 +190,7 @@ static int tegra_camera_clk_set_rate(struct tegra_camera_dev *dev)
#endif
}
+set_rate_end:
info->rate = clk_get_rate(clk);
dev_dbg(dev->dev, "%s: get_rate=%lu",
__func__, info->rate);
diff --git a/include/media/tegra_camera.h b/include/media/tegra_camera.h
index 8ee290758262..9dea1485781d 100644
--- a/include/media/tegra_camera.h
+++ b/include/media/tegra_camera.h
@@ -23,12 +23,14 @@ enum {
TEGRA_CAMERA_MODULE_ISP = 0,
TEGRA_CAMERA_MODULE_VI,
TEGRA_CAMERA_MODULE_CSI,
- TEGRA_CAMERA_MODULE_MAX,
+ TEGRA_CAMERA_MODULE_EMC,
+ TEGRA_CAMERA_MODULE_MAX
};
enum {
TEGRA_CAMERA_VI_CLK,
TEGRA_CAMERA_VI_SENSOR_CLK,
+ TEGRA_CAMERA_EMC_CLK
};
struct tegra_camera_clk_info {