From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from bali.collaboradmins.com (bali.collaboradmins.com [148.251.105.195]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 98D3E6EB79; Thu, 3 Jul 2025 12:08:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.251.105.195 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1751544530; cv=none; b=npsBw8ZpjXkoJglnCcShf0PQ2xA2T+2jMCqj8wZGtOFRHH5Hej5fzdXpp2gHeO+qmKZB+jShfe3qoa/Gt2ujoTfsm5bzyX5TBk9dLGklIexUXQOoHdoaG2ADVlFo/Y//FfalYp4lnIt1mPVLLmJfSvCH7cJCQkcuRuapcfCzpOE= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1751544530; c=relaxed/simple; bh=H6imShkiI7+4Y/sQCjW5gOqgX5DJ0kIynHNTMC/ekwM=; h=Message-ID:Subject:From:To:Cc:Date:In-Reply-To:References: Content-Type:MIME-Version; b=XKa7PS7DnrnsS3AaeAXNJt/uvJXlT2/XHKtxH1GmIeEROCwZ0RhjNuTC1k/Z3R2u35CwETagUHvWYD+YF2s8F71btNmXoJqer9KCk6uvumxnRGqFBFaj3kVIY2YVA3TYkTF2DfgwpPvuggl1VJQSN266b42DhpE2WmECWM/PG4o= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b=hsYnL7wW; arc=none smtp.client-ip=148.251.105.195 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b="hsYnL7wW" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1751544525; bh=H6imShkiI7+4Y/sQCjW5gOqgX5DJ0kIynHNTMC/ekwM=; h=Subject:From:To:Cc:Date:In-Reply-To:References:From; b=hsYnL7wWxl0Iu9A8GjX89HYlxe1Sq/FnK1F0hL0h7hzsU/892h1kCvHY++pXZjHMV Zc43nzUsgjTGwixBwEX+OyMO5ASgQhGJt1ma/NH8uW2WfEtOCUu/rJUkFH2b5jciBK BlHCQVOFLeDEpYrik1dNNftrSj4fJvA8+pom9subuS01qYRXODIgxyutHpG6W93Xts MHbBOlQ3BPGTjlSvaw7R3C4DG66Tb5TXt+yGsRa+EOtPS1Mm9lmNNGny5BJubznfEz yQR6WUJevcix4L2zfnjGj/Li4ldFriJUYuPUtIWkXQGjJcqK1QDmY2mU5emCZKS42Q sgllXlh3BEW6Q== Received: from 2a01cb0892f2d600c8f85cf092d4af51.ipv6.abo.wanadoo.fr (2a01cb0892f2D600c8F85cf092d4aF51.ipv6.abo.wanadoo.fr [IPv6:2a01:cb08:92f2:d600:c8f8:5cf0:92d4:af51]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) (Authenticated sender: jmassot) by bali.collaboradmins.com (Postfix) with ESMTPSA id 272FC17E059B; Thu, 3 Jul 2025 14:08:45 +0200 (CEST) Message-ID: Subject: Re: [PATCH v5 15/24] media: i2c: add Maxim GMSL2/3 serializer and deserializer framework From: Julien Massot To: Cosmin Tanislav , Cosmin Tanislav , Tomi Valkeinen , Mauro Carvalho Chehab , Rob Herring , Niklas =?ISO-8859-1?Q?S=F6derlund?= , Sakari Ailus , Laurent Pinchart , Greg Kroah-Hartman , Linus Walleij Cc: linux-media@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-staging@lists.linux.dev, linux-gpio@vger.kernel.org Date: Thu, 03 Jul 2025 14:08:44 +0200 In-Reply-To: <20250702132104.1537926-16-demonsingur@gmail.com> References: <20250702132104.1537926-1-demonsingur@gmail.com> <20250702132104.1537926-16-demonsingur@gmail.com> Organization: Collabora Ltd. Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable User-Agent: Evolution 3.56.2 (3.56.2-1.fc42) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Hi Cosmin, On Wed, 2025-07-02 at 16:20 +0300, Cosmin Tanislav wrote: > These drivers are meant to be used as a common framework for Maxim > GMSL2/3 serializers and deserializers. >=20 > This framework enables support for the following new features across > all the chips: > =C2=A0* Full Streams API support > =C2=A0* .get_frame_desc() > =C2=A0* .get_mbus_config() > =C2=A0* I2C ATR > =C2=A0* automatic GMSL link version negotiation > =C2=A0* automatic stream id selection > =C2=A0* automatic VC remapping > =C2=A0* automatic pixel mode / tunnel mode selection > =C2=A0* automatic double mode selection / data padding > =C2=A0* logging of internal state and chip status registers via .log_stat= us() > =C2=A0* PHY modes > =C2=A0* serializer pinctrl > =C2=A0* TPG >=20 > Signed-off-by: Cosmin Tanislav > --- > =C2=A0MAINTAINERS=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |=C2=A0=C2= =A0 1 + > =C2=A0drivers/media/i2c/Kconfig=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |=C2=A0= =C2=A0 2 + > =C2=A0drivers/media/i2c/Makefile=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |=C2=A0=C2= =A0 1 + > =C2=A0drivers/media/i2c/maxim-serdes/Kconfig=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0 |=C2=A0 16 + > =C2=A0drivers/media/i2c/maxim-serdes/Makefile=C2=A0=C2=A0=C2=A0=C2=A0 |= =C2=A0=C2=A0 3 + > =C2=A0drivers/media/i2c/maxim-serdes/max_serdes.c | 413 +++++++++++++++++= +++ > =C2=A0drivers/media/i2c/maxim-serdes/max_serdes.h | 183 +++++++++ > =C2=A07 files changed, 619 insertions(+) > =C2=A0create mode 100644 drivers/media/i2c/maxim-serdes/Kconfig > =C2=A0create mode 100644 drivers/media/i2c/maxim-serdes/Makefile > =C2=A0create mode 100644 drivers/media/i2c/maxim-serdes/max_serdes.c > =C2=A0create mode 100644 drivers/media/i2c/maxim-serdes/max_serdes.h >=20 > diff --git a/MAINTAINERS b/MAINTAINERS > index 334195989c00..8cd57b66afe3 100644 > --- a/MAINTAINERS > +++ b/MAINTAINERS > @@ -14769,6 +14769,7 @@ M: Cosmin Tanislav > =C2=A0L: linux-media@vger.kernel.org > =C2=A0S: Maintained > =C2=A0F: Documentation/devicetree/bindings/media/i2c/maxim,max9296a.yaml > +F: drivers/media/i2c/maxim-serdes/ > =C2=A0 > =C2=A0MAXIM MAX11205 DRIVER > =C2=A0M: Ramona Bolboaca > diff --git a/drivers/media/i2c/Kconfig b/drivers/media/i2c/Kconfig > index 4b4c199da6ea..f504016aadfd 100644 > --- a/drivers/media/i2c/Kconfig > +++ b/drivers/media/i2c/Kconfig > @@ -1700,6 +1700,8 @@ config VIDEO_MAX96717 > =C2=A0 =C2=A0 To compile this driver as a module, choose M here: the > =C2=A0 =C2=A0 module will be called max96717. > =C2=A0 > +source "drivers/media/i2c/maxim-serdes/Kconfig" > + > =C2=A0endmenu > =C2=A0 > =C2=A0endif # VIDEO_DEV > diff --git a/drivers/media/i2c/Makefile b/drivers/media/i2c/Makefile > index 5873d29433ee..25a0093d40ec 100644 > --- a/drivers/media/i2c/Makefile > +++ b/drivers/media/i2c/Makefile > @@ -70,6 +70,7 @@ obj-$(CONFIG_VIDEO_MAX9271_LIB) +=3D max9271.o > =C2=A0obj-$(CONFIG_VIDEO_MAX9286) +=3D max9286.o > =C2=A0obj-$(CONFIG_VIDEO_MAX96714) +=3D max96714.o > =C2=A0obj-$(CONFIG_VIDEO_MAX96717) +=3D max96717.o > +obj-$(CONFIG_VIDEO_MAXIM_SERDES) +=3D maxim-serdes/ > =C2=A0obj-$(CONFIG_VIDEO_ML86V7667) +=3D ml86v7667.o > =C2=A0obj-$(CONFIG_VIDEO_MSP3400) +=3D msp3400.o > =C2=A0obj-$(CONFIG_VIDEO_MT9M001) +=3D mt9m001.o > diff --git a/drivers/media/i2c/maxim-serdes/Kconfig b/drivers/media/i2c/m= axim-serdes/Kconfig > new file mode 100644 > index 000000000000..cae1d5a1293e > --- /dev/null > +++ b/drivers/media/i2c/maxim-serdes/Kconfig > @@ -0,0 +1,16 @@ > +# SPDX-License-Identifier: GPL-2.0 > + > +config VIDEO_MAXIM_SERDES > + tristate "Maxim GMSL2/3 Serializer and Deserializer support" > + depends on VIDEO_DEV > + select I2C_ATR > + select I2C_MUX > + select MEDIA_CONTROLLER > + select V4L2_FWNODE > + select VIDEO_V4L2_SUBDEV_API > + help > + =C2=A0 This driver supports the Maxim GMSL2/3 common Serializer and > + =C2=A0 Deserializer framework. > + > + =C2=A0 To compile this driver as a module, choose M here: the module > + =C2=A0 will be called max_serdes. > diff --git a/drivers/media/i2c/maxim-serdes/Makefile b/drivers/media/i2c/= maxim-serdes/Makefile > new file mode 100644 > index 000000000000..630fbb486bab > --- /dev/null > +++ b/drivers/media/i2c/maxim-serdes/Makefile > @@ -0,0 +1,3 @@ > +# SPDX-License-Identifier: GPL-2.0 > +max-serdes-objs :=3D max_serdes.o > +obj-$(CONFIG_VIDEO_MAXIM_SERDES) +=3D max-serdes.o > diff --git a/drivers/media/i2c/maxim-serdes/max_serdes.c b/drivers/media/= i2c/maxim- > serdes/max_serdes.c > new file mode 100644 > index 000000000000..73e018d1f0d2 > --- /dev/null > +++ b/drivers/media/i2c/maxim-serdes/max_serdes.c > @@ -0,0 +1,413 @@ > +// SPDX-License-Identifier: GPL-2.0 > +/* > + * Copyright (C) 2025 Analog Devices Inc. > + */ > + > +#include > +#include > +#include > +#include > + > +#include > + > +#include