From patchwork Sun Mar 9 08:47:53 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cosmin Tanislav X-Patchwork-Id: 14008257 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 4F5F5C282D1 for ; Sun, 9 Mar 2025 08:51:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From: Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=jLwWoHn8W9MlyVlWzzyNuJFztVqL0l+N+say9TiSqnw=; b=S8mbwDXxhypnHfxg8kbkMALPBr WD8iJ8I85xy4QK1i7ICGRvUqALjmtwpMWZXQ/RWPU9BRTaq36gaiYQqjnf807LS/w++shelSBQfJE Jf2zsl1Z+1urSzqZfAB/2l+PEVpGZ9rMwxrVIw8vACtuy3N+Yohuix22unS/gzkoOnHvs8lLfS+Vp s3vLUo4MK/+Juxw9zA/ACwigDccXiKJmBv0hKGgmFcG25j6Us1rxZsOFa8IbnF4XNbjQuxKcbkteK rCNq6yYHbuV8PdrBKkSD51rS8qXvW9lKCJqU8kJyBOL3uVQFwIwNP3Tzi3Pe3Gm/R2RauUDPHbrfq gxkpxMyQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1trCNv-00000000D7Q-1oDt; Sun, 09 Mar 2025 08:51:47 +0000 Received: from mail-ej1-x635.google.com ([2a00:1450:4864:20::635]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1trCKj-00000000CLv-1BB6 for linux-arm-kernel@lists.infradead.org; Sun, 09 Mar 2025 08:48:30 +0000 Received: by mail-ej1-x635.google.com with SMTP id a640c23a62f3a-abf57138cfaso618594666b.1 for ; Sun, 09 Mar 2025 00:48:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741510108; x=1742114908; darn=lists.infradead.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=jLwWoHn8W9MlyVlWzzyNuJFztVqL0l+N+say9TiSqnw=; b=Ofu4cN+wwxo9UHUy6EUZ4Rxs6poFLO/28oUNhDNtrvL8aWK9fIF71rQfJW0eWo/3BV zIyYMmeBTReE5H2zEUKDf7Pn96kWsRqdEzSff4aObOqYXfrASxVXJ2oiHaFCIK6Zgimy u1sC3YzxbrfnRp15UGbSYq5+6b+g3F5WfKazE0Rdndr5sW3NTPIJh4k+hspwLq5m83hA oflQmvQ3AgOUIjdN7ax99nWZ+66a9hyRZskNuF+pFItntSW/7zxGYPKn3Z8lUTAfG0pb GpNghk+cjFkdOwMdL+OkBBqiq/DxTCvUyG8H6sD7df7yAXU6SSprvjOIkAfIysLrTisw KamA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741510108; x=1742114908; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=jLwWoHn8W9MlyVlWzzyNuJFztVqL0l+N+say9TiSqnw=; b=XRuw3zUaYLwYIwloZ8TnxSuhKXFkJahKCK3tr0wFUgu4ol8lJg7DeJI7sVSmuqHNnI O/EFbVyuTe2G86RFYioQBfIRRoXM1AT4j3ytjw5195NlxI8gztJc8zsQAtucIdZJyvES xVvYtNJkhTr8OeKItS0Alt6KfhHrT81C9ISk4U1KG/6SuDQGR1zxQUR47TS2JiywKcaV OEaT67wGiRjTlKryHMfZOco3gJ+Qnhyl3asFLAVIVCZFUitK3GiLf6XBEWupJIF85g4I Hax8i2ug6o4NWEaHSwa14ZV+Sq6xX3mgPRniVfQOAYIntMTfF+Ir0e2VA0xsQOeM3AAL 6lWQ== X-Forwarded-Encrypted: i=1; AJvYcCW/FXrToQyNRPijyGYseCFg4sSdj25NQN3vO3QqfwTVUGHktZKpvbWE//tlk/QVNADOa2Oyl3j4zbG4ZMbbXKWQ@lists.infradead.org X-Gm-Message-State: AOJu0Yw0AoB9noLZF2tO5vkLXwCwYzO9Cq/xeaz0TMlFBX7AbOZTSkWp IgbuVTw3usmDGbfKzcckoPbsmengTyx4T/LAIW+4qbpq0GQyFv9R X-Gm-Gg: ASbGncsKoiBv3r1bouWDq1MMfQ8SPphIcoxoD/1yMlKZrFlc3hS42O9p0oXDAuTqqmY nUjwVMq+mZmnXIh3ygS3qX7Ta4v7RZrBRU7GLdf1MQjnXif/LW17mQJb839wrAPHuR60b2XQF7y Pg7Z9l+j6mwcrVf1MKx75GDweNXCgJQGDgcN0pejvS9LdC5+JsMMbpHwy6R1gkNCfwSo4oFjvYi ImtsFQQmg47UnJnnf8nB0q5bJBc6dGahScz0I/dkTwBkObbe7dI4y6nx3ya6mViJd2PvimIbStS 9KJl1m2EvgKcwEyWBnmKeQL8t1a4B8GacHL/a4aw4/gz13Bq/XLiDFa73Q== X-Google-Smtp-Source: AGHT+IGVFkKRzT6+IwXblZWULuiCcIjFTpIaLv4LnJDpvJxC9xj4WrXnY/iTgXKB48kvflgou5SSnw== X-Received: by 2002:a17:907:7255:b0:abf:51b7:608a with SMTP id a640c23a62f3a-ac252738131mr996109666b.5.1741510107207; Sun, 09 Mar 2025 00:48:27 -0800 (PST) Received: from demon-pc.localdomain ([188.27.130.21]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ac239736153sm566347466b.108.2025.03.09.00.48.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Mar 2025 00:48:26 -0800 (PST) From: Cosmin Tanislav To: Cc: Tomi Valkeinen , Cosmin Tanislav , Mauro Carvalho Chehab , Rob Herring , Krzysztof Kozlowski , Conor Dooley , =?utf-8?q?Niklas_S=C3=B6derlund?= , Julien Massot , Catalin Marinas , Will Deacon , Greg Kroah-Hartman , Liam Girdwood , Mark Brown , Linus Walleij , Bartosz Golaszewski , Bjorn Andersson , Geert Uytterhoeven , Dmitry Baryshkov , Arnd Bergmann , Taniya Das , Biju Das , =?utf-8?q?N=C3=ADcolas_F_=2E_R_=2E_A?= =?utf-8?q?_=2E_Prado?= , Eric Biggers , Javier Carrasco , Ross Burton , Hans Verkuil , Sakari Ailus , Laurent Pinchart , Zhi Mao , Kieran Bingham , Dongcheng Yan , AngeloGioacchino Del Regno , Benjamin Mugnier , Tommaso Merciai , Dan Carpenter , Ihor Matushchak , Laurentiu Palcu , 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, Cosmin Tanislav Subject: [RFC PATCH v2 01/16] dt-bindings: media: i2c: max96717: add myself as maintainer Date: Sun, 9 Mar 2025 10:47:53 +0200 Message-ID: <20250309084814.3114794-2-demonsingur@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250309084814.3114794-1-demonsingur@gmail.com> References: <20250309084814.3114794-1-demonsingur@gmail.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250309_004829_312551_870B1917 X-CRM114-Status: GOOD ( 13.34 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Analog Devices is taking responsability for the maintenance of the Maxim GMSL2/3 devices. Add myself to the maintainers list and to the device tree bindings. Signed-off-by: Cosmin Tanislav --- Documentation/devicetree/bindings/media/i2c/maxim,max96717.yaml | 1 + MAINTAINERS | 1 + 2 files changed, 2 insertions(+) diff --git a/Documentation/devicetree/bindings/media/i2c/maxim,max96717.yaml b/Documentation/devicetree/bindings/media/i2c/maxim,max96717.yaml index d1e8ba6e368e..15ab37702a92 100644 --- a/Documentation/devicetree/bindings/media/i2c/maxim,max96717.yaml +++ b/Documentation/devicetree/bindings/media/i2c/maxim,max96717.yaml @@ -9,6 +9,7 @@ title: MAX96717 CSI-2 to GMSL2 Serializer maintainers: - Julien Massot + - Cosmin Tanislav description: The MAX96717 serializer converts MIPI CSI-2 D-PHY formatted input diff --git a/MAINTAINERS b/MAINTAINERS index 1916d0636408..8f463ebca056 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -14198,6 +14198,7 @@ F: drivers/media/i2c/max96714.c MAX96717 GMSL2 SERIALIZER DRIVER M: Julien Massot +M: Cosmin Tanislav L: linux-media@vger.kernel.org S: Maintained F: Documentation/devicetree/bindings/media/i2c/maxim,max96717.yaml From patchwork Sun Mar 9 08:47:54 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cosmin Tanislav X-Patchwork-Id: 14008258 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id CFCAEC282D1 for ; Sun, 9 Mar 2025 08:53:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From: Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=mkDL/nUvpfh1eHpxumsRvR86QwXqar6N/bhFMrxJa6g=; b=Fyda8dYQzl95XafkZZJx+BPc6V jqS7EcU4OHwa6Fdw1mnrK6UXoc8oZW2HFGoe+laki3BZ1RoYZvPpeXM1hGSMoiCQXuMPhd5HkWzB/ oS9mdcc3HRk9FHQaBr+EwPm+AODwMMSEmkCCPbMKyiZe2ydwL+Pg4ww650xgUUwwBBMlWlwd+kZJd KXWR/+hi9w4XvPPnJn0Dn9/zsnwTH6PcS/HVgqpkN89jloemoyaEBSsU5aZJbgx3TNabrAH76eTss urPIBHZVGl2TjTTVwUqLcnjStrH8TD4EN6oguocMY0atRlXnHr1gdYn3lzYCRHY/584ivvv4EXLM1 9obVzH2w==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1trCPX-00000000DQi-0cSp; Sun, 09 Mar 2025 08:53:27 +0000 Received: from mail-ej1-x62e.google.com ([2a00:1450:4864:20::62e]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1trCKl-00000000CMH-3l5x for linux-arm-kernel@lists.infradead.org; Sun, 09 Mar 2025 08:48:33 +0000 Received: by mail-ej1-x62e.google.com with SMTP id a640c23a62f3a-abf615d5f31so630105966b.2 for ; Sun, 09 Mar 2025 00:48:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741510110; x=1742114910; darn=lists.infradead.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=mkDL/nUvpfh1eHpxumsRvR86QwXqar6N/bhFMrxJa6g=; b=c2kO/hp1NBKp8EaZjitmvpoAghHTfRnSgWAX4qlFGLyC4EKL9RfjbkvaPuZHD5dEKB yGjEVMoTQy31BtIiYqUIZX6NtjWFeRSSRJ+lg68lwaTtlCFTv89tt7TAQe59+4Fn9tsQ p8Virk1wDAYC0PRDhEeJbpkkZ4lKRH8lXPelZi74KXdoKBzBMuG2+UTotyP5yLB8g2Y6 gHy+TiXdropn/pzphe1OltZLUX1//Jh+il6lNzDjYM4r6mkyYnALuEjY6Vm7Peqgi6FJ vVbEyqSWU2zmXDiRHlM/K70cxU/C/r/3GNF/sYQ/JBpC+A5OUBZYDsSLFi/mcbVm7LEX 0R+g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741510110; x=1742114910; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=mkDL/nUvpfh1eHpxumsRvR86QwXqar6N/bhFMrxJa6g=; b=jaGt8fjyYRUyt2dSr1UW3aJmqkZMeYFSHTARCQzgKFMMVeSM7OQktVnPRsbBmhrbQs kddzPEJ3hRAaVXxhs2IhoTmZnJX+/0fulnIP2x5+vhSxO/naTiopHb6v8H023ZEuMrwQ 9o9C2Iz4Figi1jASVD9lKs9ERt2+YjWtwP6n53JuDnjsUmlKUUJTB/cfUxNI2iGK795J p3ftKV+8cObjfF6ye6jImHjDbALIzE1Xh5d8D8MvbKLM7viLS6dMLUIMu3F2NJM465pI j7FFrOM3M44FkCzaiJSk0UXgTFuMIp+RjFNWys8gpgbNAWTnpkQsuIQ8WlAhzB11KQgp krKQ== X-Forwarded-Encrypted: i=1; AJvYcCX+M1kC3syZZsDfPriLXygXlt4x3Gv3juqKEprVnbum7CXT26DPb+6OkwLG6Utzx5j70/rV7//nTmGT01tdMm/3@lists.infradead.org X-Gm-Message-State: AOJu0YwcpmI3SdtA1y9i9zYn4B7GdGgGo5/ll3I6Q1dxBZXHWCAttHMU QSz4gGfJIGSfbEYwzTY8dcHjQyx3q2erbi3fWIGPUmggbQITDF0m X-Gm-Gg: ASbGncuHSCc9gqd9nHGb4wJxdmo01op1OApQ1P0vtAnrTUl+Y/v2AfZqDQpnwGhuHOU BBienu/LrFbTc5Hbz9XIVkyopJmwejBRWkCZ6VayC0FDJkclVd9/F8Hluf/lSZIZMZqPEjTWosv UjCsh3lZ/x+Vovi2ISAn1yr/81xraEM8P29fUR7Hm4YvLX1HFRrSuhwxRY2mQS9LgnyObyBPw2I 4Fwf+7e4zqdYzbCOWJnQml8IJVVcRCA64E4FV+6HSFpoupvZR0n3kKgzAADSIJJ2AH88hlzW5cr dhAw/LctfTi2CyvUzJ5FTpsrhpcfU+V50KH1jUqd1fFjl/jWmxC0E7vWFQ== X-Google-Smtp-Source: AGHT+IEfjqH7txw3ZNGvVC8ODURGsipO9FHidgAsOnuk5C0y4Kr3jGdwpFvRT4Ar0+alm3pK0kJ5Aw== X-Received: by 2002:a17:907:6e8e:b0:ab7:1012:3ccb with SMTP id a640c23a62f3a-ac252628ecamr1038989766b.14.1741510110006; Sun, 09 Mar 2025 00:48:30 -0800 (PST) Received: from demon-pc.localdomain ([188.27.130.21]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ac239736153sm566347466b.108.2025.03.09.00.48.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Mar 2025 00:48:29 -0800 (PST) From: Cosmin Tanislav To: Cc: Tomi Valkeinen , Cosmin Tanislav , Mauro Carvalho Chehab , Rob Herring , Krzysztof Kozlowski , Conor Dooley , =?utf-8?q?Niklas_S=C3=B6derlund?= , Julien Massot , Catalin Marinas , Will Deacon , Greg Kroah-Hartman , Liam Girdwood , Mark Brown , Linus Walleij , Bartosz Golaszewski , Bjorn Andersson , Geert Uytterhoeven , Dmitry Baryshkov , Arnd Bergmann , Taniya Das , Biju Das , =?utf-8?q?N=C3=ADcolas_F_=2E_R_=2E_A?= =?utf-8?q?_=2E_Prado?= , Eric Biggers , Javier Carrasco , Ross Burton , Hans Verkuil , Sakari Ailus , Laurent Pinchart , Zhi Mao , Kieran Bingham , Dongcheng Yan , AngeloGioacchino Del Regno , Benjamin Mugnier , Tommaso Merciai , Dan Carpenter , Ihor Matushchak , Laurentiu Palcu , 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, Cosmin Tanislav Subject: [RFC PATCH v2 02/16] dt-bindings: media: i2c: max96717: reflow text Date: Sun, 9 Mar 2025 10:47:54 +0200 Message-ID: <20250309084814.3114794-3-demonsingur@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250309084814.3114794-1-demonsingur@gmail.com> References: <20250309084814.3114794-1-demonsingur@gmail.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250309_004831_927262_2934F97C X-CRM114-Status: GOOD ( 13.37 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org This text is using weird line lengths. Fix it. Signed-off-by: Cosmin Tanislav --- .../bindings/media/i2c/maxim,max96717.yaml | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/Documentation/devicetree/bindings/media/i2c/maxim,max96717.yaml b/Documentation/devicetree/bindings/media/i2c/maxim,max96717.yaml index 15ab37702a92..1026678a17a7 100644 --- a/Documentation/devicetree/bindings/media/i2c/maxim,max96717.yaml +++ b/Documentation/devicetree/bindings/media/i2c/maxim,max96717.yaml @@ -12,16 +12,15 @@ maintainers: - Cosmin Tanislav description: - The MAX96717 serializer converts MIPI CSI-2 D-PHY formatted input - into GMSL2 serial outputs. The device allows the GMSL2 link to - simultaneously transmit bidirectional control-channel data while forward - video transmissions are in progress. The MAX96717 can connect to one - remotely located deserializer using industry-standard coax or STP - interconnects. The device cans operate in pixel or tunnel mode. In pixel mode - the MAX96717 can select the MIPI datatype, while the tunnel mode forward all the MIPI - data received by the serializer. - The MAX96717 supports Reference Over Reverse (channel), - to generate a clock output for the sensor from the GMSL reverse channel. + The MAX96717 serializer converts MIPI CSI-2 D-PHY formatted input into GMSL2 + serial outputs. The device allows the GMSL2 link to simultaneously transmit + bidirectional control-channel data while forward video transmissions are in + progress. The MAX96717 can connect to one remotely located deserializer using + industry-standard coax or STP interconnects. The device cans operate in pixel + or tunnel mode. In pixel mode the MAX96717 can select the MIPI datatype, while + the tunnel mode forward all the MIPI data received by the serializer. + The MAX96717 supports Reference Over Reverse (channel), to generate a clock + output for the sensor from the GMSL reverse channel. The GMSL2 serial link operates at a fixed rate of 3Gbps or 6Gbps in the forward direction and 187.5Mbps in the reverse direction. From patchwork Sun Mar 9 08:47:55 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cosmin Tanislav X-Patchwork-Id: 14008259 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 0EFDAC282D1 for ; Sun, 9 Mar 2025 08:55:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From: Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=kj7QL9uAss+Ow9zk6InOH2HUb1Xra8s/78xy7RSYR54=; b=nuzq19gVzLcIXDycu8adsdVxSa xQDXF801/d12JrrOZXP9YSpUuAedKkZCwIrqXQ00o96R20EyDb21tbp0Q+mixm7EdgDgffWkVPmRk qcO7YNT+ICCm5hmDt++eX/uMj8iuTJtXDwHeaK8NGp3Y9avwlb4xc7sW9s/9RYfqr8Nf8Z6qTDJVN KZJNRc6CbIBUqtOZflB/GebEzDHcw0OX+2i6aevywpQMPLFeoztqHY7kHO28tsR9QBf9kWavifUqu 0ga6SX9ADJ6idxZnTgH89E59Qoj4VbR/yHIgKB97HMwBE5qAA770A9wIB9BbgLiH8BWBxuOy201Uo jACK1b0A==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1trCR7-00000000Djq-3OQZ; Sun, 09 Mar 2025 08:55:05 +0000 Received: from mail-ed1-x533.google.com ([2a00:1450:4864:20::533]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1trCKp-00000000CNL-1j6U for linux-arm-kernel@lists.infradead.org; Sun, 09 Mar 2025 08:48:36 +0000 Received: by mail-ed1-x533.google.com with SMTP id 4fb4d7f45d1cf-5e5e1a38c1aso2608923a12.2 for ; Sun, 09 Mar 2025 00:48:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741510114; x=1742114914; darn=lists.infradead.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=kj7QL9uAss+Ow9zk6InOH2HUb1Xra8s/78xy7RSYR54=; b=SqS4CzlN7AWO1kCbD1RZuMnYZv9CZITYKUJISl+Wz8AV7x/nFfcTW6wazRNWe6IENn zbr5Z2wvwmTsQDrlvso4Fe55MNQ6j4WDezfB8fuYJ3yKu9Elym4iny5nKfGL0FRFNiX4 qtft2cmnZps9RHZdlc4lAipikFkOE8cD6elntIujvFA8ZUov8itTTJHNlhJfi4wfSDLI l3noXAJm9CTWwhvh182JDBAZx5nwfTU0lD1TvLEd6wk/rDBz+eg7hB5ZEshsm7PTA3yf stj3kPPZSKdCAX8rXzC5nWm5LB+PO33jg8S37FhAiUDORUjiVVEbEFf8azZ3Pungmez/ juDA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741510114; x=1742114914; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=kj7QL9uAss+Ow9zk6InOH2HUb1Xra8s/78xy7RSYR54=; b=Nbd6lxP7azP4EVIIiY6NjFymHcNvF5u9CQd1Vc1cT7B411+3ghoKw4PuwwavUlbf0h xG3hQNMVSeNmnuiEcPsiCYefiawbmyOnq8yzq53H78B/Cx2QKUKPnS68WGNuWZmEiOzq 4Q5/1fs7Yl7qyDDkKUWGuWt4tK4nE3nQpk2jNVNvTk2N7HPr50WshlOJ1bPGn2fxTMLp zMWR+EOpE+11lZJWe8+sRT6uUfBe4ZqBETXGrQBzzXoj2F5gU2/NZlD+Y5HEZfwiueqk TRZTS7OiaZJBlYVX9YUCHpDYy8eSYeQop9PF4Bg5mCVe47GvzhzMH5u/3x8LVzgqQjlL UBvQ== X-Forwarded-Encrypted: i=1; AJvYcCWexqLk3Mmyk202p58SQdzhRopBTvlx1nHuosc/y3T7YLrfBCm3lBPKSLy7IOAeD78P20jSJaRq5S8zSyqGBvfu@lists.infradead.org X-Gm-Message-State: AOJu0Yznz4WfyWau3hsYUqkoDBU7PbFjUANxrI1mroYXH92bJ+o6tUv7 oc4MEhppZzhMGtjySY/4xlSwcoNf93GgEUlf0feFqPWnAv/pKfOE X-Gm-Gg: ASbGncv+kalGPXcu7A2nIyyOSkvNKd2JhlOfOsdniX30UBA3z6Jc99DlWZr1jERp+gx UzSfilbKRFNtRIi7tZBsm6vJdeK/1UY01Zu5HS1yFusPJehVSL+EZ1x2Tcs10pYC/gF+7Rwt6Kh YQazI5zB3LjIXFoZTUR2h1XqjHvuJ9TGHnSAG91ke8iS1GZuScSY+I1xCcIebdBFSVxGvOOzF/O 8jRN8TTT+Oqj/30Fc6m7Lxc0hXmosAfbvJijn9Axn91QXXI2VjGKPrdB3ekTQ8X0nagve1Tv4aB 5g9Fmvjnxx3bzgZ2rdRz3gb97krQZ6UvMIi2oKJ6iq6gb7HXbGKpqbErUg== X-Google-Smtp-Source: AGHT+IFm2koHNN7A12mxTDrUb8gVHG703Y2Y9Icivhx2dsCJHeZ/vLMfvZOA/IpeXYW5hItMXuZP+w== X-Received: by 2002:a05:6402:268a:b0:5e0:49e4:2180 with SMTP id 4fb4d7f45d1cf-5e5e24688d1mr25168696a12.25.1741510113522; Sun, 09 Mar 2025 00:48:33 -0800 (PST) Received: from demon-pc.localdomain ([188.27.130.21]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ac239736153sm566347466b.108.2025.03.09.00.48.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Mar 2025 00:48:32 -0800 (PST) From: Cosmin Tanislav To: Cc: Tomi Valkeinen , Cosmin Tanislav , Mauro Carvalho Chehab , Rob Herring , Krzysztof Kozlowski , Conor Dooley , =?utf-8?q?Niklas_S=C3=B6derlund?= , Julien Massot , Catalin Marinas , Will Deacon , Greg Kroah-Hartman , Liam Girdwood , Mark Brown , Linus Walleij , Bartosz Golaszewski , Bjorn Andersson , Geert Uytterhoeven , Dmitry Baryshkov , Arnd Bergmann , Taniya Das , Biju Das , =?utf-8?q?N=C3=ADcolas_F_=2E_R_=2E_A?= =?utf-8?q?_=2E_Prado?= , Eric Biggers , Javier Carrasco , Ross Burton , Hans Verkuil , Sakari Ailus , Laurent Pinchart , Zhi Mao , Kieran Bingham , Dongcheng Yan , AngeloGioacchino Del Regno , Benjamin Mugnier , Tommaso Merciai , Dan Carpenter , Ihor Matushchak , Laurentiu Palcu , 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, Cosmin Tanislav Subject: [RFC PATCH v2 03/16] dt-bindings: media: i2c: max96717: add support for I2C ATR Date: Sun, 9 Mar 2025 10:47:55 +0200 Message-ID: <20250309084814.3114794-4-demonsingur@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250309084814.3114794-1-demonsingur@gmail.com> References: <20250309084814.3114794-1-demonsingur@gmail.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250309_004835_447604_590D9954 X-CRM114-Status: GOOD ( 12.43 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org MAX96717 is capable of address translation for the connected I2C slaves. Add support for I2C ATR while keeping I2C gate for compatibility to support this usecase. Signed-off-by: Cosmin Tanislav --- .../bindings/media/i2c/maxim,max96717.yaml | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/Documentation/devicetree/bindings/media/i2c/maxim,max96717.yaml b/Documentation/devicetree/bindings/media/i2c/maxim,max96717.yaml index 1026678a17a7..dd28cc397674 100644 --- a/Documentation/devicetree/bindings/media/i2c/maxim,max96717.yaml +++ b/Documentation/devicetree/bindings/media/i2c/maxim,max96717.yaml @@ -91,6 +91,30 @@ properties: incoming GMSL2 link. Therefore, it supports an i2c-gate subnode to configure a sensor. + i2c-alias-pool: + maxItems: 2 + + i2c-atr: + type: object + additionalProperties: false + + properties: + '#address-cells': + const: 1 + + '#size-cells': + const: 0 + + patternProperties: + '^i2c@0': + $ref: /schemas/i2c/i2c-controller.yaml# + unevaluatedProperties: false + properties: + reg: + items: + minimum: 0 + maximum: 1 + required: - compatible - reg @@ -98,6 +122,21 @@ required: additionalProperties: false +allOf: + - $ref: /schemas/i2c/i2c-atr.yaml# + + - anyOf: + - oneOf: + - required: [i2c-atr] + - required: [i2c-gate] + + - not: + required: [i2c-atr, i2c-gate] + +dependentRequired: + i2c-atr: [i2c-alias-pool] + i2c-alias-pool: [i2c-atr] + examples: - | #include From patchwork Sun Mar 9 08:47:56 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cosmin Tanislav X-Patchwork-Id: 14008260 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 25BE9C282D1 for ; Sun, 9 Mar 2025 08:56:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From: Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=OrbGAQ2uhNvJ4/rBt+fN38afZopmEc/0A5IF3Y67uyw=; b=y1WobOebW+VMjN5lY/mjr6o9Ua eHeBGhj85TNO7QpHMSXd39/D7mzH6DkhTW7WR7m4CAW22kYdVh4Qk5V2s0NkZ3O7sjHgbNe4QUBbT Zvw0EUbuugNnF3rk17MzrrhjNsehGbHNUl5ZBIniBmYPw6VYjldAGZOTMNLkSKFawGKgI1eBj8OFA HSn4UgNPNc+WlFjBGxY1J+lTgFCc9L0db05irmcZVReVX1xl+5nMSEbwhm5kQb1PASDPEmMPjmznS nZd0/Lbig9pMZJ6SebNZhYYoHk3nO7e/o4p//bnbC5RwYq5H+Ae/dROcfdJn2Evf44BNiQPS31w6G NnUIuIjA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1trCSj-00000000Dsn-2MwX; Sun, 09 Mar 2025 08:56:45 +0000 Received: from mail-ej1-x62b.google.com ([2a00:1450:4864:20::62b]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1trCKs-00000000CO5-0W0m for linux-arm-kernel@lists.infradead.org; Sun, 09 Mar 2025 08:48:39 +0000 Received: by mail-ej1-x62b.google.com with SMTP id a640c23a62f3a-abf48293ad0so520363266b.0 for ; Sun, 09 Mar 2025 00:48:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741510117; x=1742114917; darn=lists.infradead.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=OrbGAQ2uhNvJ4/rBt+fN38afZopmEc/0A5IF3Y67uyw=; b=jySFA7nXnJ+aFVBfdW1sGi6gDzzghS/oAwx17qbEkjjTap6+9wL6OYrW7HAV9qtUlS 8IflyCOPFcZj1ygn3kHwEiz79Q2tNS6WyXPMazOT0SDKil1RsKfT+ZmKJc8NFik9mCqf qgrLqRYPV6UafywdOjE5GFBbqEDmvDI05HS2a3OdA7Abm8F7UtI0eyT5aa8/HA3++RBl dBMzypd9Bi9RZiisimCZxZgBPq1B25rd+3TgUBv2konco1OuuOIcPs9e+8UeVehmpI2M yBqbN9ID1HU02RadRRFM2CRmHg7YS1Olyjl1fSeHYoau7en4rt7Lj9TPgIU7SUwcCfF4 wnhA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741510117; x=1742114917; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=OrbGAQ2uhNvJ4/rBt+fN38afZopmEc/0A5IF3Y67uyw=; b=gyQeCVziBJTCNoMoVnaMXXkgHSBoAA2ve4TqEjIHSuAxMge2kRpSwpUfm5Z0/ZCvWe Odrxwc9AUCqTZCZ+5X9G7dAaZdWSHSrOIOABXguBxZ7pNB4et1Pgg0acvA0biIKd0jE+ pceSETTxGGTwTw+nXLl/Tj15xzkiWoFfGz8xBoncHm7rr55GgJ8NIqeofJuh3hbj6H9P yx/J1V5UHop1bAUdowoGcC5xhYOrV2Vl2aVaTBlrP8bUFJW4YZdiaL0+JiOTo7uKnRxY C1neddfGxhcO7dDyDgD2jtqUnFPyOlLX1kde6s0h9C2zm6NmJBtbOqu8TLF6ZfePzNtu rg5g== X-Forwarded-Encrypted: i=1; AJvYcCW8a5m4BT45HmUT98hiog30qJ2GapKICRv7th+Fr1pq9zr+SN+T2CB6NekaQBo/PiCaLucoKNCtBydGjoPYPyHB@lists.infradead.org X-Gm-Message-State: AOJu0YzDWw0eOzjwNlmX0guUe+waMcZTCjcTVxJgrkR36dnN4J9cVH2z rMDParUTrDsNC3OhBtgsndBjdUCL2geXPaNqaa/9aurYTq1YseNa X-Gm-Gg: ASbGncuYneBcyroO/Syc0WPL62inJt7bdHffHadzm7NojU8eIh1tcpg9PSKnP2olO22 EY5eCOo7joqdBHY3Foh9VLI5xs8K5QdpsGRkknFwDzqBBvLyEiGt+7YbHcS/nCFdauY/d36DGWB ZGR4HbqgIebtgd36lz8p+vtagaomdyFit1zrFnfzDHmut8WZLSMEGS0vQGjUwbL8dgqjp5KMhYc ZlKNrh6ZrvjoD6MLKR102K63toHXYckbEi6G6JqL2jQXZJIZhPVPDjFSYZCxzpc//DqrcqEGO9A TnTwcNWCjVkUrnyiFSTLLL8ikZ/gATdRkZ51oxz56XVwulYfZdypf1Umnw== X-Google-Smtp-Source: AGHT+IGD8kViV//YVpWgVRhDxEU4994VL0wz2et/xPmoDQOHxpV67VDbfzsmYHx+eVCo0QhuL2340g== X-Received: by 2002:a17:906:b20a:b0:ac2:84db:5916 with SMTP id a640c23a62f3a-ac284db5ff9mr291074766b.31.1741510116313; Sun, 09 Mar 2025 00:48:36 -0800 (PST) Received: from demon-pc.localdomain ([188.27.130.21]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ac239736153sm566347466b.108.2025.03.09.00.48.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Mar 2025 00:48:35 -0800 (PST) From: Cosmin Tanislav To: Cc: Tomi Valkeinen , Cosmin Tanislav , Mauro Carvalho Chehab , Rob Herring , Krzysztof Kozlowski , Conor Dooley , =?utf-8?q?Niklas_S=C3=B6derlund?= , Julien Massot , Catalin Marinas , Will Deacon , Greg Kroah-Hartman , Liam Girdwood , Mark Brown , Linus Walleij , Bartosz Golaszewski , Bjorn Andersson , Geert Uytterhoeven , Dmitry Baryshkov , Arnd Bergmann , Taniya Das , Biju Das , =?utf-8?q?N=C3=ADcolas_F_=2E_R_=2E_A?= =?utf-8?q?_=2E_Prado?= , Eric Biggers , Javier Carrasco , Ross Burton , Hans Verkuil , Sakari Ailus , Laurent Pinchart , Zhi Mao , Kieran Bingham , Dongcheng Yan , AngeloGioacchino Del Regno , Benjamin Mugnier , Tommaso Merciai , Dan Carpenter , Ihor Matushchak , Laurentiu Palcu , 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, Cosmin Tanislav Subject: [RFC PATCH v2 04/16] dt-bindings: media: i2c: max96717: add support for pinctrl/pinconf Date: Sun, 9 Mar 2025 10:47:56 +0200 Message-ID: <20250309084814.3114794-5-demonsingur@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250309084814.3114794-1-demonsingur@gmail.com> References: <20250309084814.3114794-1-demonsingur@gmail.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250309_004838_176579_DC0E3C44 X-CRM114-Status: GOOD ( 17.73 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org MAX96717 is capable of configuring various pin properties. Add pinctrl/pinconf properties to support this usecase. Signed-off-by: Cosmin Tanislav --- .../media/i2c/maxim,max96717-pinctrl.yaml | 71 +++++++++++++++++++ .../bindings/media/i2c/maxim,max96717.yaml | 16 ++++- MAINTAINERS | 1 + 3 files changed, 87 insertions(+), 1 deletion(-) create mode 100644 Documentation/devicetree/bindings/media/i2c/maxim,max96717-pinctrl.yaml diff --git a/Documentation/devicetree/bindings/media/i2c/maxim,max96717-pinctrl.yaml b/Documentation/devicetree/bindings/media/i2c/maxim,max96717-pinctrl.yaml new file mode 100644 index 000000000000..347e66a5320c --- /dev/null +++ b/Documentation/devicetree/bindings/media/i2c/maxim,max96717-pinctrl.yaml @@ -0,0 +1,71 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +# Copyright (C) 2025 Analog Devices Inc. +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/media/i2c/maxim,max96717-pinctrl.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Maxim GMSL2 Serializer Pinctrl + +maintainers: + - Cosmin Tanislav + +allOf: + - $ref: /schemas/pinctrl/pincfg-node.yaml# + - $ref: /schemas/pinctrl/pinmux-node.yaml# + +unevaluatedProperties: false + +properties: + function: true + pins: true + drive-open-drain: true + drive-push-pull: true + bias-disable: true + bias-pull-up: true + bias-pull-down: true + output-disable: true + output-enable: true + output-low: true + output-high: true + slew-rate: true + input-enable: true + + maxim,jitter-compensation: + type: boolean + description: Enables jitter compensation. + + maxim,gmsl-tx: + type: boolean + description: Enable transmitting pin value to GMSL link. + + maxim,gmsl-rx: + type: boolean + description: Enable receiving pin value from GMSL link. + + maxim,gmsl-tx-id: + $ref: /schemas/types.yaml#/definitions/uint32 + description: | + Identifier used while transmitting value to GMSL link. + Default value matches the pin number. + minimum: 0 + maximum: 31 + + maxim,gmsl-rx-id: + $ref: /schemas/types.yaml#/definitions/uint32 + description: | + Identifier used while receiving value from GMSL link. + Default value matches the pin number. + minimum: 0 + maximum: 31 + + maxim,rclkout-clock: + $ref: /schemas/types.yaml#/definitions/uint32 + description: | + Clock value. + 0 - XTAL / 1 = 25MHz + 1 - XTAL / 2 = 12.5MHz + 2 - XTAL / 4 = 6.25MHz + 3 - Reference PLL output + minimum: 0 + maximum: 3 diff --git a/Documentation/devicetree/bindings/media/i2c/maxim,max96717.yaml b/Documentation/devicetree/bindings/media/i2c/maxim,max96717.yaml index dd28cc397674..0a43582168a8 100644 --- a/Documentation/devicetree/bindings/media/i2c/maxim,max96717.yaml +++ b/Documentation/devicetree/bindings/media/i2c/maxim,max96717.yaml @@ -120,7 +120,21 @@ required: - reg - ports -additionalProperties: false +additionalProperties: + anyOf: + - type: object + allOf: + - $ref: /schemas/media/i2c/maxim,max96717-pinctrl.yaml# + + unevaluatedProperties: false + + - type: object + additionalProperties: + type: object + allOf: + - $ref: /schemas/media/i2c/maxim,max96717-pinctrl.yaml# + + unevaluatedProperties: false allOf: - $ref: /schemas/i2c/i2c-atr.yaml# diff --git a/MAINTAINERS b/MAINTAINERS index 8f463ebca056..f8ffb7cff9c5 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -14201,6 +14201,7 @@ M: Julien Massot M: Cosmin Tanislav L: linux-media@vger.kernel.org S: Maintained +F: Documentation/devicetree/bindings/media/i2c/maxim,max96717-pinctrl.yaml F: Documentation/devicetree/bindings/media/i2c/maxim,max96717.yaml F: drivers/media/i2c/max96717.c From patchwork Sun Mar 9 08:47:57 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cosmin Tanislav X-Patchwork-Id: 14008261 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 5D705C282D1 for ; Sun, 9 Mar 2025 08:58:33 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From: Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=77ZQnV/idoKQSJwHe+JyKu0EB24gfw5+CVNFL3AarEo=; b=D30IUil0xxyfa5FvzQynxivUVi Upjz6oL+89Zge8HxYH/z7O+4CYA+++/S9koy+TWslEjR86UE6BnDyI+5kYjrpsATLdY+PBE/r+FYU Lk/PwF+Q796pL0EsppB/DuVDTisSW0b8GrIwr6J5VFcGbfRqC2bLisuAbveF6lFylrijbXIbrzVVE r9FNyiDoFw5sZ4iZ1IN7GSSeU0NNHwK21ZQYgEHfzIC56B9YnFSswG6HwSoMXSQLigxvMiJP9ID22 OuFB41tfRQ4X5R8vR/u52KoJaYCEC73+bLnQyWH9mOJAlq1DRgEcw+uS7V7uLZx4UGAiIl1SkZmqw BimJ2x0w==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1trCUK-00000000Dyw-0uH0; Sun, 09 Mar 2025 08:58:24 +0000 Received: from mail-ed1-x530.google.com ([2a00:1450:4864:20::530]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1trCKv-00000000CP4-3iHk for linux-arm-kernel@lists.infradead.org; Sun, 09 Mar 2025 08:48:42 +0000 Received: by mail-ed1-x530.google.com with SMTP id 4fb4d7f45d1cf-5e5e1a38c1aso2608983a12.2 for ; Sun, 09 Mar 2025 00:48:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741510120; x=1742114920; darn=lists.infradead.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=77ZQnV/idoKQSJwHe+JyKu0EB24gfw5+CVNFL3AarEo=; b=G4muSpYSe1DQmYg5m6DfTwL0GfT/QgPQt+MlsUXMnn/Csu7vdl+DhR9y+10VlWqMCv kKZwIVXXoeanHS8ihfzmmrsxS7TbPMl8u5XXH1QEkU/Jh7HlMtsGzUGmKEHQ2u+fT8sW YgrGqWQthUwREgG2ICHdMQCqw6e/WYlJ3CsYgSnU7orQ2s8tga/02cFMCJVsh4XCZzeF TjpbVYY1mJtaZu61HkSpreWa0TliRNwJfppr349vRPzvCjZ41UqnjTOX50XJxO+PCVpp 4994MU8xgl5HwLJg8J8yY4px9x+BH4laajMP3Z9fJxP2Xl5m7kO1cGHlOw6FhEYp27+0 gIHg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741510120; x=1742114920; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=77ZQnV/idoKQSJwHe+JyKu0EB24gfw5+CVNFL3AarEo=; b=OUsYeT1WK3p98wrxRxpB52ZvxxcBBGS4SeMmt29J1MJ2qMsm0vNXg01kD4P4060FdM 2WpjvU7R2EPa7gWMxmfJ7B/Ke8FRScy0WX5z1wANMYptjAYLyMPjnpQ/WTSFSDjrkJtJ t/uFwXzEBHJxBbLT416cOUUrntxb/qFa5LfkYqDe+AiftS1AJz7evirNp0r93pXeQnar SlaJBoFcFqSfE+8jCxvPipGSaZa9YKtDr89YKXSH2FImQVznGYMQ8abUo6ZT2UvKlT/2 0R/LqHFeRhWxZtYcxyMrKV/ClT1NZz4m4zV0qwjc9AYyQ2NSq6X/KxP1e2gP5XXZKzph YW0A== X-Forwarded-Encrypted: i=1; AJvYcCWc9dMeoPaGCH11nM5BWRJl2mNgOynQtPiFfilGEvsGcd0jsHtTw7971pRT4vCdU74ncz69Pfvi5dy3So4rqZgF@lists.infradead.org X-Gm-Message-State: AOJu0YxpUr+kXPHS4QnHTHBnSzgrwHZVp81AmXR0J0idFUjjdW4SN8X2 iybsp50pM/Rx9bJK2TX+RdwZcPfF1OnjSSr44KVBZMlP/NGYcIs7 X-Gm-Gg: ASbGncvEXv6WWwFSiqNoe3xk3gdPMVrK4qQr6ZuY3GDNpcmoNIlOGT5US+NhKk3lnBx PD9T4O74/2O/Dkg9rtTgw5JKGlU/JBxV5Ws0T/CAbLeDfVGbT5fXRJLz9v3FQVJ85KLrkZBsCkf THOOqpzcx6BMJBPlCLGCX9vrK8tqnOm6yymAZZQZL+Ev3vM49TmotEMvxmeCNd0xXuRKxv8KaQG g2l240x4+SzFDPdpWVyWxpyTCYzs70vc3SWu+q+QhmWhh7G+eqpfncwjrtX0YYuVsrzm4HM+rcq jnyryJxFrHuI68lwxEFznyaYHLkNc+GV+Or+OhLZY8SXpIt/f7PPnMroxiGawX6sl8uf X-Google-Smtp-Source: AGHT+IG0K1+lHlFBOdHDt8tr0ZKEi9pxD/wAXNM/pWihzP5DjPiNDmSdaUAc5wV4ZJZ+UdarW2Vo1Q== X-Received: by 2002:a05:6402:35c7:b0:5e5:c010:e67e with SMTP id 4fb4d7f45d1cf-5e5e24bd6bemr20287512a12.31.1741510119914; Sun, 09 Mar 2025 00:48:39 -0800 (PST) Received: from demon-pc.localdomain ([188.27.130.21]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ac239736153sm566347466b.108.2025.03.09.00.48.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Mar 2025 00:48:38 -0800 (PST) From: Cosmin Tanislav To: Cc: Tomi Valkeinen , Cosmin Tanislav , Mauro Carvalho Chehab , Rob Herring , Krzysztof Kozlowski , Conor Dooley , =?utf-8?q?Niklas_S=C3=B6derlund?= , Julien Massot , Catalin Marinas , Will Deacon , Greg Kroah-Hartman , Liam Girdwood , Mark Brown , Linus Walleij , Bartosz Golaszewski , Bjorn Andersson , Geert Uytterhoeven , Dmitry Baryshkov , Arnd Bergmann , Taniya Das , Biju Das , =?utf-8?q?N=C3=ADcolas_F_=2E_R_=2E_A?= =?utf-8?q?_=2E_Prado?= , Eric Biggers , Javier Carrasco , Ross Burton , Hans Verkuil , Sakari Ailus , Laurent Pinchart , Zhi Mao , Kieran Bingham , Dongcheng Yan , AngeloGioacchino Del Regno , Benjamin Mugnier , Tommaso Merciai , Dan Carpenter , Ihor Matushchak , Laurentiu Palcu , 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, Cosmin Tanislav Subject: [RFC PATCH v2 05/16] dt-bindings: media: i2c: max96717: add support for MAX9295A Date: Sun, 9 Mar 2025 10:47:57 +0200 Message-ID: <20250309084814.3114794-6-demonsingur@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250309084814.3114794-1-demonsingur@gmail.com> References: <20250309084814.3114794-1-demonsingur@gmail.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250309_004841_928642_0275765E X-CRM114-Status: GOOD ( 11.98 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org MAX9295A is an older variant of the MAX96717 which does not support tunnel mode. Document the compatibility. Signed-off-by: Cosmin Tanislav --- .../devicetree/bindings/media/i2c/maxim,max96717.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Documentation/devicetree/bindings/media/i2c/maxim,max96717.yaml b/Documentation/devicetree/bindings/media/i2c/maxim,max96717.yaml index 0a43582168a8..31fb62debdc7 100644 --- a/Documentation/devicetree/bindings/media/i2c/maxim,max96717.yaml +++ b/Documentation/devicetree/bindings/media/i2c/maxim,max96717.yaml @@ -24,11 +24,14 @@ description: The GMSL2 serial link operates at a fixed rate of 3Gbps or 6Gbps in the forward direction and 187.5Mbps in the reverse direction. + MAX96717F only supports a fixed rate of 3Gbps in the forward direction. + MAX9295A only supports pixel mode. properties: compatible: oneOf: + - const: maxim,max9295a - const: maxim,max96717f - items: - enum: From patchwork Sun Mar 9 08:47:58 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cosmin Tanislav X-Patchwork-Id: 14008262 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 349F2C282D1 for ; Sun, 9 Mar 2025 09:00:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From: Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=WgEysl13OPBv6BFUaZyKQ7UjemHKnyK7wK7vWTFZ5dA=; b=FlAlPFsv+lRYCOz7atyp0d12Lv M363aKqHfmE+QUH5qMrvQqJKMXJVLbT/wh25MrIXy3WUksAeufEM2ZhiozaC7OSK7fz9wgs05ScT3 DSPi0GGRxoWaFyccVOysliAV08fecDmTmOsmZ57iBBOJXjxxk8PYZg2QFaRdQ7NKt71yVGP65FzoI lQf6qoGC7oxRzD6zr7ZUAvTVsIpKECgClI4JVf5zBKkkOdae5HJuhihPiQ/OgnNxmQ8jlofwcVzDc Brkx8u1uqeYox7FQC6vaaU3Eluiq/n76l+S3HsrA7KucTrvT9TMYNhjiIN38uRHSDmjzh1LodLpDQ FQ50b2Vg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1trCVv-00000000E5r-3gcx; Sun, 09 Mar 2025 09:00:04 +0000 Received: from mail-ej1-x62b.google.com ([2a00:1450:4864:20::62b]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1trCL0-00000000CQv-2goE for linux-arm-kernel@lists.infradead.org; Sun, 09 Mar 2025 08:48:47 +0000 Received: by mail-ej1-x62b.google.com with SMTP id a640c23a62f3a-ac256f4b3ecso360594666b.0 for ; Sun, 09 Mar 2025 00:48:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741510125; x=1742114925; darn=lists.infradead.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=WgEysl13OPBv6BFUaZyKQ7UjemHKnyK7wK7vWTFZ5dA=; b=csauvmm5l16aYX0W49gF+fUKuDHpGIU+UekH8aNxTEX+eELOF6tKF9A3aujFoylrPy tS/l1IrYzQsZXOd0BmZ4IbjN5LlTogERkTORAiA/5oZI19pP+ITSaNoWXwca23Fw7O8G eSyuf9GVS9bb3HakiuBrSiqOHvz/o9zAAEEmAKQm5piSC7kyovaneQeTMh6oxFfTctsY LY8qS4lwPBeZ95l9jkr/ZQluCY5fIcQC1uUvZ8az955+3sjCBdTiQD1/XfBG3utqKFl4 m/lmBNBemHSvET+WeSdSvSnA1FWT2ggRCZlOpI7K/hjUom+3SsEcu5BbBXvX5EOYxEyG 476w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741510125; x=1742114925; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=WgEysl13OPBv6BFUaZyKQ7UjemHKnyK7wK7vWTFZ5dA=; b=RcBwRNx59eclPDMP5S9pwYoPuYLQTk+LhLX7lZ1FbK35YROAbndUHME/d+Q33QP4+7 syX2ySNN+vryuEruBTn4p4BEl070dpiASHpTKhdEWAR3dPIwncckV5no8h2y+1SBJ5D5 MdxpyzjlNDkUp2gV5f/8jc86yAXbnzKW/GPkASlmHKN8Xy8pn6vTkU8Zxle4mgOEa88m CMvVC9USPB65UFAWaSSfhjjsrxVveXREmV2QzYvAPyI6Stx+eJ8ORYp0QrtSB6LMIGyx XA8jNn5FcDvHoGPwsYa8qlvnOgNiVgIWIpRvgUy5MACI8irxMVu8jA8Zy7dWokWQ9lfy 8AjQ== X-Forwarded-Encrypted: i=1; AJvYcCX0cVdNgVpVoPuY8/JjiJfWaBY5R5BalR55z1BT15gA4163XlpZGDcBQE2CLZrxAZDs6J/Gzr8XW+5TkXs/OK5I@lists.infradead.org X-Gm-Message-State: AOJu0YxjR8QShE73UsEB1RWSVMGSVzCqFDQoEi7t+gMH91lFoGndb8ni T5HeKE+DSmusyqn+3DaIB72nD+a8rrFkjskTt1nElkkW8DwDWqJc X-Gm-Gg: ASbGncv/wY5vs6dhEFYLuY/Ixne+U+USZo4LkgT/NC2zotyk+TG/yRGg++kH0u51cuQ 1GAVlUXPFivN3PYczWIbsca4kXwLfphhYl+DWwv+bRJo/VCTzr0XVckr2VlfERgtM+juZfRCGhZ ylLAfeot7yvTW7tEXrRcSnV9vMbNdVAWgadIXjWXyjA+mgbDWQcdDMVo/Z3cBOMG/qVAHbwexe5 mcw5OZtbmmoLWzVMcu5Yhr/AzyN7TTz/IeygLkY+NbmGQTWjhgxIDD+7IJKtTBBzZipZj9ajU8A ndP/RSJuoZ/UrlQzdKTJ1oZ/QFT+lbneT8hs4RVwxl6IKpAV65vhyr+rfA== X-Google-Smtp-Source: AGHT+IHJpkt6LaAM5QKyrUuU+iBRJp7mmLxht9TMjFEsX0Ab2stz5/9LcnbbS6wVDa34wHlHd/EPJg== X-Received: by 2002:a17:907:7f23:b0:ac1:da09:5d3e with SMTP id a640c23a62f3a-ac26ca45477mr637973666b.12.1741510123537; Sun, 09 Mar 2025 00:48:43 -0800 (PST) Received: from demon-pc.localdomain ([188.27.130.21]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ac239736153sm566347466b.108.2025.03.09.00.48.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Mar 2025 00:48:43 -0800 (PST) From: Cosmin Tanislav To: Cc: Tomi Valkeinen , Cosmin Tanislav , Mauro Carvalho Chehab , Rob Herring , Krzysztof Kozlowski , Conor Dooley , =?utf-8?q?Niklas_S=C3=B6derlund?= , Julien Massot , Catalin Marinas , Will Deacon , Greg Kroah-Hartman , Liam Girdwood , Mark Brown , Linus Walleij , Bartosz Golaszewski , Bjorn Andersson , Geert Uytterhoeven , Dmitry Baryshkov , Arnd Bergmann , Taniya Das , Biju Das , =?utf-8?q?N=C3=ADcolas_F_=2E_R_=2E_A?= =?utf-8?q?_=2E_Prado?= , Eric Biggers , Javier Carrasco , Ross Burton , Hans Verkuil , Sakari Ailus , Laurent Pinchart , Zhi Mao , Kieran Bingham , Dongcheng Yan , AngeloGioacchino Del Regno , Benjamin Mugnier , Tommaso Merciai , Dan Carpenter , Ihor Matushchak , Laurentiu Palcu , 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, Cosmin Tanislav Subject: [RFC PATCH v2 06/16] dt-bindings: media: i2c: max96717: add support for MAX96793 Date: Sun, 9 Mar 2025 10:47:58 +0200 Message-ID: <20250309084814.3114794-7-demonsingur@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250309084814.3114794-1-demonsingur@gmail.com> References: <20250309084814.3114794-1-demonsingur@gmail.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250309_004846_682108_63396365 X-CRM114-Status: GOOD ( 12.21 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org MAX96793 is a newer variant of the MAX96717 which also supports GMSL3 links. Document this compatibility. Signed-off-by: Cosmin Tanislav --- Documentation/devicetree/bindings/media/i2c/maxim,max96717.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Documentation/devicetree/bindings/media/i2c/maxim,max96717.yaml b/Documentation/devicetree/bindings/media/i2c/maxim,max96717.yaml index 31fb62debdc7..02857f0364c4 100644 --- a/Documentation/devicetree/bindings/media/i2c/maxim,max96717.yaml +++ b/Documentation/devicetree/bindings/media/i2c/maxim,max96717.yaml @@ -27,6 +27,7 @@ description: MAX96717F only supports a fixed rate of 3Gbps in the forward direction. MAX9295A only supports pixel mode. + MAX96793 also supports GMSL3 mode. properties: compatible: @@ -36,6 +37,7 @@ properties: - items: - enum: - maxim,max96717 + - maxim,max96793 - const: maxim,max96717f '#gpio-cells': From patchwork Sun Mar 9 08:47:59 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Cosmin Tanislav X-Patchwork-Id: 14008263 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 8438BC282D1 for ; Sun, 9 Mar 2025 09:01:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Transfer-Encoding: Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc: To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=MNEKDUXXNxdZ3aoZYUXXrkyQwTuziw3tR5vOmFxFPD8=; b=ntFlhsZi/D5CBaZk7jjBPhtoLW eu/RqH+sFnAsv+Lxxa3mcI0UaE8WfxRHuXy8132DTMJRA7Tt+9vadLAmaze7DZZle6Ea1i76Lfi+e YpLgcb25OipQJ/mqpKC3gJLoyKY6iZzYjMa+5TKnWZ/fTEUnGU9T7TWsc86srzyUHkbkQ6LfW7dg/ 6B4rAUJQepryRecLnupRaeq4l4GV/+9msWeeYhj9zfxNrt5c+gCT3fGK6Hr9xRjuJPA0fWGyf+JhD j+x8CYmavU80NkvoPN8nyqZwx0Q1e31RM78pIdlIRKCHbEQaE8o30ySNT11XGhfQ3NtgrAtZ/SHen Ig17BWfQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1trCXY-00000000EIS-0AyY; Sun, 09 Mar 2025 09:01:44 +0000 Received: from mail-ed1-x532.google.com ([2a00:1450:4864:20::532]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1trCL2-00000000CRW-0O9w for linux-arm-kernel@lists.infradead.org; Sun, 09 Mar 2025 08:48:49 +0000 Received: by mail-ed1-x532.google.com with SMTP id 4fb4d7f45d1cf-5e61375c108so1980509a12.1 for ; Sun, 09 Mar 2025 00:48:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741510126; x=1742114926; darn=lists.infradead.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=MNEKDUXXNxdZ3aoZYUXXrkyQwTuziw3tR5vOmFxFPD8=; b=k49mWTKifUBXi/zrHMvEAyO3vyPA4hOV4AcZNjFPc+i+pFNOluLsxLoQLpLcg4oTwW 9zdJDH6J7aGeayKX6FcBB/V1PotpVSZlD1ifyuMYy+gONs2Hqc64JWHs+2NYwdoXcWd/ M69vFTbeaboDabo27pspLYlJ3KMMO2rXhsptQgh29eKhjeMXapakXf0iNBKt63Bq6/xp cqDLwbEkiOE38DzlFXzXc0v5QqK/cSmexTZgFkxNaPSeDVxxL/4LaboVf0UIZi23f5rW 0yE2V/aZHG77tJOfgi6tTdyqcZjRHhJNmVAI6Uxszp9Qhz9+X+Pt/NezP9xojXExMs3R Yc7A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741510126; x=1742114926; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=MNEKDUXXNxdZ3aoZYUXXrkyQwTuziw3tR5vOmFxFPD8=; b=uaCzc9Lx8Zees3t/zINd+jmrynkfH1JfTwSu8EzZftrWBFOTJySrYBWXdetSrXBUtC hFDLKiUPOHf55tePcpFZQEtWme8nKTmNPeg09V4g1D1EyG866LtJq83UDXNUZpcmz4Bs 9NhsP4FA1sQfeHlIJ51spc/tg5SekGH2TaB5XmIjkKpvk2LncBtKwpy1ZzAL6wWjB9bU r0kQ1dLwbEg482qaB9MbovYpK6M90loNfs5lT3sHVmYpDbg48DD/N8UpyBQr/ankwtRJ McNrG0dq1f87k7F0Eox0Gwf/chT6V8H4kHcOTRL4MwPMj92GazKNbGqQ3quqddSywzKZ M+oQ== X-Forwarded-Encrypted: i=1; AJvYcCU7fZ6pzMlUOqr2EoEPKry/YQH1VzSlxEgD/kwX8rN0JIr2//L7yHW1HL7ZrNoT0ZlbouXCuwZ075UjOAbtUxsO@lists.infradead.org X-Gm-Message-State: AOJu0YxQa3OA+cyF6LwjvNbTzQwq89fnskDjDZwIwEAbdZaOmTGsIXkv yD1pJIa4dqTnq1ejukI2pRUEs8fhVd6PcYllpP+VEkrVT/b2Ll51 X-Gm-Gg: ASbGncthtYM4EbIhQi/SMqLXjUU+pBNhJhCia9GCG6LB1MK9FLcpx79Qby66Yxpz/Si B2XZOS/NdSl+NMN0PP0iC49L4zF953pjQGIEmqWogwRMJy5GQ85XBYQxTj5UTaZwCsP5Q9lFC7h 7JvPiBQVYrIWHrJaK9S9fIUxz0ZXWVbcMlz/K5gbLWD5I9EmuVIynVXHvokw4NlQHecnveHcTag 0au4SWlo4gqqX0LLR/XvDlNPUk3Xq/ilG51WMLwzVzEIDpiNFTN1Jj+NpmzjShdUPrLdvbtEc+T qKTlB+SSVyw5kQQYIOoFw583H1djPZ/uDgV0NObDnng+rWHsBCmaWmXxWw== X-Google-Smtp-Source: AGHT+IFd4OXwST2S8J6EVuRFcvfp8HeWmw8/swAHhqOkgPPhysWXT9icPKoNrSp/fqbd/dZ8XFRNhw== X-Received: by 2002:a17:907:9719:b0:abf:46cd:5e3f with SMTP id a640c23a62f3a-ac252a9d6acmr1037408766b.16.1741510126320; Sun, 09 Mar 2025 00:48:46 -0800 (PST) Received: from demon-pc.localdomain ([188.27.130.21]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ac239736153sm566347466b.108.2025.03.09.00.48.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Mar 2025 00:48:45 -0800 (PST) From: Cosmin Tanislav To: Cc: Tomi Valkeinen , Cosmin Tanislav , Mauro Carvalho Chehab , Rob Herring , Krzysztof Kozlowski , Conor Dooley , =?utf-8?q?Niklas_S=C3=B6derlund?= , Julien Massot , Catalin Marinas , Will Deacon , Greg Kroah-Hartman , Liam Girdwood , Mark Brown , Linus Walleij , Bartosz Golaszewski , Bjorn Andersson , Geert Uytterhoeven , Dmitry Baryshkov , Arnd Bergmann , Taniya Das , Biju Das , =?utf-8?q?N=C3=ADcolas_F_=2E_R_=2E_A?= =?utf-8?q?_=2E_Prado?= , Eric Biggers , Javier Carrasco , Ross Burton , Hans Verkuil , Sakari Ailus , Laurent Pinchart , Zhi Mao , Kieran Bingham , Dongcheng Yan , AngeloGioacchino Del Regno , Benjamin Mugnier , Tommaso Merciai , Dan Carpenter , Ihor Matushchak , Laurentiu Palcu , 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, Cosmin Tanislav Subject: [RFC PATCH v2 07/16] dt-bindings: media: i2c: max96712: add myself as maintainer Date: Sun, 9 Mar 2025 10:47:59 +0200 Message-ID: <20250309084814.3114794-8-demonsingur@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250309084814.3114794-1-demonsingur@gmail.com> References: <20250309084814.3114794-1-demonsingur@gmail.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250309_004848_127483_2D39531E X-CRM114-Status: GOOD ( 13.93 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Analog Devices is taking responsability for the maintenance of the Maxim GMSL2/3 devices. Add myself to the maintainers list and to the device tree bindings. Signed-off-by: Cosmin Tanislav --- Documentation/devicetree/bindings/media/i2c/maxim,max96712.yaml | 1 + MAINTAINERS | 1 + 2 files changed, 2 insertions(+) diff --git a/Documentation/devicetree/bindings/media/i2c/maxim,max96712.yaml b/Documentation/devicetree/bindings/media/i2c/maxim,max96712.yaml index 26f85151afbd..efdece2b33b9 100644 --- a/Documentation/devicetree/bindings/media/i2c/maxim,max96712.yaml +++ b/Documentation/devicetree/bindings/media/i2c/maxim,max96712.yaml @@ -9,6 +9,7 @@ title: Quad GMSL2 to CSI-2 Deserializer with GMSL1 Compatibility maintainers: - Niklas Söderlund + - Cosmin Tanislav description: | The MAX96712 deserializer converts GMSL2 or GMSL1 serial inputs into MIPI diff --git a/MAINTAINERS b/MAINTAINERS index f8ffb7cff9c5..abf3afc95fc9 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -14184,6 +14184,7 @@ F: drivers/media/i2c/max9286.c MAX96712 QUAD GMSL2 DESERIALIZER DRIVER M: Niklas Söderlund +M: Cosmin Tanislav L: linux-media@vger.kernel.org S: Maintained F: Documentation/devicetree/bindings/media/i2c/maxim,max96712.yaml From patchwork Sun Mar 9 08:48:00 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cosmin Tanislav X-Patchwork-Id: 14008264 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 4BD77C282D1 for ; Sun, 9 Mar 2025 09:03:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From: Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=MRFND54pfWCeCgjcI3QhzMAI2iu+uBF4oELfUtwbQW4=; b=h+ApSwzVkbnc0wOgnQ1j1yLYdI LKQhwbFle+2jjj+6oMKO+J6ODUu2afqYWue5vAMoeHpMsSay0q+UlxSQeP0/pvjJuVKePy3F6yt19 uRDWn5jvdA18iluAFbpwWQA86atBtlHyyT6804FWiM0oaFysSIqfjIoM+m9TLvSgMNCeUkOMTtPCs 4M6kNRuHE1LYGMDypaUgYqL8GDPLV4n3WYaSAZHUWBLWXqSExnT0F4dBsoHosqYJOUb0IhKxDBYwZ L6cBk04GWwn9KRhYRAyYvI3sHHGN6et2HkDmkwUcwrWCFA7ZbWKEUUEFU6PXQ8N3E2/4YQr2b8zG7 1qa9a1ZA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1trCZ9-00000000ERr-4BHP; Sun, 09 Mar 2025 09:03:23 +0000 Received: from mail-ed1-x52c.google.com ([2a00:1450:4864:20::52c]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1trCL4-00000000CSp-3gGD for linux-arm-kernel@lists.infradead.org; Sun, 09 Mar 2025 08:48:52 +0000 Received: by mail-ed1-x52c.google.com with SMTP id 4fb4d7f45d1cf-5e5e7fd051bso2574007a12.0 for ; Sun, 09 Mar 2025 00:48:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741510129; x=1742114929; darn=lists.infradead.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=MRFND54pfWCeCgjcI3QhzMAI2iu+uBF4oELfUtwbQW4=; b=FxQ/J/a5p+Pfov/Z5wzcS87y7qMtJAPW2iWHKiwBIPiLUXPWWLMa1ARYi75Xjt9dXt kCE8x+U//WUN/H1j6MqtzXw3bFozxedDAmBdQ+gATYd5wkdGf5EgaQ/Em/WrGFJIm2Jk QG3Zvdkf95C5Ro7MwIJVxjtYZ+/IV6iHQ8zaEpAt+ntBCbgPrwoCvw31yDHAzrs4MYyy 8OYDCPMxVW0HDwYFI5xkpcGBMCKLtjfZBOtKMEYGjgknHX/lq5h6BIME4JZvZCIWGOfg 0UY/GH1rV8NvaDX4DGOPMIKehh6clgEHf1y1UDf+OuH/+8YqUxDKDFMVebhZQtOwyTBV iVnA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741510129; x=1742114929; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=MRFND54pfWCeCgjcI3QhzMAI2iu+uBF4oELfUtwbQW4=; b=E+1+9pSotAoI/1PDhdX1HyYpgwYUr5vKlSydI+6GaZTjLB4QtPUUHQr45XOhsf2a6p 9FrE9marWFF2zikjf7XDRpeCBlwMWCulPiI7Ksxy1LzX2xNYvyfpNm1y5I+SickBgkzA JXO5uuzUtYvJG9+LwFx9yqNkXL0EKz0nWCz+jooudvK/enQFFbRZG4NB1D36O6eEkm4O 7bk4EfjHAjODMyzM+0mQU3SLaBQycrtEjwNTrj/cE7M8r0muAk0xKyhv0Tvqmb+HxHWM oypEZyQF7pDVHZnTZoUe0qIOy1bIk93md/4a48oIb2KbXKo6LgP+cRC9+EIzkGchDsiZ f/aQ== X-Forwarded-Encrypted: i=1; AJvYcCUBV4Jht5Ksml/sgSgNsDJzA+aj4kafEQCTd1um1SYYyTwcJYHIDcpHgR1B5Nt/nc2xSvyLZjmxXZaixSqnHiSD@lists.infradead.org X-Gm-Message-State: AOJu0YxCJMlgOBD592O5WtAmIMCE6cx9xbg191Rsx419luLGoM3d/BgD 6kK9Jt+SVEwuxAS4H3xPgiTY08oKHwCKTWG5wJXk+iUrkl7FwqMI X-Gm-Gg: ASbGncujCKi6QdQDdyCltdot9xNoSH+emE9Ehq3Bw7ScDW1M0UiVpGAuiH8zbYDYSiW /jTaw/g4Py6SQvx+4eITDEfm46TDwzIkbxNZ+pG1Kle3oB1oNN1vmY0Be0Q2MJQc4nH2ynkacOQ 4mWYLhL+VMDtm/4ZEmxozRUYoiyNzMsxJlCOIuOq6GnRWZKRyNO352QU0EK7/0ucBY/orSl2oU3 UfcekGeXv/vrsFpmZSt0K2Jr/x5prFi5hj2Ei4jHc1KvrE+XLwAVh9l0kHBYg813nw/NrLHOQJC 91OyRHqOf+ur6k6vjE7AqSefvSqrD8/h0w/hexVf8coFa1kKmc7DNQ0TmQ== X-Google-Smtp-Source: AGHT+IEQtmKUVV88EQYf1nXCbrxWnIHZsl/uXnzZPIJH7g+3jAJsdmu+BnkfQ0xHlYuHu8xDJYCjTQ== X-Received: by 2002:a17:907:3f1b:b0:ac2:7bd9:b2f with SMTP id a640c23a62f3a-ac27bd90f23mr491776566b.9.1741510129117; Sun, 09 Mar 2025 00:48:49 -0800 (PST) Received: from demon-pc.localdomain ([188.27.130.21]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ac239736153sm566347466b.108.2025.03.09.00.48.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Mar 2025 00:48:48 -0800 (PST) From: Cosmin Tanislav To: Cc: Tomi Valkeinen , Cosmin Tanislav , Mauro Carvalho Chehab , Rob Herring , Krzysztof Kozlowski , Conor Dooley , =?utf-8?q?Niklas_S=C3=B6derlund?= , Julien Massot , Catalin Marinas , Will Deacon , Greg Kroah-Hartman , Liam Girdwood , Mark Brown , Linus Walleij , Bartosz Golaszewski , Bjorn Andersson , Geert Uytterhoeven , Dmitry Baryshkov , Arnd Bergmann , Taniya Das , Biju Das , =?utf-8?q?N=C3=ADcolas_F_=2E_R_=2E_A?= =?utf-8?q?_=2E_Prado?= , Eric Biggers , Javier Carrasco , Ross Burton , Hans Verkuil , Sakari Ailus , Laurent Pinchart , Zhi Mao , Kieran Bingham , Dongcheng Yan , AngeloGioacchino Del Regno , Benjamin Mugnier , Tommaso Merciai , Dan Carpenter , Ihor Matushchak , Laurentiu Palcu , 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, Cosmin Tanislav Subject: [RFC PATCH v2 08/16] dt-bindings: media: i2c: max96712: use pattern properties for ports Date: Sun, 9 Mar 2025 10:48:00 +0200 Message-ID: <20250309084814.3114794-9-demonsingur@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250309084814.3114794-1-demonsingur@gmail.com> References: <20250309084814.3114794-1-demonsingur@gmail.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250309_004850_918990_3403D77F X-CRM114-Status: GOOD ( 11.75 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org The MAX96712 and MAX96724 support up to 4 separate PHYs, depending on the selected PHY configuration. Use patternProperties to document this. The input ports are all the same, use patternProperties for them. Signed-off-by: Cosmin Tanislav --- .../bindings/media/i2c/maxim,max96712.yaml | 29 +++++++------------ 1 file changed, 10 insertions(+), 19 deletions(-) diff --git a/Documentation/devicetree/bindings/media/i2c/maxim,max96712.yaml b/Documentation/devicetree/bindings/media/i2c/maxim,max96712.yaml index efdece2b33b9..bf8c861c836b 100644 --- a/Documentation/devicetree/bindings/media/i2c/maxim,max96712.yaml +++ b/Documentation/devicetree/bindings/media/i2c/maxim,max96712.yaml @@ -40,27 +40,15 @@ properties: ports: $ref: /schemas/graph.yaml#/properties/ports - properties: - port@0: + patternProperties: + '^port@[0-3]$': $ref: /schemas/graph.yaml#/properties/port - description: GMSL Input 0 + description: GMSL Input port - port@1: - $ref: /schemas/graph.yaml#/properties/port - description: GMSL Input 1 - - port@2: - $ref: /schemas/graph.yaml#/properties/port - description: GMSL Input 2 - - port@3: - $ref: /schemas/graph.yaml#/properties/port - description: GMSL Input 3 - - port@4: + '^port@[4-7]$': $ref: /schemas/graph.yaml#/$defs/port-base unevaluatedProperties: false - description: CSI-2 Output + description: CSI-2 Output port properties: endpoint: @@ -78,8 +66,11 @@ properties: - data-lanes - bus-type - required: - - port@4 + anyOf: + - required: [port@4] + - required: [port@5] + - required: [port@6] + - required: [port@7] required: - compatible From patchwork Sun Mar 9 08:48:01 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cosmin Tanislav X-Patchwork-Id: 14008265 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 2512BC282D1 for ; Sun, 9 Mar 2025 09:05:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From: Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=2/XMiQrVzYH+TzZJLylgzzmMHkdleZU+slDLqGTb2MY=; b=lX4Fa8eUe4dMsjSkeWvw7ZWSTV aY5n3tYmpKj1JYuoi07Oj/YvbAfLpEHT75fUgytiLOC3wbd+/NcGgo7EhWDtEC1Zyh1qhAFMSz/FT YfjgmIyM8IuKLO9foHUMg1GqHZyHlSRyQLY7O143PLlPV5FgUW5b5ZZqx5Sr5bLUzrNk5v4DjsRUy 1WHkIsrTTdtM6NA0y6vewH1BUOfCf46nHgfBwkJ3oIGFfLoJYPqg3fcrc8YZUvgZc7HsoiXO+KPTN lONdUsYUFQNsYW6cB/3Pe8tTXmRzQqTC83kLTuT/YTfA1OhU/n2DM1Tenol0I08EwfJ/hgzH74KIn Jn4uUBLg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1trCal-00000000Eck-2pg3; Sun, 09 Mar 2025 09:05:03 +0000 Received: from mail-ej1-x634.google.com ([2a00:1450:4864:20::634]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1trCL8-00000000CUL-27IO for linux-arm-kernel@lists.infradead.org; Sun, 09 Mar 2025 08:48:55 +0000 Received: by mail-ej1-x634.google.com with SMTP id a640c23a62f3a-abf3d64849dso380928866b.3 for ; Sun, 09 Mar 2025 00:48:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741510133; x=1742114933; darn=lists.infradead.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=2/XMiQrVzYH+TzZJLylgzzmMHkdleZU+slDLqGTb2MY=; b=gk7R6Mum4q/35jO8vAbcKTJbTbfxhcKxuZwURc6wlPBQGa5TFKnbRpvf0S8r6phLE9 XQAykVOMtBkGEC7J/2oaINoFgCrBVcUFZo8Pwfa62r8cN1C/ZPxRi7tDiXDnHoGxu7W1 0XeI0ShVLzMbQZhZFM/LkuWF8cpL+A0QComjW+KMe3RNIpfWfjsbarqglwqniHwQ0gmm fdMQkMc8h3QStLdlBCFH6hXqFeN7caMUrcTs9D5kEcS62hDLLwIg6f+ZX+CXz3pVZnxm cd3KT8J3FbOxovVgawpOzUJAOhUij2IsQBzNGIYgtygvLs10R+2SzyE1BrKncfWWXsu8 l6yg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741510133; x=1742114933; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=2/XMiQrVzYH+TzZJLylgzzmMHkdleZU+slDLqGTb2MY=; b=QQc71da3pt1h6RO3iVldPf9OzNOOTiMVXV/mupLgv9ZgyrdBf2erfkuXzRX//7/4QB EmAPW08JxLasg0+LZQz++91S9lK8mig8MDfB3ntRjPnIkQOm18g2G6JzgExFayUfYlJA p07LM3mzgV/SIl/sV1pE3ovsNtStkzb8z2XNd+GfXWwpg7yJVD2x1TxoQItD/abMz6IJ n9B2y3eRdYiflc4nJltCpX+HY1gfHJPPpXzB1+ozMD53ff3HVGRN+7gPPrNPUDf6Swiz u9p+n2oqy8zsc6JImakl6+rk7nam55Ma122D/joL/6c4pvre4eDn7V744iw0isdmfHnr nSQA== X-Forwarded-Encrypted: i=1; AJvYcCXRELLe073xComUnvrzkodg+LvIB+DhrHuiCwJYGrYRbzypc87OT5teSSu2b1Uc+/XKU6O70M5Mi0ltpnizkJfs@lists.infradead.org X-Gm-Message-State: AOJu0Yz43/faHUd3nFBVF/lzdiD8s/f7Yo3IdXMlM8M0DXay4lEeDOVW vJj8d+4Z722nDoRkL0OM/U/qJOOJx/dGh75UIdwskj0NZdSgRJAy X-Gm-Gg: ASbGncuVn3QgPPTsJ1EyR0YAIM5Q9AlrgAAfGXNMAXXtna40Foc5oDuOvsPWAP6XFFD smwH0aU6iH6xpM/45gZZbwLYVhFVl3Lhfvvv7AqXS0FqrMeqord4ov5Z/6CcgMGYP3XFsr7zn5+ dvgGwKK3TxP3NijqxwTQpBG+/bsOqaP+Kz79HEajbXDcPrZbeVvGNzJ7FkSzxzsNyiObWNf6o8v sg/VFHKEVaPCItInerpnU1UMOC5VBpLamkicHExkY0SfHdiUS09AQBicVim3BlkjGmLcfuxZQ3v UThzKoErVOG/JV6Nr2VnKjJYTvbQC4ueL3Siuq6POBJpQeIUCTfx5XrJtczWsmS5ct20 X-Google-Smtp-Source: AGHT+IEEWfGQxkuZd8tf5P3vShYuUP5N/11BTkYFYFiWpUuAwDxrOihccUqBS80lDlE4wNLi4HgKYA== X-Received: by 2002:a05:6402:280d:b0:5d0:bf5e:eb8 with SMTP id 4fb4d7f45d1cf-5e5e2468800mr24297960a12.23.1741510132648; Sun, 09 Mar 2025 00:48:52 -0800 (PST) Received: from demon-pc.localdomain ([188.27.130.21]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ac239736153sm566347466b.108.2025.03.09.00.48.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Mar 2025 00:48:52 -0800 (PST) From: Cosmin Tanislav To: Cc: Tomi Valkeinen , Cosmin Tanislav , Mauro Carvalho Chehab , Rob Herring , Krzysztof Kozlowski , Conor Dooley , =?utf-8?q?Niklas_S=C3=B6derlund?= , Julien Massot , Catalin Marinas , Will Deacon , Greg Kroah-Hartman , Liam Girdwood , Mark Brown , Linus Walleij , Bartosz Golaszewski , Bjorn Andersson , Geert Uytterhoeven , Dmitry Baryshkov , Arnd Bergmann , Taniya Das , Biju Das , =?utf-8?q?N=C3=ADcolas_F_=2E_R_=2E_A?= =?utf-8?q?_=2E_Prado?= , Eric Biggers , Javier Carrasco , Ross Burton , Hans Verkuil , Sakari Ailus , Laurent Pinchart , Zhi Mao , Kieran Bingham , Dongcheng Yan , AngeloGioacchino Del Regno , Benjamin Mugnier , Tommaso Merciai , Dan Carpenter , Ihor Matushchak , Laurentiu Palcu , 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, Cosmin Tanislav Subject: [RFC PATCH v2 09/16] dt-bindings: media: i2c: max96712: add support for I2C MUX Date: Sun, 9 Mar 2025 10:48:01 +0200 Message-ID: <20250309084814.3114794-10-demonsingur@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250309084814.3114794-1-demonsingur@gmail.com> References: <20250309084814.3114794-1-demonsingur@gmail.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250309_004854_542345_1CFDAB0A X-CRM114-Status: GOOD ( 11.68 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org MAX96712 and MAX96724 have more than one GMSL2 link, and each link is capable of connecting to a separate serializer. If these serializers have the same CFG pins configuration, they will also have the same I2C address, causing conflicts unless the deserializer muxes the I2C channels. Moreover, the serializers can have the same hardware attached to their respective I2C bus. The MAX96712 and MAX96724 suppot I2C channel muxing via the GMSL2 link to facilitate communication to each of the connected serializers. Document this capability. Signed-off-by: Cosmin Tanislav --- .../bindings/media/i2c/maxim,max96712.yaml | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/Documentation/devicetree/bindings/media/i2c/maxim,max96712.yaml b/Documentation/devicetree/bindings/media/i2c/maxim,max96712.yaml index bf8c861c836b..9e27568e0105 100644 --- a/Documentation/devicetree/bindings/media/i2c/maxim,max96712.yaml +++ b/Documentation/devicetree/bindings/media/i2c/maxim,max96712.yaml @@ -37,6 +37,19 @@ properties: enable-gpios: true + i2c-mux: + $ref: /schemas/i2c/i2c-mux.yaml# + unevaluatedProperties: false + patternProperties: + '^i2c@[0-3]$': + $ref: /schemas/i2c/i2c-controller.yaml# + unevaluatedProperties: false + properties: + reg: + items: + minimum: 0 + maximum: 3 + ports: $ref: /schemas/graph.yaml#/properties/ports From patchwork Sun Mar 9 08:48:02 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cosmin Tanislav X-Patchwork-Id: 14008268 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 59DCBC282D1 for ; Sun, 9 Mar 2025 09:06:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From: Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=7binUbZaUuDaOb3p2Eu7VlTLMfhBcoFyA3aW55N69bM=; b=jw26lCgCYNzP6/OVZVHVlKM5qB EnKhm2n9YOwdLFHxlwBCvAIvhmthEi/ccpHsSgkZp4Z3e4/onT7HLmdXKLJ02+Ds2Um1PreWv13vR ggAXHw5B5IBCiWIAY80wbYsQw9Az4d9PMgnTz5SDx6GH28I016o/UQ9ocfXZBQM+TnMiKTHS/vCml CnEY7SZRl8ngnkovWobysiOYjtfdzPDqE3aJ1nFnapHZpsuzXlmqXWN2ukSUoF51nM/WAR6+KyxNF 0o8HIeYAG9Zst/f5aNX45uLt1ArE90UBL8zV4sLsP7KKUgDlR1GT9qGjlni8J4U0SUE3ulAfJzM4C S0FhgQkA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1trCcN-00000000Elt-1RzC; Sun, 09 Mar 2025 09:06:43 +0000 Received: from mail-ej1-x635.google.com ([2a00:1450:4864:20::635]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1trCLA-00000000CVh-3TaR for linux-arm-kernel@lists.infradead.org; Sun, 09 Mar 2025 08:48:57 +0000 Received: by mail-ej1-x635.google.com with SMTP id a640c23a62f3a-aaecf50578eso582082666b.2 for ; Sun, 09 Mar 2025 00:48:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741510135; x=1742114935; darn=lists.infradead.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=7binUbZaUuDaOb3p2Eu7VlTLMfhBcoFyA3aW55N69bM=; b=Ah9Qzyizy26XXN62X2QR4YWIdH8hpn6482DU37n474hGCyANp5mogTNqdfKgrvP+9b RltZ8F1y9bwPrTldu27Y+P2OLRbDjCMBZJO1ZLF9aOy1IFxpyNFeGx85DAQxyQgB3++n qRcjNZAwPSBKaY/+IHsuFGFKSYtjwx33JZCeK0IlvfwpgSVKmHxishCqztRM0GxSo39c +wWggwhmL4vPJPqGvYRAiY9CNNRVvWaQmoHNxyDz+/uTLfgrcEImN67Jv9h/JKAuo9Ip Z2JBkxCljJmaNJJyE7M8lWFluREiHIOUjtCgkFN4HP/Escnnl6NrvsllxFRdfR0Kp6nM 71Dw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741510135; x=1742114935; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=7binUbZaUuDaOb3p2Eu7VlTLMfhBcoFyA3aW55N69bM=; b=CFtR9Dk2d0m3D0V24Kc7Lc2NWL6WRhAc/in/2y1hnRI7P92m7s4xojlD+4f4JPwWFh 1amaBwevCIpsfRii1RV7XRF4DqBU+zZ5N+aOX4MEQH1X8jxG4ubl2TWMqm1jTBZ5+DMJ UM4bJsbrfCEbZ3Ivr9rrXgX6DCqQq4BDr2be/MB8llvpy1vgFSBOhe3T1UpKt7HzHR70 5Jo+3nwO0My+/o2ESVJ4GocCmcn0TL/wbR6qKjfjrBpps31+knkjbEAW71MsRZr4AOVK rMo9vSQ4cujOQqiQ/VuFrrXoaq7I7/SLShuR4sCouVRi4frXaxbAmb4MlvtS+d4PCxbr qAMA== X-Forwarded-Encrypted: i=1; AJvYcCUi9M5eKMaHJ6C9odkikWwQCbYK8B+tQviqlbwDocG+wpx5ywGHVkZHSvbQOPGJTkHKp0Urtp4vB2OhZXlrZRRU@lists.infradead.org X-Gm-Message-State: AOJu0YxUORpeJpDC9fAc2uf4sa4DP4PE0KrSf8uLC6xNdY+bpuhFzupl K1sWypO64FH4G2A4EaQDw/03cDMb+zESslsMoZ2BFpFMpQJGq9kZ X-Gm-Gg: ASbGncuP0dls9CYnhjB5H2FDJlWSnB5QzBy8lorOKVbvpPRk7rq1rT7MTpkVq/WL2ZL 9LbwItHEPp9HqQK7pYlHqjZbjPwteeGM1MtvMPEIFebOgr+RzrNqxN+KphXj9kJ7FS1BbESKB/w pK+WNLkaTesmcrtLBlXlCJ2c/T1TN+CBmodXz8giu22wFHKIXGQ24nHaRATDFfnZRHU83DjJgfe U0AfgNpZH4ESSu1Srm1aSB4pZCK1QcNVISQ5I8C2vkEqDhH8yphOu6CcnVvmQ+CfEZ0apskFCjr Mt0vN1YhWKiq9dM4Mm7ahSX3E6VC/UrrTKKGEmbWZj/95F4qT0QtDky/Lg== X-Google-Smtp-Source: AGHT+IHmESnp20S37aW3Ui2usQAvY/2Y8u4CD0NZ6eDoOr+o1EaAHluADrNw5wzWwlijBh6ABetEoQ== X-Received: by 2002:a17:906:6a29:b0:abf:40ac:4395 with SMTP id a640c23a62f3a-ac252bb26b7mr1238784266b.31.1741510135400; Sun, 09 Mar 2025 00:48:55 -0800 (PST) Received: from demon-pc.localdomain ([188.27.130.21]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ac239736153sm566347466b.108.2025.03.09.00.48.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Mar 2025 00:48:54 -0800 (PST) From: Cosmin Tanislav To: Cc: Tomi Valkeinen , Cosmin Tanislav , Mauro Carvalho Chehab , Rob Herring , Krzysztof Kozlowski , Conor Dooley , =?utf-8?q?Niklas_S=C3=B6derlund?= , Julien Massot , Catalin Marinas , Will Deacon , Greg Kroah-Hartman , Liam Girdwood , Mark Brown , Linus Walleij , Bartosz Golaszewski , Bjorn Andersson , Geert Uytterhoeven , Dmitry Baryshkov , Arnd Bergmann , Taniya Das , Biju Das , =?utf-8?q?N=C3=ADcolas_F_=2E_R_=2E_A?= =?utf-8?q?_=2E_Prado?= , Eric Biggers , Javier Carrasco , Ross Burton , Hans Verkuil , Sakari Ailus , Laurent Pinchart , Zhi Mao , Kieran Bingham , Dongcheng Yan , AngeloGioacchino Del Regno , Benjamin Mugnier , Tommaso Merciai , Dan Carpenter , Ihor Matushchak , Laurentiu Palcu , 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, Cosmin Tanislav Subject: [RFC PATCH v2 10/16] dt-bindings: media: i2c: max96712: add support for POC supplies Date: Sun, 9 Mar 2025 10:48:02 +0200 Message-ID: <20250309084814.3114794-11-demonsingur@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250309084814.3114794-1-demonsingur@gmail.com> References: <20250309084814.3114794-1-demonsingur@gmail.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250309_004856_867515_D4829001 X-CRM114-Status: GOOD ( 11.88 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org The GMSL links can carry power to the serializer when using coaxial cables. Document this capability. Signed-off-by: Cosmin Tanislav --- .../devicetree/bindings/media/i2c/maxim,max96712.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Documentation/devicetree/bindings/media/i2c/maxim,max96712.yaml b/Documentation/devicetree/bindings/media/i2c/maxim,max96712.yaml index 9e27568e0105..a497c7af645e 100644 --- a/Documentation/devicetree/bindings/media/i2c/maxim,max96712.yaml +++ b/Documentation/devicetree/bindings/media/i2c/maxim,max96712.yaml @@ -85,6 +85,10 @@ properties: - required: [port@6] - required: [port@7] +patternProperties: + '^port[0-3]-poc-supply$': + description: Regulator providing Power over Coax for GMSL ports + required: - compatible - reg From patchwork Sun Mar 9 08:48:03 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cosmin Tanislav X-Patchwork-Id: 14008269 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 9A07DC282D1 for ; Sun, 9 Mar 2025 09:08:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From: Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=OO5bhUSug85JnTxop3j0N4R2QYNXLJGDFenf8aqUDuQ=; b=Dl5ICclaZS0o8dyD9Bc/7wez9Z GoyAGQgsoV9kbiEu92ZRz3w69sDlDiwIjlQhvx9+Whf3UgyW/U/WU85H+dvy+026cRV6YkFfafbgb jPmCuMqPLmt90V2iJx71COU2MeeHgyu9xibY1OlKMhj6MbdCDqibBNbtJFkk0Bwb/Ir37BzKy2ENy sQi/52AYQ00TtJ0j4/KyMeD6saD7aBRlEECVusd93cKVglykVvQT2UYrd5WFD+xmNqDBdm8czEu2F lgI0n9nPzIcE3nIs3sccbG8IU5KNJVJ4EpvJ1Yr5CToUrFGYNffeSk8yySJXNsn9TdisnMsod57Qr xdLq5lug==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1trCdy-00000000Es7-01Kr; Sun, 09 Mar 2025 09:08:22 +0000 Received: from mail-ej1-x630.google.com ([2a00:1450:4864:20::630]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1trCLE-00000000CWz-32kE for linux-arm-kernel@lists.infradead.org; Sun, 09 Mar 2025 08:49:02 +0000 Received: by mail-ej1-x630.google.com with SMTP id a640c23a62f3a-ab78e6edb99so496311366b.2 for ; Sun, 09 Mar 2025 00:49:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741510139; x=1742114939; darn=lists.infradead.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=OO5bhUSug85JnTxop3j0N4R2QYNXLJGDFenf8aqUDuQ=; b=nPZNmdN53IP5yuRcyRG1mZfJ+7/QESbh4USPMVJcd2UEkjj0lAZ+b0TKa7bgEvKpqz 1HOwMc8622tRDcwguK7GUzIX/6k0DIcHwGZwoESqQnqa5LnJXkcyI+OpRJNat8sGfpAG QdGSDPmk0DctfYmFq2Ufha9qvvzJ2k2YQ4pl4Mb3ndHc9uLLbmqQwB1S8s4wGAhTnThx +KlwFSAEYMJwDnorLSYX/WeUiRFmKyNBR3M3U0kQNYIGD3/JGcfikg4TfmJPrVJBNXBp AIeypPhJXMDLkE0bp5lb0azxNGRWHXtORiKqDv6n5VyqJAOPeyrrfFDnqVBucSKRINqE iuqA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741510139; x=1742114939; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=OO5bhUSug85JnTxop3j0N4R2QYNXLJGDFenf8aqUDuQ=; b=BlY8Z3xR22xRsX420ACvcPX7C/FPDlzYSwZltxPYeiu4CsAHwzy9rKgChloeympxMB 5SyHheLf760sIGCgOax5qqk+pg8bReRFT7R8c5ATJzmM6tSyhyTwktRvIzadRZehp6tl bbx3Mg8DYKb157CzLAiwHVKIZ97j9snrmqwqKO4sP1HehFDTHAdZBGfnEfqUxzhpZDti 9XBC6Wqdi5hwcXej8y0zWkrLxlp0HJBdlB2BAFxZSdrjAqV+Pg4en1QT8QGt3AGKZe2q e243erY/R+v1PzIZ8DodcOMbmYzLCyBX3XKboBGywTg9r5+iKpwx0Be2Qfqt3sT/ouNe zK5Q== X-Forwarded-Encrypted: i=1; AJvYcCU1zHmyYLfyYl9EtwknVa8fKnsOvGKQWN+vdyE1V2biVrI1Hb5oHJzZS38Pz+BRbdOw2fMssnV1GI4Vfe8303+Q@lists.infradead.org X-Gm-Message-State: AOJu0YzXYHHtv+Frrw82P9Bng4HyWfUSpDtZ/r5ZtEVrArpAGVHHS7pf nby0T6YYYSVWLtlBhGy2HPgdI6XKBCi1TkGLBTS0Ukjll5jt+rn1 X-Gm-Gg: ASbGncu5ZalrVq2B2orv+gHsMfveHohDP1gosLI6XVSoBxKu6EhU40i2M1jCMcsdpyX RyM2ykOHpFq+fG8/iU+ALhdFtlNgKs32fihelpqHwp/PnUqT0cfjAKCK3dQtguYcX/wVq+5PplH 3e2Nm/QHEZb+sgX33nfg9lcdKON7June9tAp7L4/HOr3shgJXsz3Gfc0YSC3YkRsMpxTPedx5Ks mzZPO0jjtkA3J6ycCHIwHROAF6yRHDEIASoQZ9WzbYuw/2WWQpOk2vC4d4pjwaCWOvZ4dH4m1wX MUUx3fl8jmswxsWNUYy0qTOT1NtaBAuLzDJ3HEGhsvXuk/lHI7t8mNUwKQ== X-Google-Smtp-Source: AGHT+IHy+LzMc71mwJVmeE3VhZ+U7VNFDB59nt4xluoaJbc4P+gscKNqhjrxEMwyTZ4CTBs88BRRQQ== X-Received: by 2002:a17:907:3f1e:b0:abf:4d97:9ec3 with SMTP id a640c23a62f3a-ac2526434f1mr1147304166b.13.1741510138833; Sun, 09 Mar 2025 00:48:58 -0800 (PST) Received: from demon-pc.localdomain ([188.27.130.21]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ac239736153sm566347466b.108.2025.03.09.00.48.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Mar 2025 00:48:57 -0800 (PST) From: Cosmin Tanislav To: Cc: Tomi Valkeinen , Cosmin Tanislav , Mauro Carvalho Chehab , Rob Herring , Krzysztof Kozlowski , Conor Dooley , =?utf-8?q?Niklas_S=C3=B6derlund?= , Julien Massot , Catalin Marinas , Will Deacon , Greg Kroah-Hartman , Liam Girdwood , Mark Brown , Linus Walleij , Bartosz Golaszewski , Bjorn Andersson , Geert Uytterhoeven , Dmitry Baryshkov , Arnd Bergmann , Taniya Das , Biju Das , =?utf-8?q?N=C3=ADcolas_F_=2E_R_=2E_A?= =?utf-8?q?_=2E_Prado?= , Eric Biggers , Javier Carrasco , Ross Burton , Hans Verkuil , Sakari Ailus , Laurent Pinchart , Zhi Mao , Kieran Bingham , Dongcheng Yan , AngeloGioacchino Del Regno , Benjamin Mugnier , Tommaso Merciai , Dan Carpenter , Ihor Matushchak , Laurentiu Palcu , 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, Cosmin Tanislav Subject: [RFC PATCH v2 11/16] dt-bindings: media: i2c: add MAX9296A, MAX96716A, MAX96792A Date: Sun, 9 Mar 2025 10:48:03 +0200 Message-ID: <20250309084814.3114794-12-demonsingur@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250309084814.3114794-1-demonsingur@gmail.com> References: <20250309084814.3114794-1-demonsingur@gmail.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250309_004900_767139_EE755FA1 X-CRM114-Status: GOOD ( 18.55 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org The MAX9296A deserializer converts single or dual serial inputs to MIPI CSI-2 outputs. The GMSL2 links operate at a fixed rate of 3Gbps or 6Gbps in the forward direction and 187.5Mbps in the reverse direction. In GMSL1 mode, each serial link can be paired with 3.12Gbps or 1.5Gbps GMSL1 serializers or operate up to 4.5Gbps with GMSL2 serializers with GMSL1 backward compatibility. The MAX9296A supports mixed GMSL2 and GMSL1 links. The serial inputs operate independently, allowing videos with different timings and resolutions to be received on each input. MAX96716A supports both tunnel and pixel mode. MAX96792A supports both tunnel and pixel mode, and has two GMSL3 links. Signed-off-by: Cosmin Tanislav --- .../bindings/media/i2c/maxim,max9296a.yaml | 281 ++++++++++++++++++ MAINTAINERS | 6 + 2 files changed, 287 insertions(+) create mode 100644 Documentation/devicetree/bindings/media/i2c/maxim,max9296a.yaml diff --git a/Documentation/devicetree/bindings/media/i2c/maxim,max9296a.yaml b/Documentation/devicetree/bindings/media/i2c/maxim,max9296a.yaml new file mode 100644 index 000000000000..97731549d161 --- /dev/null +++ b/Documentation/devicetree/bindings/media/i2c/maxim,max9296a.yaml @@ -0,0 +1,281 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +# Copyright (C) 2024 Collabora Ltd. +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/media/i2c/maxim,max9296a.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Maxim MAX9296A GMSL2 to CSI-2 Deserializer + +maintainers: + - Cosmin Tanislav + +description: + The MAX9296A deserializer converts single or dual serial inputs to + MIPI CSI-2 outputs. The GMSL2 links operate at a fixed rate of 3Gbps + or 6Gbps in the forward direction and 187.5Mbps in the reverse + direction. In GMSL1 mode, each serial link can be paired with 3.12Gbps + or 1.5Gbps GMSL1 serializers or operate up to 4.5Gbps with GMSL2 + serializers with GMSL1 backward compatibility. The MAX9296A supports + mixed GMSL2 and GMSL1 links. The serial inputs operate independently, + allowing videos with different timings and resolutions to be received + on each input. + + MAX96716A supports both tunnel and pixel mode. + MAX96792A supports both tunnel and pixel mode, and has two GMSL3 links. + +properties: + compatible: + enum: + - maxim,max9296a + - maxim,max96716a + - maxim,max96792a + + reg: + maxItems: 1 + + powerdown-gpios: + maxItems: 1 + description: Specifier for the GPIO connected to the PWDNB pin. + + port0-poc-supply: + description: Regulator providing Power over Coax for GMSL port 0 + + port1-poc-supply: + description: Regulator providing Power over Coax for GMSL port 1 + + i2c-mux: + $ref: /schemas/i2c/i2c-mux.yaml# + unevaluatedProperties: false + patternProperties: + '^i2c@[0-1]$': + $ref: /schemas/i2c/i2c-controller.yaml# + unevaluatedProperties: false + properties: + reg: + items: + minimum: 0 + maximum: 1 + + i2c-alias-pool: + maxItems: 2 + + i2c-atr: + type: object + additionalProperties: false + + properties: + '#address-cells': + const: 1 + + '#size-cells': + const: 0 + + patternProperties: + '^i2c@[0-1]$': + $ref: /schemas/i2c/i2c-controller.yaml# + unevaluatedProperties: false + properties: + reg: + items: + minimum: 0 + maximum: 1 + + ports: + $ref: /schemas/graph.yaml#/properties/ports + + patternProperties: + '^port@[0-1]$': + $ref: /schemas/graph.yaml#/properties/port + unevaluatedProperties: false + description: GMSL Input + properties: + endpoint: + $ref: /schemas/media/video-interfaces.yaml# + unevaluatedProperties: false + description: Endpoint for GMSL2-Link port. + + '^port@[2-3]$': + $ref: /schemas/graph.yaml#/$defs/port-base + unevaluatedProperties: false + description: CSI-2 Output port + properties: + endpoint: + $ref: /schemas/media/video-interfaces.yaml# + unevaluatedProperties: false + + properties: + data-lanes: + minItems: 1 + maxItems: 4 + + lane-polarities: + minItems: 1 + maxItems: 5 + + link-frequencies: + maxItems: 1 + + required: + - data-lanes + + anyOf: + - required: + - port@2 + - required: + - port@3 + +required: + - compatible + - reg + - ports + +additionalProperties: false + +allOf: + - $ref: /schemas/i2c/i2c-atr.yaml# + + - if: + properties: + compatible: + contains: + enum: + - maxim,max9296a + - maxim,max96792a + then: + not: + required: [i2c-mux] + + - if: + properties: + compatible: + contains: + enum: + - maxim,max96716a + then: + not: + required: [i2c-atr] + +dependentRequired: + i2c-atr: [i2c-alias-pool] + i2c-alias-pool: [i2c-atr] + +examples: + - | + #include + #include + + i2c { + #address-cells = <1>; + #size-cells = <0>; + + deserializer@28 { + compatible = "maxim,max9296a"; + reg = <0x28>; + powerdown-gpios = <&main_gpio0 37 GPIO_ACTIVE_LOW>; + + i2c-alias-pool = <0x40 0x41>; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + reg = <0>; + des_gmsl_in_0: endpoint { + remote-endpoint = <&ser_0_gmsl_out>; + }; + }; + + port@1 { + reg = <1>; + des_gmsl_in_1: endpoint { + remote-endpoint = <&ser_1_gmsl_out>; + }; + }; + + port@2 { + reg = <2>; + des_csi_out: endpoint { + data-lanes = <1 2 3 4>; + link-frequencies = /bits/ 64 <400000000>; + remote-endpoint = <&csi_in>; + }; + }; + }; + + i2c-atr { + #address-cells = <1>; + #size-cells = <0>; + + i2c@0 { + #address-cells = <1>; + #size-cells = <0>; + reg = <0>; + + serializer@40 { + compatible = "maxim,max96717"; + reg = <0x40>; + gpio-controller; + #gpio-cells = <2>; + #clock-cells = <0>; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + reg = <0>; + ser_0_csi_in: endpoint { + data-lanes = <1 2>; + remote-endpoint = <&sensor_0_out>; + }; + }; + + port@1 { + reg = <1>; + ser_0_gmsl_out: endpoint { + remote-endpoint = <&des_gmsl_in_0>; + }; + }; + }; + }; + }; + + i2c@1 { + #address-cells = <1>; + #size-cells = <0>; + reg = <1>; + + serializer@40 { + compatible = "maxim,max96717"; + reg = <0x40>; + gpio-controller; + #gpio-cells = <2>; + #clock-cells = <0>; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + reg = <0>; + ser_1_csi_in: endpoint { + data-lanes = <1 2>; + remote-endpoint = <&sensor_1_out>; + }; + }; + + port@1 { + reg = <1>; + ser_1_gmsl_out: endpoint { + remote-endpoint = <&des_gmsl_in_1>; + }; + }; + }; + }; + }; + }; + }; + }; +... diff --git a/MAINTAINERS b/MAINTAINERS index abf3afc95fc9..c1e01668e81a 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -14220,6 +14220,12 @@ S: Maintained F: Documentation/devicetree/bindings/iio/proximity/maxbotix,mb1232.yaml F: drivers/iio/proximity/mb1232.c +MAXIM GMSL2 SERIALIZERS AND DESERIALIZERS +M: Cosmin Tanislav +L: linux-media@vger.kernel.org +S: Maintained +F: Documentation/devicetree/bindings/media/i2c/maxim,max9296a.yaml + MAXIM MAX11205 DRIVER M: Ramona Bolboaca L: linux-iio@vger.kernel.org From patchwork Sun Mar 9 08:48:05 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cosmin Tanislav X-Patchwork-Id: 14008270 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id DF82CC282D1 for ; Sun, 9 Mar 2025 09:10:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From: Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=4dW4CzmrzcxsS+VFvHNn6mQCAsXdBank+JJs+zbf7Qs=; b=s6HjVgRw4dW5PhROUUeAAXj0dj N44Wo43IlUdVP4w4yPpYYXuZ9jZImHvEfsbZljhfmZmzm3PKskFN96IBGr9zEAzPmhBoGAU794kZd JY2a6Ac60y9CqEk97N1BskuEaM1+U7WfJpXjASuf3sjfcoplKGwff9RqIHBoQwGqvtH335OZPUKBQ 5IDKf9SIoK1CdurgTG0v/gcZDkrKewa9XPzAE0KHfpHstk7CVkuMCosqdQbHEq6hgXZ5+eUG2StsW z0MiIx2hqZDMltUZYpGwL1MWYSlthlMJqSnn65WoWXiKPjxT8gitp7bkhDOFMoiz6/+aKG09Dcr6A 6aVKZj0A==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1trCfZ-00000000EzU-3E7C; Sun, 09 Mar 2025 09:10:01 +0000 Received: from mail-ej1-x62f.google.com ([2a00:1450:4864:20::62f]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1trCLN-00000000CZ4-0as7 for linux-arm-kernel@lists.infradead.org; Sun, 09 Mar 2025 08:49:10 +0000 Received: by mail-ej1-x62f.google.com with SMTP id a640c23a62f3a-abbb12bea54so603955166b.0 for ; Sun, 09 Mar 2025 00:49:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741510147; x=1742114947; darn=lists.infradead.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=4dW4CzmrzcxsS+VFvHNn6mQCAsXdBank+JJs+zbf7Qs=; b=DjdraVw0m3QuZOVLPZH8kLiCPIQqCYIZEZ34oxvxZWmYqitnyr6KZBf+nKxXgCliNG T9jVB4G/CJIjrnMHwV9wxek1y3TiNiFuQQbkZn4E/yvDPnYmjrbVO5j8Xjf49K2QjY7O w5kUkt4gtMGgrDp1pW3zWaNWxwKFu3dm1keHxjFeXHf+LJqZaFubM2rV/jGs9HQ2sHVJ IsLuTbCzbFsfteYub+T9iI+0HLWH4eaoCvHhqi4U3xOAi/owDD1volNUTWaLn1kjhMZc sIsZsajL69HQ+7crH5jmipCSzw5zVYh6hMeJNqjUkEjjznVZioWKSoHMyUEjnmE3XHXT k39g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741510147; x=1742114947; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=4dW4CzmrzcxsS+VFvHNn6mQCAsXdBank+JJs+zbf7Qs=; b=YXfsbRISNaNs60MCpI/4gbO27TmFoVv5cIH2MLp3ldMC8I387fW13HH5mdbWfWy37W BRFjy7nW4hWufM0nxbQY7dCbKoWdcTcADRxKAy32bhdav6LN+8/PE4EFP1/5XKQOzePW Nv+ChQnyO0tUqeVTcdJao92rhYMFFj6oE3RQ0tvVz8iYQDtJ8mGixU+P9onsF5WSt5rG WOGRJKB98gR3oewanj1SWOwER8dlbwjLHMMIXwLg8h+p/tVrw0zTUgaadfHEZ2aCkqEn NUrgZol8KCPyV0GoeR7n7Ot0ZtOL4hXggJ2JOsfQIvKW7/t6LeK8UhDFua7hQoMmw+vZ XMJg== X-Forwarded-Encrypted: i=1; AJvYcCXE71sM/hCmXW/fZRtTC1PxPQOLSvX3BVrY/oK0EA6M5H1wqHyIz8zIWwyLxaR1aX2bJBUI+CqaHyKyrqVpaS2N@lists.infradead.org X-Gm-Message-State: AOJu0Yx9r5QE7q6Gme7fsmt2ah4xyrNy1D0A2Dt37tbyVSAP7xYQu+dK FAxg0270oYl362khAwCQ8NGJsQlyb4g0gLYH1XhG7DU9gWPs+zwE X-Gm-Gg: ASbGncttdBgyjLe57hlp2+WG5UcdnZ4krSD2NVisB+53+BSNqDqSVx+uUOs4uCvv2Tl gYX0egrqLvWGujKITiEYghMR04W+N4WFrTGk3Vew5MM5dsvTXEGXuBtCkKOsMss9ppy/CD439fP d5AQf0XvAWA2bnG/wpvui3W8AWWVHo/E/L2qZ1Ss3aDHPf0ZR4vk3ovUqIxSt0UWj4+ujTZ34Q8 NR4H+R+SFgc4LWKiRhM5yj11/PT50Zb+WdbL36RRL1LtQWHcNmaHZ8K7UuB9tROaL2l6ti5Dl0x 4xqMWS5a6McU97Vt9IIsCSqs1TPNkUS/cJQ/oYBzNy/J9uVN9BO3I1tdVA== X-Google-Smtp-Source: AGHT+IEtJgNKkcfiGC5STawEzBHIltzLZ/lVjlnump5VNRcZ/7ElRKFxJl72L3LSI0tucNmXfakjug== X-Received: by 2002:a17:906:f594:b0:ac1:e00c:a564 with SMTP id a640c23a62f3a-ac252ba468cmr1117297966b.38.1741510147444; Sun, 09 Mar 2025 00:49:07 -0800 (PST) Received: from demon-pc.localdomain ([188.27.130.21]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ac239736153sm566347466b.108.2025.03.09.00.49.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Mar 2025 00:49:06 -0800 (PST) From: Cosmin Tanislav To: Cc: Tomi Valkeinen , Cosmin Tanislav , Mauro Carvalho Chehab , Rob Herring , Krzysztof Kozlowski , Conor Dooley , =?utf-8?q?Niklas_S=C3=B6derlund?= , Julien Massot , Catalin Marinas , Will Deacon , Greg Kroah-Hartman , Liam Girdwood , Mark Brown , Linus Walleij , Bartosz Golaszewski , Bjorn Andersson , Geert Uytterhoeven , Dmitry Baryshkov , Arnd Bergmann , Taniya Das , Biju Das , =?utf-8?q?N=C3=ADcolas_F_=2E_R_=2E_A?= =?utf-8?q?_=2E_Prado?= , Eric Biggers , Javier Carrasco , Ross Burton , Hans Verkuil , Sakari Ailus , Laurent Pinchart , Zhi Mao , Kieran Bingham , Dongcheng Yan , AngeloGioacchino Del Regno , Benjamin Mugnier , Tommaso Merciai , Dan Carpenter , Ihor Matushchak , Laurentiu Palcu , 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, Cosmin Tanislav Subject: [RFC PATCH v2 13/16] arm64: defconfig: disable deprecated MAX96712 driver Date: Sun, 9 Mar 2025 10:48:05 +0200 Message-ID: <20250309084814.3114794-14-demonsingur@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250309084814.3114794-1-demonsingur@gmail.com> References: <20250309084814.3114794-1-demonsingur@gmail.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250309_004909_178302_FBA75DFA X-CRM114-Status: GOOD ( 12.83 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org The staging MAX96712 driver will be removed as its functionality has been moved to the MAX96724 driver which makes use of the Maxim GMSL2/3 deserializer framework. Signed-off-by: Cosmin Tanislav --- arch/arm64/configs/defconfig | 1 - 1 file changed, 1 deletion(-) diff --git a/arch/arm64/configs/defconfig b/arch/arm64/configs/defconfig index cb7da4415599..6e9bd9072d11 100644 --- a/arch/arm64/configs/defconfig +++ b/arch/arm64/configs/defconfig @@ -1272,7 +1272,6 @@ CONFIG_XEN_GNTDEV=y CONFIG_XEN_GRANT_DEV_ALLOC=y CONFIG_STAGING=y CONFIG_STAGING_MEDIA=y -CONFIG_VIDEO_MAX96712=m CONFIG_VIDEO_MESON_VDEC=m CONFIG_SND_BCM2835=m CONFIG_CHROME_PLATFORMS=y From patchwork Sun Mar 9 08:48:06 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Cosmin Tanislav X-Patchwork-Id: 14008271 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 0E676C282D1 for ; Sun, 9 Mar 2025 09:11:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Transfer-Encoding: Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc: To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=VPS780SayGSHm9kNBST+ZxPY6YLGXo006BdoT29u6n0=; b=XAJiL2KaRW+YY7qnlxIqm0sHB/ vsxCcnuiFeA3LPhrgFCw6IsvUprAewxVtyuwavMaEXUr/3/VjSWgczzkWFTK195+kFOTCa4SzlnKP CQjrimDIbC/JcMcT6W3kNVgj5ntLWrOeMxQG8gleyZcz65o7AbPcgtDMMnxnlj95UuE1XbHB5jd51 /cxSbmGj9c6zL8szas6s8lHwHI8F7+UxrVk9Vsljvp/Rm6a8lzv/vQBDuUvbHSQgbTDmmE5d3hnBI BwVX5/dNqPeswFZkvpgz7LA6NpRJh5EuxWowqxLk1ZD2S1/WcYVJoUcX00kVi0myJFAp/S9cFWByZ 1n2BOx1A==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1trChA-00000000F7N-1oBe; Sun, 09 Mar 2025 09:11:40 +0000 Received: from mail-ed1-x52c.google.com ([2a00:1450:4864:20::52c]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1trCLQ-00000000CaI-3V9c for linux-arm-kernel@lists.infradead.org; Sun, 09 Mar 2025 08:49:14 +0000 Received: by mail-ed1-x52c.google.com with SMTP id 4fb4d7f45d1cf-5e5e22e6ed2so3412268a12.3 for ; Sun, 09 Mar 2025 00:49:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741510151; x=1742114951; darn=lists.infradead.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=VPS780SayGSHm9kNBST+ZxPY6YLGXo006BdoT29u6n0=; b=PhN0WHyRTgZl1Xg8crnnhN1P8QItT7i+ZDrEhC6NVA8MmUy0ufGLTj/ty3dGYlb5V4 DmvZriL9MPyemkunq8TWF5E8TJy5/BBFW1dpUV/eHQ0Y35fFISZWSnqf9Ks/VIftrCZN Dzof2WwMWxS9v1zLxANWbW9vW/ZM3tLk/XIoS1OS7Z3+GZV3804cSuxAVwvMqGCxmR5i TapvRJA5pWySmp8miurCqCoLlVFywcoFpFb9Q1ruoqzOHmDZP0ejsNEUYMHq7N/YMK4p Edfl7IOYNf3FMiqtJRzJMbiikXqTJROIp9ZFtIy3vY66tumSl4ylIbHfFbOocpWBtHJj HqEg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741510151; x=1742114951; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=VPS780SayGSHm9kNBST+ZxPY6YLGXo006BdoT29u6n0=; b=Jfgkfde8V8arXKUqpaZn3dl+90ZlGOyEH13jAb3P8UYl/gzHoqIh4G05zIb3tdlRc8 rmQLY6NrlNN86gCvxrGlnPaYpogsj8ZKjq1hy8wLbBj+9TSiw1sMocsF/A0fvbiQHVek sFH0V5PWhOTv64WwdhQdaDf0yT0rzVJPqdnLjB4OyUzfvCfFK8tgYIPbKk8lqx5LVsET VEQgyxJ7B7GGYizwRsZYRLBbmVl14A0f9eJ09pKUDPtfPlVJP/G+ObrVVmWCjRnTv/sI zDe4Q+XcMCHMQxFChe4+bKrMPePFb2YuP+XOc887IcB4V1sShTFqB7Y0UjRlXsLEUKfI sHFw== X-Forwarded-Encrypted: i=1; AJvYcCWvyRj+iDwPXKuS6Is+4q08dy20Gm8OV/1Njbpxy03rcM4l5OSTTp/KPUx71CfgjSWH2rPZSAEo2QJoO267HqSu@lists.infradead.org X-Gm-Message-State: AOJu0YyeerRbPw7ksYvYovMv7iZ9qaZUPnduA2Hp/hsoPyjg194J3heR xFkFc9c+vmAhCKEtCs06StpRs08g2yGAq9c4KLLx5c/2MbMfCW/kBefGLA== X-Gm-Gg: ASbGncs/ZH2eTTo4txy79kE+erq05oy+gQXKuyzlJ02hDdtYntLBZz2NJDFX/N4Xp23 hr9VmcSn39V7Y2I0ZA1NVsTYVOMZFcS72vMQEOC3cnQtdvsQM/Jg5BBuXwKh9tp6z/1DaZpTVoL 9NnWjkjyyieuApW3Hvy12aCS1+23Hm6L9ELqOSxfkiqHdDsV9qdYHN6FVA5Y4LsPy9FyaKlXmyG jNtFjcT1bwJfiQ+2YBRpMah/zNxQdxDsCiU6qDBXxkMbRx2R2wDJkoRY8PVUxu+yLAVxIN20cuY zdJsCt6c+sFnCJGIwuc0BzKkdm/yrhWcBKXYlqR5/Bn+Jp+TUFlQXFIPLA== X-Google-Smtp-Source: AGHT+IFML1o8IvzsWXDvr6CIfM0JN2c1NYi7UOvnH7m3w6OC0G54Ayh6K59YSd4Yc5Go79k20XyV/Q== X-Received: by 2002:a17:907:9703:b0:ac2:ad1:221b with SMTP id a640c23a62f3a-ac2525de582mr895741766b.6.1741510151122; Sun, 09 Mar 2025 00:49:11 -0800 (PST) Received: from demon-pc.localdomain ([188.27.130.21]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ac239736153sm566347466b.108.2025.03.09.00.49.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Mar 2025 00:49:10 -0800 (PST) From: Cosmin Tanislav To: Cc: Tomi Valkeinen , Cosmin Tanislav , Mauro Carvalho Chehab , Rob Herring , Krzysztof Kozlowski , Conor Dooley , =?utf-8?q?Niklas_S=C3=B6derlund?= , Julien Massot , Catalin Marinas , Will Deacon , Greg Kroah-Hartman , Liam Girdwood , Mark Brown , Linus Walleij , Bartosz Golaszewski , Bjorn Andersson , Geert Uytterhoeven , Dmitry Baryshkov , Arnd Bergmann , Taniya Das , Biju Das , =?utf-8?q?N=C3=ADcolas_F_=2E_R_=2E_A?= =?utf-8?q?_=2E_Prado?= , Eric Biggers , Javier Carrasco , Ross Burton , Hans Verkuil , Sakari Ailus , Laurent Pinchart , Zhi Mao , Kieran Bingham , Dongcheng Yan , AngeloGioacchino Del Regno , Benjamin Mugnier , Tommaso Merciai , Dan Carpenter , Ihor Matushchak , Laurentiu Palcu , 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, Cosmin Tanislav Subject: [RFC PATCH v2 14/16] staging: media: remove MAX96712 driver Date: Sun, 9 Mar 2025 10:48:06 +0200 Message-ID: <20250309084814.3114794-15-demonsingur@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250309084814.3114794-1-demonsingur@gmail.com> References: <20250309084814.3114794-1-demonsingur@gmail.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250309_004913_014031_370C0E67 X-CRM114-Status: GOOD ( 22.62 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Remove the staging MAX96712 driver. Its functionality has been moved to the MAX96724 driver which makes use of the Maxim GMSL2/3 deserializer framework. Signed-off-by: Cosmin Tanislav --- MAINTAINERS | 1 - 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 ---------------------- 6 files changed, 507 deletions(-) delete mode 100644 drivers/staging/media/max96712/Kconfig delete mode 100644 drivers/staging/media/max96712/Makefile delete mode 100644 drivers/staging/media/max96712/max96712.c diff --git a/MAINTAINERS b/MAINTAINERS index e97c4f55bc2f..4d1ff8cf537b 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -14188,7 +14188,6 @@ M: Cosmin Tanislav L: linux-media@vger.kernel.org S: Maintained F: Documentation/devicetree/bindings/media/i2c/maxim,max96712.yaml -F: drivers/staging/media/max96712/max96712.c MAX96714 GMSL2 DESERIALIZER DRIVER M: Julien Massot diff --git a/drivers/staging/media/Kconfig b/drivers/staging/media/Kconfig index b44214854399..fe29821f64a3 100644 --- a/drivers/staging/media/Kconfig +++ b/drivers/staging/media/Kconfig @@ -28,8 +28,6 @@ source "drivers/staging/media/imx/Kconfig" source "drivers/staging/media/ipu3/Kconfig" -source "drivers/staging/media/max96712/Kconfig" - source "drivers/staging/media/meson/vdec/Kconfig" source "drivers/staging/media/rkvdec/Kconfig" diff --git a/drivers/staging/media/Makefile b/drivers/staging/media/Makefile index ad4e9619a9e0..1a562b3b6881 100644 --- a/drivers/staging/media/Makefile +++ b/drivers/staging/media/Makefile @@ -2,7 +2,6 @@ obj-$(CONFIG_VIDEO_ATMEL_ISC_BASE) += deprecated/atmel/ obj-$(CONFIG_INTEL_ATOMISP) += atomisp/ obj-$(CONFIG_VIDEO_IMX_MEDIA) += imx/ -obj-$(CONFIG_VIDEO_MAX96712) += max96712/ obj-$(CONFIG_VIDEO_MESON_VDEC) += meson/vdec/ obj-$(CONFIG_VIDEO_ROCKCHIP_VDEC) += rkvdec/ obj-$(CONFIG_VIDEO_STARFIVE_CAMSS) += starfive/ diff --git a/drivers/staging/media/max96712/Kconfig b/drivers/staging/media/max96712/Kconfig deleted file mode 100644 index 117fadf81bd0..000000000000 --- a/drivers/staging/media/max96712/Kconfig +++ /dev/null @@ -1,14 +0,0 @@ -# SPDX-License-Identifier: GPL-2.0 -config VIDEO_MAX96712 - tristate "Maxim MAX96712 Quad GMSL2 Deserializer support" - depends on I2C - depends on OF_GPIO - depends on VIDEO_DEV - select V4L2_FWNODE - select VIDEO_V4L2_SUBDEV_API - select MEDIA_CONTROLLER - help - This driver supports the Maxim MAX96712 Quad GMSL2 Deserializer. - - To compile this driver as a module, choose M here: the - module will be called max96712. diff --git a/drivers/staging/media/max96712/Makefile b/drivers/staging/media/max96712/Makefile deleted file mode 100644 index 70c1974ce3f0..000000000000 --- a/drivers/staging/media/max96712/Makefile +++ /dev/null @@ -1,2 +0,0 @@ -# SPDX-License-Identifier: GPL-2.0 -obj-$(CONFIG_VIDEO_MAX96712) += max96712.o diff --git a/drivers/staging/media/max96712/max96712.c b/drivers/staging/media/max96712/max96712.c deleted file mode 100644 index 0751b2e04895..000000000000 --- a/drivers/staging/media/max96712/max96712.c +++ /dev/null @@ -1,487 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Maxim MAX96712 Quad GMSL2 Deserializer Driver - * - * Copyright (C) 2021 Renesas Electronics Corporation - * Copyright (C) 2021 Niklas Söderlund - */ - -#include -#include -#include -#include -#include - -#include -#include -#include - -#define DEBUG_EXTRA_REG 0x09 -#define DEBUG_EXTRA_PCLK_25MHZ 0x00 -#define DEBUG_EXTRA_PCLK_75MHZ 0x01 - -enum max96712_pattern { - MAX96712_PATTERN_CHECKERBOARD = 0, - MAX96712_PATTERN_GRADIENT, -}; - -struct max96712_info { - unsigned int dpllfreq; - bool have_debug_extra; -}; - -struct max96712_priv { - struct i2c_client *client; - struct regmap *regmap; - struct gpio_desc *gpiod_pwdn; - - const struct max96712_info *info; - - bool cphy; - struct v4l2_mbus_config_mipi_csi2 mipi; - - struct v4l2_subdev sd; - struct v4l2_ctrl_handler ctrl_handler; - struct media_pad pads[1]; - - enum max96712_pattern pattern; -}; - -static int max96712_write(struct max96712_priv *priv, unsigned int reg, u8 val) -{ - int ret; - - ret = regmap_write(priv->regmap, reg, val); - if (ret) - dev_err(&priv->client->dev, "write 0x%04x failed\n", reg); - - return ret; -} - -static int max96712_update_bits(struct max96712_priv *priv, unsigned int reg, - u8 mask, u8 val) -{ - int ret; - - ret = regmap_update_bits(priv->regmap, reg, mask, val); - if (ret) - dev_err(&priv->client->dev, "update 0x%04x failed\n", reg); - - return ret; -} - -static int max96712_write_bulk(struct max96712_priv *priv, unsigned int reg, - const void *val, size_t val_count) -{ - int ret; - - ret = regmap_bulk_write(priv->regmap, reg, val, val_count); - if (ret) - dev_err(&priv->client->dev, "bulk write 0x%04x failed\n", reg); - - return ret; -} - -static int max96712_write_bulk_value(struct max96712_priv *priv, - unsigned int reg, unsigned int val, - size_t val_count) -{ - unsigned int i; - u8 values[4]; - - for (i = 1; i <= val_count; i++) - values[i - 1] = (val >> ((val_count - i) * 8)) & 0xff; - - return max96712_write_bulk(priv, reg, &values, val_count); -} - -static void max96712_reset(struct max96712_priv *priv) -{ - max96712_update_bits(priv, 0x13, 0x40, 0x40); - msleep(20); -} - -static void max96712_mipi_enable(struct max96712_priv *priv, bool enable) -{ - if (enable) { - max96712_update_bits(priv, 0x40b, 0x02, 0x02); - max96712_update_bits(priv, 0x8a0, 0x80, 0x80); - } else { - max96712_update_bits(priv, 0x8a0, 0x80, 0x00); - max96712_update_bits(priv, 0x40b, 0x02, 0x00); - } -} - -static void max96712_mipi_configure(struct max96712_priv *priv) -{ - unsigned int i; - u8 phy5 = 0; - - max96712_mipi_enable(priv, false); - - /* Select 2x4 mode. */ - max96712_write(priv, 0x8a0, 0x04); - - /* TODO: Add support for 2-lane and 1-lane configurations. */ - if (priv->cphy) { - /* Configure a 3-lane C-PHY using PHY0 and PHY1. */ - max96712_write(priv, 0x94a, 0xa0); - - /* Configure C-PHY timings. */ - max96712_write(priv, 0x8ad, 0x3f); - max96712_write(priv, 0x8ae, 0x7d); - } else { - /* Configure a 4-lane D-PHY using PHY0 and PHY1. */ - max96712_write(priv, 0x94a, 0xc0); - } - - /* Configure lane mapping for PHY0 and PHY1. */ - /* TODO: Add support for lane swapping. */ - max96712_write(priv, 0x8a3, 0xe4); - - /* Configure lane polarity for PHY0 and PHY1. */ - for (i = 0; i < priv->mipi.num_data_lanes + 1; i++) - if (priv->mipi.lane_polarities[i]) - phy5 |= BIT(i == 0 ? 5 : i < 3 ? i - 1 : i); - max96712_write(priv, 0x8a5, phy5); - - /* Set link frequency for PHY0 and PHY1. */ - max96712_update_bits(priv, 0x415, 0x3f, - ((priv->info->dpllfreq / 100) & 0x1f) | BIT(5)); - max96712_update_bits(priv, 0x418, 0x3f, - ((priv->info->dpllfreq / 100) & 0x1f) | BIT(5)); - - /* Enable PHY0 and PHY1 */ - max96712_update_bits(priv, 0x8a2, 0xf0, 0x30); -} - -static void max96712_pattern_enable(struct max96712_priv *priv, bool enable) -{ - const u32 h_active = 1920; - const u32 h_fp = 88; - const u32 h_sw = 44; - const u32 h_bp = 148; - const u32 h_tot = h_active + h_fp + h_sw + h_bp; - - const u32 v_active = 1080; - const u32 v_fp = 4; - const u32 v_sw = 5; - const u32 v_bp = 36; - const u32 v_tot = v_active + v_fp + v_sw + v_bp; - - if (!enable) { - max96712_write(priv, 0x1051, 0x00); - return; - } - - /* Set PCLK to 75MHz if device have DEBUG_EXTRA register. */ - if (priv->info->have_debug_extra) - max96712_write(priv, DEBUG_EXTRA_REG, DEBUG_EXTRA_PCLK_75MHZ); - - /* Configure Video Timing Generator for 1920x1080 @ 30 fps. */ - max96712_write_bulk_value(priv, 0x1052, 0, 3); - max96712_write_bulk_value(priv, 0x1055, v_sw * h_tot, 3); - max96712_write_bulk_value(priv, 0x1058, - (v_active + v_fp + + v_bp) * h_tot, 3); - max96712_write_bulk_value(priv, 0x105b, 0, 3); - max96712_write_bulk_value(priv, 0x105e, h_sw, 2); - max96712_write_bulk_value(priv, 0x1060, h_active + h_fp + h_bp, 2); - max96712_write_bulk_value(priv, 0x1062, v_tot, 2); - max96712_write_bulk_value(priv, 0x1064, - h_tot * (v_sw + v_bp) + (h_sw + h_bp), 3); - max96712_write_bulk_value(priv, 0x1067, h_active, 2); - max96712_write_bulk_value(priv, 0x1069, h_fp + h_sw + h_bp, 2); - max96712_write_bulk_value(priv, 0x106b, v_active, 2); - - /* Generate VS, HS and DE in free-running mode. */ - max96712_write(priv, 0x1050, 0xfb); - - /* Configure Video Pattern Generator. */ - if (priv->pattern == MAX96712_PATTERN_CHECKERBOARD) { - /* Set checkerboard pattern size. */ - max96712_write(priv, 0x1074, 0x3c); - max96712_write(priv, 0x1075, 0x3c); - max96712_write(priv, 0x1076, 0x3c); - - /* Set checkerboard pattern colors. */ - max96712_write_bulk_value(priv, 0x106e, 0xfecc00, 3); - max96712_write_bulk_value(priv, 0x1071, 0x006aa7, 3); - - /* Generate checkerboard pattern. */ - max96712_write(priv, 0x1051, 0x10); - } else { - /* Set gradient increment. */ - max96712_write(priv, 0x106d, 0x10); - - /* Generate gradient pattern. */ - max96712_write(priv, 0x1051, 0x20); - } -} - -static int max96712_s_stream(struct v4l2_subdev *sd, int enable) -{ - struct max96712_priv *priv = v4l2_get_subdevdata(sd); - - if (enable) { - max96712_pattern_enable(priv, true); - max96712_mipi_enable(priv, true); - } else { - max96712_mipi_enable(priv, false); - max96712_pattern_enable(priv, false); - } - - return 0; -} - -static const struct v4l2_subdev_video_ops max96712_video_ops = { - .s_stream = max96712_s_stream, -}; - -static int max96712_init_state(struct v4l2_subdev *sd, - struct v4l2_subdev_state *state) -{ - static const struct v4l2_mbus_framefmt default_fmt = { - .width = 1920, - .height = 1080, - .code = MEDIA_BUS_FMT_RGB888_1X24, - .colorspace = V4L2_COLORSPACE_SRGB, - .field = V4L2_FIELD_NONE, - .ycbcr_enc = V4L2_YCBCR_ENC_DEFAULT, - .quantization = V4L2_QUANTIZATION_DEFAULT, - .xfer_func = V4L2_XFER_FUNC_DEFAULT, - }; - struct v4l2_mbus_framefmt *fmt; - - fmt = v4l2_subdev_state_get_format(state, 0); - *fmt = default_fmt; - - return 0; -} - -static const struct v4l2_subdev_internal_ops max96712_internal_ops = { - .init_state = max96712_init_state, -}; - -static const struct v4l2_subdev_pad_ops max96712_pad_ops = { - .get_fmt = v4l2_subdev_get_fmt, - .set_fmt = v4l2_subdev_get_fmt, -}; - -static const struct v4l2_subdev_ops max96712_subdev_ops = { - .video = &max96712_video_ops, - .pad = &max96712_pad_ops, -}; - -static const char * const max96712_test_pattern[] = { - "Checkerboard", - "Gradient", -}; - -static int max96712_s_ctrl(struct v4l2_ctrl *ctrl) -{ - struct max96712_priv *priv = - container_of(ctrl->handler, struct max96712_priv, ctrl_handler); - - switch (ctrl->id) { - case V4L2_CID_TEST_PATTERN: - priv->pattern = ctrl->val ? - MAX96712_PATTERN_GRADIENT : - MAX96712_PATTERN_CHECKERBOARD; - break; - } - return 0; -} - -static const struct v4l2_ctrl_ops max96712_ctrl_ops = { - .s_ctrl = max96712_s_ctrl, -}; - -static int max96712_v4l2_register(struct max96712_priv *priv) -{ - long pixel_rate; - int ret; - - priv->sd.internal_ops = &max96712_internal_ops; - v4l2_i2c_subdev_init(&priv->sd, priv->client, &max96712_subdev_ops); - priv->sd.flags |= V4L2_SUBDEV_FL_HAS_DEVNODE; - priv->sd.entity.function = MEDIA_ENT_F_VID_IF_BRIDGE; - - v4l2_ctrl_handler_init(&priv->ctrl_handler, 2); - - /* - * TODO: Once V4L2_CID_LINK_FREQ is changed from a menu control to an - * INT64 control it should be used here instead of V4L2_CID_PIXEL_RATE. - */ - pixel_rate = priv->info->dpllfreq / priv->mipi.num_data_lanes * 1000000; - v4l2_ctrl_new_std(&priv->ctrl_handler, NULL, V4L2_CID_PIXEL_RATE, - pixel_rate, pixel_rate, 1, pixel_rate); - - v4l2_ctrl_new_std_menu_items(&priv->ctrl_handler, &max96712_ctrl_ops, - V4L2_CID_TEST_PATTERN, - ARRAY_SIZE(max96712_test_pattern) - 1, - 0, 0, max96712_test_pattern); - - priv->sd.ctrl_handler = &priv->ctrl_handler; - ret = priv->ctrl_handler.error; - if (ret) - goto error; - - priv->pads[0].flags = MEDIA_PAD_FL_SOURCE; - ret = media_entity_pads_init(&priv->sd.entity, 1, priv->pads); - if (ret) - goto error; - - v4l2_set_subdevdata(&priv->sd, priv); - - priv->sd.state_lock = priv->ctrl_handler.lock; - ret = v4l2_subdev_init_finalize(&priv->sd); - if (ret) - goto error; - - ret = v4l2_async_register_subdev(&priv->sd); - if (ret < 0) { - dev_err(&priv->client->dev, "Unable to register subdevice\n"); - goto error; - } - - return 0; -error: - v4l2_ctrl_handler_free(&priv->ctrl_handler); - - return ret; -} - -static int max96712_parse_dt(struct max96712_priv *priv) -{ - struct fwnode_handle *ep; - struct v4l2_fwnode_endpoint v4l2_ep = { - .bus_type = V4L2_MBUS_UNKNOWN, - }; - unsigned int supported_lanes; - int ret; - - ep = fwnode_graph_get_endpoint_by_id(dev_fwnode(&priv->client->dev), 4, - 0, 0); - if (!ep) { - dev_err(&priv->client->dev, "Not connected to subdevice\n"); - return -EINVAL; - } - - ret = v4l2_fwnode_endpoint_parse(ep, &v4l2_ep); - fwnode_handle_put(ep); - if (ret) { - dev_err(&priv->client->dev, "Could not parse v4l2 endpoint\n"); - return -EINVAL; - } - - switch (v4l2_ep.bus_type) { - case V4L2_MBUS_CSI2_DPHY: - supported_lanes = 4; - priv->cphy = false; - break; - case V4L2_MBUS_CSI2_CPHY: - supported_lanes = 3; - priv->cphy = true; - break; - default: - dev_err(&priv->client->dev, "Unsupported bus-type %u\n", - v4l2_ep.bus_type); - return -EINVAL; - } - - if (v4l2_ep.bus.mipi_csi2.num_data_lanes != supported_lanes) { - dev_err(&priv->client->dev, "Only %u data lanes supported\n", - supported_lanes); - return -EINVAL; - } - - priv->mipi = v4l2_ep.bus.mipi_csi2; - - return 0; -} - -static const struct regmap_config max96712_i2c_regmap = { - .reg_bits = 16, - .val_bits = 8, - .max_register = 0x1f00, -}; - -static int max96712_probe(struct i2c_client *client) -{ - struct max96712_priv *priv; - int ret; - - priv = devm_kzalloc(&client->dev, sizeof(*priv), GFP_KERNEL); - if (!priv) - return -ENOMEM; - - priv->info = of_device_get_match_data(&client->dev); - - priv->client = client; - - priv->regmap = devm_regmap_init_i2c(client, &max96712_i2c_regmap); - if (IS_ERR(priv->regmap)) - return PTR_ERR(priv->regmap); - - priv->gpiod_pwdn = devm_gpiod_get_optional(&client->dev, "enable", - GPIOD_OUT_HIGH); - if (IS_ERR(priv->gpiod_pwdn)) - return PTR_ERR(priv->gpiod_pwdn); - - gpiod_set_consumer_name(priv->gpiod_pwdn, "max96712-pwdn"); - gpiod_set_value_cansleep(priv->gpiod_pwdn, 1); - - if (priv->gpiod_pwdn) - usleep_range(4000, 5000); - - max96712_reset(priv); - - ret = max96712_parse_dt(priv); - if (ret) - return ret; - - max96712_mipi_configure(priv); - - return max96712_v4l2_register(priv); -} - -static void max96712_remove(struct i2c_client *client) -{ - struct v4l2_subdev *sd = i2c_get_clientdata(client); - struct max96712_priv *priv = container_of(sd, struct max96712_priv, sd); - - v4l2_async_unregister_subdev(&priv->sd); - - gpiod_set_value_cansleep(priv->gpiod_pwdn, 0); -} - -static const struct max96712_info max96712_info_max96712 = { - .dpllfreq = 1000, - .have_debug_extra = true, -}; - -static const struct max96712_info max96712_info_max96724 = { - .dpllfreq = 1200, -}; - -static const struct of_device_id max96712_of_table[] = { - { .compatible = "maxim,max96712", .data = &max96712_info_max96712 }, - { .compatible = "maxim,max96724", .data = &max96712_info_max96724 }, - { /* sentinel */ } -}; -MODULE_DEVICE_TABLE(of, max96712_of_table); - -static struct i2c_driver max96712_i2c_driver = { - .driver = { - .name = "max96712", - .of_match_table = of_match_ptr(max96712_of_table), - }, - .probe = max96712_probe, - .remove = max96712_remove, -}; - -module_i2c_driver(max96712_i2c_driver); - -MODULE_DESCRIPTION("Maxim MAX96712 Quad GMSL2 Deserializer Driver"); -MODULE_AUTHOR("Niklas Söderlund "); -MODULE_LICENSE("GPL"); From patchwork Sun Mar 9 08:48:07 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cosmin Tanislav X-Patchwork-Id: 14008272 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id D0918C282D1 for ; Sun, 9 Mar 2025 09:13:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From: Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=eJxqrKzhFr3RiWED6bWo37Q79I9LlI8HJIe6clOFVdw=; b=JKII1b2Wo2nqXijw96niSe5j8G l3L+oXrUPUF+DvlwEManGMZbvrY/lAl3T1Joo3H6T3ZXmE1PjLbiKJNyqU3Vd9cthjC4Z64/JaVur yw7b+rKT+MYDHUfyN6esKITXjqCpz8XCMOv4na7NAeA5BcL/1uBxKko/9zg0wOwNeqJZHWe2XhzyV sFRLTpbycWeplFi6jMgC0QZPxOMIkV2MLLnWz7RB2D/ky9s/WMSfG4zHZkbglhnVe2CN1W+rWyBh4 o8g+46hADu+hLpzj+9JYTgtM4ceC7aB0GBcr4NDahTkrH8wI5nKOfoTzrzMPQfjbl8zp7jrJi/ywZ YGxQ0oog==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1trCil-00000000FaN-0RYM; Sun, 09 Mar 2025 09:13:19 +0000 Received: from mail-ed1-x533.google.com ([2a00:1450:4864:20::533]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1trCLV-00000000CbS-2VBn for linux-arm-kernel@lists.infradead.org; Sun, 09 Mar 2025 08:49:19 +0000 Received: by mail-ed1-x533.google.com with SMTP id 4fb4d7f45d1cf-5e61d91a087so1102985a12.0 for ; Sun, 09 Mar 2025 00:49:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741510156; x=1742114956; darn=lists.infradead.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=eJxqrKzhFr3RiWED6bWo37Q79I9LlI8HJIe6clOFVdw=; b=bgdhvyAIpvRG/LtiaS98Cq1/IJCRddNsZCEP3TZjXRqhfLjQzMrb/vnM9wIFgDsShe WLflX/ZU6KnTBBC+KqPQgpTlk7uK1OQ8Py9dIXef+5/aC/VOfNEm27RCtf6hvBjZfHeQ D8AbEGLeQm2VDvjh2tvcwjQ2+6EmhWF32iDvA1jJet9wvyvn2IO1Kvdu+sPHq7nhQxar IDf0leiw9FZokOBnlkPmNi+VUFGJT37RKtPNS49ecBCjZLw+y/KyAXAuyMzKPv/QOsVx 7HaHPufI9QBIlm4v0LChwexWJzzj9Stl+Yje21cO60O2sN+mlWYOgCgckO0qKP4/G7HY AZxA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741510156; x=1742114956; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=eJxqrKzhFr3RiWED6bWo37Q79I9LlI8HJIe6clOFVdw=; b=LnJXg3bC1pSfu2B7yWUlekNQggfU19zdiMWxqRHSlL4eirNhVGKTXAFtVAVbf0CtYO XUvAEjjagGerT9DL1mNSwUYJjZUAONaN49af0sRCtwX9/lYw/QTiKD+ocAPlIbBH0yld 8R6Wy9giweU6/axqgIIagDJ/pZErDzZOZnEkve0aN2lqJGOynbT/8q9UVd8lat8JFy9v 8asQAxKjkWPFARJGM6f/XhA8+vUa9Sdg6nyFmQ/+5sM7DDwL2LJdgP3W//cPtDm6nKad qaXqxiqi/kBXMRU49t1YMHWeYBn8WxgBpqRBtIKvGzCWe2kfbIcFOJKbF6mOYFNg0rD+ ulRA== X-Forwarded-Encrypted: i=1; AJvYcCWqKmGjmy5JI8vbttUGznDuuoXWTYVxhRzD5AcQTzwInVdU/PWqVSctT0SLi97yeNlTl1lzgdIigVEmkD+sVfIJ@lists.infradead.org X-Gm-Message-State: AOJu0YyGx3oFNFpSIiccXWHgwERFjkpbGDavDqLf6PYNV78rI2xgawJR kWTa1Pj5SKcrU28khyGBrfXZCy0c2Ric1GFzXnMqpbtiNm+FK2oj X-Gm-Gg: ASbGncszuQat/8UGsemX9KDpVSsVYznZmZz+kATlq/2hAvS7eNOmb3CT3D2bLfLignV P9dDhmlPPaRQKzo7EpgDHp1ELJvadYjiwSWRxyeKHKiD2MPO839Rt92o5LdMBWt9/aT+kd0ZBWU GYqdSvRui3dkPBFuq8keD6SiGZ78teYOfzhbMXYwaaxY+CLGh39yz3prS8I19VGfNfs0zMhLHxw Gvi+yLAn2svW5AcrZZYWFTzvnn2XrrXTXxeA4aq7axMSBBV1yNy8Ot1eu/4wI1mAWq67szx+2nY /XD8X5UDqE6EPnImFQyVaZTCdrJgP3TUCkM3f9Sep2YqsJNp0aE6vjvI8g== X-Google-Smtp-Source: AGHT+IECTvJGvhv5Xrkwh1jenIxC3ztyp7dEFyxDkADpGD0yV7AgjVGVv3Ic7PUl/Rdp9hx4kSfy7Q== X-Received: by 2002:a05:6402:35c7:b0:5e5:c010:e67e with SMTP id 4fb4d7f45d1cf-5e5e24bd6bemr20290661a12.31.1741510155793; Sun, 09 Mar 2025 00:49:15 -0800 (PST) Received: from demon-pc.localdomain ([188.27.130.21]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ac239736153sm566347466b.108.2025.03.09.00.49.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Mar 2025 00:49:15 -0800 (PST) From: Cosmin Tanislav To: Cc: Tomi Valkeinen , Cosmin Tanislav , Mauro Carvalho Chehab , Rob Herring , Krzysztof Kozlowski , Conor Dooley , =?utf-8?q?Niklas_S=C3=B6derlund?= , Julien Massot , Catalin Marinas , Will Deacon , Greg Kroah-Hartman , Liam Girdwood , Mark Brown , Linus Walleij , Bartosz Golaszewski , Bjorn Andersson , Geert Uytterhoeven , Dmitry Baryshkov , Arnd Bergmann , Taniya Das , Biju Das , =?utf-8?q?N=C3=ADcolas_F_=2E_R_=2E_A?= =?utf-8?q?_=2E_Prado?= , Eric Biggers , Javier Carrasco , Ross Burton , Hans Verkuil , Sakari Ailus , Laurent Pinchart , Zhi Mao , Kieran Bingham , Dongcheng Yan , AngeloGioacchino Del Regno , Benjamin Mugnier , Tommaso Merciai , Dan Carpenter , Ihor Matushchak , Laurentiu Palcu , 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, Cosmin Tanislav Subject: [RFC PATCH v2 15/16] media: i2c: remove MAX96717 driver Date: Sun, 9 Mar 2025 10:48:07 +0200 Message-ID: <20250309084814.3114794-16-demonsingur@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250309084814.3114794-1-demonsingur@gmail.com> References: <20250309084814.3114794-1-demonsingur@gmail.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250309_004917_966319_B15712EF X-CRM114-Status: GOOD ( 19.73 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org The previous MAX96717 driver has been removed and its functionality has been moved to a MAX96717 driver which makes use of the Maxim GMSL2/3 serializer framework. Signed-off-by: Cosmin Tanislav --- MAINTAINERS | 1 - drivers/media/i2c/Kconfig | 17 - drivers/media/i2c/Makefile | 1 - drivers/media/i2c/max96717.c | 1103 ---------------------------------- 4 files changed, 1122 deletions(-) delete mode 100644 drivers/media/i2c/max96717.c diff --git a/MAINTAINERS b/MAINTAINERS index 4d1ff8cf537b..e9fe6e9856d8 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -14203,7 +14203,6 @@ L: linux-media@vger.kernel.org S: Maintained F: Documentation/devicetree/bindings/media/i2c/maxim,max96717-pinctrl.yaml F: Documentation/devicetree/bindings/media/i2c/maxim,max96717.yaml -F: drivers/media/i2c/max96717.c MAX9860 MONO AUDIO VOICE CODEC DRIVER M: Peter Rosin diff --git a/drivers/media/i2c/Kconfig b/drivers/media/i2c/Kconfig index e24c84962c92..6c595dffb280 100644 --- a/drivers/media/i2c/Kconfig +++ b/drivers/media/i2c/Kconfig @@ -1636,23 +1636,6 @@ config VIDEO_MAX96714 To compile this driver as a module, choose M here: the module will be called max96714. -config VIDEO_MAX96717 - tristate "Maxim MAX96717 GMSL2 Serializer support" - depends on OF && I2C && VIDEO_DEV && COMMON_CLK - select I2C_MUX - select MEDIA_CONTROLLER - select GPIOLIB - select V4L2_CCI_I2C - select V4L2_FWNODE - select VIDEO_V4L2_SUBDEV_API - help - Device driver for the Maxim MAX96717 GMSL2 Serializer. - MAX96717 serializers convert video on a MIPI CSI-2 - input to a GMSL2 output. - - To compile this driver as a module, choose M here: the - module will be called max96717. - source "drivers/media/i2c/maxim-serdes/Kconfig" endmenu diff --git a/drivers/media/i2c/Makefile b/drivers/media/i2c/Makefile index b24e7cf7bb2f..de0680ebf190 100644 --- a/drivers/media/i2c/Makefile +++ b/drivers/media/i2c/Makefile @@ -69,7 +69,6 @@ obj-$(CONFIG_VIDEO_M52790) += m52790.o obj-$(CONFIG_VIDEO_MAX9271_LIB) += max9271.o obj-$(CONFIG_VIDEO_MAX9286) += max9286.o obj-$(CONFIG_VIDEO_MAX96714) += max96714.o -obj-$(CONFIG_VIDEO_MAX96717) += max96717.o obj-$(CONFIG_VIDEO_MAXIM_SERDES) += maxim-serdes/ obj-$(CONFIG_VIDEO_ML86V7667) += ml86v7667.o obj-$(CONFIG_VIDEO_MSP3400) += msp3400.o diff --git a/drivers/media/i2c/max96717.c b/drivers/media/i2c/max96717.c deleted file mode 100644 index 9259d58ba734..000000000000 --- a/drivers/media/i2c/max96717.c +++ /dev/null @@ -1,1103 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Maxim GMSL2 Serializer Driver - * - * Copyright (C) 2024 Collabora Ltd. - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include - -#define MAX96717_DEVICE_ID 0xbf -#define MAX96717F_DEVICE_ID 0xc8 -#define MAX96717_PORTS 2 -#define MAX96717_PAD_SINK 0 -#define MAX96717_PAD_SOURCE 1 -#define MAX96717_CSI_NLANES 4 - -#define MAX96717_DEFAULT_CLKOUT_RATE 24000000UL - -/* DEV */ -#define MAX96717_REG3 CCI_REG8(0x3) -#define MAX96717_RCLKSEL GENMASK(1, 0) -#define RCLKSEL_REF_PLL CCI_REG8(0x3) -#define MAX96717_REG6 CCI_REG8(0x6) -#define RCLKEN BIT(5) -#define MAX96717_DEV_ID CCI_REG8(0xd) -#define MAX96717_DEV_REV CCI_REG8(0xe) -#define MAX96717_DEV_REV_MASK GENMASK(3, 0) - -/* VID_TX Z */ -#define MAX96717_VIDEO_TX0 CCI_REG8(0x110) -#define MAX96717_VIDEO_AUTO_BPP BIT(3) -#define MAX96717_VIDEO_TX2 CCI_REG8(0x112) -#define MAX96717_VIDEO_PCLKDET BIT(7) - -/* VTX_Z */ -#define MAX96717_VTX0 CCI_REG8(0x24e) -#define MAX96717_VTX1 CCI_REG8(0x24f) -#define MAX96717_PATTERN_CLK_FREQ GENMASK(3, 1) -#define MAX96717_VTX_VS_DLY CCI_REG24(0x250) -#define MAX96717_VTX_VS_HIGH CCI_REG24(0x253) -#define MAX96717_VTX_VS_LOW CCI_REG24(0x256) -#define MAX96717_VTX_V2H CCI_REG24(0x259) -#define MAX96717_VTX_HS_HIGH CCI_REG16(0x25c) -#define MAX96717_VTX_HS_LOW CCI_REG16(0x25e) -#define MAX96717_VTX_HS_CNT CCI_REG16(0x260) -#define MAX96717_VTX_V2D CCI_REG24(0x262) -#define MAX96717_VTX_DE_HIGH CCI_REG16(0x265) -#define MAX96717_VTX_DE_LOW CCI_REG16(0x267) -#define MAX96717_VTX_DE_CNT CCI_REG16(0x269) -#define MAX96717_VTX29 CCI_REG8(0x26b) -#define MAX96717_VTX_MODE GENMASK(1, 0) -#define MAX96717_VTX_GRAD_INC CCI_REG8(0x26c) -#define MAX96717_VTX_CHKB_COLOR_A CCI_REG24(0x26d) -#define MAX96717_VTX_CHKB_COLOR_B CCI_REG24(0x270) -#define MAX96717_VTX_CHKB_RPT_CNT_A CCI_REG8(0x273) -#define MAX96717_VTX_CHKB_RPT_CNT_B CCI_REG8(0x274) -#define MAX96717_VTX_CHKB_ALT CCI_REG8(0x275) - -/* GPIO */ -#define MAX96717_NUM_GPIO 11 -#define MAX96717_GPIO_REG_A(gpio) CCI_REG8(0x2be + (gpio) * 3) -#define MAX96717_GPIO_OUT BIT(4) -#define MAX96717_GPIO_IN BIT(3) -#define MAX96717_GPIO_RX_EN BIT(2) -#define MAX96717_GPIO_TX_EN BIT(1) -#define MAX96717_GPIO_OUT_DIS BIT(0) - -/* FRONTTOP */ -/* MAX96717 only have CSI port 'B' */ -#define MAX96717_FRONTOP0 CCI_REG8(0x308) -#define MAX96717_START_PORT_B BIT(5) - -/* MIPI_RX */ -#define MAX96717_MIPI_RX1 CCI_REG8(0x331) -#define MAX96717_MIPI_LANES_CNT GENMASK(5, 4) -#define MAX96717_MIPI_RX2 CCI_REG8(0x332) /* phy1 Lanes map */ -#define MAX96717_PHY2_LANES_MAP GENMASK(7, 4) -#define MAX96717_MIPI_RX3 CCI_REG8(0x333) /* phy2 Lanes map */ -#define MAX96717_PHY1_LANES_MAP GENMASK(3, 0) -#define MAX96717_MIPI_RX4 CCI_REG8(0x334) /* phy1 lane polarities */ -#define MAX96717_PHY1_LANES_POL GENMASK(6, 4) -#define MAX96717_MIPI_RX5 CCI_REG8(0x335) /* phy2 lane polarities */ -#define MAX96717_PHY2_LANES_POL GENMASK(2, 0) - -/* MIPI_RX_EXT */ -#define MAX96717_MIPI_RX_EXT11 CCI_REG8(0x383) -#define MAX96717_TUN_MODE BIT(7) - -/* REF_VTG */ -#define REF_VTG0 CCI_REG8(0x3f0) -#define REFGEN_PREDEF_EN BIT(6) -#define REFGEN_PREDEF_FREQ_MASK GENMASK(5, 4) -#define REFGEN_PREDEF_FREQ_ALT BIT(3) -#define REFGEN_RST BIT(1) -#define REFGEN_EN BIT(0) - -/* MISC */ -#define PIO_SLEW_1 CCI_REG8(0x570) - -enum max96717_vpg_mode { - MAX96717_VPG_DISABLED = 0, - MAX96717_VPG_CHECKERBOARD = 1, - MAX96717_VPG_GRADIENT = 2, -}; - -struct max96717_priv { - struct i2c_client *client; - struct regmap *regmap; - struct i2c_mux_core *mux; - struct v4l2_mbus_config_mipi_csi2 mipi_csi2; - struct v4l2_subdev sd; - struct media_pad pads[MAX96717_PORTS]; - struct v4l2_ctrl_handler ctrl_handler; - struct v4l2_async_notifier notifier; - struct v4l2_subdev *source_sd; - u16 source_sd_pad; - u64 enabled_source_streams; - u8 pll_predef_index; - struct clk_hw clk_hw; - struct gpio_chip gpio_chip; - enum max96717_vpg_mode pattern; -}; - -static inline struct max96717_priv *sd_to_max96717(struct v4l2_subdev *sd) -{ - return container_of(sd, struct max96717_priv, sd); -} - -static inline struct max96717_priv *clk_hw_to_max96717(struct clk_hw *hw) -{ - return container_of(hw, struct max96717_priv, clk_hw); -} - -static int max96717_i2c_mux_select(struct i2c_mux_core *mux, u32 chan) -{ - return 0; -} - -static int max96717_i2c_mux_init(struct max96717_priv *priv) -{ - priv->mux = i2c_mux_alloc(priv->client->adapter, &priv->client->dev, - 1, 0, I2C_MUX_LOCKED | I2C_MUX_GATE, - max96717_i2c_mux_select, NULL); - if (!priv->mux) - return -ENOMEM; - - return i2c_mux_add_adapter(priv->mux, 0, 0); -} - -static inline int max96717_start_csi(struct max96717_priv *priv, bool start) -{ - return cci_update_bits(priv->regmap, MAX96717_FRONTOP0, - MAX96717_START_PORT_B, - start ? MAX96717_START_PORT_B : 0, NULL); -} - -static int max96717_apply_patgen_timing(struct max96717_priv *priv, - struct v4l2_subdev_state *state) -{ - struct v4l2_mbus_framefmt *fmt = - v4l2_subdev_state_get_format(state, MAX96717_PAD_SOURCE); - const u32 h_active = fmt->width; - const u32 h_fp = 88; - const u32 h_sw = 44; - const u32 h_bp = 148; - u32 h_tot; - const u32 v_active = fmt->height; - const u32 v_fp = 4; - const u32 v_sw = 5; - const u32 v_bp = 36; - u32 v_tot; - int ret = 0; - - h_tot = h_active + h_fp + h_sw + h_bp; - v_tot = v_active + v_fp + v_sw + v_bp; - - /* 75 Mhz pixel clock */ - cci_update_bits(priv->regmap, MAX96717_VTX1, - MAX96717_PATTERN_CLK_FREQ, 0xa, &ret); - - dev_info(&priv->client->dev, "height: %d width: %d\n", fmt->height, - fmt->width); - - cci_write(priv->regmap, MAX96717_VTX_VS_DLY, 0, &ret); - cci_write(priv->regmap, MAX96717_VTX_VS_HIGH, v_sw * h_tot, &ret); - cci_write(priv->regmap, MAX96717_VTX_VS_LOW, - (v_active + v_fp + v_bp) * h_tot, &ret); - cci_write(priv->regmap, MAX96717_VTX_HS_HIGH, h_sw, &ret); - cci_write(priv->regmap, MAX96717_VTX_HS_LOW, h_active + h_fp + h_bp, - &ret); - cci_write(priv->regmap, MAX96717_VTX_V2D, - h_tot * (v_sw + v_bp) + (h_sw + h_bp), &ret); - cci_write(priv->regmap, MAX96717_VTX_HS_CNT, v_tot, &ret); - cci_write(priv->regmap, MAX96717_VTX_DE_HIGH, h_active, &ret); - cci_write(priv->regmap, MAX96717_VTX_DE_LOW, h_fp + h_sw + h_bp, - &ret); - cci_write(priv->regmap, MAX96717_VTX_DE_CNT, v_active, &ret); - /* B G R */ - cci_write(priv->regmap, MAX96717_VTX_CHKB_COLOR_A, 0xfecc00, &ret); - /* B G R */ - cci_write(priv->regmap, MAX96717_VTX_CHKB_COLOR_B, 0x006aa7, &ret); - cci_write(priv->regmap, MAX96717_VTX_CHKB_RPT_CNT_A, 0x3c, &ret); - cci_write(priv->regmap, MAX96717_VTX_CHKB_RPT_CNT_B, 0x3c, &ret); - cci_write(priv->regmap, MAX96717_VTX_CHKB_ALT, 0x3c, &ret); - cci_write(priv->regmap, MAX96717_VTX_GRAD_INC, 0x10, &ret); - - return ret; -} - -static int max96717_apply_patgen(struct max96717_priv *priv, - struct v4l2_subdev_state *state) -{ - unsigned int val; - int ret = 0; - - if (priv->pattern) - ret = max96717_apply_patgen_timing(priv, state); - - cci_write(priv->regmap, MAX96717_VTX0, priv->pattern ? 0xfb : 0, - &ret); - - val = FIELD_PREP(MAX96717_VTX_MODE, priv->pattern); - cci_update_bits(priv->regmap, MAX96717_VTX29, MAX96717_VTX_MODE, - val, &ret); - return ret; -} - -static int max96717_s_ctrl(struct v4l2_ctrl *ctrl) -{ - struct max96717_priv *priv = - container_of(ctrl->handler, struct max96717_priv, ctrl_handler); - int ret; - - switch (ctrl->id) { - case V4L2_CID_TEST_PATTERN: - if (priv->enabled_source_streams) - return -EBUSY; - priv->pattern = ctrl->val; - break; - default: - return -EINVAL; - } - - /* Use bpp from bpp register */ - ret = cci_update_bits(priv->regmap, MAX96717_VIDEO_TX0, - MAX96717_VIDEO_AUTO_BPP, - priv->pattern ? 0 : MAX96717_VIDEO_AUTO_BPP, - NULL); - - /* - * Pattern generator doesn't work with tunnel mode. - * Needs RGB color format and deserializer tunnel mode must be disabled. - */ - return cci_update_bits(priv->regmap, MAX96717_MIPI_RX_EXT11, - MAX96717_TUN_MODE, - priv->pattern ? 0 : MAX96717_TUN_MODE, &ret); -} - -static const char * const max96717_test_pattern[] = { - "Disabled", - "Checkerboard", - "Gradient" -}; - -static const struct v4l2_ctrl_ops max96717_ctrl_ops = { - .s_ctrl = max96717_s_ctrl, -}; - -static int max96717_gpiochip_get(struct gpio_chip *gpiochip, - unsigned int offset) -{ - struct max96717_priv *priv = gpiochip_get_data(gpiochip); - u64 val; - int ret; - - ret = cci_read(priv->regmap, MAX96717_GPIO_REG_A(offset), - &val, NULL); - if (ret) - return ret; - - if (val & MAX96717_GPIO_OUT_DIS) - return !!(val & MAX96717_GPIO_IN); - else - return !!(val & MAX96717_GPIO_OUT); -} - -static void max96717_gpiochip_set(struct gpio_chip *gpiochip, - unsigned int offset, int value) -{ - struct max96717_priv *priv = gpiochip_get_data(gpiochip); - - cci_update_bits(priv->regmap, MAX96717_GPIO_REG_A(offset), - MAX96717_GPIO_OUT, MAX96717_GPIO_OUT, NULL); -} - -static int max96717_gpio_get_direction(struct gpio_chip *gpiochip, - unsigned int offset) -{ - struct max96717_priv *priv = gpiochip_get_data(gpiochip); - u64 val; - int ret; - - ret = cci_read(priv->regmap, MAX96717_GPIO_REG_A(offset), &val, NULL); - if (ret < 0) - return ret; - - return !!(val & MAX96717_GPIO_OUT_DIS); -} - -static int max96717_gpio_direction_out(struct gpio_chip *gpiochip, - unsigned int offset, int value) -{ - struct max96717_priv *priv = gpiochip_get_data(gpiochip); - - return cci_update_bits(priv->regmap, MAX96717_GPIO_REG_A(offset), - MAX96717_GPIO_OUT_DIS | MAX96717_GPIO_OUT, - value ? MAX96717_GPIO_OUT : 0, NULL); -} - -static int max96717_gpio_direction_in(struct gpio_chip *gpiochip, - unsigned int offset) -{ - struct max96717_priv *priv = gpiochip_get_data(gpiochip); - - return cci_update_bits(priv->regmap, MAX96717_GPIO_REG_A(offset), - MAX96717_GPIO_OUT_DIS, MAX96717_GPIO_OUT_DIS, - NULL); -} - -static int max96717_gpiochip_probe(struct max96717_priv *priv) -{ - struct device *dev = &priv->client->dev; - struct gpio_chip *gc = &priv->gpio_chip; - int i, ret = 0; - - gc->label = dev_name(dev); - gc->parent = dev; - gc->owner = THIS_MODULE; - gc->ngpio = MAX96717_NUM_GPIO; - gc->base = -1; - gc->can_sleep = true; - gc->get_direction = max96717_gpio_get_direction; - gc->direction_input = max96717_gpio_direction_in; - gc->direction_output = max96717_gpio_direction_out; - gc->set = max96717_gpiochip_set; - gc->get = max96717_gpiochip_get; - gc->of_gpio_n_cells = 2; - - /* Disable GPIO forwarding */ - for (i = 0; i < gc->ngpio; i++) - cci_update_bits(priv->regmap, MAX96717_GPIO_REG_A(i), - MAX96717_GPIO_RX_EN | MAX96717_GPIO_TX_EN, - 0, &ret); - - if (ret) - return ret; - - ret = devm_gpiochip_add_data(dev, gc, priv); - if (ret) { - dev_err(dev, "Unable to create gpio_chip\n"); - return ret; - } - - return 0; -} - -static int _max96717_set_routing(struct v4l2_subdev *sd, - struct v4l2_subdev_state *state, - struct v4l2_subdev_krouting *routing) -{ - static const struct v4l2_mbus_framefmt format = { - .width = 1280, - .height = 1080, - .code = MEDIA_BUS_FMT_Y8_1X8, - .field = V4L2_FIELD_NONE, - }; - int ret; - - ret = v4l2_subdev_routing_validate(sd, routing, - V4L2_SUBDEV_ROUTING_ONLY_1_TO_1); - if (ret) - return ret; - - ret = v4l2_subdev_set_routing_with_fmt(sd, state, routing, &format); - if (ret) - return ret; - - return 0; -} - -static int max96717_set_routing(struct v4l2_subdev *sd, - struct v4l2_subdev_state *state, - enum v4l2_subdev_format_whence which, - struct v4l2_subdev_krouting *routing) -{ - struct max96717_priv *priv = sd_to_max96717(sd); - - if (which == V4L2_SUBDEV_FORMAT_ACTIVE && priv->enabled_source_streams) - return -EBUSY; - - return _max96717_set_routing(sd, state, routing); -} - -static int max96717_set_fmt(struct v4l2_subdev *sd, - struct v4l2_subdev_state *state, - struct v4l2_subdev_format *format) -{ - struct max96717_priv *priv = sd_to_max96717(sd); - struct v4l2_mbus_framefmt *fmt; - u64 stream_source_mask; - - if (format->which == V4L2_SUBDEV_FORMAT_ACTIVE && - priv->enabled_source_streams) - return -EBUSY; - - /* No transcoding, source and sink formats must match. */ - if (format->pad == MAX96717_PAD_SOURCE) - return v4l2_subdev_get_fmt(sd, state, format); - - /* Set sink format */ - fmt = v4l2_subdev_state_get_format(state, format->pad, format->stream); - if (!fmt) - return -EINVAL; - - *fmt = format->format; - - /* Propagate to source format */ - fmt = v4l2_subdev_state_get_opposite_stream_format(state, format->pad, - format->stream); - if (!fmt) - return -EINVAL; - *fmt = format->format; - - stream_source_mask = BIT(format->stream); - - return v4l2_subdev_state_xlate_streams(state, MAX96717_PAD_SOURCE, - MAX96717_PAD_SINK, - &stream_source_mask); -} - -static int max96717_init_state(struct v4l2_subdev *sd, - struct v4l2_subdev_state *state) -{ - struct v4l2_subdev_route routes[] = { - { - .sink_pad = MAX96717_PAD_SINK, - .sink_stream = 0, - .source_pad = MAX96717_PAD_SOURCE, - .source_stream = 0, - .flags = V4L2_SUBDEV_ROUTE_FL_ACTIVE, - }, - }; - struct v4l2_subdev_krouting routing = { - .num_routes = ARRAY_SIZE(routes), - .routes = routes, - }; - - return _max96717_set_routing(sd, state, &routing); -} - -static bool max96717_pipe_pclkdet(struct max96717_priv *priv) -{ - u64 val = 0; - - cci_read(priv->regmap, MAX96717_VIDEO_TX2, &val, NULL); - - return val & MAX96717_VIDEO_PCLKDET; -} - -static int max96717_log_status(struct v4l2_subdev *sd) -{ - struct max96717_priv *priv = sd_to_max96717(sd); - struct device *dev = &priv->client->dev; - - dev_info(dev, "Serializer: max96717\n"); - dev_info(dev, "Pipe: pclkdet:%d\n", max96717_pipe_pclkdet(priv)); - - return 0; -} - -static int max96717_enable_streams(struct v4l2_subdev *sd, - struct v4l2_subdev_state *state, u32 pad, - u64 streams_mask) -{ - struct max96717_priv *priv = sd_to_max96717(sd); - u64 sink_streams; - int ret; - - if (!priv->enabled_source_streams) - max96717_start_csi(priv, true); - - ret = max96717_apply_patgen(priv, state); - if (ret) - goto stop_csi; - - if (!priv->pattern) { - sink_streams = - v4l2_subdev_state_xlate_streams(state, - MAX96717_PAD_SOURCE, - MAX96717_PAD_SINK, - &streams_mask); - - ret = v4l2_subdev_enable_streams(priv->source_sd, - priv->source_sd_pad, - sink_streams); - if (ret) - goto stop_csi; - } - - priv->enabled_source_streams |= streams_mask; - - return 0; - -stop_csi: - if (!priv->enabled_source_streams) - max96717_start_csi(priv, false); - - return ret; -} - -static int max96717_disable_streams(struct v4l2_subdev *sd, - struct v4l2_subdev_state *state, u32 pad, - u64 streams_mask) -{ - struct max96717_priv *priv = sd_to_max96717(sd); - u64 sink_streams; - - /* - * Stop the CSI receiver first then the source, - * otherwise the device may become unresponsive - * while holding the I2C bus low. - */ - priv->enabled_source_streams &= ~streams_mask; - if (!priv->enabled_source_streams) - max96717_start_csi(priv, false); - - if (!priv->pattern) { - int ret; - - sink_streams = - v4l2_subdev_state_xlate_streams(state, - MAX96717_PAD_SOURCE, - MAX96717_PAD_SINK, - &streams_mask); - - ret = v4l2_subdev_disable_streams(priv->source_sd, - priv->source_sd_pad, - sink_streams); - if (ret) - return ret; - } - - return 0; -} - -static const struct v4l2_subdev_pad_ops max96717_pad_ops = { - .enable_streams = max96717_enable_streams, - .disable_streams = max96717_disable_streams, - .set_routing = max96717_set_routing, - .get_fmt = v4l2_subdev_get_fmt, - .set_fmt = max96717_set_fmt, -}; - -static const struct v4l2_subdev_core_ops max96717_subdev_core_ops = { - .log_status = max96717_log_status, -}; - -static const struct v4l2_subdev_internal_ops max96717_internal_ops = { - .init_state = max96717_init_state, -}; - -static const struct v4l2_subdev_ops max96717_subdev_ops = { - .core = &max96717_subdev_core_ops, - .pad = &max96717_pad_ops, -}; - -static const struct media_entity_operations max96717_entity_ops = { - .link_validate = v4l2_subdev_link_validate, -}; - -static int max96717_notify_bound(struct v4l2_async_notifier *notifier, - struct v4l2_subdev *source_subdev, - struct v4l2_async_connection *asd) -{ - struct max96717_priv *priv = sd_to_max96717(notifier->sd); - struct device *dev = &priv->client->dev; - int ret; - - ret = media_entity_get_fwnode_pad(&source_subdev->entity, - source_subdev->fwnode, - MEDIA_PAD_FL_SOURCE); - if (ret < 0) { - dev_err(dev, "Failed to find pad for %s\n", - source_subdev->name); - return ret; - } - - priv->source_sd = source_subdev; - priv->source_sd_pad = ret; - - ret = media_create_pad_link(&source_subdev->entity, priv->source_sd_pad, - &priv->sd.entity, 0, - MEDIA_LNK_FL_ENABLED | - MEDIA_LNK_FL_IMMUTABLE); - if (ret) { - dev_err(dev, "Unable to link %s:%u -> %s:0\n", - source_subdev->name, priv->source_sd_pad, - priv->sd.name); - return ret; - } - - return 0; -} - -static const struct v4l2_async_notifier_operations max96717_notify_ops = { - .bound = max96717_notify_bound, -}; - -static int max96717_v4l2_notifier_register(struct max96717_priv *priv) -{ - struct device *dev = &priv->client->dev; - struct v4l2_async_connection *asd; - struct fwnode_handle *ep_fwnode; - int ret; - - ep_fwnode = fwnode_graph_get_endpoint_by_id(dev_fwnode(dev), - MAX96717_PAD_SINK, 0, 0); - if (!ep_fwnode) { - dev_err(dev, "No graph endpoint\n"); - return -ENODEV; - } - - v4l2_async_subdev_nf_init(&priv->notifier, &priv->sd); - - asd = v4l2_async_nf_add_fwnode_remote(&priv->notifier, ep_fwnode, - struct v4l2_async_connection); - - fwnode_handle_put(ep_fwnode); - - if (IS_ERR(asd)) { - dev_err(dev, "Failed to add subdev: %ld", PTR_ERR(asd)); - v4l2_async_nf_cleanup(&priv->notifier); - return PTR_ERR(asd); - } - - priv->notifier.ops = &max96717_notify_ops; - - ret = v4l2_async_nf_register(&priv->notifier); - if (ret) { - dev_err(dev, "Failed to register subdev_notifier"); - v4l2_async_nf_cleanup(&priv->notifier); - return ret; - } - - return 0; -} - -static int max96717_subdev_init(struct max96717_priv *priv) -{ - struct device *dev = &priv->client->dev; - int ret; - - v4l2_i2c_subdev_init(&priv->sd, priv->client, &max96717_subdev_ops); - priv->sd.internal_ops = &max96717_internal_ops; - - v4l2_ctrl_handler_init(&priv->ctrl_handler, 1); - priv->sd.ctrl_handler = &priv->ctrl_handler; - - v4l2_ctrl_new_std_menu_items(&priv->ctrl_handler, - &max96717_ctrl_ops, - V4L2_CID_TEST_PATTERN, - ARRAY_SIZE(max96717_test_pattern) - 1, - 0, 0, max96717_test_pattern); - if (priv->ctrl_handler.error) { - ret = priv->ctrl_handler.error; - goto err_free_ctrl; - } - - priv->sd.flags |= V4L2_SUBDEV_FL_HAS_DEVNODE | V4L2_SUBDEV_FL_STREAMS; - priv->sd.entity.function = MEDIA_ENT_F_VID_IF_BRIDGE; - priv->sd.entity.ops = &max96717_entity_ops; - - priv->pads[MAX96717_PAD_SINK].flags = MEDIA_PAD_FL_SINK; - priv->pads[MAX96717_PAD_SOURCE].flags = MEDIA_PAD_FL_SOURCE; - - ret = media_entity_pads_init(&priv->sd.entity, 2, priv->pads); - if (ret) { - dev_err_probe(dev, ret, "Failed to init pads\n"); - goto err_free_ctrl; - } - - ret = v4l2_subdev_init_finalize(&priv->sd); - if (ret) { - dev_err_probe(dev, ret, - "v4l2 subdev init finalized failed\n"); - goto err_entity_cleanup; - } - ret = max96717_v4l2_notifier_register(priv); - if (ret) { - dev_err_probe(dev, ret, - "v4l2 subdev notifier register failed\n"); - goto err_free_state; - } - - ret = v4l2_async_register_subdev(&priv->sd); - if (ret) { - dev_err_probe(dev, ret, "v4l2_async_register_subdev error\n"); - goto err_unreg_notif; - } - - return 0; - -err_unreg_notif: - v4l2_async_nf_unregister(&priv->notifier); - v4l2_async_nf_cleanup(&priv->notifier); -err_free_state: - v4l2_subdev_cleanup(&priv->sd); -err_entity_cleanup: - media_entity_cleanup(&priv->sd.entity); -err_free_ctrl: - v4l2_ctrl_handler_free(&priv->ctrl_handler); - - return ret; -} - -static void max96717_subdev_uninit(struct max96717_priv *priv) -{ - v4l2_async_unregister_subdev(&priv->sd); - v4l2_async_nf_unregister(&priv->notifier); - v4l2_async_nf_cleanup(&priv->notifier); - v4l2_subdev_cleanup(&priv->sd); - media_entity_cleanup(&priv->sd.entity); - v4l2_ctrl_handler_free(&priv->ctrl_handler); -} - -struct max96717_pll_predef_freq { - unsigned long freq; - bool is_alt; - u8 val; -}; - -static const struct max96717_pll_predef_freq max96717_predef_freqs[] = { - { 13500000, true, 0 }, { 19200000, false, 0 }, - { 24000000, true, 1 }, { 27000000, false, 1 }, - { 37125000, false, 2 }, { 74250000, false, 3 }, -}; - -static unsigned long -max96717_clk_recalc_rate(struct clk_hw *hw, unsigned long parent_rate) -{ - struct max96717_priv *priv = clk_hw_to_max96717(hw); - - return max96717_predef_freqs[priv->pll_predef_index].freq; -} - -static unsigned int max96717_clk_find_best_index(struct max96717_priv *priv, - unsigned long rate) -{ - unsigned int i, idx = 0; - unsigned long diff_new, diff_old = U32_MAX; - - for (i = 0; i < ARRAY_SIZE(max96717_predef_freqs); i++) { - diff_new = abs(rate - max96717_predef_freqs[i].freq); - if (diff_new < diff_old) { - diff_old = diff_new; - idx = i; - } - } - - return idx; -} - -static long max96717_clk_round_rate(struct clk_hw *hw, unsigned long rate, - unsigned long *parent_rate) -{ - struct max96717_priv *priv = clk_hw_to_max96717(hw); - struct device *dev = &priv->client->dev; - unsigned int idx; - - idx = max96717_clk_find_best_index(priv, rate); - - if (rate != max96717_predef_freqs[idx].freq) { - dev_warn(dev, "Request CLK freq:%lu, found CLK freq:%lu\n", - rate, max96717_predef_freqs[idx].freq); - } - - return max96717_predef_freqs[idx].freq; -} - -static int max96717_clk_set_rate(struct clk_hw *hw, unsigned long rate, - unsigned long parent_rate) -{ - struct max96717_priv *priv = clk_hw_to_max96717(hw); - unsigned int val, idx; - int ret = 0; - - idx = max96717_clk_find_best_index(priv, rate); - - val = FIELD_PREP(REFGEN_PREDEF_FREQ_MASK, - max96717_predef_freqs[idx].val); - - if (max96717_predef_freqs[idx].is_alt) - val |= REFGEN_PREDEF_FREQ_ALT; - - val |= REFGEN_RST | REFGEN_PREDEF_EN; - - cci_write(priv->regmap, REF_VTG0, val, &ret); - cci_update_bits(priv->regmap, REF_VTG0, REFGEN_RST | REFGEN_EN, - REFGEN_EN, &ret); - if (ret) - return ret; - - priv->pll_predef_index = idx; - - return 0; -} - -static int max96717_clk_prepare(struct clk_hw *hw) -{ - struct max96717_priv *priv = clk_hw_to_max96717(hw); - - return cci_update_bits(priv->regmap, MAX96717_REG6, RCLKEN, - RCLKEN, NULL); -} - -static void max96717_clk_unprepare(struct clk_hw *hw) -{ - struct max96717_priv *priv = clk_hw_to_max96717(hw); - - cci_update_bits(priv->regmap, MAX96717_REG6, RCLKEN, 0, NULL); -} - -static const struct clk_ops max96717_clk_ops = { - .prepare = max96717_clk_prepare, - .unprepare = max96717_clk_unprepare, - .set_rate = max96717_clk_set_rate, - .recalc_rate = max96717_clk_recalc_rate, - .round_rate = max96717_clk_round_rate, -}; - -static int max96717_register_clkout(struct max96717_priv *priv) -{ - struct device *dev = &priv->client->dev; - struct clk_init_data init = { .ops = &max96717_clk_ops }; - int ret; - - init.name = kasprintf(GFP_KERNEL, "max96717.%s.clk_out", dev_name(dev)); - if (!init.name) - return -ENOMEM; - - /* RCLKSEL Reference PLL output */ - ret = cci_update_bits(priv->regmap, MAX96717_REG3, MAX96717_RCLKSEL, - MAX96717_RCLKSEL, NULL); - /* MFP4 fastest slew rate */ - cci_update_bits(priv->regmap, PIO_SLEW_1, BIT(5) | BIT(4), 0, &ret); - if (ret) - goto free_init_name; - - priv->clk_hw.init = &init; - - /* Initialize to 24 MHz */ - ret = max96717_clk_set_rate(&priv->clk_hw, - MAX96717_DEFAULT_CLKOUT_RATE, 0); - if (ret < 0) - goto free_init_name; - - ret = devm_clk_hw_register(dev, &priv->clk_hw); - kfree(init.name); - if (ret) - return dev_err_probe(dev, ret, "Cannot register clock HW\n"); - - ret = devm_of_clk_add_hw_provider(dev, of_clk_hw_simple_get, - &priv->clk_hw); - if (ret) - return dev_err_probe(dev, ret, - "Cannot add OF clock provider\n"); - - return 0; - -free_init_name: - kfree(init.name); - return ret; -} - -static int max96717_init_csi_lanes(struct max96717_priv *priv) -{ - struct v4l2_mbus_config_mipi_csi2 *mipi = &priv->mipi_csi2; - unsigned long lanes_used = 0; - unsigned int nlanes, lane, val = 0; - int ret; - - nlanes = mipi->num_data_lanes; - - ret = cci_update_bits(priv->regmap, MAX96717_MIPI_RX1, - MAX96717_MIPI_LANES_CNT, - FIELD_PREP(MAX96717_MIPI_LANES_CNT, - nlanes - 1), NULL); - - /* lanes polarity */ - for (lane = 0; lane < nlanes + 1; lane++) { - if (!mipi->lane_polarities[lane]) - continue; - /* Clock lane */ - if (lane == 0) - val |= BIT(2); - else if (lane < 3) - val |= BIT(lane - 1); - else - val |= BIT(lane); - } - - cci_update_bits(priv->regmap, MAX96717_MIPI_RX5, - MAX96717_PHY2_LANES_POL, - FIELD_PREP(MAX96717_PHY2_LANES_POL, val), &ret); - - cci_update_bits(priv->regmap, MAX96717_MIPI_RX4, - MAX96717_PHY1_LANES_POL, - FIELD_PREP(MAX96717_PHY1_LANES_POL, - val >> 3), &ret); - /* lanes mapping */ - for (lane = 0, val = 0; lane < nlanes; lane++) { - val |= (mipi->data_lanes[lane] - 1) << (lane * 2); - lanes_used |= BIT(mipi->data_lanes[lane] - 1); - } - - /* - * Unused lanes need to be mapped as well to not have - * the same lanes mapped twice. - */ - for (; lane < MAX96717_CSI_NLANES; lane++) { - unsigned int idx = find_first_zero_bit(&lanes_used, - MAX96717_CSI_NLANES); - - val |= idx << (lane * 2); - lanes_used |= BIT(idx); - } - - cci_update_bits(priv->regmap, MAX96717_MIPI_RX3, - MAX96717_PHY1_LANES_MAP, - FIELD_PREP(MAX96717_PHY1_LANES_MAP, val), &ret); - - return cci_update_bits(priv->regmap, MAX96717_MIPI_RX2, - MAX96717_PHY2_LANES_MAP, - FIELD_PREP(MAX96717_PHY2_LANES_MAP, val >> 4), - &ret); -} - -static int max96717_hw_init(struct max96717_priv *priv) -{ - struct device *dev = &priv->client->dev; - u64 dev_id, val; - int ret; - - ret = cci_read(priv->regmap, MAX96717_DEV_ID, &dev_id, NULL); - if (ret) - return dev_err_probe(dev, ret, - "Fail to read the device id\n"); - - if (dev_id != MAX96717_DEVICE_ID && dev_id != MAX96717F_DEVICE_ID) - return dev_err_probe(dev, -EOPNOTSUPP, - "Unsupported device id got %x\n", (u8)dev_id); - - ret = cci_read(priv->regmap, MAX96717_DEV_REV, &val, NULL); - if (ret) - return dev_err_probe(dev, ret, - "Fail to read device revision"); - - dev_dbg(dev, "Found %x (rev %lx)\n", (u8)dev_id, - (u8)val & MAX96717_DEV_REV_MASK); - - ret = cci_read(priv->regmap, MAX96717_MIPI_RX_EXT11, &val, NULL); - if (ret) - return dev_err_probe(dev, ret, - "Fail to read mipi rx extension"); - - if (!(val & MAX96717_TUN_MODE)) - return dev_err_probe(dev, -EOPNOTSUPP, - "Only supporting tunnel mode"); - - return max96717_init_csi_lanes(priv); -} - -static int max96717_parse_dt(struct max96717_priv *priv) -{ - struct device *dev = &priv->client->dev; - struct v4l2_fwnode_endpoint vep = { .bus_type = V4L2_MBUS_CSI2_DPHY }; - struct fwnode_handle *ep_fwnode; - unsigned char num_data_lanes; - int ret; - - ep_fwnode = fwnode_graph_get_endpoint_by_id(dev_fwnode(dev), - MAX96717_PAD_SINK, 0, 0); - if (!ep_fwnode) - return dev_err_probe(dev, -ENOENT, "no endpoint found\n"); - - ret = v4l2_fwnode_endpoint_parse(ep_fwnode, &vep); - - fwnode_handle_put(ep_fwnode); - - if (ret < 0) - return dev_err_probe(dev, ret, "Failed to parse sink endpoint"); - - num_data_lanes = vep.bus.mipi_csi2.num_data_lanes; - if (num_data_lanes < 1 || num_data_lanes > MAX96717_CSI_NLANES) - return dev_err_probe(dev, -EINVAL, - "Invalid data lanes must be 1 to 4\n"); - - priv->mipi_csi2 = vep.bus.mipi_csi2; - - return 0; -} - -static int max96717_probe(struct i2c_client *client) -{ - struct device *dev = &client->dev; - struct max96717_priv *priv; - int ret; - - priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL); - if (!priv) - return -ENOMEM; - - priv->client = client; - priv->regmap = devm_cci_regmap_init_i2c(client, 16); - if (IS_ERR(priv->regmap)) { - ret = PTR_ERR(priv->regmap); - return dev_err_probe(dev, ret, "Failed to init regmap\n"); - } - - ret = max96717_parse_dt(priv); - if (ret) - return dev_err_probe(dev, ret, "Failed to parse the dt\n"); - - ret = max96717_hw_init(priv); - if (ret) - return dev_err_probe(dev, ret, - "Failed to initialize the hardware\n"); - - ret = max96717_gpiochip_probe(priv); - if (ret) - return dev_err_probe(&client->dev, ret, - "Failed to init gpiochip\n"); - - ret = max96717_register_clkout(priv); - if (ret) - return dev_err_probe(dev, ret, "Failed to register clkout\n"); - - ret = max96717_subdev_init(priv); - if (ret) - return dev_err_probe(dev, ret, - "Failed to initialize v4l2 subdev\n"); - - ret = max96717_i2c_mux_init(priv); - if (ret) { - dev_err_probe(dev, ret, "failed to add remote i2c adapter\n"); - max96717_subdev_uninit(priv); - } - - return ret; -} - -static void max96717_remove(struct i2c_client *client) -{ - struct v4l2_subdev *sd = i2c_get_clientdata(client); - struct max96717_priv *priv = sd_to_max96717(sd); - - max96717_subdev_uninit(priv); - i2c_mux_del_adapters(priv->mux); -} - -static const struct of_device_id max96717_of_ids[] = { - { .compatible = "maxim,max96717f" }, - { } -}; -MODULE_DEVICE_TABLE(of, max96717_of_ids); - -static struct i2c_driver max96717_i2c_driver = { - .driver = { - .name = "max96717", - .of_match_table = max96717_of_ids, - }, - .probe = max96717_probe, - .remove = max96717_remove, -}; - -module_i2c_driver(max96717_i2c_driver); - -MODULE_DESCRIPTION("Maxim GMSL2 MAX96717 Serializer Driver"); -MODULE_AUTHOR("Julien Massot "); -MODULE_LICENSE("GPL"); From patchwork Sun Mar 9 08:48:08 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cosmin Tanislav X-Patchwork-Id: 14008273 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 0ADC3C282D1 for ; Sun, 9 Mar 2025 09:15:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From: Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=7XNu4y95xJowMekuxXRvFXPVHszxNZZ9cbkpzk1VUbY=; b=m5/S5bBmJg0VrOTja1KahwkCcZ 4K0h0LXpW/vaY+/v9OzL0KsLsswNTFTDRu5DEg9ufrNS1BEWKEOZvIA9uPPHlv9iFCsM+7diall5n 6qyY7w4qhX8xyOX7IpN9sQJB79QM6yPpJMz2ytNrLDY3BZo9eBsVyV/IX0LuMlbUw6cyA5nsg+/2l 2FLPWw+/3M7j2jVhUZPZ99wrdAszvreTTl0HJDJ6okPKNK0AeRkClRjRe+jVHcj149aJp1A0zq38H 4ruAmTvpCBHJAi7BrIQcChjK3IKwkFN68UKrCkIIFArythLVey6cEsIVrDMQas0Y9LsW0wgBtXgAc 8E1+ypXQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1trCkL-00000000Fj4-3Dmc; Sun, 09 Mar 2025 09:14:57 +0000 Received: from mail-ej1-x636.google.com ([2a00:1450:4864:20::636]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1trCLa-00000000CdD-1Kdv for linux-arm-kernel@lists.infradead.org; Sun, 09 Mar 2025 08:49:24 +0000 Received: by mail-ej1-x636.google.com with SMTP id a640c23a62f3a-ac27cb35309so115678266b.2 for ; Sun, 09 Mar 2025 00:49:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741510161; x=1742114961; darn=lists.infradead.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=7XNu4y95xJowMekuxXRvFXPVHszxNZZ9cbkpzk1VUbY=; b=QfIYGfj4qY6dsWZoygVRR+8J7EoA3sDtHqj4KLc4xQhhc1kD4lwWlBd2SXeO/Buz63 7cS6HyzXrxCFFYLTyb4j5R9GLgQBsR4p/4GMZyR90XdM3OxzMk/bfHRxNjlq0rONQSCt BGmd3GcMl9q8vMD9Ml9pcfmkeexv645vzKXZM/D29jJeoCNNqcQENjsK2rKGNVKHltp/ CIKN7ipQTKZNo2LUuuHA+XNPX5IP7z/bZBCxJzhnCmlhFePJwgE2gwZ/ccH3FwfvHUO2 j15TvigedUELivavEWYKopfPjzAtWA7I03b4SRLrYG/MNh7/JFd/ocv/X94E736R5cYR YQJA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741510161; x=1742114961; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=7XNu4y95xJowMekuxXRvFXPVHszxNZZ9cbkpzk1VUbY=; b=ZcZYFNP6zbuhbHaYVBfiy3QOocBs1NowjrEjrllChkMOMUqwRGz+qVrRinwmOkEFyv a2IhYi+Rm6X/BztCUj8Qin//F0b1I0tDY4VKTQHBHjQCM0/AguTU55xiWdxezwgVL/GG A2p77v3XK198RSlJJ2JwQDATf0RnOSFf9Mn3HZ+76w2R/Q7b9G6bdIlTC7Cwjjn0Vr0r CxpjLsH5l6zyFO/P1wege8ouMoB/3zOA9/yqCxnqtBN39N1OMhgKt5/H068ckcnZWbPy I+EXKDFPgUyRvT9he5O3a+/15ObuPcMANafWFAhMl+dTLstdFcQQatWMGM72E9rh6Nks nWhw== X-Forwarded-Encrypted: i=1; AJvYcCVzS4kTr1kTRFv/pRKVHmwjjg4nxaEu03c98U7dudVvqd7AS2PCDvgCOicHlzA4Vl2dQltf+8AlJPD+6+fPm3Q7@lists.infradead.org X-Gm-Message-State: AOJu0YyEXxUqmbVA/aGzYaz1Hy8Y/bMc+k5RErEw/K0ticuE00FUzjC0 x3GVHK0dq1awJ0vg0YqVef77Jgz8Lh+ExIxCYHosqympfXU4fxfK X-Gm-Gg: ASbGnctGOTGq+c/+glr3Y7DGspwF6mBJXxKrEQ0wlkBlBwx5mq62v4ssccPUlCOi8pb MKPCh+gRHmzOAHm5YzYZY3PS6IouvpMus8YnYiJEdWVw3KNJrwHQqjfgGCh1L2G2OW0OiqWH5AB 6fw3lbPlolMrFpYD6Md28SdOdKkvKrqZLEGybqRbuAMtyZ/6FZee3MGsCFXv0OaYYqBeqJPPevY MKKLmRfjd0eJfuK4ug50vHkVwgLynpUA6CyjurlkPqcMub4Q38FPBBTpe5qWtPWzyzegQKOoNcO UCY6EzRI8ic7sPb38KlZs8pJ5KKqqlslwsVSBWyTn1gNPYjg/efjzQh1yg== X-Google-Smtp-Source: AGHT+IFpFVjoiVuU9H+2D/her9KL5X+PMnLC1RrUGZ8FEHRaA3LvX1G30XzDI54PmJpdtGilgbvpnA== X-Received: by 2002:a17:907:970e:b0:ac1:e07b:63ca with SMTP id a640c23a62f3a-ac252a9d0b7mr875722866b.22.1741510160432; Sun, 09 Mar 2025 00:49:20 -0800 (PST) Received: from demon-pc.localdomain ([188.27.130.21]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ac239736153sm566347466b.108.2025.03.09.00.49.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Mar 2025 00:49:19 -0800 (PST) From: Cosmin Tanislav To: Cc: Tomi Valkeinen , Cosmin Tanislav , Mauro Carvalho Chehab , Rob Herring , Krzysztof Kozlowski , Conor Dooley , =?utf-8?q?Niklas_S=C3=B6derlund?= , Julien Massot , Catalin Marinas , Will Deacon , Greg Kroah-Hartman , Liam Girdwood , Mark Brown , Linus Walleij , Bartosz Golaszewski , Bjorn Andersson , Geert Uytterhoeven , Dmitry Baryshkov , Arnd Bergmann , Taniya Das , Biju Das , =?utf-8?q?N=C3=ADcolas_F_=2E_R_=2E_A?= =?utf-8?q?_=2E_Prado?= , Eric Biggers , Javier Carrasco , Ross Burton , Hans Verkuil , Sakari Ailus , Laurent Pinchart , Zhi Mao , Kieran Bingham , Dongcheng Yan , AngeloGioacchino Del Regno , Benjamin Mugnier , Tommaso Merciai , Dan Carpenter , Ihor Matushchak , Laurentiu Palcu , 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, Cosmin Tanislav Subject: [RFC PATCH v2 16/16] media: i2c: remove MAX96714 driver Date: Sun, 9 Mar 2025 10:48:08 +0200 Message-ID: <20250309084814.3114794-17-demonsingur@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250309084814.3114794-1-demonsingur@gmail.com> References: <20250309084814.3114794-1-demonsingur@gmail.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250309_004922_465050_07EADBBA X-CRM114-Status: GOOD ( 19.42 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org The previous MAX96714 driver has been removed and its functionality has been moved to the MAX9296A driver which makes use of the Maxim GMSL2/3 serializer framework. Signed-off-by: Cosmin Tanislav --- MAINTAINERS | 1 - drivers/media/i2c/Kconfig | 17 - drivers/media/i2c/Makefile | 1 - drivers/media/i2c/max96714.c | 1024 ---------------------------------- 4 files changed, 1043 deletions(-) delete mode 100644 drivers/media/i2c/max96714.c diff --git a/MAINTAINERS b/MAINTAINERS index e9fe6e9856d8..395de7a7da92 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -14194,7 +14194,6 @@ M: Julien Massot L: linux-media@vger.kernel.org S: Maintained F: Documentation/devicetree/bindings/media/i2c/maxim,max96714.yaml -F: drivers/media/i2c/max96714.c MAX96717 GMSL2 SERIALIZER DRIVER M: Julien Massot diff --git a/drivers/media/i2c/Kconfig b/drivers/media/i2c/Kconfig index 6c595dffb280..aa0a67b7da47 100644 --- a/drivers/media/i2c/Kconfig +++ b/drivers/media/i2c/Kconfig @@ -1619,23 +1619,6 @@ config VIDEO_DS90UB960 Device driver for the Texas Instruments DS90UB960 FPD-Link III Deserializer and DS90UB9702 FPD-Link IV Deserializer. -config VIDEO_MAX96714 - tristate "Maxim MAX96714 GMSL2 deserializer" - depends on OF && I2C && VIDEO_DEV - select I2C_MUX - select MEDIA_CONTROLLER - select GPIOLIB - select V4L2_CCI_I2C - select V4L2_FWNODE - select VIDEO_V4L2_SUBDEV_API - help - Device driver for the Maxim MAX96714 GMSL2 Deserializer. - MAX96714 deserializers convert a GMSL2 input to MIPI CSI-2 - output. - - To compile this driver as a module, choose M here: the - module will be called max96714. - source "drivers/media/i2c/maxim-serdes/Kconfig" endmenu diff --git a/drivers/media/i2c/Makefile b/drivers/media/i2c/Makefile index de0680ebf190..065e728f54ce 100644 --- a/drivers/media/i2c/Makefile +++ b/drivers/media/i2c/Makefile @@ -68,7 +68,6 @@ obj-$(CONFIG_VIDEO_LT6911UXE) += lt6911uxe.o obj-$(CONFIG_VIDEO_M52790) += m52790.o obj-$(CONFIG_VIDEO_MAX9271_LIB) += max9271.o obj-$(CONFIG_VIDEO_MAX9286) += max9286.o -obj-$(CONFIG_VIDEO_MAX96714) += max96714.o obj-$(CONFIG_VIDEO_MAXIM_SERDES) += maxim-serdes/ obj-$(CONFIG_VIDEO_ML86V7667) += ml86v7667.o obj-$(CONFIG_VIDEO_MSP3400) += msp3400.o diff --git a/drivers/media/i2c/max96714.c b/drivers/media/i2c/max96714.c deleted file mode 100644 index 159753b13777..000000000000 --- a/drivers/media/i2c/max96714.c +++ /dev/null @@ -1,1024 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Maxim GMSL2 Deserializer Driver - * - * Copyright (C) 2024 Collabora Ltd. - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include - -#define MAX96714_DEVICE_ID 0xc9 -#define MAX96714F_DEVICE_ID 0xca -#define MAX96714_NPORTS 2 -#define MAX96714_PAD_SINK 0 -#define MAX96714_PAD_SOURCE 1 -#define MAX96714_CSI_NLANES 4 - -/* DEV */ -#define MAX96714_REG13 CCI_REG8(0x0d) -#define MAX96714_DEV_REV CCI_REG8(0x0e) -#define MAX96714_DEV_REV_MASK GENMASK(3, 0) -#define MAX96714_LINK_LOCK CCI_REG8(0x13) -#define MAX96714_LINK_LOCK_BIT BIT(3) -#define MAX96714_IO_CHK0 CCI_REG8(0x38) -#define MAX96714_PATTERN_CLK_FREQ GENMASK(1, 0) -/* VID_RX */ -#define MAX96714_VIDEO_RX8 CCI_REG8(0x11a) -#define MAX96714_VID_LOCK BIT(6) - -/* VRX_PATGEN_0 */ -#define MAX96714_PATGEN_0 CCI_REG8(0x240) -#define MAX96714_PATGEN_1 CCI_REG8(0x241) -#define MAX96714_PATGEN_MODE GENMASK(5, 4) -#define MAX96714_PATGEN_VS_DLY CCI_REG24(0x242) -#define MAX96714_PATGEN_VS_HIGH CCI_REG24(0x245) -#define MAX96714_PATGEN_VS_LOW CCI_REG24(0x248) -#define MAX96714_PATGEN_V2H CCI_REG24(0x24b) -#define MAX96714_PATGEN_HS_HIGH CCI_REG16(0x24e) -#define MAX96714_PATGEN_HS_LOW CCI_REG16(0x250) -#define MAX96714_PATGEN_HS_CNT CCI_REG16(0x252) -#define MAX96714_PATGEN_V2D CCI_REG24(0x254) -#define MAX96714_PATGEN_DE_HIGH CCI_REG16(0x257) -#define MAX96714_PATGEN_DE_LOW CCI_REG16(0x259) -#define MAX96714_PATGEN_DE_CNT CCI_REG16(0x25b) -#define MAX96714_PATGEN_GRAD_INC CCI_REG8(0x25d) -#define MAX96714_PATGEN_CHKB_COLOR_A CCI_REG24(0x25e) -#define MAX96714_PATGEN_CHKB_COLOR_B CCI_REG24(0x261) -#define MAX96714_PATGEN_CHKB_RPT_CNT_A CCI_REG8(0x264) -#define MAX96714_PATGEN_CHKB_RPT_CNT_B CCI_REG8(0x265) -#define MAX96714_PATGEN_CHKB_ALT CCI_REG8(0x266) -/* BACKTOP */ -#define MAX96714_BACKTOP25 CCI_REG8(0x320) -#define CSI_DPLL_FREQ_MASK GENMASK(4, 0) - -/* MIPI_PHY */ -#define MAX96714_MIPI_PHY0 CCI_REG8(0x330) -#define MAX96714_FORCE_CSI_OUT BIT(7) -#define MAX96714_MIPI_STDBY_N CCI_REG8(0x332) -#define MAX96714_MIPI_STDBY_MASK GENMASK(5, 4) -#define MAX96714_MIPI_LANE_MAP CCI_REG8(0x333) -#define MAX96714_MIPI_POLARITY CCI_REG8(0x335) -#define MAX96714_MIPI_POLARITY_MASK GENMASK(5, 0) - -/* MIPI_TX */ -#define MAX96714_MIPI_LANE_CNT CCI_REG8(0x44a) -#define MAX96714_CSI2_LANE_CNT_MASK GENMASK(7, 6) -#define MAX96714_MIPI_TX52 CCI_REG8(0x474) -#define MAX96714_TUN_EN BIT(0) - -#define MHZ(v) ((u32)((v) * 1000000U)) - -enum max96714_vpg_mode { - MAX96714_VPG_DISABLED = 0, - MAX96714_VPG_CHECKERBOARD = 1, - MAX96714_VPG_GRADIENT = 2, -}; - -struct max96714_rxport { - struct { - struct v4l2_subdev *sd; - u16 pad; - struct fwnode_handle *ep_fwnode; - } source; - struct regulator *poc; -}; - -struct max96714_txport { - struct v4l2_fwnode_endpoint vep; -}; - -struct max96714_priv { - struct i2c_client *client; - struct regmap *regmap; - struct gpio_desc *pd_gpio; - struct max96714_rxport rxport; - struct i2c_mux_core *mux; - u64 enabled_source_streams; - struct v4l2_subdev sd; - struct media_pad pads[MAX96714_NPORTS]; - struct v4l2_mbus_config_mipi_csi2 mipi_csi2; - struct v4l2_ctrl_handler ctrl_handler; - struct v4l2_async_notifier notifier; - s64 tx_link_freq; - enum max96714_vpg_mode pattern; -}; - -static inline struct max96714_priv *sd_to_max96714(struct v4l2_subdev *sd) -{ - return container_of(sd, struct max96714_priv, sd); -} - -static int max96714_enable_tx_port(struct max96714_priv *priv) -{ - return cci_update_bits(priv->regmap, MAX96714_MIPI_STDBY_N, - MAX96714_MIPI_STDBY_MASK, - MAX96714_MIPI_STDBY_MASK, NULL); -} - -static int max96714_disable_tx_port(struct max96714_priv *priv) -{ - return cci_update_bits(priv->regmap, MAX96714_MIPI_STDBY_N, - MAX96714_MIPI_STDBY_MASK, 0, NULL); -} - -static bool max96714_tx_port_enabled(struct max96714_priv *priv) -{ - u64 val; - - cci_read(priv->regmap, MAX96714_MIPI_STDBY_N, &val, NULL); - - return val & MAX96714_MIPI_STDBY_MASK; -} - -static int max96714_apply_patgen_timing(struct max96714_priv *priv, - struct v4l2_subdev_state *state) -{ - struct v4l2_mbus_framefmt *fmt = - v4l2_subdev_state_get_format(state, MAX96714_PAD_SOURCE); - const u32 h_active = fmt->width; - const u32 h_fp = 88; - const u32 h_sw = 44; - const u32 h_bp = 148; - u32 h_tot; - const u32 v_active = fmt->height; - const u32 v_fp = 4; - const u32 v_sw = 5; - const u32 v_bp = 36; - u32 v_tot; - int ret = 0; - - h_tot = h_active + h_fp + h_sw + h_bp; - v_tot = v_active + v_fp + v_sw + v_bp; - - /* 75 Mhz pixel clock */ - cci_update_bits(priv->regmap, MAX96714_IO_CHK0, - MAX96714_PATTERN_CLK_FREQ, 1, &ret); - - dev_info(&priv->client->dev, "height: %d width: %d\n", fmt->height, - fmt->width); - - cci_write(priv->regmap, MAX96714_PATGEN_VS_DLY, 0, &ret); - cci_write(priv->regmap, MAX96714_PATGEN_VS_HIGH, v_sw * h_tot, &ret); - cci_write(priv->regmap, MAX96714_PATGEN_VS_LOW, - (v_active + v_fp + v_bp) * h_tot, &ret); - cci_write(priv->regmap, MAX96714_PATGEN_HS_HIGH, h_sw, &ret); - cci_write(priv->regmap, MAX96714_PATGEN_HS_LOW, h_active + h_fp + h_bp, - &ret); - cci_write(priv->regmap, MAX96714_PATGEN_V2D, - h_tot * (v_sw + v_bp) + (h_sw + h_bp), &ret); - cci_write(priv->regmap, MAX96714_PATGEN_HS_CNT, v_tot, &ret); - cci_write(priv->regmap, MAX96714_PATGEN_DE_HIGH, h_active, &ret); - cci_write(priv->regmap, MAX96714_PATGEN_DE_LOW, h_fp + h_sw + h_bp, - &ret); - cci_write(priv->regmap, MAX96714_PATGEN_DE_CNT, v_active, &ret); - /* B G R */ - cci_write(priv->regmap, MAX96714_PATGEN_CHKB_COLOR_A, 0xfecc00, &ret); - /* B G R */ - cci_write(priv->regmap, MAX96714_PATGEN_CHKB_COLOR_B, 0x006aa7, &ret); - cci_write(priv->regmap, MAX96714_PATGEN_CHKB_RPT_CNT_A, 0x3c, &ret); - cci_write(priv->regmap, MAX96714_PATGEN_CHKB_RPT_CNT_B, 0x3c, &ret); - cci_write(priv->regmap, MAX96714_PATGEN_CHKB_ALT, 0x3c, &ret); - cci_write(priv->regmap, MAX96714_PATGEN_GRAD_INC, 0x10, &ret); - - return ret; -} - -static int max96714_apply_patgen(struct max96714_priv *priv, - struct v4l2_subdev_state *state) -{ - unsigned int val; - int ret = 0; - - if (priv->pattern) - ret = max96714_apply_patgen_timing(priv, state); - - cci_write(priv->regmap, MAX96714_PATGEN_0, priv->pattern ? 0xfb : 0, - &ret); - - val = FIELD_PREP(MAX96714_PATGEN_MODE, priv->pattern); - cci_update_bits(priv->regmap, MAX96714_PATGEN_1, MAX96714_PATGEN_MODE, - val, &ret); - return ret; -} - -static int max96714_s_ctrl(struct v4l2_ctrl *ctrl) -{ - struct max96714_priv *priv = - container_of(ctrl->handler, struct max96714_priv, ctrl_handler); - int ret; - - switch (ctrl->id) { - case V4L2_CID_TEST_PATTERN: - if (priv->enabled_source_streams) - return -EBUSY; - priv->pattern = ctrl->val; - break; - default: - return -EINVAL; - } - - ret = cci_update_bits(priv->regmap, MAX96714_MIPI_PHY0, - MAX96714_FORCE_CSI_OUT, - priv->pattern ? MAX96714_FORCE_CSI_OUT : 0, NULL); - - /* Pattern generator doesn't work with tunnel mode */ - return cci_update_bits(priv->regmap, MAX96714_MIPI_TX52, - MAX96714_TUN_EN, - priv->pattern ? 0 : MAX96714_TUN_EN, &ret); -} - -static const char * const max96714_test_pattern[] = { - "Disabled", - "Checkerboard", - "Gradient" -}; - -static const struct v4l2_ctrl_ops max96714_ctrl_ops = { - .s_ctrl = max96714_s_ctrl, -}; - -static int max96714_enable_streams(struct v4l2_subdev *sd, - struct v4l2_subdev_state *state, - u32 source_pad, u64 streams_mask) -{ - struct max96714_priv *priv = sd_to_max96714(sd); - u64 sink_streams; - int ret; - - if (!priv->enabled_source_streams) - max96714_enable_tx_port(priv); - - ret = max96714_apply_patgen(priv, state); - if (ret) - goto err; - - if (!priv->pattern) { - if (!priv->rxport.source.sd) { - ret = -ENODEV; - goto err; - } - - sink_streams = - v4l2_subdev_state_xlate_streams(state, - MAX96714_PAD_SOURCE, - MAX96714_PAD_SINK, - &streams_mask); - - ret = v4l2_subdev_enable_streams(priv->rxport.source.sd, - priv->rxport.source.pad, - sink_streams); - if (ret) - goto err; - } - - priv->enabled_source_streams |= streams_mask; - - return 0; - -err: - if (!priv->enabled_source_streams) - max96714_disable_tx_port(priv); - - return ret; -} - -static int max96714_disable_streams(struct v4l2_subdev *sd, - struct v4l2_subdev_state *state, - u32 source_pad, u64 streams_mask) -{ - struct max96714_priv *priv = sd_to_max96714(sd); - u64 sink_streams; - - if (!priv->pattern) { - int ret; - - sink_streams = - v4l2_subdev_state_xlate_streams(state, - MAX96714_PAD_SOURCE, - MAX96714_PAD_SINK, - &streams_mask); - - ret = v4l2_subdev_disable_streams(priv->rxport.source.sd, - priv->rxport.source.pad, - sink_streams); - if (ret) - return ret; - } - - priv->enabled_source_streams &= ~streams_mask; - - if (!priv->enabled_source_streams) - max96714_disable_tx_port(priv); - - return 0; -} - -static int max96714_set_fmt(struct v4l2_subdev *sd, - struct v4l2_subdev_state *state, - struct v4l2_subdev_format *format) -{ - struct max96714_priv *priv = sd_to_max96714(sd); - struct v4l2_mbus_framefmt *fmt; - - if (format->which == V4L2_SUBDEV_FORMAT_ACTIVE && - priv->enabled_source_streams) - return -EBUSY; - - /* No transcoding, source and sink formats must match. */ - if (format->pad == MAX96714_PAD_SOURCE) - return v4l2_subdev_get_fmt(sd, state, format); - - fmt = v4l2_subdev_state_get_format(state, format->pad, format->stream); - if (!fmt) - return -EINVAL; - - *fmt = format->format; - - fmt = v4l2_subdev_state_get_opposite_stream_format(state, format->pad, - format->stream); - if (!fmt) - return -EINVAL; - - *fmt = format->format; - - return 0; -} - -static int _max96714_set_routing(struct v4l2_subdev *sd, - struct v4l2_subdev_state *state, - enum v4l2_subdev_format_whence which, - struct v4l2_subdev_krouting *routing) -{ - static const struct v4l2_mbus_framefmt format = { - .width = 1280, - .height = 1080, - .code = MEDIA_BUS_FMT_Y8_1X8, - .field = V4L2_FIELD_NONE, - }; - int ret; - - /* - * Note: we can only support up to V4L2_FRAME_DESC_ENTRY_MAX, until - * frame desc is made dynamically allocated. - */ - if (routing->num_routes > V4L2_FRAME_DESC_ENTRY_MAX) - return -EINVAL; - - ret = v4l2_subdev_routing_validate(sd, routing, - V4L2_SUBDEV_ROUTING_ONLY_1_TO_1); - if (ret) - return ret; - - return v4l2_subdev_set_routing_with_fmt(sd, state, routing, &format); -} - -static int max96714_set_routing(struct v4l2_subdev *sd, - struct v4l2_subdev_state *state, - enum v4l2_subdev_format_whence which, - struct v4l2_subdev_krouting *routing) -{ - struct max96714_priv *priv = sd_to_max96714(sd); - - if (which == V4L2_SUBDEV_FORMAT_ACTIVE && priv->enabled_source_streams) - return -EBUSY; - - return _max96714_set_routing(sd, state, which, routing); -} - -static int max96714_init_state(struct v4l2_subdev *sd, - struct v4l2_subdev_state *state) -{ - struct v4l2_subdev_route routes[] = { - { - .sink_pad = MAX96714_PAD_SINK, - .sink_stream = 0, - .source_pad = MAX96714_PAD_SOURCE, - .source_stream = 0, - .flags = V4L2_SUBDEV_ROUTE_FL_ACTIVE, - } - }; - struct v4l2_subdev_krouting routing = { - .num_routes = ARRAY_SIZE(routes), - .routes = routes, - }; - - return _max96714_set_routing(sd, state, V4L2_SUBDEV_FORMAT_ACTIVE, - &routing); -} - -static const struct v4l2_subdev_pad_ops max96714_pad_ops = { - .enable_streams = max96714_enable_streams, - .disable_streams = max96714_disable_streams, - - .set_routing = max96714_set_routing, - .get_fmt = v4l2_subdev_get_fmt, - .set_fmt = max96714_set_fmt, -}; - -static bool max96714_link_locked(struct max96714_priv *priv) -{ - u64 val = 0; - - cci_read(priv->regmap, MAX96714_LINK_LOCK, &val, NULL); - - return val & MAX96714_LINK_LOCK_BIT; -} - -static void max96714_link_status(struct max96714_priv *priv) -{ - struct device *dev = &priv->client->dev; - - dev_info(dev, "Link locked:%d\n", max96714_link_locked(priv)); -} - -static bool max96714_pipe_locked(struct max96714_priv *priv) -{ - u64 val; - - cci_read(priv->regmap, MAX96714_VIDEO_RX8, &val, NULL); - - return val & MAX96714_VID_LOCK; -} - -static void max96714_pipe_status(struct max96714_priv *priv) -{ - struct device *dev = &priv->client->dev; - - dev_info(dev, "Pipe vidlock:%d\n", max96714_pipe_locked(priv)); -} - -static void max96714_csi_status(struct max96714_priv *priv) -{ - struct device *dev = &priv->client->dev; - u64 freq = 0; - - cci_read(priv->regmap, MAX96714_BACKTOP25, &freq, NULL); - freq = FIELD_GET(CSI_DPLL_FREQ_MASK, freq); - - dev_info(dev, "CSI controller DPLL freq:%u00MHz CSIPHY enabled:%d\n", - (u8)freq, max96714_tx_port_enabled(priv)); -} - -static int max96714_log_status(struct v4l2_subdev *sd) -{ - struct max96714_priv *priv = sd_to_max96714(sd); - struct device *dev = &priv->client->dev; - - dev_info(dev, "Deserializer: max96714\n"); - - max96714_link_status(priv); - max96714_pipe_status(priv); - max96714_csi_status(priv); - - return 0; -} - -static const struct v4l2_subdev_core_ops max96714_subdev_core_ops = { - .log_status = max96714_log_status, -}; - -static const struct v4l2_subdev_video_ops max96714_video_ops = { - .s_stream = v4l2_subdev_s_stream_helper, -}; - -static const struct v4l2_subdev_internal_ops max96714_internal_ops = { - .init_state = max96714_init_state, -}; - -static const struct v4l2_subdev_ops max96714_subdev_ops = { - .video = &max96714_video_ops, - .core = &max96714_subdev_core_ops, - .pad = &max96714_pad_ops, -}; - -static const struct media_entity_operations max96714_entity_ops = { - .link_validate = v4l2_subdev_link_validate, -}; - -static int max96714_notify_bound(struct v4l2_async_notifier *notifier, - struct v4l2_subdev *subdev, - struct v4l2_async_connection *asd) -{ - struct max96714_priv *priv = sd_to_max96714(notifier->sd); - struct device *dev = &priv->client->dev; - int ret; - - ret = media_entity_get_fwnode_pad(&subdev->entity, - priv->rxport.source.ep_fwnode, - MEDIA_PAD_FL_SOURCE); - if (ret < 0) { - dev_err(dev, "Failed to find pad for %s\n", subdev->name); - return ret; - } - - priv->rxport.source.sd = subdev; - priv->rxport.source.pad = ret; - - ret = media_create_pad_link(&priv->rxport.source.sd->entity, - priv->rxport.source.pad, &priv->sd.entity, - MAX96714_PAD_SINK, - MEDIA_LNK_FL_ENABLED | - MEDIA_LNK_FL_IMMUTABLE); - if (ret) { - dev_err(dev, "Unable to link %s:%u -> %s:%u\n", - priv->rxport.source.sd->name, priv->rxport.source.pad, - priv->sd.name, MAX96714_PAD_SINK); - return ret; - } - - return 0; -} - -static const struct v4l2_async_notifier_operations max96714_notify_ops = { - .bound = max96714_notify_bound, -}; - -static int max96714_v4l2_notifier_register(struct max96714_priv *priv) -{ - struct device *dev = &priv->client->dev; - struct max96714_rxport *rxport = &priv->rxport; - struct v4l2_async_connection *asd; - int ret; - - if (!rxport->source.ep_fwnode) - return 0; - - v4l2_async_subdev_nf_init(&priv->notifier, &priv->sd); - - asd = v4l2_async_nf_add_fwnode(&priv->notifier, - rxport->source.ep_fwnode, - struct v4l2_async_connection); - if (IS_ERR(asd)) { - dev_err(dev, "Failed to add subdev: %pe", asd); - v4l2_async_nf_cleanup(&priv->notifier); - return PTR_ERR(asd); - } - - priv->notifier.ops = &max96714_notify_ops; - - ret = v4l2_async_nf_register(&priv->notifier); - if (ret) { - dev_err(dev, "Failed to register subdev_notifier"); - v4l2_async_nf_cleanup(&priv->notifier); - return ret; - } - - return 0; -} - -static int max96714_create_subdev(struct max96714_priv *priv) -{ - struct device *dev = &priv->client->dev; - int ret; - - v4l2_i2c_subdev_init(&priv->sd, priv->client, &max96714_subdev_ops); - priv->sd.internal_ops = &max96714_internal_ops; - - v4l2_ctrl_handler_init(&priv->ctrl_handler, 1); - priv->sd.ctrl_handler = &priv->ctrl_handler; - - v4l2_ctrl_new_int_menu(&priv->ctrl_handler, NULL, V4L2_CID_LINK_FREQ, - 0, 0, &priv->tx_link_freq); - v4l2_ctrl_new_std_menu_items(&priv->ctrl_handler, - &max96714_ctrl_ops, - V4L2_CID_TEST_PATTERN, - ARRAY_SIZE(max96714_test_pattern) - 1, - 0, 0, max96714_test_pattern); - if (priv->ctrl_handler.error) { - ret = priv->ctrl_handler.error; - goto err_free_ctrl; - } - - priv->sd.flags |= V4L2_SUBDEV_FL_HAS_DEVNODE | V4L2_SUBDEV_FL_STREAMS; - priv->sd.entity.function = MEDIA_ENT_F_VID_IF_BRIDGE; - priv->sd.entity.ops = &max96714_entity_ops; - - priv->pads[MAX96714_PAD_SINK].flags = MEDIA_PAD_FL_SINK; - priv->pads[MAX96714_PAD_SOURCE].flags = MEDIA_PAD_FL_SOURCE; - - ret = media_entity_pads_init(&priv->sd.entity, - MAX96714_NPORTS, - priv->pads); - if (ret) - goto err_free_ctrl; - - priv->sd.state_lock = priv->sd.ctrl_handler->lock; - - ret = v4l2_subdev_init_finalize(&priv->sd); - if (ret) - goto err_entity_cleanup; - - ret = max96714_v4l2_notifier_register(priv); - if (ret) { - dev_err(dev, "v4l2 subdev notifier register failed: %d\n", ret); - goto err_subdev_cleanup; - } - - ret = v4l2_async_register_subdev(&priv->sd); - if (ret) { - dev_err(dev, "v4l2_async_register_subdev error: %d\n", ret); - goto err_unreg_notif; - } - - return 0; - -err_unreg_notif: - v4l2_async_nf_unregister(&priv->notifier); - v4l2_async_nf_cleanup(&priv->notifier); -err_subdev_cleanup: - v4l2_subdev_cleanup(&priv->sd); -err_entity_cleanup: - media_entity_cleanup(&priv->sd.entity); -err_free_ctrl: - v4l2_ctrl_handler_free(&priv->ctrl_handler); - - return ret; -}; - -static void max96714_destroy_subdev(struct max96714_priv *priv) -{ - v4l2_async_nf_unregister(&priv->notifier); - v4l2_async_nf_cleanup(&priv->notifier); - v4l2_async_unregister_subdev(&priv->sd); - - v4l2_subdev_cleanup(&priv->sd); - - media_entity_cleanup(&priv->sd.entity); - v4l2_ctrl_handler_free(&priv->ctrl_handler); -} - -static int max96714_i2c_mux_select(struct i2c_mux_core *mux, u32 chan) -{ - return 0; -} - -static int max96714_i2c_mux_init(struct max96714_priv *priv) -{ - priv->mux = i2c_mux_alloc(priv->client->adapter, &priv->client->dev, - 1, 0, I2C_MUX_LOCKED | I2C_MUX_GATE, - max96714_i2c_mux_select, NULL); - if (!priv->mux) - return -ENOMEM; - - return i2c_mux_add_adapter(priv->mux, 0, 0); -} - -static int max96714_init_tx_port(struct max96714_priv *priv) -{ - struct v4l2_mbus_config_mipi_csi2 *mipi; - unsigned long lanes_used = 0; - unsigned int val, lane; - int ret; - - ret = max96714_disable_tx_port(priv); - - mipi = &priv->mipi_csi2; - val = div_u64(priv->tx_link_freq * 2, MHZ(100)); - - cci_update_bits(priv->regmap, MAX96714_BACKTOP25, - CSI_DPLL_FREQ_MASK, val, &ret); - - val = FIELD_PREP(MAX96714_CSI2_LANE_CNT_MASK, mipi->num_data_lanes - 1); - cci_update_bits(priv->regmap, MAX96714_MIPI_LANE_CNT, - MAX96714_CSI2_LANE_CNT_MASK, val, &ret); - - /* lanes polarity */ - val = 0; - for (lane = 0; lane < mipi->num_data_lanes + 1; lane++) { - if (!mipi->lane_polarities[lane]) - continue; - if (lane == 0) - /* clock lane */ - val |= BIT(5); - else if (lane < 3) - /* Lane D0 and D1 */ - val |= BIT(lane - 1); - else - /* D2 and D3 */ - val |= BIT(lane); - } - - cci_update_bits(priv->regmap, MAX96714_MIPI_POLARITY, - MAX96714_MIPI_POLARITY_MASK, val, &ret); - - /* lanes mapping */ - val = 0; - for (lane = 0; lane < mipi->num_data_lanes; lane++) { - val |= (mipi->data_lanes[lane] - 1) << (lane * 2); - lanes_used |= BIT(mipi->data_lanes[lane] - 1); - } - - /* - * Unused lanes need to be mapped as well to not have - * the same lanes mapped twice. - */ - for (; lane < MAX96714_CSI_NLANES; lane++) { - unsigned int idx = find_first_zero_bit(&lanes_used, - MAX96714_CSI_NLANES); - - val |= idx << (lane * 2); - lanes_used |= BIT(idx); - } - - return cci_write(priv->regmap, MAX96714_MIPI_LANE_MAP, val, &ret); -} - -static int max96714_rxport_enable_poc(struct max96714_priv *priv) -{ - struct max96714_rxport *rxport = &priv->rxport; - - if (!rxport->poc) - return 0; - - return regulator_enable(rxport->poc); -} - -static int max96714_rxport_disable_poc(struct max96714_priv *priv) -{ - struct max96714_rxport *rxport = &priv->rxport; - - if (!rxport->poc) - return 0; - - return regulator_disable(rxport->poc); -} - -static int max96714_parse_dt_txport(struct max96714_priv *priv) -{ - struct device *dev = &priv->client->dev; - struct v4l2_fwnode_endpoint vep = { .bus_type = V4L2_MBUS_CSI2_DPHY }; - struct fwnode_handle *ep_fwnode; - u32 num_data_lanes; - int ret; - - ep_fwnode = fwnode_graph_get_endpoint_by_id(dev_fwnode(dev), - MAX96714_PAD_SOURCE, 0, 0); - if (!ep_fwnode) - return -EINVAL; - - ret = v4l2_fwnode_endpoint_alloc_parse(ep_fwnode, &vep); - fwnode_handle_put(ep_fwnode); - if (ret) { - dev_err(dev, "tx: failed to parse endpoint data\n"); - return -EINVAL; - } - - if (vep.nr_of_link_frequencies != 1) { - ret = -EINVAL; - goto err_free_vep; - } - - priv->tx_link_freq = vep.link_frequencies[0]; - /* Min 50MHz, Max 1250MHz, 50MHz step */ - if (priv->tx_link_freq < MHZ(50) || priv->tx_link_freq > MHZ(1250) || - (u32)priv->tx_link_freq % MHZ(50)) { - dev_err(dev, "tx: invalid link frequency\n"); - ret = -EINVAL; - goto err_free_vep; - } - - num_data_lanes = vep.bus.mipi_csi2.num_data_lanes; - if (num_data_lanes < 1 || num_data_lanes > MAX96714_CSI_NLANES) { - dev_err(dev, - "tx: invalid number of data lanes must be 1 to 4\n"); - ret = -EINVAL; - goto err_free_vep; - } - - priv->mipi_csi2 = vep.bus.mipi_csi2; - -err_free_vep: - v4l2_fwnode_endpoint_free(&vep); - - return ret; -} - -static int max96714_parse_dt_rxport(struct max96714_priv *priv) -{ - static const char *poc_name = "port0-poc"; - struct max96714_rxport *rxport = &priv->rxport; - struct device *dev = &priv->client->dev; - struct fwnode_handle *ep_fwnode; - int ret; - - ep_fwnode = fwnode_graph_get_endpoint_by_id(dev_fwnode(dev), - MAX96714_PAD_SINK, 0, 0); - if (!ep_fwnode) - return -ENOENT; - - rxport->source.ep_fwnode = fwnode_graph_get_remote_endpoint(ep_fwnode); - fwnode_handle_put(ep_fwnode); - - if (!rxport->source.ep_fwnode) { - dev_err(dev, "rx: no remote endpoint\n"); - return -EINVAL; - } - - rxport->poc = devm_regulator_get_optional(dev, poc_name); - if (IS_ERR(rxport->poc)) { - ret = PTR_ERR(rxport->poc); - if (ret == -ENODEV) { - rxport->poc = NULL; - } else { - dev_err(dev, "rx: failed to get POC supply: %d\n", ret); - goto err_put_source_ep_fwnode; - } - } - - return 0; - -err_put_source_ep_fwnode: - fwnode_handle_put(rxport->source.ep_fwnode); - return ret; -} - -static int max96714_parse_dt(struct max96714_priv *priv) -{ - int ret; - - ret = max96714_parse_dt_txport(priv); - if (ret) - return ret; - - ret = max96714_parse_dt_rxport(priv); - /* - * The deserializer can create a test pattern even if the - * rx port is not connected to a serializer. - */ - if (ret && ret == -ENOENT) - ret = 0; - - return ret; -} - -static int max96714_enable_core_hw(struct max96714_priv *priv) -{ - struct device *dev = &priv->client->dev; - u64 val; - int ret; - - if (priv->pd_gpio) { - /* wait min 2 ms for reset to complete */ - gpiod_set_value_cansleep(priv->pd_gpio, 1); - fsleep(2000); - gpiod_set_value_cansleep(priv->pd_gpio, 0); - /* wait min 2 ms for power up to finish */ - fsleep(2000); - } - - ret = cci_read(priv->regmap, MAX96714_REG13, &val, NULL); - if (ret) { - dev_err_probe(dev, ret, "Cannot read first register, abort\n"); - goto err_pd_gpio; - } - - if (val != MAX96714_DEVICE_ID && val != MAX96714F_DEVICE_ID) { - dev_err(dev, "Unsupported device id expected %x got %x\n", - MAX96714F_DEVICE_ID, (u8)val); - ret = -EOPNOTSUPP; - goto err_pd_gpio; - } - - ret = cci_read(priv->regmap, MAX96714_DEV_REV, &val, NULL); - if (ret) - goto err_pd_gpio; - - dev_dbg(dev, "Found %x (rev %lx)\n", MAX96714F_DEVICE_ID, - (u8)val & MAX96714_DEV_REV_MASK); - - ret = cci_read(priv->regmap, MAX96714_MIPI_TX52, &val, NULL); - if (ret) - goto err_pd_gpio; - - if (!(val & MAX96714_TUN_EN)) { - dev_err(dev, "Only supporting tunnel mode"); - ret = -EOPNOTSUPP; - goto err_pd_gpio; - } - - return 0; - -err_pd_gpio: - gpiod_set_value_cansleep(priv->pd_gpio, 1); - return ret; -} - -static void max96714_disable_core_hw(struct max96714_priv *priv) -{ - gpiod_set_value_cansleep(priv->pd_gpio, 1); -} - -static int max96714_get_hw_resources(struct max96714_priv *priv) -{ - struct device *dev = &priv->client->dev; - - priv->regmap = devm_cci_regmap_init_i2c(priv->client, 16); - if (IS_ERR(priv->regmap)) - return PTR_ERR(priv->regmap); - - priv->pd_gpio = - devm_gpiod_get_optional(dev, "powerdown", GPIOD_OUT_HIGH); - if (IS_ERR(priv->pd_gpio)) - return dev_err_probe(dev, PTR_ERR(priv->pd_gpio), - "Cannot get powerdown GPIO\n"); - return 0; -} - -static int max96714_probe(struct i2c_client *client) -{ - struct device *dev = &client->dev; - struct max96714_priv *priv; - int ret; - - priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL); - if (!priv) - return -ENOMEM; - - priv->client = client; - - ret = max96714_get_hw_resources(priv); - if (ret) - return ret; - - ret = max96714_enable_core_hw(priv); - if (ret) - return ret; - - ret = max96714_parse_dt(priv); - if (ret) - goto err_disable_core_hw; - - max96714_init_tx_port(priv); - - ret = max96714_rxport_enable_poc(priv); - if (ret) - goto err_free_ports; - - ret = max96714_i2c_mux_init(priv); - if (ret) - goto err_disable_poc; - - ret = max96714_create_subdev(priv); - if (ret) - goto err_del_mux; - - return 0; - -err_del_mux: - i2c_mux_del_adapters(priv->mux); -err_disable_poc: - max96714_rxport_disable_poc(priv); -err_free_ports: - fwnode_handle_put(priv->rxport.source.ep_fwnode); -err_disable_core_hw: - max96714_disable_core_hw(priv); - - return ret; -} - -static void max96714_remove(struct i2c_client *client) -{ - struct v4l2_subdev *sd = i2c_get_clientdata(client); - struct max96714_priv *priv = sd_to_max96714(sd); - - max96714_destroy_subdev(priv); - i2c_mux_del_adapters(priv->mux); - max96714_rxport_disable_poc(priv); - fwnode_handle_put(priv->rxport.source.ep_fwnode); - max96714_disable_core_hw(priv); - gpiod_set_value_cansleep(priv->pd_gpio, 1); -} - -static const struct of_device_id max96714_of_ids[] = { - { .compatible = "maxim,max96714f" }, - { } -}; -MODULE_DEVICE_TABLE(of, max96714_of_ids); - -static struct i2c_driver max96714_i2c_driver = { - .driver = { - .name = "max96714", - .of_match_table = max96714_of_ids, - }, - .probe = max96714_probe, - .remove = max96714_remove, -}; - -module_i2c_driver(max96714_i2c_driver); - -MODULE_LICENSE("GPL"); -MODULE_DESCRIPTION("Maxim Integrated GMSL2 Deserializers Driver"); -MODULE_AUTHOR("Julien Massot ");