From patchwork Fri Jan 31 21:33:54 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Frank Li X-Patchwork-Id: 13955878 Received: from DU2PR03CU002.outbound.protection.outlook.com (mail-northeuropeazon11012050.outbound.protection.outlook.com [52.101.66.50]) (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 59DCA1F63DF; Fri, 31 Jan 2025 21:34:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.66.50 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738359298; cv=fail; b=M/NUwnOOMF6ZiybkLnPoOF9n5yDrjWgCPHuj2dwDcYtdS2DUGgvhK5AcoVjUPEC1K20yDSfrOMLd1eoAP19YkunqQAZzdPTtZifGkV+MIm8uo4dCPFzALy4P/8ZwUuENpBEl2SAY3aHY4lJysxudRhvp5cb/16Pa6rotMsQUcoI= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738359298; c=relaxed/simple; bh=CPvDy3Ge2QOQh4jJmGCEfP1PLWvtY8UqiifcOnps5gU=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=grKYjALU+6oWCJSjeP3o/AnHmbdndyzFaB0XIz5DkXqGJsQLnU4I4DnLTkXDAcku8m3ICbCyaY1VxM3H4wBkNeRp3TmwQEzoM3WmbPrZ1a0k2Cf9Ot4CqUb3D/TLZjtBRrSszTjHZ3qGpouSoidnGUgT0/D1XBsXnnDFVgvpOe8= 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=ZekVgyG8; arc=fail smtp.client-ip=52.101.66.50 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="ZekVgyG8" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=YmjNuB5vRbMXOAYxMRaY/gskHFZZX/4E4/FhAGDhHPX4hEZBX4B6Wa7gY0LNJpZLfLmI3mIjEHCxYXGg6BHQXM4qzBl7Ll0fIJ10eyAya4BtEI2mAT15cnYBQbBylGzEZsPpyTc0f0j0DW6+ZfvAkmhTxfGtSu8uupfMmPY/BXuHrSgYYDglhQIb/FYOQM9hciV29dy07sU2uOx3UGhsJfLTayjetJ7gmYSH6/9gy8aCaXaPFiKXlyNA9vvOqKtXNcb1c/x0raQtpgKcK/yeiPqhNAo2TBm/yLKTJW/MsWctqWzV1EdIJDFuWzZfM7yELQAamyZXFsArTL1ERQcX7g== 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=9HSKfbaLEraRA+Gx53ZKU1HqU557OEjqeB1wIjDieYo=; b=sbhKgYCYWKE9NG/yJBjDMrIGozwzsedCxX3EeLe2nBxOSir56JbSzZlkHRaYVe4gWXFvv0YH1TzpgPkNcu8F6x1NPC4BbOfxsUCsxtj9dBXKD9QoKVSv/FqsKUimyCHs+4mZ2gWi40rSkXYlwNsqFE0rhrjt4vlixCe8sWoDKMAAZVgnRE44d62hRDz2MY/UXf5gRbs1Fwm7yRrq3mpG2C/J163oKmGBOI07qCrB5Nq4a5DG1+ApOD7iAZFyL4KzoHtT+1BgQlb8Shs2LAJKAQF69Oun1P0LraA+0axZI0/7a/CTS4fEeS/pXwjrv0TD+Lgn+7TIR2a0pBJe69ESPQ== 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=9HSKfbaLEraRA+Gx53ZKU1HqU557OEjqeB1wIjDieYo=; b=ZekVgyG81A/8yY1cxUQO03Sv8ZjINWeBLIsrVdzCeUfQmStynVa43xc+vi0AIsVvejCywk/glVCxbIx2Yots8A55o37IaZs7/3oDaBe/Omay0nQDSD5NM1aVTl63Hsccs63EMe9maTyTAoeqFOtw3R8+/8rrpDH8bmhLe3UFaK2u8D9akzXERzJCLpfoF6JGDEL5Duye8ulapDj2+uVaSt81KOeqh8nW3zsbFE/otaph2hb1v7bGHkOVUF8fM62bnGl2D801RhWgEMu7ngWTl5cosoVy0njTzU3mNyTWYdfq2Spg4BsG0MDulm9n4fLzX1iJCYa7IubboWp7RCPNcw== 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 VI2PR04MB10980.eurprd04.prod.outlook.com (2603:10a6:800:274::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8377.22; Fri, 31 Jan 2025 21:34:53 +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.018; Fri, 31 Jan 2025 21:34:53 +0000 From: Frank Li Date: Fri, 31 Jan 2025 16:33:54 -0500 Subject: [PATCH 09/14] media: imx8mq-mipi-csi2: Add imx8mq_plat_data for different compatible strings Message-Id: <20250131-8qxp_camera-v1-9-319402ab606a@nxp.com> References: <20250131-8qxp_camera-v1-0-319402ab606a@nxp.com> In-Reply-To: <20250131-8qxp_camera-v1-0-319402ab606a@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=1738359234; l=4259; i=Frank.Li@nxp.com; s=20240130; h=from:subject:message-id; bh=CXhxbITFSLWBmd22rrPhYJoChgSX254KvnZOLWQTyXQ=; b=QwiRZ5xBjXOIeB0M3FdlWsSAu/utg+3PXTgjI6yiqEtUsY+48Sgme8kpwRY8Yh2vdNk6UwAdZ WJKSbL2QeSgBr5ktJn78du06BZWd5tTjLxOXqERA3q+70t2PcYVIzSp X-Developer-Key: i=Frank.Li@nxp.com; a=ed25519; pk=I0L1sDUfPxpAkRvPKy7MdauTuSENRq+DnA+G4qcS94Q= X-ClientProxiedBy: BY5PR04CA0007.namprd04.prod.outlook.com (2603:10b6:a03:1d0::17) 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_|VI2PR04MB10980:EE_ X-MS-Office365-Filtering-Correlation-Id: 4e5f3fb6-e052-4acc-fa14-08dd423f1987 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|376014|52116014|7416014|366016|1800799024|921020|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?q?jPacl6Q5Sw590jd6KGBxDC2HN104XSn?= =?utf-8?q?DFSq3lRFOwbkwXrRNztSX5QPbNbmWWtD4XRyHaj5O+o9hxhXhfyqKbvWIgpxvRMj2?= =?utf-8?q?1CMhIFW3Nsd/aOaMUOYBmj9baop19WmoPMYwphuRz0DTEtTiUs14hZAkTvOgYSR24?= =?utf-8?q?OiJpTnn72SDhlboTCgv7G2UC3c0E9b/YOfaieMRgVV18JVASfz85K6ZCZPdl8J6e4?= =?utf-8?q?jjBAtAEzoSCes92XMljf08AWgH57dWp8qUQT+bMdIqMmoBX3TepqVFKbVOC6z8Owl?= =?utf-8?q?jydlNU7VksoRTy70q7JpvzyO+9ehuaAM2qgO/ooDvyh87Riibo5KuVRHPpRwvXuHm?= =?utf-8?q?4J1Mb5QaJd3QCJ1N3Jb+vt6DS+XTWHNznKnzSC10BvMf7zLt8oeIYdLLKnF+a3gMy?= =?utf-8?q?/FXDrrz01QWVfstAuWjXybzBrU07ILp06Jo9L5KSw5V+sx0ETYTu6HoVEfyAgVV4a?= =?utf-8?q?88joUof4Dic8r+sXnlJsr+39MGZVaISi+bwDDVAiIOpR/Gv4IEz2OHj41Wv/u8OvF?= =?utf-8?q?fjkSRkbTaz3ucZhVw2siJA7Vx5m6CnVXW4R7nHMmxBSa9/ZlHloEp9mqvz4q/WiaD?= =?utf-8?q?XEtbVNX0J7q/WbPBwjgmD0OtsioNWc+eTppwbREUpiQKzOHVOzIhX4DAXQpGxDJ0l?= =?utf-8?q?ZloiNzlsUqBssaSfwfyfuRUdT0KzIpMrMBOn3WkoyuCRW2cuKbKOcqG5v3xCRYt4v?= =?utf-8?q?Xta+yjiyLm58CIFDGYMXP//miglyr+mL7+pKLHbLqIC/3R38VuFSMq7jxeLE+VTs4?= =?utf-8?q?XYMTd0a4LR1Eez5gFLC1W8g+vF6kzx7vh5eecGmy2CwQW3t2Z+NOqVq44sdOxslGl?= =?utf-8?q?H9ZuQbsGXrZHoF89QztU2gPlgnC/5UZd5Tm6fhjZ/qULo+acUnOYyhBjI6Au4w3dv?= =?utf-8?q?XtLyz/rWLPwhTce0gDH5aufIppJQePKs7CGRFC51I30V1xOf5KcdRcbywDNCx0o2k?= =?utf-8?q?fldznQeMiH5ChjcHgin4bVdZkFUNcGAPeKe2ysSEOqZy0n8VrohzIIeYuGxN2TEu2?= =?utf-8?q?x5cme/vpPUE85JI+l9NUBCe68VAR8+IAmulpSwIUYLRtnkf71m78tvcfEeJEstxZj?= =?utf-8?q?Dxe2SbU+IKyRJOzSn0wgJIWk4WSbIcNV/72U8lQwmz90fmYnzX6Fdrnojc26KftI5?= =?utf-8?q?4quECaX6WLgyqbU6nUOGSl29kQZhCJAwNHnjCn4rWXTLJ24G8gYOoUYZYpWIJW9OJ?= =?utf-8?q?h8BsbSAg8IiqGyjrXqHTrSlPB9020etEYE3nNSp0Awv/lGIeExsEEssL6Qg/nPSgQ?= =?utf-8?q?DE/fmuZ6X4KbPkOI1UKSlRGrjIK0mZ40H225oR1s9p814ifl8yIy96qOckZ5bqyJL?= =?utf-8?q?8kN62vZ1bbN/FNtAYppPEEtgFc/h/QciEj1sDsBlekd+efnWr8tTEfJ5ZAiMm2Z6f?= =?utf-8?q?/0wXlbczGut6g06jjH4Q2iis7hIFvLpUg=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)(376014)(52116014)(7416014)(366016)(1800799024)(921020)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?YNGxfmlVBMd8hJjP/7MsWzsLjwoh?= =?utf-8?q?oaeMi1CX7KfUdEEObeMEbaT5OjkhkiL7Is2F5Q6jKd/5ySwVAiqBP7eJJnBSHIH9Q?= =?utf-8?q?r7KuAvql/ivX0rVpoW5eD5706FoniA3ZFRGIYIczclwRoIF8J4TPB3E2EoLWN8IrS?= =?utf-8?q?JiAOAyjidfnZ7ibgU+rFi3Vm17gM1c6ZJbp3OPE7Cm+2P+klbLB7+AYv2d/MRqL9U?= =?utf-8?q?LJpQu7DgzvgYYAjbRreKrdNHQwvCFciCTW2Cek9Sm9cGuTRSiMHhcjD4gCAlZQ21H?= =?utf-8?q?dDD9UzzfeMzmY+KXgaN0ZXyD3nNG43M2oJpmzo41sbp2JjhedKXv/aJxaE2JkL7NS?= =?utf-8?q?EdfLk77RCOkQw5uDWhIENMuu3Pp2s2ZvQFD0gg8UUKRy22PaDOwNQd587OKQONobb?= =?utf-8?q?uZrIj5qJBGKYq4kCBu3V+0TcCzEHLHp0bmVtIgBK4MBe8h9i+Ws9SagaAY6R/VPyu?= =?utf-8?q?MWs2MYLCMYgQy/1l03evB+tfM55Ea7p7R/fs++wL872qL//UOOv4B3lPanaHpJzJW?= =?utf-8?q?GHFDDr1V/vQoGGIgfB0zl2CnoHFXRRzhXpn4TtQ8G81OIB/I04x3OqpWlz5VPNbyZ?= =?utf-8?q?AF5P2yCo6/1kzLZHi+Du/P2rfESt677oeoEFRvQfa/8jnYg/4V2R1dQipd6JfdTRo?= =?utf-8?q?rc9TYVo6YCoTa4edonMPEBm8jCJp6lY8OfD3VHP5iimOLGX2Tc6S5Ok9e9omJ8RWe?= =?utf-8?q?49rOLFF94qZmlzl9sPPC0ylRvq9j7uGuMw79xuJqC3RoChWIXlRoKyC5Np5W1Ct5O?= =?utf-8?q?wRfQf4IyZvzs4mkhhmyDb85IUbpKuyHiYALbZ4vHIx/cIQ/Un+7Y6c7XTrXr6IYli?= =?utf-8?q?2LH7DXHA3lxkKqDV4f8P9z8IS32kjjysmF9JqoU31PFzKgi65ahYzlYjPxy/wRP99?= =?utf-8?q?8De4/O+Tm00KwrMLmRogZ9sKLQNsmTd8hvVrBxGxljVaaM+u5GPbPq8fcwEMilEpP?= =?utf-8?q?IYq/8LsWNresZwT89IDBAe+f5lNWvYb2IeCZqlfFDQFt9e61HKKbb7WmIBIpaFRI5?= =?utf-8?q?1P5IA4HM7X0R0QAMrlb2OaWY3s9oVxYFloiJNwx/S0vfoKv9pHNNVBew2dx10F11o?= =?utf-8?q?FPWewoxYwqIlEfj9fkeumo2tsIuR80kG7jL7RZznhK28E6eEDY1VvKC6JEThPjzx8?= =?utf-8?q?UcKx65jbWk1zlTKhga6sJZzJdQYEQtV0R2yjPPTQt+sjY65F6FsqA44bbskL77vCC?= =?utf-8?q?V8m+CiauVxtN74UqC7Pc6goUGhbcUEihwX6tc9unPIv6Nl6aVLyRndKRfXFIIa9Mg?= =?utf-8?q?BNUIlAza1RiWNS8pIrMDerKQNyAozBDJ5dT8n8jaU12OPpUbqZY5Dz6KkMkOAUiSx?= =?utf-8?q?sjZttumkt9p01qpuISpw//Rf9haDcaMSz6yvSoxskdQjATP35o5OlQ57nu/OH5+6b?= =?utf-8?q?npt81KdzdthKG1HKkzajqc/a0sL5HUBbiPXG8glUMqKfWXqNbyCEB/HcBfU/UxUVi?= =?utf-8?q?Q2j7QgQKPQJtu5+wsvDSUQo0XK13bIb0mfjt/tIBXYwT+B8N7ta7M8cQ=3D?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4e5f3fb6-e052-4acc-fa14-08dd423f1987 X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB9642.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Jan 2025 21:34:53.6653 (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: e2AobA3VjC2u+SZhJzLJayziPaM/uPQQ0REIjiIJCcKEYaU7aKCWII40jsk8bisvElexlfBkrh08J4QwGno3zg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI2PR04MB10980 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 Reviewed-by: Robby Cai Signed-off-by: Frank Li --- 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);