From patchwork Wed Feb 5 17:18:18 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Frank Li X-Patchwork-Id: 13961585 Received: from OSPPR02CU001.outbound.protection.outlook.com (mail-norwayeastazon11013043.outbound.protection.outlook.com [40.107.159.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D0A871FCD07; Wed, 5 Feb 2025 17:19:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.159.43 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738775985; cv=fail; b=LqdKwboBIBb6BbzXCZoFyQeOT1Y/qAcBaFKP8IT0dJYHFLiAWxm3ixmZhd8ClZbxWP7rFBeczZ9P6UHakQEpidD1Th4mwjsPNbsKuIj/IHVFk3RZciTU9hUZIHwrn+nsSDXxIcEcn24fCqhaECKhjSV5exyfDrHgSAfg47bRGzM= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738775985; c=relaxed/simple; bh=XuRbiz9HeB6kBMiwJf843iejlo92W/EqAuzV4Slf61U=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=acy5D/tobmbg5Mc9LwHO+wDeUB42OK8HmUtp7bmhxHsksACsFCElhlZeNA3QYczB3WvHSVepXQFHGiTdJWjpPgwNmVgztqyeJhmaOzaERXGjuvcVLiUH/4CAa8BPfxtJm0qv1fnLB7bSPVjQrbQbupYF9+FCpS0IOnhFH5excJA= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com; spf=pass smtp.mailfrom=nxp.com; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b=Nqp3Am+t; arc=fail smtp.client-ip=40.107.159.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b="Nqp3Am+t" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=NpEinIjaG+58qzpFEI5O+/jQ6L9/n0e5bBp4+08CVwPo/2RwUsPWFwhKu0P+9umbrfMhJvAvaentK7Il2z5oJjIgO6Or6CJC+9+iCSUBwXByQx5IrvUEtTTPvsdLojkGHp0Fvr833FVxuA0S7fOOfzQIWwozE/lcImAgXUcghR3IXhpTKniyaW5tfHv/16L4H0IyETc9zwzl/JDPTc38Lrze3lZjBZiCg+D4GC4xTXryzDRntL9yplWdT6wSzusSwMY/Kqsg0mZimz/0bJ1ZWa2oaqsoOHs5XR7odHCgZCqGcYglzNEj1a+y1bj3inZcO89f4UxHNx93hHdOdmSLWQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=oLYQpgbqRrB2sU9ONr/bcsAzXEpl/mMDEJoJ9w1Acb0=; b=VjLw7oeYDdb9a4qt32ZIjsTetbu0NCCuLf6jlBYGtiFmu3ze7Au/em8x2ifPGoez8g+P5fR3tgDbhDvRlCxxGwy7TEfdvoe0HwkYT/3pB5gLebIfqkr+Tqq51vhO9b53lpmJAGrGLmbmy5vRjr6pUPhyS7OW8OCp5Mso4jmiifJLxhKaV2NbL1QG+vdNZzxTP9IDSbODKOIFvwH5i0GOYQVoVsLn2VwsR2RGdHp34eEfd66zCunLAurMke1Xy6nI5+y3YIDufbQcTYQxAY8D2N54HRtFF6eTkHYcjXQpLQss6i7Y1bcyP+MVOYhBBD+hPujYA05wbpHBeR1ewRAl0g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=oLYQpgbqRrB2sU9ONr/bcsAzXEpl/mMDEJoJ9w1Acb0=; b=Nqp3Am+tDg/uIFuWncyMVjPR3GjyKO3V5EFrDwiAlMc825wT+wcqHvKBb67IZV0xq40I+/FrW8fU4K/4uDaJAWrGFwac5MLzhE04H1ie9LuEjW68L9sawfDIpN8uDEkPfEtIPNV3lztKBDW25+oLRL7Xx8optu3C9839E2AWsDnRDStwEug1pxk6bJ/2+/0VGBGBgOoFGXg0q9EJDjkoBh04xOnyz4UAvrR51sRiVyJ3sf1D76738QJJ675EsxyKgAh/VdTvA0bVifhz5qNUngX31rvJX1vCkBdi8Fen4x/VR8BDK5GlO0mYlhFrphRhyWD6Ej9sqdzrprIOOxBINA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PAXPR04MB9642.eurprd04.prod.outlook.com (2603:10a6:102:240::14) by VI2PR04MB10546.eurprd04.prod.outlook.com (2603:10a6:800:274::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8398.24; Wed, 5 Feb 2025 17:19:39 +0000 Received: from PAXPR04MB9642.eurprd04.prod.outlook.com ([fe80::9126:a61e:341d:4b06]) by PAXPR04MB9642.eurprd04.prod.outlook.com ([fe80::9126:a61e:341d:4b06%6]) with mapi id 15.20.8398.021; Wed, 5 Feb 2025 17:19:39 +0000 From: Frank Li Date: Wed, 05 Feb 2025 12:18:18 -0500 Subject: [PATCH v2 09/14] media: imx8mq-mipi-csi2: Add imx8mq_plat_data for different compatible strings Message-Id: <20250205-8qxp_camera-v2-9-731a3edf2744@nxp.com> References: <20250205-8qxp_camera-v2-0-731a3edf2744@nxp.com> In-Reply-To: <20250205-8qxp_camera-v2-0-731a3edf2744@nxp.com> To: Vinod Koul , Kishon Vijay Abraham I , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Philipp Zabel , Laurent Pinchart , Mauro Carvalho Chehab , Rui Miguel Silva , Martin Kepplinger , Purism Kernel Team Cc: linux-phy@lists.infradead.org, devicetree@vger.kernel.org, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, "Guoniu.zhou" , Robby Cai , Robert Chiras , Frank Li X-Mailer: b4 0.13-dev-e586c X-Developer-Signature: v=1; a=ed25519-sha256; t=1738775920; l=4273; i=Frank.Li@nxp.com; s=20240130; h=from:subject:message-id; bh=+QBD0Mt4LREW8UDrP3CG8eTRiWihbUIT7EiPw6z+Q54=; b=SEhUMw0+mB9IJkxphEUK701tz+vHxLJIZbn87hSm6G4BbGM5KeQPzbD/Pzj/OoA6FdXFT7xRU FBAPz4/QLCQBKGEmazxbzqzyHK14WGcIdMcKGWZiuU1gccyBRQ6EFaE X-Developer-Key: i=Frank.Li@nxp.com; a=ed25519; pk=I0L1sDUfPxpAkRvPKy7MdauTuSENRq+DnA+G4qcS94Q= X-ClientProxiedBy: SJ0PR13CA0001.namprd13.prod.outlook.com (2603:10b6:a03:2c0::6) To PAXPR04MB9642.eurprd04.prod.outlook.com (2603:10a6:102:240::14) Precedence: bulk X-Mailing-List: linux-media@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAXPR04MB9642:EE_|VI2PR04MB10546:EE_ X-MS-Office365-Filtering-Correlation-Id: d06ed570-0c24-4591-ed8a-08dd460945a4 X-LD-Processed: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635,ExtAddr X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|52116014|7416014|376014|38350700014|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?q?LH44rw1Xb1A8jVd/c3qUWjo5M72J7Wo?= =?utf-8?q?Zi3VsehjAslZhzSMvlJk64yF1OBuTmpxY3d0ea4Ho+WhxYMIKBbIz8iLyTcC77xxI?= =?utf-8?q?Y8d0qA3k+ykDpli1UJ2aDdtitomY8e9I1hKs5dfuWmpJtYZKamhXiY6J088cFBk1+?= =?utf-8?q?Bk/tthbpBnaXFUjSN5e5Wx+gVYleoIAYh/koMXh360Yl2ElpCAZM6Fbx4xVB934BQ?= =?utf-8?q?gzLthW4LIFFxifMmC13NmBK1ourqn89DtaJvbLGMw6wXaQS+UeDOSL74DEv9zpL+1?= =?utf-8?q?iFzJhyktkrztIdInRA1C8cHJtpWkCTz3VO/RW7hw2tgSYIPYndC8Z3l33fJ7hFJ7o?= =?utf-8?q?cQWc+hEHz+erbqfqKMR27k274lrN751DL0X5T5alAEOgnTvHwbT6uaZ/+cqwTOeFY?= =?utf-8?q?8/+pGvyqFkrSx0i82oA4OT0MnnseULCMiBrrALstETmJMdXn2tb6gGsCdr2ukDIh6?= =?utf-8?q?PowmENjLRkE+d/IWIAHNNtUQ3t3irCTnVv1ILMQjZE7QcJ02CVyDYEWb1i0k1a2/9?= =?utf-8?q?TtN6GAK9DnDgmr1g4OAMUi62/rlvA/U9zSBngIUnyfKlkp4u5KsQhLDTIU/q2eG4p?= =?utf-8?q?iDPrh4A8v+zAgHr4pMKXLis0owT5jBz4TMqFuNOY3/z0dAN6YcaV7URBdjZNGmhq/?= =?utf-8?q?BWHni49KqFi97SQGORhBXgKrzwM95b18Hx8d2l47QRfKWS5XUTv8ueogrrM/BYzL1?= =?utf-8?q?DKfUuVSKOCVCNrmm+zPAIvteZ+RXoYYVcfHcwoBx+TQSPL+q+AKGdLbJw3J/Q3rs/?= =?utf-8?q?ysvvjuF6WX61Vh5K8aOR/C2/Zo+SCOLGHZLIyFxOeQkXtl5kvQEQWn1ug0yuks/yO?= =?utf-8?q?ZVJYfzvYOrUyvLOv3XtGlPajSvgHP2/gf3Gj/7ecLI/xKG+Y9/7VJw51t86qFNsry?= =?utf-8?q?Ast7nDjz/aEeP79+iFFXQsG9aDOAG1SIWfsXMfKvUpMplHLVSV+q7ompsSFPBD51+?= =?utf-8?q?mVpYdmspTaYhIGSX2/JLTmb+916EH5GaCQRg+TgD4IH+WYn7aczWf6Cr7KBJa83Rl?= =?utf-8?q?3Otnz9svVwjz/2iCpC9NxeHmhWizca+6Qw52C5r0sZheRCwApg7pZ2i5eZDpjVW+R?= =?utf-8?q?ARwBJKXVQfDzI1U3EfcZRhmX4jn5R/+Et1W+bt7VUntc8/jtxcd0zhSOQwtn46xfM?= =?utf-8?q?ceUpe2jexbRTNryo3BOJQQcYADo5pLPqXLAINkPLJpo6NQs5ngjZVkszPkpM95cqK?= =?utf-8?q?urhlpaKvVt4fGZJbXed283J0+uaw174UZYhzsiEvT0/N01FL3jogaHLHQUzzz7KFd?= =?utf-8?q?YjMvohvfJJKum9NEuaXmMfRXwcZPQ7qmkJgAxxtsSvsVt16aJAGc5PZu4SYpG4wda?= =?utf-8?q?suMI0ZCI03RZCj8RE8q9DbSC/em8tgiU5xjfzk9nZoqVTAx5gIlW+kQMK10gqV9Un?= =?utf-8?q?MnjDTRKlUKa1+qUh7lTQ80UlKbAdz1p3Q=3D=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAXPR04MB9642.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(52116014)(7416014)(376014)(38350700014)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?Efkv0b0T0UcCpf7i0lC5KmT1Uest?= =?utf-8?q?qoVMnPlBZdA3ASIi+Q6DRULtCHvu7UxaLsZao2n2a24x6LwaafI8aWeYd+olNYV7m?= =?utf-8?q?6C91FxXuXuvSCFVwTv+DbpH6eHug1ionEk86JvVBk2X9cByYmdE9w9EcXwCvOB/p3?= =?utf-8?q?kmYyCGi/CvKdIy3NJstBIv7WTHbKFPleOJPfCarOeoLw+cbyByl00D5t0kas4KrKO?= =?utf-8?q?Mt82PfNLwMUzA2cPbELxXm2ZaSXd1icoYcFhBw+rpw3xRy2na1C/Z7UUc+Fo4IJoD?= =?utf-8?q?dLq+Qv1LhhhY4INO+pUCEVqX1AmynJoRyJspl9HwFUyNEvDlSH6Zfk2V+vv/OB4D/?= =?utf-8?q?ramjjPSr+zSTdOSuSw3sQGNpsW+MAFKw8KeF8/S1NTWxwiNuX7J3S8yZsZAWurezQ?= =?utf-8?q?QnLmKrUJkJyX0KTjN57yBghZuzL34CUt0mv+U0huSL89CUFd6sB62awBJpILf7Ffm?= =?utf-8?q?5Bo9c7uGDiEAFl9xNy5ogSQO6Sqf1BOsm6ua3q/zibpDzLOZ0hUGcTaiJe+ozQlbR?= =?utf-8?q?xLwyLzdgs/CT209w5fPpAzyZMe9B5/lESr4p1Nx00iWwpfY0Gi7uZOUPE0HMfJc63?= =?utf-8?q?OG8mODZOrUu27BI516eKvlcycEsDT6DEdQ2JcoVCkU+RrlTZFwM8hCn3VcBir3fdO?= =?utf-8?q?fUIYDjdIMEbrDfAbEE4WY5fKulwVrB8GqKC2/9psEuRPfyIhtNL1H6ShGvr3qHRVu?= =?utf-8?q?BHW5v2et6y/RdMIOMvxOIT57VTzY7sDG0CANjs9cLbzHSYHeUOjUAuSKhC/pcBvdL?= =?utf-8?q?Fois6d5dhaVnitj589Z6vnubeUKggACX5jlkzX8Bp3jKZcJZkfG4vBMlpZzCbLHKo?= =?utf-8?q?tj+MNzaegiZZibfgACdgnGVijCpJc4xhjqbdKeeuaJF8EJklqIQzmELydSAQk1yHm?= =?utf-8?q?3Y0pDAjkX6pK2b/H+j6YPxis1+0TdLvVv2E0Sr06gpYw9zNl28HwEJIACh64X3W4M?= =?utf-8?q?uzNfKYTJGNzdEVFpr3PobAsBc5eXjsIwkrPuaUH4w72rWiQpRG2FnYs15XRnglCD+?= =?utf-8?q?8/w2t4Jgd0m/1heNxSVVt29x96d2hzFa+GbhEEj1sTXyj0uG/Lp8RUcQSduwmHioo?= =?utf-8?q?+erlWPcyp9pE57pwqMaTTjEMLlc93A6OGSB2P0wg+pY1pV589RylqAHvr5hSIgwnb?= =?utf-8?q?2d78tx3ChoDmZGiEyqeubJSc93Jc1VnH4cS51R1Awlw09lqkLOJp8HIn4MFHsVDpB?= =?utf-8?q?LyNC16u0WrSVD8Z3LrFxp/jZ2eBvSEv0ShO6UD6YvB0IP28L5xZM5bcjmN5A0CYLL?= =?utf-8?q?kYxRzxhfVy8iQ7+eI2nNOVh6oJMvyenYv7gkYq6SVHjBn52JCadycNZqyVPVjNUOu?= =?utf-8?q?2ZMgYDdafYhK70PxeV4KX1JTHnHusHWiKvxXY9DH4Z43BG76PB7qPaWf0x+QnnGZP?= =?utf-8?q?pYxib38YJKpfsvSxdQvq3p1hwzJZRf1qTvtF7YpyDqA/tvL6neIKGZo8O1eoPTCqF?= =?utf-8?q?R+Ls1KSAsVswXU1aOKONYk7AL6pAZUNlmVlS325E+Fn0B0RGxNmQ4PLaR92E+J5Aa?= =?utf-8?q?HrotYqclPyKv?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: d06ed570-0c24-4591-ed8a-08dd460945a4 X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB9642.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Feb 2025 17:19:39.4754 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Pw0IDrQyfIkPguoP3hZXLZkzCCPFr34frn5F5IIh5p2QLltDHDIgs5yIFJmu3DFuUMzzWJzNe/HAnWVYnaXKIQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI2PR04MB10546 From: "Guoniu.zhou" Introduce `imx8mq_plat_data` along with enable/disable callback operations to facilitate support for new chips. No functional changes. Signed-off-by: Guoniu.zhou Signed-off-by: Frank Li --- change from v1 to v2 - remove internal review tags --- drivers/media/platform/nxp/imx8mq-mipi-csi2.c | 60 ++++++++++++++++++++------- 1 file changed, 46 insertions(+), 14 deletions(-) diff --git a/drivers/media/platform/nxp/imx8mq-mipi-csi2.c b/drivers/media/platform/nxp/imx8mq-mipi-csi2.c index 1f2657cf6e824..b5eae56d92f49 100644 --- a/drivers/media/platform/nxp/imx8mq-mipi-csi2.c +++ b/drivers/media/platform/nxp/imx8mq-mipi-csi2.c @@ -62,6 +62,8 @@ #define CSI2RX_CFG_VID_P_FIFO_SEND_LEVEL 0x188 #define CSI2RX_CFG_DISABLE_PAYLOAD_1 0x130 +struct csi_state; + enum { ST_POWERED = 1, ST_STREAMING = 2, @@ -83,11 +85,11 @@ static const char * const imx8mq_mipi_csi_clk_id[CSI2_NUM_CLKS] = { #define CSI2_NUM_CLKS ARRAY_SIZE(imx8mq_mipi_csi_clk_id) -#define GPR_CSI2_1_RX_ENABLE BIT(13) -#define GPR_CSI2_1_VID_INTFC_ENB BIT(12) -#define GPR_CSI2_1_HSEL BIT(10) -#define GPR_CSI2_1_CONT_CLK_MODE BIT(8) -#define GPR_CSI2_1_S_PRG_RXHS_SETTLE(x) (((x) & 0x3f) << 2) +struct imx8mq_plat_data { + const char *name; + int (*enable)(struct csi_state *state, u32 hs_settle); + void (*disable)(struct csi_state *state); +}; /* * The send level configures the number of entries that must accumulate in @@ -106,6 +108,7 @@ static const char * const imx8mq_mipi_csi_clk_id[CSI2_NUM_CLKS] = { struct csi_state { struct device *dev; + const struct imx8mq_plat_data *pdata; void __iomem *regs; struct clk_bulk_data clks[CSI2_NUM_CLKS]; struct reset_control *rst; @@ -137,6 +140,35 @@ struct csi2_pix_format { u8 width; }; +/* ----------------------------------------------------------------------------- + * i.MX8MQ GPR + */ + +#define GPR_CSI2_1_RX_ENABLE BIT(13) +#define GPR_CSI2_1_VID_INTFC_ENB BIT(12) +#define GPR_CSI2_1_HSEL BIT(10) +#define GPR_CSI2_1_CONT_CLK_MODE BIT(8) +#define GPR_CSI2_1_S_PRG_RXHS_SETTLE(x) (((x) & 0x3f) << 2) + +static int imx8mq_gpr_enable(struct csi_state *state, u32 hs_settle) +{ + regmap_update_bits(state->phy_gpr, + state->phy_gpr_reg, + 0x3fff, + GPR_CSI2_1_RX_ENABLE | + GPR_CSI2_1_VID_INTFC_ENB | + GPR_CSI2_1_HSEL | + GPR_CSI2_1_CONT_CLK_MODE | + GPR_CSI2_1_S_PRG_RXHS_SETTLE(hs_settle)); + + return 0; +} + +static const struct imx8mq_plat_data imx8mq_data = { + .name = "i.MX8MQ", + .enable = imx8mq_gpr_enable, +}; + static const struct csi2_pix_format imx8mq_mipi_csi_formats[] = { /* RAW (Bayer and greyscale) formats. */ { @@ -364,14 +396,9 @@ static int imx8mq_mipi_csi_start_stream(struct csi_state *state, if (ret) return ret; - regmap_update_bits(state->phy_gpr, - state->phy_gpr_reg, - 0x3fff, - GPR_CSI2_1_RX_ENABLE | - GPR_CSI2_1_VID_INTFC_ENB | - GPR_CSI2_1_HSEL | - GPR_CSI2_1_CONT_CLK_MODE | - GPR_CSI2_1_S_PRG_RXHS_SETTLE(hs_settle)); + ret = state->pdata->enable(state, hs_settle); + if (ret) + return ret; return 0; } @@ -379,6 +406,9 @@ static int imx8mq_mipi_csi_start_stream(struct csi_state *state, static void imx8mq_mipi_csi_stop_stream(struct csi_state *state) { imx8mq_mipi_csi_write(state, CSI2RX_CFG_DISABLE_DATA_LANES, 0xf); + + if (state->pdata->disable) + state->pdata->disable(state); } /* ----------------------------------------------------------------------------- @@ -869,6 +899,8 @@ static int imx8mq_mipi_csi_probe(struct platform_device *pdev) state->dev = dev; + state->pdata = of_device_get_match_data(dev); + ret = imx8mq_mipi_csi_parse_dt(state); if (ret < 0) { dev_err(dev, "Failed to parse device tree: %d\n", ret); @@ -946,7 +978,7 @@ static void imx8mq_mipi_csi_remove(struct platform_device *pdev) } static const struct of_device_id imx8mq_mipi_csi_of_match[] = { - { .compatible = "fsl,imx8mq-mipi-csi2", }, + { .compatible = "fsl,imx8mq-mipi-csi2", .data = &imx8mq_data }, { /* sentinel */ }, }; MODULE_DEVICE_TABLE(of, imx8mq_mipi_csi_of_match);