diff options
| author | Linux Build Service Account <lnxbuild@localhost> | 2016-08-16 10:20:23 -0700 |
|---|---|---|
| committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2016-08-16 10:20:22 -0700 |
| commit | 281eaadfac53aca13382c28c450df72ee55fe676 (patch) | |
| tree | 07b02aee85b308e172165d334ae78bb41b355868 /drivers | |
| parent | c19e021f9905bd303aa037fceb6c6f4c3c223b3b (diff) | |
| parent | 450d2ad5eeadb74f42775be3dc9a73407d8bd518 (diff) | |
Merge "msm: camera: FD: Set no memory retention"
Diffstat (limited to 'drivers')
3 files changed, 40 insertions, 0 deletions
diff --git a/drivers/media/platform/msm/camera_v2/common/cam_soc_api.c b/drivers/media/platform/msm/camera_v2/common/cam_soc_api.c index 7f5e49809a26..8da079d9d0c8 100644 --- a/drivers/media/platform/msm/camera_v2/common/cam_soc_api.c +++ b/drivers/media/platform/msm/camera_v2/common/cam_soc_api.c @@ -24,6 +24,7 @@ #include <linux/module.h> #include <linux/of_platform.h> #include <linux/msm-bus.h> +#include <linux/clk/msm-clk.h> #include "cam_soc_api.h" struct msm_cam_bus_pscale_data { @@ -454,6 +455,17 @@ long msm_camera_clk_set_rate(struct device *dev, } EXPORT_SYMBOL(msm_camera_clk_set_rate); +int msm_camera_set_clk_flags(struct clk *clk, unsigned long flags) +{ + if (!clk) + return -EINVAL; + + CDBG("clk : %p, flags : %ld\n", clk, flags); + + return clk_set_flags(clk, flags); +} +EXPORT_SYMBOL(msm_camera_set_clk_flags); + /* release memory allocated for clocks */ static int msm_camera_put_clk_info_internal(struct device *dev, struct msm_cam_clk_info **clk_info, diff --git a/drivers/media/platform/msm/camera_v2/common/cam_soc_api.h b/drivers/media/platform/msm/camera_v2/common/cam_soc_api.h index d1eeab92773f..b4494d4d6bab 100644 --- a/drivers/media/platform/msm/camera_v2/common/cam_soc_api.h +++ b/drivers/media/platform/msm/camera_v2/common/cam_soc_api.h @@ -188,6 +188,18 @@ long msm_camera_clk_set_rate(struct device *dev, struct clk *clk, long clk_rate); /** + * @brief : Sets flags of a clock + * + * This function will set the flags for a specified clock + * + * @param clk : Pointer to clock to set flags for + * @param flags : The flags to set + * + * @return Status of operation. + */ + +int msm_camera_set_clk_flags(struct clk *clk, unsigned long flags); +/** * @brief : Gets regulator info * * This function extracts the regulator information for a specific @@ -200,6 +212,7 @@ long msm_camera_clk_set_rate(struct device *dev, * * @return Status of operation. Negative in case of error. Zero otherwise. */ + int msm_camera_get_regulator_info(struct platform_device *pdev, struct msm_cam_regulator **vdd_info, int *num_reg); /** diff --git a/drivers/media/platform/msm/camera_v2/fd/msm_fd_dev.c b/drivers/media/platform/msm/camera_v2/fd/msm_fd_dev.c index 98afe4cd3074..a56e42dc1c6f 100644 --- a/drivers/media/platform/msm/camera_v2/fd/msm_fd_dev.c +++ b/drivers/media/platform/msm/camera_v2/fd/msm_fd_dev.c @@ -22,6 +22,7 @@ #include <media/v4l2-ioctl.h> #include <media/v4l2-event.h> #include <media/videobuf2-v4l2.h> +#include <linux/clk/msm-clk.h> #include "msm_fd_dev.h" #include "msm_fd_hw.h" @@ -1203,6 +1204,7 @@ static int fd_probe(struct platform_device *pdev) { struct msm_fd_device *fd; int ret; + int i; /* Face detection device struct */ fd = kzalloc(sizeof(struct msm_fd_device), GFP_KERNEL); @@ -1237,6 +1239,19 @@ static int fd_probe(struct platform_device *pdev) goto error_get_clocks; } + /*set memcore and mem periphery logic flags to 0*/ + for (i = 0; i < fd->clk_num; i++) { + if ((strcmp(fd->clk_info[i].clk_name, + "mmss_fd_core_clk") == 0) || + (strcmp(fd->clk_info[i].clk_name, + "mmss_fd_core_uar_clk") == 0)) { + msm_camera_set_clk_flags(fd->clk[i], + CLKFLAG_NORETAIN_MEM); + msm_camera_set_clk_flags(fd->clk[i], + CLKFLAG_NORETAIN_PERIPH); + } + } + ret = msm_camera_register_bus_client(pdev, CAM_BUS_CLIENT_FD); if (ret < 0) { dev_err(&pdev->dev, "Fail to get bus\n"); |
