From: Steve Longerbeam <slongerbeam@gmail.com>
To: robh+dt@kernel.org, mark.rutland@arm.com, shawnguo@kernel.org,
kernel@pengutronix.de, fabio.estevam@nxp.com,
linux@armlinux.org.uk, mchehab@kernel.org, hverkuil@xs4all.nl,
nick@shmanahar.org, markus.heiser@darmarIT.de,
p.zabel@pengutronix.de,
laurent.pinchart+renesas@ideasonboard.com, bparrot@ti.com,
geert@linux-m68k.org, arnd@arndb.de, sudipm.mukherjee@gmail.com,
minghsiu.tsai@mediatek.com, tiffany.lin@mediatek.com,
jean-christophe.trotin@st.com, horms+renesas@verge.net.au,
niklas.soderlund+renesas@ragnatech.se, robert.jarzmik@free.fr,
songjun.wu@microchip.com, andrew-ct.chen@mediatek.com,
gregkh@linuxfoundation.org, shuah@kernel.org,
sakari.ailus@linux.intel.com, pavel@ucw.cz
Cc: devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
linux-media@vger.kernel.org, devel@driverdev.osuosl.org,
Russell King <rmk+kernel@armlinux.org.uk>,
Steve Longerbeam <steve_longerbeam@mentor.com>
Subject: [PATCH v5 31/39] media: imx: csi: add support for bayer formats
Date: Thu, 9 Mar 2017 20:53:11 -0800 [thread overview]
Message-ID: <1489121599-23206-32-git-send-email-steve_longerbeam@mentor.com> (raw)
In-Reply-To: <1489121599-23206-1-git-send-email-steve_longerbeam@mentor.com>
From: Russell King <rmk+kernel@armlinux.org.uk>
Bayer formats must be treated as generic data and passthrough mode must
be used. Add the correct setup for these formats.
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
- added check to csi_link_validate() to verify that destination is
IDMAC output pad when passthrough conditions exist: bayer formats
and 16-bit parallel buses.
Signed-off-by: Steve Longerbeam <steve_longerbeam@mentor.com>
---
drivers/staging/media/imx/imx-media-csi.c | 52 +++++++++++++++++++++++++------
1 file changed, 43 insertions(+), 9 deletions(-)
diff --git a/drivers/staging/media/imx/imx-media-csi.c b/drivers/staging/media/imx/imx-media-csi.c
index ab78ff7..a7d04e4 100644
--- a/drivers/staging/media/imx/imx-media-csi.c
+++ b/drivers/staging/media/imx/imx-media-csi.c
@@ -276,10 +276,11 @@ static int csi_idmac_setup_channel(struct csi_priv *priv)
struct imx_media_video_dev *vdev = priv->vdev;
struct v4l2_of_endpoint *sensor_ep;
struct v4l2_mbus_framefmt *infmt;
- unsigned int burst_size;
struct ipu_image image;
+ u32 passthrough_bits;
dma_addr_t phys[2];
bool passthrough;
+ u32 burst_size;
int ret;
infmt = &priv->format_mbus[CSI_SINK_PAD];
@@ -306,15 +307,38 @@ static int csi_idmac_setup_channel(struct csi_priv *priv)
ipu_cpmem_set_burstsize(priv->idmac_ch, burst_size);
/*
- * If the sensor uses 16-bit parallel CSI bus, we must handle
- * the data internally in the IPU as 16-bit generic, aka
- * passthrough mode.
+ * Check for conditions that require the IPU to handle the
+ * data internally as generic data, aka passthrough mode:
+ * - raw bayer formats
+ * - the sensor bus is 16-bit parallel
*/
- passthrough = (sensor_ep->bus_type != V4L2_MBUS_CSI2 &&
- sensor_ep->bus.parallel.bus_width >= 16);
+ switch (image.pix.pixelformat) {
+ case V4L2_PIX_FMT_SBGGR8:
+ case V4L2_PIX_FMT_SGBRG8:
+ case V4L2_PIX_FMT_SGRBG8:
+ case V4L2_PIX_FMT_SRGGB8:
+ burst_size = 8;
+ passthrough = true;
+ passthrough_bits = 8;
+ break;
+ case V4L2_PIX_FMT_SBGGR16:
+ case V4L2_PIX_FMT_SGBRG16:
+ case V4L2_PIX_FMT_SGRBG16:
+ case V4L2_PIX_FMT_SRGGB16:
+ burst_size = 4;
+ passthrough = true;
+ passthrough_bits = 16;
+ break;
+ default:
+ passthrough = (sensor_ep->bus_type != V4L2_MBUS_CSI2 &&
+ sensor_ep->bus.parallel.bus_width >= 16);
+ passthrough_bits = 16;
+ break;
+ }
if (passthrough)
- ipu_cpmem_set_format_passthrough(priv->idmac_ch, 16);
+ ipu_cpmem_set_format_passthrough(priv->idmac_ch,
+ passthrough_bits);
/*
* Set the channel for the direct CSI-->memory via SMFC
@@ -725,6 +749,7 @@ static int csi_link_validate(struct v4l2_subdev *sd,
struct v4l2_subdev_format *sink_fmt)
{
struct csi_priv *priv = v4l2_get_subdevdata(sd);
+ const struct imx_media_pixfmt *incc;
struct v4l2_of_endpoint *sensor_ep;
struct imx_media_subdev *sensor;
bool is_csi2;
@@ -749,8 +774,17 @@ static int csi_link_validate(struct v4l2_subdev *sd,
priv->sensor = sensor;
sensor_ep = &priv->sensor->sensor_ep;
-
is_csi2 = (sensor_ep->bus_type == V4L2_MBUS_CSI2);
+ incc = priv->cc[CSI_SINK_PAD];
+
+ if (priv->dest != IPU_CSI_DEST_IDMAC &&
+ (incc->bayer || (!is_csi2 &&
+ sensor_ep->bus.parallel.bus_width >= 16))) {
+ v4l2_err(&priv->sd,
+ "bayer/16-bit parallel buses must go to IDMAC pad\n");
+ ret = -EINVAL;
+ goto out;
+ }
if (is_csi2) {
int vc_num = 0;
@@ -775,7 +809,7 @@ static int csi_link_validate(struct v4l2_subdev *sd,
/* select either parallel or MIPI-CSI2 as input to CSI */
ipu_set_csi_src_mux(priv->ipu, priv->csi_id, is_csi2);
-
+out:
mutex_unlock(&priv->lock);
return ret;
}
--
2.7.4
next prev parent reply other threads:[~2017-03-10 4:58 UTC|newest]
Thread overview: 175+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-03-10 4:52 [PATCH v5 00/39] i.MX Media Driver Steve Longerbeam
2017-03-10 4:52 ` [PATCH v5 01/39] [media] dt-bindings: Add bindings for video-multiplexer device Steve Longerbeam
2017-03-16 21:21 ` Rob Herring
2017-03-10 4:52 ` [PATCH v5 02/39] [media] dt-bindings: Add bindings for i.MX media driver Steve Longerbeam
2017-03-20 15:02 ` Rob Herring
2017-03-10 4:52 ` [PATCH v5 03/39] [media] dt/bindings: Add bindings for OV5640 Steve Longerbeam
2017-03-20 15:03 ` Rob Herring
2017-03-10 4:52 ` [PATCH v5 04/39] ARM: dts: imx6qdl: Add compatible, clocks, irqs to MIPI CSI-2 node Steve Longerbeam
2017-03-10 4:52 ` [PATCH v5 05/39] ARM: dts: imx6qdl: Add mipi_ipu1/2 multiplexers, mipi_csi, and their connections Steve Longerbeam
2017-03-10 4:52 ` [PATCH v5 06/39] ARM: dts: imx6qdl: add capture-subsystem device Steve Longerbeam
2017-03-10 4:52 ` [PATCH v5 07/39] ARM: dts: imx6qdl-sabrelite: remove erratum ERR006687 workaround Steve Longerbeam
2017-03-10 18:59 ` Troy Kisky
2017-03-10 19:17 ` Fabio Estevam
2017-03-10 21:57 ` Pavel Machek
2017-03-10 22:05 ` Fabio Estevam
2017-03-15 18:49 ` Steve Longerbeam
2017-03-10 4:52 ` [PATCH v5 08/39] ARM: dts: imx6-sabrelite: add OV5642 and OV5640 camera sensors Steve Longerbeam
2017-03-10 4:52 ` [PATCH v5 09/39] ARM: dts: imx6-sabresd: " Steve Longerbeam
2017-03-10 4:52 ` [PATCH v5 10/39] ARM: dts: imx6-sabreauto: create i2cmux for i2c3 Steve Longerbeam
2017-03-10 4:52 ` [PATCH v5 11/39] ARM: dts: imx6-sabreauto: add reset-gpios property for max7310_b Steve Longerbeam
2017-03-10 4:52 ` [PATCH v5 12/39] ARM: dts: imx6-sabreauto: add pinctrl for gpt input capture Steve Longerbeam
2017-03-10 4:52 ` [PATCH v5 13/39] ARM: dts: imx6-sabreauto: add the ADV7180 video decoder Steve Longerbeam
2017-03-10 4:52 ` [PATCH v5 14/39] add mux and video interface bridge entity functions Steve Longerbeam
2017-03-10 4:52 ` [PATCH v5 15/39] [media] v4l2: add a frame interval error event Steve Longerbeam
2017-03-10 12:03 ` Hans Verkuil
2017-03-10 18:37 ` Steve Longerbeam
2017-03-10 23:30 ` Pavel Machek
2017-03-10 23:42 ` Steve Longerbeam
2017-03-11 11:39 ` Hans Verkuil
2017-03-11 18:14 ` Steve Longerbeam
2017-03-11 18:51 ` Russell King - ARM Linux
2017-03-11 18:58 ` Steve Longerbeam
2017-03-11 19:00 ` Steve Longerbeam
2017-03-13 10:02 ` Hans Verkuil
2017-03-13 10:45 ` Russell King - ARM Linux
2017-03-13 10:53 ` Hans Verkuil
2017-03-13 17:06 ` Steve Longerbeam
2017-03-13 17:10 ` Hans Verkuil
2017-03-13 21:47 ` Steve Longerbeam
2017-03-14 16:21 ` Nicolas Dufresne
2017-03-14 16:43 ` Steve Longerbeam
2017-03-16 22:15 ` Sakari Ailus
2017-03-14 16:47 ` Russell King - ARM Linux
2017-03-14 16:50 ` Steve Longerbeam
2017-03-14 18:26 ` Pavel Machek
2017-03-10 4:52 ` [PATCH v5 16/39] [media] v4l2: add a new-frame before end-of-frame event Steve Longerbeam
2017-03-10 12:07 ` Hans Verkuil
2017-03-10 4:52 ` [PATCH v5 17/39] [media] v4l2-mc: add a function to inherit controls from a pipeline Steve Longerbeam
2017-03-10 11:45 ` Hans Verkuil
2017-03-10 4:52 ` [PATCH v5 18/39] [media] v4l: subdev: Add function to validate frame interval Steve Longerbeam
2017-03-11 13:41 ` Sakari Ailus
2017-03-11 20:31 ` Steve Longerbeam
2017-03-16 22:17 ` Sakari Ailus
2017-03-10 4:52 ` [PATCH v5 19/39] [media] add Omnivision OV5640 sensor driver Steve Longerbeam
2017-03-10 4:53 ` [PATCH v5 20/39] platform: add video-multiplexer subdevice driver Steve Longerbeam
2017-03-10 4:53 ` [PATCH v5 21/39] UAPI: Add media UAPI Kbuild file Steve Longerbeam
2017-03-11 13:49 ` Sakari Ailus
2017-03-11 18:20 ` Steve Longerbeam
2017-03-13 9:55 ` Hans Verkuil
2017-03-10 4:53 ` [PATCH v5 22/39] media: Add userspace header file for i.MX Steve Longerbeam
2017-03-10 11:49 ` Hans Verkuil
2017-03-10 23:32 ` Pavel Machek
2017-03-10 4:53 ` [PATCH v5 23/39] media: Add i.MX media core driver Steve Longerbeam
2017-03-10 4:53 ` [PATCH v5 24/39] media: imx: Add Capture Device Interface Steve Longerbeam
2017-03-10 4:53 ` [PATCH v5 25/39] media: imx: Add CSI subdev driver Steve Longerbeam
2017-03-10 4:53 ` [PATCH v5 26/39] media: imx: Add VDIC " Steve Longerbeam
2017-03-10 4:53 ` [PATCH v5 27/39] media: imx: Add IC subdev drivers Steve Longerbeam
2017-03-10 4:53 ` [PATCH v5 28/39] media: imx: Add MIPI CSI-2 Receiver subdev driver Steve Longerbeam
2017-03-10 4:53 ` [PATCH v5 29/39] ARM: imx_v6_v7_defconfig: Enable staging video4linux drivers Steve Longerbeam
2017-03-10 4:53 ` [PATCH v5 30/39] media: imx: add support for bayer formats Steve Longerbeam
2017-03-10 4:53 ` Steve Longerbeam [this message]
2017-03-10 4:53 ` [PATCH v5 32/39] media: imx: csi: fix crop rectangle changes in set_fmt Steve Longerbeam
2017-03-10 4:53 ` [PATCH v5 33/39] media: imx: mipi-csi2: enable setting and getting of frame rates Steve Longerbeam
2017-03-10 4:53 ` [PATCH v5 34/39] media: imx: csi: add __csi_get_fmt Steve Longerbeam
2017-03-10 4:53 ` [PATCH v5 35/39] media: imx: csi/fim: add support for frame intervals Steve Longerbeam
2017-03-10 4:53 ` [PATCH v5 36/39] media: imx: redo pixel format enumeration and negotiation Steve Longerbeam
2017-03-10 4:53 ` [PATCH v5 37/39] media: imx: csi: add frame skipping support Steve Longerbeam
2017-03-10 4:53 ` [PATCH v5 38/39] media: imx: csi: fix crop rectangle reset in sink set_fmt Steve Longerbeam
2017-03-19 15:22 ` Russell King - ARM Linux
2017-03-19 19:08 ` Steve Longerbeam
2017-03-20 11:55 ` Philipp Zabel
2017-03-20 12:08 ` Russell King - ARM Linux
2017-03-20 14:00 ` Philipp Zabel
2017-03-20 14:17 ` Russell King - ARM Linux
2017-03-20 17:16 ` Russell King - ARM Linux
2017-03-20 17:23 ` Philipp Zabel
2017-03-20 20:47 ` Russell King - ARM Linux
2017-03-21 4:03 ` Steve Longerbeam
2017-03-21 11:27 ` Russell King - ARM Linux
2017-03-21 23:56 ` Steve Longerbeam
2017-03-21 23:33 ` Steve Longerbeam
2017-03-20 17:40 ` Philipp Zabel
2017-03-20 17:59 ` Russell King - ARM Linux
2017-03-20 19:48 ` Steve Longerbeam
2017-03-10 4:53 ` [PATCH v5 39/39] media: imx: propagate sink pad formats to source pads Steve Longerbeam
2017-03-10 20:13 ` [PATCH v5 00/39] i.MX Media Driver Russell King - ARM Linux
2017-03-10 23:20 ` Steve Longerbeam
2017-03-12 17:47 ` Russell King - ARM Linux
2017-03-12 0:30 ` Steve Longerbeam
2017-03-12 19:57 ` Russell King - ARM Linux
2017-03-12 20:05 ` Steve Longerbeam
2017-03-12 20:22 ` Russell King - ARM Linux
2017-03-13 4:26 ` Steve Longerbeam
2017-03-13 8:16 ` Russell King - ARM Linux
2017-03-13 9:30 ` Russell King - ARM Linux
2017-03-13 23:39 ` Steve Longerbeam
2017-03-13 23:37 ` Steve Longerbeam
2017-03-12 17:51 ` Russell King - ARM Linux
2017-03-12 19:21 ` Steve Longerbeam
2017-03-12 19:29 ` Russell King - ARM Linux
2017-03-12 19:44 ` Steve Longerbeam
2017-03-12 20:16 ` Steve Longerbeam
2017-03-12 20:36 ` Steve Longerbeam
2017-03-12 20:39 ` Steve Longerbeam
2017-03-12 20:40 ` Russell King - ARM Linux
2017-03-12 21:09 ` Russell King - ARM Linux
2017-03-14 17:29 ` Steve Longerbeam
2017-03-18 20:02 ` Steve Longerbeam
2017-03-12 19:47 ` Russell King - ARM Linux
2017-03-12 20:00 ` Steve Longerbeam
2017-03-12 20:59 ` Mauro Carvalho Chehab
2017-03-12 21:13 ` Russell King - ARM Linux
2017-03-12 22:10 ` Mauro Carvalho Chehab
2017-03-14 17:02 ` Steve Longerbeam
2017-03-18 19:22 ` Russell King - ARM Linux
2017-03-18 19:58 ` Steve Longerbeam
2017-03-18 20:43 ` Russell King - ARM Linux
2017-03-19 0:41 ` Nicolas Dufresne
2017-03-19 0:54 ` Russell King - ARM Linux
2017-03-19 14:33 ` Nicolas Dufresne
2017-03-19 14:51 ` Russell King - ARM Linux
2017-03-19 9:55 ` Russell King - ARM Linux
2017-03-19 14:45 ` Nicolas Dufresne
2017-03-19 13:57 ` Vladimir Zapolskiy
2017-03-19 14:21 ` Russell King - ARM Linux
2017-03-19 14:22 ` Russell King - ARM Linux
2017-03-19 15:00 ` Vladimir Zapolskiy
2017-03-19 15:09 ` Russell King - ARM Linux
2017-03-19 14:47 ` Nicolas Dufresne
2017-03-19 10:38 ` Russell King - ARM Linux
2017-03-19 10:48 ` [PATCH 1/4] media: imx-media-csi: fix v4l2-compliance check Russell King
2017-03-19 22:00 ` Steve Longerbeam
2017-03-19 10:48 ` [PATCH 2/4] media: imx: allow bayer pixel formats to be looked up Russell King
2017-03-19 22:02 ` Steve Longerbeam
2017-03-19 10:49 ` [PATCH 3/4] media: imx-csi: add frame size/interval enumeration Russell King
2017-03-19 22:18 ` Steve Longerbeam
2017-03-21 23:46 ` Steve Longerbeam
2017-03-19 10:49 ` [PATCH 4/4] media: imx-media-capture: add frame sizes/interval enumeration Russell King
2017-03-19 22:21 ` Steve Longerbeam
2017-03-19 22:39 ` Russell King - ARM Linux
2017-03-20 8:55 ` Philippe De Muyter
2017-03-20 9:05 ` Russell King - ARM Linux
2017-03-20 9:23 ` Philippe De Muyter
2017-03-20 10:41 ` Russell King - ARM Linux
2017-03-19 17:54 ` [PATCH v5 00/39] i.MX Media Driver Steve Longerbeam
2017-03-19 18:04 ` Russell King - ARM Linux
2017-03-20 13:01 ` Hans Verkuil
2017-03-20 13:29 ` Russell King - ARM Linux
2017-03-20 13:57 ` Hans Verkuil
2017-03-20 14:11 ` Russell King - ARM Linux
2017-03-20 15:57 ` Hans Verkuil
2017-03-21 10:42 ` Niklas Söderlund
2017-03-21 10:59 ` Hans Verkuil
2017-03-21 11:36 ` Russell King - ARM Linux
2017-03-22 18:10 ` Nicolas Dufresne
2017-03-19 12:14 ` Russell King - ARM Linux
2017-03-19 18:37 ` Steve Longerbeam
2017-03-19 18:51 ` Russell King - ARM Linux
2017-03-19 18:56 ` Steve Longerbeam
2017-03-20 12:49 ` Hans Verkuil
2017-03-20 13:20 ` Philipp Zabel
2017-03-20 15:43 ` Russell King - ARM Linux
2017-03-20 16:29 ` Philipp Zabel
2017-03-20 16:35 ` Russell King - ARM Linux
2017-03-20 13:15 ` Philipp Zabel
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1489121599-23206-32-git-send-email-steve_longerbeam@mentor.com \
--to=slongerbeam@gmail.com \
--cc=andrew-ct.chen@mediatek.com \
--cc=arnd@arndb.de \
--cc=bparrot@ti.com \
--cc=devel@driverdev.osuosl.org \
--cc=devicetree@vger.kernel.org \
--cc=fabio.estevam@nxp.com \
--cc=geert@linux-m68k.org \
--cc=gregkh@linuxfoundation.org \
--cc=horms+renesas@verge.net.au \
--cc=hverkuil@xs4all.nl \
--cc=jean-christophe.trotin@st.com \
--cc=kernel@pengutronix.de \
--cc=laurent.pinchart+renesas@ideasonboard.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=linux@armlinux.org.uk \
--cc=mark.rutland@arm.com \
--cc=markus.heiser@darmarIT.de \
--cc=mchehab@kernel.org \
--cc=minghsiu.tsai@mediatek.com \
--cc=nick@shmanahar.org \
--cc=niklas.soderlund+renesas@ragnatech.se \
--cc=p.zabel@pengutronix.de \
--cc=pavel@ucw.cz \
--cc=rmk+kernel@armlinux.org.uk \
--cc=robert.jarzmik@free.fr \
--cc=robh+dt@kernel.org \
--cc=sakari.ailus@linux.intel.com \
--cc=shawnguo@kernel.org \
--cc=shuah@kernel.org \
--cc=songjun.wu@microchip.com \
--cc=steve_longerbeam@mentor.com \
--cc=sudipm.mukherjee@gmail.com \
--cc=tiffany.lin@mediatek.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®