From f07e572f6447465d8938679533d604e402b0f066 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= Date: Thu, 18 Feb 2021 18:04:33 +0100 Subject: bcm27xx: import latest patches from the RPi foundation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit bcm2708: boot tested on RPi B+ v1.2 bcm2709: boot tested on RPi 3B v1.2 and RPi 4B v1.1 4G bcm2710: boot tested on RPi 3B v1.2 bcm2711: boot tested on RPi 4B v1.1 4G Signed-off-by: Álvaro Fernández Rojas --- ...743-fix-connected-active-CSI-2-lane-repor.patch | 74 ++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 target/linux/bcm27xx/patches-5.4/950-0153-media-tc358743-fix-connected-active-CSI-2-lane-repor.patch (limited to 'target/linux/bcm27xx/patches-5.4/950-0153-media-tc358743-fix-connected-active-CSI-2-lane-repor.patch') diff --git a/target/linux/bcm27xx/patches-5.4/950-0153-media-tc358743-fix-connected-active-CSI-2-lane-repor.patch b/target/linux/bcm27xx/patches-5.4/950-0153-media-tc358743-fix-connected-active-CSI-2-lane-repor.patch new file mode 100644 index 0000000000..2357c878d7 --- /dev/null +++ b/target/linux/bcm27xx/patches-5.4/950-0153-media-tc358743-fix-connected-active-CSI-2-lane-repor.patch @@ -0,0 +1,74 @@ +From d318c95f164150bee4dbd875c3d9354665738f17 Mon Sep 17 00:00:00 2001 +From: Philipp Zabel +Date: Thu, 21 Sep 2017 17:30:24 +0200 +Subject: [PATCH] media: tc358743: fix connected/active CSI-2 lane + reporting + +g_mbus_config was supposed to indicate all supported lane numbers, not +only the number of those currently in active use. Since the TC358743 +can dynamically reduce the number of active lanes if the required +bandwidth allows for it, report all lane numbers up to the connected +number of lanes as supported in pdata mode. +In device tree mode, do not report lane count and clock mode at all, as +the receiver driver can determine these from the device tree. + +To allow communicating the number of currently active lanes, add a new +bitfield to the v4l2_mbus_config flags. This is a temporary fix, to be +used only until a better solution is found. + +Signed-off-by: Philipp Zabel +--- + drivers/media/i2c/tc358743.c | 14 ++++++++++++-- + include/media/v4l2-mediabus.h | 8 ++++++++ + 2 files changed, 20 insertions(+), 2 deletions(-) + +--- a/drivers/media/i2c/tc358743.c ++++ b/drivers/media/i2c/tc358743.c +@@ -1608,11 +1608,20 @@ static int tc358743_g_mbus_config(struct + struct v4l2_mbus_config *cfg) + { + struct tc358743_state *state = to_state(sd); ++ const u32 mask = V4L2_MBUS_CSI2_LANE_MASK; ++ ++ if (state->csi_lanes_in_use > state->bus.num_data_lanes) ++ return -EINVAL; + + cfg->type = V4L2_MBUS_CSI2_DPHY; ++ cfg->flags = (state->csi_lanes_in_use << __ffs(mask)) & mask; ++ ++ /* In DT mode, only report the number of active lanes */ ++ if (sd->dev->of_node) ++ return 0; + +- /* Support for non-continuous CSI-2 clock is missing in the driver */ +- cfg->flags = V4L2_MBUS_CSI2_CONTINUOUS_CLOCK; ++ /* Support for non-continuous CSI-2 clock is missing in pdate mode */ ++ cfg->flags |= V4L2_MBUS_CSI2_CONTINUOUS_CLOCK; + + switch (state->csi_lanes_in_use) { + case 1: +@@ -2054,6 +2063,7 @@ static int tc358743_probe(struct i2c_cli + if (pdata) { + state->pdata = *pdata; + state->bus.flags = V4L2_MBUS_CSI2_CONTINUOUS_CLOCK; ++ state->bus.num_data_lanes = 4; + } else { + err = tc358743_probe_of(state); + if (err == -ENODEV) +--- a/include/media/v4l2-mediabus.h ++++ b/include/media/v4l2-mediabus.h +@@ -67,6 +67,14 @@ + V4L2_MBUS_CSI2_CHANNEL_1 | \ + V4L2_MBUS_CSI2_CHANNEL_2 | \ + V4L2_MBUS_CSI2_CHANNEL_3) ++/* ++ * Number of lanes in use, 0 == use all available lanes (default) ++ * ++ * This is a temporary fix for devices that need to reduce the number of active ++ * lanes for certain modes, until g_mbus_config() can be replaced with a better ++ * solution. ++ */ ++#define V4L2_MBUS_CSI2_LANE_MASK (0xf << 10) + + /** + * enum v4l2_mbus_type - media bus type -- cgit v1.2.3