Linux-GPIO Archive mirror
 help / color / mirror / Atom feed
From: "Dayananda, Vivekananda" <vivekananda.dayananda@amd.com>
To: "Ceclan Dumitru" <mitrutzceclan@gmail.com>,
	"dumitru.ceclan@analog.com" <dumitru.ceclan@analog.com>,
	"Tomi Valkeinen" <tomi.valkeinen+renesas@ideasonboard.com>,
	"Mauro Carvalho Chehab" <mchehab@kernel.org>,
	"Sakari Ailus" <sakari.ailus@linux.intel.com>,
	"Laurent Pinchart" <laurent.pinchart@ideasonboard.com>,
	"Julien Massot" <julien.massot@collabora.com>,
	"Rob Herring" <robh@kernel.org>,
	"Niklas Söderlund" <niklas.soderlund@ragnatech.se>,
	"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
	"Cosmin Tanislav" <cosmin.tanislav@analog.com>
Cc: "linux-media@vger.kernel.org" <linux-media@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>,
	"linux-staging@lists.linux.dev" <linux-staging@lists.linux.dev>,
	"linux-gpio@vger.kernel.org" <linux-gpio@vger.kernel.org>,
	"Niklas Söderlund" <niklas.soderlund+renesas@ragnatech.se>,
	"martin.hecht@avnet.eu" <martin.hecht@avnet.eu>,
	"Tomi Valkeinen" <tomi.valkeinen@ideasonboard.com>,
	"Cosmin Tanislav" <demonsingur@gmail.com>,
	"Cory Keitz" <ckeitz@amazon.com>
Subject: RE: [PATCH v9 00/21] media: i2c: add Maxim GMSL2/3 serializer and deserializer drivers
Date: Tue, 31 Mar 2026 17:43:18 +0000	[thread overview]
Message-ID: <MW4PR12MB56682D24FB2D7B1EF2D53B78E853A@MW4PR12MB5668.namprd12.prod.outlook.com> (raw)
In-Reply-To: <86a96690-1307-4a6f-8265-1d6d30ce6d6c@gmail.com>

[Public]

There is one other patch that is required in addition, which enables the remote-control channel links from port 1 using REG3. Adding the patch below
----
From 36936732c6ecd599f1a26744bef3031e41194229 Mon Sep 17 00:00:00 2001
From: Vivekananda Dayananda <vivekana@amd.com>
Date: Tue, 31 Mar 2026 08:12:20 -0700
Subject: [PATCH] media: i2c: maxim-serdes: max96724: allow selecting CC port

Add a DT property that lets platforms choose which control-channel port the MAX96724 exposes to the upstream I2C host. Document the new property for the MAX96724 compatibles and default to port 0 so existing device trees retain their behaviour.

The driver caches the chosen port and reprograms register 0x03 after every reset, restoring control-channel access regardless of whether the deserializer was power-cycled. Boards that need to talk through port 1 can now opt in by setting "maxim,control-channel-port = <1>;" in the device tree.

Signed-off-by: Vivekananda Dayananda <vivekana@amd.com>
---
 .../bindings/media/i2c/maxim,max96712.yaml    |  8 +++
 drivers/media/i2c/maxim-serdes/max96724.c     | 59 ++++++++++++++++++-
 2 files changed, 66 insertions(+), 1 deletion(-)

diff --git a/Documentation/devicetree/bindings/media/i2c/maxim,max96712.yaml b/Documentation/devicetree/bindings/media/i2c/maxim,max96712.yaml
index efee188a100d..04429439d2f6 100644
--- a/Documentation/devicetree/bindings/media/i2c/maxim,max96712.yaml
+++ b/Documentation/devicetree/bindings/media/i2c/maxim,max96712.yaml
@@ -33,6 +33,14 @@ properties:

   enable-gpios: true

+  maxim,control-channel-port:
+    description:
+      Selects which deserializer control-channel port is connected to the
+      upstream I2C segment when the device resets. 0 selects port 0, 1 selects
+      port 1. Defaults to 0 when omitted.
+    $ref: /schemas/types.yaml#/definitions/uint32
+    enum: [0, 1]
+
   i2c-alias-pool:
     maxItems: 4

diff --git a/drivers/media/i2c/maxim-serdes/max96724.c b/drivers/media/i2c/maxim-serdes/max96724.c
index 65f2a8493a40..180815634c67 100644
--- a/drivers/media/i2c/maxim-serdes/max96724.c
+++ b/drivers/media/i2c/maxim-serdes/max96724.c
@@ -12,15 +12,37 @@
 #include <linux/iopoll.h>
 #include <linux/module.h>
 #include <linux/of_graph.h>
+#include <linux/property.h>
 #include <linux/regmap.h>

 #include "max_des.h"

 #define MAX96724_REG0                          0x0

+#define MAX96724_REG3                          0x3
+#define MAX96724_REG3_CC_PORT_SEL(n)           GENMASK((n) * 2 + 1, (n) * 2)
+#define MAX96724_REG3_CC_PORT_SEL_MASK         (MAX96724_REG3_CC_PORT_SEL(0) | \
+                                                MAX96724_REG3_CC_PORT_SEL(1) | \
+                                                MAX96724_REG3_CC_PORT_SEL(2) | \
+                                                MAX96724_REG3_CC_PORT_SEL(3))
+#define MAX96724_REG3_CC_PORT_SEL_PORT0                0x2
+#define MAX96724_REG3_CC_PORT_SEL_PORT1                0x1
+#define MAX96724_REG3_CC_PORT_CFG(sel) \
+       (FIELD_PREP(MAX96724_REG3_CC_PORT_SEL(0), (sel)) | \
+        FIELD_PREP(MAX96724_REG3_CC_PORT_SEL(1), (sel)) | \
+        FIELD_PREP(MAX96724_REG3_CC_PORT_SEL(2), (sel)) | \
+        FIELD_PREP(MAX96724_REG3_CC_PORT_SEL(3), (sel)))
+#define MAX96724_REG3_CC_PORT_CFG_PORT0 \
+       MAX96724_REG3_CC_PORT_CFG(MAX96724_REG3_CC_PORT_SEL_PORT0)
+#define MAX96724_REG3_CC_PORT_CFG_PORT1 \
+       MAX96724_REG3_CC_PORT_CFG(MAX96724_REG3_CC_PORT_SEL_PORT1)
+
 #define MAX96724_REG6                          0x6
 #define MAX96724_REG6_LINK_EN                  GENMASK(3, 0)

+#define MAX96724_REG7                          0x7
+#define MAX96724_REG7_CC_CROSSOVER_SEL         GENMASK(7, 4)
+
 #define MAX96724_DEBUG_EXTRA                   0x9
 #define MAX96724_DEBUG_EXTRA_PCLK_SRC          GENMASK(1, 0)
 #define MAX96724_DEBUG_EXTRA_PCLK_SRC_25MHZ    0b00
@@ -223,6 +245,7 @@ struct max96724_priv {
        struct regmap *regmap;

        struct gpio_desc *gpiod_enable;
+       unsigned int cc_port_cfg;
 };

 struct max96724_chip_info {
@@ -274,7 +297,14 @@ static int max96724_reset(struct max96724_priv *priv)

        fsleep(10000);

-       return max96724_wait_for_device(priv);
+       ret = max96724_wait_for_device(priv);
+       if (ret)
+               return ret;
+
+       /* Restore I2C control-channel access after a reset. */
+       return regmap_update_bits(priv->regmap, MAX96724_REG3,
+                                 MAX96724_REG3_CC_PORT_SEL_MASK,
+                                 priv->cc_port_cfg);
 }

 static int __maybe_unused max96724_reg_read(struct max_des *des, unsigned int reg,
@@ -461,6 +491,12 @@ static int max96724_init(struct max_des *des)
                        return ret;
        }

+       /* Enable I2C control ports crossover. */
+       ret = regmap_set_bits(priv->regmap, MAX96724_REG7,
+                             MAX96724_REG7_CC_CROSSOVER_SEL);
+       if (ret)
+               return ret;
+
        /* Set PHY mode. */
        ret = regmap_update_bits(priv->regmap, MAX96724_MIPI_PHY0,
                                 MAX96724_MIPI_PHY0_PHY_CONFIG,
@@ -1096,6 +1132,7 @@ static int max96724_probe(struct i2c_client *client)
        struct max96724_priv *priv;
        struct max_des_info *info;
        struct max_des_ops *ops;
+       u32 cc_port;
        int ret;

        priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL);
@@ -1139,6 +1176,26 @@ static int max96724_probe(struct i2c_client *client)
                usleep_range(4000, 5000);
        }

+       priv->cc_port_cfg = MAX96724_REG3_CC_PORT_CFG_PORT0;
+
+       ret = device_property_read_u32(dev, "maxim,control-channel-port",
+                                      &cc_port);
+       if (!ret) {
+               switch (cc_port) {
+               case 0:
+                       priv->cc_port_cfg = MAX96724_REG3_CC_PORT_CFG_PORT0;
+                       break;
+               case 1:
+                       priv->cc_port_cfg = MAX96724_REG3_CC_PORT_CFG_PORT1;
+                       break;
+               default:
+                       dev_err(dev, "Invalid control-channel port %u\n", cc_port);
+                       return -EINVAL;
+               }
+       } else if (ret != -ENODATA && ret != -ENOENT && ret != -EINVAL) {
+               return ret;
+       }
+
        *info = max96724_des_info;
        info->versions = priv->info->versions;
        info->modes = priv->info->modes;
--
2.34.1

> -----Original Message-----
> From: Ceclan Dumitru <mitrutzceclan@gmail.com>
> Sent: Monday, March 30, 2026 12:55 AM
> To: Dayananda, Vivekananda <vivekananda.dayananda@amd.com>;
> dumitru.ceclan@analog.com; Tomi Valkeinen
> <tomi.valkeinen+renesas@ideasonboard.com>; Mauro Carvalho Chehab
> <mchehab@kernel.org>; Sakari Ailus <sakari.ailus@linux.intel.com>; Laurent
> Pinchart <laurent.pinchart@ideasonboard.com>; Julien Massot
> <julien.massot@collabora.com>; Rob Herring <robh@kernel.org>; Niklas
> Söderlund <niklas.soderlund@ragnatech.se>; Greg Kroah-Hartman
> <gregkh@linuxfoundation.org>; Cosmin Tanislav <cosmin.tanislav@analog.com>
> Cc: linux-media@vger.kernel.org; linux-kernel@vger.kernel.org;
> devicetree@vger.kernel.org; linux-staging@lists.linux.dev; linux-
> gpio@vger.kernel.org; Niklas Söderlund
> <niklas.soderlund+renesas@ragnatech.se>; martin.hecht@avnet.eu; Tomi
> Valkeinen <tomi.valkeinen@ideasonboard.com>; Cosmin Tanislav
> <demonsingur@gmail.com>; Cory Keitz <ckeitz@amazon.com>
> Subject: Re: [PATCH v9 00/21] media: i2c: add Maxim GMSL2/3 serializer and
> deserializer drivers
>
>
>
> On 3/26/26 7:00 PM, Dayananda, Vivekananda wrote:
> > [AMD Official Use Only - AMD Internal Distribution Only]
> >
> > Hi Dumitru, Sakari,
> >
> > Thank you for the latest patch series. We have been validating this on
> > the following test infrastructure:
> >
> > - IMX219 image sensor
> > - MAX96724 deserializer
> > - MAX96717 serializer
> >
> > With this setup the v9 drivers operate as expected and we are able to
> > exercise streaming end-to-end.
> >
> > One item worth noting: our deserializer sits on a custom daughter card
> > where the I2C bus is routed through port 1. The current MAX96724
> > driver only supports I2C on port 0. It would be valuable to extend the
> > driver to support additional I2C port configurations so that setups
> > like ours can be accommodated.
> >
> > Vivek
>
> Hi Vivek,
>
> I have found the EZ thread where the I2C port1 issue was raised and resolved.
> Would the inclusion of those 2 commits from Cosmin suffice or were there more
> changes required for your setup to work?
>
>
> >> -----Original Message-----
> >> From: Dumitru Ceclan via B4 Relay
> >> <devnull+dumitru.ceclan.analog.com@kernel.org>
> >> Sent: Wednesday, March 11, 2026 12:17 AM
> >> To: Tomi Valkeinen <tomi.valkeinen+renesas@ideasonboard.com>; Mauro
> >> Carvalho Chehab <mchehab@kernel.org>; Sakari Ailus
> >> <sakari.ailus@linux.intel.com>; Laurent Pinchart
> >> <laurent.pinchart@ideasonboard.com>; Julien Massot
> >> <julien.massot@collabora.com>; Rob Herring <robh@kernel.org>; Niklas
> >> Söderlund <niklas.soderlund@ragnatech.se>; Greg Kroah-Hartman
> >> <gregkh@linuxfoundation.org>; Cosmin Tanislav
> >> <cosmin.tanislav@analog.com>
> >> Cc: mitrutzceclan@gmail.com; linux-media@vger.kernel.org; linux-
> >> kernel@vger.kernel.org; devicetree@vger.kernel.org; linux-
> >> staging@lists.linux.dev; linux-gpio@vger.kernel.org; Niklas Söderlund
> >> <niklas.soderlund+renesas@ragnatech.se>; Martin Hecht
> >> <Martin.Hecht@avnet.eu>; Tomi Valkeinen
> >> <tomi.valkeinen@ideasonboard.com>; Cosmin Tanislav
> >> <demonsingur@gmail.com>; Cory Keitz <ckeitz@amazon.com>
> >> Subject: [PATCH v9 00/21] media: i2c: add Maxim GMSL2/3 serializer
> >> and deserializer drivers
> >>
> >> This series adds new drivers for multiple Maxim GMSL2 and GMSL3
> >> devices, replacing the few GMSL2 drivers already in upstream, and
> >> introducing a common framework that can be used to implement such
> >> GMSL chips, which avoids code duplication while also adding support for
> previously unsupported features.
> >>
> >> While the normally acceptable and polite way would be to extend the
> >> current mainline drivers, the choice was made here to add a totally new set of
> drivers.
> >> The current drivers support only a small subset of the possible
> >> features, and only a few devices, so the end result after extending
> >> them would in any case be essentially fully rewritten, new drivers.
> >>
> >> This series depends on support for internal pads, for which a patch
> >> has been added.
> >>
> >> The previous version is at:
> >> https://lore.kernel.org/all/20250718152500.2656391-1-
> >> demonsingur@gmail.com/
> >>
> >> Since the previous series, Cosmin has left Analog Devices.
> >> Because included changes from previous version are trivial, his
> >> sign-off and tags were retained.
> >>
> >> The following deserializers are supported:
> >> * MAX96712 (already exists in staging)
> >> * MAX96714 (already exists)
> >> * MAX96714F (already exists)
> >> * MAX96714R (GMSL2)
> >> * MAX96716 (GMSL2)
> >> * MAX96724 (already exists as part of existing MAX96712 driver)
> >> * MAX96724F (GMSL2)
> >> * MAX96724R (GMSL2)
> >> * MAX9296A (GMSL2)
> >> * MAX96792A (GMSL3)
> >>
> >> The following serializers are supported:
> >> * MAX96717 (already exists)
> >> * MAX9295A (GMSL2)
> >> * MAX96793 (GMSL3)
> >>
> >> The following list enumerates new features that are supported by the
> >> common framework and their respective chip-specific drivers:
> >> * Full Streams API support. Most deserializers have support for more
> >> than one link, and more than one PHY. Streams support allows
> >> configuration of routing between these links and PHYs.
> >>
> >> * .get_frame_desc() support. Both the serializers and deserializers
> >> implement this to query and provide frame descriptor data. This is
> >> used in features explained in- depth below.
> >>
> >> * .get_mbus_config() support. The deserializers implement this to
> >> allow upstream devices to query the link frequency of its pads.
> >>
> >> * Address translation with I2C ATR for the serializers.
> >>
> >> * I2C ATR translation - some deserializers cannot do muxing since I2C
> >> communication channel masking is not available per-link, and the only
> >> other way to select links is to turn them off, causing link resets.
> >> For such cases, I2C ATR is used to change the address of the
> >> serializers at probe time.
> >>
> >> * Automatic GMSL link version negotiation between GMSL3, GMSL2 6Gbps,
> >> GMSL2 3Gbps.
> >>
> >> * Automatic stream id selection for deserializers which need
> >> serializers to stream on unique stream ids.
> >>
> >> * Automatic VC remapping on the deserializers. VCs are picked so that
> >> if they were unique on the sink pad, they will end up as unique on
> >> the source pad they are routed to too, prioritizing using the same VC
> >> ID as the sink pad, to facilitate the possibility of using tunnel mode.
> >>
> >> * Automatic pixel mode / tunnel mode selection. Tunnel mode is used
> >> when VC IDs do not need to be changed and all hardware supports
> >> tunnel mode, otherwise, pixel mode is used. The serializers are
> >> automatically switched between the two by using a private API.
> >>
> >> * Automatic double mode selection. In pixel mode, double mode can be
> >> used to pack two pixels into a single data unit, optimizing bandwidth
> >> usage. The serializers are automatically set up to support the double
> >> modes determined by the deserializers using a private API.
> >>
> >> * Automatic data padding. In pixel mode, if the data being
> >> transferred uses two different BPPs, data needs to be padded. The
> >> serializers automatically set this up depending on the configured double mode
> settings and incoming data types.
> >>
> >> * Logging. Both the deserializers and serializers implement the V4L2
> >> .log_status() ops to allow debugging of the internal state and
> >> important chip status registers.
> >>
> >> * PHY modes. Deserializer chips commonly have more than a single PHY.
> >> The firmware ports are parsed to determine the modes in which to
> >> configure the PHYs (2x4, 4x2, 1x4+2x2, 2x2+1x4, and variations using fewer
> lanes).
> >>
> >> * Serializer pinctrl. Serializers implement pinctrl to allow setting
> >> configs which would otherwise be inaccessible through GPIO: TX/RX via
> >> GMSL link, pull-up & pull-down (with strength), open-drain & push-pull, slew
> rate, RCLK pin selection.
> >>
> >> * TPG with selectable formats, resolutions and framerates for both
> >> serializers and deserializers.
> >>
> >> The drivers have been tested on the following hardware combinations,
> >> but further testing is welcome to ensure no / minimal breakage:
> >> * Raspberry Pi 5 + MAX9296A + 2xMAX96717 + 2xIMX219
> >> * Raspberry Pi 5 + MAX96714 + 1xMAX96717 + 1xIMX219
> >> * Raspberry Pi 5 + MAX96716A + 2xMAX96717 + 2xIMX219
> >> * Raspberry Pi 5 + MAX96712 + 4xMAX96717 + 4xIMX219
> >> * Raspberry Pi 5 + MAX96724 + 4xMAX96717 + 4xIMX219
> >> * Raspberry Pi 5 + MAX96792A + 1xMAX96793 + 1xMAX96717 + 2xIMX219
> >> * Raspberry Pi 5 + MAX96792A + 2xMAX96717 + 2xIMX219
> >> * Renesas V4H + MAX96712 + 2xMAX96717 + 2xIMX219
> >>
> >> Analog Devices is taking responsibility for the maintenance of these
> >> drivers and common framework, and plans to add support for new
> >> broad-market chips on top of them.
> >>
> >> Special thanks go to Tomi Valkeinen <
> >> tomi.valkeinen+renesas@ideasonboard.com>
> >> for testing the drivers, helping debug and coming up with ideas /
> >> implementations for various features.
> >>
> >> The following v4l2-compliance test still fails:
> >>                 fail: v4l2-test-subdevs.cpp(371): fmt.code == 0 || fmt.code == ~0U
> >>                 fail: v4l2-test-subdevs.cpp(418): checkMBusFrameFmt(node,
> fmt.format)
> >>         test Active VIDIOC_SUBDEV_G/S_FMT: FAIL
> >>
> >> As the serializers and deserializers are format agnostic and the
> >> values set are not used to configure anything in the chips, this test
> >> does not make much sense in this context. If needed, a check for the specific
> ~0U value can be added.
> >>
> >> V9:
> >> * split max_des_ops into *_info and *_ops
> >> * use read_poll_timeout macro in *_wait_for_device()
> >> * return read_poll_timeout error -ETIMEDOUT in *_wait_for_device()
> >> * remove use_atr duplicate from max9296a_chip_info, present in
> >> max_des_info
> >> * fix max9296a DPLL register offset
> >> * fix C-PHY DPLL frequency in max9296a and max96724
> >>     reported by: Cory Keitz <ckeitz@amazon.com>
> >> * use MAX9296A_COMMON_INFO and MAX9296A_COMMON_OPS to
> simplify
> >>   probe ops init
> >> * fix borked patches in previous version, actually remove MAX96717 and
> >>   MAX96714 drivers
> >>
> >> V8:
> >> * max96717: use the renamed PIN_CONFIG_OUTPUT to _LEVEL
> >> * max96717: use the renamed set_rv ops from struct gpio_chip
> >> * dt-bindings: set minItems lane-polarities to 2
> >> * dt-bindings: "add myself as maintainer" commits were removed
> >> * max_des & max_ser: use a default format for set_routing
> >> * max_des & max_ser: return ENNOTTY in *_frame_interval for non-TPG
> >> pads
> >>
> >> V7:
> >> * dt-bindings: max9296a: use full max96717 compatible
> >> * max9296a: make max96714_rlms_reg_sequence static
> >> * explicitly include linux/bitfield.h
> >> * explicitly depend on I2C and PINCTRL
> >> * sort media_entity_operations
> >> * add has_pad_interdep to media_entity_operations
> >>
> >> V6:
> >> * max9296a: put rlms sequence in max9296a_chip_info
> >> * max_des: reflow stream id a comment
> >> * max_ser: remove exported symbols not used in other modules
> >> * max_ser: init mode to a supported value
> >> * add default routing
> >> * MAX_SERDES_GMSL_3 -> MAX_SERDES_GMSL_3_12GBPS
> >> * guard reg_read/write with CONFIG_VIDEO_ADV_DEBUG
> >> * put exported symbols in MAXIM_SERDES namespace
> >>
> >> V5:
> >> * dt-bindings: max96717: restrict RCLKOUT to pins 2 & 4
> >> * dt-bindings: max96717: remove confusing rclksel pinconf property
> >> * dt-bindings: max96717: remove maxim,gmsl-tx/rx pinconf property
> >> * dt-bindings: max96717: remove gmsl prefix from
> >> maxim,gmsl-tx-id/rx-id
> >> * dt-bindings: max96717: remove minimum: 0
> >> * dt-bindings: max96717: better document slew-rate
> >> * dt-bindings: max96717: better document maxim,jitter-compensation
> >> * dt-bindings: max96717: better document maxim,tx-id/rx-id
> >>
> >> * max_serdes: add default TPG values
> >> * max_serdes: remove MAX_MIPI_FMT macro
> >> * max_serdes: EXPORT_SYMBOL -> EXPORT_SYMBOL_GPL
> >> * max_serdes: remove EXPORT_SYMBOL_GPL from symbols not used in other
> >> modules
> >> * max_serdes: rename symbols/macros/types to have max_serdes prefix
> >> * max_serdes: slim down TPG functions
> >>
> >> * max_des: fix may be used uninitialized errors
> >> * max_des: fix misplaced TPG validation
> >> * max_des: fix setting pipe PHY in tunnel mode for chips that support
> >> both
> >> set_pipe_phy() and set_pipe_tunnel_phy()
> >> * max_des: move doubled_bpp/sink_bpps variables to usage place
> >> * max_des: do not dynamically control PHY enable, letting lanes be in
> >> LP-11 when not streaming
> >> * max_des: refactor get/set_pipe_stream_id() logic
> >> * max_des: remove explicit ret = 0
> >>
> >> * max_ser: make VC remaps not pipe-specific, allocate dynamically
> >>
> >> * max9296a: add missing 1080p30 TPG entry
> >> * max9296a: move BIT() left shift into macro
> >> * max9296a: move BIT() ternary into macro
> >> * max9296a: reuse max_des_ops for chip-specific ops\
> >> * max9296a: document and compress RLMS register writes
> >>
> >> * max96717: restrict RCLKOUT to pins 2 & 4 because of hardware
> >> capabilities
> >> * max96717: add support for XTAL/1, XTAL/2, XTAL/4 clocks
> >> * max96717: set RX_EN/TX_EN automatically
> >> * max96717: reorder custom pinconf flags
> >> * max96717: drop OF dependency
> >>
> >> * drop of_match_ptr
> >> * re-do some indentation
> >> * implement TPG pattern control
> >> * remove pr_info() usage
> >> * inline lane polarity val = 0
> >> * inline returns
> >> * rewrite some Kconfig docs
> >> * split up patches for easier review
> >>
> >> V4:
> >> * max_des: fix infinite version loop
> >> * max_des: fix pipe link id when there are more pipes than links
> >> * max_des: implement setting pipe link
> >> * max_des: do not pass routing to phy update
> >> * max_des: move GMSL version strings to max_serdes
> >> * max_des: split finding existing VC remap from adding a new one
> >> * max_des: add tracking for in-use pipes
> >> * max_des: skip unused pipes when finding / setting pixel/tunnel mode
> >> * max_des: simplify remap code
> >> * max_des: split set_pipe_phy() into set_pipe_tunnel_phy()
> >>
> >> * max_ser: clean up i2c_xlates printing
> >> * max_ser: fix changing serializer address
> >> * max_ser: move non-continuous mode check into max96717 driver
> >>
> >> * max96724: use regmap_set_bits for STREAM_SEL_ALL
> >> * max96724: match surrounding indent for MAX96724_PHY1_ALT_CLOCK
> >> * max96724: fix setting invalid PHY to 1 when PHY 0 is in 4-lane mode
> >> * max96724: remove support for setting pipe phy from max96712
> >> * max96724: fix setting double mode on pipes 4-7
> >> * max96724: drop powerdown gpios
> >>
> >> * max96717: use gpio_chip's set_rv
> >>
> >> * max9296a: switch versions to unsigned int
> >> * max9296a: remove parantheses from MAX9296A_MIPI_PHY18/20
> >> * max9296a: fix printing of PHY packet counts
> >> * max9296a: fix phy_hw_ids size
> >>
> >> * remove usage of cammel case in defines
> >> * move field_get/prep to max_serdes.h
> >> * rework stream id setup
> >> * rework tunnel/pixel mode finding
> >> * rework bpps retrieval
> >> * pass whole subdev state around
> >> * add helper for retrieving a route's hw components / frame desc
> >> * update pipe enable based on active routes
> >> * add support for tunnel-only chips and VC remaps in tunnel mode
> >> * simplify max_get_streams_masks()
> >> * add support for TPG
> >>
> >> V3:
> >> * dt-bindings: drop reflow text patches
> >>
> >> * dt-bindings: max96717: move pinctrl configuration into main file
> >> * dt-bindings: max96717: allow a single level of pins configuration
> >> * dt-bindings: max96717: use regex for matching pins nodes
> >> * dt-bindings: max96717: drop extra allOf in pinctrl configuration
> >> * dt-bindings: max96717: fix i2c-atr channel name regex
> >> * dt-bindings: max96717: limit pinctrl functions to gpio / rclkout
> >> * dt-bindings: max96717: limit pins for gpio / rclkout
> >> * dt-bindings: max96717: add description for bias-pull-up/down
> >> * dt-bindings: max96717: require pins and function properties
> >> * dt-bindings: max96717: turn single compatible strings into an enum
> >>
> >> * dt-bindings: max9296a: include indices in port descriptions
> >> * dt-bindings: max9296a: remove property-less schema from input ports
> >> * dt-bindings: max9296a: use ATR for MAX96716A too, removing MUX
> >> entirely
> >>
> >> * dt-bindings: max96712: include indices in port descriptions
> >> * dt-bindings: max96712: deprecate enable-gpios in favor of
> >> powerdown-gpios
> >> * dt-bindings: max96712: switch from MUX to ATR
> >>
> >> * dt-bindings: max96714: add support for MAX96714R
> >>
> >> * max_des: fix POC NULL check
> >> * max_des: remove index var in POC enable
> >> * max_des: fix writing empty remaps
> >> * max_des: skip mode setting in tunnel mode
> >> * max_des: remove a duplicate source->sd NULL check
> >> * max_des: set pipe tunnel mode even for disabled links
> >>
> >> * max_ser: apply TX ID changes irrespective of serializer ID
> >>
> >> * max9296a: fix typo in BACKTOP22
> >> * max9296a: make register macros more consistent
> >> * max9296a: switch MAX96716 from MUX to ATR
> >> * max9296a: deduplicate max9296a_phy_id() logic
> >> * max9296a: use proper PHY id in remaps
> >> * max9296a: fix DPLL reset clear
> >> * max9296a: limit MAX96714F to GMSL2 3Gbps
> >> * max9296a: add support for MAX96714R
> >> * max9296a: do not write GMSL3 link select registers in GMSL2 devices
> >> * max9296a: use field_prep when setting RX_RATE
> >> * max9296a: simplify setting SEL_STREAM for MAX96714
> >> * max9296a: max96716_set_pipe_phy -> max96716a_set_pipe_phy
> >> * max9296a: fix off-by-one in lane polarity when using
> >> polarity_on_physical_lanes
> >>
> >> * max96724: fix typo in BACKTOP22
> >> * max96724: switch from MUX to ATR
> >> * max96724: add support for powerdown GPIO
> >> * max96724: remove support for tunneling from MAX96712
> >> * max96724: only set tunnel-related bits when in tunnel mode
> >> * max96724: add support for MAX96724F/R
> >> * max96724: oneshot reset links after link selection
> >>
> >> * remove GMSL2 version defaults, set all supported versions
> >> explicitly
> >> * reorder GMSL versions to start from 0
> >> * add support for GMSL2 3Gbps
> >> * support GMSL version finding for devices using MUX / GATE
> >> * add support for deserializers which don't have individual control
> >> of each link's GMSL version
> >> * add support for deserializers that need unique stream ids across
> >> all serializers
> >> * select_link_version -> set_link_version
> >> * select_resets_link -> use_atr
> >>
> >> V2:
> >> * add missing compatible for MAX96717F
> >> * fix embarrassing dt-bindings mistakes
> >> * move MAX9296A/MAX96716/MAX96792A to a separate file as they have
> >> two links / PHYs, and adding those conditionally seems impossible
> >> ---
> >> Cosmin Tanislav (20):
> >>       dt-bindings: media: i2c: max96717: add support for I2C ATR
> >>       dt-bindings: media: i2c: max96717: add support for pinctrl/pinconf
> >>       dt-bindings: media: i2c: max96717: add support for MAX9295A
> >>       dt-bindings: media: i2c: max96717: add support for MAX96793
> >>       dt-bindings: media: i2c: max96712: use pattern properties for ports
> >>       dt-bindings: media: i2c: max96712: add support for I2C ATR
> >>       dt-bindings: media: i2c: max96712: add support for POC supplies
> >>       dt-bindings: media: i2c: max96712: add support for MAX96724F/R
> >>       dt-bindings: media: i2c: max96714: add support for MAX96714R
> >>       dt-bindings: media: i2c: add MAX9296A, MAX96716A, MAX96792A
> >>       media: i2c: add Maxim GMSL2/3 serializer and deserializer framework
> >>       media: i2c: add Maxim GMSL2/3 serializer framework
> >>       media: i2c: add Maxim GMSL2/3 deserializer framework
> >>       media: i2c: maxim-serdes: add MAX96717 driver
> >>       media: i2c: maxim-serdes: add MAX96724 driver
> >>       media: i2c: maxim-serdes: add MAX9296A driver
> >>       arm64: defconfig: disable deprecated MAX96712 driver
> >>       staging: media: remove MAX96712 driver
> >>       media: i2c: remove MAX96717 driver
> >>       media: i2c: remove MAX96714 driver
> >>
> >> Sakari Ailus (1):
> >>       media: mc: Add INTERNAL pad flag
> >>
> >>  .../bindings/media/i2c/maxim,max9296a.yaml         |  242 ++
> >>  .../bindings/media/i2c/maxim,max96712.yaml         |   65 +-
> >>  .../bindings/media/i2c/maxim,max96714.yaml         |    5 +-
> >>  .../bindings/media/i2c/maxim,max96717.yaml         |  154 +-
> >>  .../userspace-api/media/mediactl/media-types.rst   |    9 +
> >>  MAINTAINERS                                        |   10 +-
> >>  arch/arm64/configs/defconfig                       |    1 -
> >>  drivers/media/i2c/Kconfig                          |   34 +-
> >>  drivers/media/i2c/Makefile                         |    3 +-
> >>  drivers/media/i2c/max96714.c                       | 1017 -------
> >>  drivers/media/i2c/max96717.c                       | 1102 -------
> >>  drivers/media/i2c/maxim-serdes/Kconfig             |   60 +
> >>  drivers/media/i2c/maxim-serdes/Makefile            |    6 +
> >>  drivers/media/i2c/maxim-serdes/max9296a.c          | 1358 +++++++++
> >>  drivers/media/i2c/maxim-serdes/max96717.c          | 1686 +++++++++++
> >>  drivers/media/i2c/maxim-serdes/max96724.c          | 1193 ++++++++
> >>  drivers/media/i2c/maxim-serdes/max_des.c           | 3188
> >> ++++++++++++++++++++
> >>  drivers/media/i2c/maxim-serdes/max_des.h           |  156 +
> >>  drivers/media/i2c/maxim-serdes/max_ser.c           | 2138 +++++++++++++
> >>  drivers/media/i2c/maxim-serdes/max_ser.h           |  147 +
> >>  drivers/media/i2c/maxim-serdes/max_serdes.c        |  413 +++
> >>  drivers/media/i2c/maxim-serdes/max_serdes.h        |  183 ++
> >>  drivers/media/mc/mc-entity.c                       |   15 +-
> >>  drivers/staging/media/Kconfig                      |    2 -
> >>  drivers/staging/media/Makefile                     |    1 -
> >>  drivers/staging/media/max96712/Kconfig             |   14 -
> >>  drivers/staging/media/max96712/Makefile            |    2 -
> >>  drivers/staging/media/max96712/max96712.c          |  487 ---
> >>  include/uapi/linux/media.h                         |    1 +
> >>  29 files changed, 11006 insertions(+), 2686 deletions(-)
> >> ---
> >> base-commit: a15a902a91b78f1544760fb52ef0151f83815f81
> >> change-id: 20251107-gmsl2-3_serdes-3f2b885209c3
> >>
> >> Best regards,

  reply	other threads:[~2026-03-31 17:43 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-03-11  7:17 [PATCH v9 00/21] media: i2c: add Maxim GMSL2/3 serializer and deserializer drivers Dumitru Ceclan via B4 Relay
2026-03-11  7:17 ` [PATCH v9 01/21] media: mc: Add INTERNAL pad flag Dumitru Ceclan via B4 Relay
2026-03-11  7:17 ` [PATCH v9 02/21] dt-bindings: media: i2c: max96717: add support for I2C ATR Dumitru Ceclan via B4 Relay
2026-03-11  7:17 ` [PATCH v9 03/21] dt-bindings: media: i2c: max96717: add support for pinctrl/pinconf Dumitru Ceclan via B4 Relay
2026-03-11  7:17 ` [PATCH v9 04/21] dt-bindings: media: i2c: max96717: add support for MAX9295A Dumitru Ceclan via B4 Relay
2026-03-11  7:17 ` [PATCH v9 05/21] dt-bindings: media: i2c: max96717: add support for MAX96793 Dumitru Ceclan via B4 Relay
2026-03-11  7:17 ` [PATCH v9 06/21] dt-bindings: media: i2c: max96712: use pattern properties for ports Dumitru Ceclan via B4 Relay
2026-03-11  7:17 ` [PATCH v9 07/21] dt-bindings: media: i2c: max96712: add support for I2C ATR Dumitru Ceclan via B4 Relay
2026-03-11  7:17 ` [PATCH v9 08/21] dt-bindings: media: i2c: max96712: add support for POC supplies Dumitru Ceclan via B4 Relay
2026-03-11  7:17 ` [PATCH v9 09/21] dt-bindings: media: i2c: max96712: add support for MAX96724F/R Dumitru Ceclan via B4 Relay
2026-03-11  7:17 ` [PATCH v9 10/21] dt-bindings: media: i2c: max96714: add support for MAX96714R Dumitru Ceclan via B4 Relay
2026-03-11  7:17 ` [PATCH v9 11/21] dt-bindings: media: i2c: add MAX9296A, MAX96716A, MAX96792A Dumitru Ceclan via B4 Relay
2026-03-11  7:17 ` [PATCH v9 12/21] media: i2c: add Maxim GMSL2/3 serializer and deserializer framework Dumitru Ceclan via B4 Relay
2026-03-11  7:17 ` [PATCH v9 13/21] media: i2c: add Maxim GMSL2/3 serializer framework Dumitru Ceclan via B4 Relay
2026-03-11  7:17 ` [PATCH v9 14/21] media: i2c: add Maxim GMSL2/3 deserializer framework Dumitru Ceclan via B4 Relay
2026-03-11  7:17 ` [PATCH v9 15/21] media: i2c: maxim-serdes: add MAX96717 driver Dumitru Ceclan via B4 Relay
2026-03-11  7:17 ` [PATCH v9 16/21] media: i2c: maxim-serdes: add MAX96724 driver Dumitru Ceclan via B4 Relay
2026-03-11  7:17 ` [PATCH v9 17/21] media: i2c: maxim-serdes: add MAX9296A driver Dumitru Ceclan via B4 Relay
2026-03-11  7:17 ` [PATCH v9 18/21] arm64: defconfig: disable deprecated MAX96712 driver Dumitru Ceclan via B4 Relay
2026-03-11  7:17 ` [PATCH v9 19/21] staging: media: remove " Dumitru Ceclan via B4 Relay
2026-03-11  7:17 ` [PATCH v9 20/21] media: i2c: remove MAX96717 driver Dumitru Ceclan via B4 Relay
2026-03-13 13:56   ` Julien Massot
2026-03-11  7:17 ` [PATCH v9 21/21] media: i2c: remove MAX96714 driver Dumitru Ceclan via B4 Relay
2026-03-13 13:58   ` Julien Massot
2026-03-11  7:58 ` [PATCH v9 00/21] media: i2c: add Maxim GMSL2/3 serializer and deserializer drivers Sakari Ailus
2026-03-13  8:32   ` Martin Hecht
2026-03-30  7:15   ` Ceclan Dumitru
2026-04-01  6:47     ` Tomi Valkeinen
2026-04-01  7:46       ` Tomi Valkeinen
2026-03-26 17:00 ` Dayananda, Vivekananda
2026-03-30  7:54   ` Ceclan Dumitru
2026-03-31 17:43     ` Dayananda, Vivekananda [this message]
2026-04-01  5:52       ` Ceclan Dumitru

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=MW4PR12MB56682D24FB2D7B1EF2D53B78E853A@MW4PR12MB5668.namprd12.prod.outlook.com \
    --to=vivekananda.dayananda@amd.com \
    --cc=ckeitz@amazon.com \
    --cc=cosmin.tanislav@analog.com \
    --cc=demonsingur@gmail.com \
    --cc=devicetree@vger.kernel.org \
    --cc=dumitru.ceclan@analog.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=julien.massot@collabora.com \
    --cc=laurent.pinchart@ideasonboard.com \
    --cc=linux-gpio@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=linux-staging@lists.linux.dev \
    --cc=martin.hecht@avnet.eu \
    --cc=mchehab@kernel.org \
    --cc=mitrutzceclan@gmail.com \
    --cc=niklas.soderlund+renesas@ragnatech.se \
    --cc=niklas.soderlund@ragnatech.se \
    --cc=robh@kernel.org \
    --cc=sakari.ailus@linux.intel.com \
    --cc=tomi.valkeinen+renesas@ideasonboard.com \
    --cc=tomi.valkeinen@ideasonboard.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).