From nobody Wed Oct 8 07:24:27 2025 Received: from DUZPR83CU001.outbound.protection.outlook.com (mail-northeuropeazon11012005.outbound.protection.outlook.com [52.101.66.5]) (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 80A612459E0; Mon, 30 Jun 2025 22:28:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.66.5 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1751322512; cv=fail; b=AN392IMlNYk2Z2RdXUgPur5p/ceyiusmiUrdiWs6d6i5WBcvLwzjS3AK7qN0VQHLmnWU2l6Dnfs+JGlTY8nDbOo7B0a37HABFq013/QbiEhjzhESBHi9dyKgGGHxFO2uk7JzjimUeAks4zT9OkHGul8WVaWVHcULZgrmSXZneBI= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1751322512; c=relaxed/simple; bh=6TOA/wHXt1YfJWAK8T4oB/2fh5sdNScUHhHSZPdCU4Y=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=jSnLXj8PAPQBHNK/U42AXNnxv7KVH0jeW23/xaYMRqn4G6NcTqAZuEYkYbeINmJWu3xXxrTZtMoALyT+ajIRgylmpzHJESSOF4J3AVeVP/5L/TnT81MiQuMJUQ3R8T6k5cory7KUohDWtIHPhORqnm4IenZzoancGUg0DUCkvaQ= 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=l+Mj+TCQ; arc=fail smtp.client-ip=52.101.66.5 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="l+Mj+TCQ" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=et5J7AYjhNSOy0EnTDqhzDPAlu3YFa2v6rJsmp851afwtaxK/6B5ltP/XSfmNlrM0jjXa4CnRiXFVVBc4GWm0aigs26E7fOxtYthRqXzZ+W0ZNWOJebnhRd8VqKgIYFO5o6aoNwS8+JbahcaxBoy/OveRAakCfdpj7loefIFVdz/GeWlGYWh++wlM2QbHODZeTfTFueEC96Hv0090sXeMXE+EljrtyvTNU6OgDo5ZfBsv96vdyPMFOcpIhlxC2rHRkQ61sJFH7tMPcXhEgb7isk8INjkG6YTxAvvQOsQt+L9OH0YeJVxUDApMWF6fZ4auNREgUz2KXLjF0aj3u1iPA== 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=dzb9h0I+9YnHrazmgeuAdMquBrkJOzZ0q+4Yf8X21Ms=; b=bBg/k3CX+D2w9Lw738iycjGQ3Ze470tNADuUR7CnQDYsdS9BTAdz0pLcNWvJE/3/VJC3VU0dMaJxt2+56ygcYx9Heol7OzoyimPewxQO8VBUmdCeNp8JaLxuClIEvHveKgGaWiMxjvPf+ZT6+2U3mDaagGLuWGUT5GdiumH9auTc0v3UNReoWjyghwCLPV0n7itgO0DGMyl2O7u6nRT9CrVs3TUzNpHVIr9ZivM3+6xPl79B2/OpmIFWb2zuEygoiBzoQFnACASl/c7VWfD92xcam7AMmY9TG/ljHiGKypXikCQMz4D1OUrgT39QY0pyrg7+59UDZ3z1mkXNzfOBrg== 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=dzb9h0I+9YnHrazmgeuAdMquBrkJOzZ0q+4Yf8X21Ms=; b=l+Mj+TCQBmdalplZFi8aQQvYx3i+8a33qkgQHFhXmI/zBhwalaMji2CfBshHg05AJoUcinKotzxJRcTj3phOivr1VWAbbuyxX3jiuLeLiYAayyf4758OEcZE6J3E3BeHuDvuIW1F54ON/M+kHjVqM2CfaL4e+EAQD4ylSzjiUpzx/Fuy9ORSteTGSQm5vKqc7cltXRyK+KWQxqplZlV+4BpZEHUKIrCyjq686YoX7GAdLEPgjZm3+qdaSPxFRvoPHNMGlu6WtkpRe69eszvTnVOTJw5M8YvmCkmg8sTm7GLKVntWBCB9o8BlFayutjVbqCEsvuwqsGriRhXvCglyrw== 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 PR3PR04MB7451.eurprd04.prod.outlook.com (2603:10a6:102:93::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8880.29; Mon, 30 Jun 2025 22:28:26 +0000 Received: from PAXPR04MB9642.eurprd04.prod.outlook.com ([fe80::9126:a61e:341d:4b06]) by PAXPR04MB9642.eurprd04.prod.outlook.com ([fe80::9126:a61e:341d:4b06%7]) with mapi id 15.20.8880.029; Mon, 30 Jun 2025 22:28:26 +0000 From: Frank Li Date: Mon, 30 Jun 2025 18:28:17 -0400 Subject: [PATCH 1/5] media: nxp: isi: add support for UYVY8_2X8 and YUYV8_2X8 bus codes Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250630-imx8qxp_pcam-v1-1-eccd38d99201@nxp.com> References: <20250630-imx8qxp_pcam-v1-0-eccd38d99201@nxp.com> In-Reply-To: <20250630-imx8qxp_pcam-v1-0-eccd38d99201@nxp.com> To: Laurent Pinchart , Mauro Carvalho Chehab , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Rui Miguel Silva , Martin Kepplinger , Purism Kernel Team , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Philipp Zabel Cc: linux-media@vger.kernel.org, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, Frank Li , Alice Yuan X-Mailer: b4 0.13-dev-e586c X-Developer-Signature: v=1; a=ed25519-sha256; t=1751322499; l=1302; i=Frank.Li@nxp.com; s=20240130; h=from:subject:message-id; bh=Clpptg04Qxx21j13dlBxRzB0tg8OFwpkwtihdS3bt0g=; b=LzLoaGoFaL2AmVg7wvymEoTR+ZcgrvzEgiPUTmp8FFkrcfOwX7xA3SQwvjPe1KRtDgEslRd5b ezfejq385vNDzNxsXXrRQRbL5w3HZu9VzdBzSZR7VKCld5xfLQ1dxJm X-Developer-Key: i=Frank.Li@nxp.com; a=ed25519; pk=I0L1sDUfPxpAkRvPKy7MdauTuSENRq+DnA+G4qcS94Q= X-ClientProxiedBy: AM8P251CA0025.EURP251.PROD.OUTLOOK.COM (2603:10a6:20b:21b::30) To PAXPR04MB9642.eurprd04.prod.outlook.com (2603:10a6:102:240::14) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAXPR04MB9642:EE_|PR3PR04MB7451:EE_ X-MS-Office365-Filtering-Correlation-Id: 57300f45-5a97-4a9d-c680-08ddb8256e80 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|1800799024|7416014|366016|19092799006|52116014|376014|921020|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?VHFoOFBYU2JTSElZNEpOZVFpNC9sWDhmWDJMaldlMGloMHpZT2dvS1k4UTI0?= =?utf-8?B?dmovMEt6TWhKd0cwUEhUR0t4NzdpTjc2enBVdEkzcGJTMXN0cnRldGkwK3Nr?= =?utf-8?B?aGZiaDRmTnM1V29Oc2gxUGpwVjBjdUFqQ3dqQWsvNEk1NE1teXNjdWhmRmlo?= =?utf-8?B?TjR5bmQrcUdGMnBnZHAzMm9vOU93QjBvaSt5TXdBQXg0YjlZZWFtYWNGWXV4?= =?utf-8?B?c1h4ZWdEbDNTbWpETFRpbEpiYnRmSkNmQkhxczlSL0FoWElLQzd0cDlFZks2?= =?utf-8?B?YmMzRlR4YU54UG9xc0xHcTdKWG9jVmVsaUM0R24vdHJlelF0R2E5WlVTb0tL?= =?utf-8?B?TSs5NEN5MzF1ekpEWFlvQ3V1SkJFTGRwQkpna1U3RkUwMmE3VzFWU2EwTFVL?= =?utf-8?B?QU9XQkhLTnJ3ZEkveTRlV3c1S1lYQ3ExRU9KMlUyUTk2YjdnTlVPSzJFczdr?= =?utf-8?B?UmVvSzBjQXRhNjJNR1liUUZHaVVOZGRrMHNOdkNCRjRqdW05ZVhCUjJSZURB?= =?utf-8?B?QWRKeG9xMktkdFprYVVaZzh2VTZOdnhhUWx2d2ZWQUlwbE1ZK3NVUC9jUExP?= =?utf-8?B?MnR0VFZmMXU5RWFHenRzdHJ4QUtxTzNNcFppL043MWlzK1dIY0tMWnNBU1Mv?= =?utf-8?B?dyttdWttR2oyUTc2T1EyblpmaENscmc2aEplUGtOMlJsd2xGd1B5R3VqY3V6?= =?utf-8?B?R2NpSENQYm8yM2NJY1lBdUFxVTE0ZXNCYkpjUVovdnpVNzRZOTlUZ09Oek9W?= =?utf-8?B?WmxYdDNUaHJHcUd3UFZsS3J1RDJxRTEwdUVZS3Y0eTZlcGg5K2JmU3IrSEVr?= =?utf-8?B?Sk9GMS9EdVp3cjNaNTVWRlg5RE9FWjJzTWRhK3dYbDNUQ3NLcC9VcnRYU2tU?= =?utf-8?B?NHRKTmVVME5OS2tFQU5GZ3ZFclJrd2ZNb3RETkNnUC9ucGFvSWtpaHIwMjJw?= =?utf-8?B?Slc0Vi9taWZaY0swSUU3MGMyNUpraDRPZ2d5WnI3WVNsMitwRmx4c2g5UkY2?= =?utf-8?B?alJxZi9EMHVxeGttSVNkbzBWSzc2M29UV240NDkzMzhpNzU2SVdRUHhFNXNK?= =?utf-8?B?MGVHRDVNa1YreGRyWkN4Umd5bnBucXNDMmY3WUlGRnVsOU9NQ0ZmSGxuZ0RT?= =?utf-8?B?NE9vakdidGZpbmtBb1ZvU2VpSmpCUXp2RmphdlZiWFFqMHFCMUZUbTJ1RjhU?= =?utf-8?B?MnQ0VGh5OGEvYmxHdXAwdEFKSVVOMlJjdXA1ZExLV0Z1SHBFblRyVXJ4MWs4?= =?utf-8?B?UHQ5cjA3azAyc1hETUM3Zy9XSTFLVVNWRVhyZkt0T0trTnk0dStuYk5xTmw3?= =?utf-8?B?dFpiWGcyTTFOcFp0MUJSTFpLb1p3VzV6R1dUeEtBMysvamdQUkwxSE1XTnVa?= =?utf-8?B?bEZkSzZ6MitKeDNmOGphaHFudVhobFRCejhOTXBPMjhEOVFhWUhoSDRwU0x4?= =?utf-8?B?MGxEVkhhQmRTeHp4T1FydXU0ZmR3U1k3bngxMWJlUVJaSW1jN1JkejF3Z29t?= =?utf-8?B?R3dtZmVCOTdKVms2N0xiQk9MZkpvcjhMN0IyVzBpazdISVYxeXFEay9NcnhC?= =?utf-8?B?ZFAwTHB6eFdwNmV0Y2lmc3BBeFdmb1dlSGZCLzA2RTVyY2NBeWg5UG16alVv?= =?utf-8?B?L0d2ekJFRkJ3SVVDZzZ6MkZtV0xMVndyTjNkL3g0cjFpd09PZHNhS1duU3Zr?= =?utf-8?B?aW91MWVmNjg5d1lLZTR6S2xGQzltbEZSY1EwMGp3SW03SExQcjdBNlB4ZjJU?= =?utf-8?B?U3lROXlJdnE3aDVxdkR4L1ZYdzRQcEdUMEN5VDArSGZYdVdWcU10OU5zNUVN?= =?utf-8?B?eHFJU2p1SXlIK0phM2lYdDB1L3ZpQTNpdUMzUW42Ti9aMGFrWWtoSWZMMWNJ?= =?utf-8?B?cDI0WmdzVERpd2NORENSM1FDcUVGT2VKdXpXS0k5aVRpUkJIZm1mQUtPcS84?= =?utf-8?B?dnl6QVdBY083azBWOGoyMjZpZWFwUHAxM1R6UTJxeXpnK1BLZkJZc3N4ZHRC?= =?utf-8?Q?lqVffjnG2mIV1BI3hxoMkXB0lEOYUo=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)(1800799024)(7416014)(366016)(19092799006)(52116014)(376014)(921020)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?ajd2MzBSbWJpblludS9tOXdsTFBoNDhoeDZvV29SWEtoWEROL3A0ZFc5TlF2?= =?utf-8?B?cGdWWmw1OXF3YVBIYnFPTGd3b0NrdWpHQU9IUE9yelVXd3JEdHFrcVhHd3pI?= =?utf-8?B?dFQzQTY1WkwzeHptN1pFMmEraDh5VGJmZkl4cnVWU2E0TitHSWZ2aTJNckIr?= =?utf-8?B?ck1idEV5TXoyL0hCOFJaTUMvM0JxanhqYi92N1FLZEpEdWQwZ3d4SUFRQy9x?= =?utf-8?B?SndJanNEanZxWVZ5TWNSN0YyRWZlTXJLdEIrWkkzdGc0YVR4ak5OZVdKL2hT?= =?utf-8?B?U1l5TlVQTFgvc1BNdldYdVJndE1YOUZqMXdWUUFDS0Q5L2djMzM5djZyVmRa?= =?utf-8?B?ZHpwS3lpdGJ4NFpjdE9zRFp4ejlhRWI4czh4VXpCWkoxbU5IM1JTdlFnWmNt?= =?utf-8?B?TWYyWWkxMU5JblBEQVBRRTA3WUo1eUx2UzdhSVRUWEk1bldXUkJja3dLOG9j?= =?utf-8?B?amRhazhXUUl4SzhRWVVHdDBWVnVHNXluVUUvZFlSZVN1bjBjeTBPc3ZmMVNX?= =?utf-8?B?T3VRclBKejd6SFdtRmdJeW5Pdk50VFNVT2Z5UVJmc2pQVWRpNjVHWlkvV3lW?= =?utf-8?B?SjQ2OUtZQVRpRm0zbzRyS1FzSVdwZjRBaTI4dXpBWDlBckRSVDVyOTVoTVE5?= =?utf-8?B?aU5pZ1JOTHVqVzN4Q0Vic1M2NGFRc2dYcE9CejlUdUtiMHhFWjlOcUJqVWlT?= =?utf-8?B?dXArRG9HTU0wa3l3K2hhazJXZWFPa1BrNnZqb1pBVlBUYTlkMzcvRWVQTENP?= =?utf-8?B?cmRUV0tuWlZwb0NBNWZuRnFCbWMyOFBiYWRiTDdPcHo2RmtSUVYyNkFQRUJL?= =?utf-8?B?UXFHbUd3NXhqOHZlbC9pdUsrSGgwVWJvM3JsRHVEMVZWMzd5YlFrY3hCYnV3?= =?utf-8?B?TGdyWTk1by9IQ3V1eTQ1SkdyY1JIRVRaUG5JSzdJc2JXeGs1NVc3WllIdDNZ?= =?utf-8?B?ZitUeDBqOThsSnRER3VvNmp6UGRobktrVjM5MitzcjlYMExqTnk3SFlHZWJz?= =?utf-8?B?bjNUaXhSRXcyMGQ4eUdRNkpTVWM5bVN5ZHV3YnlMNGlwWlNpMGVOUmpoOFpa?= =?utf-8?B?eTNKai9KaWxIeGNsWWVtc0dQSVhPMExXOFdWR3RmVXdUeEdxQm1SQ3FZVGRw?= =?utf-8?B?YXhKbEpGb1BNbWpUbUV5b3o2OGhZNTRYby9tQ05qdXQ5NjZ0TlMxTnpEeGNq?= =?utf-8?B?RkJyVGUvWjF3RWNWY0ttL1BMOStlTDR5bjF4dFlubHp0RXdxbU15Q0JBdU82?= =?utf-8?B?MFVMQjVleHpOSHlja1BSZDFPY0JGdkw5MnJSWkhFUG91QVNvNlI5aDM1eDFL?= =?utf-8?B?M2VjMFEvU3JndWMzSnVDMXY5cEZNWXpNaHRTRmVRRWlKRFo5dGR2elAzWGZV?= =?utf-8?B?d0NHc3RrNkdtQXVxVjRsU2p3dmN1TVAzTUlBQ1JlbVhkQWNOK2xsaGtWUUFU?= =?utf-8?B?bTNjUHBYOVVUR2NCc29JemEwWHdCMmxHRUdmZ1FFem5td2MrQnAxK2hlK2dt?= =?utf-8?B?b1BpL0FDWHBiUXkycGFiZ3NLeCtHTytEaGF4c0VUL2thRUF6Q1RYSGNZS2t2?= =?utf-8?B?OWtEaEQvODVCY3dWakhoeUJ4ZGNvVDcwRFRvZDU0eGF5VEFUUk96Z2J1eU9F?= =?utf-8?B?VDhVRnJVVlMrTHlZQ2VzUGRubEJ4dmM3cU82RGFZVXZtVndVcCtVU05LVkFX?= =?utf-8?B?RkZvSVhjajJKeXZldk1QK3lUeFM2Y045akpLSHBFekpkWWltTC9XZGROek1r?= =?utf-8?B?enNrTExJWVZ2RzJVSm1kQnJRK1JoVWtmQnlvQ0NhQ2s2bGkxWXZCQ3IrYWVa?= =?utf-8?B?eWpDSzNGMDBndVZNdnUxcDUvS1VYZ3Z4cVlyTzFVTDVQUGIyVmJuT2JPeTNJ?= =?utf-8?B?ZkdDRXFmQWFQbFNoNEpGOFVVOEN1enUzNGFVekRRWHFWVWlFRk9qcmNJMGJV?= =?utf-8?B?SEJYdk5VOUx3Yng5aGJEQzhLazM4a2l0Nll4eklkZUdIV2owTDlVdmRUMzd1?= =?utf-8?B?THY4a3lMZWlaaHJ1N09BT2dDS2lNU25neXF0YlJ5OUk4bU5ld0RmU21hUzlr?= =?utf-8?B?ZzIrZjNBaEIya2QrWTlDbDZrTVYyNWdtNjdvYWNmNXREUWNOa2dpZ2haaVdx?= =?utf-8?Q?GynaCEOhr+6wMamkWoXAN386N?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 57300f45-5a97-4a9d-c680-08ddb8256e80 X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB9642.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Jun 2025 22:28:26.5187 (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: W88MVDtbjHllPifvMyxsCpRn/C6AT50a4De9nqaMzaKMK4j532h5cgmw/m+X/W1CFWy0Tlty/YkEq6pCw2l5gA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR3PR04MB7451 From: Alice Yuan Add support for media bus codes UYVY8_2X8 and YUYV8_2X8 in the ISI pipe. These formats are commonly used by sensors like ov5640, which typically uses MEDIA_BUS_FMT_YUYV8_2X8. Signed-off-by: Alice Yuan Signed-off-by: Frank Li --- drivers/media/platform/nxp/imx8-isi/imx8-isi-pipe.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/drivers/media/platform/nxp/imx8-isi/imx8-isi-pipe.c b/drivers/= media/platform/nxp/imx8-isi/imx8-isi-pipe.c index d76eb58deb096..1a4bf1ac02641 100644 --- a/drivers/media/platform/nxp/imx8-isi/imx8-isi-pipe.c +++ b/drivers/media/platform/nxp/imx8-isi/imx8-isi-pipe.c @@ -39,6 +39,16 @@ static const struct mxc_isi_bus_format_info mxc_isi_bus_= formats[] =3D { .output =3D MEDIA_BUS_FMT_YUV8_1X24, .pads =3D BIT(MXC_ISI_PIPE_PAD_SINK), .encoding =3D MXC_ISI_ENC_YUV, + }, { + .mbus_code =3D MEDIA_BUS_FMT_UYVY8_2X8, + .output =3D MEDIA_BUS_FMT_YUV8_1X24, + .pads =3D BIT(MXC_ISI_PIPE_PAD_SINK), + .encoding =3D MXC_ISI_ENC_YUV, + }, { + .mbus_code =3D MEDIA_BUS_FMT_YUYV8_2X8, + .output =3D MEDIA_BUS_FMT_YUV8_1X24, + .pads =3D BIT(MXC_ISI_PIPE_PAD_SINK), + .encoding =3D MXC_ISI_ENC_YUV, }, { .mbus_code =3D MEDIA_BUS_FMT_YUV8_1X24, .output =3D MEDIA_BUS_FMT_YUV8_1X24, --=20 2.34.1 From nobody Wed Oct 8 07:24:27 2025 Received: from DUZPR83CU001.outbound.protection.outlook.com (mail-northeuropeazon11012005.outbound.protection.outlook.com [52.101.66.5]) (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 C165D28DF40; Mon, 30 Jun 2025 22:28:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.66.5 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1751322514; cv=fail; b=ja6LeSE8xl9BULNXkWdofV63nrkto99NgDfyAc15TIqynOLOx72TYqhMNvqgDbKZYSIaCXMxV7yY+gr2Jj9Rx7MU1ClWBxkYyPCtEDzuxnMYWS5oBw6rHqsJLCMuxmmNm3ZmSoeaP6Qx1DRd09NnzLC+80KIdmOZrf7ql3csHgQ= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1751322514; c=relaxed/simple; bh=03ylvT4jpq143Urq2Yjv59M6npopgFmxxOqncg8lYJ4=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=An7QEBFYPWqss8/dQMeWZqm+NznBkc0dzL/8elkp/NZktibPzMEo2Nv87oeA1q6/jtAD2R8lDOikenswgxaO538IXOxuorNswDAM1N1Im1UQMjXBKTouQTra3+wxRrrqdWV4WaSB1/fcmCXFn9zkWqhq1h9S5dvE9XJjPR6VQtw= 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=Setv0EoB; arc=fail smtp.client-ip=52.101.66.5 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="Setv0EoB" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=AM794XWQH7Rmi5UaGKa9VjWom1Sivmeph6XU7BmyVXSK/9DOnF9cmQpEi7G73MNnhFztULFhM8ws39xXXCIgXTglLJG21Cq/oE2GKTYF6safJyFu7H+utUGP2Z7VgM6LzCnpxMux8+vv12GNRUtpHIpWDZlPtaksr1h8bTxst4neYr56fKHvdj0XTVGBIjRUXNQokzAIefmSgik4Q2EEhlrb0POOGvGyYRknhWOPqFxm7gRh8WpKYsuEICxQu+b/zlo2P2WMKUJhNAAbVIt8BmCkYyHl4AU8JrBM62Aw7QOGOv1L/q4RrLzsYE042j235Qfc46L1Ps3Sa8yjHqhgLQ== 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=B+G8l/tUltCCqB0LK0Wsb2A8vYfxkQv/KenfOYZR/6Y=; b=VNnx+3HVZy39RG+nXRp+xh2vrL1wi3hcPijxz50p6wiWQ71vAW3gvKwARqdAS1S+rj9glry+uNK/doJYwzbFCteA3zPrO+P3yLzdJF4UShLJUoZZVDPV5qHW6DTI+2pFg4rGVT4UtZeWL02MRsJHvwyCPZmWCZQA/XevoO1ZNarzGrdQ4vv5ImlaKeioWpmPmCmJKxHPMRUmWALDWe8fv49aY3gJvIX5GHnuU2JSGF3tqh9iIqJJdqxH2jLjCDzvFHs6uynE/Xx9ByUhvRwz8sGYVs8iWRGdY0E/1PSpHE/ykT3I/lIeSjKdF22OgYdF6xnOQPrsDfv6NWr1kalS8g== 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=B+G8l/tUltCCqB0LK0Wsb2A8vYfxkQv/KenfOYZR/6Y=; b=Setv0EoBJTsvNMAdZaJVCBa/m+5AL8/7pObM6RHnshJ/xt72g9TMuUD1r6V4N+CTFLwUYID+1fAO6w33RKyjMF4iedofnfRBCF3fpI1SWZg0yrcVIfD/HaW/vXoSkxvRt27BFB8Fh8UhoE2nSUHAOMsKQuJxPaZI+gwrbzdZiHeYNPKwgmIFCsxInNfP3YIioB2rIOiXc0CmuBj20i7Dl72cdbdYce2rZA9zMQqVJAsPMrVH8SVw3yjM63rJySzp/yCm0btcgglwt0HXewXufReB+lfpK/RuUDwX7wq0bfRw/Te0BbvRbR6Oq+Nf+AfWf0OXzY/qnS36H0+vPUHXkQ== 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 PR3PR04MB7451.eurprd04.prod.outlook.com (2603:10a6:102:93::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8880.29; Mon, 30 Jun 2025 22:28:29 +0000 Received: from PAXPR04MB9642.eurprd04.prod.outlook.com ([fe80::9126:a61e:341d:4b06]) by PAXPR04MB9642.eurprd04.prod.outlook.com ([fe80::9126:a61e:341d:4b06%7]) with mapi id 15.20.8880.029; Mon, 30 Jun 2025 22:28:29 +0000 From: Frank Li Date: Mon, 30 Jun 2025 18:28:18 -0400 Subject: [PATCH 2/5] dt-bindings: media: add i.MX parallel csi support Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250630-imx8qxp_pcam-v1-2-eccd38d99201@nxp.com> References: <20250630-imx8qxp_pcam-v1-0-eccd38d99201@nxp.com> In-Reply-To: <20250630-imx8qxp_pcam-v1-0-eccd38d99201@nxp.com> To: Laurent Pinchart , Mauro Carvalho Chehab , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Rui Miguel Silva , Martin Kepplinger , Purism Kernel Team , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Philipp Zabel Cc: linux-media@vger.kernel.org, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, Frank Li , Alice Yuan X-Mailer: b4 0.13-dev-e586c X-Developer-Signature: v=1; a=ed25519-sha256; t=1751322499; l=4121; i=Frank.Li@nxp.com; s=20240130; h=from:subject:message-id; bh=0zWesMw1WPI6S7FIv9qrpNxnK7mUVn/sPi1ASIXjYt4=; b=UbqoQxoK81FZz3cRptABuA76FP/LEdazTKidLVCyDOXT6nAPj2HKOiAjudhrrDXORFg/U2VBf BP61HbgENm9CyLOyNz8nZA91BsMRtzIAMntzeIM7WdZ4o7jp9kihnpd X-Developer-Key: i=Frank.Li@nxp.com; a=ed25519; pk=I0L1sDUfPxpAkRvPKy7MdauTuSENRq+DnA+G4qcS94Q= X-ClientProxiedBy: AM8P251CA0025.EURP251.PROD.OUTLOOK.COM (2603:10a6:20b:21b::30) To PAXPR04MB9642.eurprd04.prod.outlook.com (2603:10a6:102:240::14) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAXPR04MB9642:EE_|PR3PR04MB7451:EE_ X-MS-Office365-Filtering-Correlation-Id: 2f097f2f-558a-44a7-1cb1-08ddb8257077 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|1800799024|7416014|366016|19092799006|52116014|376014|921020|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?a0xscTZoeFgzN2NzdGFCd3VPdDdxT1BRR2QyK2JlUGU0Vnhpa3I4cmtyZ1RO?= =?utf-8?B?YUxTOUVudEt4czhhcE4zRE5LSUhEei85WXNtUGV2ZnJSdXJMVStPVU5KeXhp?= =?utf-8?B?TGZIcm1POWpIUlMyMnRFWGVDdjIzSmJ6STJiQnozMitHNGdxMndYVzlxbXlQ?= =?utf-8?B?T0w0ZEJ3cTFrbXJ3OWtZZ3Q5NGtVSlMvY0N1aDQxdXFIdHR6a05DTC9xMXhF?= =?utf-8?B?NzA3SVlKYVpJQncvbEoxT0xzL2xaN3o4NTl0SW1nRXpXQjVNTG1OWjJYWUk5?= =?utf-8?B?N0ZRNEF1V0xDczNkcFlwT0hjZlV3Z0hEUmx1dzFqR1pDVWJYK2lwYjFvRjBp?= =?utf-8?B?Q1l4b3lQZjBYQW9UamRKWlVpRjNnOVo2YjV0UmNpMXZqdExGVUF5TjVlcHZC?= =?utf-8?B?ZUQwU25GMldCeVRzdFdUclVwTkhoT3U2cW5rR1VoVVl0N2Q0aUFKNE5TSTQ5?= =?utf-8?B?cElZV0dXalRWZXRURVVIRmlJck5wOWVFVVdMT0VkbGJMd3ZEYzJ0cjRIN0Jo?= =?utf-8?B?VFhiZEVtR05pMjkveW83ejhtTmdwVXc0NTZaeHZoY1pkcW5KMzMwL2h0WW9M?= =?utf-8?B?RDd5a1JnbDVNdGtHLzg3c2JEV3o1S3pxTm5QYzQzbU9ZRndSUlZNSXpRbjRr?= =?utf-8?B?MWI0ZW11S0tEOVJVZ3lZbmxpZU5zV2RHN2ZFUE4vQmFjT2ZVcHpxT0xsbGhj?= =?utf-8?B?WjRMcFFpWnNleGlISEdQeVpsamdYSW81UE9GS1ZGays4L045Mmo5VmJjb0Fs?= =?utf-8?B?UnYrcWRJU0swMENVRnJZeXZ5YThzS0h1VUZHZ1VCbldTMjRrTjFQZ05ITXF4?= =?utf-8?B?MmluRDVUbVROSklSa3pLNEpRVzJGdWNDczlvWTh6NnRsQ2RtOEpvc0paVmVj?= =?utf-8?B?d3dFeHp0UVgwVkJ4WjB6Tlg1QjJHOWRsWk1YYno3elB3QjhJK3FLMjBWZ2kv?= =?utf-8?B?ZHdvSGVjS0M0b2tPL24wMEdnQjlwQW1jY0N2NDREeDNpR0ViVWovMitjTlBk?= =?utf-8?B?Z2duamxuMmdGRE5Xa0ltTmY0NWtYbWF6ak9wUERZeXgxSE5lcnRhRHBCaEtq?= =?utf-8?B?VnM5djJ6RmExQWh6T0NSbkNmZ3lwL3crK0pscS80V0xSNzNIMkpHb1QrUW1J?= =?utf-8?B?YjR1NUkrSUV3OW5icTBpemF3MC9WSTMwZHNWejhoSHQrS3Fud3BDNlJKWnRO?= =?utf-8?B?Q2t0eml4NmZBZUxYbjNCRzdBODVqQXBKT1ZQMmU1WnFLYVBrK1J6VTFxZ0J3?= =?utf-8?B?N21JQ2djSHNxREw5NDlGZ2RKVStVaGg4UEVFcFE0VkV6cDBWV2lGbUpmcmZR?= =?utf-8?B?WGdwOFBuRWRSWmFmZDBhaHBMYmluWUJmcXhhd3g3RzBYbWhtY1BDRHRONTZY?= =?utf-8?B?VkppNERNazR2Q3NXN3J1UUN6UDM3bnlIOHBYMFJzKzQ5VFBSN09lMUdFN09W?= =?utf-8?B?VkR1Q2xRZ3VwRS9RRTZYSEx5Q3pkeXJ5SlhTY3RkUWxjOCtMWjZ4U3dGMXl6?= =?utf-8?B?MTJWNDZWY3BGeWFHdCtrK1poakNTdmM0NWxjdXo0NnZtTnluWXd2WjRIY2R4?= =?utf-8?B?TXlWVDFsNkVxbGhXSitrOCtyWFVVUk9LZGlRaWVPdk5uTFl2STRWQnpJWEor?= =?utf-8?B?c1pKdW45K0NkK2hhWThsNVhHSmQxOGlvdmZsR1EyODJVYUpSTTZwb0I3Njkx?= =?utf-8?B?TWhkMFFsUGFYWXlsNEJhZFNMMlIwVXlzQ1crWnF4TjdvOWIxQ1FSZWNxU2pa?= =?utf-8?B?cFAvZmRlcFdiWHlKbWw1eTRNL05zQVV0dUJRZmllalZjSXBEWVRtWDlocG9w?= =?utf-8?B?cHhCUXZNOTdBTmRtdmZTMkVEVERDcjNNdVJnUHZJSURObXl5V3o0UFJ6dmR6?= =?utf-8?B?V29ucVByblBDRXJhby9KSDhXZkFYazRiM1R6QklLWXBWWlg0OTRiWW1IWGdq?= =?utf-8?Q?YzcxSXnpDXiTJ8dvXCu31cZeoqmiZbWw?= 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)(1800799024)(7416014)(366016)(19092799006)(52116014)(376014)(921020)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?VithekZEbmx5WVJMVnI3NDlpVk1kVEdOY3I2ZTFaajBSQ0wxdXlhdDYrOVN3?= =?utf-8?B?YlZoaExPVjdtWk95bW1keG51cmpzRWRsYkoyNVRxMlVJcEpLL21qUFlhTkhp?= =?utf-8?B?MGdoWkZDNGE0TzB5Sm5UNi94UzJGNEZ1aEpSdmZIblNJNWx4K2gxd21URFZm?= =?utf-8?B?d0duZEJMbU85OTdaV1RsVncrNjJQSFV4UThOZUJER042NUNiY1BaWUszempa?= =?utf-8?B?ai9OWmpOdDNkQUxUWlZZWVcyaGVuY1FyWkh3Y3BvelJNQXNVTFl5bDFOcXpO?= =?utf-8?B?Q3ZpQVNUb1dXRWlDMFc5ZWlKMk9XdTlmSTNtKzlJTlpOQTRHZS9mT1QyanA5?= =?utf-8?B?NzUyMTVyeTgrK1JsRnpoNy9HQVhiY3dJd1J4M1ZOdGNCamRDUkZnOW1xZW1w?= =?utf-8?B?SGRrSVRDTlZINEtoeGl3anBMQjdLNmZIKzdoOFJ0QWhWOXZFcEpOZlNpMWxK?= =?utf-8?B?emdpMndGMkh0UnpWb3lRNm1UV1lBU3I0QnMvYkZmbGN1aDhwaVBoNmdSOG5n?= =?utf-8?B?TXVDSUtwalRDUmtSaXdvRVF0bWpsWWsvaTJ3cldXcTVMZUJMZGJmMDFEWGYv?= =?utf-8?B?dkZZUEhac3hoVTJmT0I0bG1tRGJTT2JSbGQ1eWk3anJjSk10SmVLMnMzVGxw?= =?utf-8?B?R3ZlK1RaMWlXSmcvZXdaZXZkaVhTek1pVk1tOFJzYVM0dE1RYnRKUUhOL1dl?= =?utf-8?B?V0wxT3VWVDFXNkRxRGJONGliM1JiQmFtQzl1VlFFcmJPODh4MHVoaStVZWk5?= =?utf-8?B?WXRCTUxQeHIxd2tsVTZST3FjOUpueHo5QVROcndPSUNtOXFXTU1yeXJXc2Yv?= =?utf-8?B?WGJ3MFRSbHBraEhYMXV4bFhkZ2pVcUxELzV5L2RWNnBBZkk3LzBaZ0VPZ0l0?= =?utf-8?B?ZHBYYmJpZDVwcloybVc1bW9tNy8rOVl1dWpMdVFKMmRKQ1pxaEFuaThkdUJs?= =?utf-8?B?V2RRdWhNTTU5eTgvT1pNZ25GbUlHRm02bGVNN1loOUkyVWVJRnptTm1wbFV1?= =?utf-8?B?MmxrNVcvNUd1cGY2a3NRRnNERXo5M2ZzS29VcGlRRU0xYzNSckRrQWtRNGox?= =?utf-8?B?bld3TjlNbXV3dHFGR3F3T0ZWcUxaTjE4d2RoOWh6QVlVK2k0b2tKWU1jOGtw?= =?utf-8?B?dEFRWnVSRFFIczlvUGtscnJDQjBiRjY5QnBRK2ovL2lhZ1F1N1ZmQk9XSHls?= =?utf-8?B?bEV3ck1DcFdENVdkSkJwaXh2YnhpWXhudzRjZDVDL0dXN2RWNVFqMk1oMDJC?= =?utf-8?B?Vyt2NW1WV2xBWktscGFtdDZzMUUxNytkZ092TjRiTlpDWkpRQTcwTXl3MXRw?= =?utf-8?B?N0ZXRFJ0TmFGMzk5c0E0Mk9NcnJvTUg0Y2VpOWhEZC9EU1VKYzJDa0pKSG5F?= =?utf-8?B?WXNXWDVudHJrbzR5K044cDhXWVoxUy9hb0ZSYllRekpZeDRYU1FmRThubElG?= =?utf-8?B?c0dMdjF6dWJYeTNRZCtXRzkzTUY3S1FXeUdYQ3BOdUN6WHQ2MGI0bzhRMlBI?= =?utf-8?B?LzMxazVnZHdXaWh2ejZZZWhBQWFNdkxzU29YdFJIVEhwQklVK2JiaXRURjJG?= =?utf-8?B?V0RFWVlaRkpWZm5EV1lXNmJSTDYyVGhIa202RW8yUFRwaFdDN3owalk5TDVX?= =?utf-8?B?a1Rvbi91SldhbW11R2JaWmJqVEk2bkszUk51TFZrL21HdTlLVVdkWWlDcFBF?= =?utf-8?B?UmFWeFFFL3VFZUJZdVNkcmx2V25RRDFIM1Nkb1RDM2dGcEZ5OHY5VWxkNm92?= =?utf-8?B?ZnFRNDVmZy94QXJ4QndCM3MwYVdGQWpodjlobnl5OTUyRVplUENmZ3ZyQXRQ?= =?utf-8?B?aVAybnZGZjVuVU5FeWNBL1pBSFM2ZkNZVE03K0FxUXFFamRIbEZkWWZ3WUFp?= =?utf-8?B?MkxOdEJHNkJtUmpzWlMxTjIwNS8rclkzUTFJQmxVVXJyVmtkcXo2bUkzWDV6?= =?utf-8?B?K3dpSEJOazAvbDZiZ2JHZlVWVDFJOXNPMGlFUS9NZW5KZU1MZ2xJOFd4Z3pS?= =?utf-8?B?QmcreGlIcC95YllCZytSdzBqVldHYmExQTZNbTBpV3VwSnFyZXpnak1DRGNM?= =?utf-8?B?ZEsyUE1XOXZkU2xDQjBGcis0cWZYUmdkRFZsYXo5emJXSGhiNWk1OWZkWTNG?= =?utf-8?Q?0p7rBqPxXjDWcF3MW0WDJg1W8?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2f097f2f-558a-44a7-1cb1-08ddb8257077 X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB9642.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Jun 2025 22:28:29.7888 (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: r+51HmdV45pJgR1ZS5rbKrSd6n1azwAMlCEOGJyP93OOF5PI/WCI6tq0lQryJvdDht3Vu81k0wsA8/ZhuhBCOw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR3PR04MB7451 From: Alice Yuan Document the binding for parallel CSI controller found in i.MX8QXP, i.MX93 and i.MX91 SoCs. Signed-off-by: Alice Yuan Signed-off-by: Frank Li --- .../bindings/media/fsl,imx93-parallel-csi.yaml | 108 +++++++++++++++++= ++++ MAINTAINERS | 1 + 2 files changed, 109 insertions(+) diff --git a/Documentation/devicetree/bindings/media/fsl,imx93-parallel-csi= .yaml b/Documentation/devicetree/bindings/media/fsl,imx93-parallel-csi.yaml new file mode 100644 index 0000000000000..b4657c913adad --- /dev/null +++ b/Documentation/devicetree/bindings/media/fsl,imx93-parallel-csi.yaml @@ -0,0 +1,108 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/media/fsl,imx93-parallel-csi.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: i.MX8/9 Parallel Camera Interface + +maintainers: + - Frank Li + +description: | + This is device node for the Parallel Camera Interface which enables the + chip to connect directly to external Parallel CMOS image sensors. + Supports up to 80MHz input clock from sensor. + Supports the following input data formats + - 8-bit/10-bit Camera Sensor Interface (CSI) + - 8-bit data port for RGB, YCbCr, and YUV data input + - 8-bit/10-bit data ports for Bayer data input + Parallel Camera Interface is hooked to the Imaging subsystem via the + Pixel Link. + +properties: + compatible: + oneOf: + - const: fsl,imx8qxp-parallel-csi + - items: + - enum: + - fsl,imx91-parallel-csi + - const: fsl,imx93-parallel-csi + - const: fsl,imx93-parallel-csi + + reg: + maxItems: 1 + + clocks: + maxItems: 2 + + clock-names: + items: + - const: pixel + - const: ipg + + power-domains: + maxItems: 1 + + ports: + $ref: /schemas/graph.yaml#/properties/ports + + properties: + port@0: + $ref: /schemas/graph.yaml#/$defs/port-base + unevaluatedProperties: false + description: + Input port node. + + port@1: + $ref: /schemas/graph.yaml#/$defs/port-base + unevaluatedProperties: false + description: + Output port node. + +required: + - compatible + - reg + - clocks + - clock-names + - ports + +additionalProperties: false + +examples: + - | + #include + #include + + parallel-csi@4ac10070 { + compatible =3D "fsl,imx93-parallel-csi"; + reg =3D <0x4ac10070 0x10>; + clocks =3D <&clk IMX93_CLK_MIPI_CSI_GATE>, + <&clk IMX93_CLK_MEDIA_APB>; + clock-names =3D "pixel", "ipg"; + assigned-clocks =3D <&clk IMX93_CLK_CAM_PIX>; + assigned-clock-parents =3D <&clk IMX93_CLK_VIDEO_PLL>; + assigned-clock-rates =3D <140000000>; + power-domains =3D <&media_blk_ctrl IMX93_MEDIABLK_PD_MIPI_CSI>; + + ports { + #address-cells =3D <1>; + #size-cells =3D <0>; + + port@0 { + reg =3D <0>; + + endpoint { + remote-endpoint =3D <&mt9m114_ep>; + }; + }; + + port@1 { + reg =3D <1>; + endpoint { + remote-endpoint =3D <&isi_in>; + }; + }; + }; + }; +... diff --git a/MAINTAINERS b/MAINTAINERS index 8dc0f6609d1fe..3bd6772c11539 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -15107,6 +15107,7 @@ L: linux-media@vger.kernel.org S: Maintained T: git git://linuxtv.org/media.git F: Documentation/admin-guide/media/imx7.rst +F: Documentation/devicetree/bindings/media/fsl,imx93-parallel-csi.yaml F: Documentation/devicetree/bindings/media/nxp,imx-mipi-csi2.yaml F: Documentation/devicetree/bindings/media/nxp,imx7-csi.yaml F: Documentation/devicetree/bindings/media/nxp,imx8mq-mipi-csi2.yaml --=20 2.34.1 From nobody Wed Oct 8 07:24:27 2025 Received: from DUZPR83CU001.outbound.protection.outlook.com (mail-northeuropeazon11012032.outbound.protection.outlook.com [52.101.66.32]) (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 67B0625BEFD; Mon, 30 Jun 2025 22:28:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.66.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1751322520; cv=fail; b=oa5GUV0XZww+9DTFySNSA4nH4NUBLt4DzH4uViWkpdzbmbB/q/VYJgF5ODfRutwEMKpdHoNEP/K98LyTN5l1Qmiub/2V+uGBk6rdDzzCtS/A9Se+gT/k/CJM1QbyAzSjdP8Zlypj/0fXUX2tDbAy4njzfs0dK+6weUEV9Ye56gE= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1751322520; c=relaxed/simple; bh=OS3ub6vM5FJl/DqSlH1+gZLKKBflMuYJlpUer2tNJWM=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=jjfkP1L3Wd3vYh9Qib/0LLbkJKOyF/YNow9B8VPZfTOoYmrMoLqDz4V/qi5alLrBBvOT3ECxBGB81SQSSDTNrO0zeb7EQg0IObMm5QCcltYvgsvT7Wk0rt2+v2Yz7jptjv8SX87CgJvQEHaOEMdj1QT1V3WKGIiGAxoF3GD97Ck= 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=P3SX0M+S; arc=fail smtp.client-ip=52.101.66.32 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="P3SX0M+S" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=SQvbG5+KUBq2/OJJquWcjVQUBsugL9OezXu4mhZq/JIBlsQLdvvF6k7/Rgfo6mUYN5hwP7a5bQh8SX4Q4LSQXByrEF+j72zHkvTP2C9Kgdkq7zV7RRMUdncr9Q7E9btVXW9+EZMFGEss8KYzeaviTsCk1CMg5SKNtkz7U4EwhKFFTXlT07O2YgMCOSLV/4A3JOR6+mHrZU2xAX994WT6aoHpuvYLYwqtqahIU4nDH0aBL+jAvD9oRxtx+vsmbwgpFiIXL2yCzP03n2zjUA1S3EqBbKGMUctnOIOT/NdKy/Le+djK6Yh/R7hm2CTyn54puyra/PK3ZxwCsZfoguAorQ== 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=gW2ofteNz3bwp0TO/3aj7Yen8HBb6QlA3ePyQdFRYQ8=; b=WDE0lVToEsmPuEFcn20d8m69C8tg6HgUO3Ht+3WT4r2QqznpHT5Mzr/MWnb7RDLaj45Y0nAmiOZOVKhkvUjYzltlrhqUvf32pAIZSGWQHxFu7iY/tK9MNyWhjbhEdERLFZG1s9Ch5k0qCLGfjHEnsPH7/PvlneHy5zrBJ6snY8tT5iBCBvNZ+wLQHF8fYsa5wvMBsc2A0jkOcIJVgwPvx4xZeUYmTNCs/DkED5hLhbzEp1w5iMjLnQyoJGg5hZ/4HkgI/02w6h4tsO15zoGyNr6TWeUrD32XHU+PvH/1wtmGkJ3oHf32cLIzoBS0UBS4RBUjwnRosx145o1oP0W8RQ== 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=gW2ofteNz3bwp0TO/3aj7Yen8HBb6QlA3ePyQdFRYQ8=; b=P3SX0M+SSVhCmcJF4r3aSgubaa2Xp2IbSRMfyAxuVAhBAeSEu5O5N8yrwIkIt7SNeyusH5GAJnS+/Odv7+jnd6OlUS7CpyqHQQ1jj+6OLmQBOcbole0HrQ+pTChB3+eaJn452uKGuPb3t81lq8YQxBRea8lPoMD8dLIh18p3GMDRzSCIM7jM6Y1aRrxXeYtACRmdLK46M2iLSMvGn17ggzbL7c5yrpD2HYLTYssyZE2rkhQKUUcZb4fNm/tXqufGpfpj/22HzBuhG1dw4p78lFeEPdiB603UMHJDCuUot/li/YvTWk/5By7YDPj5/ffhPy9OIN21HjCTnRDPZuoW6Q== 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 PR3PR04MB7451.eurprd04.prod.outlook.com (2603:10a6:102:93::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8880.29; Mon, 30 Jun 2025 22:28:33 +0000 Received: from PAXPR04MB9642.eurprd04.prod.outlook.com ([fe80::9126:a61e:341d:4b06]) by PAXPR04MB9642.eurprd04.prod.outlook.com ([fe80::9126:a61e:341d:4b06%7]) with mapi id 15.20.8880.029; Mon, 30 Jun 2025 22:28:33 +0000 From: Frank Li Date: Mon, 30 Jun 2025 18:28:19 -0400 Subject: [PATCH 3/5] media: nxp: add V4L2 subdev driver for parallel CSI Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250630-imx8qxp_pcam-v1-3-eccd38d99201@nxp.com> References: <20250630-imx8qxp_pcam-v1-0-eccd38d99201@nxp.com> In-Reply-To: <20250630-imx8qxp_pcam-v1-0-eccd38d99201@nxp.com> To: Laurent Pinchart , Mauro Carvalho Chehab , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Rui Miguel Silva , Martin Kepplinger , Purism Kernel Team , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Philipp Zabel Cc: linux-media@vger.kernel.org, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, Frank Li , Alice Yuan , Robert Chiras , Zhipeng Wang X-Mailer: b4 0.13-dev-e586c X-Developer-Signature: v=1; a=ed25519-sha256; t=1751322499; l=30500; i=Frank.Li@nxp.com; s=20240130; h=from:subject:message-id; bh=swNv2MW918CT2syfbIy2D7qvxkFo1imyeFxlrMbLUJM=; b=1VuVtMu3JDweGevQ5DvSLyvbRyLinTWrhTgEee97TWCE1MtaSGWDQypzxVdbj+MI30NJu6h9C i57H3wIadcMDyvMasmFzyN4OSFImOrG+PgSjzbPjuhr8npSVHPykadw X-Developer-Key: i=Frank.Li@nxp.com; a=ed25519; pk=I0L1sDUfPxpAkRvPKy7MdauTuSENRq+DnA+G4qcS94Q= X-ClientProxiedBy: AM8P251CA0025.EURP251.PROD.OUTLOOK.COM (2603:10a6:20b:21b::30) To PAXPR04MB9642.eurprd04.prod.outlook.com (2603:10a6:102:240::14) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAXPR04MB9642:EE_|PR3PR04MB7451:EE_ X-MS-Office365-Filtering-Correlation-Id: b23ff389-b637-42b5-29aa-08ddb82572a2 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|1800799024|7416014|366016|19092799006|52116014|376014|921020|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?SCtBWXFNQW5SbktxNG1zd2JXYVUzeVZEK21jSUdaRGdLSWh3TkNYU1pUWDJV?= =?utf-8?B?eWc0UXR0dGJHV2RoQVdkNlRGRTJGcDJXd3lBNmMrKzdpcHNpQTZlYnJCampK?= =?utf-8?B?RXI3eDJkVGJsUGZkaDNPMlR6N3lycXg5bDU3SGVITUNjc3d3THNjWURzU1VN?= =?utf-8?B?ZUhPOUNtK2NYRVlMRCtGQytndDZOTGprbGt3SFFlMWNzSVpOZHRWYmJnZFB3?= =?utf-8?B?cDRBV0xhcUhKekxBOGV2MVh6ZHR2T0RXMy9IRWF3dHR6UXZ4Snkwa3VWMW82?= =?utf-8?B?QWt0ZjRzTWJURkFpUzlnai90VzRDTXBVckNtc2ZpdW81bTVvcDlONDJraTNH?= =?utf-8?B?U2lRbFc0R1g3NzRBb0FBM3M4V3VCU3RwOWFJMkxDRVlJNWlZOERQUjF3andF?= =?utf-8?B?aTZ5amM1OHduT2J1L3J4TGh1enA1WVRvS0hJSnJFNlQ5VS9HN0lJTDdMOTJF?= =?utf-8?B?RnlrdlNoVGRLSkJXNTRtQXZzY1cvN0FiVWpiUTBVM3EvdGxRc2crRlRDY2pH?= =?utf-8?B?dnBDZWJvMHdLWHVpc2orYkFGbXB1UHIrZnppaWF1a25SMXh4ZXZLS3dQSWxp?= =?utf-8?B?dnRKZmdCVExxcTM3TkFkNkZmNk9Ma0tTcFZySUdIMFd5UjNMaGRqQnc4cmxh?= =?utf-8?B?RENvN0Y2dmVPUGZDS2s4dS83c3I3Z0JtR0U2ZXcrall0TzJEMFloVWpybFlx?= =?utf-8?B?V2NBTGtScWRqbmpzc1J6ZHQ3S2ZBOW4wcTBwOFBUa29vblFJV25uK2xBY2VG?= =?utf-8?B?amd1cmQzRWlRbXhQemx3cXdZY1FhQzNZUlZLb2ExYmplVHpFUjdKTmVhVFNT?= =?utf-8?B?N2E2a3hKNFlQdU9JWHMyMEoxVC9BRkVlUCtjbVdyaUxycjlZTE0vOTRsaE8w?= =?utf-8?B?ZGUvRlRmakZ1TWtvS3BFUG9MNmxzV2lTRDh5ZmpMTGNyU0o1WTc2Nmw5eFN2?= =?utf-8?B?NDVvTHJBS2ljdnZsQVJOaXoyRVdWUVYxcFk0S0VwcmhNTWtoTEJXK3plWWNW?= =?utf-8?B?RUgvTm9GazVRbll4MWdRbHp6NEhyNTcrYmY3azdadlRHbDdETkxJQ0pMdG8r?= =?utf-8?B?cU5mWk1qaDV0VklWdEhqYVBUeGNkdDgwNWRvS0V3d1Z6WWd5TnFsNVRjdHJw?= =?utf-8?B?cDI2MU1QbmxncTh3VmEyYldYM3BwRHh2QUhxdlFDS0s2T05uUVVCMk1hMjlj?= =?utf-8?B?SE5mWUpNM0ZUTGtoTzRKK0xJdGNRS0JwT1BCWElXQ1lXd0dST1QyZ3p1Tno2?= =?utf-8?B?ZmxGMGc0VEJ4Y1VTb04xQ1dwQnJzUXFrL1pTR0JZMnFTTWNJdUtWRE15ZHZz?= =?utf-8?B?ZmMxMm9laHV3ZldYTTZkVjRlTy9aQWp1MWpIQjJ0dk50K3V0YVJteEIydHJO?= =?utf-8?B?eEpBSHlkQlhzR3J3SXJ4UFl4bzZEOVlnYXFCcURNSmplVFVMRDBuTG0rWlRE?= =?utf-8?B?bU9YcDN6Q2Y3UG9QWnhROUpGYytGRVc1Y2lBZGRUNzdLdGtPUUlQQ1k2MktY?= =?utf-8?B?aFFQUytXQnl1NUZmN0NOQVBoYVptczB6VVRrY0F3ckRpNUtJclB2NjFBYnFU?= =?utf-8?B?bjRPVElLQmZPczQyUFliQ2MrOG1zc3F6RHNTYTRWb1UxU2g0Wmd1UG1Xb3dY?= =?utf-8?B?RGtJVlg2Ty8zbzFweER3STB1SHp3SmlJcVZLMm9Da3Z4SzBLUU1ET01xd0pQ?= =?utf-8?B?M0VFY1Y0K2JYWVdtc0h1RWFJMVVLVnlzNGY3VUZuZTYwSnpxRk1LZGN4OUpK?= =?utf-8?B?VXNnL1lCQjVVRHlDZkx6M1hoVitxQ3F1NVhjMTl2WkNKdmZ6enpxRUF6Wkx0?= =?utf-8?B?Ry8vZnVlaFBZV1N4VjBmZndqUGxla2FFWVVoOTJoRG5mTlR2U1NLU0FXZjdz?= =?utf-8?B?YW1scngzK2JkbG5sWW9aeENSczJjWk1PYkZZa0ozalJXZnFncjltQXg0RzZZ?= =?utf-8?B?UEMxYlFpQVlMR0s0aythRmJHcW9USk43YmxwRXpiZVZMcmx4eGlZSVpKaTlW?= =?utf-8?Q?hr21tSyfR9OlslmTcal4CWR7gV8NZE=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)(1800799024)(7416014)(366016)(19092799006)(52116014)(376014)(921020)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?cnhCS2UyN21qT0VZSFpUdUttS21jamI1NHF2a2RETUY3Qk5ScDQ1Vno4OXpO?= =?utf-8?B?aDZmQi9iTXpkK3IrTkI4NEdqNHJaRjU2bWh4eS9RMFVnK2wrR3pjOTRCNzds?= =?utf-8?B?UEJxUGE3N1FnMzE3Z09iOFdSRWxsQWV6bFJYRGpOMHQwZXIvSE45MkwwN3Zx?= =?utf-8?B?QlRaQTVETVNoZy8wZnp5b1ZaNHNVc0FwNGN1TzU5V0hXTG9XMHdLOTRnZ0dj?= =?utf-8?B?WU9EZHlhNWNiMkpFSkFyRDNQTHJmSlBrOXQvK3RxYTJrWWYzaVh5QTE5TzhJ?= =?utf-8?B?SGYwamVrRWZEOW95WFpuaHNJYVNKWHVOSjgyYmZ2algwdjdLZU9uQy82NFVI?= =?utf-8?B?Z3V5c2Q0ekJQM1RCS0FiaHp6NTZMVWtUU2JlZTk4a09MWmUxMVpjc2EwWTF0?= =?utf-8?B?WFB1Sk5MMXNoMFQreDhyc2lrMWpZNXZFdTlQTG4zTjVvZllXdVo3UlhCa09H?= =?utf-8?B?QVdmRjJqWmJXQTVqa3BPRXZ3SWdQWGU3NVlEM1FUUTE5TDh4ejczT2ZUd1dY?= =?utf-8?B?WFJRT3JMV05hQlloNlVxRGtCQ3NSMlNCMXU3Q1pFc3pUcm8wa0hTaGRsS29B?= =?utf-8?B?cGU2NXlJRmVqRTZwTi9KaDVQVEhDUHBRY0lubkpqODlHVXMwcWlNV1FlVHV4?= =?utf-8?B?WGpDMzFvNG9NQzFxRzNPSlBuMjFRcXFOMVdqczFwTkN4YW9Ha1p2NXMzdWov?= =?utf-8?B?ai9BSHJuSG9KZ2ZYRVZUSTdmeHpIMUZ1Mi95YkFGSTVUWGFqRUpoWDUrUURp?= =?utf-8?B?c1plMWY0SFNWT0RJVXJ2Uk1ETUZDUlNoZ084VWVaWUFtTEdOeWlkaUZGVW9a?= =?utf-8?B?QU0wbExEL2ppSHdJek0yQmJFWlFxV3BzME1ZTjNDOEtZN2s2cmtURU1sWXdQ?= =?utf-8?B?WHJCcGV6TVVZeWgxdWRHY092UzArTUQ5S2ltTFl4L1BaK1lZbUYvL09MWUxq?= =?utf-8?B?b1ZPZ0dWTlp2ekhLSWJhcmZFY3V3enJudndySnQxWGNZVkljaC9jZXBIaURH?= =?utf-8?B?R05sNkJPTzUyd1d2bW1GWExIbWpzMzJ1dXIxd0FyUHppNUh1QitMbDlSQzQx?= =?utf-8?B?Zi9ZZHVGSGpKY3hhYzhzTzR0RlRCWENja0NyUDZiWVR2aEFuWEFaUzdXT3pj?= =?utf-8?B?a2wrdHBRc2VoZVRqcjhNTU9lbjFkY3lzTmJhUGkxaXpEN1JCS2puWkFGYStS?= =?utf-8?B?aGRUOFQ0ZFUxd1VaRTlvWFV5R1RpUjZHVzZ5cnd6dUY5NTNmQUN3MlFLVUdv?= =?utf-8?B?RHY3Rk5JZTVQS3ZiOEdaVzEvOE5CUWRoa3F5NG5uYTFJQTgxTktjcEJENDIr?= =?utf-8?B?cnBlQlVoZDladmdVUUpYc0wwNk53R2JFd0U5bSs2K1BFbnIxK042VkRpcXlr?= =?utf-8?B?NVdCYjdodWRIYVhUS1JIWm9xY3VhcWlEU2UxSU5LYkxDWnJtTHoxRDdWUzlO?= =?utf-8?B?WVFQNGNTekNCeCtQRnpJS0w4L004SGxVSkxiOW5NUlU1UkpqYlN1bWxMRndM?= =?utf-8?B?OXBPdFpWNXlrNmI3bEhFaWNGNmRpUXQ5L0J6dmFXenU2RHVodWZSaUZOVEZn?= =?utf-8?B?WFlzbkJERkE4dktCRDEvMkhSVkhQTUdodkNTa3Q2dVVhYTZ6UGZHQVFnSDVp?= =?utf-8?B?NUFPdVkwUHArMnRqTEVYdUlXS3BUUy8yTDZGS0ZsNCsyMXR5WVE5M0tUZ21y?= =?utf-8?B?OG5wSEJzc1RFWnkvWW5BaUpLMXUwaUJrVVRxVDluYmU3S2VMeHgwbVM4WElR?= =?utf-8?B?K2NLZUlWMVM2anhrcWZmeEZHVnJlQkQxUWNkTkUwSHJndFptLzJ3dnJUKzUw?= =?utf-8?B?ay80ZGVtRTd3Y3hDMi9iaTB2cUZNVXdKRThPSUtHN0VZM1ZLbVBuOTBSU2E4?= =?utf-8?B?MFJvU2VTWHN4SkpsRVJtaEdMQWkvUzVzOGhhYnVRTTY3VHFuYjAzajlWQndK?= =?utf-8?B?Uk9yR3BHUzhiQnlUYUxDVEpOeWZaUmFmaUk3QXdGUUJjTExBQU15ZGgyQ1ND?= =?utf-8?B?NTU4dXpnQWxRUXZaZWtTUVhaRFhMUTUySDZYcHJXS1ExR1RJaEZxRTVXRXQz?= =?utf-8?B?VzY2aHRiRnBuTjdWcUhhQ3NmbmFqckw1RXB4MkFMb0JEVVBIQmZoRG16T2hX?= =?utf-8?Q?tc/rz9nHt1fZmxFbPJ/cymC/u?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: b23ff389-b637-42b5-29aa-08ddb82572a2 X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB9642.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Jun 2025 22:28:33.4856 (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: 0QaXZ8i6LSzTO/5CIbsE1+aF0jMd4Mx+y4xw3gEzOwg9B2y2Vwg0lpHPgx7jTMZz5ebKIhRqd8mzJiPPeqriYA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR3PR04MB7451 From: Alice Yuan Add a V4L2 sub-device driver for the parallel CSI controller found on i.MX8QXP, i.MX8QM, and i.MX93 SoCs. This controller supports parallel camera sensors and enables image data capture through a parallel interface. Signed-off-by: Alice Yuan Signed-off-by: Robert Chiras Signed-off-by: Zhipeng Wang Signed-off-by: Frank Li --- MAINTAINERS | 1 + drivers/media/platform/nxp/Kconfig | 11 + drivers/media/platform/nxp/Makefile | 1 + drivers/media/platform/nxp/imx-parallel-csi.c | 952 ++++++++++++++++++++++= ++++ 4 files changed, 965 insertions(+) diff --git a/MAINTAINERS b/MAINTAINERS index 3bd6772c11539..4aca9a30184b5 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -15112,6 +15112,7 @@ F: Documentation/devicetree/bindings/media/nxp,imx-= mipi-csi2.yaml F: Documentation/devicetree/bindings/media/nxp,imx7-csi.yaml F: Documentation/devicetree/bindings/media/nxp,imx8mq-mipi-csi2.yaml F: drivers/media/platform/nxp/imx-mipi-csis.c +F: drivers/media/platform/nxp/imx-parallel-csi.c F: drivers/media/platform/nxp/imx7-media-csi.c F: drivers/media/platform/nxp/imx8mq-mipi-csi2.c =20 diff --git a/drivers/media/platform/nxp/Kconfig b/drivers/media/platform/nx= p/Kconfig index 40e3436669e21..5df6f97d16f29 100644 --- a/drivers/media/platform/nxp/Kconfig +++ b/drivers/media/platform/nxp/Kconfig @@ -39,6 +39,17 @@ config VIDEO_IMX_MIPI_CSIS Video4Linux2 sub-device driver for the MIPI CSI-2 CSIS receiver v3.3/v3.6.3 found on some i.MX7 and i.MX8 SoCs. =20 +config VIDEO_IMX_PARALLEL_CSI + tristate "NXP i.MX9/i.MX8 Parallel CSI Driver" + depends on ARCH_MXC || COMPILE_TEST + depends on VIDEO_DEV + select MEDIA_CONTROLLER + select V4L2_FWNODE + select VIDEO_V4L2_SUBDEV_API + help + Video4Linux2 sub-device driver for PARALLEL CSI receiver found + on some iMX8 and iMX9 SoCs. + source "drivers/media/platform/nxp/imx8-isi/Kconfig" =20 # mem2mem drivers diff --git a/drivers/media/platform/nxp/Makefile b/drivers/media/platform/n= xp/Makefile index 4d90eb7136525..076592c58575c 100644 --- a/drivers/media/platform/nxp/Makefile +++ b/drivers/media/platform/nxp/Makefile @@ -7,5 +7,6 @@ obj-y +=3D imx8-isi/ obj-$(CONFIG_VIDEO_IMX7_CSI) +=3D imx7-media-csi.o obj-$(CONFIG_VIDEO_IMX8MQ_MIPI_CSI2) +=3D imx8mq-mipi-csi2.o obj-$(CONFIG_VIDEO_IMX_MIPI_CSIS) +=3D imx-mipi-csis.o +obj-$(CONFIG_VIDEO_IMX_PARALLEL_CSI) +=3D imx-parallel-csi.o obj-$(CONFIG_VIDEO_IMX_PXP) +=3D imx-pxp.o obj-$(CONFIG_VIDEO_MX2_EMMAPRP) +=3D mx2_emmaprp.o diff --git a/drivers/media/platform/nxp/imx-parallel-csi.c b/drivers/media/= platform/nxp/imx-parallel-csi.c new file mode 100644 index 0000000000000..de91c95cabb7c --- /dev/null +++ b/drivers/media/platform/nxp/imx-parallel-csi.c @@ -0,0 +1,952 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * i.MX Parallel CSI receiver driver. + * + * Copyright 2019-2025 NXP + * + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#define PARALLEL_CSI_DEF_MBUS_CODE MEDIA_BUS_FMT_UYVY8_2X8 +#define PARALLEL_CSI_DEF_PIX_WIDTH 1920 +#define PARALLEL_CSI_DEF_PIX_HEIGHT 1080 + +#define PARALLEL_CSI_MAX_PIX_WIDTH 0xffff +#define PARALLEL_CSI_MAX_PIX_HEIGHT 0xffff + +#define CI_PI_BASE_OFFSET 0x0 + +#define PARALLEL_CSI_PAD_SINK 0 +#define PARALLEL_CSI_PAD_SOURCE 1 +#define PARALLEL_CSI_PADS_NUM 2 + +/* CI_PI INTERFACE Control */ +#define IF_CTRL_REG_PL_ENABLE BIT(0) +#define IF_CTRL_REG_PL_VALID BIT(1) +#define IF_CTRL_REG_DATA_TYPE_SEL BIT(8) +#define IF_CTRL_REG_DATA_TYPE(x) FIELD_PREP(GENMASK(13, 9), (x)) + +#define DATA_TYPE_OUT_NULL 0x00 +#define DATA_TYPE_OUT_RGB 0x04 +#define DATA_TYPE_OUT_YUV444 0x08 +#define DATA_TYPE_OUT_YYU420_ODD 0x10 +#define DATA_TYPE_OUT_YYU420_EVEN 0x12 +#define DATA_TYPE_OUT_YYY_ODD 0x18 +#define DATA_TYPE_OUT_UYVY_EVEN 0x1a +#define DATA_TYPE_OUT_RAW 0x1c + +#define IF_CTRL_REG_IF_FORCE_HSYNV_OVERRIDE 0x4 +#define IF_CTRL_REG_IF_FORCE_VSYNV_OVERRIDE 0x2 +#define IF_CTRL_REG_IF_FORCE_DATA_ENABLE_OVERRIDE 0x1 + +/* CSI INTERFACE CONTROL REG */ +#define CSI_CTRL_REG_CSI_EN BIT(0) +#define CSI_CTRL_REG_PIXEL_CLK_POL BIT(1) +#define CSI_CTRL_REG_HSYNC_POL BIT(2) +#define CSI_CTRL_REG_VSYNC_POL BIT(3) +#define CSI_CTRL_REG_DE_POL BIT(4) +#define CSI_CTRL_REG_PIXEL_DATA_POL BIT(5) +#define CSI_CTRL_REG_CCIR_EXT_VSYNC_EN BIT(6) +#define CSI_CTRL_REG_CCIR_EN BIT(7) +#define CSI_CTRL_REG_CCIR_VIDEO_MODE BIT(8) +#define CSI_CTRL_REG_CCIR_NTSC_EN BIT(9) +#define CSI_CTRL_REG_CCIR_VSYNC_RESET_EN BIT(10) +#define CSI_CTRL_REG_CCIR_ECC_ERR_CORRECT_EN BIT(11) +#define CSI_CTRL_REG_HSYNC_FORCE_EN BIT(12) +#define CSI_CTRL_REG_VSYNC_FORCE_EN BIT(13) +#define CSI_CTRL_REG_GCLK_MODE_EN BIT(14) +#define CSI_CTRL_REG_VALID_SEL BIT(15) +#define CSI_CTRL_REG_RAW_OUT_SEL BIT(16) +#define CSI_CTRL_REG_HSYNC_OUT_SEL BIT(17) +#define CSI_CTRL_REG_HSYNC_PULSE(x) FIELD_PREP(GENMASK(21, 19), (x)) +#define CSI_CTRL_REG_UV_SWAP_EN BIT(22) +#define CSI_CTRL_REG_DATA_TYPE_IN(x) FIELD_PREP(GENMASK(26, 23), (x)) +#define CSI_CTRL_REG_MASK_VSYNC_COUNTER(x) FIELD_PREP(GENMASK(28, 27), (x)) +#define CSI_CTRL_REG_SOFTRST BIT(31) + +/* CSI interface Status */ +#define CSI_STATUS_FIELD_TOGGLE BIT(0) +#define CSI_STATUS_ECC_ERROR BIT(1) + +/* CSI INTERFACE CONTROL REG1 */ +#define CSI_CTRL_REG1_PIXEL_WIDTH(v) FIELD_PREP(GENMASK(15, 0), (v)) +#define CSI_CTRL_REG1_VSYNC_PULSE(v) FIELD_PREP(GENMASK(31, 16), (v)) + +/* Need match field DATA_TYPE_IN definition at CSI CTRL register */ +enum csi_in_data_type { + CSI_IN_DT_UYVY_BT656_8 =3D 0x0, + CSI_IN_DT_UYVY_BT656_10, + CSI_IN_DT_RGB_8, + CSI_IN_DT_BGR_8, + CSI_IN_DT_YVYU_8 =3D 0x5, + CSI_IN_DT_YUV_8, + CSI_IN_DT_RAW_8 =3D 0x9, + CSI_IN_DT_RAW_10, +}; + +enum { + PI_MODE_INIT, + PI_GATE_CLOCK_MODE, + PI_CCIR_MODE, +}; + +enum { + PI_V1, + PI_V2, +}; + +static const char *const parallel_csi_clk_id[] =3D { + "pixel", + "ipg", +}; + +#define PCSIDEV_NUM_CLKS ARRAY_SIZE(parallel_csi_clk_id) + +struct parallel_csi_plat_data { + u32 version; + u32 if_ctrl_reg; + u32 interface_status; + u32 interface_ctrl_reg; + u32 interface_ctrl_reg1; + u8 def_hsync_pol; + u8 def_vsync_pol; + u8 def_pixel_clk_pol; + u8 def_csi_in_data_type; +}; + +struct csi_pm_domain { + struct device *dev; + struct device_link *link; +}; + +struct parallel_csi_device { + struct device *dev; + void __iomem *regs; + struct reset_control *mrst; + struct regulator *pcsi_phy_regulator; + struct clk_bulk_data clks[PCSIDEV_NUM_CLKS]; + + struct v4l2_subdev sd; + struct media_pad pads[PARALLEL_CSI_PADS_NUM]; + struct v4l2_async_notifier notifier; + + struct v4l2_mbus_framefmt format; + const struct parallel_csi_plat_data *pdata; + struct parallel_csi_pix_format const *pcsidev_fmt; + + struct { + struct v4l2_subdev *sd; + const struct media_pad *pad; + } source; + + struct csi_pm_domain pm_domains[2]; + + u8 mode; + u8 uv_swap; +}; + +struct parallel_csi_pix_format { + u32 code; + u32 output; + u32 data_type; + u8 width; +}; + +static const struct parallel_csi_pix_format parallel_csi_formats[] =3D { + /* YUV formats. */ + { + .code =3D MEDIA_BUS_FMT_UYVY8_2X8, + .output =3D MEDIA_BUS_FMT_UYVY8_2X8, + .data_type =3D CSI_IN_DT_YVYU_8, + .width =3D 16, + }, { + .code =3D MEDIA_BUS_FMT_YUYV8_2X8, + .output =3D MEDIA_BUS_FMT_YUYV8_2X8, + .data_type =3D CSI_IN_DT_YVYU_8, + .width =3D 16, + }, +}; + +static const struct parallel_csi_plat_data imx8qxp_pdata =3D { + .version =3D PI_V1, + .if_ctrl_reg =3D 0x0, + .interface_status =3D 0x20, + .interface_ctrl_reg =3D 0x10, + .interface_ctrl_reg1 =3D 0x30, + .def_hsync_pol =3D 1, + .def_vsync_pol =3D 0, + .def_pixel_clk_pol =3D 0, + .def_csi_in_data_type =3D CSI_IN_DT_UYVY_BT656_8, +}; + +static const struct parallel_csi_plat_data imx93_pdata =3D { + .version =3D PI_V2, + .if_ctrl_reg =3D 0x0, + .interface_status =3D 0x4, + .interface_ctrl_reg =3D 0x8, + .interface_ctrl_reg1 =3D 0xc, + .def_hsync_pol =3D 0, + .def_vsync_pol =3D 1, + .def_pixel_clk_pol =3D 0, + .def_csi_in_data_type =3D CSI_IN_DT_YVYU_8, +}; + +static const struct parallel_csi_plat_data imx91_pdata =3D { + .version =3D PI_V2, + .if_ctrl_reg =3D 0x0, + .interface_status =3D 0x4, + .interface_ctrl_reg =3D 0x8, + .interface_ctrl_reg1 =3D 0xc, + .def_hsync_pol =3D 0, + .def_vsync_pol =3D 1, + .def_pixel_clk_pol =3D 0, + .def_csi_in_data_type =3D CSI_IN_DT_YVYU_8, +}; + +static void parallel_csi_regs_dump(struct parallel_csi_device *pcsidev) +{ + struct device *dev =3D pcsidev->dev; + const struct parallel_csi_plat_data *pdata =3D pcsidev->pdata; + u32 i; + + struct { + u32 offset; + const char *const name; + } registers[] =3D { + { pdata->if_ctrl_reg, "HW_IF_CTRL_REG" }, + { pdata->interface_ctrl_reg, "HW_CSI_CTRL_REG" }, + { pdata->interface_status, "HW_CSI_STATUS" }, + { pdata->interface_ctrl_reg1, "HW_CSI_CTRL_REG1" }, + + }; + + for (i =3D 0; i < ARRAY_SIZE(registers); i++) { + u32 reg =3D readl(pcsidev->regs + registers[i].offset); + + dev_dbg(dev, "%20s[0x%.2x]: 0x%.8x\n", + registers[i].name, registers[i].offset, reg); + } +} + +static const struct parallel_csi_pix_format *find_parallel_csi_format(u32 = code) +{ + unsigned int i; + + for (i =3D 0; i < ARRAY_SIZE(parallel_csi_formats); i++) + if (code =3D=3D parallel_csi_formats[i].code) + return ¶llel_csi_formats[i]; + + return NULL; +} + +static void parallel_csi_sw_reset(struct parallel_csi_device *pcsidev) +{ + const struct parallel_csi_plat_data *pdata =3D pcsidev->pdata; + u32 val; + + /* Softwaret Reset */ + val =3D readl(pcsidev->regs + pdata->interface_ctrl_reg); + val |=3D CSI_CTRL_REG_SOFTRST; + writel(val, pcsidev->regs + pdata->interface_ctrl_reg); + + usleep_range(500, 1000); + val =3D readl(pcsidev->regs + pdata->interface_ctrl_reg); + val &=3D ~CSI_CTRL_REG_SOFTRST; + writel(val, pcsidev->regs + pdata->interface_ctrl_reg); +} + +static void parallel_csi_hw_config(struct parallel_csi_device *pcsidev) +{ + const struct parallel_csi_plat_data *pdata =3D pcsidev->pdata; + u32 val; + + /* Software Reset */ + parallel_csi_sw_reset(pcsidev); + + /* Config PL Data Type */ + val =3D readl(pcsidev->regs + pdata->if_ctrl_reg); + val |=3D IF_CTRL_REG_DATA_TYPE(DATA_TYPE_OUT_YUV444); + writel(val, pcsidev->regs + pdata->if_ctrl_reg); + + /* Enable sync Force */ + val =3D readl(pcsidev->regs + pdata->interface_ctrl_reg); + val |=3D (CSI_CTRL_REG_HSYNC_FORCE_EN | CSI_CTRL_REG_VSYNC_FORCE_EN); + writel(val, pcsidev->regs + pdata->interface_ctrl_reg); + + /* Enable Pixel Link */ + val =3D readl(pcsidev->regs + pdata->if_ctrl_reg); + val |=3D IF_CTRL_REG_PL_ENABLE; + writel(val, pcsidev->regs + pdata->if_ctrl_reg); + + /* Enable Pixel Link */ + val =3D readl(pcsidev->regs + pdata->if_ctrl_reg); + val |=3D IF_CTRL_REG_PL_VALID; + writel(val, pcsidev->regs + pdata->if_ctrl_reg); + + /* Config CTRL REG */ + val =3D readl(pcsidev->regs + pdata->interface_ctrl_reg); + + val |=3D (CSI_CTRL_REG_DATA_TYPE_IN(pdata->def_csi_in_data_type) | + FIELD_PREP(CSI_CTRL_REG_HSYNC_POL, pdata->def_hsync_pol) | + FIELD_PREP(CSI_CTRL_REG_VSYNC_POL, pdata->def_vsync_pol) | + FIELD_PREP(CSI_CTRL_REG_PIXEL_CLK_POL, pdata->def_pixel_clk_pol) | + CSI_CTRL_REG_MASK_VSYNC_COUNTER(3) | + CSI_CTRL_REG_HSYNC_PULSE(2)); + + if (pcsidev->uv_swap) + val |=3D CSI_CTRL_REG_UV_SWAP_EN; + + if (pcsidev->mode & PI_GATE_CLOCK_MODE) { + val |=3D CSI_CTRL_REG_GCLK_MODE_EN; + } else if (pcsidev->mode & PI_CCIR_MODE) { + val |=3D (CSI_CTRL_REG_CCIR_EN | + CSI_CTRL_REG_CCIR_VSYNC_RESET_EN | + CSI_CTRL_REG_CCIR_EXT_VSYNC_EN | + CSI_CTRL_REG_CCIR_ECC_ERR_CORRECT_EN); + } + + writel(val, pcsidev->regs + pdata->interface_ctrl_reg); +} + +static int get_interface_ctrl_reg1_param(struct parallel_csi_device *pcsid= ev, + u32 *pixel_width, u32 *vsync_pulse, + const struct v4l2_mbus_framefmt *format) +{ + u32 version =3D pcsidev->pdata->version; + + switch (version) { + case PI_V1: + *pixel_width =3D format->width - 1; + *vsync_pulse =3D format->width << 1; + break; + case PI_V2: + *pixel_width =3D format->width << 3; + *vsync_pulse =3D format->width - 1; + break; + default: + dev_err(pcsidev->dev, "Not support PI version %d\n", version); + return -EINVAL; + } + + return 0; +} + +static void parallel_csi_config_ctrl_reg1(struct parallel_csi_device *pcsi= dev, + const struct v4l2_mbus_framefmt *format) +{ + const struct parallel_csi_plat_data *pdata =3D pcsidev->pdata; + struct device *dev =3D pcsidev->dev; + u32 pixel_width; + u32 vsync_pulse; + u32 val; + int ret; + + dev_dbg(dev, "%s %dx%d, fmt->code:0x%0x\n", __func__, + format->width, format->height, format->code); + + if (format->width <=3D 0 || format->height <=3D 0) { + dev_err(dev, "%s width/height invalid\n", __func__); + return; + } + + ret =3D get_interface_ctrl_reg1_param(pcsidev, &pixel_width, + &vsync_pulse, format); + if (ret < 0) + return; + + val =3D (CSI_CTRL_REG1_PIXEL_WIDTH(pixel_width) | + CSI_CTRL_REG1_VSYNC_PULSE(vsync_pulse)); + writel(val, pcsidev->regs + pdata->interface_ctrl_reg1); +} + +static void parallel_csi_enable(struct parallel_csi_device *pcsidev) +{ + const struct parallel_csi_plat_data *pdata =3D pcsidev->pdata; + u32 val; + + /* Enable CSI */ + val =3D readl(pcsidev->regs + pdata->interface_ctrl_reg); + val |=3D CSI_CTRL_REG_CSI_EN; + writel(val, pcsidev->regs + pdata->interface_ctrl_reg); + + /* Disable SYNC Force */ + val =3D readl(pcsidev->regs + pdata->interface_ctrl_reg); + val &=3D ~(CSI_CTRL_REG_HSYNC_FORCE_EN | CSI_CTRL_REG_VSYNC_FORCE_EN); + writel(val, pcsidev->regs + pdata->interface_ctrl_reg); +} + +static void parallel_csi_disable(struct parallel_csi_device *pcsidev) +{ + const struct parallel_csi_plat_data *pdata =3D pcsidev->pdata; + u32 val; + + /* Enable Sync Force */ + val =3D readl(pcsidev->regs + pdata->interface_ctrl_reg); + val |=3D (CSI_CTRL_REG_HSYNC_FORCE_EN | CSI_CTRL_REG_VSYNC_FORCE_EN); + writel(val, pcsidev->regs + pdata->interface_ctrl_reg); + + /* Disable CSI */ + val =3D readl(pcsidev->regs + pdata->interface_ctrl_reg); + val &=3D ~CSI_CTRL_REG_CSI_EN; + writel(val, pcsidev->regs + pdata->interface_ctrl_reg); + + /* Disable Pixel Link */ + val =3D readl(pcsidev->regs + pdata->if_ctrl_reg); + val &=3D ~(IF_CTRL_REG_PL_VALID | IF_CTRL_REG_PL_ENABLE); + writel(val, pcsidev->regs + pdata->if_ctrl_reg); +} + +static void parallel_csi_start_stream(struct parallel_csi_device *pcsidev, + const struct v4l2_mbus_framefmt *format, + const struct parallel_csi_pix_format *pcsidev_fmt) +{ + if (pcsidev_fmt->code =3D=3D MEDIA_BUS_FMT_YUYV8_2X8 || + pcsidev_fmt->code =3D=3D MEDIA_BUS_FMT_UYVY8_2X8) + pcsidev->uv_swap =3D 1; + + parallel_csi_hw_config(pcsidev); + parallel_csi_config_ctrl_reg1(pcsidev, format); + parallel_csi_enable(pcsidev); + parallel_csi_regs_dump(pcsidev); +} + +static void parallel_csi_stop_stream(struct parallel_csi_device *pcsidev) +{ + parallel_csi_regs_dump(pcsidev); + parallel_csi_disable(pcsidev); +} + +/* -----------------------------------------------------------------------= ------ + * Async subdev notifier + */ + +static struct parallel_csi_device * +notifier_to_parallel_csi_device(struct v4l2_async_notifier *n) +{ + return container_of(n, struct parallel_csi_device, notifier); +} + +static struct parallel_csi_device * +sd_to_parallel_csi_device(struct v4l2_subdev *sdev) +{ + return container_of(sdev, struct parallel_csi_device, sd); +} + +static int parallel_csi_notify_bound(struct v4l2_async_notifier *notifier, + struct v4l2_subdev *sd, + struct v4l2_async_connection *asd) +{ + struct parallel_csi_device *pcsidev =3D notifier_to_parallel_csi_device(n= otifier); + struct media_pad *sink =3D &pcsidev->sd.entity.pads[PARALLEL_CSI_PAD_SINK= ]; + + return v4l2_create_fwnode_links_to_pad(sd, sink, 0); +} + +static const struct v4l2_async_notifier_operations parallel_csi_notify_ops= =3D { + .bound =3D parallel_csi_notify_bound, +}; + +static int parallel_csi_async_register(struct parallel_csi_device *pcsidev) +{ + struct v4l2_fwnode_endpoint vep =3D { + .bus_type =3D V4L2_MBUS_PARALLEL, + }; + struct v4l2_async_connection *asd; + struct fwnode_handle *ep; + int ret; + + v4l2_async_subdev_nf_init(&pcsidev->notifier, &pcsidev->sd); + + ep =3D fwnode_graph_get_endpoint_by_id(dev_fwnode(pcsidev->dev), 0, 0, + FWNODE_GRAPH_ENDPOINT_NEXT); + if (!ep) + return -ENOTCONN; + + ret =3D v4l2_fwnode_endpoint_parse(ep, &vep); + if (ret) + goto err_parse; + + asd =3D v4l2_async_nf_add_fwnode_remote(&pcsidev->notifier, ep, + struct v4l2_async_connection); + if (IS_ERR(asd)) { + ret =3D PTR_ERR(asd); + goto err_parse; + } + + fwnode_handle_put(ep); + + pcsidev->notifier.ops =3D ¶llel_csi_notify_ops; + ret =3D v4l2_async_nf_register(&pcsidev->notifier); + if (ret) + return ret; + + return v4l2_async_register_subdev(&pcsidev->sd); + +err_parse: + fwnode_handle_put(ep); + + return ret; +} + +/* -----------------------------------------------------------------------= ------ + * Media entity operations + */ + +static int parallel_csi_link_setup(struct media_entity *entity, + const struct media_pad *local_pad, + const struct media_pad *remote_pad, + u32 flags) +{ + struct v4l2_subdev *sd =3D media_entity_to_v4l2_subdev(entity); + struct parallel_csi_device *pcsidev =3D sd_to_parallel_csi_device(sd); + struct v4l2_subdev *remote_sd; + + dev_dbg(pcsidev->dev, "link setup %s -> %s", remote_pad->entity->name, + local_pad->entity->name); + + /* We only care about the link to the source. */ + if (!(local_pad->flags & MEDIA_PAD_FL_SINK)) + return 0; + + remote_sd =3D media_entity_to_v4l2_subdev(remote_pad->entity); + if (flags & MEDIA_LNK_FL_ENABLED) { + if (pcsidev->source.sd) + return -EBUSY; + + pcsidev->source.sd =3D remote_sd; + pcsidev->source.pad =3D remote_pad; + } else { + pcsidev->source.sd =3D NULL; + pcsidev->source.pad =3D NULL; + } + + return 0; +} + +static const struct media_entity_operations parallel_csi_entity_ops =3D { + .link_setup =3D parallel_csi_link_setup, + .link_validate =3D v4l2_subdev_link_validate, + .get_fwnode_pad =3D v4l2_subdev_get_fwnode_pad_1_to_1, +}; + +static int parallel_csi_set_fmt(struct v4l2_subdev *sd, + struct v4l2_subdev_state *sd_state, + struct v4l2_subdev_format *sdformat) +{ + struct parallel_csi_pix_format const *pcsidev_fmt; + struct parallel_csi_device *pcsidev =3D sd_to_parallel_csi_device(sd); + struct device *dev =3D pcsidev->dev; + struct v4l2_mbus_framefmt *fmt; + unsigned int align; + + /* + * The Parallel csi can't transcode in any way, the source format + * can't be modified. + */ + if (sdformat->pad =3D=3D PARALLEL_CSI_PAD_SOURCE) + return v4l2_subdev_get_fmt(sd, sd_state, sdformat); + + /* + * Validate the media bus code and clamp and align the size. + * + * The total number of bits per line must be a multiple of 8. We thus + * need to align the width for formats that are not multiples of 8 + * bits. + */ + pcsidev_fmt =3D find_parallel_csi_format(sdformat->format.code); + if (!pcsidev_fmt) + pcsidev_fmt =3D ¶llel_csi_formats[0]; + + switch (pcsidev_fmt->width % 8) { + case 0: + align =3D 0; + break; + case 4: + align =3D 1; + break; + case 2: + case 6: + align =3D 2; + break; + default: + /* 1, 3, 5, 7 */ + align =3D 3; + break; + } + + v4l_bound_align_image(&sdformat->format.width, 1, + PARALLEL_CSI_MAX_PIX_WIDTH, align, + &sdformat->format.height, 1, + PARALLEL_CSI_MAX_PIX_HEIGHT, 0, 0); + + fmt =3D v4l2_subdev_state_get_format(sd_state, sdformat->pad); + if (!fmt) + return -EINVAL; + + fmt->code =3D pcsidev_fmt->code; + fmt->width =3D sdformat->format.width; + fmt->height =3D sdformat->format.height; + fmt->field =3D V4L2_FIELD_NONE; + fmt->colorspace =3D sdformat->format.colorspace; + fmt->quantization =3D sdformat->format.quantization; + fmt->xfer_func =3D sdformat->format.xfer_func; + fmt->ycbcr_enc =3D sdformat->format.ycbcr_enc; + + sdformat->format =3D *fmt; + + /* Propagate the format from sink to source. */ + fmt =3D v4l2_subdev_state_get_format(sd_state, PARALLEL_CSI_PAD_SOURCE); + *fmt =3D sdformat->format; + + /* The format on the source pad might change due to unpacking. */ + fmt->code =3D pcsidev_fmt->output; + + dev_dbg(dev, "%s: fmt_code:0x%0x, %dx%d\n", __func__, + fmt->code, fmt->width, fmt->height); + return 0; +} + +static const struct v4l2_mbus_framefmt parallel_csi_default_fmt =3D { + .code =3D PARALLEL_CSI_DEF_MBUS_CODE, + .width =3D PARALLEL_CSI_DEF_PIX_WIDTH, + .height =3D PARALLEL_CSI_DEF_PIX_HEIGHT, + .field =3D V4L2_FIELD_NONE, + .colorspace =3D V4L2_COLORSPACE_SMPTE170M, + .xfer_func =3D V4L2_MAP_XFER_FUNC_DEFAULT(V4L2_COLORSPACE_SMPTE170M), + .ycbcr_enc =3D V4L2_MAP_YCBCR_ENC_DEFAULT(V4L2_COLORSPACE_SMPTE170M), + .quantization =3D V4L2_QUANTIZATION_LIM_RANGE, +}; + +static int parallel_csi_init_state(struct v4l2_subdev *sd, + struct v4l2_subdev_state *sd_state) +{ + struct v4l2_subdev_format fmt =3D { + .pad =3D PARALLEL_CSI_PAD_SINK, + }; + + fmt.format.code =3D parallel_csi_formats[0].code; + fmt.format.width =3D PARALLEL_CSI_DEF_PIX_WIDTH; + fmt.format.height =3D PARALLEL_CSI_DEF_PIX_HEIGHT; + + fmt.format.colorspace =3D V4L2_COLORSPACE_SMPTE170M; + fmt.format.xfer_func =3D + V4L2_MAP_XFER_FUNC_DEFAULT(fmt.format.colorspace); + fmt.format.ycbcr_enc =3D + V4L2_MAP_YCBCR_ENC_DEFAULT(fmt.format.colorspace); + fmt.format.quantization =3D + V4L2_MAP_QUANTIZATION_DEFAULT(false, + fmt.format.colorspace, + fmt.format.ycbcr_enc); + + return parallel_csi_set_fmt(sd, sd_state, &fmt); +} + +static int parallel_csi_s_stream(struct v4l2_subdev *sd, int enable) +{ + struct parallel_csi_device *pcsidev =3D sd_to_parallel_csi_device(sd); + const struct v4l2_mbus_framefmt *format; + const struct parallel_csi_pix_format *pcsidev_fmt; + struct v4l2_subdev_state *state; + int ret; + + if (!enable) { + v4l2_subdev_disable_streams(pcsidev->source.sd, + pcsidev->source.pad->index, BIT(0)); + + parallel_csi_stop_stream(pcsidev); + + pm_runtime_put(pcsidev->dev); + + return 0; + } + + state =3D v4l2_subdev_lock_and_get_active_state(sd); + format =3D v4l2_subdev_state_get_format(state, PARALLEL_CSI_PAD_SINK); + pcsidev_fmt =3D find_parallel_csi_format(format->code); + + ret =3D pm_runtime_resume_and_get(pcsidev->dev); + if (ret < 0) + goto err_unlock; + + parallel_csi_start_stream(pcsidev, format, pcsidev_fmt); + + ret =3D v4l2_subdev_enable_streams(pcsidev->source.sd, + pcsidev->source.pad->index, BIT(0)); + if (ret < 0) + goto err_stop; + + v4l2_subdev_unlock_state(state); + + return 0; + +err_stop: + parallel_csi_stop_stream(pcsidev); + pm_runtime_put(pcsidev->dev); +err_unlock: + v4l2_subdev_unlock_state(state); + return ret; +} + +static int parallel_csi_enum_mbus_code(struct v4l2_subdev *sd, + struct v4l2_subdev_state *sd_state, + struct v4l2_subdev_mbus_code_enum *code) +{ + /* + * The PARALLEL CSI can't transcode in any way, the source format + * is identical to the sink format. + */ + if (code->pad =3D=3D PARALLEL_CSI_PAD_SOURCE) { + struct v4l2_mbus_framefmt *fmt; + + if (code->index > 0) + return -EINVAL; + + fmt =3D v4l2_subdev_state_get_format(sd_state, code->pad); + code->code =3D fmt->code; + return 0; + } + + if (code->pad !=3D PARALLEL_CSI_PAD_SINK) + return -EINVAL; + + if (code->index >=3D ARRAY_SIZE(parallel_csi_formats)) + return -EINVAL; + + code->code =3D parallel_csi_formats[code->index].code; + + return 0; +} + +static int parallel_csi_get_frame_desc(struct v4l2_subdev *sd, + unsigned int pad, + struct v4l2_mbus_frame_desc *fd) +{ + struct v4l2_mbus_frame_desc_entry *entry =3D &fd->entry[0]; + const struct parallel_csi_pix_format *pcsidev_fmt; + const struct v4l2_mbus_framefmt *fmt; + struct v4l2_subdev_state *state; + + if (pad !=3D PARALLEL_CSI_PAD_SOURCE) + return -EINVAL; + + state =3D v4l2_subdev_lock_and_get_active_state(sd); + fmt =3D v4l2_subdev_state_get_format(state, PARALLEL_CSI_PAD_SOURCE); + pcsidev_fmt =3D find_parallel_csi_format(fmt->code); + v4l2_subdev_unlock_state(state); + + if (!pcsidev_fmt) + return -EPIPE; + + fd->type =3D V4L2_MBUS_FRAME_DESC_TYPE_PARALLEL; + fd->num_entries =3D 1; + + entry->flags =3D 0; + entry->pixelcode =3D pcsidev_fmt->code; + + return 0; +} + +static const struct v4l2_subdev_video_ops parallel_csi_video_ops =3D { + .s_stream =3D parallel_csi_s_stream, +}; + +static const struct v4l2_subdev_pad_ops parallel_csi_pad_ops =3D { + .enum_mbus_code =3D parallel_csi_enum_mbus_code, + .get_fmt =3D v4l2_subdev_get_fmt, + .set_fmt =3D parallel_csi_set_fmt, + .get_frame_desc =3D parallel_csi_get_frame_desc, +}; + +static const struct v4l2_subdev_ops parallel_csi_subdev_ops =3D { + .pad =3D ¶llel_csi_pad_ops, + .video =3D ¶llel_csi_video_ops, +}; + +static const struct v4l2_subdev_internal_ops parallel_csi_internal_ops =3D= { + .init_state =3D parallel_csi_init_state, +}; + +static int parallel_csi_clk_get(struct parallel_csi_device *pcsidev) +{ + unsigned int i; + int ret =3D 0; + + for (i =3D 0; i < PCSIDEV_NUM_CLKS; i++) + pcsidev->clks[i].id =3D parallel_csi_clk_id[i]; + + ret =3D devm_clk_bulk_get(pcsidev->dev, PCSIDEV_NUM_CLKS, pcsidev->clks); + + return ret; +} + +/* ---------------------------------------------------------------------- + * Suspend/resume + */ +static int __maybe_unused parallel_csi_runtime_suspend(struct device *dev) +{ + struct v4l2_subdev *sd =3D dev_get_drvdata(dev); + struct parallel_csi_device *pcsidev =3D sd_to_parallel_csi_device(sd); + + clk_bulk_disable_unprepare(PCSIDEV_NUM_CLKS, pcsidev->clks); + + return 0; +} + +static int __maybe_unused parallel_csi_runtime_resume(struct device *dev) +{ + struct v4l2_subdev *sd =3D dev_get_drvdata(dev); + struct parallel_csi_device *pcsidev =3D sd_to_parallel_csi_device(sd); + + return clk_bulk_prepare_enable(PCSIDEV_NUM_CLKS, pcsidev->clks); +} + +static const struct dev_pm_ops parallel_csi_pm_ops =3D { + RUNTIME_PM_OPS(parallel_csi_runtime_suspend, parallel_csi_runtime_resume,= NULL) +}; + +static int parallel_csi_subdev_init(struct parallel_csi_device *pcsidev) +{ + struct v4l2_subdev *sd =3D &pcsidev->sd; + int ret; + + v4l2_subdev_init(sd, ¶llel_csi_subdev_ops); + + sd->internal_ops =3D ¶llel_csi_internal_ops; + sd->owner =3D THIS_MODULE; + snprintf(sd->name, sizeof(sd->name), "parallel-%s", + dev_name(pcsidev->dev)); + + sd->flags |=3D V4L2_SUBDEV_FL_HAS_DEVNODE; + sd->ctrl_handler =3D NULL; + + sd->entity.function =3D MEDIA_ENT_F_VID_IF_BRIDGE; + sd->entity.ops =3D ¶llel_csi_entity_ops; + + sd->dev =3D pcsidev->dev; + + pcsidev->pads[PARALLEL_CSI_PAD_SINK].flags =3D MEDIA_PAD_FL_SINK | MEDIA_= PAD_FL_MUST_CONNECT; + pcsidev->pads[PARALLEL_CSI_PAD_SOURCE].flags =3D MEDIA_PAD_FL_SOURCE | + MEDIA_PAD_FL_MUST_CONNECT; + + ret =3D media_entity_pads_init(&sd->entity, PARALLEL_CSI_PADS_NUM, pcside= v->pads); + if (ret) + return ret; + + ret =3D v4l2_subdev_init_finalize(sd); + if (ret) + media_entity_cleanup(&sd->entity); + + return ret; +} + +static void parallel_csi_cleanup(void *data) +{ + struct parallel_csi_device *pcsidev =3D data; + + v4l2_subdev_cleanup(&pcsidev->sd); + media_entity_cleanup(&pcsidev->sd.entity); + v4l2_async_nf_unregister(&pcsidev->notifier); + v4l2_async_nf_cleanup(&pcsidev->notifier); + v4l2_async_unregister_subdev(&pcsidev->sd); +} + +static int parallel_csi_probe(struct platform_device *pdev) +{ + struct parallel_csi_device *pcsidev; + struct device *dev =3D &pdev->dev; + int ret =3D 0; + + pcsidev =3D devm_kzalloc(dev, sizeof(*pcsidev), GFP_KERNEL); + if (!pcsidev) + return -ENOMEM; + + pcsidev->dev =3D dev; + platform_set_drvdata(pdev, pcsidev); + + pcsidev->pdata =3D of_device_get_match_data(dev); + + pcsidev->regs =3D devm_platform_ioremap_resource(pdev, 0); + if (IS_ERR(pcsidev->regs)) + return dev_err_probe(dev, PTR_ERR(pcsidev->regs), + "Failed to get regs\n"); + + ret =3D parallel_csi_clk_get(pcsidev); + if (ret < 0) + return ret; + + ret =3D parallel_csi_subdev_init(pcsidev); + if (ret < 0) + return ret; + + ret =3D devm_add_action_or_reset(dev, parallel_csi_cleanup, pcsidev); + if (ret) + return ret; + + pcsidev->mode =3D PI_GATE_CLOCK_MODE; + + platform_set_drvdata(pdev, &pcsidev->sd); + + ret =3D parallel_csi_async_register(pcsidev); + if (ret < 0) + return ret; + + pm_runtime_enable(dev); + + return 0; +} + +static void parallel_csi_remove(struct platform_device *pdev) +{ + pm_runtime_disable(&pdev->dev); + pm_runtime_set_suspended(&pdev->dev); +} + +static const struct of_device_id _of_match[] =3D { + {.compatible =3D "fsl,imx8qxp-parallel-csi", .data =3D &imx8qxp_pdata }, + {.compatible =3D "fsl,imx91-parallel-csi", .data =3D &imx91_pdata }, + {.compatible =3D "fsl,imx93-parallel-csi", .data =3D &imx93_pdata }, + { }, +}; + +MODULE_DEVICE_TABLE(of, _of_match); + +static struct platform_driver _driver =3D { + .probe =3D parallel_csi_probe, + .remove =3D parallel_csi_remove, + .driver =3D { + .of_match_table =3D _of_match, + .name =3D "imx-parallel-csi", + .pm =3D pm_ptr(¶llel_csi_pm_ops), + }, +}; + +module_platform_driver(_driver); + +MODULE_DESCRIPTION("i.MX9 Parallel CSI receiver driver"); +MODULE_LICENSE("GPL"); +MODULE_ALIAS("platform:imx-parallel-csi"); --=20 2.34.1 From nobody Wed Oct 8 07:24:27 2025 Received: from DUZPR83CU001.outbound.protection.outlook.com (mail-northeuropeazon11012032.outbound.protection.outlook.com [52.101.66.32]) (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 89B532E92B0; Mon, 30 Jun 2025 22:28:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.66.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1751322522; cv=fail; b=XAXGgSgjServcuyjBt6FFkxNLsiycN5MvKV0GeheKFHc+VLD8DcAwkwxYTrgp6I+M4W5nnYW5O3XBGZWGL4+Fl7OD7jNvOPKv/LN1kfNi/82QNxys7Bpd/ySnHtcY72DIlXOoak5iIf5EY5xoZgEw5dAxUN5FiHHvOG4sv4WbD4= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1751322522; c=relaxed/simple; bh=/YY4fwMQ6Eq/MPEV5VptvAOFeXEDNjliaEkZiON0K1E=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=sPPr2O4zGxJiTs78RuJmtfmG9gU6ccorUanBPz8WrvxuQ1/DlWz4r5zx0sa0RlUUMK86jl8HOdtFFhHMpuZ2XvH3MFiHHrJp6QMh1gbSDp0/Sth0q5JVYfgq8GlMTWve/jX2fQxnCRLP8SI9uvZqBKKiErvbVdAoUwHTpHAoiAE= 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=ix8vXVOs; arc=fail smtp.client-ip=52.101.66.32 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="ix8vXVOs" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=J5I5L0e6AUn6nKmaKDhMLA9osFBHG/K1UBeiGFHbr/SYn/WS/bHw6Bi+Fx3rL1hVs53BXJ3LyCFXH/lHSyE6El9oGxO4XxbBExvBbaKcdXy8CR/8Moi23J4OnxXeZ2ItWtDWyWVAE1fuzeXXMjR9XTSPjUP401/7df3+tjyGYQKvsNIrDQhiZfzn7NrmWlN/7QkLhX1m36qqzqvLT69faP3Q2KgO7M8bAz3JGElh5lgFZmPvdowPyX+JY5pXB2QDkuj4iNUO0QvUOLFhjPxD2Q65GIuKKvHHNehw+fDVcQZLEnicZQO8D3Q8PRb2L9n03xlAtlliO6ZWqanwzTVA5g== 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=0HhsXxwnIsObeDSTpGsow7fV0eiKiZNZuHircRvZZEw=; b=vLGVx31SdfQ4ul2n7Q6aAaYg3QFc55p/5H7TTDGXJj1zt4ukTLWH77+1BjfDWt1vHwtizxiXJEf5GbxQO4yLRzalfD1iRF4X+ISyClImfEDw0XxY6yZfe8lCUeIe0q5bSk7X3lIay77euDf0CXSpZ+7FjrA3muTwjqeM7SBMW0OKfDFOgVmyk83MaTbMvQ7SNMFqRW+IjOZe/8siXfmWGODSDG9FI4IkRAdGH7if5fLr/bgcUjmRSwCJ4+g3YX7F4nYdpYrlCao85d/BMw4BYM3vf0r7JJec0tFIm732K9+Kz30gZyOtZ2MZ3NP6D3KTxs9HvrLuvwwHJG7rhwU8mQ== 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=0HhsXxwnIsObeDSTpGsow7fV0eiKiZNZuHircRvZZEw=; b=ix8vXVOsgZFwbpKV/BMHceTq/DtZpzBuI9L2b2ic6hLWsDNHApLAs3nHURvwvnzcbRFHZ87Qy++tftrOm52A6JY/XZg6yDcrd2aEgeQOU+RzVD5iMaJ0PsphYvsIemPRPgxjlolM01kP/CaUY5pZBGP30m6cdSmRTNIcATN8TVnjvC7Kmxj4/FRss5++Er3v5YcyKvMX83ty3qLE/LxLFXdepw5nA63LBEL7osN/36kQG3CdnFBgHVVDupI29Da7AMmKr+s0jOY7+Bkmw0N+Z2fTTDgcF3Qgcr2qyG3b9wS/E2meLZpyCpqkea6lw9lkxDxEAFm5BlRzc1VLri5phA== 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 PR3PR04MB7451.eurprd04.prod.outlook.com (2603:10a6:102:93::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8880.29; Mon, 30 Jun 2025 22:28:36 +0000 Received: from PAXPR04MB9642.eurprd04.prod.outlook.com ([fe80::9126:a61e:341d:4b06]) by PAXPR04MB9642.eurprd04.prod.outlook.com ([fe80::9126:a61e:341d:4b06%7]) with mapi id 15.20.8880.029; Mon, 30 Jun 2025 22:28:36 +0000 From: Frank Li Date: Mon, 30 Jun 2025 18:28:20 -0400 Subject: [PATCH 4/5] arm64: dts: imx8: add parallel CSI node Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250630-imx8qxp_pcam-v1-4-eccd38d99201@nxp.com> References: <20250630-imx8qxp_pcam-v1-0-eccd38d99201@nxp.com> In-Reply-To: <20250630-imx8qxp_pcam-v1-0-eccd38d99201@nxp.com> To: Laurent Pinchart , Mauro Carvalho Chehab , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Rui Miguel Silva , Martin Kepplinger , Purism Kernel Team , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Philipp Zabel Cc: linux-media@vger.kernel.org, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, Frank Li X-Mailer: b4 0.13-dev-e586c X-Developer-Signature: v=1; a=ed25519-sha256; t=1751322499; l=2055; i=Frank.Li@nxp.com; s=20240130; h=from:subject:message-id; bh=/YY4fwMQ6Eq/MPEV5VptvAOFeXEDNjliaEkZiON0K1E=; b=EQDrsEHI+2euY5jXk5T2t6sdy02Wt1Hov2gNx30GVitiuIbEP9Ciuku9kjZTYcNK2vnCDp5D2 eibxJ4a2LIUBAyYwMpGl/2Xln3WGnkWAwWGUGEocn0QxqE4O6V6SV0a X-Developer-Key: i=Frank.Li@nxp.com; a=ed25519; pk=I0L1sDUfPxpAkRvPKy7MdauTuSENRq+DnA+G4qcS94Q= X-ClientProxiedBy: AM8P251CA0025.EURP251.PROD.OUTLOOK.COM (2603:10a6:20b:21b::30) To PAXPR04MB9642.eurprd04.prod.outlook.com (2603:10a6:102:240::14) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAXPR04MB9642:EE_|PR3PR04MB7451:EE_ X-MS-Office365-Filtering-Correlation-Id: 8eaec5c8-6b89-4d5b-4fd2-08ddb8257488 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|1800799024|7416014|366016|19092799006|52116014|376014|921020|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?NFV4YXVrRm91NVg1bVVmdFpOYVJLUGU1TnMvQjhWRSs2VEVteWluTGpvdGJB?= =?utf-8?B?dGxncS9RclQwcXNiVW4zY1lpZ3U2ZFFjTzF6cDJma2pVQ1RlSUdIKzlZblVS?= =?utf-8?B?dDNJdkV4SmlBTFQrQkN2YWFsWFk5amlHRDVYcTUzemFwN01QSEpjUmFLcmNh?= =?utf-8?B?aW1BMFBlZXdhbjMwa3hweWtnbzRsdEdVWFd4OGJjVlcyTXZYSEZCdi9GWldZ?= =?utf-8?B?QW02U1BESW8yb3ZEUlZQWkp1cVZMUkdIZ0trMlBqUjZjbkdyRkFNY3g3RW9G?= =?utf-8?B?R2pPaTgwOUkydDZJSjBML1puNmNvYmVaZ1hFS1ZsVnNvVGVtdWNxbXJKWXdS?= =?utf-8?B?dmJlaDZzcTFaS2IxM0htSmN5TXREV1E5d2ZwSGVNSDVTamVMUWZmN0djUmIr?= =?utf-8?B?Y3B4OW5RTFZzbjVMd1E3L2pMUTBWSFNxWjVEMERIemRJdWpHL1lZb3FycVBS?= =?utf-8?B?UVkvUnY5NjFtblE1RHpVT291WGM2S013dWdDZWU3alBRQ3ozVkVjNzc0azNz?= =?utf-8?B?bkovbEFMcHlDbkdNUHBKVlFkL0YzeTJBOC9yRVRCbTBmb2xiUEVLdEdYOXI5?= =?utf-8?B?OHF6d00xNVYwMFJPY2c0c1c1UjZXcFlnVXF2ZnkwV2dGNExJZTY3WjgrcWF4?= =?utf-8?B?SFd2VmNIRERRUFRCdzVNY3l2azk5Q1hDSnpROGFjWDhoNWUxQUJYUzdOUFIy?= =?utf-8?B?bXFyMURHVDhVZkt5Z2huYUN2WVlQNHR6UGtobEd4bWhUTWZQRWlXODZ1bFE0?= =?utf-8?B?MDhUSlh1K0VDcXh2NVMvZGNieEZyZ08zb1pibDlmOXlvcWxNaW80SHJ3Nkps?= =?utf-8?B?NUdaMlZsMUdqS3VmLzRmWm42WHJQdXRhZ1VDVGlIajVkRENWcnZ6VEZjR3FJ?= =?utf-8?B?eUdta2FaT29EcVZ4akt0WlhNWHBzcDFYaTVrSzNRZ1R3dFhqZVp0YlVJZ2Ja?= =?utf-8?B?eWwydExYSWZRN0tYTk5oMWZINDRpRXl2WStPeG5kZTJ2Mm9TWGxJN0tXYlJH?= =?utf-8?B?eFY0NFNQTGtWWVBjTTNVRHFSUzhMV1RReXl0OTlZbnZTSkNtMmpNT3FKN2VR?= =?utf-8?B?WnBEb2FldEw5U29RWkN5NVArK1RuZkV2MHJzNWxMSm9CWnB2WmRGOTZEVCtQ?= =?utf-8?B?T0ZuMm1SOXlWdzJ0dFRaek1ZbTY4T09XdnNuNnEyZ3MzNDNSeCtUUVZXWGNa?= =?utf-8?B?L2NwbkZtb050ZlNmUmFjTjVjRENFdU5yKytWM0gweDB1LzYwL1dUdzNIcnlR?= =?utf-8?B?endXclU5cWZpRkxSSDAzUTBTbXA0WVhnaGVXcjlhSTliQjBneHpIelZqa0RK?= =?utf-8?B?VW1YU0ZHTGhUUk8xSkNQengxcktLODNQclE0QVdpYU5SLzlwV2tIendtWGhy?= =?utf-8?B?ZmtlK1pueUw4TTY2cFJzU1hhZTdDSk1SdUw0eWZPN0VURHhKWmhNU1hrNlRx?= =?utf-8?B?NzMxOTczSEdNNlQ3eUpDWTRyOHIweEVaQkh0YUNZdjN6SFdnZVA1YllMQjJX?= =?utf-8?B?aTdhalhmQnB2bFJuWjkwUSsvZm8vQ0NTS2ZVWEJmOHM5YkgxZk5yMFFUbUs2?= =?utf-8?B?VHQrNE1BU2grWE1QOXlZUGpENzUyNXlSUUJzdDZFbndCc3F4NmdWZ2VHMXEv?= =?utf-8?B?YkZYYjExcUpHNDJjZ3A3b1hhL3BYemFjMVp0eXdQRFFTY1JWR1J1aVNNVEtW?= =?utf-8?B?QUNlTit3OHNHaEQrcmlBQnltaGhpNGpNamg5MXJBcW1IQ3h3Vk5GOTdLdVRw?= =?utf-8?B?YUdGQ1BBTzFXUHJDTG1GN2k4cmVhSlRVc1poRXU1dGx1bTZtTHhxenIvNytU?= =?utf-8?B?NjRzdEQ3ZmZpV3JxY2RVejdXMDEvK1pGelN6Z0J2MHkzb2dFWGJXczI3VFJK?= =?utf-8?B?U2pHS0U4Zy9CQktJTk5YU0t2UHI3SWhpMVY4dEV5bFlPN1FiVDRKUzdGM0dy?= =?utf-8?B?M095YzcrRThzVXFXY0piZUtyZDRpMWxGcWJkVSttbkIyeW9CeTJFQ2tlVHdW?= =?utf-8?Q?KLdrHPBIPe02hdY+5WHKHIr5Dk/zzg=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)(1800799024)(7416014)(366016)(19092799006)(52116014)(376014)(921020)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?TTJXRW1sNXVacTY1akdYNHhZakNPaHFQRVVNbml2ZWhiZ3pZd0VzYXlsNlJX?= =?utf-8?B?Yk8yWER3eDRPdnpwclF0cHFubHpjN2pVMm85d1hnTmN3VWNFeVl2QWphak1s?= =?utf-8?B?dnJ5MkZLQUw1azcvQTlPbzRONVJNVk8waERvRXdlcnF5Q291azQ1QkRmd3N5?= =?utf-8?B?WkhpM3FvTmJpZmFOODZIdVpCWjV0L0s3WmJhdVBKdmhQME5RZWROZndxV1lx?= =?utf-8?B?aWMyMEJPdmtwdlNVTGhuZS96a3c4bnNnTS9yeHdPNXdlN0dFWmdQMTVWTXN5?= =?utf-8?B?WTlqeGxpN1Ywd1lhRENaNGxxYjI0WTBtV2ZpOFVHOUZOVlJITk92bWhPMjJi?= =?utf-8?B?U1JWL2lHRit3RDB1V2EycWY0VWU1Y0x4ak1EN0ZUdlJZZnhWYWc5L0hXcDhE?= =?utf-8?B?Y01aOTBtdkdSMm83dzJsVDlOdE93dVZ5SmhoL1lhY29HUk9hQ2Y2Tlk1NUd1?= =?utf-8?B?R1hjVDFGNWc1ZVhCQTVVcVY1amxHaDlLMC9DTXZ6dkFSTnFsNmZEZmRzSk1t?= =?utf-8?B?Lys5VTlOZm0yR21jbFdHS2sweGZRajVsUEQ2cmFyOVJBRGw3S3EwOFZYT05k?= =?utf-8?B?ZEpQT3hWMDUrVmVQVHdrWXZGRlFjUXZyU0Vra3haZlZjUTZveFB6UDFISFdD?= =?utf-8?B?QXF5UlZYcWxySzFyRDdxZVBvM0U0cTFLOG0yZnd0WWNVK0tWcjBBZndoejNy?= =?utf-8?B?M3MzVkFRMy9ESm96YjI0Tm9RSVlITWxwcGpodWFsUGdoa2Vqb09EWGJwYi9R?= =?utf-8?B?UElxQ0dqT2hwTUprS1FQVlh3aFg5eVl1UVNJTXdEakZwMjlUdkE0TUpOMGd2?= =?utf-8?B?UXhnSFdPYlVmZ1RGYlVDdUxXbTF6WEFUVDZOd1dNSm1QL3NCbDFXTjJFeUtO?= =?utf-8?B?Z2JHRWQ2bG80UEVtSUFiU2ROU2hsa0xhcUo4VHFtRVlCUnFmWjBaN0NGK1ZG?= =?utf-8?B?cWhGSGU5YVNmcjhxb1dDaFBvMi9CMENkL1A3NEVHQ2VrYXdRb0JLWFFMV3pz?= =?utf-8?B?V3pLMFA5QWNPMHdPSVlXcmFjWFk1VEhrT2tscEVBb3FVQkVEZGRIeGRiclpu?= =?utf-8?B?N0VCSFdCS3Jtdy81V2g5NDE3R2dmMTU3eFltMVoybVdBL0J3Skp2UENUYkFK?= =?utf-8?B?Qmt5VHV2elNkRFkvcDRFTTJZakVrd3g4cWZ4MkVzejFJbGl3SGp4OGpZMTJ4?= =?utf-8?B?cjdadG5iNDFyTkQ0ZGgwcWJqY29ZdUNCZ1pOM1dLdGt2TTVOVU9mdEhpTXV0?= =?utf-8?B?SlQwcWFiSFk2bTRnWDlkMXNIeWJBbERaQjdBWGs2MjNBNjNUNUg3b3c5d3FN?= =?utf-8?B?dGtva1dqS1MxL2RHUjBrRzZkUUN5UDRlTkZzby9PVndZZzNHcVRhKzgxczV0?= =?utf-8?B?MXVKZDMyaVF3ZEJyMndRRXVVVFA2b3RtaVZObGpWQVFpRXVmMTJ1RUFhYnZ4?= =?utf-8?B?SnV6MkpOSEJJK0grQmVBek10UGFmRFhyeHVEbTY0Q2hKVnJqSmNhNTNPSmdI?= =?utf-8?B?S29iQU5pc3NtWC8rNVBzbEFlejAvdkJQcFZ2YnJkeEhybUxXWUdqTUpveC93?= =?utf-8?B?TENkRGhZMzl6emlZU0pNdUZNNUZ6ZTNEdlpTdWFQQVpWOUhiZksyTXl1REty?= =?utf-8?B?ZUFlUFFpOGdhUWZmaCtGMktKWWE4SHN5bzV5bzU4eGVEUkxQQ21BMDBIOHla?= =?utf-8?B?TlV6MnhKYmU0L0huMUlZeEdRSm0zSjkvYXcwWU5DWnhSR1ZxQy9HUGZlRnll?= =?utf-8?B?S2NXNTl3UGx1R2lETjZTOTNYMGtQY05iNkZKeThtYnhSSUszWElKeTg4NFdX?= =?utf-8?B?WWRob2EzemY5UDVNU3p0ckYyVmdpTTRJRkxHRjdibVd1SDlFQ055bnY1cFd1?= =?utf-8?B?ZnhBTFhTc0F6RWJKS05pL3U4UmlWV1ZmY01TWlExTWVsM1czaEJiMWl3dEtR?= =?utf-8?B?S1Q3U01CY21nbkZmOFBQT1JGeWQrWFpLcW5DcThWSHhDWU1Bd1ZjbDFRaEZK?= =?utf-8?B?blRlR0EycXFUdmtUOWxiSmd3aUphcEdvekswYk5IcUpZaGxjZlkzTGVOWXZ6?= =?utf-8?B?MHBrV1RmckllenJoc2txaTFzNXhKM3dKUytDbkFHVjJkN3lmMmlHUEhxbmpQ?= =?utf-8?Q?RZH4=3D?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8eaec5c8-6b89-4d5b-4fd2-08ddb8257488 X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB9642.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Jun 2025 22:28:36.6360 (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: GSNuiQtEDUxh1PIfp2WzlA0JMiGckyccrfXcNs89Yo13fw+SstGB0Nd30OwiDNuJvcRDdK41P6gZDtA98lsJzQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR3PR04MB7451 Add parallel CSI nodes. Signed-off-by: Frank Li --- arch/arm64/boot/dts/freescale/imx8-ss-img.dtsi | 13 +++++++++++ arch/arm64/boot/dts/freescale/imx8qxp-ss-img.dtsi | 27 +++++++++++++++++++= ++++ 2 files changed, 40 insertions(+) diff --git a/arch/arm64/boot/dts/freescale/imx8-ss-img.dtsi b/arch/arm64/bo= ot/dts/freescale/imx8-ss-img.dtsi index 2cf0f7208350a..9654975cfd142 100644 --- a/arch/arm64/boot/dts/freescale/imx8-ss-img.dtsi +++ b/arch/arm64/boot/dts/freescale/imx8-ss-img.dtsi @@ -224,6 +224,19 @@ irqsteer_parallel: irqsteer@58260000 { status =3D "disabled"; }; =20 + parallel_csi: csi@58261000 { + compatible =3D "fsl,imx8qxp-parallel-csi"; + reg =3D <0x58261000 0x1000>; + clocks =3D <&pi0_pxl_lpcg IMX_LPCG_CLK_0>, + <&pi0_ipg_lpcg IMX_LPCG_CLK_4>; + clock-names =3D "pixel", "ipg"; + assigned-clocks =3D <&clk IMX_SC_R_PI_0 IMX_SC_PM_CLK_PER>; + assigned-clock-parents =3D <&clk IMX_SC_R_PI_0_PLL IMX_SC_PM_CLK_PLL>; + assigned-clock-rates =3D <160000000>; + power-domains =3D <&pd IMX_SC_R_PI_0>; + status =3D "disabled"; + }; + pi0_ipg_lpcg: clock-controller@58263004 { compatible =3D "fsl,imx8qxp-lpcg"; reg =3D <0x58263004 0x4>; diff --git a/arch/arm64/boot/dts/freescale/imx8qxp-ss-img.dtsi b/arch/arm64= /boot/dts/freescale/imx8qxp-ss-img.dtsi index 50015f8dd4e43..60aa43c45d15c 100644 --- a/arch/arm64/boot/dts/freescale/imx8qxp-ss-img.dtsi +++ b/arch/arm64/boot/dts/freescale/imx8qxp-ss-img.dtsi @@ -62,6 +62,14 @@ isi_in_2: endpoint { remote-endpoint =3D <&mipi_csi0_out>; }; }; + + port@4 { + reg =3D <4>; + + isi_in_4: endpoint { + remote-endpoint =3D <¶llel_csi_out>; + }; + }; }; }; =20 @@ -94,3 +102,22 @@ &jpegenc { &mipi_csi_1 { status =3D "disabled"; }; + +¶llel_csi { + ports { + #address-cells =3D <1>; + #size-cells =3D <0>; + + port@0 { + reg =3D <0>; + }; + + port@1 { + reg =3D <1>; + + parallel_csi_out: endpoint { + remote-endpoint =3D <&isi_in_4>; + }; + }; + }; +}; --=20 2.34.1 From nobody Wed Oct 8 07:24:27 2025 Received: from AM0PR83CU005.outbound.protection.outlook.com (mail-westeuropeazon11010016.outbound.protection.outlook.com [52.101.69.16]) (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 CCC382E9EAE; Mon, 30 Jun 2025 22:28:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.69.16 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1751322524; cv=fail; b=jL/KW4by91JEujBcPK2TebQyqkGwHSXnFUgOFTgf21CjAOm9NCI1RnR3DAR5QcPGOR2z8l02zxh2LI0SCv/xVNdbVi/aLjHdis08ow2HrmG5Ad5N4kidyOB46fEdKeseY1R8b3DcV4ZDU90ormlDvyULIHcTUx6uLbV5XCjWP9Q= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1751322524; c=relaxed/simple; bh=8yYGKQZCIfPEuuzfEYYFQfwYrfJ3U0wW5TwZwwA4lFI=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=uejEXmDj9OCHIzPbdti+mRFLt4Ljy+8vakuapZXrrTdIZQxme7cLhoJbLvj4Bj7xmbLqo3UIj/6jizJM9Rz3ImJlvZKqsduqai2J/R5LyDBEOH64RSTO/KcGeIPZzXvMoKRmLoOAQx7k2mKFj1v+w9aF1Wk4hNnERi4vI8faO3k= 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=BaxNAqYa; arc=fail smtp.client-ip=52.101.69.16 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="BaxNAqYa" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=qcZOmf4a/Eb9KgiMT42zij/72SXESZOyxn5rmuupL8UnjbT3NXcxN2I7aTbFAUM5/DoTtSR9YMGK9A0GJbymBlSN81U/7JAdSR22FKMjFn0U2d9MHrkYcIIMLyzi61HXIZLLpTUiPOW/bBneCz7pBjiRXkP+HKaVXKSg/9YUBYicTnK4AMPAVIpoTqp3luDGPOxEJZewybQVw/PS8xvwHYygr37QTtzVpBBCwAFkw4rLCS8jo/wdva1vLcbW7UadbwmGxJdlsarrWzfVM+QAu18a6W3MH1JDqoARXTTi1owsZfWiUhKzJHj9JoiDvXFtBL+g5/aqrA8dlA6ttxD/cw== 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=f10Q7dk4VZwqftpRTHAXgG56nYo341pkr4iU0/z9CKY=; b=vrei5UZ9h2tOg7s8jo4rHudmSCtuHrcfbAPjshsvj2uYb3570BpA3BhwMpiOoKjBesiSFMh5WlRsiCzzCNcG30j+NgymSqPV506y91aa8SsQqaIhYnRAKjexLtST+CjkQLnNH3Mj4IE+1Gzs7UA21wYyX7uUxhknPY+jAOjTEPtCYJ3NSQz6QRQyDGqgT8VeH2JvFpA41zbNEFUoij3Op9Ean5W/RgOHXeJFGw4RqdsqxD2kiXVYDwDBQgvh7G7/ZvB+O3y50ZodS3ZKVB7DHgHoadBcRYpTnQfFT5TBUH3lheQQcjRUHAWo2DEMqUngHbZr14t7BuqTbSk+cFGjaw== 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=f10Q7dk4VZwqftpRTHAXgG56nYo341pkr4iU0/z9CKY=; b=BaxNAqYaKFF+1HLgd8WX4IFXOAd70khhxA+yJO6KpFI/IwluZRvvMQXwdfULlpy4bnh7PyM1uRmBCSe/8bgg8muQhpm4xJTXV/Y6WMbSil3FoapMKZBSr8tsTtl4bapyO1QuGr4WkR3UGJ3diSHQBXX2CkTfyifnye6x95IEiicqd4L7CxfTZ+cG5cOEPY9EVE2HtVc2GgcDAoRTCrxyCHcrEZR/EKHh7+VgpuZ4eTyYZ7/CXr8le4gP5LfNOU+CTd4SX0gWpw4FxK2LPFFfWdRaENCSgI3uV5pc2pAt1U0iJDuNxRdBbTf8xf1mdzJEQehO1svWo1ehry1bKQ4AOQ== 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 AM7PR04MB7078.eurprd04.prod.outlook.com (2603:10a6:20b:121::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8880.26; Mon, 30 Jun 2025 22:28:40 +0000 Received: from PAXPR04MB9642.eurprd04.prod.outlook.com ([fe80::9126:a61e:341d:4b06]) by PAXPR04MB9642.eurprd04.prod.outlook.com ([fe80::9126:a61e:341d:4b06%7]) with mapi id 15.20.8880.029; Mon, 30 Jun 2025 22:28:39 +0000 From: Frank Li Date: Mon, 30 Jun 2025 18:28:21 -0400 Subject: [PATCH 5/5] arm64: dts: imx8qxp-mek: add parallel ov5640 camera support Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250630-imx8qxp_pcam-v1-5-eccd38d99201@nxp.com> References: <20250630-imx8qxp_pcam-v1-0-eccd38d99201@nxp.com> In-Reply-To: <20250630-imx8qxp_pcam-v1-0-eccd38d99201@nxp.com> To: Laurent Pinchart , Mauro Carvalho Chehab , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Rui Miguel Silva , Martin Kepplinger , Purism Kernel Team , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Philipp Zabel Cc: linux-media@vger.kernel.org, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, Frank Li X-Mailer: b4 0.13-dev-e586c X-Developer-Signature: v=1; a=ed25519-sha256; t=1751322499; l=4134; i=Frank.Li@nxp.com; s=20240130; h=from:subject:message-id; bh=8yYGKQZCIfPEuuzfEYYFQfwYrfJ3U0wW5TwZwwA4lFI=; b=gMWfFEu4rexSmChlk74efTZhX5OG5/iGB+D0XikLF+zBTT7OVASB5Sc4sN4dRicxfuPUG5Vjc bPt43fVG+ktCnINbpPhcrQJITNhKRxToTj1qCh8dzOMRXOF6XzCsTcU X-Developer-Key: i=Frank.Li@nxp.com; a=ed25519; pk=I0L1sDUfPxpAkRvPKy7MdauTuSENRq+DnA+G4qcS94Q= X-ClientProxiedBy: AM8P251CA0025.EURP251.PROD.OUTLOOK.COM (2603:10a6:20b:21b::30) To PAXPR04MB9642.eurprd04.prod.outlook.com (2603:10a6:102:240::14) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAXPR04MB9642:EE_|AM7PR04MB7078:EE_ X-MS-Office365-Filtering-Correlation-Id: ee77160b-0147-4bc7-b942-08ddb8257669 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|19092799006|38350700014|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?VGFMZStWS0ZTOWNndDhDNG95WkxvUEdwYW1uck1kenBjcERkRVJ3OCtIVmNm?= =?utf-8?B?enVjVUFLYUdJbW9uT2VJcHFEQjhGUFNFaUN6V0w3dDQ0K3MreEV2a1RuRzl0?= =?utf-8?B?cjNIa0tLa0dFc0c1S2hMbGIyWnRZZXdZVmw2Z1B1d1FCRlZiMHdJeVF4SzhH?= =?utf-8?B?N1IyN0pCZkQyNktpRjZxTi9wb1pzOVZ3SXhyY0E1b3ZiS2QvR2dVU2JxVkdT?= =?utf-8?B?enRWSVBlZkt1bXZyLytLZ3FuTkJKa2dVL0pYaGw5VzJ1SDNPYU8yUU9sdXN1?= =?utf-8?B?Z2VwMDZiVFVVelRjUkJzK3lWditDR0pSd0doblVNL2JKV3ZDL095Wmx4eGhS?= =?utf-8?B?Q0dRalExaHErb3RNYlFnZm9ZL05BKzlPSE05elN2MFQ5RlA3VERGT082eFA5?= =?utf-8?B?bkgwQjFLSmhhUElUZGEzZUxwNjVMRjRURG9wNDh0UDJjazlXdjJvNDVZelJF?= =?utf-8?B?NXdEV0wzZjVseHQrYVU3SHZmald6Q21oNVFvVUZkMEFXVzY4bGFKV3lFRnEv?= =?utf-8?B?bkNveEhSWGpsNFRja3lFSzlNTmZ5K1NlTWk5bzJnMlRtemZKYnE5RUxoMjBn?= =?utf-8?B?YnV3N2lqZlZZMmZ5bjU3L1BKQ2VXSUlqR3AzdDB3SThDWU5UNUExcGcvZG0y?= =?utf-8?B?TGtsSy9yOWZRejVuaHNkZjZ0VFF6Qml2WFJ3L1YvVEhoM1FldnZBMXhsaHpy?= =?utf-8?B?K3I4L1BKQXZxQkUwTnJRK2FnMmdJNlVJc0xSMlk5LzNab0t3d29VZVRSZy9B?= =?utf-8?B?L2N6YWNMZDVLVDlnYU1ZR0tJYVo5eHVQYklTSXVSSUpyVGpMUVJIZEF6eUdE?= =?utf-8?B?bTlVc2xvZXhlTUdTVHp6SEpBcEd3QUdwMUV2R1U2N0ZtWlpDOGZ1R1JRL3ZQ?= =?utf-8?B?UUN5TWNuY2FVajdBak5TMGRHMTlxUVlrT2tZQkVtbFcwekF4emJsUTEzUzJw?= =?utf-8?B?WUNTMnpxWlRHRDR3dWhYcGRUUFZTMFRjWTRQZnZmUTZXd2xJNTRUM1Zwbzdt?= =?utf-8?B?aVBHZ3dHY2htYmYvQU9zTkt1cXo3YWFINUhkY2xRd2hJRTd6RTZqQmwzOHg5?= =?utf-8?B?WEpzWUIvMVJmT0J3VHNBRTg0MmpJdHFNVWpTRGZBZDIxTnZMUE5XbXpxRHFG?= =?utf-8?B?WGt4VVkyUkxTcG9wZ1JDblFrWGNJblVxWGFZN3RUSUV0MmJlSU5TRzNzYmtB?= =?utf-8?B?VDNaT2RkbmN3VlZuNTdkMms2S0d5eCtvQk5qMW9vYlpCaWltSmhDaTFyMU9z?= =?utf-8?B?VC9Jek5yUU44aCs0ckNib0djbktzUkVQMlhDZThYRGVLbkoxWHU1akdrYXho?= =?utf-8?B?SExVZHpzMTlaY20yeTVXVW1td0ZETTVtZE9pOE44M3ArbEM0ZmtwQnRINGU3?= =?utf-8?B?aTZXWGY3Tjd3TGg1UWR3cGM2WEVUUVQzTHg4QXhXS3hYYm1TYUQ4M1JhdDFx?= =?utf-8?B?K1Rib2hiNC9qbUU1SmlkM1V6T2FWSEFYWDBXVE1qZFFVd1NURTRnTjVodTJu?= =?utf-8?B?c2JKcTVIcXVzUTNmT3pzTWVQaVJWdm9ZSVJyREdiMVR5K2JqcVlJVFRsbm9D?= =?utf-8?B?MEJzb2EyM3VYdDNJTC9hZ3B6azg1VzBnUnJjeUM0MHVGMitwd2JNa2pLcWR0?= =?utf-8?B?SjdaY3VlZVF5blk4QTJONUllNS9jYjdWb2txclhCSXFHVVQ5Nk1YTnFObWNH?= =?utf-8?B?MUtJOGlnY25iOXc1VkwwL0ZsR2M4QnBtRThsV09XQVQ4TEVRWTEyczBnYndo?= =?utf-8?B?Y01vcS9DRFZieFdZYnlEbVMrYTV2VFZWWHpaMmVOeFdKRWVrdjBnZFFjeDJh?= =?utf-8?B?Q2owUklJMndEVUQzaFd1OGpodkRnOTR5TWxYc0tpbkdMWjVwUmxxVEhYcDZY?= =?utf-8?B?bVVHanNhNnZMZFUxUHVsMFMyakY3V2lYVUgzY0dIUDFwTnFJQmJWQXd5SFV3?= =?utf-8?B?bGk3dnU2YzlXdTJhNWFHT3FkWWtQKzVSb2xhc0YyaHYwQjQ4L1dCbnh6UlFH?= =?utf-8?Q?ugTXUSj15fPT6FJOv530HdMlokGhXU=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)(19092799006)(38350700014)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?Nmd6K0Nza2VySlpzM2swOEo4OGxLWXdqemZlOENkS2NuTXJQM1hDTTNydzh2?= =?utf-8?B?cUNpVUZOZFd2K1RSM2drVWVWRDdFcklOVE9QUzZHdUlmU3U2STJOTEdHSFBt?= =?utf-8?B?SmozdzQyaWdISWd0T0Yzd00rbklkWi84SXNLaGdTc2E5Y1ROUFhCNGVFbGI2?= =?utf-8?B?U3dCVXhZVnMzVndnKzFaZ3hRUHc3c213cUJ0TE91ZlE5ZnoxOHM3dEtzVlZo?= =?utf-8?B?cVlvQXZDdzNJVGZWNmIxb2QrWmM0RFF6c0VlRU1EcXlvYUkxdEJtWm5OUjAz?= =?utf-8?B?NEdLam1MR09QVUhrUTVwRXR6SzdGTHM3Z1I4NXRHejY0YWZqejMwbEppTFJM?= =?utf-8?B?WWdzSnNHTVFkVHhGTktkbHBOVHlqeEkxZmxqYlZ0NEhsMFdTWHhxeGhGbVFO?= =?utf-8?B?d1RuNjl5eXVPbWZoQkRqUlBGaTVOOHM4R0l5QmFoRHJoQ082VGtUTVJlQ0ZW?= =?utf-8?B?ZFlkTTRYRHVlYzU4SEhIRFBsUlZaTWN5Q1cxOTE5WjdudCtRZi9KNjQyQ2Mw?= =?utf-8?B?VG94TDJzd2FnWGdUbUR3RFg4Yml0Y2lJajFobTZZT3hDRCtIM1grQXVxMHBj?= =?utf-8?B?N1ViaDl3b2pnU2dMUTFPOE50OXFXN2wzVUxZdFluM1hIN0l6WUMrT3U0SnJa?= =?utf-8?B?TnJSNmJaUVdhVnkvT0tJN210dWJvT29KcS8veEpCYnVMWDUyWDVXcno1Vyth?= =?utf-8?B?RnlXVThyMWNUMHdUaDZvSkFuL2VmNUZnNElFOCtwaGNBU2krTFVBTi9oWTdy?= =?utf-8?B?RVlGOGRZaUt0emJXajlqM3BWMnhZMnh1Q1crK253Sis2TkRxTnJ0S3NnUVo4?= =?utf-8?B?RnBuYVhyTEhReThRSi9BTGMvK2pmcG9nMTNpRDVyaWlwOEMvS0hVOSt2SlNH?= =?utf-8?B?NDJEc05CTTB0dGFna2NqaStzOGQzb2UyZmZhNjZPY3JlYzNWZ09oK3ZHSTVT?= =?utf-8?B?d3JvNld4b20zRHkyb09WelFyTGtteU5UVnpxbmhXZHhWY0l1UkEvMEJwMm9Y?= =?utf-8?B?bFo3S2JjL2JUeU92SzlLdzVrQjlITWtMSzl5QmpRcm9hKytacHdzaXN1RW9Z?= =?utf-8?B?M3VMeVI0NEIvQ1Z1ZGxLeVlkbGJjdEdRU2VtcnpMczlaa3NXc1dMSGZBYWRj?= =?utf-8?B?MEF3M3NEdTlvNDNJQkwxNU84L0sxWlZhazR2THRoUEtSNU54eTRMUnJMUXhp?= =?utf-8?B?YksvMWZYRFhEZVVDOGZYVjRrYjI3YWY2VmdHbURSWW1saUVDVXhEa1RFemRu?= =?utf-8?B?MEh2OFpkYnNhWFdqM0djOW1neHQ4TW90M0FrenFHV01EcHpnU3VZb2RWeGJp?= =?utf-8?B?MXJaelU5ZDA0SnJ3OEdEbTNjdXdlYzlVM0wzMWU4RWZRekZXQlYyRXQycXpD?= =?utf-8?B?U3lmMVBrM25tM28zK2RTbFZNNGt1c25teEtHNjFwZC95dzVBY3R6NHpYSDBj?= =?utf-8?B?SEtmcVRyYVk4eHZuREhzTmRXMjFzYXJrbkFkY0ladWRseU53amtSV253ZVJ2?= =?utf-8?B?a3RhaDZwREgwK3V4THB1Z3FnVlJHUm4rZ3FRcXVuMlVmdDdVYTV3c3FxWHdU?= =?utf-8?B?VlgyQUpKZmttcFB0VnpYQlZtVVFQSUN5Z1dIS29pU0hNTEJ5QTBHc2cyVkpP?= =?utf-8?B?ZzJwZlFGREVrRXRudzZPSUV1K1VuM3RqM0FIUGk0WDV4eUl1L3RoUnh4NC9Y?= =?utf-8?B?dzRIeHhwK2lack5DZERtTGFtYjAvTktjVHJ1a3NoRnhuVFNlcmpYVyt0eVlS?= =?utf-8?B?K05YUWdjaXh4VURnZEltMURMRnMyclZsS3p4SjFQNEhka3VSRGpnMDFjY0N4?= =?utf-8?B?UTRCV0RCNFNBTkhQeFY4YkxtQ1kzaGljVGsyRkoxbEwzWlRGbk9WOWtDN1lz?= =?utf-8?B?YVhNUmtOTVRMdkN2VWt2VXN4Y2pTL21VdHRweDZ5MFZaL3pmYzh1WjJOUkZW?= =?utf-8?B?REVXRzk2bGptVTMzS0RrRGRLOVNUWkRCSFd1WjdZa2Z5aDh6Y0IyZXdNZDR1?= =?utf-8?B?L3ViTU11Y0xEQkRZTXd5N2R3RWc1azlmcGhPY3UvRTZSRE9kM01WSlk2d241?= =?utf-8?B?QXVQMzlxYUNaRkJzOGpBVmFzWDlGTk5kQVhUbTVldWR3cHYxbjRsM0luOUhO?= =?utf-8?Q?IIas=3D?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: ee77160b-0147-4bc7-b942-08ddb8257669 X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB9642.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Jun 2025 22:28:39.8629 (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: Mw5w2/zb8upJLrPtcOstKpi+1hbKHzDr2VG1eHy8ZEhvusXW3vKvMfzxN8uhw0UX9qFymzLJjPPsplxVEvarJQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM7PR04MB7078 Add parallel ov5640 nodes in imx8qxp-mek and create overlay file to enable it because it can work at two mode: MIPI and parallel mode. Signed-off-by: Frank Li --- arch/arm64/boot/dts/freescale/Makefile | 3 ++ arch/arm64/boot/dts/freescale/imx8qxp-mek.dts | 37 +++++++++++++++++++ .../dts/freescale/imx8x-mek-ov5640-parallel.dtso | 43 ++++++++++++++++++= ++++ 3 files changed, 83 insertions(+) diff --git a/arch/arm64/boot/dts/freescale/Makefile b/arch/arm64/boot/dts/f= reescale/Makefile index 02ef35578dbc7..a9fb11ccd3dea 100644 --- a/arch/arm64/boot/dts/freescale/Makefile +++ b/arch/arm64/boot/dts/freescale/Makefile @@ -330,6 +330,9 @@ dtb-$(CONFIG_ARCH_MXC) +=3D imx8qxp-mek-pcie-ep.dtb imx8qxp-mek-ov5640-csi-dtbs :=3D imx8qxp-mek.dtb imx8qxp-mek-ov5640-csi.dt= bo dtb-${CONFIG_ARCH_MXC} +=3D imx8qxp-mek-ov5640-csi.dtb =20 +imx8qxp-mek-ov5640-parallel-dtbs :=3D imx8qxp-mek.dtb imx8x-mek-ov5640-par= allel.dtbo +dtb-${CONFIG_ARCH_MXC} +=3D imx8qxp-mek-ov5640-parallel.dtb + dtb-$(CONFIG_ARCH_MXC) +=3D imx8qxp-tqma8xqp-mba8xx.dtb dtb-$(CONFIG_ARCH_MXC) +=3D imx8qxp-tqma8xqps-mb-smarc-2.dtb dtb-$(CONFIG_ARCH_MXC) +=3D imx8ulp-evk.dtb diff --git a/arch/arm64/boot/dts/freescale/imx8qxp-mek.dts b/arch/arm64/boo= t/dts/freescale/imx8qxp-mek.dts index c95cb8acc360a..09eb85a9759e2 100644 --- a/arch/arm64/boot/dts/freescale/imx8qxp-mek.dts +++ b/arch/arm64/boot/dts/freescale/imx8qxp-mek.dts @@ -487,6 +487,23 @@ pca6416: gpio@20 { #gpio-cells =3D <2>; }; =20 + ov5640_pi: camera@3c { + compatible =3D "ovti,ov5640"; + reg =3D <0x3c>; + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_parallel_csi>; + clocks =3D <&pi0_misc_lpcg IMX_LPCG_CLK_0>; + assigned-clocks =3D <&pi0_misc_lpcg IMX_LPCG_CLK_0>; + assigned-clock-rates =3D <24000000>; + clock-names =3D "xclk"; + powerdown-gpios =3D <&lsio_gpio3 2 GPIO_ACTIVE_HIGH>; + reset-gpios =3D <&lsio_gpio3 3 GPIO_ACTIVE_LOW>; + AVDD-supply =3D <®_2v8>; + DVDD-supply =3D <®_1v5>; + DOVDD-supply =3D <®_1v8>; + status =3D "disabled"; /* Overlay enable it */ + }; + cs42888: audio-codec@48 { compatible =3D "cirrus,cs42888"; reg =3D <0x48>; @@ -865,6 +882,26 @@ IMX8QXP_MIPI_CSI0_MCLK_OUT_MIPI_CSI0_ACM_MCLK_OUT 0xC0= 000041 >; }; =20 + pinctrl_parallel_csi: parallelcsigrp { + fsl,pins =3D < + IMX8QXP_CSI_D00_CI_PI_D02 0xc0000041 + IMX8QXP_CSI_D01_CI_PI_D03 0xc0000041 + IMX8QXP_CSI_D02_CI_PI_D04 0xc0000041 + IMX8QXP_CSI_D03_CI_PI_D05 0xc0000041 + IMX8QXP_CSI_D04_CI_PI_D06 0xc0000041 + IMX8QXP_CSI_D05_CI_PI_D07 0xc0000041 + IMX8QXP_CSI_D06_CI_PI_D08 0xc0000041 + IMX8QXP_CSI_D07_CI_PI_D09 0xc0000041 + + IMX8QXP_CSI_MCLK_CI_PI_MCLK 0xc0000041 + IMX8QXP_CSI_PCLK_CI_PI_PCLK 0xc0000041 + IMX8QXP_CSI_HSYNC_CI_PI_HSYNC 0xc0000041 + IMX8QXP_CSI_VSYNC_CI_PI_VSYNC 0xc0000041 + IMX8QXP_CSI_EN_LSIO_GPIO3_IO02 0xc0000041 + IMX8QXP_CSI_RESET_LSIO_GPIO3_IO03 0xc0000041 + >; + }; + pinctrl_pcieb: pcieagrp { fsl,pins =3D < IMX8QXP_PCIE_CTRL0_PERST_B_LSIO_GPIO4_IO00 0x06000021 diff --git a/arch/arm64/boot/dts/freescale/imx8x-mek-ov5640-parallel.dtso b= /arch/arm64/boot/dts/freescale/imx8x-mek-ov5640-parallel.dtso new file mode 100644 index 0000000000000..927d6640662f3 --- /dev/null +++ b/arch/arm64/boot/dts/freescale/imx8x-mek-ov5640-parallel.dtso @@ -0,0 +1,43 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) +/* + * Copyright 2025 NXP + */ + +/dts-v1/; +/plugin/; + +#include +#include + +&ov5640_pi { + status =3D "okay"; + + port { + ov5640_pi_ep: endpoint { + remote-endpoint =3D <¶llel_csi_in>; + data-lanes =3D <1 2>; + bus-type =3D ; + bus-width =3D <8>; + vsync-active =3D <0>; + hsync-active =3D <1>; + pclk-sample =3D <1>; + }; + }; +}; + +¶llel_csi { + status =3D "okay"; + + ports { + port@0 { + parallel_csi_in: endpoint { + remote-endpoint =3D <&ov5640_pi_ep>; + }; + }; + + }; +}; + +&isi { + status =3D "okay"; +}; --=20 2.34.1