summaryrefslogtreecommitdiff
path: root/drivers/media/platform/soc_camera/tegra_camera/vi2.c
diff options
context:
space:
mode:
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;