Commit 23fd542e authored by Niklas Söderlund's avatar Niklas Söderlund Committed by Mauro Carvalho Chehab

media: rcar-vin: add chsel information to rvin_info

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: default avatarNiklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
Reviewed-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: default avatarHans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@s-opensource.com>
parent e806e328
...@@ -43,6 +43,14 @@ enum model_id { ...@@ -43,6 +43,14 @@ enum model_id {
RCAR_GEN3, RCAR_GEN3,
}; };
enum rvin_csi_id {
RVIN_CSI20,
RVIN_CSI21,
RVIN_CSI40,
RVIN_CSI41,
RVIN_CSI_MAX,
};
/** /**
* STOPPED - No operation in progress * STOPPED - No operation in progress
* RUNNING - Operation in progress have buffers * RUNNING - Operation in progress have buffers
...@@ -79,12 +87,45 @@ struct rvin_graph_entity { ...@@ -79,12 +87,45 @@ struct rvin_graph_entity {
unsigned int sink_pad; 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 * struct rvin_info - Information about the particular VIN implementation
* @model: VIN model * @model: VIN model
* @use_mc: use media controller instead of controlling subdevice * @use_mc: use media controller instead of controlling subdevice
* @max_width: max input width the VIN supports * @max_width: max input width the VIN supports
* @max_height: max input height 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 { struct rvin_info {
enum model_id model; enum model_id model;
...@@ -92,6 +133,7 @@ struct rvin_info { ...@@ -92,6 +133,7 @@ struct rvin_info {
unsigned int max_width; unsigned int max_width;
unsigned int max_height; unsigned int max_height;
const struct rvin_group_route *routes;
}; };
/** /**
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment