On Tue, Oct 27, 2020 at 10:31:19AM +0100, Paul Kocialkowski wrote: > Hi, > > On Mon 26 Oct 20, 17:00, Maxime Ripard wrote: > > On Fri, Oct 23, 2020 at 07:45:37PM +0200, Paul Kocialkowski wrote: > > > Bits related to the interface data width do not have any effect when > > > the CSI controller is taking input from the MIPI CSI-2 controller. > > > > I guess it would be clearer to mention that the data width is only > > applicable for parallel here. > > Understood, will change the wording in the next version. > > > > In prevision of adding support for this case, set these bits > > > conditionally so there is no ambiguity. > > > > > > Co-developed-by: Kévin L'hôpital > > > Signed-off-by: Kévin L'hôpital > > > Signed-off-by: Paul Kocialkowski > > > --- > > > .../platform/sunxi/sun6i-csi/sun6i_csi.c | 42 +++++++++++-------- > > > 1 file changed, 25 insertions(+), 17 deletions(-) > > > > > > diff --git a/drivers/media/platform/sunxi/sun6i-csi/sun6i_csi.c b/drivers/media/platform/sunxi/sun6i-csi/sun6i_csi.c > > > index 5d2389a5cd17..a876a05ea3c7 100644 > > > --- a/drivers/media/platform/sunxi/sun6i-csi/sun6i_csi.c > > > +++ b/drivers/media/platform/sunxi/sun6i-csi/sun6i_csi.c > > > @@ -378,8 +378,13 @@ static void sun6i_csi_setup_bus(struct sun6i_csi_dev *sdev) > > > unsigned char bus_width; > > > u32 flags; > > > u32 cfg; > > > + bool input_parallel = false; > > > bool input_interlaced = false; > > > > > > + if (endpoint->bus_type == V4L2_MBUS_PARALLEL || > > > + endpoint->bus_type == V4L2_MBUS_BT656) > > > + input_parallel = true; > > > + > > > if (csi->config.field == V4L2_FIELD_INTERLACED > > > || csi->config.field == V4L2_FIELD_INTERLACED_TB > > > || csi->config.field == V4L2_FIELD_INTERLACED_BT) > > > @@ -395,6 +400,26 @@ static void sun6i_csi_setup_bus(struct sun6i_csi_dev *sdev) > > > CSI_IF_CFG_HREF_POL_MASK | CSI_IF_CFG_FIELD_MASK | > > > CSI_IF_CFG_SRC_TYPE_MASK); > > > > > > + if (input_parallel) { > > > + switch (bus_width) { > > > + case 8: > > > + cfg |= CSI_IF_CFG_IF_DATA_WIDTH_8BIT; > > > + break; > > > + case 10: > > > + cfg |= CSI_IF_CFG_IF_DATA_WIDTH_10BIT; > > > + break; > > > + case 12: > > > + cfg |= CSI_IF_CFG_IF_DATA_WIDTH_12BIT; > > > + break; > > > + case 16: /* No need to configure DATA_WIDTH for 16bit */ > > > + break; > > > + default: > > > + dev_warn(sdev->dev, "Unsupported bus width: %u\n", > > > + bus_width); > > > + break; > > > + } > > > + } > > > + > > > if (input_interlaced) > > > cfg |= CSI_IF_CFG_SRC_TYPE_INTERLACED; > > > else > > > @@ -440,23 +465,6 @@ static void sun6i_csi_setup_bus(struct sun6i_csi_dev *sdev) > > > break; > > > } > > > > > > - switch (bus_width) { > > > - case 8: > > > - cfg |= CSI_IF_CFG_IF_DATA_WIDTH_8BIT; > > > - break; > > > - case 10: > > > - cfg |= CSI_IF_CFG_IF_DATA_WIDTH_10BIT; > > > - break; > > > - case 12: > > > - cfg |= CSI_IF_CFG_IF_DATA_WIDTH_12BIT; > > > - break; > > > - case 16: /* No need to configure DATA_WIDTH for 16bit */ > > > - break; > > > - default: > > > - dev_warn(sdev->dev, "Unsupported bus width: %u\n", bus_width); > > > - break; > > > - } > > > - > > > > Is there any reason to move it around? > > The main reason is cosmetics: input_parallel is introduced to match the already > existing input_interlaced variable, so it made sense to me to have both of these > conditionals one after the other instead of spreading them randomly. > > I can mention this in the commit log if you prefer. Yeah, that would great Maxime