From nobody Thu Oct 2 20:25:52 2025 Received: from AM0PR02CU008.outbound.protection.outlook.com (mail-westeuropeazon11013040.outbound.protection.outlook.com [52.101.72.40]) (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 4B6FB324B26; Thu, 11 Sep 2025 11:37:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.72.40 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757590664; cv=fail; b=J9DSRNwN7pmlzSDTc6yB0WJLXMtTH6gVwMnKPspoDPnpl8gKadihkU+n/jFobl6MNLp2DMLeadGvttNLANgaZ+ty5fvbMtsVF/Hd4DeFtuz+lCcGUjsSvlRKKRdpFFO6FbY98rrf9wQn9gZYcju+vQ5MZt1fHaBeGBsplNlnzoY= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757590664; c=relaxed/simple; bh=TUcvGBeOg+gdbX2FwcaZ3SC7acTs3Uav0aq8FcXNVZM=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=DNFLhGSgk5xn2lDjveSFbRW14MVqcvAANj6U7KHIsYvR69iCMou6H8zq/n3iE7/56rTKz8wH6+1+KyLXzyKi4PpLiS8InfNvA95KsNPhVn93jZEJ6vlZ9Ck9AlB3yxslr4bFfGf5+nCEhEBBGljN/vQwDMtI3pMrPNHmKKVHWSw= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com; spf=pass smtp.mailfrom=oss.nxp.com; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b=kWg7tg0n; arc=fail smtp.client-ip=52.101.72.40 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b="kWg7tg0n" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=aKgnNe463q6/x3gOP4DKEbyviGS+9zhvcdoys76XRuRmR4vOwAWIWeQCk7XZxTWiy8DUNR+3CycQPObWTChn6rd9N38fzXdFSq8EntRyiIo3yRT5jRMXteg7TigFNx03RDAAThHoCFraIhSxnvZE8clroCxWhjp8Vw2AS9qniKW3TZzTRG+bXn0lqwzicaxc8CJnZvfc0RtUAgJImP4NO+Lu+zgZ0X+V/gbZdfDooWgunycVUjFYNjXdVrkRDo3LvDrzdHUikQUGnJ5qalu3RMoWnCQ2eINeqLXgkgR09B4OjJAx55K1gy7etDPFmVqhNe/lqWjhDB10vcTl/YLRWw== 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=tA/GFDutmvKkWOYUWX1EYSUMr+bA6YIQrD+3l9ypQls=; b=NXxzrKkaXqHWDth7EIp85FJR7/SPlIvlHbMu3E397l9OTAoFuNLiPURGjmPpVtBrrETLGp8E/QRjss9Qee1aUwP0Jw3wKmdv7G4BgSU7Tnt22j80DVkUx8qFIvoVCJeVyn3QTsBU/ILw3xhXIcc82LPYAf5zoXeWljEWhrW0j84QGSYF3MYMf19GE44DlKnw+IKKBTMajatKrlKGtC+pQNoaNOlMpdsG7W0k7v84EDYTk4KsykazqRpVNvVVSIPszs7GX/1SX4g/H6DOhxRKUTzyBMOOxli9nXiwkIsJscAjeC7F2GbIac/bLW0wO7OE1jqE4ojUSmyMHRXo8nhQNw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector1-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=tA/GFDutmvKkWOYUWX1EYSUMr+bA6YIQrD+3l9ypQls=; b=kWg7tg0ngFJQidRqA1DA//7P+fa1p+zJEPzdKYYS50QDFw42OzG2b9FUc53PO3rh1gXQsi4YyXcRihQP7NZ9jrstHrN702Ix+QgAKOvDI/iwAmlU3B2VP6Z6vSuKeDfVcghzCmMfC3HDQ6FO8DpY3QYHjslcoZnp151TJmGWehfZdZAA8S4atnHKA24Z+jg98uMTjbrISYmFYMvkD+H2QMdOym7H8L7rtuF6P1C+B1Q9Fb1hqmGtOxhb33+yexED8lrGaS4G91UluuNEdJR0/h+A0aMrGeKGpuVvahfaFaPA3PRm9TnLOJLz37MRmjWXlEAsfWJ/EVdnY9Bw9vUX8Q== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from GV1PR04MB9135.eurprd04.prod.outlook.com (2603:10a6:150:26::19) by DB9PR04MB9961.eurprd04.prod.outlook.com (2603:10a6:10:4ee::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9115.14; Thu, 11 Sep 2025 11:37:37 +0000 Received: from GV1PR04MB9135.eurprd04.prod.outlook.com ([fe80::b1f6:475e:de5d:8442]) by GV1PR04MB9135.eurprd04.prod.outlook.com ([fe80::b1f6:475e:de5d:8442%5]) with mapi id 15.20.9115.010; Thu, 11 Sep 2025 11:37:37 +0000 From: Laurentiu Palcu To: imx@lists.linux.dev, Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , David Airlie , Simona Vetter , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Marek Vasut Cc: dri-devel@lists.freedesktop.org, Laurentiu Palcu , devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v5 1/9] dt-bindings: display: fsl,ldb: Add i.MX94 LDB Date: Thu, 11 Sep 2025 14:37:01 +0300 Message-Id: <20250911-dcif-upstreaming-v5-1-a1e8dab8ae40@oss.nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250911-dcif-upstreaming-v5-0-a1e8dab8ae40@oss.nxp.com> References: <20250911-dcif-upstreaming-v5-0-a1e8dab8ae40@oss.nxp.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AS4P190CA0053.EURP190.PROD.OUTLOOK.COM (2603:10a6:20b:656::17) To GV1PR04MB9135.eurprd04.prod.outlook.com (2603:10a6:150:26::19) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1PR04MB9135:EE_|DB9PR04MB9961:EE_ X-MS-Office365-Filtering-Correlation-Id: f7e6c257-4d36-4ba1-c87c-08ddf1279b29 X-MS-Exchange-SharedMailbox-RoutingAgent-Processed: True 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|19092799006|376014|1800799024|7416014|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?SFU1MjVhMDFQRFA4ZlB3OXg0QWZ5SFF6SVVndVlHektPVFZyeEdBR1Z4cEJh?= =?utf-8?B?VGUyeVR6ZUFnMk5MeTZCbUdXWFNZVEdacFBBT0YySjVGNlMzcExNRXV4cEI4?= =?utf-8?B?UysxZUlTWE5OcngvT3l6bWx2WEQ3TVFqZUEyUU9oSDRTdktxcEllTlJjbW1T?= =?utf-8?B?SUx3by9pQlpTVXFZNElPT080aEowSStUMUpCbWlUUzc0VFVaaXBXMGs4L2tD?= =?utf-8?B?OXJaQ3hmTW9qOTlodloyZVo4Qjg4ekZrZ0dYYkwvZmFpY29RaGVONTZ4T1g5?= =?utf-8?B?aUYzTmRteXpYeGFlY0NRYzBnSUc5MGlGS05uaEgzQ1lkcWtmcFIrcXViQ1RH?= =?utf-8?B?WmtqQUw5dVJzUXl4ZG5tQzRlMU1POFlYUmVrNVRjcVRqV25QYVNSOCtEdDVa?= =?utf-8?B?VW1nTnZ0Q0J5am0zUTJrTzUvV0RCK29Jd1ArRmNKUXZudnJsOTZLSlluSDMx?= =?utf-8?B?UWdSdW9jcFRNVCsxcWdYNHVoYmdnNEFtN3RzOFRHdSsxYzJ2b1ZZd2doaUJX?= =?utf-8?B?SjJSSDFscmZVaTEydG1wTDM0VGRleThzTjdZcngxWTRQLzVFQXl4aTRBQTZk?= =?utf-8?B?N093WU9tVFNKY1E0VitFdlVCOTZ2aFJ3YjBISXdVSm5TR3R1ZExWQlFpS2w5?= =?utf-8?B?c0JreW9iWlk3UW84K1JCdHV1aDlaa0lZZWN0aXpFaU8xdlN3YVM0YWhsWkVr?= =?utf-8?B?dUo1Z1l3cTBkbHpybUxjSVRtZ2QxUjZOZ0swMjNlYWt1QVRsbUlLRzI5OEV4?= =?utf-8?B?cFJZVDFWbjdpTUlCZUQzcmZISTRKY1U1VjF5bDFxQllQVDFSOHArNGE4NUcr?= =?utf-8?B?T091cnVJMDBXRkJMNld4dTY5dnVOc1pTYmtLMVFnQTFOZkRXUy8wUkg2R09Y?= =?utf-8?B?TW5HVlBzV2hVZmhJbzBFOUtDcWdRSlF3eXpPVUN0ZTNlVVVLTytnWXdFV3Ja?= =?utf-8?B?MytvdUVIZThiQWc1R3RhQkc0TkNVU2V0ZnFHR3hhOXRqTlpxVlhlY0tuWjV6?= =?utf-8?B?MElEWHlQTzRXSDdFZjdvVzBOVW1HNHh2V3lTdEhUcVdic3c3UnVJSkZOOHRl?= =?utf-8?B?NjdwWDdjNGZzc0h3aUZ1U1pINFB0dmJkeTJMaUVyUWdkRDQ5VEVtVnNEenVn?= =?utf-8?B?OTNNTTdVU0VES2xNNG5sSmpFNFRrZnNIbjVjZjR1RlNwVXZ6U0l1WU85M2dr?= =?utf-8?B?azQ3T2ZJTm5Va3JYNW1pbXFST240MHE0cEFmVWp3UCtDUGhaZFJEbmUzdVlx?= =?utf-8?B?eElFNXVDRWRxSVdIOEsyT3FjazM5Slc3aXhvaHJpV1FtUCtPUEU0ZDR3WFdp?= =?utf-8?B?SGY1Q0pzdUY3blJOYS85ejVYVjhNZlhYaUsvcVpnTXdVcVdvVEs5emFIR25E?= =?utf-8?B?TWhzYzZOc1lXYURUQmdFaTlockJ4eWhPdWNveENnbkhTSnZrVFpVWXkvSnM0?= =?utf-8?B?cHprK3dHd0s0MlowYUpmS3poQmN2NDFPaURWeEg3WUtVRWkxT3JqTXhQdDMx?= =?utf-8?B?MVRiN2ZMblhFVFBlZEhkQko0aDd2VFNNdFJJWitnUU5SeVJuWXllaXRuZ1RS?= =?utf-8?B?V2ZnNlJ6d1ptR2Z2eUNvQTA1bCs2RmJXaUhVbVNNQlY0YnlIWnNuelhqSTg3?= =?utf-8?B?YnVvVWhXNWZuam1CZmhId0ZGa3pBTkdiVTRsTjRuQ1Bva1EydmVVNWFiTlNv?= =?utf-8?B?dlBSTUF5QldGZ3FtaHYzdHRqbHZtcS9EZXpnUkl6VkFIUWxYYXZFS05OMjdN?= =?utf-8?B?amNzdjVpNkFvNFl1eVVCZnVxUk1sR3ZwRkt3eWZDRCtlb2xFWUJtenlkWHBI?= =?utf-8?B?ZHlCOFM0VEF2LzBXY2JBSG1kRDczNVlzQWRXekhoUG1JN3VqM0RQa1N4OG5G?= =?utf-8?B?bXVkMW9BRU5Oa3grNHh1Y0dQZTVXeEVvUG95L2dKeGZxVFluK0VvTUJlY0RJ?= =?utf-8?B?cUcrWDMrNlQwOEtTUVdMTi8vTGtwT3gyTWVZVUVHeUFaRFBlUk81ZmVGRmRr?= =?utf-8?B?NjZJeTJOYVNBPT0=?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:GV1PR04MB9135.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(19092799006)(376014)(1800799024)(7416014)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?Wm9OTmNYbU5mcENTN211eTNtdWlNL29tMHJaNnEzekx1a20vMThaVzFybkFn?= =?utf-8?B?b2tIU0lFTVpSZzljZjFFVEtBSUkwaVlPanE5TVF0YThXOXBGOTQ5VlBvdHBV?= =?utf-8?B?LzhiV1gwVjJYUE91eWhDL21VanNtZ203YkorMFFnT3JmSkE1QXlYVEpOZWtv?= =?utf-8?B?T2YySXFpZ0FTVmQyWXFUTUZYYnZMSytYWlhjd0d4WWNBQnFpZFRSYUsyc1ZY?= =?utf-8?B?SktlcTM3K2dRYk9WZXplUmNFQkZleUswVGJDR01OOGNuYWVhSVBhUU5sbUJQ?= =?utf-8?B?SkgyMC9Ca2VkeXVTekJxeVVjazRhNnEzT0VMZjBjYnE1U0JQdHU4WE5BMDE3?= =?utf-8?B?V2ozUlpaZE5YclNrTVdaY3BMWDk5aTlVOXpWc0I3NHhkbnE4M0xxQmVHdzU3?= =?utf-8?B?Q2ZqT2duL0tNdk1uK2RxeVZrMmgwSmZrWGYwWkdEWnJNYkJMdkhyOGpkVjhh?= =?utf-8?B?OGgraHczOGlKYmZIWm92VUVUcXE3VHFrT3BXazNNRDlPRWlDNGNKU1dVbC82?= =?utf-8?B?UjY1NWFHUE9NV3hyQ2pmK1hBUFZQb0htc01yYVRaOERiSEJoTVo5N0t2SlZy?= =?utf-8?B?WU1NYi9YMFVwdWZ4TWNkNmw1ck1CTWx0U2ZGWDA0NmxXSXpEN0FtSTM1WDVK?= =?utf-8?B?Zk1KOG8xQXNMcmhYalFqeS92VkUrMGg2NE9lcEw5eTNYS1psZGNHTUU3bHZ3?= =?utf-8?B?bGZTeS9SODF3RDJRNGJTSENJTkk0UHdyNDhPK0JTTDkyTEdPNFJUa3JwZi9D?= =?utf-8?B?cHBCalIvN29ad2NadjBYNDVEMXd6OExYaGh2VGl5dkwrRmlXRkdCVWlxcmxS?= =?utf-8?B?OHY0cVpDTmRRMmlkcCtDbjNCdXBiRTFrLzlVZTRtMjhYOTZmL3d3c0Q5Q3lY?= =?utf-8?B?TkU1aFVocVZhbEgzRmluVk1sMlY1YlVOZkNCeWxTUVcwTXI1MmwyRjg4Y29q?= =?utf-8?B?Y2Z4eGNzMUxZVGZIbDVybDNpWG5XMnhrUkF6b0lzZlFSbSswTWJzRXo5RktI?= =?utf-8?B?amlkeDJ3aXBjT3hVdjhNajA3a2lkTkRlVFdyT1F2bTFrU09nRUcrMyt4SERi?= =?utf-8?B?aXJBVnB1T1hIckw2SzhLeCtxaXBwWVBYM2JnWHI0S0hlL1JTRjJJZUllWmp0?= =?utf-8?B?TXdaWWprR2k0Q2JENHBlYmJGQXBvTFZOQk16OWNJeTBBUVpNVHRmcGcxUkpL?= =?utf-8?B?Z0JVK0dmUDRERmVBNUtvQkFla1lmVm54L0ZCTTdKN0xWaXJCZHlkalBGeXZs?= =?utf-8?B?bnFXQUR2Vkc3STJzRjIvaFRHT3pXU3RuN3RHKzRYMTEwRUJMeFozY0lodGlu?= =?utf-8?B?WTBXUmU1amVaS2U0b21uTUhHcG1ISnZVVUNSZUQ0N1VXUkxLTEhKdUpwak9k?= =?utf-8?B?U1VhV3FmZUMzZm0yVmptcVJaQm4xajQ5VkNMRy80NmxZU2FlQzZTYzNSeE45?= =?utf-8?B?Y05sL1dsSk1HZFB0T1hkeCtBNFVXTlAra3VUcnFzTWYzWFpzVW1JK2VOd3hF?= =?utf-8?B?RndUTWp0MEIrT3hWSERoMWo4ZWZ6RS9nc05SaWh1elFzT0cweVhocHZyTWh0?= =?utf-8?B?cVlUVnFaU2xwazllbVZYbUQ4U2hPSXp3ZWY1VHM1K0FyemV2a0N0Q0tleDBG?= =?utf-8?B?RHNmS0psTGQxWklvRVlCaDFEOTVaWnc4eTZQMUNweXdTZUdQNHZSam1SajNi?= =?utf-8?B?MTI0RE5HaFptdmR0b1R1Yjltd2hNQ3JyRE1SOXpYQ0dSOEFPK3Q0TjJ6R2FK?= =?utf-8?B?SThUUWgzeGJtMjhTWGFDSGErcnprSDBvdVVxNkphTXhWOXJ1dGUzRWxsL01X?= =?utf-8?B?UDU0V2lCQndMZXI0VGZpNUNOdTRyYkFLdGlqSHdpdDY5RWZoZytBVGhhTWlJ?= =?utf-8?B?STdwNHNTd08xU2lRT1NWci9CclZCS1U3ZTBnVE9EQVBISVJabXk1RWF6TTNH?= =?utf-8?B?QzA0TDJnOStYVEhZWkFPdUFWMFZLNXNnUDFCMWxnaExMS2M5VloxZk1rVUt4?= =?utf-8?B?a1J6Q1pLM1NzYkNVdm44V1JEZmVxV0VNTzJ2UzNmUG9GTTdSNDdqV0VibjQ0?= =?utf-8?B?dGNORWEwcDJjYXRyKzZmblFIMEl4Qk9NNVFFcDZMUE11cEdVdTVVNDIwai9H?= =?utf-8?B?ZGtoMlhqQW9VZXdwMGNyR09Vbnk3dDZnMkl1L2xydENXeUR4b21xN0xhNVc5?= =?utf-8?B?YWc9PQ==?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: f7e6c257-4d36-4ba1-c87c-08ddf1279b29 X-MS-Exchange-CrossTenant-AuthSource: GV1PR04MB9135.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Sep 2025 11:37:37.0183 (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: pLUN4JwSn9fvvxxZUwfUHSLbEIeAuGkuO+bAwpFeCOA7EhxkHwQNFg4sJZQwdPAwlaaEowHe+ExmjLCfou7YpA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR04MB9961 i.MX94 has a single LVDS port and share similar LDB and LVDS control registers as i.MX8MP and i.MX93. Signed-off-by: Laurentiu Palcu Reviewed-by: Frank Li Reviewed-by: Krzysztof Kozlowski --- Documentation/devicetree/bindings/display/bridge/fsl,ldb.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Documentation/devicetree/bindings/display/bridge/fsl,ldb.yaml = b/Documentation/devicetree/bindings/display/bridge/fsl,ldb.yaml index 07388bf2b90df60d7059959bd8cfdf6a311bb49f..a54b8f14780491468b7b78ec4fc= 6ae3eaa4d59e5 100644 --- a/Documentation/devicetree/bindings/display/bridge/fsl,ldb.yaml +++ b/Documentation/devicetree/bindings/display/bridge/fsl,ldb.yaml @@ -20,6 +20,7 @@ properties: - fsl,imx6sx-ldb - fsl,imx8mp-ldb - fsl,imx93-ldb + - fsl,imx94-ldb =20 clocks: maxItems: 1 @@ -68,6 +69,7 @@ allOf: enum: - fsl,imx6sx-ldb - fsl,imx93-ldb + - fsl,imx94-ldb then: properties: ports: --=20 2.49.0 From nobody Thu Oct 2 20:25:52 2025 Received: from AM0PR02CU008.outbound.protection.outlook.com (mail-westeuropeazon11013040.outbound.protection.outlook.com [52.101.72.40]) (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 EB82C32ED55 for ; Thu, 11 Sep 2025 11:37:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.72.40 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757590667; cv=fail; b=cAx+kt4k+chSV3iyi7W8ygGKOtSZDLdQIgMAZbi7bT9Wy3kEn9t3bOdxl/uOOZfhSIeI16NmBneNl6Yr9Za49J2TTKtdyvfzi8prJ/QFcLzRV4xrw+UjMNMNpJk+psVb9LBc6CpNvQGmpEqgrO3Kynpt4CTYVXIIBVN9kLa5IDM= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757590667; c=relaxed/simple; bh=xzmrnHZiPOXyYMxEkVCOuLxD41tm4GKhuYLhmv4tEf4=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=S6NUkq44Cb+2pBY/CKFx41//sVKhXVSb9u8l7VAsYJygHtXH6HiTBO/wUn4NM/IK4ShFX04TUf5GRwkQhP1RbKGeb0d3ELegOSY0MQoafa2JmfsSH49E58tHl+Fe498Ve7BXnBoEFT1FWhfE3YUpFgq5KNOpCUqL6dyWvZj2N2c= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com; spf=pass smtp.mailfrom=oss.nxp.com; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b=kYbladxB; arc=fail smtp.client-ip=52.101.72.40 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b="kYbladxB" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=OHjEPAwjI/7PxyPKsZC7WRnUEd909P1Q+K8B50l4P/uRubqndM/B6Uz2DmbP4SspkPT3CQcu0Oh/JtEHCHLcbaEdMqVqBN7VC0gF4RvRtWxrevp9lm/9vdtS+jfgkVtBK72fLO35s0fWtZevMUpZwvCNL1qrQ2pFm1j2w7E90aLsr57LKWtt23oZkHo/0QxYVGZLu6TCy7Dzazp4iJbqDX8OOw0Lre5Aak0EQ0uTO0S64OhPGIUCV3KJLZuwqKzAHIoBz5K+Cu/gB/d/mpFY90s8QZljQkADpq20PYOrE0WC3UEkHwfno3yVbsA/OhQceu7H/gqJatjv7LVIVRrFCw== 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=jrLAjGRNDFIho9+u5Gr8TeVkdjcLkjeqc8YmbrnPSnE=; b=wb94XOT751vKJMz7sMlW9IAaE7wjsPkpoM+4cITmsaMJKW8KudENP99cGTBPjGlfTRDf3aYxCq2gRLbqk1+rKN6TdOnnrmBM1dWVZy1xKzFQ1Ehqa0aB40IldZ8hIX7JBmRKPrk+9idvCXQWS/8n9EscyW4Q3985Rh0QzOFxx4rFpBj/BWhZHdogIQxIMAX4Q7HbjtoSgfQJrcYgZN2p0gxliMBr1yAcyC7L26SFB9D6hYx9bUExJrVzY0il+/0f3omtNSDrog4Edu/R6c26F2iKj2MbN9LozKtFM5Lz6YByEKMYAu+v1J1sOUVPVHcYBEbVyJ347Umy5YgWA1Guzg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector1-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=jrLAjGRNDFIho9+u5Gr8TeVkdjcLkjeqc8YmbrnPSnE=; b=kYbladxBUqurgl+ZNywypnrUCSPbBCkSI+czJRtIZQUSz0sZXOMMsOGakfxAxsr79kzHx4AwjpNqQR9XvqICKwx5HaSSGYqDx72A8DRfjgVh95QTkkE6NY0sjJ9BMna+wclGtLDu0tIKxZfAZqfsN83Y9i/xCPVsxcSLjZ3PaWSxiFli8eS5rBbQicHvXPb73Pv39IT0y94d+bPiUHvBs36L50lkzLOvrLkw02oC2SF6aJb2p4KCriV8RBV4p2jASwJyJeiUvmPxHKf7t1SEsbo3KBw2VMSRg2/kD1LvbziQFopkXS9vHMNOPN6I42b8IItzB5pit0I18icN+xEsqQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from GV1PR04MB9135.eurprd04.prod.outlook.com (2603:10a6:150:26::19) by DB9PR04MB9961.eurprd04.prod.outlook.com (2603:10a6:10:4ee::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9115.14; Thu, 11 Sep 2025 11:37:42 +0000 Received: from GV1PR04MB9135.eurprd04.prod.outlook.com ([fe80::b1f6:475e:de5d:8442]) by GV1PR04MB9135.eurprd04.prod.outlook.com ([fe80::b1f6:475e:de5d:8442%5]) with mapi id 15.20.9115.010; Thu, 11 Sep 2025 11:37:42 +0000 From: Laurentiu Palcu To: imx@lists.linux.dev, Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter Cc: dri-devel@lists.freedesktop.org, Liu Ying , Laurentiu Palcu , linux-kernel@vger.kernel.org Subject: [PATCH v5 2/9] drm/bridge: fsl-ldb: Get the next non-panel bridge Date: Thu, 11 Sep 2025 14:37:02 +0300 Message-Id: <20250911-dcif-upstreaming-v5-2-a1e8dab8ae40@oss.nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250911-dcif-upstreaming-v5-0-a1e8dab8ae40@oss.nxp.com> References: <20250911-dcif-upstreaming-v5-0-a1e8dab8ae40@oss.nxp.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AM0PR06CA0142.eurprd06.prod.outlook.com (2603:10a6:208:ab::47) To GV1PR04MB9135.eurprd04.prod.outlook.com (2603:10a6:150:26::19) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1PR04MB9135:EE_|DB9PR04MB9961:EE_ X-MS-Office365-Filtering-Correlation-Id: f41842a2-0972-40a9-21cf-08ddf1279e78 X-MS-Exchange-SharedMailbox-RoutingAgent-Processed: True 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|19092799006|376014|1800799024|7416014|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?S3F5T1M4aytwaEVnS0w1ejFLemJRMEoyc0ovMytuWW4rMHE2WEZFWEZhdXZV?= =?utf-8?B?TmRYUEx0ZTdvREgrdFEyaW5NaFA4dDdLdnVVUHEyNndEY3UzbUErTHNTOEdZ?= =?utf-8?B?L3JqeW9KS3c0TFlEZllMUTJ0TXV5dHB0S2RCS3V1bkJ5M05ZREtyUjFWZTl2?= =?utf-8?B?TmZidWhLTVhMY24vOUhJQ28wV1FzR1FGVzhVWWdMUEViT2lzVFpkQk5hRGIx?= =?utf-8?B?NDRzZ0FMYWNZcnBFQ0F2Qk5yY3RRTm1YOU95TFU3WTJiSUJkbEt6RnlyV3BO?= =?utf-8?B?NVhyczEvTUExY3hyOTlEaHVpRGVqdDVjYWMrWVptM3lFdkRoNkpEaG4wRkxo?= =?utf-8?B?N0JsNHVtY2d4RjFwZVFDTEpNR3FPUS9KeERzZHl3MFgvRkN1QUo4OUhmalJl?= =?utf-8?B?ODczd1JYR09mdk8yR1hSQld4T2IwUXI0aGRoTW5WS0orNU1RK1BoMWtpWWhT?= =?utf-8?B?ekQzL0YzeXlNOTVqbVRHdEJsaW1VZ2xNZDlVaGwxS3M3dEkrMWxlVndXQmZM?= =?utf-8?B?VXFQR2NrR2VjMytrQlFRZDBjaHpPR3FrSWovc3I5Tmt0MVBjbFVrYUgrUzdh?= =?utf-8?B?dXZ3MUhaN05JeGhXd1kvWGxDcVJvbmZtSVdGYVJNRHR6K05US1lxWElaeDJu?= =?utf-8?B?c0xRb1J6L1cyOEdRLzRXbDg2S1drSHpjZnRjd0tXdExpWWhFdnNQL25Ed0pS?= =?utf-8?B?ZnBTL09sL3ZIZHFNVlgvZXNka2R0SHhjOFY2YUFNaEREaEdTVWhocTVvM1ZM?= =?utf-8?B?RFRvalJaeGpmYnN0OEt2ZGRueEJuMWcrU1VQSW16UFE1SC9QNTlhdk5jazBP?= =?utf-8?B?NDV0S2NyZlZpZkRITGxLQnVYaDUzN3o3VUQxaDNUU3ZkM1dlYVBTOGowaWd0?= =?utf-8?B?eTUxN3QvekRqL29lZGRzRERkaitnUGhzK3BFZWlSRlFta1BUZE9vQUhySm5Y?= =?utf-8?B?L1ExQlA0blowVFRVZGlkV1RFVTUxL2VpMkRUOHV1cjkvRnpSd2tSR2ZaMWpU?= =?utf-8?B?b1FNQW1jS1NTb2lJM3QxV1VIZ3dNQXNzRHZjaGxZR2poRjExOENWbUJ1b1Z0?= =?utf-8?B?bmV6dlJuamZJLzZxR1RqcStLUXA1U1c3dkFUa1J1OVFYNXc0YjhYRnBqSSt6?= =?utf-8?B?bDk0TVJwaE1XNWNySDVhRkt4OVRKcXdUU2hIQ250RTdmQkVuOXE5V3NDVzhl?= =?utf-8?B?eHVhSzVmSS9NV0ZLMlg5dEMrWk56UzdROG51bmRHQWRrakRMM0gzQ01XZEgr?= =?utf-8?B?cXBadjZaTDYxQUxEaHlUTFZnNENvKzdxYmVHUGI1ZHpaaDNRTktBMlUwQWFz?= =?utf-8?B?VFFLajRvSDZjZjc2clY5V2g5dzBsR2lxeVZHUEVOTjhYWmhCcmxyOERLNGtq?= =?utf-8?B?Rjl0SEVFcWRraE82VlRrbW13NVgrQVBVWm4yaFJrVCtBQWR1VHkvZVZYMU5I?= =?utf-8?B?N2c0bXBHT1ZGSGNyd2o1T1RqVFlySmY4T1JJcmg1aURkcW9GbnNieEVjNkFs?= =?utf-8?B?a0ovU2pFSDh6SDNGTFJNSStseU93WDhadm42RVlTU3k2VHRXRTkvaTVCQW1S?= =?utf-8?B?a1JLaHN6RzRxL2FQRUlqc1Q0Y3Bsa2lHL01PTi9DTFBRSmRaR0oyMG5KNWtU?= =?utf-8?B?bmFLNXpVUUtaOVJJaXlDMTJISXJDT2Z3NjNpcnJhWFlSMERvbnczWjNjUlQr?= =?utf-8?B?NlJyQzUxaHdoNUZxajZNRnluNC82c0tvR29aeXFabUxiSWFLcUxvTXAwUERN?= =?utf-8?B?SHNYbVJHNU9SUTRZdFpKVVpmTHpQeXhWZERNN3plaWM1V3lkTFpWVUlkc3Jl?= =?utf-8?B?ZXZXMmVBVXBNSEpuSXpBT2REeGR4amRxdU9tajhNb280UUZLYXJkL3d3Zk15?= =?utf-8?B?amgzUGkrWFBldWhDenpXSWVhTnRrY2ZGSExEM0x2WmtwaTYvZlJQUmtsWWZO?= =?utf-8?B?ZThKd3dlTTJHWjRLL3VydmRXUzNtUnpXeGc4NUI1MXQ5c3V4ckkrNEVKbWdT?= =?utf-8?B?OWVPNjlOYlB3PT0=?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:GV1PR04MB9135.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(19092799006)(376014)(1800799024)(7416014)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?dFo3UytQdzIvVkZoWkhodkJmVkpCZjE3QkQwK0I4d1ZzbFJIMDBaNUo5OU4w?= =?utf-8?B?b1NzUjFMai9PZmhyVEUrL05uUEpTTC9nUEtkOXc0WjlHcmdzL00zWmIyenJZ?= =?utf-8?B?eS81ckcwbjJKN3drMXlZL2dFVkoxMjF4RzIvRFNCcGE1aTRYc0hCMjJNeThi?= =?utf-8?B?cysyMEEwR0xxNWxGSUVDQjhZRTBZQzdCWUtMM0dFcEh5ODJOUkdTTzJRb2E1?= =?utf-8?B?NE9DLythTWxWdmRINXhpazlQUWN4Zi9PM2ppVFdQTWFEQ0JZZWRwR0lzY2d4?= =?utf-8?B?NHpCOXVVRmt5RkU0WjVka1Vja2ZWdGxMeFBYUW1NQjlTeUJ3aDV1d2tRT2J1?= =?utf-8?B?QXpvVFFlZit3Lys1VE41ekQvL1pSSzd5cFE2V3ZYZVZpZmcwcXVxQTFqVU5l?= =?utf-8?B?MkhCMmIwZTBISEVlWGJaVmFpUE1zdjBXVW13QWRtREdNWFE1b0xBVVBseEJW?= =?utf-8?B?MmdEM1lpbzVpSm1HNG9lWVRXcDEyVjlDNCt6SG9UaFlQRDlPM29ZUVpHMEF3?= =?utf-8?B?cEZET1BiandSUnYwSzNJeXBYeUgvaVY5dyt1NlVRTUN5bEQ2VHlCdTYrRFFr?= =?utf-8?B?UGMwL0NOaHpKL3lHaDZkT21aQzh4N1BuV1V0VXlidEJWSVJGcGF2b2Q2NUJR?= =?utf-8?B?TjYxTTg4NW83MWpWMFdDMlM2SjFHV2cxQkNTUllNb09pamUyV0VKaTFVUDZ1?= =?utf-8?B?Smc5MVhjclFuQVVZQXNjTUxUeGdhWklubWszNlBNMjZxZ3ZQaG0wWlFra09N?= =?utf-8?B?d09vTUFWcjZYNTN6WitSUTNrZWY2UWh5Qy9DaWEyZzhtOVdSQlhTODVxb0d3?= =?utf-8?B?c0tQdFdnMXkvVU1SNGRuaGZIYjJSNUpuTUJKN0JKTnhsN3MzZElXaWFUQ1FD?= =?utf-8?B?MGh2aGcvQUQ4U2lyWGpsVkF4K0x5RC83VUs4WHM4Q2Z3SDZINXBLVkl2REhR?= =?utf-8?B?TEVOcVJmaGZHWWlhZDk3YmdJbE1TdXg3RmJna0hLT29kRWdIZDl6cVFHQkxQ?= =?utf-8?B?c2F0Ukp3Ui9xWVA3QmhyOExGbzV2Sm5penRHME5OTEhVSHJCcFFWVUNrRDky?= =?utf-8?B?WDFJUHlmYUIyMXpXRXh0R1dtMzJMUUFlRStHU3ROa1pMdXBHTExic0F2QmdI?= =?utf-8?B?aWxNbDZadkFSWWYzeW9YdlFrYWQvUnNjN1lMbE5qcXR4NXd6V2VMcTJJY3lr?= =?utf-8?B?TVFsV09TemJOMm9Yalg3R0hWcnRpdnV3bGN6V3V4T29LZU1YUW9EZjdZd01m?= =?utf-8?B?OGo0S1JvaWpsTlVlOGJxQkIwUjcrNHJJcG9GcXBRZUNUUjZXbzRralo5MEhG?= =?utf-8?B?Sm4wYkV4UVd5WlI2ZW94akJVRTJIU1VWaCtyMHIvRVk2bTdTUFF3VmYwUjNW?= =?utf-8?B?MEFRSk5Qak55OUFWdFpFMzlkdXBmd3p5MjZCdDdrUjFLdUF4a1J2aEtCZ254?= =?utf-8?B?M1JpdEtLVVQ3ZWRJN21WUTJqV3JYcUFONjA3Vm5FeWp2dnBLVElrNm0yUXU1?= =?utf-8?B?SWY1c3BXc1BtWlo5YmNSUXF5NWlpSXB4UE41NCtwR2VFRC9qNEtNNDhNMHNZ?= =?utf-8?B?dG5VM0pZaXVIVEl2ekZJbkxrRWpkOUxMTFIzdFZENnZwNkl3dE9GMlprUVBQ?= =?utf-8?B?UUc4WEEwY2VTRmJDSkpZWkg4bGxYTXNqWVhXcVBpVTJ4RDQ0VEE1ZUE1Rnpq?= =?utf-8?B?cjltQWtDYnBpbGd1alRkWkJ0M3pvT3hOVENjcmJZSWtPcktnOHJyTG9wREtC?= =?utf-8?B?bGtBdDk2SlhzMStEZjNHTG1vUXdocVlmam5aaEVlOEc5ZnhDelo2YytndHFJ?= =?utf-8?B?Y0R5TSt6dWd4NHFiRE1sK2ZjWHhPVUNqNHV0ZG5tYVEzSnF4MTkyaXkveWVn?= =?utf-8?B?L0pSMHJDeGRpVGJ5OGExNThtRDh5RDNENktoM0dISDN6Q2cyZ3c3cWkyVUc1?= =?utf-8?B?MXB4MDJHS1BnemhsRzJvWWllc3ZZc0xzbkdqY0x0UjQ1YkVzWDZXVS9UWVNu?= =?utf-8?B?Y2RCTklPRFRka01xdENRdjVkL3Zoclo1Q0dIU01zVG51R2JWRjZJcVpVMVRG?= =?utf-8?B?cWw5cE52dWt6MmpQeVBPSHFCSE5LajRxRnJUUm9KVHpjNzQweTl1Qkh1RThT?= =?utf-8?B?Q2hBQk9UcVJ2YzFCUGpraS94MzRjb0Rvd0I1ZkR2bUdkWDZaYnUzalljZDU3?= =?utf-8?B?QXc9PQ==?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: f41842a2-0972-40a9-21cf-08ddf1279e78 X-MS-Exchange-CrossTenant-AuthSource: GV1PR04MB9135.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Sep 2025 11:37:42.2738 (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: mQmafEMOlmsjaMWX6kyK/z+Pxd0PdOfRoEspNis1GoLGtgvKqKdPRyBz1YyHlEoSv8mVQ1IwK4BTQCAF/YC56w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR04MB9961 From: Liu Ying The next bridge in bridge chain could be a panel bridge or a non-panel bridge. Use devm_drm_of_get_bridge() to replace the combination function calls of of_drm_find_panel() and devm_drm_panel_bridge_add() to get either a panel bridge or a non-panel bridge, instead of getting a panel bridge only. Signed-off-by: Liu Ying Signed-off-by: Laurentiu Palcu Reviewed-by: Dmitry Baryshkov Reviewed-by: Frank Li --- drivers/gpu/drm/bridge/fsl-ldb.c | 31 +++++++++++-------------------- 1 file changed, 11 insertions(+), 20 deletions(-) diff --git a/drivers/gpu/drm/bridge/fsl-ldb.c b/drivers/gpu/drm/bridge/fsl-= ldb.c index 5c3cf37200bcee1db285c97e2b463c9355ee6acb..665053d0cb79d2b4f50e69c3978= 63ab024553867 100644 --- a/drivers/gpu/drm/bridge/fsl-ldb.c +++ b/drivers/gpu/drm/bridge/fsl-ldb.c @@ -15,7 +15,6 @@ #include #include #include -#include =20 #define LDB_CTRL_CH0_ENABLE BIT(0) #define LDB_CTRL_CH0_DI_SELECT BIT(1) @@ -86,7 +85,7 @@ static const struct fsl_ldb_devdata fsl_ldb_devdata[] =3D= { struct fsl_ldb { struct device *dev; struct drm_bridge bridge; - struct drm_bridge *panel_bridge; + struct drm_bridge *next_bridge; struct clk *clk; struct regmap *regmap; const struct fsl_ldb_devdata *devdata; @@ -118,7 +117,7 @@ static int fsl_ldb_attach(struct drm_bridge *bridge, { struct fsl_ldb *fsl_ldb =3D to_fsl_ldb(bridge); =20 - return drm_bridge_attach(encoder, fsl_ldb->panel_bridge, + return drm_bridge_attach(encoder, fsl_ldb->next_bridge, bridge, flags); } =20 @@ -292,9 +291,7 @@ static const struct drm_bridge_funcs funcs =3D { static int fsl_ldb_probe(struct platform_device *pdev) { struct device *dev =3D &pdev->dev; - struct device_node *panel_node; struct device_node *remote1, *remote2; - struct drm_panel *panel; struct fsl_ldb *fsl_ldb; int dual_link; =20 @@ -317,33 +314,27 @@ static int fsl_ldb_probe(struct platform_device *pdev) if (IS_ERR(fsl_ldb->regmap)) return PTR_ERR(fsl_ldb->regmap); =20 - /* Locate the remote ports and the panel node */ + /* Locate the remote ports. */ remote1 =3D of_graph_get_remote_node(dev->of_node, 1, 0); remote2 =3D of_graph_get_remote_node(dev->of_node, 2, 0); fsl_ldb->ch0_enabled =3D (remote1 !=3D NULL); fsl_ldb->ch1_enabled =3D (remote2 !=3D NULL); - panel_node =3D of_node_get(remote1 ? remote1 : remote2); of_node_put(remote1); of_node_put(remote2); =20 - if (!fsl_ldb->ch0_enabled && !fsl_ldb->ch1_enabled) { - of_node_put(panel_node); - return dev_err_probe(dev, -ENXIO, "No panel node found"); - } + if (!fsl_ldb->ch0_enabled && !fsl_ldb->ch1_enabled) + return dev_err_probe(dev, -ENXIO, "No next bridge node found"); =20 dev_dbg(dev, "Using %s\n", fsl_ldb_is_dual(fsl_ldb) ? "dual-link mode" : fsl_ldb->ch0_enabled ? "channel 0" : "channel 1"); =20 - panel =3D of_drm_find_panel(panel_node); - of_node_put(panel_node); - if (IS_ERR(panel)) - return PTR_ERR(panel); - - fsl_ldb->panel_bridge =3D devm_drm_panel_bridge_add(dev, panel); - if (IS_ERR(fsl_ldb->panel_bridge)) - return PTR_ERR(fsl_ldb->panel_bridge); - + fsl_ldb->next_bridge =3D devm_drm_of_get_bridge(dev, dev->of_node, + fsl_ldb->ch0_enabled ? 1 : 2, + 0); + if (IS_ERR(fsl_ldb->next_bridge)) + return dev_err_probe(dev, PTR_ERR(fsl_ldb->next_bridge), + "failed to get next bridge\n"); =20 if (fsl_ldb_is_dual(fsl_ldb)) { struct device_node *port1, *port2; --=20 2.49.0 From nobody Thu Oct 2 20:25:52 2025 Received: from AM0PR02CU008.outbound.protection.outlook.com (mail-westeuropeazon11013040.outbound.protection.outlook.com [52.101.72.40]) (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 4D52532F758 for ; Thu, 11 Sep 2025 11:37:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.72.40 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757590669; cv=fail; b=P/FC8gHDT0i02irsc0Kx1IE9h5Uxz1GueCZXWawOdWQCbx47dDGi5aSg+QrtKUDn2EJuG5nbZxcMopn02lEJl4mE98wLL3dQ2UVkvkOmPj0MNlfQeYF2SjAz6U0XZA85wRwG66OKVtLB3LUA1sGRitXKgEfrGq5it3MTrKzZILg= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757590669; c=relaxed/simple; bh=KHe5i4qPgAgCD8qnkntgJ7ImcrU5hLeVlhO+JyA0B/E=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=GlRAkvcg2Q9KaJQTXFkbrhHTqHYNuJrjKkC/CYjqSl3sjTsAKYCu5ZFGr453/tSTqScqWz6KM9GHKNFVUN3g4VK7it9OkzBi+JF+LV6Mc7uu36mKUdXf6KLdtc04Em710oIQoLW+Jtv2lvIjOpQNTScAcJA7dRVi0owLATbazeI= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com; spf=pass smtp.mailfrom=oss.nxp.com; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b=bcB9oTun; arc=fail smtp.client-ip=52.101.72.40 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b="bcB9oTun" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=NdFkaxsloS1Sge/Ac7e/AlGsorKGpfoDIOXYQTec8EJBNdJLec3o9DbaAEzEmr7/GLC2k+WihMtH30vKuyzKMvT5V+KavA5cArd4fPsOSQa5wWoFgEE6hJDlnhDehOv/0eKyNgWYUkmnruyrKwEHCYWb54+byF4elL5Ue4cPutmhB0dcoMqzeAf77zVkV+u2dB/noQKgxnsAIC6r9+sbdJsdvxFHxHJlCcriQpQVWVCTeOVMVY1m1PB2pr9ub2tcOQ7wEAP60kSXsFfTDJ7+hA0IlKp5B6ZzJebho2DJAQqPbSZv+z916BV7943Hu5SYpC3vgz3+LIOxSaS2n/OUxQ== 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=KnCfPi7ksQzeNqLcz1It2tLKfohFiNnERST92bNOBac=; b=KavT9ZmMo5QPjWUB3hJ3MADbdmYJRL3O6GLCSXyW5Y3/nG0aHGzwhQTN1qreE+xmC0q+uidag1vJXI/Zla4UxRjdqQrZdIMGy3rQDazpMfnaPLAq4l4xlQt5OlPPQAeMIHj/zq+AR2jT4kHpSxzJw8Sfn7r42eicetdPo1oIHkG0U/z5Qpslmyvzlc81Ak43xjHdSehPzdVdRXv+cIDEhTdJFTAy/PvZZ1ZCXRt8ZbfQDpxUdvIseo1YZqCooQRGw6uBP33JVdruooLhsmABcwXrxjKRE/B+NVypodzga8L82+fBLk4epF2sgsD9JyvmBadY8YJD/QxjauoGlKX5DA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector1-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=KnCfPi7ksQzeNqLcz1It2tLKfohFiNnERST92bNOBac=; b=bcB9oTuntg/5SnO6rj+hpcmrSMngw4Dw+bkrPG8we37KkthrNunD4+tF+rsBO3uxfegESqwFscj/XJFgdW35Me4j0XorpLNmiQ2+0xeQsffW0tk9haRBGymGmQrk7tnxHnGN9hALSZkspdrKxpk5o4NIu2SyNoP9LNiqrSX9wQ6iN3XSeRsB0j8TYDFzgWz5SsVpxRgIoCSyBskD8xXBJ8JX9ywhY7OxgHlP4cHecUTO9D2p6SPhVp6Xrq2Z5SXDfT8+d0p1dCUxjmDf00KXCXPp27T39O7PUxNVniXv6/Xk+/5Nhwkta0CDsqumBI6VKPwFZsX8R1O32Tix3QrdQg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from GV1PR04MB9135.eurprd04.prod.outlook.com (2603:10a6:150:26::19) by DB9PR04MB9961.eurprd04.prod.outlook.com (2603:10a6:10:4ee::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9115.14; Thu, 11 Sep 2025 11:37:45 +0000 Received: from GV1PR04MB9135.eurprd04.prod.outlook.com ([fe80::b1f6:475e:de5d:8442]) by GV1PR04MB9135.eurprd04.prod.outlook.com ([fe80::b1f6:475e:de5d:8442%5]) with mapi id 15.20.9115.010; Thu, 11 Sep 2025 11:37:45 +0000 From: Laurentiu Palcu To: imx@lists.linux.dev, Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter Cc: dri-devel@lists.freedesktop.org, Laurentiu Palcu , linux-kernel@vger.kernel.org Subject: [PATCH v5 3/9] drm/bridge: fsl-ldb: Add support for i.MX94 Date: Thu, 11 Sep 2025 14:37:03 +0300 Message-Id: <20250911-dcif-upstreaming-v5-3-a1e8dab8ae40@oss.nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250911-dcif-upstreaming-v5-0-a1e8dab8ae40@oss.nxp.com> References: <20250911-dcif-upstreaming-v5-0-a1e8dab8ae40@oss.nxp.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AS4P195CA0019.EURP195.PROD.OUTLOOK.COM (2603:10a6:20b:5d6::6) To GV1PR04MB9135.eurprd04.prod.outlook.com (2603:10a6:150:26::19) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1PR04MB9135:EE_|DB9PR04MB9961:EE_ X-MS-Office365-Filtering-Correlation-Id: 48067e5c-42ce-4615-9d79-08ddf127a00a X-MS-Exchange-SharedMailbox-RoutingAgent-Processed: True 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|19092799006|376014|1800799024|7416014|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?U2phc2dFdml1LzJ3dEFhWXNvY1BKcllLUkxLbFRtRk9nN1FPVnZnMGFaZ1pw?= =?utf-8?B?UkRDRmh6RGFrZFV2eHkrbHlSV253cTFDTWNWTHMyNEJ0RHFieDBlWmpraDl1?= =?utf-8?B?a2xuUW9HOWNlS0ZicnkrRTlDWVlXeFJXQmRFajliK2tBekRMUzhuRzlVL01I?= =?utf-8?B?VlVTSmVBK0tnM3Y5VThDVFZsK2gvVC9BZjFrVzQwZmlERDBmeHJ2WlNqV1h1?= =?utf-8?B?UHN4QndybnF5ZWhJL3o2OVVIdEVUcFhPYXpTcVBTMGgycytFa3U0QUtNTnQ4?= =?utf-8?B?cUIrbTZjY29naWRJMVlBK0t6RFpJUlRRY21GUUhCNmtJTklrQ1BpcE9KRTBL?= =?utf-8?B?dTduc1Q1cVpXVXlTZnJEVkRTQmQ4d1QzeHJpNno0b0xqQXIrWm44UTZtUE4x?= =?utf-8?B?cmxXeHRnbVNSMkpRVml0TXNpbDZheTF4RW1HNkhwYlgwOEpIYnhmTzlkVy9S?= =?utf-8?B?c2FyeFRLK00zaEk5bDVpVXhFbUZYQlJmNWpITmRLNkFxWDgzZEdibkxTQ1dZ?= =?utf-8?B?bWxORU0yYnhjZEpoZWs0WE5EK1pyYXFNalZtSVovU0VNTFdaM0tqUW9KOFIr?= =?utf-8?B?ekdsMmZVdEk2THV4bjJhYkc0TWNFQ09wQ0pVMjlzQWxsMVlBbUdGdDF3Wklr?= =?utf-8?B?bU5tWk51TEtEdk5nbjhOeFhXbDg4d2wycEY5Sk02L29tdDVpUVFIdXRlTk9V?= =?utf-8?B?RHhPclRPVzQvdWlONTJQdHppU3BzY2RXckgwQzgwV0VDWk11aFhieDhRUEk4?= =?utf-8?B?QlNyeWh5NkhRdlZreEY3NSttdDNUSUtxR0hnN1hVbkxaY2tDZnBJL1lCZDVI?= =?utf-8?B?b1pGeU5iL3FNUjBnbjNBaWN2K2ptWWdERk1vR09xcFZwWGxMTmFZUkRJcTQ0?= =?utf-8?B?Y21ySmREb0wvK1dOM09kN1haMnplL2liWHhuc3JLelFIUE1oR1VJWm5ITGpo?= =?utf-8?B?UDlxcGY4N05hOFFLek15NUIza2lsbDhyUlllWmNyT0plVkJxT0JRSXdFQzkv?= =?utf-8?B?OWdETmpKV1h4c1c0VUIzZFhFMitsTGxtQks5YWtnQzdZU2E4anRoYmhUQ2JQ?= =?utf-8?B?WnhIR3pOU3dIWlJaQzBEbXN6bjBXa1lEMjB5ZUtFVDNma3FlMHV0U3JqUGtw?= =?utf-8?B?ZXFsSUcralNFejdHUGhLYUdBWnlleVNPMlBPY2tTemxBc2JlT3lHNlJhajEv?= =?utf-8?B?S2dTM3ZZK3VkRFRRbTg3R3VSL2VGNlM3cXp4Mk9NdEdaQkhpYnhlaGwvQ1A5?= =?utf-8?B?aWNsQW5qT2tWWkduRnhUSzF0TS90UHJaMjBPc2RWOWd0M1RqcGpBQjNFTGRS?= =?utf-8?B?WVVxMzhNbjZNOHphN0crQWRYc2VXYmtKTFBwdmppZVI4WjgxeExHaFYwTVJ5?= =?utf-8?B?cm1zUGFGUEp6WVZNL0xMSE1jZjd3K3U0M1hwdDFEbU1WRlBxbEdIdnJoWmR5?= =?utf-8?B?Qnc2WGh5UGtIK09zMXdKWFF6dzNjQUlOZWd6WHpHOUlJeWo5MHhlNkJXNUtO?= =?utf-8?B?UVdodUlnZWdXYmZJeElXTW1WdzBMTVhpTnphM3NoQlRwS3YxZEVyWFRLbXhp?= =?utf-8?B?cFNMelo0Y2RSSGRyQ3NPU2d1OGFRN3lZK3ZHWkxoL21KdjRoS2JnSGRUZHY0?= =?utf-8?B?MnBtQWU0Q3UwbUo1M29JWXRSUGdaNmtnRzRTSzU1RG5iRGEvWE9jbXRxcU5U?= =?utf-8?B?V2gvOUNCT3I4VTc3SUpYdlFwSGhCdnNmaFc0Z0Q4UlhKR0xBVjJtMWdZajd3?= =?utf-8?B?VHJlM1p4U0VTMGZDSUFuYk9semVWVU1GQXI1QnBkelBoWk1rdEx0NnR5WWoy?= =?utf-8?B?MWd3UGlETVdLSEZneVhMcXc4Wnp2NnpaSTdnZEtEZHd4VlJVTzFOSFR5THls?= =?utf-8?B?cUtXTHZnSE1EckNyMDNUUFVoWlNVMEJLOUE5WTRIaFdSSWh5bWxwNTNwQjdq?= =?utf-8?B?bW1FQks0TmJDQnRCWkF6UUNXdnh4VGV4MTM0SklNUnozbVlMaERMbnhWcEVM?= =?utf-8?B?eFNSaE9obnd3PT0=?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:GV1PR04MB9135.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(19092799006)(376014)(1800799024)(7416014)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?aFBabDNST0I2eU5XeWV0L0NaS1ZmRzlTN1JramxlendVYkh5RjVMTjEzRE5V?= =?utf-8?B?SlluVlYreHh4Qk10THlFeGVkVjRYNytsZFoyT3ptNVdtTG1aQXBXWnRjUlNj?= =?utf-8?B?WXIrdnVTWDNZLzUwaDdML2FpQlA5ajlCWUhJNEgwYzFzc0lydjNkSDJiV1BS?= =?utf-8?B?NzR1UEptV3RBNWUzNExLZW4xQWFkRVJaTHZDdjdUT2h6OVJTR2VodnRuK29h?= =?utf-8?B?NU8wOHRyWHR4QXVvWjFxOU5jTHgycUxkekNkRWJwNkRRK2tBWUF1R3VXOWlY?= =?utf-8?B?TU5rMTlpUTJpcEduTHZmUFJQdkwrM2RFV3JuaHFIZkhZRjhtRFc2WURZd0N3?= =?utf-8?B?cWJSaHhHeW5wSWVyYStqRnhDd3orY2NZOXBsa1R4QkNBMmhjMlFoV3l3d2FM?= =?utf-8?B?bDJpYjcvRXNZWEkrVVdud3ZjcURZc1FlV1pmUVFWNHdIb3hZOEdBb09EYUp6?= =?utf-8?B?bE9nV25tZkRnM0xJTk1YNUloRTFEU0FwemE1Mk1SRGJWcnhJNlVvWGlyZHF4?= =?utf-8?B?Z0MyaTJMdS9qSUNIOXRmRzB3K243OVphWXFXZ25RL1MvY2FqdXkrS1FDbkRR?= =?utf-8?B?c0xxQnZtdmhUa0lKT0pzOHRWT01sTU5WUldScjNQZ0xPT0tVb3d5VDdNWFdE?= =?utf-8?B?cXRITTAyZVFFV3hCdVdSLzNhd0dXZGhHOW05NTVJZm4wejM5ZWxtL21YSmVW?= =?utf-8?B?R1YyRk5LVndUTXo1UjJqb1lFY0dhTW9KZlVMblQxNlhKZTdNZWZNNjNHdllL?= =?utf-8?B?VXh6eS9peHU2OW1UUU5tTkVlR1dXcmxHZTVnODFRVnlYejVQS2ZVaGlvQkF4?= =?utf-8?B?eTlYQUJXZW1SMm9KTnlvR0swK2J3OE5PSmVTdDdGQktQT2Rxb3MzUHBqTnZG?= =?utf-8?B?dzROVjhnU2xTdWNNUTZvQURwL2praFFEbTJSL09vU2J1KzBEL0JuZ3d1cXdH?= =?utf-8?B?dlZPRi9UTW1FdU91RnlGRkdJeWNtYTNkc3ZydzZGN0ZwVUJzd0Z5R0RVYWI1?= =?utf-8?B?Z1pUcVpIcEEvb0lOY29SdnRvVGhuUDVXR0xicFlUbEhmeC85MVZCZkF0MXQv?= =?utf-8?B?ZTN5NXdoRGFsWFlNZUdWTS92bXFEZDZQMUtOc3pPOEZrQWpQZy9BYjlxVTB2?= =?utf-8?B?NnIzMFIxWXJyLzZNUFlEbXVNd2I2dU5WS0xCNnZuNnQxOGhKZTBUZDlvYlhS?= =?utf-8?B?Mll1MjJJRm5BRDRxbG1TME9mcU5kT1RLU1dKdGNSeWFWd2pTVWhXYjgvU25n?= =?utf-8?B?UDloZkhvMER4MnkrbXdzNWM1QmE3ZVBsck5GeEJKaVllZHZ4ejFZQnQyWjFS?= =?utf-8?B?MzZUVVF0ZklWSXVrenB1dGtIOFZVU1daQXg4ZHNqMlprTm5YaEZRdmk4eVJa?= =?utf-8?B?QnNqaWQ5SEdXcXcybk4vMUVYclNDNFFZaWp4R21GSG1veGFSelpvWVp1Sk9S?= =?utf-8?B?Q2RVeVFzNlladkJaZ0o5Zk9nb3BiSWlZbUIrZVlZcUE5V3drUFdOdUN0SXZL?= =?utf-8?B?aTltQ25nVHcvSWdUR3Fza0xNK0NGMWxYYWtKVXF1WEh4a1RydE9wVUQrWHRE?= =?utf-8?B?S3hwVUZyL1VJeGRERGdnWUNnblJydmlEWS9JT0paQ1Rkc2VMTUNLWEczNm9X?= =?utf-8?B?cU5ka1JMRTdPNWI5eHFXbEVob1R5dXhRZmFRMTNKelBxTWFGRE85c1hLaUNP?= =?utf-8?B?UmN3a09Yc1VTcHRzallhb0tRd2hZZnBpWXdUc1FxOHY5SmNVVFN4N2hUc2s2?= =?utf-8?B?dmhDcU9WVE40d0dCd0YwSEhINXM3NlM3YzBhcUREb2FlZ1lITXUzUDI0Q05t?= =?utf-8?B?SW4xL2tBUHMvRUVHQitvUmRHNDBsWTh3MitDU0xid3lraG1CUE9Bcjd6M0Mz?= =?utf-8?B?ZnQvM3NMekdpaWlMT1poTWhiUEthSVYwdVk0cmNvSTBFK1UzN3RYN0ZTNkQ3?= =?utf-8?B?S25rTDN6K2JvL1REN3ZKL25rWTE4K1cxdnpmTmM5NzZKanB6Y2FFSXFGdTRJ?= =?utf-8?B?bThwZytuYk5DZGgrRU5NOUhpb1pKQXlGanY2Mll0emVIb2lIQzdVNzRMemwy?= =?utf-8?B?VUZXRUhrb1B0alllZC8zWnU4UkhrRWUvUk04SDBlUStuNXM5OGFkQU5GV21s?= =?utf-8?B?Kzhka3BLNURqMkN1M0xEQjlBdGcxMGFObElZbWFXSy8zbmYzR3dub0tTNXBH?= =?utf-8?B?N2c9PQ==?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 48067e5c-42ce-4615-9d79-08ddf127a00a X-MS-Exchange-CrossTenant-AuthSource: GV1PR04MB9135.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Sep 2025 11:37:45.0275 (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: 4DNepOTqprUB9Rv//COP9Rw3RIDWmBkqAKr8BRlP+9iegRMHWIXyLDfN6NRyBrV9NSiDtcZzE8vntpny1yabeA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR04MB9961 i.MX94 series LDB controller shares the same LDB and LVDS control registers as i.MX8MP and i.MX93 but supports a higher maximum clock frequency. Add a 'max_clk_khz' member to the fsl_ldb_devdata structure in order to be able to set different max frequencies for other platforms. Signed-off-by: Laurentiu Palcu Reviewed-by: Frank Li --- drivers/gpu/drm/bridge/fsl-ldb.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/bridge/fsl-ldb.c b/drivers/gpu/drm/bridge/fsl-= ldb.c index 665053d0cb79d2b4f50e69c397863ab024553867..4052e1ea9201fc09d80c678d2b0= 86a4884f34a3c 100644 --- a/drivers/gpu/drm/bridge/fsl-ldb.c +++ b/drivers/gpu/drm/bridge/fsl-ldb.c @@ -57,6 +57,7 @@ enum fsl_ldb_devtype { IMX6SX_LDB, IMX8MP_LDB, IMX93_LDB, + IMX94_LDB, }; =20 struct fsl_ldb_devdata { @@ -64,21 +65,31 @@ struct fsl_ldb_devdata { u32 lvds_ctrl; bool lvds_en_bit; bool single_ctrl_reg; + u32 max_clk_khz; }; =20 static const struct fsl_ldb_devdata fsl_ldb_devdata[] =3D { [IMX6SX_LDB] =3D { .ldb_ctrl =3D 0x18, .single_ctrl_reg =3D true, + .max_clk_khz =3D 80000, }, [IMX8MP_LDB] =3D { .ldb_ctrl =3D 0x5c, .lvds_ctrl =3D 0x128, + .max_clk_khz =3D 80000, }, [IMX93_LDB] =3D { .ldb_ctrl =3D 0x20, .lvds_ctrl =3D 0x24, .lvds_en_bit =3D true, + .max_clk_khz =3D 80000, + }, + [IMX94_LDB] =3D { + .ldb_ctrl =3D 0x04, + .lvds_ctrl =3D 0x08, + .lvds_en_bit =3D true, + .max_clk_khz =3D 165000, }, }; =20 @@ -270,8 +281,9 @@ fsl_ldb_mode_valid(struct drm_bridge *bridge, const struct drm_display_mode *mode) { struct fsl_ldb *fsl_ldb =3D to_fsl_ldb(bridge); + u32 ch_max_clk_khz =3D fsl_ldb->devdata->max_clk_khz; =20 - if (mode->clock > (fsl_ldb_is_dual(fsl_ldb) ? 160000 : 80000)) + if (mode->clock > (fsl_ldb_is_dual(fsl_ldb) ? 2 * ch_max_clk_khz : ch_max= _clk_khz)) return MODE_CLOCK_HIGH; =20 return MODE_OK; @@ -377,6 +389,8 @@ static const struct of_device_id fsl_ldb_match[] =3D { .data =3D &fsl_ldb_devdata[IMX8MP_LDB], }, { .compatible =3D "fsl,imx93-ldb", .data =3D &fsl_ldb_devdata[IMX93_LDB], }, + { .compatible =3D "fsl,imx94-ldb", + .data =3D &fsl_ldb_devdata[IMX94_LDB], }, { /* sentinel */ }, }; MODULE_DEVICE_TABLE(of, fsl_ldb_match); --=20 2.49.0 From nobody Thu Oct 2 20:25:52 2025 Received: from AS8PR04CU009.outbound.protection.outlook.com (mail-westeuropeazon11011046.outbound.protection.outlook.com [52.101.70.46]) (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 74439334376; Thu, 11 Sep 2025 11:37:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.70.46 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757590675; cv=fail; b=HiHujuNSw4RYgnNXYWd0ZymsZGx7ZLo7I4Nj5K1CFq5WADxt363QCusRwZLqGvtMDDawtELQT2Jxtptz//lkqXrwWQPvuqS80QvOA+Bao6TEOYK/q72wlqJZ91+uBsi/zkXXlhFCUbeZKCQp9loBHM8Mu3a1w9Zhor7DmdRFU7c= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757590675; c=relaxed/simple; bh=PsuT5wEawgmSBCCdYZVovd0oNV2QPy9rVFzj0t7j304=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=S/NgNjSMeaR+HcBBvZVsx5XQ23dB8Dk7szEALWeFUyxnRjUjBDevL4pP1mqj7/1jDFWrptqZHMCeDOXBtY557I/nGYvEUJNukA2l/KYDhY7GDR3dFl485K+NYxfkBYSnnhLwDejjLerYFjpMfgO8+nNHqHlvGIxvCcYcmuue9G8= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com; spf=pass smtp.mailfrom=oss.nxp.com; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b=vh0hpRif; arc=fail smtp.client-ip=52.101.70.46 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b="vh0hpRif" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=A1Errn17666pzyHO59Y1hM+vv/jnXQqZn9EQr97TcnaEp6qPBicz515Bflv3fYgBnXN4PIYCwTULb3RDNSxPQ31BdMvrixDDAM2isoRee7nItJs+1IYHLAMA2TsY5iKDfbeBeYbHpIEpx7MNUIKRrpaVBnsltDYkR7AcPG0/nMvF76VxBFNohmzacZryfCCV4V4BwmaeY/BDc5u2HiZxcvX0cv4TX7mSdsq8t8k3bS1SXaQmxXTkTJlHb3dohlTJ37QlE8OaZYu5sGQJmTbH++jG33yVyDlyL6dsPciPIlh2qEP2v08iLwdJ1qCEd6RZwa2mOtv69sdJMxhPq63IEw== 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=AAdOgeg7NPl/P83AFbc+paxfIgIQNZpJAvPLn9PCFmU=; b=vcqLHM73ARmxDfsvrDu+sU7jkaZRgNBV+jYyO0nC9eO+hiawMr8mnp42gwqkLu+du9SLF7igcqdNzIZ93V2+Qvx+xDFhO8ETVkIInbeUofTm7Z7H/Zpn3WFc7vhrntxJosOC+2PgPDF/6jJ+7luBu26jGa/FJlyM0bFLUCnMUfs8f++xU1u2I2ycTCyw2diwlx05ft+/LdVErw+dj2qYc2azJcH/9nDHz1upanFrLBFtfUV7RlIyePCdXNbe0O8Bm1Y94WIeh4oTRFixqeQFMg5BLcndoIxKbPnMnYc7aQ/26S/8nplIyfYteFL8wzqGqQpmoLF57MjhZbyS2kJsKw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector1-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=AAdOgeg7NPl/P83AFbc+paxfIgIQNZpJAvPLn9PCFmU=; b=vh0hpRifC1PXpai1enFHXbOTQSpUfRYOoGuMsy2Q/JHyCvwtHRLVUtNZiqk4W/qOkxzw0e/Ccd9Js49iLoFev570R92Oar4wb3FrQJMRbD/GC9tnBN8mKUgLyNw7M5F+tlBKj93XpoEvW+zTZVGouEA1s7V7tRnVtFNKmWtXZbkpU8HpQXFQCJIxmuXLyLisjlCbCjj5+ly0+K08BC4tYevMR0SJYXCzhZMhstKlgsCZh91g/x1KMzqg0tTNL2Ao3wKr/zvfKHo692WjtsPJwvkqRnRoXVPHjPPOf3B+HOrcHUJkwTtNY/3tc9+CQtKiwgPrcHvDgTDUH/6oLGJuHQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from GV1PR04MB9135.eurprd04.prod.outlook.com (2603:10a6:150:26::19) by VI0PR04MB10317.eurprd04.prod.outlook.com (2603:10a6:800:216::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9115.17; Thu, 11 Sep 2025 11:37:47 +0000 Received: from GV1PR04MB9135.eurprd04.prod.outlook.com ([fe80::b1f6:475e:de5d:8442]) by GV1PR04MB9135.eurprd04.prod.outlook.com ([fe80::b1f6:475e:de5d:8442%5]) with mapi id 15.20.9115.010; Thu, 11 Sep 2025 11:37:47 +0000 From: Laurentiu Palcu To: imx@lists.linux.dev, Laurentiu Palcu , Philipp Zabel , David Airlie , Simona Vetter , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam Cc: dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH v5 4/9] dt-bindings: display: imx: Add i.MX94 DCIF Date: Thu, 11 Sep 2025 14:37:04 +0300 Message-Id: <20250911-dcif-upstreaming-v5-4-a1e8dab8ae40@oss.nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250911-dcif-upstreaming-v5-0-a1e8dab8ae40@oss.nxp.com> References: <20250911-dcif-upstreaming-v5-0-a1e8dab8ae40@oss.nxp.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AM0PR10CA0014.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:208:17c::24) To GV1PR04MB9135.eurprd04.prod.outlook.com (2603:10a6:150:26::19) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1PR04MB9135:EE_|VI0PR04MB10317:EE_ X-MS-Office365-Filtering-Correlation-Id: a36bc46b-cfa7-45e7-1deb-08ddf127a1b3 X-MS-Exchange-SharedMailbox-RoutingAgent-Processed: True X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|19092799006|7416014|376014|366016|1800799024|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?UUdMNko0UHltWTBvMmdSZk4wRWNMZlNoQlFSVThsMkE3VmdZTDBpaTV0WURW?= =?utf-8?B?M0FOZVFqbUdUSmtKaHd0ck0rZmRzMDJ5Z3FvQkxqVVRNdjBSRThONEU3UHFR?= =?utf-8?B?V1BSTzkwTFJjd3pDK1ZpZnFmOTlhL3dFcCtrbUk5cEUxeVNEN3FWc3dtZ0pI?= =?utf-8?B?VjFib3grZkVMcm1ZdzA1K3ZUV3p2UkI4Qnp1UXpnaFNuSFZmT1ZnajhuYUtQ?= =?utf-8?B?UThqKzRtd2hySkJaRHBwdHZOZ0RCeDdFM0RINGpqakVtUlp2aks2ZjUwV0w3?= =?utf-8?B?MFlkd2w0R1RhQmFGalVCdjI1aExuYmd3Y25FemI1TUVEZGFxVG1QRlFXR0tw?= =?utf-8?B?Q1Bibzk3WGpjU3RPQk9Zc2haeG9aR09RcmM0N1A0VXh6QWR5aThwWUMzL2l2?= =?utf-8?B?eFNlanREQlphaVgrQTJpdHBmSG1LZkxlbUhaYXcrT0NKNHdYR2xmVGNhUkJu?= =?utf-8?B?aExVdUpwcmg4aEI2U3IwWHdzQXF1eUN5TkEzRldQTW5hdS95YUZVa21uU0o5?= =?utf-8?B?d0cwaDlJcVhPRUIvZ245NWh4SlREQXdraGRyRWtxekRQU25yelo5LzY1endx?= =?utf-8?B?ZkM1Q2xXcGxjL0dlUm9oaTAxMWsrZWJkb05EcmRMZFhtTVZVNVYvckMzTXZ5?= =?utf-8?B?OHRLZEZqaWhIb3hiOUFrbEtsQms1Q0ZlU1BOOVJXbDI5SEdka2pRRDY5V3Zx?= =?utf-8?B?L0xXQ1paRW1jQUxPZ2pQc3JoazBhanJOblh3RFhiSjVyTnVGVHQ3L0VvMVRE?= =?utf-8?B?Z1EyZEk0MEE3NFpraGJjb2FPQUFqcFdHSTVPMm1laDBaL2IyZjJqZGNRbGQ1?= =?utf-8?B?d0h1K1A1RGtsK05hdTVYUkIwQlFIc0QzSnBzVDd2Y2tNa2JZU1VOanlyaGZv?= =?utf-8?B?azkyamN5MVRFMkVNL1djR2dQYktubFpFcnVyRGdnOWx4TmpSQWlwYWJwaXEv?= =?utf-8?B?UWZBeGlFRURpVGpZSlVMREhlSnFvTzB1QWNpWnZ3eHlaZEM5dUNPVVpkRzBl?= =?utf-8?B?UXB5cjRjRk52aWc5cVUrODNmY0s3cmdrTnR5NzlGRnVNYzE5UjA1KzdVWmxH?= =?utf-8?B?dVJyelEyT2R2ZG9ORURjMGc0YzJGMi9sblFzVmpPN3ZvNW53K3grS3A0WG1H?= =?utf-8?B?Zk9QNUoxWUJPcUtTSndNTmZaT3pKUlVJdXFUQ01ZR1RRdjJiZHBtcGFzS2tr?= =?utf-8?B?cHp3ekYzRE1OU29oMXpFY29HYUQxeHp1N2s3MEdVVHcwNnMwQUt4VG9MbmxD?= =?utf-8?B?ZHd1SWhieDVXL3FjcU1nMm85VzZPQURleEtHT1N2TmxIclEwbmRCQVNSVDRk?= =?utf-8?B?cUp5a1V0akpoMkEydUlZeFlhcHZ6N0M4azdtcTZHTm5ES1ppeU9ZT0N4aE56?= =?utf-8?B?K2piSndGVDNyZk9zZHdLeWlGMTZoemFpQWI4V2NKK3N4UVQ2ZEkyRXBtSHFz?= =?utf-8?B?UXd0Z0NGeFh2a2RjWXkrUk50SE9FeWludmhiaFJvcFJlNThZMG9raTZiNWcw?= =?utf-8?B?ZG1iRnRVVUN6aWFWZGpvcVVyQkJSNlJCWTBNdi9vNU4wejhkQ2ovUEtzdVJT?= =?utf-8?B?Vk5PT3hZeDRBZ3paVncxblFIeGxyZXRKOXZuRGI2WGlDbkIwVkNTQnN1RmdO?= =?utf-8?B?ZGZEWGxjK2dSRm5RYUlQTUloTFJXelJzN2tzNjVOcGxhWUwzd0FEbVQ5UGVk?= =?utf-8?B?WGFmVmZSNXdwZHNpWUh0RlhvQTBKajNrMG9TUEJTdE9Tbjlla1BlMkZQbUl6?= =?utf-8?B?aFJjK0dpYUtBMFBSM0thMERiRGp4SWNlWHovZ1duL2o3T0JpbXdKWERRL2tW?= =?utf-8?B?a2xROHlraEpoS25MQ3Vxd3VsSGduc3RZZE9KM2dZdXpzTEEwRnhEZUxEZTE4?= =?utf-8?B?R085cWZoalhmS2lpRnovVm1WYkRTSFhDSkl6a1BZNTlyekY2amNIZHgrTzFN?= =?utf-8?Q?49OjWwG8W58=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:GV1PR04MB9135.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(19092799006)(7416014)(376014)(366016)(1800799024)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?Q1ZkNDc1S2VGRDYxKytOOG5oWDVzNm9GR29SQnB2WmpJSXlXclhEZFNJSG5p?= =?utf-8?B?amdKTGpvMEMvQ3RtaXVDRXpuTkFDOG8yRmttdGxMZjl6MHdPaDNKL3JIRFgz?= =?utf-8?B?bmZMWWlQN1NFalk0MXUzMFpiR3ZVL2NiN0xteUdlVWF6VnZ4WmFzenpyUWJO?= =?utf-8?B?dXdneW1KM0hCMHFGSitCMHZ2L1hjdi9HRFNqdjl2Q0RScW91TnM0OGl2TXZF?= =?utf-8?B?Q0RSRll6ditJU0RNQkJmRUJqUFFNY2pWS0tZbWNXZVRCOEY2T1JiVFR1OHF5?= =?utf-8?B?dlMvYzJYOU9mYzkzenlnTFBhWVZHVVRWMExJbmtlWmJVKzB4TmE5R0pHeUtW?= =?utf-8?B?TDhsY2VGM1ZMb3ZzdGd3YmVlbjQybjM2dWJNSzVLK3Zmby9kYkVBdFB5Mlhm?= =?utf-8?B?eUxzeE9nOGNCdk5FS2tDZExJa3RUbGJtNHVnY25hc2ZKYzVtK2llY3ZMaUdP?= =?utf-8?B?Y2Z6Yjk1MUM0UjByTVBMUjcydEF1VGdEQTg5UXBrb2Y5UzlJTnVJakF5d0hG?= =?utf-8?B?TFVEUGE0end2bzBBWHRheDRWL0pQOWxJeWJGa2ErVldFbkZNMkI0bElWRkRI?= =?utf-8?B?eGFNWldhQW9RMG5vRWVRd01kVUsrd21RcWNSb05ScFQxUXU3Tml5Yk43dThM?= =?utf-8?B?MTR0c2tXbnJFVG9Ja2hGdEJYRzE5ZDJtejRvTzZsemhUQjFKL1B1ZTlsSkNR?= =?utf-8?B?Um9yWnE3SGdNb1ZaTjlueHZpNUVHSDdha28vNkNsRXJ2NzRUbmhQMDB1Nm9w?= =?utf-8?B?VHlqU3czRHg0a05uYjFBUm5qTmhpU2dXOHRtY0RFY0lDMmtrZU1PenJoSWZG?= =?utf-8?B?MVRUNU5kNjVoeUhTMDlJWnhGRTVqYmdZSEF2MXJuNS9EQ0ZlQ0FtUU4xazlv?= =?utf-8?B?Y2plMmtnZk9RWkNIam55YW9ISFVaK0NTWlpCVzRMeGFNL3NLdktJd25jZHNR?= =?utf-8?B?aGhEdC9USlIzTFRFRVNqRStJampwNGRyakc2R2IyNVluRUtQUTNvdTg1Q0p0?= =?utf-8?B?ZDZudkJXbW5tUEg1R0VGTXFrMHY4Yy8waTZmR2NOZ0loKzh6RmgwSkQxQ2Ir?= =?utf-8?B?cUxaRlI5SmJKc2haQlE1bXQ3SXZ0eGxCVzVvZXM5ZmlpbExuNHVYb2tuR3VD?= =?utf-8?B?c1g1eEhKL2FaaklWWlVvaXlUR0tzNEppbDQ3Slcyek9BUjRNK0dTRGovOTRo?= =?utf-8?B?YVhpSzlMSk13VGhQczJudjhWTzNsYnJaWGR1N2RsUGEreEVJUjdudE1waCt5?= =?utf-8?B?Tm1uc0ozOHVhZmgwcmpYaHlqVGFsUGJTVC8wcmJCMzBhcnpuRUlBNzgzOWI5?= =?utf-8?B?Mk5ITW5XR05EdFpMRjZ3VnU1MW8xN2g5SXJTQWZza3BHU0xjeGRUMWxaelhX?= =?utf-8?B?cEd6REFiMDBpbm9mZThrcDVxdGthL2hMK1FyWVFyRVAyQVB6RWVLZzk5WEFG?= =?utf-8?B?UjRBaFRsbkNjcno1VS8wV051YmdzUEF3NWx1RDJUcEVPNm1zOHFkeEZ1aWVZ?= =?utf-8?B?UU1aU20ybElKcmJJYXN4akJIUXdOT0k2MGNrVzMrbmZhUVQ1d2IzaStZSkgr?= =?utf-8?B?T3o0SkJFcTQrR29ZV1J6ZFRjMHRqOUcwYXhWQ0VkcGZ5SkxObklQYUhSMTNw?= =?utf-8?B?bVM1UURvSkkzT3AvUkZUK0dYbmQwV3hWeHl2eGx2MUx3WGRORXFUeVplTXk4?= =?utf-8?B?clhRTHlPQ1k1NHl3MjJ2eUpVU214RWJyME1YOFdKNHRSZGhScnliUHN0aVJv?= =?utf-8?B?M0Zka0lPTGNkUXpiYnY5N2hmWGxWaEZDUmdKRnRtWXV2bUxYV1ZqendUWmZt?= =?utf-8?B?S21ETmI1ZCtYbkZuQlhpV1B4amVVSlIwUk10eXhMQ3lqdWRGdTZuRVpaQnhK?= =?utf-8?B?ampMRk1DWitLdHZwSnNKRzRGRzIrVDRSVFNNb2ZSODVjQzRyeWdKR0F5RkpU?= =?utf-8?B?eCtrcEpnN3J3WjJjNWN3NHYvNDllV3N1L0tTTTh3cm0wemF1ZTRJR1RkVGdC?= =?utf-8?B?aU9IdjhkUGVCSFFlclpoOHVzTUpyR3N5cXI5d0Z6NllMd0hOU0VqMG9LQnM5?= =?utf-8?B?RW1kSWxudXhEaVpTVGdiN1NWdkJ0Z0dhNUxtYjlkYzA0OTFKSVZydlZ4VG9H?= =?utf-8?B?QlB1ck9qRjA3ZXNpRUlWZW9sd0dUY0xIclI0UE1YS1lGV3dRTHlJMW8ydEty?= =?utf-8?B?QUE9PQ==?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: a36bc46b-cfa7-45e7-1deb-08ddf127a1b3 X-MS-Exchange-CrossTenant-AuthSource: GV1PR04MB9135.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Sep 2025 11:37:47.8216 (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: sK7NHTy5KV6c8KhxEUbTp0Q8AlmMxosYo9OL0Fg2avkm5dfK8dV+5bYLd+LVtoC5CTlI9PD2vlsySb39o3kFZw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI0PR04MB10317 DCIF is the i.MX94 Display Controller Interface which is used to drive a TFT LCD panel or connects to a display interface depending on the chip configuration. Signed-off-by: Laurentiu Palcu Reviewed-by: Krzysztof Kozlowski --- .../bindings/display/imx/nxp,imx94-dcif.yaml | 82 ++++++++++++++++++= ++++ 1 file changed, 82 insertions(+) diff --git a/Documentation/devicetree/bindings/display/imx/nxp,imx94-dcif.y= aml b/Documentation/devicetree/bindings/display/imx/nxp,imx94-dcif.yaml new file mode 100644 index 0000000000000000000000000000000000000000..fb25300e25529699adeb4caad98= 37d7af23a3581 --- /dev/null +++ b/Documentation/devicetree/bindings/display/imx/nxp,imx94-dcif.yaml @@ -0,0 +1,82 @@ +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) +# Copyright 2025 NXP +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/display/imx/nxp,imx94-dcif.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: i.MX94 Display Control Interface (DCIF) + +maintainers: + - Laurentiu Palcu + +description: + The Display Control Interface(DCIF) is a system master that fetches grap= hics + stored in memory and displays them on a TFT LCD panel or connects to a + display interface depending on the chip configuration. + +properties: + compatible: + const: nxp,imx94-dcif + + reg: + maxItems: 1 + + interrupts: + items: + - description: CPU domain 0 (controlled by common registers group). + - description: CPU domain 1 (controlled by background layer register= s group). + - description: CPU domain 2 (controlled by foreground layer register= s group). + + interrupt-names: + items: + - const: common + - const: bg_layer + - const: fg_layer + + clocks: + maxItems: 3 + + clock-names: + items: + - const: apb + - const: axi + - const: pix + + power-domains: + maxItems: 1 + + port: + $ref: /schemas/graph.yaml#/$defs/port-base + unevaluatedProperties: false + description: Display Pixel Interface(DPI) output port + + properties: + endpoint: + $ref: /schemas/media/video-interfaces.yaml# + unevaluatedProperties: false + +additionalProperties: false + +examples: + - | + #include + + display-controller@4b120000 { + compatible =3D "nxp,imx94-dcif"; + reg =3D <0x4b120000 0x300000>; + interrupts =3D , + , + ; + interrupt-names =3D "common", "bg_layer", "fg_layer"; + clocks =3D <&scmi_clk 69>, <&scmi_clk 70>, <&dispmix_csr 0>; + clock-names =3D "apb", "axi", "pix"; + assigned-clocks =3D <&dispmix_csr 0>; + assigned-clock-parents =3D <&ldb_pll_pixel>; + power-domains =3D <&scmi_devpd 11>; + port { + dcif_out: endpoint { + remote-endpoint =3D <&ldb_in>; + }; + }; + }; --=20 2.49.0 From nobody Thu Oct 2 20:25:52 2025 Received: from GVXPR05CU001.outbound.protection.outlook.com (mail-swedencentralazon11013007.outbound.protection.outlook.com [52.101.83.7]) (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 2013C335BCB for ; Thu, 11 Sep 2025 11:37:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.83.7 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757590683; cv=fail; b=dmmICUArRjVDU6hyTVTBHy194gVMk/HUasbcEkH8tgHhr/7ENlQUDS8YL7aLQ8Q3xDsilWg/jdHN4mHs1doHk/IiVg2gg8JW2M19JdMh0juMsIH9FqUAm1cAiPu8hwc4+caZ4K6kK6POXtWog4kYk2PK6abCVYzinqkg59NC6NA= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757590683; c=relaxed/simple; bh=1fspF2hV5NHrXPgt1Wy9cee6/iaKMxiQqJMfsUPpSic=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=bZtK1vBA3O1CUCNg56TmNlRTUBB1Yb6VmflKmbiXs6Q8FW+sMjQo8F+jA5sfxMJnLpw6Ka+WG58w2li+xW9FzhqjND6DPOrCFBmEVgDWftIgrIF38et6w28bYw4wRWDValzKGAQuHBczGL2MSeD7ec3rj0laYPALvxDO8eW43jE= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com; spf=pass smtp.mailfrom=oss.nxp.com; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b=PJOpYA6g; arc=fail smtp.client-ip=52.101.83.7 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b="PJOpYA6g" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=CthSfqe5Y9X9deYydJEt+EWPvIdabFBvgyxvtaA9KbMeNV1kjQy1ZVeFP4vqKeVyWSAFHqTRWzj8+yhvr41WxCPm7x5OObHdOAlBVFp5t3TgDE9NVcCuJY7iid+JB8PKCvJEDg+ySem9P5iWE4tNoouQHi9DnzUhIlO7Ut/Ei8IxAvkFXfZCbKGu9D/woGazBnERI+0yLz9YJA8FzibPbYzPJX5eQxizLUBbynh2SjlPDPOShnBRlCWOytKsTGTsW/Du3L+iidyjqt/MJP/PL2xJNTiV9dCWkbuR7YXgo1eBTQWq83041UCuBiikvPiIrM3cMjwCTVQTdeZWmLKDNQ== 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=6hsbXvMqL/BaeQ5HkMe+4Fl4t6Pt2GXP0X7XdYTDDbg=; b=m+Hbi/Tw3KanWZg3GmgxQ8P3q9Nl6WRS5uzvbty8H62K8S3rg5PehbWGg05JNppWdguJMuvESVGg/c6k6BsFxiFE5/MYjchfJfrEAq7LMznYFh4DHx+x7RiDZd7Vz/dG3PeMG6Ubbi2b60rIs5+Wj1MVQZxBB5WszciKzr4ZMBZh0EMg0lCOvVq3pl+yuzz34eGSOuieyv4bGXiroN8MtFBTcND9i7Eayf2ipF4p/EekDgwelKiEfTGFO/fuEM3OGs4WJJ2+RgI9td6jhQloLUWAie6oTx2wD3wJ3Eitww8mreOtLVAQv2wZ5xjUeYeSyfplPvk5Oj2gPSd5Vz7Glg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector1-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=6hsbXvMqL/BaeQ5HkMe+4Fl4t6Pt2GXP0X7XdYTDDbg=; b=PJOpYA6gHuU6Z8QlGuoOV4PKsnDqgUx8m2QFyb5HeewdHb8pz6jW3xE/ENvcf5PD0bkUoAy4ltQGyXXj9Vhy6H9DeuqPAbZ/yRg4pIug33VWsNDkJL3aR95P1oi/bZIv7qr+ANYZSoA0rBtvGF2XSsjXrdId1CoIVaHBNpAYJXtZRN6DToFsrKaVKPMWagqNR7qjAm3gQcYxHa/AirmmOwEjX1tnyUxv0QCBMT9tYesiOn3ZcaBcHF9r5lqviCnsVV85C2yZq1nDgINf5GsNafHBGKJagQO9PeoSCR7iBrFQsHBzoFYKl7AJ3D7ccfTtuowDGK2qRiwEZ9fGSRB0ug== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from GV1PR04MB9135.eurprd04.prod.outlook.com (2603:10a6:150:26::19) by DB9PR04MB9961.eurprd04.prod.outlook.com (2603:10a6:10:4ee::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9115.14; Thu, 11 Sep 2025 11:37:54 +0000 Received: from GV1PR04MB9135.eurprd04.prod.outlook.com ([fe80::b1f6:475e:de5d:8442]) by GV1PR04MB9135.eurprd04.prod.outlook.com ([fe80::b1f6:475e:de5d:8442%5]) with mapi id 15.20.9115.010; Thu, 11 Sep 2025 11:37:54 +0000 From: Laurentiu Palcu To: imx@lists.linux.dev, Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Laurentiu Palcu Cc: dri-devel@lists.freedesktop.org, Sandor Yu , linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org Subject: [PATCH v5 5/9] drm/imx: Add support for i.MX94 DCIF Date: Thu, 11 Sep 2025 14:37:05 +0300 Message-Id: <20250911-dcif-upstreaming-v5-5-a1e8dab8ae40@oss.nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250911-dcif-upstreaming-v5-0-a1e8dab8ae40@oss.nxp.com> References: <20250911-dcif-upstreaming-v5-0-a1e8dab8ae40@oss.nxp.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AM0PR02CA0035.eurprd02.prod.outlook.com (2603:10a6:208:3e::48) To GV1PR04MB9135.eurprd04.prod.outlook.com (2603:10a6:150:26::19) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1PR04MB9135:EE_|DB9PR04MB9961:EE_ X-MS-Office365-Filtering-Correlation-Id: bd98857d-9d81-4457-5c22-08ddf127a549 X-MS-Exchange-SharedMailbox-RoutingAgent-Processed: True X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|19092799006|376014|1800799024|7416014|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?V2hBa1RTdXIwbFNGU3JiRnZoZmR3QU1mTVZ1a3Y4MWxvVEZPR2JYczZNY3kx?= =?utf-8?B?bU5jYUtHL01vU0lPVEVhaVE2ZzUxdFJwcE5IV01GYU42NnhCRCtJTDcySXJL?= =?utf-8?B?aE96cXE5SVpDdGZTd014ZFVwb1lBVzdVV082bThjTVlQRnNSdXhtZk9XTU5E?= =?utf-8?B?bGttTzE1UjVzWXBucndCZnkwbEdiSUttYkxQZzJ0V3pMZ2N3dHBCa25UNlF3?= =?utf-8?B?RXlzdWNQSWk5QndmZ0IzU3FFR0J1Z0RYZWx2dkFVeFJvak0vZ0s1OWpEbWNi?= =?utf-8?B?dlZuRUowMlYxcWREcG9zR0xnV1lrdUZWd2dESlEySkhwVW01VVl0L0tlRmE3?= =?utf-8?B?NmhvZ3Q5eHBkbDdsRGdoczZYTytwcExhczVoT1pqZTNucURDUWNUTnRpa0Vm?= =?utf-8?B?em10TUk2ZmxNYWloTmZXQTBzeW5rbEZaZm9JOG5za1FTWjIyNHJIZnFmZnFw?= =?utf-8?B?UmlSSkZQVWYySzV4c0ZtT21lbXpOWFhYR3J6dDd1bU9iNkJTYUZxQzlFVjFC?= =?utf-8?B?NjI2MnVKdnNoT2lYQkJJQk02TkE3ek5qR1VrWFJwRWFNWFkvRk5OencyOWxa?= =?utf-8?B?anl2c1pqNXB4THpnV1RDMDBvN3dPNEJsQllzMlhrOElaOUltVHQyZGw2bzMz?= =?utf-8?B?R3dnRExISGpFVzUxd0dRSFExSkNVdHZBcWYzL2doRS9iMXBoNnFiZHN1TTY3?= =?utf-8?B?QnRtNCt0RmxKNDlKRFhibW42QzR3anlFMHhRekdVV0N5SnF0OTRjbFdJdkI0?= =?utf-8?B?aUVxQ25mUWVpTm52OUJIRnhlb2d4eTNRcURwOWtVS3FrMDBXbktmQXpSYVFi?= =?utf-8?B?dVRPVCtQWUhCdnZmNHc1cDcrRjVxSzVwZXZUTUpvUVFOUXBUNlExRTVHTUZY?= =?utf-8?B?NkV2alhNYVBDMDhvekU2MEUvQ2t6U3crSzE4dEtsZVE1c2xhR3Ewa1hySjVC?= =?utf-8?B?UHNUdStUc3IvWWRSNTllZUFzU2Y0WFFCeHlWbnJQbW1hVUFmY2JIeGNRQXVl?= =?utf-8?B?NTFpVVEzWlFQUng3ZlMvK0VWYXRVL2FqYmIxMUJMVHNhM3Jwdlg2YkVaQWRV?= =?utf-8?B?VGF4NXNpSDdTZ2pMcllsWGVkK1VlUTU1dWNKaTliUHhwWGJDMDlmdGkvZWRS?= =?utf-8?B?TEtzRUR2c01YeHhrQytJeVRDUzdMNmhHRTE2eW5aRDFqSGl1dmRjOGlFRFFP?= =?utf-8?B?ejNDaFpRVHE5UEVhZWpHcGMwcFQ0TE52dlRtZjh4SmlWNC9kNXZtclFKN3dz?= =?utf-8?B?NEYyZG0rRC9sMFJPLzlmYSt5eWxLS1lMbEIrc08zbEVvUU03TGgyZFpWSnBK?= =?utf-8?B?azVmekpNU2JYN2lMbjRObjZkbEFkSElFbEIzODhXY2FSWVZDVC9oOFAvQ0s0?= =?utf-8?B?OVpQRWVLR2lGYUZWWkRLRVpGZTdUODZWQkpqZEZEQmFQbEdkcXZ4VUVPY2JI?= =?utf-8?B?d2pDMUNLR1psZjZNdFQ5WE1HNVJpRWxuSmY0c0dlYmk5ZWZzdnhFSE5QeU1U?= =?utf-8?B?NEpFVDg4YWhuS29HekZpa0dxdFNWOG45VDNrS29ESkhuMnpEc3VPczg0QTBh?= =?utf-8?B?RVFOc2JIRE94RHhIWFBhWFpKVlY1NTBqbUpxZnpmZ1pUK3VpcXAzbU44TXFw?= =?utf-8?B?OVhFY0J0VHh2S3FGUUllNkh4aHRPWGNZUUdGc202c3oyZEdweC9sM1k5S0FS?= =?utf-8?B?U1F6UjRIVHN2ZmZjREtDQkhjMzFxT1FhSUo2WW9OWjFkcHdqbU43Wm4yUDRh?= =?utf-8?B?ZlpGSTNZK2h4aHJWRDRDOFNpL3JCRDdWTVpyWS9yeE5RcTkyMXZkT0poaGtC?= =?utf-8?B?NUVjTlZMY0lWTVdUdm82UHQvUTdJRERvNmh2MzBveEdJTW9iUmVyTlFobjN4?= =?utf-8?B?YkxKZUpMSUROSFV6TmpCK3pIdkdmSWNFczMyUUtrZU5MTHdXVnJ5SFMyWUNm?= =?utf-8?B?dHZEbUlQOS82bGdyWUJOZ1ZETFQydkYvaWtvRjdxWk0yRHloaXZET2FOR3hk?= =?utf-8?B?OXpzSElOWDR3PT0=?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:GV1PR04MB9135.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(19092799006)(376014)(1800799024)(7416014)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?elEvS3BNSUh1NWYzTThtZkdTa01RdUxyYUtBUjB2V0xJUFlwNjkya3lDTUpS?= =?utf-8?B?b1JBSVhmN2xYbmtHaGM2VmwwQkxka1Q4MFZBMU1RdVBSWXFCRjg3R0RjRGtz?= =?utf-8?B?OTA5bnNxNGt3dlBZd3JPdVoyY1BiSWU2WkxUVUNRRXpWWXpnZmJEcm5uRWNa?= =?utf-8?B?VHRnVW1zK0lLbE4xUjl6U2xwQjZzRTZOOHNSY29aMk1zVUNyUFRnb1Rqdmo0?= =?utf-8?B?NTIzUzBXeU5WajhVRFZ0RzVVMWlrVTdkMGNaQWNJbkFWSXhHSitTVzVFenFa?= =?utf-8?B?My9ZTDlTck8rd3lmU3NjRFJ3NjF4cWhwbTlySmFDbXRIVjFZbGJaMmNYNXpI?= =?utf-8?B?SUdQT3hiL1cxcEZrQ3BMS0FzWjVadU0ydGtoaUt1T1p1WlRIRWxkM2gxZmpK?= =?utf-8?B?NmdBQWpBS1lQOFlIUUl2dEpLcUZqRS9tdk92ODQ1cGx1MVNZaUN0YVBxNHFS?= =?utf-8?B?cTY3VGRUcEQ5MjQwWTNrb2dFd0d3V0craTNDMVU4d1NrK2dwUnN3Q1pUUTlh?= =?utf-8?B?byttTmZVeHZBU0dCZCswVHZkZkg1bXFGK2xWb1dKL3ROU0Erc1NhMSttYXJR?= =?utf-8?B?c1NpUC8vSUp3bXBjTEdsMmw2eGlYQmY4UGx2cTZZajBlbTZ6UGM0cEtIcmta?= =?utf-8?B?ZUpLcHduakJuMjVSRklYS3BpUUtDZExsQml2SzBUbGoveHVCeTZtNUpOaW9K?= =?utf-8?B?Ym1qTUJ6bFZxZy9vR0xaQmxnNUFLM2NVbDlOVTRrakltanRjTEJFNUJhRzRE?= =?utf-8?B?VmkrTk9TZ0I0eFM5VXZIb0dhT2E1U0U5aWFhdlVnQWI2NG9lSmNudVdlY0lV?= =?utf-8?B?RGZNK1Foc0lZUldsR0FXVDJNOGtydDNzMm5BMDY0Z3BNbGE0WU05djAzVTlH?= =?utf-8?B?SHZBZ2RBTGl0UWN1bk1nUmdnUWJSS2QzTUNMaGFOT21oc1EreTJya2s4b3hx?= =?utf-8?B?cGplMGY5UzhZNUxwUzc2VHVtWi9wMWdXNFRIbEZFaHpwL1d5ZTBIL0daTTYv?= =?utf-8?B?eEJTN2hveFNmcFd5SkFlQkVXTWVSVHJpVlRCajAzZkxvQWNlTTBiM09GUlV2?= =?utf-8?B?Y2VBR2RFUTJBclVIeHBvZ0tEY0pmdXVxZWRVeUoraFFyTFhLSVhMd3RrWjRx?= =?utf-8?B?VDRQb25EdWJGZkxZMUhUREJvOGdiSmU2Z3BsWk1LVERyemtBMnp2UUFRUG1E?= =?utf-8?B?d3ExQm1zYXNNTUlyMTVNOHdKd0htRVZlWG5zZFFGMmtZeFdqVk5tbUlzc0Mw?= =?utf-8?B?Q3RSaTdyb3pEK3FNQ25WcVJ2ZkZ3SWovem9ZRFNmdThSWGwyY2xqckVnMlBK?= =?utf-8?B?MURucnV6ZTBuYlRpb3FPM0dzc3JUaVUrSkRJRG1qby9seVBlOXAzOWpOamNX?= =?utf-8?B?c0l3VzJpcm9wZnlrQ0FTbE1pSmp2c2lRMWoxVGF2dWxRUjFtSnlwQXZVR3Z0?= =?utf-8?B?NE9wQlNrc2oyTTRwMUhaS0UxK3hQOW9lWUxIZit3QStEWFVxN3FIVEFMNXVQ?= =?utf-8?B?WmI5Q1R2SDZkYkRwSmhUTFNsZHhtL1pEOUVLbjhLRERoR2FZcnlFSHBXVFJp?= =?utf-8?B?VStBK3ArQ0Y2ajBsblJFQXhaODNVb0F2QTZrWVZEa0ZIK0FvdHZ2empmZ2tX?= =?utf-8?B?S3ZOMGZDQ2tzU1JpWEl1MXQ0WlA5REhwMWVRTDNxdHlkeUpFYW9IZ2hlaE5F?= =?utf-8?B?VzBoRVlqOUYzQUxTMW1EcTc3dGNtQmV6UkhTY0hWVDVHQ1ExY1dQZnFNbUZW?= =?utf-8?B?U3VvaE8wSStrSTVRQnRDWkMxWFFZdXVhZ2REcHZHWFNhT04yZ2pzdUFLY2VG?= =?utf-8?B?clNSM2NLOHpYZktTUG9vVHlmdVFYTFg5R29tNi9Ua0tadFdmYmR6bHRrM1dv?= =?utf-8?B?ZzRtM1VnNldiVFpaTXcwNXdXSlR3WGxKQzdLQ1h3RStqbEc4U0g2YUNDbWl5?= =?utf-8?B?RzhPU2RmRldybVErS2x2ZHlUMEppNFZIcGZqZnJjZ3IzVEw0VG4zdU1wNWxN?= =?utf-8?B?UW0rNGFYQ0RGVGswdDh0eTZFQ090VmlnTmNDTEFqTVRqRklyU0VmZXdJM2ow?= =?utf-8?B?ZzlkZE1RaGlha016czRJM3hFRC9UOVBkbGozT1YvVDV0UENMZWw1bDl1RWU1?= =?utf-8?B?ZnFMSXZtSHNpQW9ubnF0ZzM1RkNMVGN2aXE1eFpRZnpQV2srWmdIbVZXKy9K?= =?utf-8?B?MGc9PQ==?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: bd98857d-9d81-4457-5c22-08ddf127a549 X-MS-Exchange-CrossTenant-AuthSource: GV1PR04MB9135.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Sep 2025 11:37:54.3024 (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: Ly/OfE29afKwfdbYWoLtgi50+ImTz4pxP+6QYU9K61NyVF86KOIkDokThEV8dhbdfS8gwKfSOL6uAotWI2dYNw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR04MB9961 From: Sandor Yu The i.MX94 Display Control Interface features: * Up to maximum 3 layers of alpha blending: - 1 background layer(Layer 0); - 1 foreground layer(Layer 1); - A programmable constant color behind the background layer; * Each layer supports: - programmable plane size; - programmable background color; - embedded alpha and global alpha; * Data output with CRC checksum for 4 programmable regions; Signed-off-by: Sandor Yu Signed-off-by: Laurentiu Palcu --- drivers/gpu/drm/imx/Kconfig | 1 + drivers/gpu/drm/imx/Makefile | 1 + drivers/gpu/drm/imx/dcif/Kconfig | 15 + drivers/gpu/drm/imx/dcif/Makefile | 5 + drivers/gpu/drm/imx/dcif/dcif-crc.c | 211 +++++++++++ drivers/gpu/drm/imx/dcif/dcif-crc.h | 52 +++ drivers/gpu/drm/imx/dcif/dcif-crtc.c | 695 ++++++++++++++++++++++++++++++= ++++ drivers/gpu/drm/imx/dcif/dcif-drv.c | 226 +++++++++++ drivers/gpu/drm/imx/dcif/dcif-drv.h | 86 +++++ drivers/gpu/drm/imx/dcif/dcif-kms.c | 100 +++++ drivers/gpu/drm/imx/dcif/dcif-plane.c | 269 +++++++++++++ drivers/gpu/drm/imx/dcif/dcif-reg.h | 267 +++++++++++++ 12 files changed, 1928 insertions(+) diff --git a/drivers/gpu/drm/imx/Kconfig b/drivers/gpu/drm/imx/Kconfig index 3e8c6edbc17c28bf53cd775ad06a2585e6001e7c..1b6ced5c60b510706e4ac1c2f60= 3671fdeb86a0c 100644 --- a/drivers/gpu/drm/imx/Kconfig +++ b/drivers/gpu/drm/imx/Kconfig @@ -1,6 +1,7 @@ # SPDX-License-Identifier: GPL-2.0-only =20 source "drivers/gpu/drm/imx/dc/Kconfig" +source "drivers/gpu/drm/imx/dcif/Kconfig" source "drivers/gpu/drm/imx/dcss/Kconfig" source "drivers/gpu/drm/imx/ipuv3/Kconfig" source "drivers/gpu/drm/imx/lcdc/Kconfig" diff --git a/drivers/gpu/drm/imx/Makefile b/drivers/gpu/drm/imx/Makefile index c7b317640d71d65e19455d6058cd178e62c30c2b..2b9fd85eefaa33bb72e65b329b2= 7e605ac2370aa 100644 --- a/drivers/gpu/drm/imx/Makefile +++ b/drivers/gpu/drm/imx/Makefile @@ -1,6 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 =20 obj-$(CONFIG_DRM_IMX8_DC) +=3D dc/ +obj-$(CONFIG_DRM_IMX_DCIF) +=3D dcif/ obj-$(CONFIG_DRM_IMX_DCSS) +=3D dcss/ obj-$(CONFIG_DRM_IMX) +=3D ipuv3/ obj-$(CONFIG_DRM_IMX_LCDC) +=3D lcdc/ diff --git a/drivers/gpu/drm/imx/dcif/Kconfig b/drivers/gpu/drm/imx/dcif/Kc= onfig new file mode 100644 index 0000000000000000000000000000000000000000..c33c662721d36fd07f62623f799= 73bef1a5e1903 --- /dev/null +++ b/drivers/gpu/drm/imx/dcif/Kconfig @@ -0,0 +1,15 @@ +config DRM_IMX_DCIF + tristate "DRM support for NXP i.MX94 DCIF" + select DRM_KMS_HELPER + select VIDEOMODE_HELPERS + select DRM_GEM_DMA_HELPER + select DRM_DISPLAY_HELPER + select DRM_BRIDGE_CONNECTOR + select DRM_CLIENT_SELECTION + depends on DRM && OF && ARCH_MXC + depends on COMMON_CLK + help + Enable NXP i.MX94 Display Control Interface(DCIF) support. The DCIF is + a system master that fetches graphics stored in memory and displays + them on a TFT LCD panel or connects to a display interface depending + on the chip configuration. diff --git a/drivers/gpu/drm/imx/dcif/Makefile b/drivers/gpu/drm/imx/dcif/M= akefile new file mode 100644 index 0000000000000000000000000000000000000000..b429572040f0e180bcaa611e702= 4dbf1ffbf6f6e --- /dev/null +++ b/drivers/gpu/drm/imx/dcif/Makefile @@ -0,0 +1,5 @@ +# SPDX-License-Identifier: GPL-2.0 + +imx-dcif-drm-objs :=3D dcif-crc.o dcif-crtc.o dcif-drv.o dcif-kms.o dcif-p= lane.o + +obj-$(CONFIG_DRM_IMX_DCIF) +=3D imx-dcif-drm.o diff --git a/drivers/gpu/drm/imx/dcif/dcif-crc.c b/drivers/gpu/drm/imx/dcif= /dcif-crc.c new file mode 100644 index 0000000000000000000000000000000000000000..35743130ccc14847ec889537c7b= bcd7cf8c3189a --- /dev/null +++ b/drivers/gpu/drm/imx/dcif/dcif-crc.c @@ -0,0 +1,211 @@ +// SPDX-License-Identifier: GPL-2.0 + +/* + * Copyright 2025 NXP + */ + +#include + +#include +#include + +#include "dcif-crc.h" +#include "dcif-reg.h" + +#define MAX_DCIF_CRC_NUM 4 + +static int dcif_crc_config(struct dcif_dev *dcif, struct drm_rect *roi, in= t ncrc) +{ + int pos, size; + + if (ncrc >=3D MAX_DCIF_CRC_NUM) + return -EINVAL; + + pos =3D DCIF_CRC_POS_CRC_HOR_POS(roi->x1) | + DCIF_CRC_POS_CRC_VER_POS(roi->y1); + size =3D DCIF_CRC_SIZE_CRC_HOR_SIZE(roi->x2 - roi->x1) | + DCIF_CRC_SIZE_CRC_VER_SIZE(roi->y2 - roi->y1); + + regmap_write(dcif->regmap, DCIF_CRC_POS_R(ncrc), pos); + regmap_write(dcif->regmap, DCIF_CRC_SIZE_R(ncrc), size); + + regmap_set_bits(dcif->regmap, DCIF_CRC_CTRL, + DCIF_CRC_CTRL_CRC_EN(ncrc) | DCIF_CRC_CTRL_CRC_ERR_CNT_RST); + + return 0; +} + +void dcif_crtc_enable_crc_source(struct dcif_dev *dcif, + enum dcif_crc_source source, + struct drm_rect *roi, + int ncrc) +{ + if (ncrc >=3D MAX_DCIF_CRC_NUM) + return; + + if (source =3D=3D DCIF_CRC_SRC_NONE) + return; + + if (dcif->crc_is_enabled) + return; + + dcif_crc_config(dcif, roi, ncrc); + + regmap_set_bits(dcif->regmap, DCIF_CRC_CTRL, + DCIF_CRC_CTRL_CRC_MODE | DCIF_CRC_CTRL_CRC_SHADOW_LOAD_EN | + DCIF_CRC_CTRL_CRC_TRIG); + + dcif->crc_is_enabled =3D true; +} + +void dcif_crtc_disable_crc_source(struct dcif_dev *dcif, int ncrc) +{ + if (!dcif->crc_is_enabled) + return; + + if (ncrc >=3D MAX_DCIF_CRC_NUM) + return; + + regmap_clear_bits(dcif->regmap, DCIF_CRC_CTRL, DCIF_CRC_CTRL_CRC_EN(ncrc)= ); + + dcif->crc_is_enabled =3D false; +} + +/* + * Supported modes and source names: + * 1) auto mode: + * "auto" should be selected as the source name. + * The evaluation window is the same to the display region as + * indicated by drm_crtc_state->adjusted_mode. + * + * 2) region of interest(ROI) mode: + * "roi:x1,y1,x2,y2" should be selected as the source name. + * The region of interest is defined by the inclusive upper left + * position at (x1, y1) and the exclusive lower right position + * at (x2, y2), see struct drm_rect for the same idea. + * The evaluation window is the region of interest. + */ +static int +dcif_crc_parse_source(const char *source_name, enum dcif_crc_source *s, + struct drm_rect *roi) +{ + static const char roi_prefix[] =3D "roi:"; + + if (!source_name) { + *s =3D DCIF_CRC_SRC_NONE; + } else if (!strcmp(source_name, "auto")) { + *s =3D DCIF_CRC_SRC_FRAME; + } else if (strstarts(source_name, roi_prefix)) { + char *options __free(kfree) =3D NULL, *opt; + int len =3D strlen(roi_prefix); + int params[4]; + int i =3D 0, ret; + + options =3D kstrdup(source_name + len, GFP_KERNEL); + + while ((opt =3D strsep(&options, ",")) !=3D NULL) { + if (i > 3) + return -EINVAL; + + ret =3D kstrtouint(opt, 10, ¶ms[i]); + if (ret < 0) + return ret; + + if (params[i] < 0) + return -EINVAL; + + i++; + } + + if (i !=3D 4) + return -EINVAL; + + roi->x1 =3D params[0]; + roi->y1 =3D params[1]; + roi->x2 =3D params[2]; + roi->y2 =3D params[3]; + + if (!drm_rect_visible(roi)) + return -EINVAL; + + *s =3D DCIF_CRC_SRC_FRAME_ROI; + } else { + return -EINVAL; + } + + return 0; +} + +int dcif_crtc_verify_crc_source(struct drm_crtc *crtc, const char *source_= name, + size_t *values_cnt) +{ + struct dcif_dev *dcif =3D crtc_to_dcif_dev(crtc); + enum dcif_crc_source source; + struct drm_rect roi; + + if (dcif_crc_parse_source(source_name, &source, &roi) < 0) { + dev_dbg(dcif->drm.dev, "unknown source %s\n", source_name); + return -EINVAL; + } + + *values_cnt =3D 1; + + return 0; +} + +int dcif_crtc_set_crc_source(struct drm_crtc *crtc, const char *source_nam= e) +{ + struct dcif_dev *dcif =3D crtc_to_dcif_dev(crtc); + struct drm_modeset_acquire_ctx ctx; + struct drm_crtc_state *crtc_state; + struct drm_atomic_state *state; + struct drm_rect roi =3D {0, 0, 0, 0}; + enum dcif_crc_source source; + int ret; + + if (dcif_crc_parse_source(source_name, &source, &roi) < 0) { + dev_dbg(dcif->drm.dev, "unknown source %s\n", source_name); + return -EINVAL; + } + + /* Perform an atomic commit to set the CRC source. */ + drm_modeset_acquire_init(&ctx, 0); + + state =3D drm_atomic_state_alloc(crtc->dev); + if (!state) { + ret =3D -ENOMEM; + goto unlock; + } + + state->acquire_ctx =3D &ctx; + +retry: + crtc_state =3D drm_atomic_get_crtc_state(state, crtc); + if (!IS_ERR(crtc_state)) { + struct dcif_crtc_state *dcif_crtc_state; + + dcif_crtc_state =3D to_dcif_crtc_state(crtc_state); + + dcif_crtc_state->crc.source =3D source; + dcif_copy_roi(&roi, &dcif_crtc_state->crc.roi); + + ret =3D drm_atomic_commit(state); + } else { + ret =3D PTR_ERR(crtc_state); + } + + if (ret =3D=3D -EDEADLK) { + drm_atomic_state_clear(state); + drm_modeset_backoff(&ctx); + goto retry; + } + + drm_atomic_state_put(state); + +unlock: + drm_modeset_drop_locks(&ctx); + drm_modeset_acquire_fini(&ctx); + + return ret; +} + diff --git a/drivers/gpu/drm/imx/dcif/dcif-crc.h b/drivers/gpu/drm/imx/dcif= /dcif-crc.h new file mode 100644 index 0000000000000000000000000000000000000000..a51b44165d564205a91381e21c2= 30f336d0d5bc9 --- /dev/null +++ b/drivers/gpu/drm/imx/dcif/dcif-crc.h @@ -0,0 +1,52 @@ +/* SPDX-License-Identifier: GPL-2.0 */ + +/* + * Copyright 2025 NXP + */ + +#ifndef __DCIF_CRC_H__ +#define __DCIF_CRC_H__ + +#include + +#include "dcif-drv.h" + +static inline bool to_enable_dcif_crc(struct dcif_crtc_state *new_dcstate, + struct dcif_crtc_state *old_dcstate) +{ + return old_dcstate->crc.source =3D=3D DCIF_CRC_SRC_NONE && + new_dcstate->crc.source !=3D DCIF_CRC_SRC_NONE; +} + +static inline bool to_disable_dcif_crc(struct dcif_crtc_state *new_dcstate, + struct dcif_crtc_state *old_dcstate) +{ + return old_dcstate->crc.source !=3D DCIF_CRC_SRC_NONE && + new_dcstate->crc.source =3D=3D DCIF_CRC_SRC_NONE; +} + +static inline void dcif_copy_roi(struct drm_rect *from, struct drm_rect *t= o) +{ + to->x1 =3D from->x1; + to->y1 =3D from->y1; + to->x2 =3D from->x2; + to->y2 =3D from->y2; +} + +#ifdef CONFIG_DEBUG_FS +int dcif_crtc_verify_crc_source(struct drm_crtc *crtc, const char *source_= name, + size_t *values_cnt); +int dcif_crtc_set_crc_source(struct drm_crtc *crtc, const char *source_nam= e); +void dcif_crtc_enable_crc_source(struct dcif_dev *dcif, + enum dcif_crc_source source, + struct drm_rect *roi, + int ncrc); +void dcif_crtc_disable_crc_source(struct dcif_dev *dcif, int ncrc); +#else +#define dcif_crtc_verify_crc_source NULL +#define dcif_crtc_set_crc_source NULL +#define dcif_crtc_enable_crc_source NULL +#define dcif_crtc_disable_crc_source NULL +#endif + +#endif /* __DCIF_CRC_H__ */ diff --git a/drivers/gpu/drm/imx/dcif/dcif-crtc.c b/drivers/gpu/drm/imx/dci= f/dcif-crtc.c new file mode 100644 index 0000000000000000000000000000000000000000..acf378a0ad180c3a830ee638baa= c189b34fdedf5 --- /dev/null +++ b/drivers/gpu/drm/imx/dcif/dcif-crtc.c @@ -0,0 +1,695 @@ +// SPDX-License-Identifier: GPL-2.0 + +/* + * Copyright 2025 NXP + */ + +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "dcif-crc.h" +#include "dcif-drv.h" +#include "dcif-reg.h" + +#define DCIF_MAX_PIXEL_CLOCK 148500000 + +/* -----------------------------------------------------------------------= ------ + * CRTC + */ + +/* + * For conversion from YCbCr to RGB, the CSC operates as follows: + * + * |R| |A1 A2 A3| |Y + D1| + * |G| =3D |B1 B2 B3| * |Cb + D2| + * |B| |C1 C2 C3| |Cr + D3| + * + * The A, B and C coefficients are expressed as signed Q3.8 fixed point va= lues and + * the D coefficients as signed Q9.0. + */ +static const u32 dcif_yuv2rgb_coeffs[3][2][6] =3D { + [DRM_COLOR_YCBCR_BT601] =3D { + [DRM_COLOR_YCBCR_LIMITED_RANGE] =3D { + /* + * BT.601 limited range: + * + * |R| |1.1644 0.0000 1.5960| |Y - 16 | + * |G| =3D |1.1644 -0.3917 -0.8129| * |Cb - 128| + * |B| |1.1644 2.0172 0.0000| |Cr - 128| + */ + DCIF_CSC_COEF0_L0_A1(0x12a) | DCIF_CSC_COEF0_L0_A2(0x000), + DCIF_CSC_COEF1_L0_A3(0x199) | DCIF_CSC_COEF1_L0_B1(0x12a), + DCIF_CSC_COEF2_L0_B2(0x79c) | DCIF_CSC_COEF2_L0_B3(0x730), + DCIF_CSC_COEF3_L0_C1(0x12a) | DCIF_CSC_COEF3_L0_C2(0x204), + DCIF_CSC_COEF4_L0_C3(0x000) | DCIF_CSC_COEF4_L0_D1(0x1f0), + DCIF_CSC_COEF5_L0_D2(0x180) | DCIF_CSC_COEF5_L0_D3(0x180), + }, + [DRM_COLOR_YCBCR_FULL_RANGE] =3D { + /* + * BT.601 full range: + * + * |R| |1.0000 0.0000 1.4020| |Y - 0 | + * |G| =3D |1.0000 -0.3441 -0.7141| * |Cb - 128| + * |B| |1.0000 1.7720 0.0000| |Cr - 128| + */ + DCIF_CSC_COEF0_L0_A1(0x100) | DCIF_CSC_COEF0_L0_A2(0x000), + DCIF_CSC_COEF1_L0_A3(0x167) | DCIF_CSC_COEF1_L0_B1(0x100), + DCIF_CSC_COEF2_L0_B2(0x7a8) | DCIF_CSC_COEF2_L0_B3(0x749), + DCIF_CSC_COEF3_L0_C1(0x100) | DCIF_CSC_COEF3_L0_C2(0x1c6), + DCIF_CSC_COEF4_L0_C3(0x000) | DCIF_CSC_COEF4_L0_D1(0x000), + DCIF_CSC_COEF5_L0_D2(0x180) | DCIF_CSC_COEF5_L0_D3(0x180), + }, + }, + [DRM_COLOR_YCBCR_BT709] =3D { + [DRM_COLOR_YCBCR_LIMITED_RANGE] =3D { + /* + * Rec.709 limited range: + * + * |R| |1.1644 0.0000 1.7927| |Y - 16 | + * |G| =3D |1.1644 -0.2132 -0.5329| * |Cb - 128| + * |B| |1.1644 2.1124 0.0000| |Cr - 128| + */ + DCIF_CSC_COEF0_L0_A1(0x12a) | DCIF_CSC_COEF0_L0_A2(0x000), + DCIF_CSC_COEF1_L0_A3(0x1cb) | DCIF_CSC_COEF1_L0_B1(0x12a), + DCIF_CSC_COEF2_L0_B2(0x7c9) | DCIF_CSC_COEF2_L0_B3(0x778), + DCIF_CSC_COEF3_L0_C1(0x12a) | DCIF_CSC_COEF3_L0_C2(0x21d), + DCIF_CSC_COEF4_L0_C3(0x000) | DCIF_CSC_COEF4_L0_D1(0x1f0), + DCIF_CSC_COEF5_L0_D2(0x180) | DCIF_CSC_COEF5_L0_D3(0x180), + }, + [DRM_COLOR_YCBCR_FULL_RANGE] =3D { + /* + * Rec.709 full range: + * + * |R| |1.0000 0.0000 1.5748| |Y - 0 | + * |G| =3D |1.0000 -0.1873 -0.4681| * |Cb - 128| + * |B| |1.0000 1.8556 0.0000| |Cr - 128| + */ + DCIF_CSC_COEF0_L0_A1(0x100) | DCIF_CSC_COEF0_L0_A2(0x000), + DCIF_CSC_COEF1_L0_A3(0x193) | DCIF_CSC_COEF1_L0_B1(0x100), + DCIF_CSC_COEF2_L0_B2(0x7d0) | DCIF_CSC_COEF2_L0_B3(0x788), + DCIF_CSC_COEF3_L0_C1(0x100) | DCIF_CSC_COEF3_L0_C2(0x1db), + DCIF_CSC_COEF4_L0_C3(0x000) | DCIF_CSC_COEF4_L0_D1(0x000), + DCIF_CSC_COEF5_L0_D2(0x180) | DCIF_CSC_COEF5_L0_D3(0x180), + }, + }, + [DRM_COLOR_YCBCR_BT2020] =3D { + [DRM_COLOR_YCBCR_LIMITED_RANGE] =3D { + /* + * BT.2020 limited range: + * + * |R| |1.1644 0.0000 1.6787| |Y - 16 | + * |G| =3D |1.1644 -0.1874 -0.6505| * |Cb - 128| + * |B| |1.1644 2.1418 0.0000| |Cr - 128| + */ + DCIF_CSC_COEF0_L0_A1(0x12a) | DCIF_CSC_COEF0_L0_A2(0x000), + DCIF_CSC_COEF1_L0_A3(0x1ae) | DCIF_CSC_COEF1_L0_B1(0x12a), + DCIF_CSC_COEF2_L0_B2(0x7d0) | DCIF_CSC_COEF2_L0_B3(0x759), + DCIF_CSC_COEF3_L0_C1(0x12a) | DCIF_CSC_COEF3_L0_C2(0x224), + DCIF_CSC_COEF4_L0_C3(0x000) | DCIF_CSC_COEF4_L0_D1(0x1f0), + DCIF_CSC_COEF5_L0_D2(0x180) | DCIF_CSC_COEF5_L0_D3(0x180), + }, + [DRM_COLOR_YCBCR_FULL_RANGE] =3D { + /* + * BT.2020 full range: + * + * |R| |1.0000 0.0000 1.4746| |Y - 0 | + * |G| =3D |1.0000 -0.1646 -0.5714| * |Cb - 128| + * |B| |1.0000 1.8814 0.0000| |Cr - 128| + */ + DCIF_CSC_COEF0_L0_A1(0x100) | DCIF_CSC_COEF0_L0_A2(0x000), + DCIF_CSC_COEF1_L0_A3(0x179) | DCIF_CSC_COEF1_L0_B1(0x100), + DCIF_CSC_COEF2_L0_B2(0x7d6) | DCIF_CSC_COEF2_L0_B3(0x76e), + DCIF_CSC_COEF3_L0_C1(0x100) | DCIF_CSC_COEF3_L0_C2(0x1e2), + DCIF_CSC_COEF4_L0_C3(0x000) | DCIF_CSC_COEF4_L0_D1(0x000), + DCIF_CSC_COEF5_L0_D2(0x180) | DCIF_CSC_COEF5_L0_D3(0x180), + }, + }, +}; + +static enum drm_mode_status dcif_crtc_mode_valid(struct drm_crtc *crtc, + const struct drm_display_mode *mode) +{ + if (mode->crtc_clock > DCIF_MAX_PIXEL_CLOCK) + return MODE_CLOCK_HIGH; + + return MODE_OK; +} + +static void dcif_set_formats(struct dcif_dev *dcif, struct drm_plane_state= *plane_state, + const u32 bus_format) +{ + const u32 format =3D plane_state->fb->format->format; + struct drm_device *drm =3D &dcif->drm; + bool in_yuv =3D false; + u32 reg =3D 0; + + switch (bus_format) { + case MEDIA_BUS_FMT_RGB565_1X16: + reg |=3D DCIF_DPI_CTRL_DATA_PATTERN(PATTERN_RGB565); + break; + case MEDIA_BUS_FMT_RGB888_1X24: + reg |=3D DCIF_DPI_CTRL_DATA_PATTERN(PATTERN_RGB888); + break; + case MEDIA_BUS_FMT_RBG888_1X24: + reg |=3D DCIF_DPI_CTRL_DATA_PATTERN(PATTERN_RBG888); + break; + case MEDIA_BUS_FMT_BGR888_1X24: + reg |=3D DCIF_DPI_CTRL_DATA_PATTERN(PATTERN_BGR888); + break; + case MEDIA_BUS_FMT_GBR888_1X24: + reg |=3D DCIF_DPI_CTRL_DATA_PATTERN(PATTERN_GBR888); + break; + default: + dev_err(drm->dev, "Unknown media bus format 0x%x\n", bus_format); + break; + } + + regmap_update_bits(dcif->regmap, DCIF_DPI_CTRL, DCIF_DPI_CTRL_DATA_PATTER= N_MASK, reg); + + reg =3D 0; + switch (format) { + /* RGB Formats */ + case DRM_FORMAT_RGB565: + reg |=3D DCIF_CTRLDESC0_FORMAT(CTRLDESCL0_FORMAT_RGB565); + break; + case DRM_FORMAT_RGB888: + reg |=3D DCIF_CTRLDESC0_FORMAT(CTRLDESCL0_FORMAT_RGB888); + break; + case DRM_FORMAT_XRGB1555: + reg |=3D DCIF_CTRLDESC0_FORMAT(CTRLDESCL0_FORMAT_ARGB1555); + break; + case DRM_FORMAT_XRGB4444: + reg |=3D DCIF_CTRLDESC0_FORMAT(CTRLDESCL0_FORMAT_ARGB4444); + break; + case DRM_FORMAT_XBGR8888: + reg |=3D DCIF_CTRLDESC0_FORMAT(CTRLDESCL0_FORMAT_ABGR8888); + break; + case DRM_FORMAT_XRGB8888: + reg |=3D DCIF_CTRLDESC0_FORMAT(CTRLDESCL0_FORMAT_ARGB8888); + break; + + /* YUV Formats */ + case DRM_FORMAT_YUYV: + reg |=3D DCIF_CTRLDESC0_FORMAT(CTRLDESCL0_FORMAT_YCBCR422) | + DCIF_CTRLDESC0_YUV_FORMAT(CTRLDESCL0_YUV_FORMAT_VY2UY1); + in_yuv =3D true; + break; + case DRM_FORMAT_YVYU: + reg |=3D DCIF_CTRLDESC0_FORMAT(CTRLDESCL0_FORMAT_YCBCR422) | + DCIF_CTRLDESC0_YUV_FORMAT(CTRLDESCL0_YUV_FORMAT_UY2VY1); + in_yuv =3D true; + break; + case DRM_FORMAT_UYVY: + reg |=3D DCIF_CTRLDESC0_FORMAT(CTRLDESCL0_FORMAT_YCBCR422) | + DCIF_CTRLDESC0_YUV_FORMAT(CTRLDESCL0_YUV_FORMAT_Y2VY1U); + in_yuv =3D true; + break; + case DRM_FORMAT_VYUY: + reg |=3D DCIF_CTRLDESC0_FORMAT(CTRLDESCL0_FORMAT_YCBCR422) | + DCIF_CTRLDESC0_YUV_FORMAT(CTRLDESCL0_YUV_FORMAT_Y2UY1V); + in_yuv =3D true; + break; + + default: + dev_err(drm->dev, "Unknown pixel format 0x%x\n", format); + break; + } + + regmap_update_bits(dcif->regmap, DCIF_CTRLDESC0(0), + DCIF_CTRLDESC0_FORMAT_MASK | DCIF_CTRLDESC0_YUV_FORMAT_MASK, + reg); + + if (in_yuv) { + /* Enable CSC YCbCr -> RGB */ + const u32 *coeffs =3D + dcif_yuv2rgb_coeffs[plane_state->color_encoding][plane_state->color_ran= ge]; + + regmap_bulk_write(dcif->regmap, DCIF_CSC_COEF0_L0, coeffs, 6); + + regmap_write(dcif->regmap, DCIF_CSC_CTRL_L0, + DCIF_CSC_CTRL_L0_CSC_EN | + DCIF_CSC_CTRL_L0_CSC_MODE_YCBCR2RGB); + } else { + regmap_write(dcif->regmap, DCIF_CSC_CTRL_L0, 0); + } +} + +static void dcif_set_mode(struct dcif_dev *dcif, u32 bus_flags) +{ + struct drm_display_mode *m =3D &dcif->crtc.state->adjusted_mode; + u32 reg =3D 0; + + if (m->flags & DRM_MODE_FLAG_NHSYNC) + reg |=3D DCIF_DPI_CTRL_HSYNC_POL_LOW; + if (m->flags & DRM_MODE_FLAG_NVSYNC) + reg |=3D DCIF_DPI_CTRL_VSYNC_POL_LOW; + if (bus_flags & DRM_BUS_FLAG_DE_LOW) + reg |=3D DCIF_DPI_CTRL_DE_POL_LOW; + if (bus_flags & DRM_BUS_FLAG_PIXDATA_DRIVE_NEGEDGE) + reg |=3D DCIF_DPI_CTRL_PCLK_EDGE_FALLING; + + regmap_update_bits(dcif->regmap, DCIF_DPI_CTRL, DCIF_DPI_CTRL_POL_MASK, r= eg); + + /* config display timings */ + reg =3D DCIF_DISP_SIZE_DISP_WIDTH(m->hdisplay) | + DCIF_DISP_SIZE_DISP_HEIGHT(m->vdisplay); + regmap_write(dcif->regmap, DCIF_DISP_SIZE, reg); + + reg =3D DCIF_DPI_HSYN_PAR_BP_H(m->htotal - m->hsync_end) | + DCIF_DPI_HSYN_PAR_FP_H(m->hsync_start - m->hdisplay); + regmap_write(dcif->regmap, DCIF_DPI_HSYN_PAR, reg); + + reg =3D DCIF_DPI_VSYN_PAR_BP_V(m->vtotal - m->vsync_end) | + DCIF_DPI_VSYN_PAR_FP_V(m->vsync_start - m->vdisplay); + regmap_write(dcif->regmap, DCIF_DPI_VSYN_PAR, reg); + + reg =3D DCIF_DPI_VSYN_HSYN_WIDTH_PW_V(m->vsync_end - m->vsync_start) | + DCIF_DPI_VSYN_HSYN_WIDTH_PW_H(m->hsync_end - m->hsync_start); + regmap_write(dcif->regmap, DCIF_DPI_VSYN_HSYN_WIDTH, reg); + + /* Layer 0 frame size */ + reg =3D DCIF_CTRLDESC2_HEIGHT(m->vdisplay) | + DCIF_CTRLDESC2_WIDTH(m->hdisplay); + regmap_write(dcif->regmap, DCIF_CTRLDESC2(0), reg); + + /* + * Configure P_SIZE, T_SIZE and pitch + * 1. P_SIZE and T_SIZE should never be less than AXI bus width. + * 2. P_SIZE should never be less than T_SIZE. + */ + reg =3D DCIF_CTRLDESC3_P_SIZE(2) | DCIF_CTRLDESC3_T_SIZE(2) | + DCIF_CTRLDESC3_PITCH(dcif->crtc.primary->state->fb->pitches[0]); + regmap_write(dcif->regmap, DCIF_CTRLDESC3(0), reg); +} + +static void dcif_enable_plane_panic(struct dcif_dev *dcif) +{ + u32 reg; + + /* Set FIFO Panic watermarks, low 1/3, high 2/3. */ + reg =3D DCIF_PANIC_THRES_LOW(1 * PANIC0_THRES_MAX / 3) | + DCIF_PANIC_THRES_HIGH(2 * PANIC0_THRES_MAX / 3) | + DCIF_PANIC_THRES_REQ_EN; + regmap_write(dcif->regmap, DCIF_PANIC_THRES(0), reg); + regmap_write(dcif->regmap, DCIF_PANIC_THRES(1), reg); + + regmap_set_bits(dcif->regmap, DCIF_IE1(dcif->cpu_domain), + DCIF_INT1_FIFO_PANIC0 | DCIF_INT1_FIFO_PANIC1); +} + +static void dcif_disable_plane_panic(struct dcif_dev *dcif) +{ + regmap_clear_bits(dcif->regmap, DCIF_IE1(dcif->cpu_domain), + DCIF_INT1_FIFO_PANIC0 | DCIF_INT1_FIFO_PANIC1); + regmap_clear_bits(dcif->regmap, DCIF_PANIC_THRES(0), DCIF_PANIC_THRES_REQ= _EN); + regmap_clear_bits(dcif->regmap, DCIF_PANIC_THRES(1), DCIF_PANIC_THRES_REQ= _EN); +} + +static void dcif_enable_controller(struct dcif_dev *dcif) +{ + /* Enable Display */ + regmap_set_bits(dcif->regmap, DCIF_DISP_CTRL, DCIF_DISP_CTRL_DISP_ON); + + /* Enable layer 0 */ + regmap_set_bits(dcif->regmap, DCIF_CTRLDESC0(0), DCIF_CTRLDESC0_EN); +} + +static void dcif_disable_controller(struct dcif_dev *dcif) +{ + u32 reg; + int ret; + + /* Disable layer 0 */ + regmap_clear_bits(dcif->regmap, DCIF_CTRLDESC0(0), DCIF_CTRLDESC0_EN); + + ret =3D regmap_read_poll_timeout(dcif->regmap, DCIF_CTRLDESC0(0), reg, + !(reg & DCIF_CTRLDESC0_EN), 0, + 36000); /* Wait ~2 frame times max */ + if (ret) + drm_err(&dcif->drm, "Failed to disable controller!\n"); + + /* Disable Display */ + regmap_clear_bits(dcif->regmap, DCIF_DISP_CTRL, DCIF_DISP_CTRL_DISP_ON); +} + +static void dcif_shadow_load_enable(struct dcif_dev *dcif) +{ + regmap_write_bits(dcif->regmap, DCIF_CTRLDESC0(0), DCIF_CTRLDESC0_SHADOW_= LOAD_EN, + DCIF_CTRLDESC0_SHADOW_LOAD_EN); +} + +static void dcif_reset_block(struct dcif_dev *dcif) +{ + regmap_set_bits(dcif->regmap, DCIF_DISP_CTRL, DCIF_DISP_CTRL_SW_RST); + + regmap_clear_bits(dcif->regmap, DCIF_DISP_CTRL, DCIF_DISP_CTRL_SW_RST); +} + +static void dcif_crtc_atomic_destroy_state(struct drm_crtc *crtc, + struct drm_crtc_state *state) +{ + __drm_atomic_helper_crtc_destroy_state(state); + kfree(to_dcif_crtc_state(state)); +} + +static void dcif_crtc_reset(struct drm_crtc *crtc) +{ + struct dcif_crtc_state *state; + + if (crtc->state) + dcif_crtc_atomic_destroy_state(crtc, crtc->state); + + crtc->state =3D NULL; + + state =3D kzalloc(sizeof(*state), GFP_KERNEL); + if (state) + __drm_atomic_helper_crtc_reset(crtc, &state->base); +} + +static struct drm_crtc_state *dcif_crtc_atomic_duplicate_state(struct drm_= crtc *crtc) +{ + struct dcif_crtc_state *old =3D to_dcif_crtc_state(crtc->state); + struct dcif_crtc_state *new; + + if (WARN_ON(!crtc->state)) + return NULL; + + new =3D kzalloc(sizeof(*new), GFP_KERNEL); + if (!new) + return NULL; + + __drm_atomic_helper_crtc_duplicate_state(crtc, &new->base); + + new->bus_format =3D old->bus_format; + new->bus_flags =3D old->bus_flags; + new->crc.source =3D old->crc.source; + dcif_copy_roi(&old->crc.roi, &new->crc.roi); + + return &new->base; +} + +static void dcif_crtc_mode_set_nofb(struct drm_crtc_state *crtc_state, + struct drm_plane_state *plane_state) +{ + struct dcif_crtc_state *dcif_crtc_state =3D to_dcif_crtc_state(crtc_state= ); + struct drm_device *drm =3D crtc_state->crtc->dev; + struct dcif_dev *dcif =3D crtc_to_dcif_dev(crtc_state->crtc); + struct drm_display_mode *m =3D &crtc_state->adjusted_mode; + + dev_dbg(drm->dev, "Pixel clock: %dkHz\n", m->crtc_clock); + dev_dbg(drm->dev, "Bridge bus_flags: 0x%08X\n", dcif_crtc_state->bus_flag= s); + dev_dbg(drm->dev, "Mode flags: 0x%08X\n", m->flags); + + dcif_reset_block(dcif); + + dcif_set_formats(dcif, plane_state, dcif_crtc_state->bus_format); + + dcif_set_mode(dcif, dcif_crtc_state->bus_flags); +} + +static void dcif_crtc_queue_state_event(struct drm_crtc *crtc) +{ + struct dcif_dev *dcif =3D crtc_to_dcif_dev(crtc); + + scoped_guard(spinlock, &crtc->dev->event_lock) { + if (crtc->state->event) { + WARN_ON(drm_crtc_vblank_get(crtc)); + WARN_ON(dcif->event); + dcif->event =3D crtc->state->event; + crtc->state->event =3D NULL; + } + } +} + +static struct drm_bridge *dcif_crtc_get_bridge(struct drm_crtc *crtc, + struct drm_crtc_state *crtc_state) +{ + struct drm_connector_state *conn_state; + struct drm_encoder *encoder; + struct drm_connector *conn; + struct drm_bridge *bridge; + int i; + + for_each_new_connector_in_state(crtc_state->state, conn, conn_state, i) { + if (crtc !=3D conn_state->crtc) + continue; + + encoder =3D conn_state->best_encoder; + + bridge =3D drm_bridge_chain_get_first_bridge(encoder); + if (bridge) + return bridge; + } + + return NULL; +} + +static void dcif_crtc_query_output_bus_format(struct drm_crtc *crtc, + struct drm_crtc_state *crtc_state) +{ + struct dcif_crtc_state *dcif_state =3D to_dcif_crtc_state(crtc_state); + struct drm_bridge_state *bridge_state; + struct drm_bridge *bridge; + + dcif_state->bus_format =3D MEDIA_BUS_FMT_RGB888_1X24; + dcif_state->bus_flags =3D 0; + + bridge =3D dcif_crtc_get_bridge(crtc, crtc_state); + if (!bridge) + return; + + bridge_state =3D drm_atomic_get_new_bridge_state(crtc_state->state, bridg= e); + if (!bridge_state) + return; + + dcif_state->bus_format =3D bridge_state->input_bus_cfg.format; + dcif_state->bus_flags =3D bridge_state->input_bus_cfg.flags; +} + +static int dcif_crtc_atomic_check(struct drm_crtc *crtc, struct drm_atomic= _state *state) +{ + struct drm_crtc_state *crtc_state =3D drm_atomic_get_new_crtc_state(state= , crtc); + bool enable_primary =3D crtc_state->plane_mask & drm_plane_mask(crtc->pri= mary); + int ret; + + if (crtc_state->active && !enable_primary) + return -EINVAL; + + dcif_crtc_query_output_bus_format(crtc, crtc_state); + + if (crtc_state->active_changed && crtc_state->active) { + if (!crtc_state->mode_changed) { + crtc_state->mode_changed =3D true; + ret =3D drm_atomic_helper_check_modeset(crtc->dev, state); + if (ret) + return ret; + } + } + + return 0; +} + +static void dcif_crtc_atomic_flush(struct drm_crtc *crtc, + struct drm_atomic_state *state) +{ + struct drm_crtc_state *old_crtc_state =3D drm_atomic_get_old_crtc_state(s= tate, crtc); + struct dcif_crtc_state *old_dcif_crtc_state =3D to_dcif_crtc_state(old_cr= tc_state); + struct drm_crtc_state *crtc_state =3D drm_atomic_get_new_crtc_state(state= , crtc); + struct dcif_crtc_state *dcif_crtc_state =3D to_dcif_crtc_state(crtc_state= ); + bool need_modeset =3D drm_atomic_crtc_needs_modeset(crtc->state); + struct dcif_dev *dcif =3D crtc_to_dcif_dev(crtc); + + dcif_shadow_load_enable(dcif); + + if (!crtc->state->active && !old_crtc_state->active) + return; + + if (!need_modeset && to_disable_dcif_crc(dcif_crtc_state, old_dcif_crtc_s= tate)) + dcif_crtc_disable_crc_source(dcif, 0); + + if (!need_modeset) + dcif_crtc_queue_state_event(crtc); + + if (!need_modeset && to_enable_dcif_crc(dcif_crtc_state, old_dcif_crtc_st= ate)) + dcif_crtc_enable_crc_source(dcif, dcif_crtc_state->crc.source, + &dcif_crtc_state->crc.roi, 0); +} + +static void dcif_crtc_atomic_enable(struct drm_crtc *crtc, + struct drm_atomic_state *state) +{ + struct drm_crtc_state *crtc_state =3D drm_atomic_get_new_crtc_state(state= , crtc); + struct drm_plane_state *plane_state =3D drm_atomic_get_new_plane_state(st= ate, crtc->primary); + struct dcif_crtc_state *dcif_crtc_state =3D to_dcif_crtc_state(crtc_state= ); + struct drm_display_mode *adj =3D &crtc_state->adjusted_mode; + struct dcif_dev *dcif =3D crtc_to_dcif_dev(crtc); + struct drm_device *drm =3D crtc->dev; + dma_addr_t baseaddr; + int ret; + + dev_dbg(drm->dev, "mode " DRM_MODE_FMT "\n", DRM_MODE_ARG(adj)); + + /* enable power when we start to set mode for CRTC */ + ret =3D pm_runtime_resume_and_get(drm->dev); + if (ret < 0) + drm_err(drm, "failed to resume DCIF, ret =3D %d\n", ret); + + drm_crtc_vblank_on(crtc); + + dcif_crtc_mode_set_nofb(crtc_state, plane_state); + + baseaddr =3D drm_fb_dma_get_gem_addr(plane_state->fb, plane_state, 0); + if (baseaddr) + regmap_write(dcif->regmap, DCIF_CTRLDESC4(0), baseaddr); + + dcif_enable_plane_panic(dcif); + dcif_enable_controller(dcif); + + dcif_crtc_queue_state_event(crtc); + + if (dcif->has_crc && dcif_crtc_state->crc.source !=3D DCIF_CRC_SRC_NONE) + dcif_crtc_enable_crc_source(dcif, dcif_crtc_state->crc.source, + &dcif_crtc_state->crc.roi, 0); +} + +static void dcif_crtc_atomic_disable(struct drm_crtc *crtc, + struct drm_atomic_state *state) +{ + struct drm_crtc_state *crtc_state =3D drm_atomic_get_new_crtc_state(state= , crtc); + struct dcif_crtc_state *dcif_crtc_state =3D to_dcif_crtc_state(crtc_state= ); + struct dcif_dev *dcif =3D crtc_to_dcif_dev(crtc); + struct drm_device *drm =3D crtc->dev; + + if (dcif->has_crc && dcif_crtc_state->crc.source !=3D DCIF_CRC_SRC_NONE) + dcif_crtc_disable_crc_source(dcif, 0); + + dcif_disable_controller(dcif); + dcif_disable_plane_panic(dcif); + + drm_crtc_vblank_off(crtc); + + pm_runtime_put_sync(drm->dev); + + scoped_guard(spinlock, &crtc->dev->event_lock) { + if (crtc->state->event && !crtc->state->active) { + drm_crtc_send_vblank_event(crtc, crtc->state->event); + crtc->state->event =3D NULL; + } + } +} + +static const struct drm_crtc_helper_funcs dcif_crtc_helper_funcs =3D { + .mode_valid =3D dcif_crtc_mode_valid, + .atomic_check =3D dcif_crtc_atomic_check, + .atomic_flush =3D dcif_crtc_atomic_flush, + .atomic_enable =3D dcif_crtc_atomic_enable, + .atomic_disable =3D dcif_crtc_atomic_disable, +}; + +static int dcif_crtc_enable_vblank(struct drm_crtc *crtc) +{ + struct dcif_dev *dcif =3D crtc_to_dcif_dev(crtc); + int domain =3D dcif->cpu_domain; + + /* Clear and enable VS_BLANK IRQ */ + regmap_set_bits(dcif->regmap, DCIF_IS0(domain), DCIF_INT0_VS_BLANK); + regmap_set_bits(dcif->regmap, DCIF_IE0(domain), DCIF_INT0_VS_BLANK); + + return 0; +} + +static void dcif_crtc_disable_vblank(struct drm_crtc *crtc) +{ + struct dcif_dev *dcif =3D crtc_to_dcif_dev(crtc); + int domain =3D dcif->cpu_domain; + + /* Disable and clear VS_BLANK IRQ */ + regmap_clear_bits(dcif->regmap, DCIF_IE0(domain), DCIF_INT0_VS_BLANK); + regmap_clear_bits(dcif->regmap, DCIF_IS0(domain), DCIF_INT0_VS_BLANK); +} + +static const struct drm_crtc_funcs dcif_crtc_funcs =3D { + .reset =3D dcif_crtc_reset, + .destroy =3D drm_crtc_cleanup, + .set_config =3D drm_atomic_helper_set_config, + .page_flip =3D drm_atomic_helper_page_flip, + .atomic_duplicate_state =3D dcif_crtc_atomic_duplicate_state, + .atomic_destroy_state =3D dcif_crtc_atomic_destroy_state, + .enable_vblank =3D dcif_crtc_enable_vblank, + .disable_vblank =3D dcif_crtc_disable_vblank, + .set_crc_source =3D dcif_crtc_set_crc_source, + .verify_crc_source =3D dcif_crtc_verify_crc_source, +}; + +irqreturn_t dcif_irq_handler(int irq, void *data) +{ + struct drm_device *drm =3D data; + struct dcif_dev *dcif =3D to_dcif_dev(drm); + int domain =3D dcif->cpu_domain; + u32 stat0, stat1, crc; + + regmap_read(dcif->regmap, DCIF_IS0(domain), &stat0); + regmap_read(dcif->regmap, DCIF_IS1(domain), &stat1); + regmap_write(dcif->regmap, DCIF_IS0(domain), stat0); + regmap_write(dcif->regmap, DCIF_IS1(domain), stat1); + + if (stat0 & DCIF_INT0_VS_BLANK) { + drm_crtc_handle_vblank(&dcif->crtc); + + scoped_guard(spinlock_irqsave, &drm->event_lock) { + if (dcif->event) { + drm_crtc_send_vblank_event(&dcif->crtc, dcif->event); + dcif->event =3D NULL; + drm_crtc_vblank_put(&dcif->crtc); + } + if (dcif->crc_is_enabled) { + regmap_read(dcif->regmap, DCIF_CRC_VAL_R(0), &crc); + drm_crtc_add_crc_entry(&dcif->crtc, false, 0, &crc); + dev_dbg(drm->dev, "crc=3D0x%x\n", crc); + } + } + } + + if (stat1 & (DCIF_INT1_FIFO_PANIC0 | DCIF_INT1_FIFO_PANIC1)) { + u32 panic =3D stat1 & (DCIF_INT1_FIFO_PANIC0 | DCIF_INT1_FIFO_PANIC1); + + dev_dbg_ratelimited(drm->dev, "FIFO panic on %s\n", + panic =3D=3D (DCIF_INT1_FIFO_PANIC0 | DCIF_INT1_FIFO_PANIC1) ? + "layers 0 & 1" : panic =3D=3D DCIF_INT1_FIFO_PANIC0 ? "layer 0" : + "layer 1"); + } + + return IRQ_HANDLED; +} + +int dcif_crtc_init(struct dcif_dev *dcif) +{ + int ret; + + ret =3D dcif_plane_init(dcif); + if (ret) + return ret; + + drm_crtc_helper_add(&dcif->crtc, &dcif_crtc_helper_funcs); + ret =3D drm_crtc_init_with_planes(&dcif->drm, &dcif->crtc, &dcif->planes.= primary, NULL, + &dcif_crtc_funcs, NULL); + if (ret) { + drm_err(&dcif->drm, "failed to initialize CRTC: %d\n", ret); + return ret; + } + + return 0; +} diff --git a/drivers/gpu/drm/imx/dcif/dcif-drv.c b/drivers/gpu/drm/imx/dcif= /dcif-drv.c new file mode 100644 index 0000000000000000000000000000000000000000..893d94f7dd4eabe5d15155c8253= 1cacb56bb61bb --- /dev/null +++ b/drivers/gpu/drm/imx/dcif/dcif-drv.c @@ -0,0 +1,226 @@ +// SPDX-License-Identifier: GPL-2.0 + +/* + * Copyright 2025 NXP + */ + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#include "dcif-drv.h" +#include "dcif-reg.h" + +#define DCIF_CPU_DOMAIN 0 + +DEFINE_DRM_GEM_DMA_FOPS(dcif_driver_fops); + +static struct drm_driver dcif_driver =3D { + .driver_features =3D DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC, + DRM_GEM_DMA_DRIVER_OPS, + DRM_FBDEV_DMA_DRIVER_OPS, + .fops =3D &dcif_driver_fops, + .name =3D "imx-dcif", + .desc =3D "i.MX DCIF DRM graphics", + .major =3D 1, + .minor =3D 0, + .patchlevel =3D 0, +}; + +static void dcif_read_chip_info(struct dcif_dev *dcif) +{ + struct drm_device *drm =3D &dcif->drm; + u32 val, vmin, vmaj; + + pm_runtime_get_sync(drm->dev); + + regmap_read(dcif->regmap, DCIF_VER, &val); + + dcif->has_crc =3D val & DCIF_FEATURE_CRC; + + vmin =3D DCIF_VER_GET_MINOR(val); + vmaj =3D DCIF_VER_GET_MAJOR(val); + DRM_DEV_DEBUG(drm->dev, "DCIF version is %d.%d\n", vmaj, vmin); + + pm_runtime_put_sync(drm->dev); +} + +static const struct regmap_config dcif_regmap_config =3D { + .reg_bits =3D 32, + .val_bits =3D 32, + .reg_stride =3D 4, + .fast_io =3D true, + .max_register =3D 0x20250, + .cache_type =3D REGCACHE_NONE, + .disable_locking =3D true, +}; + +static int dcif_probe(struct platform_device *pdev) +{ + struct dcif_dev *dcif; + struct drm_device *drm; + int ret; + int i; + + dcif =3D devm_drm_dev_alloc(&pdev->dev, &dcif_driver, struct dcif_dev, dr= m); + if (IS_ERR(dcif)) + return PTR_ERR(dcif); + + /* CPU 0 domain for interrupt control */ + dcif->cpu_domain =3D DCIF_CPU_DOMAIN; + + drm =3D &dcif->drm; + dev_set_drvdata(&pdev->dev, dcif); + + dcif->reg_base =3D devm_platform_ioremap_resource(pdev, 0); + if (IS_ERR(dcif->reg_base)) + return dev_err_probe(drm->dev, PTR_ERR(dcif->reg_base), + "failed to get reg base\n"); + + for (i =3D 0; i < 3; i++) { + dcif->irq[i] =3D platform_get_irq(pdev, i); + if (dcif->irq[i] < 0) + return dev_err_probe(drm->dev, dcif->irq[i], + "failed to get domain%d irq\n", i); + } + + dcif->regmap =3D devm_regmap_init_mmio(drm->dev, dcif->reg_base, &dcif_re= gmap_config); + if (IS_ERR(dcif->regmap)) + return dev_err_probe(drm->dev, PTR_ERR(dcif->regmap), + "failed to init DCIF regmap\n"); + + dcif->num_clks =3D devm_clk_bulk_get_all(drm->dev, &dcif->clks); + if (dcif->num_clks < 0) + return dev_err_probe(drm->dev, ret, "cannot get required clocks\n"); + + dma_set_mask_and_coherent(drm->dev, DMA_BIT_MASK(32)); + + devm_pm_runtime_enable(drm->dev); + + ret =3D devm_request_irq(drm->dev, dcif->irq[dcif->cpu_domain], + dcif_irq_handler, 0, drm->driver->name, drm); + if (ret < 0) + return dev_err_probe(drm->dev, ret, "failed to install IRQ handler\n"); + + dcif_read_chip_info(dcif); + + ret =3D dcif_kms_prepare(dcif); + if (ret) + return ret; + + ret =3D drm_dev_register(drm, 0); + if (ret) + return dev_err_probe(drm->dev, ret, "failed to register drm device\n"); + + drm_client_setup(drm, NULL); + + return 0; +} + +static void dcif_remove(struct platform_device *pdev) +{ + struct dcif_dev *dcif =3D dev_get_drvdata(&pdev->dev); + struct drm_device *drm =3D &dcif->drm; + + drm_dev_unregister(drm); + + drm_atomic_helper_shutdown(drm); +} + +static void dcif_shutdown(struct platform_device *pdev) +{ + struct dcif_dev *dcif =3D dev_get_drvdata(&pdev->dev); + struct drm_device *drm =3D &dcif->drm; + + drm_atomic_helper_shutdown(drm); +} + +static int dcif_runtime_suspend(struct device *dev) +{ + struct dcif_dev *dcif =3D dev_get_drvdata(dev); + + clk_bulk_disable_unprepare(dcif->num_clks, dcif->clks); + + return 0; +} + +static int dcif_runtime_resume(struct device *dev) +{ + struct dcif_dev *dcif =3D dev_get_drvdata(dev); + int ret; + + ret =3D clk_bulk_prepare_enable(dcif->num_clks, dcif->clks); + if (ret) { + dev_err(dev, "failed to enable clocks: %d\n", ret); + return ret; + } + + return 0; +} + +static int dcif_suspend(struct device *dev) +{ + struct dcif_dev *dcif =3D dev_get_drvdata(dev); + int ret; + + ret =3D drm_mode_config_helper_suspend(&dcif->drm); + if (ret < 0) + return ret; + + if (pm_runtime_suspended(dev)) + return 0; + + return dcif_runtime_suspend(dev); +} + +static int dcif_resume(struct device *dev) +{ + struct dcif_dev *dcif =3D dev_get_drvdata(dev); + int ret; + + if (!pm_runtime_suspended(dev)) { + ret =3D dcif_runtime_resume(dev); + if (ret < 0) + return ret; + } + + return drm_mode_config_helper_resume(&dcif->drm); +} + +static const struct dev_pm_ops dcif_pm_ops =3D { + SET_SYSTEM_SLEEP_PM_OPS(dcif_suspend, dcif_resume) + SET_RUNTIME_PM_OPS(dcif_runtime_suspend, dcif_runtime_resume, NULL) +}; + +static const struct of_device_id dcif_dt_ids[] =3D { + { .compatible =3D "nxp,imx94-dcif", }, + { /* sentinel */ } +}; +MODULE_DEVICE_TABLE(of, dcif_dt_ids); + +static struct platform_driver dcif_platform_driver =3D { + .probe =3D dcif_probe, + .remove =3D dcif_remove, + .shutdown =3D dcif_shutdown, + .driver =3D { + .name =3D "imx-dcif-drm", + .of_match_table =3D dcif_dt_ids, + .pm =3D pm_ptr(&dcif_pm_ops), + }, +}; +module_platform_driver(dcif_platform_driver); + +MODULE_AUTHOR("NXP Semiconductor"); +MODULE_DESCRIPTION("i.MX94 DCIF DRM driver"); +MODULE_LICENSE("GPL"); diff --git a/drivers/gpu/drm/imx/dcif/dcif-drv.h b/drivers/gpu/drm/imx/dcif= /dcif-drv.h new file mode 100644 index 0000000000000000000000000000000000000000..8eb0790734ab90f93985307b6fe= d8b5bf5dbedfc --- /dev/null +++ b/drivers/gpu/drm/imx/dcif/dcif-drv.h @@ -0,0 +1,86 @@ +/* SPDX-License-Identifier: GPL-2.0 */ + +/* + * Copyright 2025 NXP + */ + +#ifndef __DCIF_DRV_H__ +#define __DCIF_DRV_H__ + +#include +#include + +#include +#include +#include +#include +#include + +#define DCIF_CPU_DOMAINS 3 + +struct dcif_dev { + struct drm_device drm; + void __iomem *reg_base; + + struct regmap *regmap; + int irq[DCIF_CPU_DOMAINS]; + + unsigned int num_clks; + struct clk_bulk_data *clks; + + struct drm_crtc crtc; + struct { + struct drm_plane primary; + struct drm_plane overlay; + } planes; + struct drm_encoder encoder; + + struct drm_pending_vblank_event *event; + + /* Implement crc */ + bool has_crc; + bool crc_is_enabled; + + /* CPU domain for interrupt control */ + int cpu_domain; +}; + +enum dcif_crc_source { + DCIF_CRC_SRC_NONE, + DCIF_CRC_SRC_FRAME, + DCIF_CRC_SRC_FRAME_ROI, +}; + +struct dcif_crc { + enum dcif_crc_source source; + struct drm_rect roi; +}; + +struct dcif_crtc_state { + struct drm_crtc_state base; + struct dcif_crc crc; + u32 bus_format; + u32 bus_flags; +}; + +static inline struct dcif_dev *to_dcif_dev(struct drm_device *drm_dev) +{ + return container_of(drm_dev, struct dcif_dev, drm); +} + +static inline struct dcif_dev *crtc_to_dcif_dev(struct drm_crtc *crtc) +{ + return to_dcif_dev(crtc->dev); +} + +static inline struct dcif_crtc_state *to_dcif_crtc_state(struct drm_crtc_s= tate *s) +{ + return container_of(s, struct dcif_crtc_state, base); +} + +irqreturn_t dcif_irq_handler(int irq, void *data); +int dcif_crtc_init(struct dcif_dev *dcif); +int dcif_plane_init(struct dcif_dev *dcif); +int dcif_kms_prepare(struct dcif_dev *dcif); + +#endif diff --git a/drivers/gpu/drm/imx/dcif/dcif-kms.c b/drivers/gpu/drm/imx/dcif= /dcif-kms.c new file mode 100644 index 0000000000000000000000000000000000000000..69d999d178b0b76b7c1dc941f69= 6b20b1cdb1d53 --- /dev/null +++ b/drivers/gpu/drm/imx/dcif/dcif-kms.c @@ -0,0 +1,100 @@ +// SPDX-License-Identifier: GPL-2.0 + +/* + * Copyright 2025 NXP + */ + +#include +#include +#include +#include +#include +#include +#include + +#include "dcif-drv.h" + +static int dcif_kms_init(struct dcif_dev *dcif) +{ + struct drm_device *drm =3D &dcif->drm; + struct device_node *np =3D drm->dev->of_node; + struct drm_connector *connector; + struct drm_bridge *bridge; + int ret; + + ret =3D dcif_crtc_init(dcif); + if (ret) + return ret; + + bridge =3D devm_drm_of_get_bridge(drm->dev, np, 0, 0); + if (IS_ERR(bridge)) + return dev_err_probe(drm->dev, PTR_ERR(bridge), "Failed to find bridge\n= "); + + dcif->encoder.possible_crtcs =3D drm_crtc_mask(&dcif->crtc); + ret =3D drm_simple_encoder_init(drm, &dcif->encoder, DRM_MODE_ENCODER_NON= E); + if (ret) { + drm_err(drm, "failed to initialize encoder: %d\n", ret); + return ret; + } + + ret =3D drm_bridge_attach(&dcif->encoder, bridge, NULL, DRM_BRIDGE_ATTACH= _NO_CONNECTOR); + if (ret) { + drm_err(drm, "failed to attach bridge to encoder: %d\n", ret); + return ret; + } + + connector =3D drm_bridge_connector_init(drm, &dcif->encoder); + if (IS_ERR(connector)) { + drm_err(drm, "failed to initialize bridge connector: %d\n", ret); + return PTR_ERR(connector); + } + + ret =3D drm_connector_attach_encoder(connector, &dcif->encoder); + if (ret) + drm_err(drm, "failed to attach encoder to connector: %d\n", ret); + + return ret; +} + +static const struct drm_mode_config_funcs dcif_mode_config_funcs =3D { + .fb_create =3D drm_gem_fb_create, + .atomic_check =3D drm_atomic_helper_check, + .atomic_commit =3D drm_atomic_helper_commit, +}; + +static const struct drm_mode_config_helper_funcs dcif_mode_config_helpers = =3D { + .atomic_commit_tail =3D drm_atomic_helper_commit_tail_rpm, +}; + +int dcif_kms_prepare(struct dcif_dev *dcif) +{ + struct drm_device *drm =3D &dcif->drm; + int ret; + + ret =3D drmm_mode_config_init(drm); + if (ret) + return ret; + + ret =3D dcif_kms_init(dcif); + if (ret) + return ret; + + drm->mode_config.min_width =3D 1; + drm->mode_config.min_height =3D 1; + drm->mode_config.max_width =3D 1920; + drm->mode_config.max_height =3D 1920; + drm->mode_config.funcs =3D &dcif_mode_config_funcs; + drm->mode_config.helper_private =3D &dcif_mode_config_helpers; + + ret =3D drm_vblank_init(drm, 1); + if (ret < 0) { + drm_err(drm, "failed to initialize vblank: %d\n", ret); + return ret; + } + + drm_mode_config_reset(drm); + + drmm_kms_helper_poll_init(drm); + + return 0; +} diff --git a/drivers/gpu/drm/imx/dcif/dcif-plane.c b/drivers/gpu/drm/imx/dc= if/dcif-plane.c new file mode 100644 index 0000000000000000000000000000000000000000..54ab8edd11e0cd36220758b59db= ed34ef66b2429 --- /dev/null +++ b/drivers/gpu/drm/imx/dcif/dcif-plane.c @@ -0,0 +1,269 @@ +// SPDX-License-Identifier: GPL-2.0 + +/* + * Copyright 2025 NXP + */ + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "dcif-drv.h" +#include "dcif-reg.h" + +static const u32 dcif_primary_plane_formats[] =3D { + /* RGB */ + DRM_FORMAT_RGB565, + DRM_FORMAT_RGB888, + DRM_FORMAT_XBGR8888, + DRM_FORMAT_XRGB1555, + DRM_FORMAT_XRGB4444, + DRM_FORMAT_XRGB8888, + + /* Packed YCbCr */ + DRM_FORMAT_YUYV, + DRM_FORMAT_YVYU, + DRM_FORMAT_UYVY, + DRM_FORMAT_VYUY, +}; + +static const u32 dcif_overlay_plane_formats[] =3D { + /* RGB */ + DRM_FORMAT_RGB565, + DRM_FORMAT_RGB888, + DRM_FORMAT_XBGR8888, + DRM_FORMAT_XRGB1555, + DRM_FORMAT_XRGB4444, + DRM_FORMAT_XRGB8888, +}; + +static inline struct dcif_dev *plane_to_dcif_dev(struct drm_plane *plane) +{ + return to_dcif_dev(plane->dev); +} + +static inline dma_addr_t drm_plane_state_to_baseaddr(struct drm_plane_stat= e *state) +{ + struct drm_framebuffer *fb =3D state->fb; + struct drm_gem_dma_object *dma_obj; + unsigned int x =3D state->src.x1 >> 16; + unsigned int y =3D state->src.y1 >> 16; + + dma_obj =3D drm_fb_dma_get_gem_obj(fb, 0); + + return dma_obj->dma_addr + fb->offsets[0] + fb->pitches[0] * y + fb->form= at->cpp[0] * x; +} + +static int dcif_plane_get_layer_id(struct drm_plane *plane) +{ + return (plane->type =3D=3D DRM_PLANE_TYPE_PRIMARY) ? 0 : 1; +} + +static int dcif_plane_atomic_check(struct drm_plane *plane, struct drm_ato= mic_state *state) +{ + struct drm_plane_state *new_plane_state =3D drm_atomic_get_new_plane_stat= e(state, plane); + struct drm_plane_state *old_plane_state =3D drm_atomic_get_old_plane_stat= e(state, plane); + struct dcif_dev *dcif =3D plane_to_dcif_dev(plane); + struct drm_framebuffer *fb =3D new_plane_state->fb; + struct drm_framebuffer *old_fb =3D old_plane_state->fb; + struct drm_crtc_state *crtc_state; + + if (!fb) + return 0; + + crtc_state =3D drm_atomic_get_new_crtc_state(state, &dcif->crtc); + if (WARN_ON(!crtc_state)) + return -EINVAL; + + /* + * Force CRTC mode change if framebuffer stride or pixel format have chan= ged. + */ + if (plane->type =3D=3D DRM_PLANE_TYPE_PRIMARY && old_fb && + (fb->pitches[0] !=3D old_fb->pitches[0] || fb->format->format !=3D ol= d_fb->format->format)) + crtc_state->mode_changed =3D true; + + return drm_atomic_helper_check_plane_state(new_plane_state, crtc_state, + DRM_PLANE_NO_SCALING, DRM_PLANE_NO_SCALING, true, + true); +} + +static void dcif_plane_atomic_update(struct drm_plane *plane, struct drm_a= tomic_state *state) +{ + struct drm_plane_state *new_state =3D drm_atomic_get_new_plane_state(stat= e, plane); + struct dcif_dev *dcif =3D plane_to_dcif_dev(plane); + int layer_id =3D dcif_plane_get_layer_id(plane); + struct drm_framebuffer *fb =3D new_state->fb; + u32 crtc_x, crtc_y, crtc_h, crtc_w; + u32 layer_fmt =3D 0, yuv_fmt =3D 0; + dma_addr_t baseaddr; + u32 reg; + + if (!fb) + return; + + crtc_x =3D new_state->crtc_x; + crtc_y =3D new_state->crtc_y; + crtc_h =3D new_state->crtc_h; + crtc_w =3D new_state->crtc_w; + + /* visible portion of plane on crtc */ + regmap_write(dcif->regmap, DCIF_CTRLDESC1(layer_id), + DCIF_CTRLDESC1_POSX(crtc_x) | DCIF_CTRLDESC1_POSY(crtc_y)); + regmap_write(dcif->regmap, DCIF_CTRLDESC2(layer_id), + DCIF_CTRLDESC2_WIDTH(crtc_w) | DCIF_CTRLDESC2_HEIGHT(crtc_h)); + + /* pitch size */ + reg =3D DCIF_CTRLDESC3_P_SIZE(2) | DCIF_CTRLDESC3_T_SIZE(2) | + DCIF_CTRLDESC3_PITCH(fb->pitches[0]); + regmap_write(dcif->regmap, DCIF_CTRLDESC3(layer_id), reg); + + /* address */ + baseaddr =3D drm_fb_dma_get_gem_addr(new_state->fb, new_state, 0); + + drm_dbg_kms(plane->dev, "[PLANE:%d:%s] fb address %pad, pitch 0x%08x\n", + plane->base.id, plane->name, &baseaddr, fb->pitches[0]); + + regmap_write(dcif->regmap, DCIF_CTRLDESC4(layer_id), baseaddr); + + /* Format */ + switch (fb->format->format) { + /* RGB Formats */ + case DRM_FORMAT_RGB565: + layer_fmt =3D CTRLDESCL0_FORMAT_RGB565; + break; + case DRM_FORMAT_RGB888: + layer_fmt =3D CTRLDESCL0_FORMAT_RGB888; + break; + case DRM_FORMAT_XRGB1555: + layer_fmt =3D CTRLDESCL0_FORMAT_ARGB1555; + break; + case DRM_FORMAT_XRGB4444: + layer_fmt =3D CTRLDESCL0_FORMAT_ARGB4444; + break; + case DRM_FORMAT_XBGR8888: + layer_fmt =3D CTRLDESCL0_FORMAT_ABGR8888; + break; + case DRM_FORMAT_XRGB8888: + layer_fmt =3D CTRLDESCL0_FORMAT_ARGB8888; + break; + + /* YUV Formats */ + case DRM_FORMAT_YUYV: + layer_fmt =3D CTRLDESCL0_FORMAT_YCBCR422; + yuv_fmt =3D CTRLDESCL0_YUV_FORMAT_VY2UY1; + break; + case DRM_FORMAT_YVYU: + layer_fmt =3D CTRLDESCL0_FORMAT_YCBCR422; + yuv_fmt =3D CTRLDESCL0_YUV_FORMAT_UY2VY1; + break; + case DRM_FORMAT_UYVY: + layer_fmt =3D CTRLDESCL0_FORMAT_YCBCR422; + yuv_fmt =3D CTRLDESCL0_YUV_FORMAT_Y2VY1U; + break; + case DRM_FORMAT_VYUY: + layer_fmt =3D CTRLDESCL0_FORMAT_YCBCR422; + yuv_fmt =3D CTRLDESCL0_YUV_FORMAT_Y2UY1V; + break; + + default: + dev_err(dcif->drm.dev, "Unknown pixel format 0x%x\n", fb->format->format= ); + break; + } + + if (plane->type =3D=3D DRM_PLANE_TYPE_OVERLAY && yuv_fmt =3D=3D CTRLDESCL= 0_YUV_FORMAT_Y2UY1V) { + dev_err(dcif->drm.dev, "Overlay plane could not support YUV format\n"); + return; + } + + reg =3D DCIF_CTRLDESC0_EN | DCIF_CTRLDESC0_SHADOW_LOAD_EN | + DCIF_CTRLDESC0_FORMAT(layer_fmt) | DCIF_CTRLDESC0_YUV_FORMAT(yuv_fm= t); + + /* Alpha */ + reg |=3D DCIF_CTRLDESC0_GLOBAL_ALPHA(new_state->alpha >> 8) | ALPHA_GLOBA= L; + + regmap_write(dcif->regmap, DCIF_CTRLDESC0(layer_id), reg); +} + +static void dcif_overlay_plane_atomic_disable(struct drm_plane *plane, + struct drm_atomic_state *state) +{ + struct dcif_dev *dcif =3D plane_to_dcif_dev(plane); + + regmap_update_bits(dcif->regmap, DCIF_CTRLDESC0(1), + DCIF_CTRLDESC0_EN | DCIF_CTRLDESC0_SHADOW_LOAD_EN, + DCIF_CTRLDESC0_SHADOW_LOAD_EN); +} + +static const struct drm_plane_helper_funcs dcif_primary_plane_helper_funcs= =3D { + .prepare_fb =3D drm_gem_plane_helper_prepare_fb, + .atomic_check =3D dcif_plane_atomic_check, + .atomic_update =3D dcif_plane_atomic_update, +}; + +static const struct drm_plane_helper_funcs dcif_overlay_plane_helper_funcs= =3D { + .atomic_check =3D dcif_plane_atomic_check, + .atomic_update =3D dcif_plane_atomic_update, + .atomic_disable =3D dcif_overlay_plane_atomic_disable, +}; + +static const struct drm_plane_funcs dcif_plane_funcs =3D { + .update_plane =3D drm_atomic_helper_update_plane, + .disable_plane =3D drm_atomic_helper_disable_plane, + .destroy =3D drm_plane_cleanup, + .reset =3D drm_atomic_helper_plane_reset, + .atomic_duplicate_state =3D drm_atomic_helper_plane_duplicate_state, + .atomic_destroy_state =3D drm_atomic_helper_plane_destroy_state, +}; + +int dcif_plane_init(struct dcif_dev *dcif) +{ + const u32 supported_encodings =3D BIT(DRM_COLOR_YCBCR_BT601) | + BIT(DRM_COLOR_YCBCR_BT709) | + BIT(DRM_COLOR_YCBCR_BT2020); + const u32 supported_ranges =3D BIT(DRM_COLOR_YCBCR_LIMITED_RANGE) | + BIT(DRM_COLOR_YCBCR_FULL_RANGE); + int ret; + + /* primary plane */ + drm_plane_helper_add(&dcif->planes.primary, &dcif_primary_plane_helper_fu= ncs); + ret =3D drm_universal_plane_init(&dcif->drm, &dcif->planes.primary, 1, &d= cif_plane_funcs, + dcif_primary_plane_formats, + ARRAY_SIZE(dcif_primary_plane_formats), NULL, + DRM_PLANE_TYPE_PRIMARY, NULL); + if (ret) { + drm_err(&dcif->drm, "failed to initialize primary plane: %d\n", ret); + return ret; + } + + ret =3D drm_plane_create_color_properties(&dcif->planes.primary, supporte= d_encodings, + supported_ranges, DRM_COLOR_YCBCR_BT601, + DRM_COLOR_YCBCR_LIMITED_RANGE); + if (ret) + return ret; + + ret =3D drm_plane_create_alpha_property(&dcif->planes.primary); + if (ret) + return ret; + + /* overlay plane */ + drm_plane_helper_add(&dcif->planes.overlay, &dcif_overlay_plane_helper_fu= ncs); + ret =3D drm_universal_plane_init(&dcif->drm, &dcif->planes.overlay, 1, &d= cif_plane_funcs, + dcif_overlay_plane_formats, + ARRAY_SIZE(dcif_overlay_plane_formats), NULL, + DRM_PLANE_TYPE_OVERLAY, NULL); + if (ret) { + drm_err(&dcif->drm, "failed to initialize overlay plane: %d\n", ret); + return ret; + } + + return drm_plane_create_alpha_property(&dcif->planes.overlay); +} diff --git a/drivers/gpu/drm/imx/dcif/dcif-reg.h b/drivers/gpu/drm/imx/dcif= /dcif-reg.h new file mode 100644 index 0000000000000000000000000000000000000000..acf9e3071aa525785252ea05447= 6b4eab96c0064 --- /dev/null +++ b/drivers/gpu/drm/imx/dcif/dcif-reg.h @@ -0,0 +1,267 @@ +/* SPDX-License-Identifier: GPL-2.0 */ + +/* + * Copyright 2025 NXP + */ +#ifndef __DCIF_REG_H__ +#define __DCIF_REG_H__ + +#include + +/* Version ID Register */ +#define DCIF_VER 0x0 +#define DCIF_VER_GET_FEATURE(x) FIELD_GET(GENMASK(15, 0), x) +#define DCIF_VER_GET_MINOR(x) FIELD_GET(GENMASK(23, 16), x) +#define DCIF_VER_GET_MAJOR(x) FIELD_GET(GENMASK(31, 24), x) +#define DCIF_FEATURE_CRC BIT(1) + +/* Parameter Registers */ +#define DCIF_PAR_0 0x4 +#define DCIF_PAR_0_LAYER_NUM(x) FIELD_PREP(GENMASK(3, 0), x) +#define DCIF_PAR_0_DOMAIN_NUM(x) FIELD_PREP(GENMASK(5, 4), x) +#define DCIF_PAR_0_AXI_DATA_WIDTH(x) FIELD_PREP(GENMASK(7, 6), x) +#define DCIF_PAR_0_CLUT_RAM_NUM(x) FIELD_PREP(GENMASK(11, 8), x) +#define DCIF_PAR_0_CSC_NUM(x) FIELD_PREP(GENMASK(13, 12), x) +#define DCIF_PAR_0_CRC_REGION_NUM(x) FIELD_PREP(GENMASK(18, 16), x) +#define DCIF_PAR_0_BACKUP(x) FIELD_PREP(GENMASK(31, 28), x) + +#define DCIF_PAR_1 0x8 +#define DCIF_PAR_1_LAYER0_FIFO_SIZE(x) FIELD_PREP(GENMASK(3, 0), x) +#define DCIF_PAR_1_LAYER1_FIFO_SIZE(x) FIELD_PREP(GENMASK(7, 4), x) + +/* Display Control and Parameter Registers */ +#define DCIF_DISP_CTRL 0x10 +#define DCIF_DISP_CTRL_DISP_ON BIT(0) +#define DCIF_DISP_CTRL_AXI_RD_HOLD BIT(30) +#define DCIF_DISP_CTRL_SW_RST BIT(31) +#define DCIF_DISP_PAR 0x14 +#define DCIF_DISP_PAR_BGND_B(x) FIELD_PREP(GENMASK(7, 0), x) +#define DCIF_DISP_PAR_BGND_G(x) FIELD_PREP(GENMASK(15, 8), x) +#define DCIF_DISP_PAR_BGND_R(x) FIELD_PREP(GENMASK(23, 16), x) +#define DCIF_DISP_SIZE 0x18 +#define DCIF_DISP_SIZE_DISP_WIDTH(x) FIELD_PREP(GENMASK(11, 0), x) +#define DCIF_DISP_SIZE_DISP_HEIGHT(x) FIELD_PREP(GENMASK(27, 16), x) + +/* Display Status Registers */ +#define DCIF_DISP_SR0 0x1C +#define DCIF_DISP_SR0_AXI_RD_PEND(x) FIELD_PREP(GENMASK(4, 0), x) +#define DCIF_DISP_SR0_DPI_BUSY(x) FIELD_PREP(GENMASK(14, 14), x) +#define DCIF_DISP_SR0_AXI_RD_BUSY(x) FIELD_PREP(GENMASK(15, 15), x) +#define DCIF_DISP_SR0_TXFIFO_CNT(x) FIELD_PREP(GENMASK(23, 16), x) + +#define DCIF_DISP_SR1 0x20 +#define DCIF_DISP_SR1_H_CNT(x) FIELD_PREP(GENMASK(11, 0), x) +#define DCIF_DISP_SR1_V_CNT(x) FIELD_PREP(GENMASK(27, 16), x) + +/* Interrupt Enable and Status Registers, n=3D0-2*/ +#define DCIF_IE0(n) (0x24 + (n) * 0x10000) +#define DCIF_IS0(n) (0x28 + (n) * 0x10000) +#define DCIF_INT0_VSYNC BIT(0) +#define DCIF_INT0_UNDERRUN BIT(1) +#define DCIF_INT0_VS_BLANK BIT(2) +#define DCIF_INT0_HIST_DONE BIT(5) +#define DCIF_INT0_CRC_ERR BIT(6) +#define DCIF_INT0_CRC_ERR_SAT BIT(7) + +#define DCIF_IE1(n) (0x2C + (n) * 0x10000) +#define DCIF_IS1(n) (0x30 + (n) * 0x10000) +#define DCIF_INT1_FIFO_PANIC0 BIT(0) +#define DCIF_INT1_FIFO_PANIC1 BIT(1) +#define DCIF_INT1_DMA_ERR0 BIT(8) +#define DCIF_INT1_DMA_ERR1 BIT(9) +#define DCIF_INT1_DMA_DONE0 BIT(16) +#define DCIF_INT1_DMA_DONE1 BIT(17) +#define DCIF_INT1_FIFO_EMPTY0 BIT(24) +#define DCIF_INT1_FIFO_EMPTY1 BIT(25) + +/* DPI Control and Sync Parameter Registers */ +#define DCIF_DPI_CTRL 0x40 +#define DCIF_DPI_CTRL_HSYNC_POL_LOW BIT(0) +#define DCIF_DPI_CTRL_VSYNC_POL_LOW BIT(1) +#define DCIF_DPI_CTRL_DE_POL_LOW BIT(2) +#define DCIF_DPI_CTRL_PCLK_EDGE_FALLING BIT(3) +#define DCIF_DPI_CTRL_POL_MASK GENMASK(3, 0) +#define DCIF_DPI_CTRL_DATA_INV(x) FIELD_PREP(GENMASK(4, 4), x) +#define DCIF_DPI_CTRL_DEF_BGND_EN(x) FIELD_PREP(GENMASK(5, 5), x) +#define DCIF_DPI_CTRL_FETCH_OPT(x) FIELD_PREP(GENMASK(9, 8), x) +#define DCIF_DPI_CTRL_DISP_MODE(x) FIELD_PREP(GENMASK(13, 12), x) +#define DCIF_DPI_CTRL_DATA_PATTERN_MASK GENMASK(18, 16) +#define DCIF_DPI_CTRL_DATA_PATTERN(x) FIELD_PREP(GENMASK(18, 16), x) +#define PATTERN_RGB888 0 +#define PATTERN_RBG888 1 +#define PATTERN_GBR888 2 +#define PATTERN_GRB888 3 +#define PATTERN_BRG888 4 +#define PATTERN_BGR888 5 +#define PATTERN_RGB555 6 +#define PATTERN_RGB565 7 + +#define DCIF_DPI_HSYN_PAR 0x44 +#define DCIF_DPI_HSYN_PAR_FP_H(x) FIELD_PREP(GENMASK(11, 0), x) +#define DCIF_DPI_HSYN_PAR_BP_H(x) FIELD_PREP(GENMASK(27, 16), x) + +#define DCIF_DPI_VSYN_PAR 0x48 +#define DCIF_DPI_VSYN_PAR_FP_V(x) FIELD_PREP(GENMASK(11, 0), x) +#define DCIF_DPI_VSYN_PAR_BP_V(x) FIELD_PREP(GENMASK(27, 16), x) + +#define DCIF_DPI_VSYN_HSYN_WIDTH 0x4C +#define DCIF_DPI_VSYN_HSYN_WIDTH_PW_H(x) FIELD_PREP(GENMASK(11, 0), x) +#define DCIF_DPI_VSYN_HSYN_WIDTH_PW_V(x) FIELD_PREP(GENMASK(27, 16), x) + +/* Control Descriptor Registers, n=3D0-1*/ +#define DCIF_CTRLDESC0(n) (0x10000 + (n) * 0x10000) +#define DCIF_CTRLDESC0_AB_MODE(x) FIELD_PREP(GENMASK(1, 0), x) +#define ALPHA_EMBEDDED 0 +#define ALPHA_GLOBAL 1 +#define DCIF_CTRLDESC0_YUV_FORMAT_MASK GENMASK(15, 14) +#define DCIF_CTRLDESC0_YUV_FORMAT(x) FIELD_PREP(GENMASK(15, 14), x) +#define CTRLDESCL0_YUV_FORMAT_Y2VY1U 0x0 +#define CTRLDESCL0_YUV_FORMAT_Y2UY1V 0x1 +#define CTRLDESCL0_YUV_FORMAT_VY2UY1 0x2 +#define CTRLDESCL0_YUV_FORMAT_UY2VY1 0x3 +#define DCIF_CTRLDESC0_GLOBAL_ALPHA(x) FIELD_PREP(GENMASK(23, 16), x) +#define DCIF_CTRLDESC0_FORMAT_MASK GENMASK(27, 24) +#define DCIF_CTRLDESC0_FORMAT(x) FIELD_PREP(GENMASK(27, 24), x) +#define CTRLDESCL0_FORMAT_RGB565 0x4 +#define CTRLDESCL0_FORMAT_ARGB1555 0x5 +#define CTRLDESCL0_FORMAT_ARGB4444 0x6 +#define CTRLDESCL0_FORMAT_YCBCR422 0x7 +#define CTRLDESCL0_FORMAT_RGB888 0x8 +#define CTRLDESCL0_FORMAT_ARGB8888 0x9 +#define CTRLDESCL0_FORMAT_ABGR8888 0xa +#define DCIF_CTRLDESC0_SHADOW_LOAD_EN BIT(30) +#define DCIF_CTRLDESC0_EN BIT(31) + +#define DCIF_CTRLDESC1(n) (0x10004 + (n) * 0x10000) +#define DCIF_CTRLDESC1_POSX(x) FIELD_PREP(GENMASK(11, 0), x) +#define DCIF_CTRLDESC1_POSY(x) FIELD_PREP(GENMASK(27, 16), x) + +#define DCIF_CTRLDESC2(n) (0x10008 + (n) * 0x10000) +#define DCIF_CTRLDESC2_WIDTH(x) FIELD_PREP(GENMASK(11, 0), x) +#define DCIF_CTRLDESC2_HEIGHT(x) FIELD_PREP(GENMASK(27, 16), x) + +#define DCIF_CTRLDESC3(n) (0x1000C + (n) * 0x10000) +#define DCIF_CTRLDESC3_PITCH(x) FIELD_PREP(GENMASK(15, 0), x) +#define DCIF_CTRLDESC3_T_SIZE(x) FIELD_PREP(GENMASK(17, 16), x) +#define DCIF_CTRLDESC3_P_SIZE(x) FIELD_PREP(GENMASK(22, 20), x) + +#define DCIF_CTRLDESC4(n) (0x10010 + (n) * 0x10000) +#define DCIF_CTRLDESC4_ADDR(x) FIELD_PREP(GENMASK(31, 0), x) + +#define DCIF_CTRLDESC5(n) (0x10014 + (n) * 0x10000) +#define DCIF_CTRLDESC6(n) (0x10018 + (n) * 0x10000) +#define DCIF_CTRLDESC6_BCLR_B(x) FIELD_PREP(GENMASK(7, 0), x) +#define DCIF_CTRLDESC6_BCLR_G(x) FIELD_PREP(GENMASK(15, 8), x) +#define DCIF_CTRLDESC6_BCLR_R(x) FIELD_PREP(GENMASK(23, 16), x) +#define DCIF_CTRLDESC6_BCLR_A(x) FIELD_PREP(GENMASK(31, 24), x) + +/* CLUT control Register */ +#define DCIF_CLUT_CTRL 0x1003C +#define DCIF_CLUT_CTRL_CLUT0_SEL(x) FIELD_PREP(GENMASK(0, 0), x) +#define DCIF_CLUT_CTRL_CLUT1_SEL(x) FIELD_PREP(GENMASK(3, 3), x) +#define DCIF_CLUT_CTRL_CLUT_MUX(x) FIELD_PREP(GENMASK(29, 28), x) +#define DCIF_CLUT_CTRL_CLUT_SHADOW_LOAD_EN(x) FIELD_PREP(GENMASK(31, 31)= , x) + +/* FIFO Panic Threshold Register, n=3D0-1 */ +#define DCIF_PANIC_THRES(n) (0x10040 + (n) * 0x10000) +#define DCIF_PANIC_THRES_LOW_MASK GENMASK(11, 0) +#define DCIF_PANIC_THRES_LOW(x) FIELD_PREP(GENMASK(11, 00), x) +#define DCIF_PANIC_THRES_HIGH_MASK GENMASK(27, 16) +#define DCIF_PANIC_THRES_HIGH(x) FIELD_PREP(GENMASK(27, 16), x) +#define DCIF_PANIC_THRES_REQ_EN BIT(31) +#define PANIC0_THRES_MAX 511 + +/* Layer Status Register 0, n=3D0-1 */ +#define DCIF_LAYER_SR0(n) (0x10044 + (n) * 0x10000) +#define DCIF_LAYER_SR0_L0_FIFO_CNT_MASK GENMASK(9, 0) +#define DCIF_LAYER_SR0_L0_FIFO_CNT(x) FIELD_PREP(GENMASK(9, 0), x) + +/* Color Space Conversion Control and Coefficient Registers for Layer 0 */ +#define DCIF_CSC_CTRL_L0 0x10050 +#define DCIF_CSC_CTRL_L0_CSC_EN BIT(0) +#define DCIF_CSC_CTRL_L0_CSC_MODE_YCBCR2RGB BIT(1) + +#define DCIF_CSC_COEF0_L0 0x10054 +#define DCIF_CSC_COEF0_L0_A1(x) FIELD_PREP_CONST(GENMASK(10, 0), x) +#define DCIF_CSC_COEF0_L0_A2(x) FIELD_PREP_CONST(GENMASK(26, 16), x) + +#define DCIF_CSC_COEF1_L0 0x10058 +#define DCIF_CSC_COEF1_L0_A3(x) FIELD_PREP_CONST(GENMASK(10, 0), x) +#define DCIF_CSC_COEF1_L0_B1(x) FIELD_PREP_CONST(GENMASK(26, 16), x) + +#define DCIF_CSC_COEF2_L0 0x1005C +#define DCIF_CSC_COEF2_L0_B2(x) FIELD_PREP_CONST(GENMASK(10, 0), x) +#define DCIF_CSC_COEF2_L0_B3(x) FIELD_PREP_CONST(GENMASK(26, 16), x) + +#define DCIF_CSC_COEF3_L0 0x10060 +#define DCIF_CSC_COEF3_L0_C1(x) FIELD_PREP_CONST(GENMASK(10, 0), x) +#define DCIF_CSC_COEF3_L0_C2(x) FIELD_PREP_CONST(GENMASK(26, 16), x) + +#define DCIF_CSC_COEF4_L0 0x10064 +#define DCIF_CSC_COEF4_L0_C3(x) FIELD_PREP_CONST(GENMASK(10, 0), x) +#define DCIF_CSC_COEF4_L0_D1(x) FIELD_PREP_CONST(GENMASK(24, 16), x) + +#define DCIF_CSC_COEF5_L0 0x10068 +#define DCIF_CSC_COEF5_L0_D2(x) FIELD_PREP_CONST(GENMASK(8, 0), x) +#define DCIF_CSC_COEF5_L0_D3(x) FIELD_PREP_CONST(GENMASK(24, 16), x) + +/* CRC Control, Threshold, and Histogram Coefficient Registers */ +#define DCIF_CRC_CTRL 0x20100 +#define DCIF_CRC_CTRL_CRC_EN(x) (1 << (x)) +#define DCIF_CRC_CTRL_HIST_REGION_SEL(x) FIELD_PREP(GENMASK(17, 16), x) +#define DCIF_CRC_CTRL_HIST_MODE BIT(21) +#define DCIF_CRC_CTRL_HIST_TRIG BIT(22) +#define DCIF_CRC_CTRL_HIST_EN BIT(23) +#define DCIF_CRC_CTRL_CRC_MODE BIT(28) +#define DCIF_CRC_CTRL_CRC_TRIG BIT(29) +#define DCIF_CRC_CTRL_CRC_ERR_CNT_RST BIT(30) +#define DCIF_CRC_CTRL_CRC_SHADOW_LOAD_EN BIT(31) + +#define DCIF_CRC_THRES 0x20104 +#define DCIF_CRC_THRES_CRC_THRESHOLD_MASK GENMASK(31, 0) +#define DCIF_CRC_THRES_CRC_THRESHOLD(x) FIELD_PREP(GENMASK(31, 0), x) + +#define DCIF_CRC_HIST_COEF 0x20108 +#define DCIF_CRC_HIST_COEF_HIST_WB_MASK GENMASK(7, 0) +#define DCIF_CRC_HIST_COEF_HIST_WB(x) FIELD_PREP(GENMASK(7, 0), x) +#define DCIF_CRC_HIST_COEF_HIST_WG_MASK GENMASK(15, 8) +#define DCIF_CRC_HIST_COEF_HIST_WG(x) FIELD_PREP(GENMASK(15, 8), x) +#define DCIF_CRC_HIST_COEF_HIST_WR_MASK GENMASK(23, 16) +#define DCIF_CRC_HIST_COEF_HIST_WR(x) FIELD_PREP(GENMASK(23, 16), x) + +#define DCIF_CRC_ERR_CNT 0x2010C +#define DCIF_CRC_ERR_CNT_CRC_ERR_CNT_MASK GENMASK(31, 0) +#define DCIF_CRC_ERR_CNT_CRC_ERR_CNT(x) FIELD_PREP(GENMASK(31, 0), x) + +#define DCIF_CRC_SR 0x20110 +#define DCIF_CRC_SR_HIST_CNT_SAT_MASK BIT(13) +#define DCIF_CRC_SR_HIST_CNT_SAT(x) FIELD_PREP(GENMASK(13, 13), x) +#define DCIF_CRC_SR_HIST_SAT_MASK BIT(14) +#define DCIF_CRC_SR_HIST_SAT(x) FIELD_PREP(GENMASK(14, 14), x) +#define DCIF_CRC_SR_HIST_BUSY_MASK BIT(15) +#define DCIF_CRC_SR_HIST_BUSY(x) FIELD_PREP(GENMASK(15, 15), x) +#define DCIF_CRC_SR_CRC_STATUS_MASK BIT(31) +#define DCIF_CRC_SR_CRC_STATUS(x) FIELD_PREP(GENMASK(31, 31), x) + +#define DCIF_CRC_HIST_CNT_B(n) (0x20114 + (n) * 4) +#define DCIF_B_BIN_CNT_MASK GENMASK(20, 0) +#define DCIF_B_BIN_CNT(x) FIELD_PREP(GENMASK(20, 0), x) + +/* CRC Region Position, Size, Value, and Expected Value Registers, n=3D0-3= */ +#define DCIF_CRC_POS_R(n) (0x20214 + (n) * 0x10) +#define DCIF_CRC_POS_CRC_HOR_POS(x) FIELD_PREP(GENMASK(11, 0), x) +#define DCIF_CRC_POS_CRC_VER_POS(x) FIELD_PREP(GENMASK(27, 16), x) + +#define DCIF_CRC_SIZE_R(n) (0x20218 + (n) * 0x10) +#define DCIF_CRC_SIZE_CRC_HOR_SIZE(x) FIELD_PREP(GENMASK(11, 0), x) +#define DCIF_CRC_SIZE_CRC_VER_SIZE(x) FIELD_PREP(GENMASK(27, 16), x) + +#define DCIF_CRC_VAL_R(n) (0x2021C + (n) * 0x10) +#define DCIF_CRC_VAL_CRC_VAL_MASK GENMASK(31, 0) +#define DCIF_CRC_VAL_CRC_VAL(x) FIELD_PREP(GENMASK(31, 0), x) + +#define DCIF_CRC_EXP_VAL_R(n) (0x20220 + (n) * 0x10) +#define DCIF_CRC_EXP_VAL_CRC_EXP_VAL_MASK GENMASK(31, 0) +#define DCIF_CRC_EXP_VAL_CRC_EXP_VAL(x) FIELD_PREP(GENMASK(31, 0), x) + +#endif /* __DCIF_REG_H__ */ --=20 2.49.0 From nobody Thu Oct 2 20:25:52 2025 Received: from DU2PR03CU002.outbound.protection.outlook.com (mail-northeuropeazon11011023.outbound.protection.outlook.com [52.101.65.23]) (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 25ADF3375CD; Thu, 11 Sep 2025 11:38:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.65.23 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757590687; cv=fail; b=H8bOsaL2y7A14bmhBtrxU63UflMoNXrlQ6T6ECEPm2w93BNgQ0D8pX0C+ItJG8tENA+5ML0tCfrFOoIXTQgjn+B8BXa4mZhfDQfxpdCnUb6G9mS3q69HOFZ7yIKMUQHGhlNKpPfNUAO9l7oB4xRvM63iwww8aMQWIKkwnuXpnbk= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757590687; c=relaxed/simple; bh=fSUB9/QVQJ9u0F2l+uJhckdD9aUqof7FFSZKPfx2aNM=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=a7wPZjKaSoYTRssicAVLG9Kkp7XP7q93YCR6RgoKnrfQ+/QrqEfyjTPNws76QAlakgNEHVJErq47B2QPC6gNu8Gg5UmHLJT78KBlHIHcA0SNceqeEbpTYrF/VgsiJ2SqHrCeNZr1d0hN31uXIO2m8iGc2xs4OUrMfzd7X+QR5qk= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com; spf=pass smtp.mailfrom=oss.nxp.com; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b=wyEJTtQD; arc=fail smtp.client-ip=52.101.65.23 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b="wyEJTtQD" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=memcV/cS3NypjLa+ZtPS/cZ4gtfmk3FUZfq26t5jkcyezg5Rsk1CQ7OgoujnzVbsaH6VlsbGq+luWYBHz1AFJjzDM9SDz+rm0NDXScygzpEQe2hNJW2mrkUVWw8NN3/J3/uIfqzqryelNY0surnOA2rnr0ACvklXJs4BmGi5QAIoPL0Q1txbuHasyovMzqB93pAP79vwbdA7L0wKvOYr2pWYNgaHECwc9c4Pk8nYggYQSPEresvV3sW1N4GcvMcSRiD+jj2nLL90A2Otu7DRkwh3AkUjyPVKgJSBkbk7TnSCLF/EP42V5RchZdQhA1ocwyMq3dD1p1z+za4RFjbwWQ== 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=NIMnOy5L5xf3/InWkaqrfPV5BiIsvgHScdLM8BbHHnw=; b=wdjXHFMGCe5rEZh2bjSvchOzHpNAaMzbf/bbhRRsCcFt9YDgQKGDth6eEHTTR311TyrtyuvBPTHsZgpLuLHnXmPAOnzY9O+Jw0CwdmkGTs6r3GkqCKvBC2XEeHnWDOOqSwwflIms5Q9g9KZf99O/ZYGRPBFKXe9XZdzg+MZcOO+vJf5CkCk9kvNsMKv3xhm7E5jBNWiD2HNT8tSJ2DaaIF4+WthJrYarSOZ3c/j567k9/SWCVR9YJ9/kaM1JBr5+4ByOXGBGmNU2zhYLrxx3lb2eo0NKNBjstFfsc6Yqz5Kf07vvHp/3QXN/67DbY+/9KkOBStZsly6o9Rn5sIRgIA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector1-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=NIMnOy5L5xf3/InWkaqrfPV5BiIsvgHScdLM8BbHHnw=; b=wyEJTtQDJomA2ttrmcwDqtcRE+6vw4JXuj+RnoS8roraR4crb6Awlsta8/DhJPExE+ws5UQwGAY3YxHTHlwV94tbXqW3xdo5zbVbPnmrVX82FwdecCJhQpUc1SEWg50VCN+IAPqouzxAqO+55UqCt3KnO4AbkIRurhl7Wz6UIrCKTORTVYBNblFe/SknHac2FBCsKMJgBQuceCEamFboh2V3PNbrTNlar9n8qMGEWHGrsN/v5zv9wp3WD+GP5aZ19GGHqEVeyUajT3BuLIa/+D+thrp1Yly5ng2ls9Sk63ZEduXNu2T2hV1HAsWU7wgMkZdR0pnw8Nx4MBwplm8iTw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from GV1PR04MB9135.eurprd04.prod.outlook.com (2603:10a6:150:26::19) by VI0PR04MB10317.eurprd04.prod.outlook.com (2603:10a6:800:216::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9115.17; Thu, 11 Sep 2025 11:37:57 +0000 Received: from GV1PR04MB9135.eurprd04.prod.outlook.com ([fe80::b1f6:475e:de5d:8442]) by GV1PR04MB9135.eurprd04.prod.outlook.com ([fe80::b1f6:475e:de5d:8442%5]) with mapi id 15.20.9115.010; Thu, 11 Sep 2025 11:37:57 +0000 From: Laurentiu Palcu To: imx@lists.linux.dev, Abel Vesa , Peng Fan , Michael Turquette , Stephen Boyd , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam Cc: dri-devel@lists.freedesktop.org, Laurentiu Palcu , linux-clk@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH v5 6/9] dt-bindings: clock: nxp,imx95-blk-ctl: Add ldb child node Date: Thu, 11 Sep 2025 14:37:06 +0300 Message-Id: <20250911-dcif-upstreaming-v5-6-a1e8dab8ae40@oss.nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250911-dcif-upstreaming-v5-0-a1e8dab8ae40@oss.nxp.com> References: <20250911-dcif-upstreaming-v5-0-a1e8dab8ae40@oss.nxp.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AS4P191CA0044.EURP191.PROD.OUTLOOK.COM (2603:10a6:20b:657::15) To GV1PR04MB9135.eurprd04.prod.outlook.com (2603:10a6:150:26::19) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1PR04MB9135:EE_|VI0PR04MB10317:EE_ X-MS-Office365-Filtering-Correlation-Id: bb82cec2-48bc-443f-e70c-08ddf127a790 X-MS-Exchange-SharedMailbox-RoutingAgent-Processed: True X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|19092799006|7416014|376014|366016|1800799024|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?S2QwU2FjU2p5dzlQeVMySVZxMlZRNEJtQXNEdm1FNzRXc0hWV2tmWloxbEVs?= =?utf-8?B?eDZzRjI4K1BWa01ud3VQanNEbTg1cnBlUkRNYVd2b0drVTRIYitwTlBTN3JQ?= =?utf-8?B?YzNIMFVmQm5WWDlWMmhyUVlyM2N5VzB1TjFxbXRqdW4vQzhPNWllcG44Ujhu?= =?utf-8?B?eVVjYnJjY285UnltZTRCZ1FQWnpmWDBIOFM5MUhlZU8vd0MrWWw1Y1ZxU2FH?= =?utf-8?B?Z1RzZUpyWlFxNnYrM3ZjaEhhMEtaRy9OZ2d6S2xGUlpnMk8zYWk4SEN1Mkgw?= =?utf-8?B?QkZFZ1MwYzE1TmZpUVg1RktZNWNXelZKNDViR2hiM3BEa1VOK2FZZUxQaXBo?= =?utf-8?B?dkFRMTlvN1o1NXpabzdWRUxaTEJqMUFLYTh0S3VaUjV4NjNQWnZabnZ5Zkts?= =?utf-8?B?eXhWbGJ5N2V5MUJwMUhEa0NKWHp6S1piTllOSUpOckkrd3phdUo5VmRrRG53?= =?utf-8?B?b3NQVmlWMzJKbUR0VnQwcEtQMWlOMXhxWlF6S21KU2l4K2JHRWJvSmo1emFF?= =?utf-8?B?UVYrLzVmQnZOYkEyZnNuU1hnbmpKOWFHei8xOXZPYlJlVDhKb0QxbWl0VzFT?= =?utf-8?B?L1JxcjNTNjg3ZkVHdzE3VmhQcWwxc0grRHdLZDFMQm5NUm1LMGVvdzZoMlp6?= =?utf-8?B?YkwrV2hFdVYzdjEwU2JxclNUcDhVWStGQVNQOXlLTEcyUjFneis2SDNhU0sy?= =?utf-8?B?RklCOXRncUxJRktWcU1nTzFCVjV1MVVvdVRpN2dZTDV3VXFtYUdBQU1kRzg5?= =?utf-8?B?NmhVYTh0djZJV2ZMaC9LQVlSWmJqRXp2ci8rRnhLNjRZUlJWWVJaL1BSVE00?= =?utf-8?B?dlRiaWptb0hhNjhYK2NnZ3dJbkVQc0VVT0QzUDlzT1JqWHd6ZW5KTkdNK2h2?= =?utf-8?B?YWF2Q0hYWjZyQmFSdGxGOFd5MkxvVUcwSzFSZWlDNU9yZkF0WGticit5Y0Vr?= =?utf-8?B?andRcFRZOXVBZWVoUXEwRFF3SFhqejJUNnhSVnYra3VmOHBEM290Z0NvTi9m?= =?utf-8?B?cThTL2I3cndqNitIb1FaSjhXbFRDQmVPWVZ0UzBXQ3FPNWEydTlNdTNuRzhS?= =?utf-8?B?VXlvRzFwS2ZuYmxMOU9mWHk1TjZrYXFuVGxSUFNic29JTm4vc2Q2ZDVnY1Zs?= =?utf-8?B?MkRYVDdsSU1XVGR3YXVlMlh0cGtlc2NEbTBNem4vNDlQTjhNSGVGVkNFbTJE?= =?utf-8?B?WkJqdVhpeHdaT21PeW96anM1bzlRZzJzbE9SbDNLRnlHSFlyZ0x5N0gxbnp2?= =?utf-8?B?WlZ3cGFCSlVMMURTQ24ralFFV0JWUVBGaGVqK2ZPV1V5ZWI1STczakxrd1Nj?= =?utf-8?B?ZVdUOHY5ZUFuTWorTEJMZkRDQ1BmWC9ndXZxWlg0ZjRUZm8zWTNLRkRlVU1w?= =?utf-8?B?YVg2M1RvWmZMREdqZGdsYkdXTjFMU1h1dDNicWZqTjY3SE1wRWNNWVg3VEQz?= =?utf-8?B?Q3l5K1lvVHNQbnhVRGFGZ0pyazhtZGRtd2xONkk3WUYzZEcyZ3ovd3ozNEtI?= =?utf-8?B?RFA5RCs2ZHhZL29vM2JXUTFaVG4zNGxxQmNIa1Zremh2WjR0WlErTnlpRGk1?= =?utf-8?B?a3FjTlpXRmtrdkFHWDI4MW04ZG1hWXlnRklad2ZsMTRNUk9pRDNRYkJOd283?= =?utf-8?B?QkVpQkVGR0RsdGhpSkk5WHppNmdOZlFBUE1VWnMxc1UwU0l2a3REZDB4ZXZZ?= =?utf-8?B?djRmdTh4aWR5d0lMMUw4eFRHd3dCaXVxc3Nic3crYnR5VEExUC96a3BkaDRi?= =?utf-8?B?UzF0SjNtZkJKQ245d1JQNWhEemg0aWkvSit3MUVVUEM5Q3l5MFVCcjFzNTRm?= =?utf-8?B?U1NsZWxvNkZDeW5lWkRIWGF6U2RDYWtjMG10MlcrSitGaHFxYkxObVdrdVVZ?= =?utf-8?B?eHhYTnMzdDFVaDdVeVhEdTBTYWNnQVBQdlJkblhVMWZGSkJsSzlOZS90OG01?= =?utf-8?B?UjJHWmZQbFlKTWVQNU82V3lxdllQTGR5emYyWHI4NVgrTGMwSkFFQ1ZyUjVM?= =?utf-8?B?UVR3ZUlSYnR3PT0=?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:GV1PR04MB9135.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(19092799006)(7416014)(376014)(366016)(1800799024)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?WjZaQnZuNSs0dU5PajRDZklibEdaRFgrQUM4eUZTSnJFalNadVcxQmlmYnND?= =?utf-8?B?dzduYjRXY20zdUxwUnk2U3dUbVhhUGhtY0FaS21kQ3ZxbWlhaHIyVU1odWpq?= =?utf-8?B?Q0RvRG1LdEQzL2J2MGMxTUlNSCtqSWdCbGUrbkZCRVhhUUdEMzNGUmhFYm41?= =?utf-8?B?NzA1d0tOeEdSOWgzNnN1b2JYNStwQ253ekJKMGl3MFlyblNMdFJtclJiK1pO?= =?utf-8?B?a1FxeHBWSDh6dFpmYWxpQ241TmFSbG0zL2krTUtXNVhzSnFpY2NWbnhTc2NO?= =?utf-8?B?YlVtU0ovTFE0dzM1bExRYWtGZVBWdVVHUE1GQ28yeU1HVVdOSDVYbjZ1SVcr?= =?utf-8?B?WXd3UUNHUlJZcmVHaDJQVncyTk1yYkszbWhaMFVZSGd2ZkpFQ0ROQXNOL3pi?= =?utf-8?B?VVBtdHh6NmRRNFh4cHZEVENQeFI5dTR1NUQvby9UR0dvQ2daSmtjYjFtdFA0?= =?utf-8?B?VUllakxRYWROa0NqaEQ2VXZYSk9JYytBK3IzbzhZSy85dHFkOE1iRWo0UGd5?= =?utf-8?B?Nk1QODZrUlo2Wm5YRmF6a2h4VlFTNGZvRDJVQThFSi9xZWJtUTlIc0FDNUdO?= =?utf-8?B?VmdseUFUd0dUZHo2dTNLYm9GdDVlNC82SGQ1UVZTdEJCRWZaWjkvOS9RU3Yw?= =?utf-8?B?UzJoN3hQN01wSFBjaFdGYmJkKzlqM3RMVUlGL3FNVVRsY3BpS1hxUE5MYzY1?= =?utf-8?B?cHlNMzJHRWVDUmFpTHpDZzdJR3NXcHkvRUpSeWE0dGk3STgxQVI0ZGU5aHhZ?= =?utf-8?B?VUlDUnV3SGtycDRYRzZQZVdKNDlmNjhqSUNsY1czeFZTaTJUZmZrR2xJVmNz?= =?utf-8?B?SG10ZW0rN3lsd3ZyamRWNkR1SUtUQ21CR1pGTU03YlJ4THMyelNjNlV6NW92?= =?utf-8?B?VmdBUzJrd3E4R1ZESlJBOGxoTlYrdC9ldFhNZGhnVWR3RUxEQVVGSmlTcnJw?= =?utf-8?B?RENYUnZmU3psOVpGc2VKbXJmblhsQUZxQWxNTXpreWNRckJWVjNlcFozNG8v?= =?utf-8?B?VzJMdUJPcVIzU09lTzNhNzhIeWdaYUlvWUNRSGRCdXI5aENUcDcwNlRqZDd6?= =?utf-8?B?R2Jzc3pzRVpJdFR1djlWbEV6MnlBWndOT3BqWTE2UXE5THk3NHNvU0J1M2VU?= =?utf-8?B?d09tQVVKRDNGVXR6aVJxV1hUZUwzcWtCaGdRTGpXVlE5THJGYjZEeUVGaFNW?= =?utf-8?B?NDQyb2Y4MStOekh2VEFyeHVFZmdsZ2w5ZlRkSVl3ZHZNdG9QVDY0anE3NE5q?= =?utf-8?B?bXR2MG1xbWdZUDFEMENOa0dDRDF4YUorSGZxakk2b1dKME1RUEhabGVzcytN?= =?utf-8?B?QkxPMCt2VHV5MHJ1SlZnaU1tb01TS0JoSGlIQ2xjeXpwS3JKUTFSYUhMQnpE?= =?utf-8?B?U0p2QXd0alZKMTBXUGV4NWd6YXVINVdidkpaYk5DVG9zRDVUb0N1cGx6U0Ru?= =?utf-8?B?N3lha2MrVUpjdjFBM2RPTm1xTFFQdEtHMmJDYlBxNVZPZnAwWFoxLzVFMklX?= =?utf-8?B?WXRBeGtyNGdkSDZKb1Bmd0xhVVlycHN3cEgyQmZYZVpqL3hkVXBoTE9LZWU3?= =?utf-8?B?NnNScmFVSXoydGpzL0VVajBjay9MOURFVWtGVTF3OUl3cHh4M3BKVDFIV21x?= =?utf-8?B?SE5IQnZrRnBCVXVPcG5YbENtcy9pMXNtWkRjdmpXd3NJRlp1WEhXa3V5eXZr?= =?utf-8?B?STVpK0NabkhidlJjTDBjU1ZxM1pISENpSHpLS1FGYTc5OE5aSEtQNUxpUWJX?= =?utf-8?B?N3RQaVlPYXRxYkQrbndTNG5mQXJjWnc0NEJXUGtobzIxRytNb0xQZTIrUmNZ?= =?utf-8?B?RUhYZnhUcmw3N3Y3YzREeEhkZndIWUFYQnFFZ1VEVStLVFN3ekZIdXN1ckdY?= =?utf-8?B?ZkRzVGlaRTVFRHhTVmtlU2IvTXpYaURwa1pkNHR5NnJQSDEyRFRYZ0RrQ2dk?= =?utf-8?B?MkRONnhQTWFwVmVFUk5kT0NjVVhMUHNwbzVrZmNIV3FubzZhMFZ5WVBhSHRq?= =?utf-8?B?cmlQLzNMVVh2MCttZ0lWbWl3aVVuYVVWUS9nYk13eGtybDU2OUtTMU9VQ3Jp?= =?utf-8?B?R0h4VTloN2VSSWwzd2JNWlNzcVJDWUF5KzVGOTFqVVA3dFJRM0JQMlZrNDJh?= =?utf-8?B?YUNvS3RvdGQvc01UWlEvQjBzZFNlc25zeFNkYTZNeXI3S0FZNHVqdVV1cUtT?= =?utf-8?B?aGc9PQ==?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: bb82cec2-48bc-443f-e70c-08ddf127a790 X-MS-Exchange-CrossTenant-AuthSource: GV1PR04MB9135.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Sep 2025 11:37:57.6957 (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: NMYzbCzoyClH/BsYSii67YzejU1I88pWDbbjRrGLYxqPTWgmzC5m82BtusNmcsCvZttDVOeazIHXlBwJRk3BOw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI0PR04MB10317 Since the BLK CTL registers, like the LVDS CSR, can be used to control the LVDS Display Bridge controllers, add 'ldb' child node to handle these use cases. Signed-off-by: Laurentiu Palcu --- .../bindings/clock/nxp,imx95-blk-ctl.yaml | 26 ++++++++++++++++++= ++++ 1 file changed, 26 insertions(+) diff --git a/Documentation/devicetree/bindings/clock/nxp,imx95-blk-ctl.yaml= b/Documentation/devicetree/bindings/clock/nxp,imx95-blk-ctl.yaml index 27403b4c52d6219d31649d75539af93edae0f17d..d4a20d17fc5758453e9c59c9489= 3380ccb34f3de 100644 --- a/Documentation/devicetree/bindings/clock/nxp,imx95-blk-ctl.yaml +++ b/Documentation/devicetree/bindings/clock/nxp,imx95-blk-ctl.yaml @@ -26,6 +26,12 @@ properties: reg: maxItems: 1 =20 + "#address-cells": + const: 1 + + "#size-cells": + const: 1 + power-domains: maxItems: 1 =20 @@ -39,6 +45,26 @@ properties: ID in its "clocks" phandle cell. See include/dt-bindings/clock/nxp,imx95-clock.h =20 +patternProperties: + "^ldb@[0-9a-f]+$": + type: object + $ref: /schemas/display/bridge/fsl,ldb.yaml# + +allOf: + - if: + not: + properties: + compatible: + contains: + const: nxp,imx94-lvds-csr + then: + patternProperties: + "^ldb@[0-9a-f]+$": false + else: + required: + - '#address-cells' + - '#size-cells' + required: - compatible - reg --=20 2.49.0 From nobody Thu Oct 2 20:25:52 2025 Received: from DU2PR03CU002.outbound.protection.outlook.com (mail-northeuropeazon11011046.outbound.protection.outlook.com [52.101.65.46]) (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 82A98338F59; Thu, 11 Sep 2025 11:38:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.65.46 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757590693; cv=fail; b=mZCfikVnyhlQRS6byzGnAfji0Ton1HLaHKYtLisV8Viy4A8MD0v6YIFSvqODiEK77vE5uQeZ8cQ4g7x92hQOpPnIMtzZY78+iw+hqc2CVw13exbR2BScoGDn0LmCnWlEVeZb64bI9dfkpg7ab1g89LbeOHcJzAMl6462QXCFxj8= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757590693; c=relaxed/simple; bh=hvnUe7EkevNYVWBmK+fhWjNG9PB6TrP+j51pPuCYRZs=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=KFJTmk7Ia1V1NbJ5yJagBZhd5puUJCHacYIOGGG+6ZLh57Opgyjn1dky05crGsD8IvFuCUbgK6eooular3LOn0ZmpSKYrbHpn5rWHJ+2fAp0JPwcLOCYpgV4bb9o83t1pGKL0I0s6aaEM7ECPVgBzThRX8fH9lGRTC8jaYIzU6U= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com; spf=pass smtp.mailfrom=oss.nxp.com; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b=Guoyul3i; arc=fail smtp.client-ip=52.101.65.46 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b="Guoyul3i" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=yVpQzR6gX4wgznhUQOsNZOokcl+EUDHjE5UBtlhFnP5+2/RgbunQ89lyznWcrp8kOU27Vmkj8uSBj4UPB0KGHKk+/z3gfMhRtIBcHxFvSg2yXjBMBxZXkjwt1GX7t/m0qwM29hK/a5PjzJjMwWlhupooGv/X45JXUV6c0cRvWqZEHEG5FDsKhfhWbl4DgQrKswtEFvh7fbBzKK1TMtzuBuR/pvi5TDL7HF0VnNuzP3dlqPL6fro8of1x90H+q9sIDbb7yRIq896275/t3NJCmrLwozCy8FV5haLn9qf2x2J5cTFrzFQmMJZBWh0p2Ipu6XZJTNcIUrrDjJjwf3NFNA== 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=ubB9zz1L61YLYrsKGuGpOrlXI1sJyCpHxG8KI3nmEAc=; b=WN5ZYpR9HI2sbldR1c0mFGfyG3t6MlmYvJJlOeonYXUcKjZ4rPzY5tKHG5hoac0BNhAqa3E0r5riM5q1M8ghBB6hiWBMOBX3GZhzDxlWawRGfeuNJHRmQfKT4IcC0UWbO+gALfY8TtQFTDmMdGOQavuziJAYBgOZhNTKHHzRqmjPm63GdkufcoZXQ/soXJ3WuT2DUw2NXc9Gi2PD78aLcv7Hce6fusr79wqRcunmoJyNxBZJfUk8T0ThZ4q14h5/4JkPbxNjiSuqvb9Gf0cifhya+ZgGT7GGEtsrf+xxWMs95K2rG03UTqbMo/4sOn/V3chEQcchuJJ/WvMvuvKlbw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector1-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ubB9zz1L61YLYrsKGuGpOrlXI1sJyCpHxG8KI3nmEAc=; b=Guoyul3i4HNFD1Wsdo+IAzL+eLL/5WT+aYJE4L7Y/wGgnj2lOE2tdzL3j8rg6r+gV/kVC1BuMBJC33Sbx7E8yTAsezlo5dCxRaPwUQGeForjO4XP+kR6Bcfh2cpFErLx/KA32lqILUdCl3lHQWt8LwOpefxll5S/MFL+ZcD8IWwVCm5OOlnukbgZVNubZekKzCNHTo7h1HSEZh4TXx5qsxgQsZi/flZwm6fFf0PH+TEk+Yw75fl8n1XhzhTyXAj7OQ1kx+UpVAKWbJJxsCrBlaLOcdTfEEmYHbRQnGcYKXrHDuRddGYQgh4mn33wuHm3TGKWHcGz7QoJimdiJbm1ZQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from GV1PR04MB9135.eurprd04.prod.outlook.com (2603:10a6:150:26::19) by VI0PR04MB10317.eurprd04.prod.outlook.com (2603:10a6:800:216::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9115.17; Thu, 11 Sep 2025 11:38:03 +0000 Received: from GV1PR04MB9135.eurprd04.prod.outlook.com ([fe80::b1f6:475e:de5d:8442]) by GV1PR04MB9135.eurprd04.prod.outlook.com ([fe80::b1f6:475e:de5d:8442%5]) with mapi id 15.20.9115.010; Thu, 11 Sep 2025 11:38:00 +0000 From: Laurentiu Palcu To: imx@lists.linux.dev, Rob Herring , Krzysztof Kozlowski , Conor Dooley , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam Cc: dri-devel@lists.freedesktop.org, Laurentiu Palcu , devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH v5 7/9] arm64: dts: imx943: Add display pipeline nodes Date: Thu, 11 Sep 2025 14:37:07 +0300 Message-Id: <20250911-dcif-upstreaming-v5-7-a1e8dab8ae40@oss.nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250911-dcif-upstreaming-v5-0-a1e8dab8ae40@oss.nxp.com> References: <20250911-dcif-upstreaming-v5-0-a1e8dab8ae40@oss.nxp.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AS4P195CA0017.EURP195.PROD.OUTLOOK.COM (2603:10a6:20b:5d6::8) To GV1PR04MB9135.eurprd04.prod.outlook.com (2603:10a6:150:26::19) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1PR04MB9135:EE_|VI0PR04MB10317:EE_ X-MS-Office365-Filtering-Correlation-Id: 857ebc08-33e3-4706-806f-08ddf127a949 X-MS-Exchange-SharedMailbox-RoutingAgent-Processed: True X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|19092799006|7416014|376014|366016|1800799024; X-Microsoft-Antispam-Message-Info: =?utf-8?B?OEdWbXpEZ3FzZHBCelZ2aTJHZHJmbU9YTTRTbHZ1OGZQeW0wNDhjY0FYSDdG?= =?utf-8?B?L1JVZjlzTVkyTEFLbEtzYzF6aHNyd0IrVDhWY1FmWWYzZ054VHUzRWxNeEE2?= =?utf-8?B?Y3hwMTlJKzVmWmp4WEVJczdob29xL1dad0VTWUxnZmdFeVZCaVBISVNocEZv?= =?utf-8?B?QlorR2ZZMGdyNS84djZPU0orSVRuWlZ6eFlpZEJwUVdjU0Q0MGQ4QTVLcjIw?= =?utf-8?B?ZG1xOE1CdDduUWg2bC9EdUdFMXJXWHlYTTFjekczRmVzRk05OVF4NzNKaUdP?= =?utf-8?B?TWt1UmxvYkoxS0J6U1d2M2xCcXpTYnk3VEY1SjZIWTBMOGRtRWQwUzArWGY1?= =?utf-8?B?eDNld2JZbm9VREExN2VYSXZWUVQ3Wm9iWkpta0htOG5NVzBBZFR6dUtPWFRI?= =?utf-8?B?ekRhSGRVamRTRWIyYng1aG5zQWQ4OTh1cWpuL296TG93b254c1lEbWlkUHRS?= =?utf-8?B?djJTK0ZoSElNZU9xQWY1RnFib1NjVy8xN2pVQjYwZm9wRFFlY09SZy9MSzJD?= =?utf-8?B?UEhFVEtTa0ZQNGFLWk9WeGRWTVg2cU5ZWVVzZVhxQUtyY2E1Z2hNY2NOWXJi?= =?utf-8?B?d2RibXpTSEZmMHl4NlhWYU9pMU1Kb2xPR1pJcWVpemdFK1B6RXk4SlVJci9i?= =?utf-8?B?V2xPM3dkWHlqbUdrMzQzOW5LeTQ5Q0tIdmpmUnAycHhSRFJsUGZ4NTdHbFpj?= =?utf-8?B?VnNqMDFPaWQ1Yzc1YmlhWDk2dHViWHV0VjlEK1ZmOW8wNjRKMjFqMDB5Rksr?= =?utf-8?B?MkVSU0I1SzBiS2lhNHppbUJiMjRNdE56SSs5Q01SZVJ5Z1p5dFpWbTY2SkpU?= =?utf-8?B?amVuUW1wSFN3QWE4eDhZZTE1bkV1SE1QRlVDTTJHSExkYVFKc3NDVE5CMXlF?= =?utf-8?B?RzNJaFRBeGxCUXdiVHh1ckM4UVIzQVJFd3BQZUNpYzdVamI1b1ZEZCtOMUor?= =?utf-8?B?NXlleVl5QUczUENSbDRIZGR6aXBGd1FOYVFFUHpQdTQ0eU16MzZPZ2M3OGtv?= =?utf-8?B?THFocjZFWU9IVkJ4Q3RLSG9vTFZ5bEZUT1pieUtoNWw4L2tZb2xSRDBtYWVI?= =?utf-8?B?dGhrc3dxb3V2UGg3TVhTS3dvL0tOdzZGNHlSS3Y1U3pIWkNOVkxTSlFrSklo?= =?utf-8?B?NzMxU1ZZeExJd1BnaysxS3NHQ0xGSXp3ZjVDUVlrc3MxU0RDRjMyenJGNmZB?= =?utf-8?B?bWhXam9jS09wLzZWZjZjSTcyUWJ2aktRdFhXMzErL1pYaVR3N08zc0w3dTk4?= =?utf-8?B?akxJNlNHZllRRGZUYmU0K2pKRzJHSzdxSjNpdHhjdXh1VWsrbFp6UDZJOEtU?= =?utf-8?B?RHdBVFltSEZHb2NxK3FZdWNXVG5rMWwyLzFndUIwSnVOOWJ5Sk9tV2tPR3Z4?= =?utf-8?B?OWJjMm1YdDdpbDNjVWlQMXhDbjFPanJHRG5xSXl6aWxVdkQzNTl5d0kxMCtR?= =?utf-8?B?UzdEY3lsakZtREhNaEE0VnlJRE8vcTNNRVRWUEowVU5DY0ZEVklWQkpsazlt?= =?utf-8?B?NFFFVnR0TXZycUJiRFlPMFF1LzE0SkVVZVVNQ0t3Rm5XM3JZblA3WlFuSDFa?= =?utf-8?B?KzlhVTc4OU5LdnVEOStmL25NZWl0M2FYNFBpTnZYdFFHRDV3czlMRjlyUGpJ?= =?utf-8?B?dFJzTzBta0hwWnRrTzVOa3dkQU9GREh0ay9wbXBZYUV5Tkhld2VTeE0xSHR0?= =?utf-8?B?VlFBRHpIVk5HVCt4VjRSNHhqNitIV0pCcFVScndOVGFFUmtRTFRuc0luSTRn?= =?utf-8?B?WkJNLzEzUGd3YkNxWTBiR083Mng0MXpBdGpML0pHWHFHKysvN3NxNDQwdlhm?= =?utf-8?B?bmd6N3RJbWdyaDVIa1NKSFF1OVNTbXB2YVp1eTZFQmxhcUQxNk9VUUxNMTN2?= =?utf-8?B?TXQ0YzRDVVBBSWhaS1RoTDIwOXYvR0liNWw4QkpDZmdNV1FYd1dhVkU3Q1dk?= =?utf-8?Q?184Q1/kxDi0=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:GV1PR04MB9135.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(19092799006)(7416014)(376014)(366016)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?OEkycEpkSzRuZmVrKy9IRjhjVk8xV3BIUElBTm50bThEZVAwTUVBNnFHM1Bu?= =?utf-8?B?bUs3RUtZYXZpRmI4eXQ1bmFlMjhGWmVLTWdpV2hTRHZ5OEVZQlc2ZEI5eEw0?= =?utf-8?B?YXJDYUpsZ3B4a2RpeGUvTC9tQ3hjOVhPaDJrbEczRXd1QnZoRURxcFFnTkZp?= =?utf-8?B?YlBHWlVRVEdJSFNrN2M2TlhKMU9JekEzazMxNWlzekNvWFFYa2pjUDZTQU5F?= =?utf-8?B?dnJWUUJyWmRsc2w4WWZKaHRETkdhQVh4enYxbldVQ0VDNU9EYWxGV2ZmWUZv?= =?utf-8?B?bzFCeW45YTQ0NUcvMTkvTmg5bitxVUlObVYxRUxBYXhWd2pvRVIvNnBlMmpj?= =?utf-8?B?VitPejJ4WWNTNkR4Vk1RZlQ3c1JHM090YkdJMXJMT0l6a3N3cjNwQVFPQ0lJ?= =?utf-8?B?WWJWRmhMWkZ0YWg4VXhSR3VVZ0xaZ3FPWUFlbWtnVWszNWNCcXZnN0hzRlpX?= =?utf-8?B?OVovVCsrVVB0RzJzb0xBd3pudzFLWC9hMVJKYTQxTUlkcHZiRTZ6VFdTY1pF?= =?utf-8?B?T1ltWHBBUGRlaUJxQjJTRFJPaXVFb0IrRklWQm1aWEZ1S2lQOXJ3QWZ4K0Jj?= =?utf-8?B?UkNBWkFHbkhwbUJqWS9uMDlINmhaYkp1U2JJRkFBSndxUEFWTmVWdGhCSFRW?= =?utf-8?B?N2h2Q01PSWUrOG9vZFRRbHFOTnk2TGx1akM4anpsZm0vSmtTbFM5djFvMFpm?= =?utf-8?B?bDBEWlEybkpUMjRwaitwVlJoMTI0bGtoeHdNZEpHT1d3M2xKSFRBL1V3M0Y0?= =?utf-8?B?M01NSC9Ib3lzSHFEM09QNUZlWTd1Yjl6V3MwRitHQXJmN3J1OEM2MHlMK3ky?= =?utf-8?B?VWRhWDVySWVYNWRySHl6VFRETUszK2Z1ejRkSWhwTHhPUFFRa1Y1UXJZaGZz?= =?utf-8?B?Y3ZsVWJ5bXArOGdVUEc4ako1cDRLeW9QOWpUN1JNNjkzTjkyN2Vldm0ydG5Y?= =?utf-8?B?eDNJR3Badm9aeVFyNGFCczFXMjZzWXpkMFEzTWJYNTZmYXJYSS9ycS9SU0dQ?= =?utf-8?B?d2Vqb3JDczVMZUVlYmZSTTJWOHJFUDZyRHhBNWdDR3dTWC9CS1VCSlJNS2lt?= =?utf-8?B?NVBVMkp3VTlReFJiSlQxYm1RcndmT1AyQ1VlSUJzanBpcDBmYlNZeVFaVE95?= =?utf-8?B?czFYQ2YzK0pFZnplNllORUtXWC9kT25uOXlFamUxaXJDWFdjb0N2NTRDS1Jx?= =?utf-8?B?aWprMDJPTGY5cG9uakFUV0xaeHE1ZVk3a2Q3ZkZPR3paaC8vNmhabTc3cUxp?= =?utf-8?B?REh3VDVNNFFJZ0VLWkEwVE9Ydk56QVZuaTExMXZJOCt5amU4QXoxanNEeDUx?= =?utf-8?B?RXVDb2hwQTlxaGlwUnRFQ1VLcmIzV3VPcytjeUl5N2FsdUxBNldWM0tqWnd3?= =?utf-8?B?TERMSURWTC9iU0FET3dXZ214Nm9zSlpPejFhdThweWlHU3loR1owRDZRRFVH?= =?utf-8?B?SzZWSUR3Q3ArU2QzVC9XUVhyME55ODY0N0EyT21mcDk5TC9WSm1XZzF2SzNh?= =?utf-8?B?S2RYQzJwQ0hwQndMOW8xemI1Nk5VdGVhd1hEWEpUZkYwa1ozUlZQN0dNS3Uw?= =?utf-8?B?OTRjVlcrSUFlUFVVd3RHL0c1VXVTY3ZsZHNkZFdRdXc4eFZrUU9jSGZ0RWM5?= =?utf-8?B?Wk9sUGFSMHF1aFN5cllheFZIakFTdDlGeU9OSWtVMmFlaFJpYytFN2ZQN2Ry?= =?utf-8?B?UUt0bXUrajk4bHA5WnByNjdYZ3N4djNPM0l5NW5Ob3FRbitJT2FQV1RqWk40?= =?utf-8?B?dmMrT0FoTk1xVlJ0VTFWNTVtR2FxRnNlVjRzY0FmZ2p6VnpJNytSUjdtcW04?= =?utf-8?B?akM5SGR5U0I2TkpGUDRic1dYNTAxQmM3WnNXbFhmQmtLc3FBK00zTGYza1BC?= =?utf-8?B?eHZ0eWpaeXRPYnZ6VU5pQ1lxR2psSHRJSkZHUG85TDEveFJtaHFnTkZ6V2dp?= =?utf-8?B?UUtWUHhqbXB0WDBIVW5pY3lyL3Vpc1BxTVdVNnkycGN5bTlNaitxaGpDWVRJ?= =?utf-8?B?VjR0aVZmcWdBZ2tVRmNYOVprcUxwZ2l6T0UwWUtueWdPM2x2S3BNZ2diQjlD?= =?utf-8?B?d0N0cXJqQkRoYTNpTkp2cmUxMTgyM3JpM1BUMno1em9WVld5TXlIN0Nybk9O?= =?utf-8?B?WFYvQjNUWjdKdUU4N3VwNlYyM1plOWJVS2I4K3RYODAvNVZiSVVWM1F4cHBx?= =?utf-8?B?Y1E9PQ==?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 857ebc08-33e3-4706-806f-08ddf127a949 X-MS-Exchange-CrossTenant-AuthSource: GV1PR04MB9135.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Sep 2025 11:38:00.9115 (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: a0w/GtxWdgAyTQp0Sj9FLgB5RjNR5FU1bSV//YWsuGumrMyi/3sEvL62Jbqp3glFa2iLnfLTsxVHCNj04tI10w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI0PR04MB10317 Add display controller and LDB support in imx943. Signed-off-by: Laurentiu Palcu --- arch/arm64/boot/dts/freescale/imx943.dtsi | 53 +++++++++++++++++++++++++++= +++- 1 file changed, 52 insertions(+), 1 deletion(-) diff --git a/arch/arm64/boot/dts/freescale/imx943.dtsi b/arch/arm64/boot/dt= s/freescale/imx943.dtsi index 657c81b6016f21270a1b13d636af72c14ab4f8ef..9a91beef54e8680a31db06b3afa= b4a20d780dc94 100644 --- a/arch/arm64/boot/dts/freescale/imx943.dtsi +++ b/arch/arm64/boot/dts/freescale/imx943.dtsi @@ -148,7 +148,7 @@ l3_cache: l3-cache { }; }; =20 - clock-ldb-pll-div7 { + clock_ldb_pll_div7: clock-ldb-pll-div7 { compatible =3D "fixed-factor-clock"; #clock-cells =3D <0>; clocks =3D <&scmi_clk IMX94_CLK_LDBPLL>; @@ -174,9 +174,60 @@ dispmix_csr: syscon@4b010000 { lvds_csr: syscon@4b0c0000 { compatible =3D "nxp,imx94-lvds-csr", "syscon"; reg =3D <0x0 0x4b0c0000 0x0 0x10000>; + #address-cells =3D <1>; + #size-cells =3D <1>; clocks =3D <&scmi_clk IMX94_CLK_DISPAPB>; #clock-cells =3D <1>; power-domains =3D <&scmi_devpd IMX94_PD_DISPLAY>; + + ldb: ldb@4 { + compatible =3D "fsl,imx94-ldb"; + reg =3D <0x4 0x4>, <0x8 0x4>; + reg-names =3D "ldb", "lvds"; + clocks =3D <&lvds_csr IMX94_CLK_DISPMIX_LVDS_CLK_GATE>; + clock-names =3D "ldb"; + status =3D "disabled"; + + ports { + #address-cells =3D <1>; + #size-cells =3D <0>; + + port@0 { + reg =3D <0>; + + lvds_in: endpoint { + remote-endpoint =3D <&dcif_out>; + }; + }; + + port@1 { + reg =3D <1>; + }; + }; + }; + }; + + dcif: display-controller@4b120000 { + compatible =3D "nxp,imx94-dcif"; + reg =3D <0x0 0x4b120000 0x0 0x300000>; + interrupts =3D , + , + ; + interrupt-names =3D "common", "bg_layer", "fg_layer"; + clocks =3D <&scmi_clk IMX94_CLK_DISPAPB>, + <&scmi_clk IMX94_CLK_DISPAXI>, + <&dispmix_csr IMX94_CLK_DISPMIX_CLK_SEL>; + clock-names =3D "apb", "axi", "pix"; + assigned-clocks =3D <&dispmix_csr IMX94_CLK_DISPMIX_CLK_SEL>; + assigned-clock-parents =3D <&clock_ldb_pll_div7>; + power-domains =3D <&scmi_devpd IMX94_PD_DISPLAY>; + status =3D "disabled"; + + port { + dcif_out: endpoint { + remote-endpoint =3D <&lvds_in>; + }; + }; }; }; }; --=20 2.49.0 From nobody Thu Oct 2 20:25:52 2025 Received: from DU2PR03CU002.outbound.protection.outlook.com (mail-northeuropeazon11011046.outbound.protection.outlook.com [52.101.65.46]) (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 091E333A006; Thu, 11 Sep 2025 11:38:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.65.46 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757590696; cv=fail; b=iut1D5uliJqBuRVLkGx7xYZZEhw3KdNxEh48JsFyp/ZbydiDcb9UJS/YGmnMlxbAlZx/Soi28xZgKm5uY1JbJboD2Nd8mPJk6kCI70OB4L50jVfnsnZQJhz+AVPCZjedW68/T928PJ4hfjXlAiL3nMC37sVZHebrpt4DzSzXGsc= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757590696; c=relaxed/simple; bh=OZc5b8SMrP5RALP1Ul8ioVZ6NTEighkd0Niibc+aC1s=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=nRmWUduR/l8npFeHBaHn9MEAe0I1lTK55SgQ9Pby7+L6Uu9LMhDpD0xvsK6CaQ6EpTaOlSFXMTZdeQ8hI1OEoHwTLdyG41ijbdIWcWSVZyFZSgBLcBrKVSOZKmBt/D+Bjy4HgCwfHCAIwa3HUNj8rH5YzIU52lglKdkOlq1qOVk= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com; spf=pass smtp.mailfrom=oss.nxp.com; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b=V+faZBpb; arc=fail smtp.client-ip=52.101.65.46 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b="V+faZBpb" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=NgoykvytH6nKQVlWJeMgqWrj+ryiXcqpr1TI8NfICsR9dtUbvhS6DxCQ/5qiUShTa5mInBPvAjAg41keI2iaFAMXYm1CW1J4seEjRqxPyuiyOAx36VcWi5SA3VSLWLm3xDd8DlxRspbzGEbDi4VJoDvBg6PcEMH19xgWdqKJ8YKHlCCKhP156h6dfmhwct00rKOY+F9/2F2AMWqrabxrYt2OY6loNOp2+hhcS5PVXfDbyHRa+1lzbfUrl0t+EAIAQHtMSFyy+LdVwrO1Zm7zbbcG37S74XNUTJkL/SrIk71Hdr9mY9ssx7bO10cTcJSLT+NqncQU6CpE1aimn4Ou/w== 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=1t1MPpU4c0NThNtsOWMYS2juC+Nx+a+3da+ILeo3Sqw=; b=N+1rdcayfoOzck9pDR7PlF0xZR7GjloirRD57kgQdHLuCvwDNx6pc+iODWxU1jLdsoOCW9RcBWSiE4vnoSl0ElPPV93H0vfaqkizMiacp/nFUObHT43l46lLHNpsUWBWG8UpGOr8apNcNjTQ+19UJPRU2RhYY6L1ZT3Ru5roZaOr2rPCX/oSL21EehYwNWhN6msgBNUK+71CmOVHxhL8eK1HgHx9Ca7/I9EnTdNa756E9/qkwcYMgNFtb5FzQAw9t6f18stKErTTwu5jR3+WWLUBxE2aDfEd3I7NfmyPxgY4TViia4p/m5PZIKjHQE548hf3kVZnls2xJFclv14AwA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector1-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=1t1MPpU4c0NThNtsOWMYS2juC+Nx+a+3da+ILeo3Sqw=; b=V+faZBpbpUQerId4jCdWGg28pAezApOoLAAFX3nntIwVFS9vmYzKwyV1ChPONXCoUwWvv1Ef39P+Gn60C0jie1q+899m2dRI5GUyQ/sZOWUFg156BVLC8XyqNnFiT5RkjsRUiYK5t60LuX9UGM1VV31S+oY+DmOYakLxYpR+yMFt5khyXgXpdMt/6DLhvUinAcievH0jbv5Z+SDjPj4DUm4ZxQhWDXKH/kiJvGoU0khXd1NXxgMv+ipuqU12LJ3Is+9ZAto49813rGZS570+nLPAdt40LqVQe+PPDyWJc5DvfLJb3r8WpeCaPgO/tzBHeNVwJjFSlIRM86T5yZdVEA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from GV1PR04MB9135.eurprd04.prod.outlook.com (2603:10a6:150:26::19) by VI0PR04MB10317.eurprd04.prod.outlook.com (2603:10a6:800:216::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9115.17; Thu, 11 Sep 2025 11:38:09 +0000 Received: from GV1PR04MB9135.eurprd04.prod.outlook.com ([fe80::b1f6:475e:de5d:8442]) by GV1PR04MB9135.eurprd04.prod.outlook.com ([fe80::b1f6:475e:de5d:8442%5]) with mapi id 15.20.9115.010; Thu, 11 Sep 2025 11:38:08 +0000 From: Laurentiu Palcu To: imx@lists.linux.dev, Rob Herring , Krzysztof Kozlowski , Conor Dooley , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam Cc: dri-devel@lists.freedesktop.org, Laurentiu Palcu , devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH v5 8/9] arm64: dts: imx943-evk: Add display support using IT6263 Date: Thu, 11 Sep 2025 14:37:08 +0300 Message-Id: <20250911-dcif-upstreaming-v5-8-a1e8dab8ae40@oss.nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250911-dcif-upstreaming-v5-0-a1e8dab8ae40@oss.nxp.com> References: <20250911-dcif-upstreaming-v5-0-a1e8dab8ae40@oss.nxp.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AS4P191CA0033.EURP191.PROD.OUTLOOK.COM (2603:10a6:20b:657::20) To GV1PR04MB9135.eurprd04.prod.outlook.com (2603:10a6:150:26::19) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1PR04MB9135:EE_|VI0PR04MB10317:EE_ X-MS-Office365-Filtering-Correlation-Id: 6ccfee84-99b7-442f-4bcf-08ddf127ab31 X-MS-Exchange-SharedMailbox-RoutingAgent-Processed: True X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|19092799006|7416014|376014|366016|1800799024; X-Microsoft-Antispam-Message-Info: =?utf-8?B?UEpoWGhkaXA0eDJqS1dtb0ttNjJXQkNwQjhZYWFvSkpJVG9DQ2xBNVpaRDdV?= =?utf-8?B?dnpDVDdXT2pTSSt0TXdUcmtiOUJtSHh2RWd0bWVqRm95c1RmY0tycUc4MEx5?= =?utf-8?B?VExXSHRrVHVRS25KSDhCd2Q4dW94L0FpTEJ4TXg1QnRoak9obFhmek0zdW9O?= =?utf-8?B?dE4wVEtxdXF2TlNFVVhzY0JPY0xrWjRzbWMzbmhVeFhNWkF0ZjJHMFU3TFpF?= =?utf-8?B?MHJHa2c4bzdLRjZXazFZLzdhK2ZlZC9tdVF3QS9OQ3lVMnk2OGIrOWlkd2tS?= =?utf-8?B?dVI4Tmo2amE0ZXA5MWZLTGVRWEZ4Z3krV1paK1dNY1hvaVZtU3ZvaWlEQTFp?= =?utf-8?B?ZDVzUjVHNUxmbUFyazlFUWVwVHd4VXhXZ213S0ZxOFM3azBUY1FkeXBiUFlm?= =?utf-8?B?eU5ZL0pQTndGT0xTc05NM0s1dkdYZVBSbFp4SGg4Rmk3RVBzeDc5ei95dW5O?= =?utf-8?B?cmY4dWl6Vi90eTBTTy82dDNLeDZ1S0hzN1hEbFRaQUVISkYvcThvWS9rUVZR?= =?utf-8?B?djdlQ0VUVTdJUk16SC8waGxNT3lJd3hiR1ZlajNXRWxocHlYckZUR2hKejVz?= =?utf-8?B?RHlLR1NJQ0N2MlZJR0RCeEQvOXhmUWZVK2d1aDZlTkVqakdqMGluRFlPVmtM?= =?utf-8?B?Ynh1RGxjcmVDWTQwQzRpVlJBKzdqVitPZ3Q1dkgrT1pUU1NpNmFGNGQ3RFFE?= =?utf-8?B?SjhNMzB1Ny84RXlWZnFVbzRnWmE2Z2dSTmw1SUtFSElPYkY0TGJibEFyamRG?= =?utf-8?B?N2VWcnkvZTZORW9lTCtvZWVlRDBhVWNzek1vL0JyOEJQdHlkcm9hY0F0YlB0?= =?utf-8?B?b3BYeEE0Q09sNUdhZzlGc2pURnpLa0xJdFNxMG5ZTXpvUVRKNngvV1dxZDA3?= =?utf-8?B?b0oxSEZ6VHZZbHBWSSsxUjRUZU1GVjk4aXMyZk9tTEJ2MEJnVFhpa00rOEhS?= =?utf-8?B?V1k2ZTQzcjltV0R4bjZpZHNqdWEyMkxuVThQUW40d29lQm9pNkduWDhwOWNO?= =?utf-8?B?MUhlMTZ0VG9YcUZZN3NkeGE4QzQ4TW9CQ3g0ajVnLzJsR3VSc1d2Y1lxUXl6?= =?utf-8?B?S2dUNFVGemdXb3lTVTd2WUdQb01KUlpTb0tHMks3K2czRGkvdmc1RzROUFhG?= =?utf-8?B?SjBSOEEwSDlrMFpaWStvdnF3dFIrSlBEUks2cFNyRDVrZ3lxa2hydXlJbElp?= =?utf-8?B?azhhT3ZRVXJ6c0JXMGo0RDBwSmxOMzBuYVUvNzdxUFY2OTQ1SnpzdnVUMG4z?= =?utf-8?B?SWM1RUQ5QmZSZDhJZE5ZS1M1NFJCWEhsYTJHa2ZtL3FmcDgvOWc3WjFXVnhp?= =?utf-8?B?U01NeXlZK2VDMHJ5ZGttTW14ZERlWnNYOTRWaTNZWFJNTWZEN0JVdmJOUnhs?= =?utf-8?B?MUxWM3FxOWFMcDFheWdmZ2lOZEd4a2ZLbUVaWjdqdDd6d3RHQ1JNSlBhZ1hk?= =?utf-8?B?R0hyUjdyYjZWWTM2c0lRRTJXbzM0Ny95R1RQT0pxZU12VDBxN2hRQkFaN2Y4?= =?utf-8?B?WlJ0NDhxTjJ3NEQyWi9FSU85Y3FqYXZmcW8wMGxvKzBTRkptcWN2aklqVWRN?= =?utf-8?B?Q00yd3phM1k5Z2x6TzEzeEhWelZmakE3OE1nVjJucE1QNHd3NnZoNVdSMi85?= =?utf-8?B?U1FZZU9PMnhVZ1FZMXhnSTdIcDRGZStnUUMzNlZMUlQxdUtlbU1rcGpvdGRo?= =?utf-8?B?VTc5RjZBU3oyMlpGMkMvM2ZjOUQ1ZmdHQ1YvTThPbVp1ZklrWndoWmIzeU81?= =?utf-8?B?Ym5QU2phQTVQTnMweEhPWjgxYUpZWGZRaWxndUhvUGU5WncrTXhpeW94akZI?= =?utf-8?B?NXhtaDk4M2ptLytPdHBubjhzQkJOcXliYVlSLzVmRU9qNFAwWW82Y24zZjdZ?= =?utf-8?B?S1dmblQrNno2d0dURVBQWWhBU0xzdjNnYTIrVndoS1dRWmNIYU02RzQvTlND?= =?utf-8?Q?/jmvgnSXjkY=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:GV1PR04MB9135.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(19092799006)(7416014)(376014)(366016)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?aTVES2c4UTVkNGdtTGJIVGh2MWJsbEl3OWRhQmZDdmdwU0VPaUNERkdlTUNC?= =?utf-8?B?WllKZ280emlmMUN6aEpSVWx0MHpnSDYvbEIra3RObkNPbURMb1dRWTMzMklU?= =?utf-8?B?Yld5MWlsWHUzZWlPa2ZCdVIxVHZKY0o5ME9FQWlTcVFDU1BDbXNWL2pOcGJl?= =?utf-8?B?d29IWEVXdnpQbldTd3ZnVWUyQ3d6eGI3V2RaNVV6cjh5OVlibCtMcEZJNk8x?= =?utf-8?B?MFJUdEpCZzF5VWcrNUVWZlBJYnQrQkFRN2NUaGVtYTJ6VFVVS2wyd1Zzc1lI?= =?utf-8?B?VDY4VEt5NGRHM21YSUxPaURRclFIMUFUSzRpL3hORHlieEdxbDcyaGh2MHVt?= =?utf-8?B?Uk0velFHT3hmM3pWaUtHTTNaYkU1a3hmSUJ1SSs0ZDU0UjRkc2ttcTlFRDMr?= =?utf-8?B?Vk0wWGZZMEIzbnlSTzZUNGFDa3pJUFJicDRMUmlnYzhWdEhrM3plV3U2cElF?= =?utf-8?B?RDNQMHlqcFN1VkhnN1FiZVBTZ0hvVW9iVzdFVVJ3a3dvTXVpR0lMN1NYV3NC?= =?utf-8?B?TWs2NlB0UUpzZ0FjY3B4Y0g4SXk4RERsNWp6czVsZVQvS3F3VXd3NWhFZXVY?= =?utf-8?B?WTlpa1FvR2gxcVFrQXFlL3BGSERJamVld3R2dDVIaWZ0SnNZSTdaZktGRTh3?= =?utf-8?B?eG5qYlhJUDFOZ2xRZHRWMDNnMzlOWXpmbjhieEVWQm9XUTIrZDhxT0lWUzlP?= =?utf-8?B?U0hYeVBDZnBJRW40RDJZb0FLRmNRTC9XcDhQaXV4SWZRNFhGSWRwUUsydVM0?= =?utf-8?B?VTVmSDBqZnFDYnVJZUhZbUpFS1QzQ0tJNHBBWUtzVm5scU9qeTdJdzlNNlVV?= =?utf-8?B?TFJPMWV2Mk9BMllQOU5aa0FDa3FhNW8vZ1V2dmVSRFdQUktnSld0Y3NOcFZu?= =?utf-8?B?cHErb3VrQnRmVU5TOHRoczFySmRPU3Bvc012YmxSckpTRnpZRVNBVGJ6NkxP?= =?utf-8?B?OEpoOENqbUU5TGpodHljSnJWM2owUE9yN1dyNlN2Rzd4UlplVFJUc0JhYW1G?= =?utf-8?B?TUF3NExMOGM2MlgxS2R2SldxRnM4azUyQmJaYkdiZjF5aitQZEdCL3d5L0Zr?= =?utf-8?B?d3h1ajVhc0lPQ1VWcVY4dnFIZWlSQnRaSXRZcFdycndJT2E4WU9zcUN4TUgv?= =?utf-8?B?SE15dVh1MXRieThQcUFBUVFUTXlSVWFxL3ZsSkdZZVBKcDY5R2tGWUU5WFF0?= =?utf-8?B?VUwzK3JONHpOaURTTitnL0NwN3JNMnAvaytYTG5kTXJubDFNRm5kYVBzR0lY?= =?utf-8?B?Myt6VWU0YjlZWG5OTHBiNmxQRCtLYTkvbUU1bjBSb3BUY1lkbmlyTVJ1VDhY?= =?utf-8?B?NkdsTFN4SXZLUk9iMG40ME55WElwTFJQS284anhiK3NvY0o5TkgrTUNXZWw0?= =?utf-8?B?SjZLckJDdkVHZ2hDL0ZXazNBV2JONU9CY3lwclR5cGdtb0ZtYTkxb3hsWklF?= =?utf-8?B?cm01ZTl6clZBa3N0VEZrd3ZvRklSS2FuSDhhbklDTG1rOVdKSm5vQ3pYK01i?= =?utf-8?B?a3I0Qng0ZVYrZkU4bXNtbFZBSGpqZzBXaGZsV2FpUmhLb3Vldi9GUHJRcWNO?= =?utf-8?B?QjNBemVSU2tmVGVTRU9FY3NGSnI4MGg4UWdCZlZETkJHcklNSmhBVW9JcXhD?= =?utf-8?B?QjVaSlRDYW9EUUxpVE9maVJpWTFzK2NBVUdWZFVTakZSTG9YTjYyd2NVVUtX?= =?utf-8?B?RU9MM0pqOEwwNUJSdG5DTm15dVFZYkZyQnQzMS9yK0RmT0VmY3Q3QmQ0b2Rh?= =?utf-8?B?Y3lFK0ZtSmZ1cXRqcFd5bW4zWU9rS2hYazl2cjdwVnA1UnIvRGVVOThoVTJD?= =?utf-8?B?dDhHV01EYStQR3crUlhJeXorU0FLclRxTWZONVJIY1d2OFBXeFl4dllSTVF1?= =?utf-8?B?TzNtQVpMc0c5RVZGM0IyT1R0c2t2bkU2MVRueEZ0dlYzMkFYT3RSSGEzWlAx?= =?utf-8?B?N0d6R1lRSzI1RXQzcGw5K2grQ252eWgxVGYvME56NkJCSlBqMmMzdVBNOXMr?= =?utf-8?B?M1hrb1M2NytneFpTWmpIaEtnTlQ5VVE1Ry9rR1pweXREeDhCUW12WGJMbzNN?= =?utf-8?B?RFlHN1hyV0VIQ3ZQMElOZEgyYmN0SWhHRXMyRzNodVVRcW1icXVCa3h1aHlk?= =?utf-8?B?YWQzRDZYK1dHcGtrbjMyNGY0a2RuTTFsMTVqRmZKU2J2R25nejNYNExXS0Q2?= =?utf-8?B?eUE9PQ==?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6ccfee84-99b7-442f-4bcf-08ddf127ab31 X-MS-Exchange-CrossTenant-AuthSource: GV1PR04MB9135.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Sep 2025 11:38:03.8152 (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: +gm4axSuzXsKl60u1PuZSEVUfYDLzGvHd6gHA1f+aVZkwSFyppSzoizYuf4h1klm9fwLS2oqWkZNmkwukn2N/Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI0PR04MB10317 The ITE IT6263 based NXP LVDS to HDMI converter can be attached to the i.MX943 EVK board LVDS port using the mini-SAS connector. Since this is the default configuration for the EVK, add support for it here. Signed-off-by: Laurentiu Palcu Reviewed-by: Frank Li --- arch/arm64/boot/dts/freescale/imx943-evk.dts | 121 +++++++++++++++++++++++= ++++ 1 file changed, 121 insertions(+) diff --git a/arch/arm64/boot/dts/freescale/imx943-evk.dts b/arch/arm64/boot= /dts/freescale/imx943-evk.dts index c8c3eff9df1a23c52e74bf2bc5d4ba543bb5a65b..5900ff355abc2afcb8334d9502c= 9ee6739ce36e3 100644 --- a/arch/arm64/boot/dts/freescale/imx943-evk.dts +++ b/arch/arm64/boot/dts/freescale/imx943-evk.dts @@ -34,6 +34,18 @@ dmic: dmic { #sound-dai-cells =3D <0>; }; =20 + hdmi-connector { + compatible =3D "hdmi-connector"; + label =3D "hdmi"; + type =3D "a"; + + port { + hdmi_connector_in: endpoint { + remote-endpoint =3D <&it6263_out>; + }; + }; + }; + reg_usdhc2_vmmc: regulator-usdhc2 { compatible =3D "regulator-fixed"; off-on-delay-us =3D <12000>; @@ -127,6 +139,115 @@ memory@80000000 { }; }; =20 +&dcif { + status =3D "okay"; +}; + +&ldb { + assigned-clocks =3D <&scmi_clk IMX94_CLK_LDBPLL_VCO>, + <&scmi_clk IMX94_CLK_LDBPLL>; + assigned-clock-rates =3D <4158000000>, <1039500000>; + status =3D "okay"; + + ports { + port@1 { + lvds_out: endpoint { + remote-endpoint =3D <&it6263_in>; + }; + }; + }; +}; + +&lpi2c3 { + clock-frequency =3D <400000>; + pinctrl-0 =3D <&pinctrl_lpi2c3>; + pinctrl-names =3D "default"; + status =3D "okay"; + + pca9548_i2c3: i2c-mux@77 { + compatible =3D "nxp,pca9548"; + reg =3D <0x77>; + #address-cells =3D <1>; + #size-cells =3D <0>; + + i2c@0 { + reg =3D <0>; + #address-cells =3D <1>; + #size-cells =3D <0>; + }; + + i2c@1 { + reg =3D <1>; + #address-cells =3D <1>; + #size-cells =3D <0>; + }; + + i2c@2 { + reg =3D <2>; + #address-cells =3D <1>; + #size-cells =3D <0>; + }; + + i2c@3 { + reg =3D <3>; + #address-cells =3D <1>; + #size-cells =3D <0>; + + lvds-to-hdmi-bridge@4c { + compatible =3D "ite,it6263"; + reg =3D <0x4c>; + data-mapping =3D "jeida-24"; + reset-gpios =3D <&pcal6416_i2c3_u171 8 GPIO_ACTIVE_HIGH>; + + ports { + #address-cells =3D <1>; + #size-cells =3D <0>; + + port@0 { + reg =3D <0>; + + it6263_in: endpoint { + remote-endpoint =3D <&lvds_out>; + }; + }; + + port@2 { + reg =3D <2>; + + it6263_out: endpoint { + remote-endpoint =3D <&hdmi_connector_in>; + }; + }; + }; + }; + }; + + i2c@4 { + reg =3D <4>; + #address-cells =3D <1>; + #size-cells =3D <0>; + }; + + i2c@5 { + reg =3D <5>; + #address-cells =3D <1>; + #size-cells =3D <0>; + }; + + i2c@6 { + reg =3D <6>; + #address-cells =3D <1>; + #size-cells =3D <0>; + }; + + i2c@7 { + reg =3D <7>; + #address-cells =3D <1>; + #size-cells =3D <0>; + }; + }; +}; + &lpi2c3 { clock-frequency =3D <400000>; pinctrl-0 =3D <&pinctrl_lpi2c3>; --=20 2.49.0 From nobody Thu Oct 2 20:25:52 2025 Received: from DU2PR03CU002.outbound.protection.outlook.com (mail-northeuropeazon11011046.outbound.protection.outlook.com [52.101.65.46]) (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 64D0733A030 for ; Thu, 11 Sep 2025 11:38:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.65.46 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757590698; cv=fail; b=bzmsueVrxMXrqHMRjGnRptIcz1mA2AHWM+9APIE30h7VvJag/Rj+ktmoEdEpkhQNWoRZctIQUX9NzQ7jdlIh+QF9ZGG4tcoaivXCIXT6zIWiETWq7JN1hIIByyjhFkgKrqGtZcFoV77GKNxBwcQ7E7mfOX+eaE7VwWDBZ2ooBdg= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757590698; c=relaxed/simple; bh=tUDOKaeD8MsVmNYQaAaNIzk333T9sJt97DtTRyCpxSQ=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=fZO/9SQkkGmNBIHCetVR1Sd9gx9ll6alnV7ZOvzei/xm2zv3S6j7B6ndgK0lw8DZ0DnwY34wTTijBuMRHA2c25COxT8PNW5LeywXoFyoHcX6y5Bk8yOLbTA+pFPlJU6C6gNhlaEIUfbLggGZmn2I5obrOQ/wFnqYl5+Y7n6MOIs= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com; spf=pass smtp.mailfrom=oss.nxp.com; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b=GMTKk4XJ; arc=fail smtp.client-ip=52.101.65.46 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b="GMTKk4XJ" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=q9dWYPCKow6KVq9FC33EyAUe4xSWG0Cdr362FtyhKW35RzRyFx6+blhZNPPG6cXc/HIwrEwI4lASnC9Puw3tt+6wo/tdPnMxn4aBMw+KYvcWtOGPbf6F0a2sZSPU3K1tCW0rYt5e90/McpqYH7VW0B7YUg2HkJ031CVDdcpMs5QCrzuiJxV4hH8c4DDxBUxWNwaUmNqXRKpJuDdmGQob5ldj0jlKUzBCBNfQg2ZiUg1dsGZnv70pSNjAsw+6IC8VKg6yAM9VAaR4fYpR6OOUPVxNDyd90IZ8gG18Js3qHNfQZVAyESNiFhB9mLaxECbzoG1lmbZ22Wb3W7w+k3WtIg== 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=95Bcph71ho1p1rJCUFW1M2Em+i2edQlfDTZWJ6c3qNU=; b=Bmq9zgJqsd8BniEPsRVS+8pC4zUdSMfEQi8osRJJ/JkcRPvg6sQK0vU5RNN7CO/3Fxnui0tcjjsMiRxAnoJs/ICI+/cbH3z46zukqsyWA7Ue82E91cBa0EZXAlo+u/nODEJajfUY3Ru6AAcp4MEQSsnCaVqqPLMFzrbiBGkAtpjxvL9OsW7beHC6vZ1/G8nRJOthRqbJ3MOjucg6/Qcs+7zyzpK7yHJdC6N7imDIZbWqiK514Z6FbFYJ/kQVVB3wQL2aCHGaRIJvMVeJ/WgdoFV2u2BtFWawNSSd+2/nZrpxoc/hRKnFQDBpQXmdlD50nJ+RyE/+l5QMZ58KCQZTuw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector1-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=95Bcph71ho1p1rJCUFW1M2Em+i2edQlfDTZWJ6c3qNU=; b=GMTKk4XJqaY/f5yfNaACavORoiaVS0nXbfBjKAnz4ev/Z/qLmVf5Fj/AfUevdMO2+LInz0qGCc3tQGWiMsc+F5i1Sgg4L8wmBP6AYz44ASACP0HT5NuEg6lHVVGGFC4pPEJF9Bc8dcblySlKLkOMpj1CLSqVlSPYT4OJX20JpApJALHArvcHQSofIdLVp38M/7P8dlygItC7ey9ay5OpbnJBy/UGTEq2FkyXHx3e8AzWDLQxIW4JL6g+axBSYWdIjkpZAKQycYxWmv3X9uaRe42zy1yzuvqf5eglYsapFVfU/bq61qsUqnMQEQ/6wvhghDbiebAC5ZlMoaXxOWxT0g== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from GV1PR04MB9135.eurprd04.prod.outlook.com (2603:10a6:150:26::19) by VI0PR04MB10317.eurprd04.prod.outlook.com (2603:10a6:800:216::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9115.17; Thu, 11 Sep 2025 11:38:09 +0000 Received: from GV1PR04MB9135.eurprd04.prod.outlook.com ([fe80::b1f6:475e:de5d:8442]) by GV1PR04MB9135.eurprd04.prod.outlook.com ([fe80::b1f6:475e:de5d:8442%5]) with mapi id 15.20.9115.010; Thu, 11 Sep 2025 11:38:09 +0000 From: Laurentiu Palcu To: imx@lists.linux.dev Cc: dri-devel@lists.freedesktop.org, Laurentiu Palcu , linux-kernel@vger.kernel.org Subject: [PATCH v5 9/9] MAINTAINERS: Add entry for i.MX94 DCIF driver Date: Thu, 11 Sep 2025 14:37:09 +0300 Message-Id: <20250911-dcif-upstreaming-v5-9-a1e8dab8ae40@oss.nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250911-dcif-upstreaming-v5-0-a1e8dab8ae40@oss.nxp.com> References: <20250911-dcif-upstreaming-v5-0-a1e8dab8ae40@oss.nxp.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AM9P193CA0015.EURP193.PROD.OUTLOOK.COM (2603:10a6:20b:21e::20) To GV1PR04MB9135.eurprd04.prod.outlook.com (2603:10a6:150:26::19) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1PR04MB9135:EE_|VI0PR04MB10317:EE_ X-MS-Office365-Filtering-Correlation-Id: 5db87714-af64-4d15-81ec-08ddf127acfe X-MS-Exchange-SharedMailbox-RoutingAgent-Processed: True X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|19092799006|376014|366016|1800799024|7053199007; X-Microsoft-Antispam-Message-Info: =?utf-8?B?bFFQZlZUTkJDVTc5cXRPdmhqVlBYZGswWDVySzlweGhMRktSc2JSY0pZRXpR?= =?utf-8?B?QS9XTE4yM3puZ0pCTXVtM2VkTDhXQi9DTmlpVk9Pa0RkYnBreFVxb1YxZHlv?= =?utf-8?B?TWFpYmhWKzM4QzdaaGQ1MHJoaUdqb29JRGNkSWloeDZUTHBBSjEwQmZNQlZq?= =?utf-8?B?eEZlalhQbWEzNlFXSlVhUFFMN0hkd3RJVzN0LzJWWndCc3MzcG4xeGViV2Ry?= =?utf-8?B?a3hPYmxQckNPbTFaeEx4MTZiT1JuK2t3cTA0cy9yeUxKcHNaNVFNWk0wK0Y3?= =?utf-8?B?TnBONDFrNVo1dTNvUEVKYTdyYW1aeGR3YUgrOHlicis4OGx4SWNsdWd3WWVF?= =?utf-8?B?Ynp2R3oyVlpVaCt5R2grVk9FcmJ0MThzUVZzVENPV0E0ZTdvTDRtMU1OVWxi?= =?utf-8?B?cjZMckN0d2tsZGRoNkhNaVJQOVA1Zk5HV3RSOTUxMUthNC9ibXNvbjd3b2RI?= =?utf-8?B?cHordXNCZDRtaU9ZallCdm05UWlJalUrU0EvN1dRUjdEaFpJSGc3VnR0WndF?= =?utf-8?B?TGdlU3NKVkdrK3g4ZlRSTWRKV0h1d1VSNlJ3ckp3SzBPeDkxUjVTbHF4dk9W?= =?utf-8?B?TUJtZXI3ZlJMQWMzcU5IbFZrZkRBa1N2VU9EVi8zNlhXZEpkNUt3TGR3c2NS?= =?utf-8?B?M2dZdjltdVVwUVBTM0lQaFlmQlV2eTZLMVlCb1Q4c2tyOXZCeVV0SE1pRkZu?= =?utf-8?B?UldYcUU2WDllRW9sRFpWRFVZRWw5cy9tNXBpTGtHOCt5VkkwVE1ZQm9UZk1H?= =?utf-8?B?ZURxL1FEQk5ZTFo2U0VGcjRPZnRDVzRRM0grV3o3VnlNL0puM3ZBYkRWWm1H?= =?utf-8?B?Zi8raUJwTlZQSjYyUTJOR0VpNFh3REkxWDlUV1RDckp4bHBvWGFIUDB0WXB0?= =?utf-8?B?eHpuTXR5eEdxbHNCQ2N2YUNYN1RUcUtoNlI0UnhQM1c2anFCWVA2dmtZcVhH?= =?utf-8?B?MWs0VEFpQWp5ZFVRaFhpMWVRdGFVbWpVWVNneEVLNHZ4amhlVFRGNlN1L1lD?= =?utf-8?B?bEFqaU1wd3RpM3pjT2d6amFiZEdaY29TQnVXV0FFTW4xZWY5QUFNNmxLdGxn?= =?utf-8?B?Rm1mZGRxTnN1UW8rUlBUMHFZQTllR0liVXJDR1ovenk0NVIrMUdFcGcyamxS?= =?utf-8?B?QW8yRHNyR3BnYnVUTUJBd2Qwcjk0QXVQMUJwUXgzKzNUSXR4YnRCQktvZThB?= =?utf-8?B?YjRMU3p4bWJRM1dtYlhBVGlRRDNqaU9CbjJBbUpyMlI0OHpCL1FPdXhBa0di?= =?utf-8?B?clBCZ1h4WVBJSzdoc3lyQThqU2VESjZTZWIzOHk0eE1vMFNWdHUvdExQNFVz?= =?utf-8?B?Y0hJSTNzdlNMMytlQzhRV3hnUlQyMTBmVGo5SWFHKyswV3o2Umt6VzV5enhW?= =?utf-8?B?dVdCcDVBc1FBNFVQR1VhV3RWcmdQamRjQy8ydUJFMlF6R2gxLzF4alp2SElo?= =?utf-8?B?Yys5eDA1OVcvckhYT0x6cEhwNWZZY1JVTlAzYnU4SmM2ZEVBT2pRUVk5N1NK?= =?utf-8?B?TXozVkJ0eGVoTkZHckx6ZFBQSFNPUmlsRGxBNVNoaXpoUjRPU1FSMUZWbUQw?= =?utf-8?B?dDR2N1plbVhuNWg2L1FnWUpSTkhvN1lMQlBWWENya2owT2VJRyt5RVhYc3VU?= =?utf-8?B?Z0FoeWlEeTVUQTVMZEgwVjd2VGZnMjRqRWNHenhvMTNuY2puaWVKVVQ4WWxY?= =?utf-8?B?VnN0bFBIdmV0akRIWlpzV2Q2a1lQbWNOL0NPay9ha0dWeElDREpXZkFJZ3Bs?= =?utf-8?B?TUtsWkMwOWFNN0Zkc0d5QytMREcrUEtCMzh6OXRqaThnWXgvYXdSTCt5ZUZJ?= =?utf-8?Q?oPdvP6M71dCHRzfUHzYSQeowLH67uvetOURug=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:GV1PR04MB9135.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(19092799006)(376014)(366016)(1800799024)(7053199007);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?T28yZDhrVFBBcTIvODdTMzU3dytuOFhrdTRkUGpuR0FqbmRxS3BLU1cwQlAv?= =?utf-8?B?bnhvT0xrMU9yTG1jUm50cStQSTVqWDZlQ3V6clZ3RzE5anBxQ2tKV056ZDJI?= =?utf-8?B?d29ZZVpXUFBJdksyd0hWLzFmL2NxZU9BeHJzRy9SN2hTNWh1WHAvRS9QVC9X?= =?utf-8?B?NzNGeXoxY0hkd2J0Y0JPblpucEtBV0JoQk5ncnQ1djlRbi9aZjdLeXFkVm5i?= =?utf-8?B?ckV5Mm5UWFIyWlVTNVQyc3Q4N0xJOTFrZncyb3JTeFgreHYyRXVFalBya2Rr?= =?utf-8?B?Z0xaVjNFZzQvdFptdmhHYkZWbGlOWDdCRWVOcUpYYjRzZkN6NTZzcW1oa3p5?= =?utf-8?B?bXZIREREeXZwTnFRMURKNitCczFTc0RKamxJYUhnU3VydGVXbFpQYk15YzZ4?= =?utf-8?B?cWZSS2dyRWpoTXk0THpTUHMxNkJVWC92a0tNbFBCMEk3YzdrVjE5OUkyTE5U?= =?utf-8?B?dlZIY3pUOTZUNy9KM3cxaG9tbXNTMmdVUnh6ckVFaEZid3hnQ3pVQ2duU0Vl?= =?utf-8?B?NXBkR2tId3ZLRkpiU0lUTks1ODVwODdqbm9iZWVqcURXQXFTSFBJc1E5cXVi?= =?utf-8?B?RUlqc0c5NEswTldtTWdSdytiMk5OMEpUM2pUSjJ0aGs1aTJLNTV5S2Jld3h2?= =?utf-8?B?MjRtRFJKSEJvSXpnb3ZYREpVcXZCc2gwYURPYmQ4cTU0Qlg0c2hsMk9tS25h?= =?utf-8?B?TmFOSmZHUm5HZ09pMGU3YzVGU1llQkd5bFRDWXNCQlh5Y0lGRnpDQWdpQndh?= =?utf-8?B?bXlpN05ZRjVOZkdwRC9uclRMTXJOczVDeFU1UUt3SGdWZWh1Qnd6WnRWbFlw?= =?utf-8?B?dkpna092YkxuOWc5cXhWUnpKeXV5NGNOVytkd2p0U1lJQ0tVdmFNRVE4YUpp?= =?utf-8?B?Y3VzYVJwTEhSN1VkUXpDby8yTTNsZmxwNGlJNXJiRnF5VGpqSG5WT25ZNmVJ?= =?utf-8?B?cWNBeW1Rd1k2amN2MWNuRi9hdHB0dUNhUEtnWm1ITFNiYjQ3SnprOWRlZWht?= =?utf-8?B?RHQ2SlBBV0prTktKYmlReVU1VHhuS3A4OFhjVGR4T3EyMmR3Qnh4OFowbVdz?= =?utf-8?B?akNBakFMaEVVMnhmUjg2cVYxOHBBRmE5YW5jLzBuUUhueFEvMzlVWkhOdXhp?= =?utf-8?B?d1doL044SUxxUWtuZ0Ntd0V2Rk5HaFdWR3VMMVVDYnk5VElJR1ZXWjZ1UW4w?= =?utf-8?B?ZFZGQlpBNGY0VWJOcHNJYmFOWTVBVTVLYW1iaTUzaGRocnFMVWNIOFdFcyt6?= =?utf-8?B?L0lmZHF4Tm9kcmhKN05BclJiZFFCVXFUYnJtY0pOY2JXNnkzS0h4cVRCY0Uw?= =?utf-8?B?ditSdlJzMFV5NnJJK05sTkgxUGRYa1ppS2lIWkYvK2ZQZldKZXZMODE2OGpO?= =?utf-8?B?dXhQN3hhKzZUZTlsblFpUmdnY2NOcjByVi91d1FROG5wUS9LZzVSMkhWcWdJ?= =?utf-8?B?cWgyMUJJb1EyYkMvajlYNXBJMnVXZHA4QUpZZlI3QnRXa3VRUFBpU0h6L2VG?= =?utf-8?B?ZncxN243YUE4VVU3ZkJXbFkrd0FaV3oxdE55dUNpSWszaXA5eFE3cGxiUXpC?= =?utf-8?B?eThiOFlEOUFFQnNMS3E0VXRSeElub2preDZoZmJrRDBoR1ZXbEpQTit6WU0r?= =?utf-8?B?OCtjRU50VnFYalAzOFpDMVNFSFhTYlFCWm1leUNrVGJCVDhBR2dBMDRiSHg4?= =?utf-8?B?ZFhBVUZDQXhFVTNOa2E0SGJuMmRmZ2ZUb2ZBazd1eEZUcnhSYVY5T2hMTTRZ?= =?utf-8?B?NEs4R2wzazBjSFJUaU51RkhoSW5pTGFoMTJ2Q0M4aGZJZFFGSmI2Uml2dDFK?= =?utf-8?B?NjZScHhRUW44YWU4c0FpV0VpaEdMTTJLbkNTRjBWNCthbGxxWE9La2ZhWURD?= =?utf-8?B?eDBYS094bmZwclVqb1lxeXo3YkhmcmI5SkkyV0t4NVNGS1pwaTVvMm9lc2xu?= =?utf-8?B?T1J5WUNFWEIvUzU0MWdwb3g4c2FvREp2N054Z3laR0pwQ0YzTjhtYXlaOWtE?= =?utf-8?B?SW9rL1BsWjhzVzVNVjhaaDBYV2hiQlNiWCtLOWtGVTM3em1PTjBhL3k5bmR1?= =?utf-8?B?aXA0SlNUeXI3VkI3dkkxeTFBdktCejM2Rncvd1lDekk2STRhWllFM3NGakFV?= =?utf-8?B?STZQKzRVSWlNR0F2WktHODF3aVQ3bjB6WVJwSDI3b0hyYXdlK2FOYVdOU3hi?= =?utf-8?B?TWc9PQ==?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5db87714-af64-4d15-81ec-08ddf127acfe X-MS-Exchange-CrossTenant-AuthSource: GV1PR04MB9135.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Sep 2025 11:38:06.7489 (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: R3jKkuqOo2sIFzbYNaH4N+mJvypwoM5xEDxTNBpWXqUlR4FEkaG9K9v5p21Fk5DNMMK563/msrUhrjWNjmaPbQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI0PR04MB10317 The driver is part of DRM subsystem and is located in drivers/gpu/drm/imx/dcif. Signed-off-by: Laurentiu Palcu Reviewed-by: Frank Li --- MAINTAINERS | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/MAINTAINERS b/MAINTAINERS index 8cf4990a8ff65cabe22cbe13d410de241b790320..bcfd60987fd724611de77b68151= 883a545fd1fc9 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -18440,6 +18440,15 @@ S: Maintained F: Documentation/devicetree/bindings/media/nxp,imx8-jpeg.yaml F: drivers/media/platform/nxp/imx-jpeg =20 +NXP i.MX 94 DCIF DRIVER +M: Laurentiu Palcu +L: dri-devel@lists.freedesktop.org +L: imx@lists.linux.dev +S: Maintained +T: git https://gitlab.freedesktop.org/drm/misc/kernel.git +F: Documentation/devicetree/bindings/display/imx/nxp,imx94-dcif.yaml +F: drivers/gpu/drm/imx/dcif/ + NXP i.MX CLOCK DRIVERS M: Abel Vesa R: Peng Fan --=20 2.49.0