summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGautham Mayyuri <gmayyuri@codeaurora.org>2016-04-28 19:55:14 -0700
committerJeevan Shriram <jshriram@codeaurora.org>2016-05-05 15:05:45 -0700
commit74fff772f8009af31883db9c02df9d6cfcf1b82d (patch)
tree7ae75df93561576bda66fc338a70d220a395687b
parent4379b4d614646ba37247af518b274e560511cd89 (diff)
msm: jpeg: Expose JPEG DMA max downscale to user space
This change will retrieve JPEG DMA max downscale factor from dtsi and expose it to user space. CRs-Fixed: 1009871 Change-Id: I57496aeb47d907f540a25c854ef7b35c6b5ab399 Signed-off-by: Gautham Mayyuri <gmayyuri@codeaurora.org>
-rw-r--r--Documentation/devicetree/bindings/media/video/msm-jpegdma.txt3
-rw-r--r--drivers/media/platform/msm/camera_v2/jpeg_dma/msm_jpeg_dma_dev.c25
-rw-r--r--drivers/media/platform/msm/camera_v2/jpeg_dma/msm_jpeg_dma_hw.c19
-rw-r--r--drivers/media/platform/msm/camera_v2/jpeg_dma/msm_jpeg_dma_hw.h4
-rw-r--r--include/uapi/media/msm_jpeg_dma.h1
5 files changed, 51 insertions, 1 deletions
diff --git a/Documentation/devicetree/bindings/media/video/msm-jpegdma.txt b/Documentation/devicetree/bindings/media/video/msm-jpegdma.txt
index 6b05e7fa3084..a1d604218219 100644
--- a/Documentation/devicetree/bindings/media/video/msm-jpegdma.txt
+++ b/Documentation/devicetree/bindings/media/video/msm-jpegdma.txt
@@ -19,6 +19,8 @@ Required properties:
- clocks : clocks required for the device.
- qcom,clock-rates: should specify clock rates in Hz to each clocks
property defined.
+- qcom,max-ds-factor: should specify the max dma downscale factor,
+ supported by HW.
- Refer to "Documentation/devicetree/bindings/arm/msm/msm_bus.txt" for
below optional properties:
- qcom,msm-bus,name
@@ -67,5 +69,6 @@ Example:
qcom,msm-bus,num-paths = <1>;
qcom,msm-bus,vectors-KBps = <62 512 0 0>,
<62 512 666675 666675>;
+ qcom,max-ds-factor = <128>;
status = "ok";
};
diff --git a/drivers/media/platform/msm/camera_v2/jpeg_dma/msm_jpeg_dma_dev.c b/drivers/media/platform/msm/camera_v2/jpeg_dma/msm_jpeg_dma_dev.c
index 2f84ff95a38a..57e389b4c497 100644
--- a/drivers/media/platform/msm/camera_v2/jpeg_dma/msm_jpeg_dma_dev.c
+++ b/drivers/media/platform/msm/camera_v2/jpeg_dma/msm_jpeg_dma_dev.c
@@ -1075,6 +1075,30 @@ static int msm_jpegdma_s_parm(struct file *file, void *fh,
return 0;
}
+/*
+ * msm_fd_g_ctrl - V4l2 ioctl get control.
+ * @file: Pointer to file struct.
+ * @fh: V4l2 File handle.
+ * @sub: Pointer to v4l2_control struct need to be filled.
+ */
+static int msm_jpegdma_g_ctrl(struct file *file, void *fh,
+ struct v4l2_control *a)
+{
+ struct jpegdma_ctx *ctx = msm_jpegdma_ctx_from_fh(fh);
+
+ switch (a->id) {
+ case V4L2_CID_JPEG_DMA_MAX_DOWN_SCALE:
+ a->value = msm_jpegdma_hw_get_max_downscale(ctx->jdma_device);
+ if (a->value < 0)
+ return -EINVAL;
+ break;
+ default:
+ return -EINVAL;
+ }
+
+ return 0;
+}
+
/* V4l2 ioctl handlers */
static const struct v4l2_ioctl_ops fd_ioctl_ops = {
.vidioc_querycap = msm_jpegdma_querycap,
@@ -1096,6 +1120,7 @@ static const struct v4l2_ioctl_ops fd_ioctl_ops = {
.vidioc_s_crop = msm_jpegdma_s_crop,
.vidioc_g_parm = msm_jpegdma_g_parm,
.vidioc_s_parm = msm_jpegdma_s_parm,
+ .vidioc_g_ctrl = msm_jpegdma_g_ctrl,
};
/*
diff --git a/drivers/media/platform/msm/camera_v2/jpeg_dma/msm_jpeg_dma_hw.c b/drivers/media/platform/msm/camera_v2/jpeg_dma/msm_jpeg_dma_hw.c
index e994ce1b8b32..0a871c342fb4 100644
--- a/drivers/media/platform/msm/camera_v2/jpeg_dma/msm_jpeg_dma_hw.c
+++ b/drivers/media/platform/msm/camera_v2/jpeg_dma/msm_jpeg_dma_hw.c
@@ -1366,6 +1366,25 @@ int msm_jpegdma_hw_get_mem_resources(struct platform_device *pdev,
}
/*
+ * msm_jpegdma_hw_get_max_downscale - Get max downscale factor from dtsi.
+ * @dma: Pointer to dma device.
+ */
+int msm_jpegdma_hw_get_max_downscale(struct msm_jpegdma_device *dma)
+{
+ int ret;
+ int max_ds_factor;
+
+ ret = of_property_read_u32(dma->dev->of_node,
+ "qcom,max-ds-factor", &max_ds_factor);
+ if (ret < 0) {
+ dev_err(dma->dev, "cannot read qcom,max-ds-factor from dtsi\n");
+ return ret;
+ }
+ dev_dbg(dma->dev, "max_ds_factor is %d\n", max_ds_factor);
+ return max_ds_factor;
+}
+
+/*
* msm_jpegdma_hw_get_qos - Get dma qos settings from device-tree.
* @dma: Pointer to dma device.
*/
diff --git a/drivers/media/platform/msm/camera_v2/jpeg_dma/msm_jpeg_dma_hw.h b/drivers/media/platform/msm/camera_v2/jpeg_dma/msm_jpeg_dma_hw.h
index b7ff3b53aeb0..a29f3323500d 100644
--- a/drivers/media/platform/msm/camera_v2/jpeg_dma/msm_jpeg_dma_hw.h
+++ b/drivers/media/platform/msm/camera_v2/jpeg_dma/msm_jpeg_dma_hw.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2015, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2015-2016, The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
@@ -52,6 +52,8 @@ int msm_jpegdma_hw_get_clocks(struct msm_jpegdma_device *dma);
int msm_jpegdma_hw_put_clocks(struct msm_jpegdma_device *dma);
+int msm_jpegdma_hw_get_max_downscale(struct msm_jpegdma_device *dma);
+
int msm_jpegdma_hw_get_qos(struct msm_jpegdma_device *dma);
void msm_jpegdma_hw_put_qos(struct msm_jpegdma_device *dma);
diff --git a/include/uapi/media/msm_jpeg_dma.h b/include/uapi/media/msm_jpeg_dma.h
index df3c7ee5b7cf..6b664566cb4c 100644
--- a/include/uapi/media/msm_jpeg_dma.h
+++ b/include/uapi/media/msm_jpeg_dma.h
@@ -17,6 +17,7 @@
/* msm jpeg dma control ID's */
#define V4L2_CID_JPEG_DMA_SPEED (V4L2_CID_PRIVATE_BASE)
+#define V4L2_CID_JPEG_DMA_MAX_DOWN_SCALE (V4L2_CID_PRIVATE_BASE + 1)
/* msm_jpeg_dma_buf */
struct msm_jpeg_dma_buff {