Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2a84a6a4 authored by Jeyaprakash Soundrapandian's avatar Jeyaprakash Soundrapandian Committed by Gerrit - the friendly Code Review server
Browse files

Merge "msm: camera: utils: Add APIs for clock round rate, set flags" into dev/msm-4.9-camx

parents d8238623 a440b402
Loading
Loading
Loading
Loading
+24 −0
Original line number Diff line number Diff line
@@ -128,6 +128,30 @@ int cam_soc_util_irq_disable(struct cam_hw_soc_info *soc_info)
	return 0;
}

long cam_soc_util_get_clk_round_rate(struct cam_hw_soc_info *soc_info,
	uint32_t clk_index, unsigned long clk_rate)
{
	if (!soc_info || (clk_index >= soc_info->num_clk) || (clk_rate == 0)) {
		CAM_ERR(CAM_UTIL, "Invalid input params %pK, %d %lld",
			soc_info, clk_index, clk_rate);
		return clk_rate;
	}

	return clk_round_rate(soc_info->clk[clk_index], clk_rate);
}

int cam_soc_util_set_clk_flags(struct cam_hw_soc_info *soc_info,
	uint32_t clk_index, unsigned long flags)
{
	if (!soc_info || (clk_index >= soc_info->num_clk)) {
		CAM_ERR(CAM_UTIL, "Invalid input params %pK, %d",
			soc_info, clk_index);
		return -EINVAL;
	}

	return clk_set_flags(soc_info->clk[clk_index], flags);
}

int cam_soc_util_set_clk_rate(struct clk *clk, const char *clk_name,
	int32_t clk_rate)
{
+30 −0
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@
#include <linux/delay.h>
#include <linux/platform_device.h>
#include <linux/regulator/consumer.h>
#include <linux/clk/qcom.h>

#include "cam_io_util.h"

@@ -327,6 +328,35 @@ int cam_soc_util_enable_platform_resource(struct cam_hw_soc_info *soc_info,
int cam_soc_util_disable_platform_resource(struct cam_hw_soc_info *soc_info,
	bool disable_clocks, bool disable_irq);

/**
 * cam_soc_util_get_clk_round_rate()
 *
 * @brief:              Get the rounded clock rate for the given clock's
 *                      clock rate value
 *
 * @soc_info:           Device soc information
 * @clk_index:          Clock index in soc_info for which round rate is needed
 * @clk_rate:           Input clock rate for which rounded rate is needed
 *
 * @return:             Rounded clock rate
 */
long cam_soc_util_get_clk_round_rate(struct cam_hw_soc_info *soc_info,
	uint32_t clk_index, unsigned long clk_rate);

/**
 * cam_soc_util_set_clk_flags()
 *
 * @brief:              Camera SOC util to set the flags for a specified clock
 *
 * @soc_info:           Device soc information
 * @clk_index:          Clock index in soc_info for which flags are to be set
 * @flags:              Flags to set
 *
 * @return:             Success or Failure
 */
int cam_soc_util_set_clk_flags(struct cam_hw_soc_info *soc_info,
	 uint32_t clk_index, unsigned long flags);

/**
 * cam_soc_util_set_clk_rate()
 *