Re: [PATCH v3 07/15] media: sun6i-csi: Add support for MIPI CSI-2 bridge input
From: Maxime Ripard
Date: Mon Dec 14 2020 - 06:36:27 EST
On Fri, Dec 11, 2020 at 04:57:00PM +0100, Paul Kocialkowski wrote:
> The A31 CSI controller supports a MIPI CSI-2 bridge input, which has
> its own dedicated port in the fwnode graph.
>
> Support for this input is added with this change:
> - two pads are defined for the media entity instead of one
> and only one needs to be connected at a time;
> - the pads currently match the fwnode graph representation;
> - links are created between our pads and the subdevs for each
> interface and are no longer immutable so that userspace can select
> which interface to use in case both are bound to a subdev;
> - fwnode endpoints are parsed and stored for each interface;
> - the active subdev (and fwnode endpoint) is retrieved when validating
> the media link at stream on time and cleared at stream off;
> - an error is raised if both links are active at the same time;
> - the MIPI interface bit is set if the MIPI CSI-2 bridge endpoint is
> active.
>
> In the future, the media entity representation might evolve to:
> - distinguish the internal parallel bridge and data formatter;
> - represent each of the 4 internal channels that can exist between
> the parallel bridge (for BT656 time-multiplex) and MIPI CSI-2
> (internal channels can be mapped to virtual channels);
> - connect the controller's output to the ISP instead of its
> DMA engine.
>
> Finally note that the MIPI CSI-2 bridges should not be linked in
> the fwnode graph unless they have a sensor subdev attached.
>
> Signed-off-by: Paul Kocialkowski <paul.kocialkowski@xxxxxxxxxxx>
> ---
> .../platform/sunxi/sun6i-csi/sun6i_csi.c | 123 ++++++++++++++----
> .../platform/sunxi/sun6i-csi/sun6i_csi.h | 3 -
> .../platform/sunxi/sun6i-csi/sun6i_video.c | 53 ++++----
> .../platform/sunxi/sun6i-csi/sun6i_video.h | 7 +-
> 4 files changed, 135 insertions(+), 51 deletions(-)
>
> diff --git a/drivers/media/platform/sunxi/sun6i-csi/sun6i_csi.c b/drivers/media/platform/sunxi/sun6i-csi/sun6i_csi.c
> index f1150de94e98..481181038e1e 100644
> --- a/drivers/media/platform/sunxi/sun6i-csi/sun6i_csi.c
> +++ b/drivers/media/platform/sunxi/sun6i-csi/sun6i_csi.c
> @@ -52,15 +52,16 @@ bool sun6i_csi_is_format_supported(struct sun6i_csi *csi,
> u32 pixformat, u32 mbus_code)
> {
> struct sun6i_csi_dev *sdev = sun6i_csi_to_dev(csi);
> + struct v4l2_fwnode_endpoint *endpoint = sdev->csi.video.source_endpoint;
>
> /*
> * Some video receivers have the ability to be compatible with
> * 8bit and 16bit bus width.
> * Identify the media bus format from device tree.
> */
> - if ((sdev->csi.v4l2_ep.bus_type == V4L2_MBUS_PARALLEL
> - || sdev->csi.v4l2_ep.bus_type == V4L2_MBUS_BT656)
> - && sdev->csi.v4l2_ep.bus.parallel.bus_width == 16) {
> + if ((endpoint->bus_type == V4L2_MBUS_PARALLEL
> + || endpoint->bus_type == V4L2_MBUS_BT656)
> + && endpoint->bus.parallel.bus_width == 16) {
The operators should be at the end of the previous line, not at the beginning
Maxime
Attachment:
signature.asc
Description: PGP signature