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

Commit e17dc12b authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "camera_v2: Add IOCTL to set jpeg core clock rate"

parents a5e6d430 5cd0bca4
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -28,6 +28,19 @@
#include "msm_jpeg_common.h"
#include "msm_jpeg_hw.h"

int msm_jpeg_platform_set_clk_rate(struct msm_jpeg_device *pgmn_dev,
		long clk_rate)
{
	struct msm_cam_clk_info jpeg_core_clk_info[] = {
		{"core_clk", JPEG_CLK_RATE, 0}
	};

	jpeg_core_clk_info[0].clk_rate = clk_rate;

	return msm_cam_clk_enable(&pgmn_dev->pdev->dev, jpeg_core_clk_info,
			pgmn_dev->jpeg_clk, ARRAY_SIZE(jpeg_core_clk_info), 1);
}

void msm_jpeg_platform_p2v(struct msm_jpeg_device *pgmn_dev, struct file  *file,
	struct ion_handle **ionhandle, int domain_num)
{
+2 −0
Original line number Diff line number Diff line
@@ -21,6 +21,8 @@
#include "msm_jpeg_sync.h"
#define JPEG_CLK_RATE 266670000

int msm_jpeg_platform_set_clk_rate(struct msm_jpeg_device *pgmn_dev,
		long clk_rate);
void msm_jpeg_platform_p2v(struct msm_jpeg_device *pgmn_dev, struct file *file,
	struct ion_handle **ionhandle, int domain_num);
uint32_t msm_jpeg_platform_v2p(struct msm_jpeg_device *pgmn_dev, int fd,
+33 −0
Original line number Diff line number Diff line
@@ -804,6 +804,36 @@ int msm_jpeg_ioctl_test_dump_region(struct msm_jpeg_device *pgmn_dev,
	return 0;
}

int msm_jpeg_ioctl_set_clk_rate(struct msm_jpeg_device *pgmn_dev,
	unsigned long arg)
{
	long clk_rate;
	int rc;

	if ((pgmn_dev->state != MSM_JPEG_INIT) &&
		(pgmn_dev->state != MSM_JPEG_RESET)) {
		JPEG_PR_ERR("%s:%d] failed\n", __func__, __LINE__);
		return -EFAULT;
	}
	if (get_user(clk_rate, (long __user *)arg)) {
		JPEG_PR_ERR("%s:%d] failed\n", __func__, __LINE__);
		return -EFAULT;
	}
	JPEG_DBG("%s:%d] Requested clk rate %ld\n", __func__, __LINE__,
		clk_rate);
	if (clk_rate < 0) {
		JPEG_PR_ERR("%s:%d] failed\n", __func__, __LINE__);
		return -EFAULT;
	}
	rc = msm_jpeg_platform_set_clk_rate(pgmn_dev, clk_rate);
	if (rc < 0) {
		JPEG_PR_ERR("%s: clk failed rc = %d\n", __func__, rc);
		return -EFAULT;
	}

	return 0;
}

long __msm_jpeg_ioctl(struct msm_jpeg_device *pgmn_dev,
	unsigned int cmd, unsigned long arg)
{
@@ -873,6 +903,9 @@ long __msm_jpeg_ioctl(struct msm_jpeg_device *pgmn_dev,
		rc = msm_jpeg_ioctl_test_dump_region(pgmn_dev, arg);
		break;

	case MSM_JPEG_IOCTL_SET_CLK_RATE:
		rc = msm_jpeg_ioctl_set_clk_rate(pgmn_dev, arg);
		break;
	default:
		JPEG_PR_ERR(KERN_INFO "%s:%d] cmd = %d not supported\n",
			__func__, __LINE__, _IOC_NR(cmd));
+3 −0
Original line number Diff line number Diff line
@@ -55,6 +55,9 @@
#define MSM_JPEG_IOCTL_TEST_DUMP_REGION \
	_IOW(MSM_JPEG_IOCTL_MAGIC, 15, unsigned long)

#define MSM_JPEG_IOCTL_SET_CLK_RATE \
	_IOW(MSM_JPEG_IOCTL_MAGIC, 16, unsigned long)

#define MSM_JPEG_MODE_REALTIME_ENCODE 0
#define MSM_JPEG_MODE_OFFLINE_ENCODE 1
#define MSM_JPEG_MODE_REALTIME_ROTATION 2