summaryrefslogtreecommitdiff
path: root/drivers/media/platform/soc_camera/tegra_camera/vi2.c
diff options
context:
space:
mode:
authorBryan Wu <pengw@nvidia.com>2015-10-13 12:47:09 -0700
committerMatthew Pedro <mapedro@nvidia.com>2015-10-29 10:52:23 -0700
commite46e60ceb990edf4e28db1685e28847e8dfca4b3 (patch)
tree7c16fa34c7bfd4a7fc328aaedff279ff2aa560ef /drivers/media/platform/soc_camera/tegra_camera/vi2.c
parenta71b1768148c325d5aa3ce40d1d9c5c1b577def3 (diff)
media: tegra_camera: add line alignment check
bytes_per_line should be 64 bytes aligned in Tegra. Add a function to check that and return the right value for LINE_STRIDE register. Bug 1694764 Change-Id: I1bb926a416719d19cad509f9a9a7c4fce06b851a Signed-off-by: Bryan Wu <pengw@nvidia.com> Reviewed-on: http://git-master/r/816975 Reviewed-by: Automatic_Commit_Validation_User GVS: Gerrit_Virtual_Submit Reviewed-by: Matthew Pedro <mapedro@nvidia.com>
Diffstat (limited to 'drivers/media/platform/soc_camera/tegra_camera/vi2.c')
-rw-r--r--drivers/media/platform/soc_camera/tegra_camera/vi2.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/drivers/media/platform/soc_camera/tegra_camera/vi2.c b/drivers/media/platform/soc_camera/tegra_camera/vi2.c
index 6a75e8e2e838..4d17cda6046e 100644
--- a/drivers/media/platform/soc_camera/tegra_camera/vi2.c
+++ b/drivers/media/platform/soc_camera/tegra_camera/vi2.c
@@ -808,12 +808,22 @@ static int vi2_capture_setup(struct tegra_camera_dev *cam)
return -ENODEV;
}
+static s32 vi2_bytes_per_line(u32 width, const struct soc_mbus_pixelfmt *mf)
+{
+ s32 bytes_per_line = soc_mbus_bytes_per_line(width, mf);
+
+ if (bytes_per_line % 64)
+ bytes_per_line = bytes_per_line + (64 - (bytes_per_line % 64));
+
+ return bytes_per_line;
+}
+
static int vi2_capture_buffer_setup(struct tegra_camera_dev *cam,
struct tegra_camera_buffer *buf)
{
struct soc_camera_device *icd = buf->icd;
- int bytes_per_line = soc_mbus_bytes_per_line(icd->user_width,
- icd->current_fmt->host_fmt);
+ int bytes_per_line = vi2_bytes_per_line(icd->user_width,
+ icd->current_fmt->host_fmt);
struct soc_camera_subdev_desc *ssdesc = &icd->sdesc->subdev_desc;
struct tegra_camera_platform_data *pdata = ssdesc->drv_priv;
int port = pdata->port;