| From 648d6b4515774568b4a3cca54a102a870f9632c9 Mon Sep 17 00:00:00 2001 |
| From: =?UTF-8?q?Niklas=20S=C3=B6derlund?= |
| <niklas.soderlund+renesas@ragnatech.se> |
| Date: Sat, 14 Apr 2018 07:57:20 -0400 |
| Subject: [PATCH 1306/1795] media: rcar-vin: add chsel information to rvin_info |
| MIME-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| Each Gen3 SoC has a limited set of predefined routing possibilities for |
| which CSI-2 device and channel can be routed to which VIN instance. |
| Prepare to store this information in the struct rvin_info. |
| |
| Signed-off-by: Niklas Sรถderlund <niklas.soderlund+renesas@ragnatech.se> |
| Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> |
| Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> |
| Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com> |
| (cherry picked from commit 23fd542e6305f9f3d9b651a46a07c1d3b4c8871a) |
| Signed-off-by: Simon Horman <horms+renesas@verge.net.au> |
| Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be> |
| --- |
| drivers/media/platform/rcar-vin/rcar-vin.h | 42 ++++++++++++++++++++++ |
| 1 file changed, 42 insertions(+) |
| |
| diff --git a/drivers/media/platform/rcar-vin/rcar-vin.h b/drivers/media/platform/rcar-vin/rcar-vin.h |
| index cf5c467d45e1..93eb40856b86 100644 |
| --- a/drivers/media/platform/rcar-vin/rcar-vin.h |
| +++ b/drivers/media/platform/rcar-vin/rcar-vin.h |
| @@ -43,6 +43,14 @@ enum model_id { |
| RCAR_GEN3, |
| }; |
| |
| +enum rvin_csi_id { |
| + RVIN_CSI20, |
| + RVIN_CSI21, |
| + RVIN_CSI40, |
| + RVIN_CSI41, |
| + RVIN_CSI_MAX, |
| +}; |
| + |
| /** |
| * STOPPED - No operation in progress |
| * RUNNING - Operation in progress have buffers |
| @@ -79,12 +87,45 @@ struct rvin_graph_entity { |
| unsigned int sink_pad; |
| }; |
| |
| +/** |
| + * struct rvin_group_route - describes a route from a channel of a |
| + * CSI-2 receiver to a VIN |
| + * |
| + * @csi: CSI-2 receiver ID. |
| + * @channel: Output channel of the CSI-2 receiver. |
| + * @vin: VIN ID. |
| + * @mask: Bitmask of the different CHSEL register values that |
| + * allow for a route from @csi + @chan to @vin. |
| + * |
| + * .. note:: |
| + * Each R-Car CSI-2 receiver has four output channels facing the VIN |
| + * devices, each channel can carry one CSI-2 Virtual Channel (VC). |
| + * There is no correlation between channel number and CSI-2 VC. It's |
| + * up to the CSI-2 receiver driver to configure which VC is output |
| + * on which channel, the VIN devices only care about output channels. |
| + * |
| + * There are in some cases multiple CHSEL register settings which would |
| + * allow for the same route from @csi + @channel to @vin. For example |
| + * on R-Car H3 both the CHSEL values 0 and 3 allow for a route from |
| + * CSI40/VC0 to VIN0. All possible CHSEL values for a route need to be |
| + * recorded as a bitmask in @mask, in this example bit 0 and 3 should |
| + * be set. |
| + */ |
| +struct rvin_group_route { |
| + enum rvin_csi_id csi; |
| + unsigned int channel; |
| + unsigned int vin; |
| + unsigned int mask; |
| +}; |
| + |
| /** |
| * struct rvin_info - Information about the particular VIN implementation |
| * @model: VIN model |
| * @use_mc: use media controller instead of controlling subdevice |
| * @max_width: max input width the VIN supports |
| * @max_height: max input height the VIN supports |
| + * @routes: list of possible routes from the CSI-2 recivers to |
| + * all VINs. The list mush be NULL terminated. |
| */ |
| struct rvin_info { |
| enum model_id model; |
| @@ -92,6 +133,7 @@ struct rvin_info { |
| |
| unsigned int max_width; |
| unsigned int max_height; |
| + const struct rvin_group_route *routes; |
| }; |
| |
| /** |
| -- |
| 2.19.0 |
| |