From nobody Tue Dec 16 05:53:29 2025 Received: from OSPPR02CU001.outbound.protection.outlook.com (mail-norwayeastazon11013045.outbound.protection.outlook.com [40.107.159.45]) (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 B70A3AD4B; Mon, 3 Nov 2025 15:32:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.159.45 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762183954; cv=fail; b=TxBcVIbJFCzkrrvzDJs6yyymkUnhJLbTy1EFPxnkxsMBiBxngfkCxrp1fVprifbxL7Sa9xBWePuscJdMIA9Df1EagcnCmOoroDB95g0cisWk7VmcvgPdJnxlAlbSAk1wk9S/CgJJpOuHXGB4zriicFC5yVstGk7qwaU/bHhSVa4= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762183954; c=relaxed/simple; bh=TUcvGBeOg+gdbX2FwcaZ3SC7acTs3Uav0aq8FcXNVZM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=Ap3FdXZVvVbzREZXMDHSaCMWFxw/DSbTSWWQem0uY98CsW7Po3RAAsNrZeyuTVVzyw7ip60ZXIBQy8cIyyxHkGsA8rcPzByC3dMf8igZnUlQFSXtxHOnIIcbWw8uIfYQVbiQIIAGhgRa2knbE9gKWJ5JrR9hdEXO2yA9+k2N+gQ= 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=vkpFj4tn; arc=fail smtp.client-ip=40.107.159.45 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="vkpFj4tn" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Yb57GI9lsUr0hebAbnwuODZdhbch5294Xb1uUab+BOEl1PxFsXVCL0BJJjgWsGgZRzSmLXrhpRN/z7ZVlYz7kC06Z8GgCUWnIW88fxuXqXDbmAjqPHObMY6S1CCqfY0jjCR1ljsRtR5Op4YudYmAikI6xS+AhTFjhQwZLI76F8+MD3hFbF2jiQKzfK7b4zbViJ2ecZjNmsPIshg9DTEKWfgcK+Bi68uh8OQWYnSe48gAjsjsHvpj1zWVhnd+FjQ2bPZh6OtG98ooDX415pQNioq4/HCrihxLflMrECWvlLgsOWnJg5EOgCUJCqVRyLUPAlh0EIooa/pzwklieQn4XQ== 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=eOEzw3UFeji8JR6FNnQMfGjFXxhQNfDEFjf8UGFKy83YYY3Bp2QDreKzoyvXfYTEnWyUjeGsUTBcHFVDIvTowvIOU4M3KhlgnyEOLaWj9jyH4Xjs7XJPtmhRgYzoZqhTNANnejSJnWueWegNN9tjuG/qoir8n7Yqjox4QxjHOpDuLH0fMdSW5+kF6L4uN3RLOm0DJhXaYG10SenLO88VqQs/zKL47WeSxpef4WBYr/BYowqiZGWEJyvi4c8v6fSZhkuKmcZ7jtVjrpLr7At5RjMuPwQpKGwwJLv/jSzP3gXtXOWBUBVGrS+++9Lv2yE+DWRqVsJoNZ4CRkX9VOig+w== 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=vkpFj4tnWObMLcftE53xfvktym++p0TffTxLQJGdNP6twJCs4IdKEl7EAnXfJLcJi85Sc5ZcPc+8/1XgZ3pYpZs+3QFUaYbFKkxgjmMyRVAh93L7RycQd8XogcOnnkq3/aVs13RjxntvYosVzOPFfz0F4jPPdwzJ4tPz67UkEPxIg+gWY8+tM+JImpzTyS284o01HxETaINgc40iFM86FgWxRU0dAPFQiSg87PBCDCJpJVOFIZLTWrdVpXziZFlZ1jAMyY/ZOWOh7cspTDF10PVKVkpbrrNm585KSzv8pt+jqKQTnBezvyL5hhrpODxGosDqRzwlqKjC3Jr8F7DPrw== 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 DU4PR04MB10500.eurprd04.prod.outlook.com (2603:10a6:10:55e::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.16; Mon, 3 Nov 2025 15:32:29 +0000 Received: from GV1PR04MB9135.eurprd04.prod.outlook.com ([fe80::b1f6:475e:de5d:8442]) by GV1PR04MB9135.eurprd04.prod.outlook.com ([fe80::b1f6:475e:de5d:8442%7]) with mapi id 15.20.9275.015; Mon, 3 Nov 2025 15:32:29 +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 , Frank Li , devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v6 1/9] dt-bindings: display: fsl,ldb: Add i.MX94 LDB Date: Mon, 3 Nov 2025 15:30:45 +0000 Message-ID: <20251103-dcif-upstreaming-v6-1-76fcecfda919@oss.nxp.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20251103-dcif-upstreaming-v6-0-76fcecfda919@oss.nxp.com> References: <20251103-dcif-upstreaming-v6-0-76fcecfda919@oss.nxp.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AS4P190CA0015.EURP190.PROD.OUTLOOK.COM (2603:10a6:20b:5de::19) 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_|DU4PR04MB10500:EE_ X-MS-Office365-Filtering-Correlation-Id: eb1a7743-c619-4383-da3c-08de1aee3292 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|7416014|376014|1800799024|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?WE1LOTQxdkFiUEMrN2xYSnNyU2VmVXhUTlhuK3J6TWR3WFdtK294aUVnbkdT?= =?utf-8?B?alpxYkJvQURXY21MM2Q5K01jN2drWDg3cGhNcktVUXJMTDBXaUV5bjJjM3J4?= =?utf-8?B?T2dUNmhoVUZSdFpEUlhqaDdrYkgvVzBjYmN4T1IvQlBra21iQ2lDZ2Zka2xy?= =?utf-8?B?NUZHTDZTN2JWZXRKeEhaZWl5MmNZcEg4b0J6ZWcvVUtuUU1GaUo5NzdRSFRt?= =?utf-8?B?Wk5yb1JsVmd3QWl6V1NCSWl5eGZCMFFPUmwwSktkcjRUdzlRZDcwT0toQ05T?= =?utf-8?B?bTROWTBxc0ExZTcvRFhxYzZEenk2UUtEaDRpTEkzaFZrMlVWMDAzRkR0eThs?= =?utf-8?B?N3MrSzBlSngySmh2ZjJaUnBsWlV1RG9SaFRHTUR4TTlONnNoOWVEQW8yaitv?= =?utf-8?B?YXBRY2x3eE91TU5aeTUwUVFNSmtaMFRZbnNlZnc3RVk2Y2wybUFQTm1NQ3ZR?= =?utf-8?B?Q2xyWnNSRjN0cnUzOEtRaTFNbkVhM1pEK012eFpOa3F4U3lxWnZFM0syb3Ba?= =?utf-8?B?VERGeWQyb2xLWXR1a1AxaWZoalZmdm0rWEJEU0JEcEM2M3d1b05NQXJMQ2ln?= =?utf-8?B?NDgrRHJuVG1MTlR3QWRZR1IxSFprbU5tSklrOEhTcmw2b2JSSTRWNStlOHF4?= =?utf-8?B?bWhKb3dweWhBRWhXVkliemxzMkNZZGZxcUlEZk9lUUovRGg5bnJpQ1FPSWo2?= =?utf-8?B?dVZxRkQyWlZjT0lKL0FGa0VtUUNOV3lERVNWVjdET2p6ODR6bnNIaXg1K1Vo?= =?utf-8?B?eGxGazJnemhYS3dORG5TNDlCc05SeFBHckJOSTNMY0RXZTZsMTRocVA4T2RL?= =?utf-8?B?eU82N1R3RTJiUkdLNVZZQ0l0bXRnV2w3czZBSHhlajF4eUo1a2NjRUt5d2pq?= =?utf-8?B?SmRIM1N0dXF2R05pdTMreFRiRzZCMFhSMkQ4aTFnN0ttdjBBUk5uTGJmZXQy?= =?utf-8?B?OVIyQkFoc1JDdnJrYVdIYnAvanhMY0c1VEpVVW1uaWp1bVB0Sy82TDdvZ1RE?= =?utf-8?B?cHBDeW5nOHJxQWFWRitWc0JQYSt3WmcxZjdMNUZGQnFIaEtEdEphTVZ6K2tq?= =?utf-8?B?Sy9zVTV3cE5DdjYrUWtRV0ZGZDUydVpxblNpM1NzN21ZbEx1QTBEUkY4ejkx?= =?utf-8?B?aEVkclRmTW9VOWNucVRhWUx4TnB1dmlFcTdsU0pUOVJUeTVBamltczF4REJk?= =?utf-8?B?bVVNcy9yV1dNTHh4K1dtdTdxRDlHR3F3UnMzV1FXN3hxRHJaUWFsOGVUTDM5?= =?utf-8?B?YnRiSkhlbEY4Ynh1dnVjdm1haXhROTFWclk5NGtXR2paME1JbHRXK0ptWVJy?= =?utf-8?B?c2U2UzY1ZTZWbk9sMnNTNHJkLzBQZmdiTWVXN29YZkRnQjNadk5NekRDWmJU?= =?utf-8?B?M1ZpNnlsZ2JjZjM2QXZuMUpSN3l5ZXhlS0RkbGYwcTYxZXpyeWY5ZllWc24r?= =?utf-8?B?ZHY1NHduU21EYjhCQStoMlNHM0xhajcwb3Y0d2RETXNBcUpJeVdJR3VIejE5?= =?utf-8?B?RXh3WC9CcnhtUmxwNWowVEJFYS84enliazBVSXVqbW9yY2twQUliMVhxbkpJ?= =?utf-8?B?RnUwb3RwSXgrUk1ERS9obXZhYUh6ay9zQzlSU2ZjSEFMZXVTQ09FMmdNRmV3?= =?utf-8?B?R0dPWXBCaDlYSk1UZUJrT1Q0T21SMVNLK2g4bU1wWW5TU0dZNTlYSXoyR2tp?= =?utf-8?B?RTFVTUMrcFcyN2NVaU1McWY5a2gzWHIrM2xIdUtDNGh4aG9rRjlHWmxDMFlY?= =?utf-8?B?NXRDTG9KTmZnMzBkNW81dlkxVldPREN2UER1RlpUeThCU3FYS040cEZ4R1BJ?= =?utf-8?B?SHBJa3pJbklzZExRN0xVVVZiRkl5bS9DZFc0TmlkeENCc0gyK29XL2NZQnZC?= =?utf-8?B?Tkd2YjhrT1hkNVl4MnozUklDNy8rTHhMelJTdER6RFk0ZEVhYU0wc3VNUGZK?= =?utf-8?B?QnVvcUNMdnJhMStKTWlaSkoyWDAwS3NpOGFHOEpYb0plQmFXanR1dDUvRUNM?= =?utf-8?Q?x6B4/meE05Wa7o6qzSxL7QwnT/SJ24=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)(366016)(19092799006)(7416014)(376014)(1800799024)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?UDVVUmtwTmQ4ZWVSVHNqdFRPVFBhNkE2eUprNlVUSTJhY1JUdlUzeXgwU0Jt?= =?utf-8?B?TlVSZEpybHhKWitJOVlCWmp0SWJmVmcvaGxaOEJiZDBhc256QXZScjJjNTE3?= =?utf-8?B?b1plcDNHSk1SckZHNlpqU3VXbkVzNS92NnIydmlKMUpTOVRNbXNMc1A5U2Ex?= =?utf-8?B?Tm9MQXY5UXMvMGJ5NUt2L2hkUFIwUmphS2xVOFdTRDNZblUrMUYrQTJhRTQ0?= =?utf-8?B?cHFpOEtadWU5V2taRWlySEhib0JRU2JsaXRHdlhyWStTNVFIRDZWd0NNRm0v?= =?utf-8?B?TmNMVlVNdzhPU3EvTjAvWnpOV1RqUXUxdUIraU40bnZmQzRUNElCWVpEN3k0?= =?utf-8?B?MUZSTU5RWnErZDR5RGhHUFc1NzR4UXMyVktEejcvNFEwZ2Y2VjVrQ0txS1do?= =?utf-8?B?V3FsNmluY3BUVHQxajA2RXlBa2VKamhMc3BUS3ErQ0xLOEovUlVkNmpSWFkv?= =?utf-8?B?R3l2ZDdXTjVFelVjNVJENlNLTzRtOVNMQjdUSlFHUkQyQTdrZjE0TXNTdGVN?= =?utf-8?B?NG9ZU2NTdjhLbmlUZ0VaV3hzbWd6WitlWGJPK2I5SFovOEs0bkl4aWdIVWZy?= =?utf-8?B?eXhiYUJoaVpnYU5qM3F4ZTFvbm1uUGJ4cFFYZmpJTzkxZGhCNUlyVFhCU0dJ?= =?utf-8?B?WnlMTzFjLzFiWURZdmpIS2o2MnpwZ1ZwNmhLMkE0NXpOOGZXWnNBMWxmdE1Y?= =?utf-8?B?RTNmZnJ2RXpkMmhoYUdObm5BelBOZUNGS0lOMkRmaTdOc2ZJdU8wVzJsS1k2?= =?utf-8?B?MlUwSXBtaEhOSXphVnR0NVN1TitBWFEyM1dLbnJWUFNmSHhXc3Z5TkZuL244?= =?utf-8?B?Wm9ENjZsUVZBNFdGVzE1YmRtcXFwZ1BMbm8wU3d6bS9PQnM0WDViNXBtWUNY?= =?utf-8?B?VURyYy9hS2p2NFRVTHh4Q2dXL3d2S0c1dFE5UWVkdmNnYTFWbTFGdFBaRlZP?= =?utf-8?B?UG9wazJSZ1FMb3ZNY2JHemRVMFRjMjZPL2svU0tIUUxjeTdONkI2NDV4bnRR?= =?utf-8?B?bmFJWGRmNkRhOTRyY3IvUU9pSWFZVlZJYXFjOGV6MWtSVHNGRkZtOUdoNzAy?= =?utf-8?B?RTZGdmlMdkh5dkJZZWQ5ZS9YeUZOMFBpTXZQOSt0dTFueGJEQTREcmZLM01m?= =?utf-8?B?N0VHUWUrckduQktrYWNZa2I0STNSVVpYb0VJaTVkaDV4bXBueVNBQkYxS0p1?= =?utf-8?B?TTdKcjZVV0RzMlAxU0MyWHpOZ0V0citnamxaUjJNU3o5SUZHWnJxTG9ZQk01?= =?utf-8?B?WFBxa3Fra1A4T0tPU3EydFlPMnUzYWhFUTJManRydWo4MjVQRDd1eUs4REFt?= =?utf-8?B?MGFpL1RlanNsdGxtMjhiWnpSRGJYckZmVE9HaGJ2UWh6MTlLaVdFUE5yMEFn?= =?utf-8?B?QUNtRElqSXg2MWpsLzBrRGxUUVI1NVhwK281WFI2UUFkMndHREwrWFpXblgz?= =?utf-8?B?MCtOcGI1Rm4rYzUzaUd5T2kwWFVESWRzVmdKeEtWTit6RXF5NzZGSGpyb3RH?= =?utf-8?B?QmlnVHhzQ3lMaHlxbC9YQ3BJVjYvSkJBNThic0tiY1F1RnAzdXlCbGRibnFk?= =?utf-8?B?R0FDWFdKNWNYMi91bXlhY3Q4bTZXNm5JZ3czL2huQWhQcUYrZGk2eVdnSzRU?= =?utf-8?B?OU0zc2dVL2oxSkF2Q0QrNFFxZEdWSC9EWFNlWEtNa05wd2Vwbm5OeWhVcllV?= =?utf-8?B?LzhCRXhwVTFQUG02Z0dMZGFxT045NzVmejBhN0FMdzNhaDAzVTQ5TE9GK21R?= =?utf-8?B?MGNwNTVUbE96clRPYnRkRTBoN0JwVFNSNE5KemxydTBpdEVJNFp6V0xlS28r?= =?utf-8?B?R3FIVExiL2lrb25PYlMvL1pxL1V3Q2xodHErc2RSdGQyY0VscVp2Z29ta1ph?= =?utf-8?B?SW1JRWdHeS8wOEZCNDlPcUVVbEJXR2t0amxCRzFBdzVqT0hSU1Zkd3JOTGY5?= =?utf-8?B?UmFhMSt6VFJsbjIvZ3hwTzNZbVY1eW9YanFoU3A5NnE5RnFtYnprNytXbUQy?= =?utf-8?B?dnZHSS90Ny8weStaSml3a0ErL0JoOURDT3NVZ2xGQkFmcDkyNW56QWVHWXcy?= =?utf-8?B?ekp6alV0eitUdEVPeGg5ditvY0hnV2JBMjlkV0VtNWpIaDRvaGh4R01mTXlq?= =?utf-8?B?R3B2anpaRk9JR3BVNHQ0aTZuZU13b2RMM0QyK2hwQjVWRGtzbXFUK0w0TzFq?= =?utf-8?B?eGc9PQ==?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: eb1a7743-c619-4383-da3c-08de1aee3292 X-MS-Exchange-CrossTenant-AuthSource: GV1PR04MB9135.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Nov 2025 15:32:28.9381 (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: 3oOIUeELFUIZIHdaVXjODvfF8ROOx7P6uazSF3HPwy+YD8WKlV+UGMPGbV2NjJyW8uR4IiN2qr72pJefp/TwDw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU4PR04MB10500 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 Tue Dec 16 05:53:29 2025 Received: from OSPPR02CU001.outbound.protection.outlook.com (mail-norwayeastazon11013045.outbound.protection.outlook.com [40.107.159.45]) (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 0CF46318132 for ; Mon, 3 Nov 2025 15:32:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.159.45 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762183957; cv=fail; b=msLciISD5KjnYcDrMyaNWzZQ93iMG/I/vhk/iO+SBRBKuKfmKj/y0ZVMMPdu9/ten5ANw4n+Yt0zq2V4y27IoDVtzauaV61WgQzxKKLIg+mbhPeJRFjUlZBMLObsqMvT9qK/ndPl22xhVrALSoScJiBx2sHI4zP7IRdOmkzTEzc= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762183957; c=relaxed/simple; bh=esIh4oVsLrdN60w4rB1jpEJzrZyDqrM3iGYPJU+FS1c=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=pxQVVX120H6BofgmGQScbszEd96zQQMSCVdnq9bmJEhq+ce1Bzp+BmO+fuLnMlN/xZKV6BpAfHASi1GuryubfuIfvilmKHqI9trztPcosGddaJjASFfO9BMRUmutDMVU0Xfaje+Y/tw9qZtTmPzpXsPrzWlboUjS+3BcYLvy/+g= 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=XtJcZnqJ; arc=fail smtp.client-ip=40.107.159.45 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="XtJcZnqJ" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=hs5a5v2uQacvkxsxxhw/sa/1Dl8sq7Bnn5KNSrQjJjc4hIPS0B9y4doNOAl3dIGAOBIjlAMFunjEKgxSkGBShis/7e68rw2MLxuNMHSbBpbyk6j3kyuQ89v8cHkOJt+9aKGUTJti9qeTC871Y7B/QUTAksJz1yaBgmFWk7cGAwilfegSeFyvJ3vyjMjbju67EsznXfliFH/JFjrubXUBc0NXxuKJS9A9+DTmlTJTV/iT95JAHlTvk1K3P37wttdEYdg/KHWqJwqhHEgF1on4nSuaZNoRZb6IyUmWfGtWKwIC8jARGUjXyRflIixZzXp2tApAIh5CfwZntskVun96Rg== 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=3rEXvg/Qw5B4zOpe0GKOk4USg2iPGS2KsctpEQBRBGc=; b=xkBxo6rIrpVJEKGaTzFAl5/xXIL/oHx+6DHkw+bfgJcM5+PTcqPC5ihbWwx5+zY3c0ieTGDCjtoaGk0sDZVTR1uDIPvudPWEFq0jGaw5iwOf50ti93nJWDzLRawjUCqCjUF9hoFvoDR8aA1mYbOSaLLOYDFYQ9gksicsxLQCnPkOBwg0ooKuI+oL3p8bbirUj+g4jcmDFHuX6s+c6ID+2P4yESu5OaaYqiWNS3PeKLCAaNPjYjCoemyAYiFUKCAcrmNt7p1evbkZ4DkUW+wMPTEUCbR+4M9qneGOA7llfCt6xxVqZiUMwLoOa4E3N6BvU+ASBJH2prPDMvUU+FBWow== 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=3rEXvg/Qw5B4zOpe0GKOk4USg2iPGS2KsctpEQBRBGc=; b=XtJcZnqJtpqlUGnO4iFw+ruyosahqICWOK2EPrfHCAlnBF7eLJGSTtebRveAOvDc0zu6Q2YGMt3ZGqgx7UsbBhw69N9I1uh1OaNzrqTrplhuHMHg+/qYF0coqfiy9RNo+ZIEy/KkXQRBGocjYQSGo72z7h6rNipc7VjXk13O/MD4BlmlwXqM5S6iT1jRjz2gDtNEyPbq2Ps2AW/MxX0mJ+1y4wDXxDIoxPJAsPWW4CitUhJhu8+1LkwYA2rVXOqZKFkulUQ/en/F1jeWYq7ELsCzxjKJZSDPIwjeDj505vADAikOCe6fNO0a0iWp4/1Xbazqvuqd5tTyk/+xT/rVzw== 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 DU4PR04MB10500.eurprd04.prod.outlook.com (2603:10a6:10:55e::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.16; Mon, 3 Nov 2025 15:32:32 +0000 Received: from GV1PR04MB9135.eurprd04.prod.outlook.com ([fe80::b1f6:475e:de5d:8442]) by GV1PR04MB9135.eurprd04.prod.outlook.com ([fe80::b1f6:475e:de5d:8442%7]) with mapi id 15.20.9275.015; Mon, 3 Nov 2025 15:32:31 +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 , Dmitry Baryshkov , Frank Li , Francesco Valla , linux-kernel@vger.kernel.org Subject: [PATCH v6 2/9] drm/bridge: fsl-ldb: Get the next non-panel bridge Date: Mon, 3 Nov 2025 15:30:46 +0000 Message-ID: <20251103-dcif-upstreaming-v6-2-76fcecfda919@oss.nxp.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20251103-dcif-upstreaming-v6-0-76fcecfda919@oss.nxp.com> References: <20251103-dcif-upstreaming-v6-0-76fcecfda919@oss.nxp.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AS4P190CA0007.EURP190.PROD.OUTLOOK.COM (2603:10a6:20b:5de::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_|DU4PR04MB10500:EE_ X-MS-Office365-Filtering-Correlation-Id: 3e73f61b-9ae1-4e8a-dff8-08de1aee343c 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|7416014|376014|1800799024|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?SUwwR1R5QU5iS3RwcEtpYnl4RnpldTNEcG9xMXdoRk8zL05iNlhwazd6aDAy?= =?utf-8?B?eGtLMzQzVDFCQkpST0twL2FHaTlDNHRSdkFwQUZwSzFqUWYrTFduQlJjOVYy?= =?utf-8?B?TEFaMkwrRGRySmU0Ym1UZjd5T3RLdTl4dFozL3ZjaCtQSzFSVjFYbVlEcmpP?= =?utf-8?B?S3NXNUlpTDM1d2c1eDZCZS8yOVdMRzM1aTJrRFdxNG9BVkhXNlVyZXgwTXh1?= =?utf-8?B?VnFSWE9FbXBGT01oMnF6NWg5YU9laDhQUkxsUFNoTExZbEF1Mnk3SmhzbnZO?= =?utf-8?B?cEJhay9qVFhUZUVHV3hSN1dqa0R0a1JRT0lkNWpoVzZjbHhFa0lkM1BGaWIv?= =?utf-8?B?TmdPVm9JK3J2THJlSW1TSU4vbUE4ZldrSVo2MzQ5K2wzcjgwdXBVMnBaUE9x?= =?utf-8?B?c29URkRvamtMS0dOSFNFa0tRRmtmN2V2dmxWeXVqRTZHeE1US3B0VFBUL0Fa?= =?utf-8?B?RE1tUEJ6cEZ4dTUwTnpFVHE2QjBnOVNPeWRNTFBTUFpuKzJ4cVZpR3d3R2oy?= =?utf-8?B?UTBwbTh5bkJyYkE3YklpMlV6aVFZVmxoSE9abzAvZzJxN21DWkVyL1NGSlN3?= =?utf-8?B?M1ZhVUZyUjBNR1NXb0JFcVBWMlM2WldVMFo3TWpYRXpLcjYwTzB0QjJlNXJz?= =?utf-8?B?Y2d6S0xwL1RoR0tzdHhGWXJyUFpTSWc1RGg0d3VOVk9VYVpKT0VCZC8xWnJu?= =?utf-8?B?NGVINnV0Rkt5c1F2SmFvRHhoaXNhZ1JCTjltWWJyRFV5WjR1VjBRaFNpUkNa?= =?utf-8?B?MUNBWlc3ZmxETW16TTBrN3RZZmplRTJxT0JHbG5OcWNOMVlmM2dqa0lhRjJX?= =?utf-8?B?bTkvZ2ZWeXNCblltWk0yVHlaY2dmMTlyYTg2MytTWjdjejg1YWpuVzM1TFJT?= =?utf-8?B?QklhS1F6ZjFoQzdIUzVtMkJNOWM3TytYeDFxOXlZaFFzYzV1bTZLdE1HaFRt?= =?utf-8?B?WkswZ2NaZEJMZjdYaWpGdUdrVTN6WW1Rcit1SEZ5Z2NBbUovQXhxTkpPbGRi?= =?utf-8?B?Qlk3amJFejQwVEpoT1FhUzhqTjdWeDNXeHVvenZ5cHRYb3cyVTEra2V5SzFm?= =?utf-8?B?ZWhPTEpScWJHOEVLN3dhck00U3ZyTWZXTTFNMUlrUEJzRjhIa0ZBNlRwblRF?= =?utf-8?B?Uy9YRVNNMDRSWWk0bmY5cDE5ZmNaUlJQSXVKeTUySUZYRlc2MkRQSmx3R1E2?= =?utf-8?B?UU1nSXBPMGdvdURhWkR1YVZyclFnLzFIblBmL2trWW1rRmxVa1ZmWjFlUEJG?= =?utf-8?B?Zk1FUEcrMUFSYWQ1RjN3eGRHYWVKQy93NFdseGVPdXpiWENIR2ZIVVpxOFRW?= =?utf-8?B?aFBXZWd2TVdab0hJd0xaUDlRNUV4S1pvQlI1K2hxVExZTGpnbERlUS9uWTMw?= =?utf-8?B?eEljbUw0ald4R2wrM0UwR2czL2U2ejE1UTJiZnpYZ0E0bGlZaDU3SXVKbG9S?= =?utf-8?B?YVNudUpWRzdDY2NoNWdOS2tNOHBBUVNuM095S2xTZTVJdEg1aWQ2YXlRU3VU?= =?utf-8?B?WDhvMkVsRVIzd0N5eVJnVXlwYXJCQ0dTYU1MMDN4T0VqVEdUQkxiTGo3SE80?= =?utf-8?B?ayttc0ZuNVNqT09pTlhmTWViWG55blJNbEtIa21GOWliNWFDcTdkeElxenA2?= =?utf-8?B?cUNJbnJKa2l1d2x1ZEE5L0J2RVBZZEwrTWZpZGtmR0hQcUo2OTFMY3RWT3Uy?= =?utf-8?B?YnBVSTViaHlIczBoMzk2emNUQWUrTXFLbTk3dDNGS0laZ0tWOE5TaXdFWXFx?= =?utf-8?B?b3VTdk1hUTU0bWcxeEJrV0tqUjdteGlaK011U2xycFF3S21MNUdyTXgwOHRn?= =?utf-8?B?U2lBTm04aURIUmZPUUN0cXgvYTBYNGpUMFl3bmRUOFhIb2UzbDJKeU5kcmdM?= =?utf-8?B?MzhJTWNabDJDSkk3UVc5RlRyc2FSMG0ydUx3WXMwakhQU05ZZU85N3pGZHRa?= =?utf-8?B?TVE1U0tSTGFHLzJQVWxDK1E1SFQ0dFlEY3kvd2F6N3grb29ZRGNNemxyUExM?= =?utf-8?Q?OnGFTtXdXYc6m+txSZIjvCEeuDQMFI=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)(366016)(19092799006)(7416014)(376014)(1800799024)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?cHR6RlVPY3JpUTFZQi9USnoxc1piREdFeTFad1ZxY2ppTzNuZUN1RjdJQlR0?= =?utf-8?B?Wk5oVzNrNHlRT05CakhuaU5LVkpOQjZSczhSdnVVWWVZM0xIWit6NmhXT3ZP?= =?utf-8?B?RFB5RVdEQlJpN0VjS2dkRFhvMW1CZXorL0xXMnVKUjVmbGdwbnBuSVA5Ylds?= =?utf-8?B?L1Nac3l5d2owSzdWTXhDaTF1TnBLQXI1b1REZVBGRVIwSGUvVTNIbHFOb1pu?= =?utf-8?B?OThQSXFWNjVOeGtIcy90RlNKOXdDWkpRZTZCWWJlakJSR0VoUVVIVVhDS3JP?= =?utf-8?B?Y0FyczRwM1AyaEdXK1FyVnBiTjBvWEt1WlBPeE9UTTJqV214RjVkRkRFQmFX?= =?utf-8?B?SmZ5bFJJV3ZGSFErdkcwamR5VmJXbmp4czVSU05YRTdRczhBZGtiQS9QOHZX?= =?utf-8?B?Qkt2R1VjMFdmRG9rczFyMjVyTmdRcEdabnZhZXZCSWxDeXpydkNLaVpUOE9X?= =?utf-8?B?V3pFR2lENk5zNU5WNFpTdEtYTXY5a0xweXFPNklKRCtVa3VhWkdaZFdhVy8x?= =?utf-8?B?ZURPVVhKRmlLSUhwNVVTa0dtdkJsTEcxbzFxdDJ1YURRSFd3cGQzdGJZUmp4?= =?utf-8?B?QXF4bG5kcXFYZHJNWTRrajUzaTlNN3l4UGpoV0ZRcmM5aDVKdTFxN3RZaHpZ?= =?utf-8?B?T0tIVGdNU0NqcHZuTWpPZlFrMHJoU0xicU91SW5OWXNtS1VFKy9JUVlRS2JM?= =?utf-8?B?SXdEbTgzbjArSzdRTzcvL0RybWF3d1ZLbzdIRU82Mm50VjZVdWRhYUlLZkpO?= =?utf-8?B?aFB3MWptSkV5UHY0ZE93TVViNkp2Zm5GR05uOWYvZmE5N0kwRUxOWm13Q1FI?= =?utf-8?B?YWsrN041VnFyNkFFU1pTYldjVC9aLy9NcURwMng0aHBxbDNhL29xSlUweVcy?= =?utf-8?B?NXdTN3N0N0pDUVJIU2gzWDFvWkJ1bk5wUmcrbWRpckdZL1BGYlBKb0lBRzJO?= =?utf-8?B?eWZNeWd5WFkvK3YzNmFZdk5wMjF0eGk2VTBteTRmNHlkSmxoaGw5RWJRcitz?= =?utf-8?B?UlNRSnBvK3YwaVlWMjRHZVVwUFVBdzNuRnZ2YmxpYmVQMjlVaFlHVlAzSGtF?= =?utf-8?B?WXZLZnN2dW94aktZRldwQTFPTXp6VUR1Mk1GL3RjNkROTzVwWmR3Y2c4T0kw?= =?utf-8?B?aG4xLzZOYTIzd1NNR0x0aURxbWorNDIxYy81Q0gxRml0eDR1QXZOTVJ5SG5z?= =?utf-8?B?QURZbEc5bWdINExXM2h2NGdHZGNIbmh5M3pUOEFBaWhxRTJRT0VxU2V5UUdu?= =?utf-8?B?aWRJTjlJbkE0bWU5dVVwNG5tcjN5VW9lMDJSckNlOERTRGlRMEdaalA0TlJa?= =?utf-8?B?dHBoaGlEekQ3ZW5QQTQwQkJQdHR2ZllaWGNoRzVSRVk2ZlJTMkNOOGFCZHdy?= =?utf-8?B?cW5vSWdESHAxdVdneDM4Sk04OC9SK2VxSC9UUGRlNWxKS1M0QVk5YzJnK2p6?= =?utf-8?B?cWRZOUxSdGs2Zng2QVZ5ckVNVU95YjRFSEU1TUFHcys0TTdZTDArSERUZHRl?= =?utf-8?B?Y2JWZGFpWWxaMHcvRHVyYlZqczBjTTZoZHgyM1VBaGw4WSsyUU9CS05FQTZV?= =?utf-8?B?VDdTQ0l1TjB2enNMVXkyREYwSm1FU2lBS2Y5VElReXBnaEl2eWNQU2syZ2V5?= =?utf-8?B?WThqR1FCNW5ZcmNVNEVicmE5U1ZiRUZJMS82d01UMmg3TGp2MmpQZU1XcUd5?= =?utf-8?B?Tzl2YllXMzFEajUrV1N4bWhiNEduSmNEeVcxc2trblphK2d6czBsR0dMK3VK?= =?utf-8?B?ZFpIeFhjbUpYaW5kNDBRb3A0NnltRlhvOVUyTDZpR3RrRkdpK2YxZE5iUmtq?= =?utf-8?B?U2FkdDlFUWVrQm0waUYwVytMNEJKTGRjeXM3VjRBcEFIZWNWWk9RVjRkNyt5?= =?utf-8?B?TTNSWFBqTlQ4VUxEcWdJbFRGd0ZYNnplVHhONFdKRVRlYkpCdDZ2blNmWDdP?= =?utf-8?B?MlBYazg0YXRCWHlzWTlRVDNXQW53bVlaNSt3d0kzUWdXSDVFWitnKzlnQXkz?= =?utf-8?B?WnZrbVF2RGJSTmlONytzU0dGSWdHZHdEZ2g5RWI0NGF4eDhhdXRjZURWaS9M?= =?utf-8?B?WVU5c0lvUTdlRTdxNUwyUnlia1AzMVhhNW1WZFFML1pBTXcwMGs5ZUY4OHdC?= =?utf-8?B?aE9nMmNuc1dVbW5hSW5ib2QzeGlDdkF0RVFkSEhIdUJvRDlqVE5uUExrVDJZ?= =?utf-8?B?UGc9PQ==?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3e73f61b-9ae1-4e8a-dff8-08de1aee343c X-MS-Exchange-CrossTenant-AuthSource: GV1PR04MB9135.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Nov 2025 15:32:31.7635 (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: dBbUMgkweGv7gpytrBiUQCotHLHVZNVdrOJzrQtGC/PXI5XAam/2zcP8MKxGrWJM5Uhxsgw37VP/q1660us+TQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU4PR04MB10500 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 Reviewed-by: Dmitry Baryshkov Reviewed-by: Frank Li Reviewed-by: Francesco Valla Signed-off-by: Laurentiu Palcu --- 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 Tue Dec 16 05:53:29 2025 Received: from OSPPR02CU001.outbound.protection.outlook.com (mail-norwayeastazon11013045.outbound.protection.outlook.com [40.107.159.45]) (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 9FBFF318146 for ; Mon, 3 Nov 2025 15:32:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.159.45 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762183959; cv=fail; b=JaoKMk/XWU2mP6lB8l3+wdmmXQsIr7j0GarBUXRk5L6esgRytQTr6XNDenQeBh9OaTyaUxbuqq+WORPTl+oAtI+7pHFB7PJfxmG1DGNPCuHl67Iosw6nnSyYMw3eY3JyvB9gek5U614xMTP8j43njhQy2mSJTI/6yWt9dn25mnU= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762183959; c=relaxed/simple; bh=VaGYEV9cgUGqlW/++H0iIMF81MrwMgoRjO5mdU6Ujz8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=WJBqjg5plA1x9v02VueTPkS1136zhkianSHtyy+tSI9LGou5Nqdc+8naSGmKf7OQeIhA25FktzsCxuqEWhdAo08VjMyTcN6U04x2fUiwMCiA6gyGnDAboEEnksEK5/V/SaZveW73UGxJyatbXa/LD6PNBh2Hcz6pIZksVhqVEJU= 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=yE3zMocx; arc=fail smtp.client-ip=40.107.159.45 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="yE3zMocx" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=kBy1E3BQgW2LbRwe1iLVDk6Vz+k91CYYSe74OQnXhYBSTTDtcOy5X7wc0RW/imW3nD9azqTyO4PaQD7Dn5QbOGCV3MDcScYQc0l5vXPcyg0r2aOU3F0fab9pxlzOLRZh5GPP6Ts9yVjhec3hfFIsPsPG1N6fmAPu9+FhRrOh6Z+INwIm7IZcDhOKynpP/vPWBF2PB0Ugqon2bZzhRGyQKqFuakaNmlOkE9AVgRBw8BJm0b0kw8igzJPWACS6/MxoGMvvtAfft75rXaxOCQzo2lcmLmwIRaTMMV1UMYYOlu7tKxd+XeoxyL4zRnESf4yBegOtuRwSe7HiGFoih9/HEA== 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=6BjzY2aL4+nfh0OLp5zefSQTeTTudRyi5ib1aUqHzLw=; b=DT8PavINy+/u9OubNWanajOmI8ClP1WCTTSYypWSbtwhytE5keoeK6XuK3d7zgXO0ZnZi3/GBS+OXbpmEG8fp0OBiX1b6jl7ZIqstUaNDrH1qFz0SrsX/yDCz9ifagGMcVdRSfsz1/gqA4ibmEaHfbI19olc3ntyyGI7Asnqf8g4MNCWQktArS8/Hkaus0zXLVXett9ewfF7QpzD0P/kl4ZKjn0TKlvWZdgH2TsqQ2Vj3Yr5eCsYUiFJSkKdamiY+WrmjNQ7x5fuw2pU9Jp6RITgdK3z/FhXv7MLdfc3Yq/ZHeRsIkXoPB9XnncQ2ZcvUse2rLRRf8Mzyg0eyh2+tw== 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=6BjzY2aL4+nfh0OLp5zefSQTeTTudRyi5ib1aUqHzLw=; b=yE3zMocx4Vh/SSmVMowtpRf7T752axn0a9/1s8+vluoeRR3nDZgmxV2zY+EU+gLQGYZXrSu3iLoNDICC8YCEdhY4/r9GlxgbzoMDSBpIAh80UewLVjsveb/9Ck5ngQ9+ZNJAe9xlIAapiXvmaDRa3zjnggPcvt11SrglaeXIT15pZEOF+YaAwPr8lgpBj4NOVOtXKefgjWFPOAR9OMdvb5RvXxgAxb5V3O7DOUoe2IqDLu9x+/V2CaRBF4Qw4lgCs1aUjUfS/e5YSq8Xy8aKSuRzK0ZWy4MHPMy8LX2I7D8RC3I+AmMMXXNgQx4rhDACgs1MPNTq3L6p8ti3TnixWw== 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 DU4PR04MB10500.eurprd04.prod.outlook.com (2603:10a6:10:55e::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.16; Mon, 3 Nov 2025 15:32:34 +0000 Received: from GV1PR04MB9135.eurprd04.prod.outlook.com ([fe80::b1f6:475e:de5d:8442]) by GV1PR04MB9135.eurprd04.prod.outlook.com ([fe80::b1f6:475e:de5d:8442%7]) with mapi id 15.20.9275.015; Mon, 3 Nov 2025 15:32:34 +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 , Frank Li , Luca Ceresoli , linux-kernel@vger.kernel.org Subject: [PATCH v6 3/9] drm/bridge: fsl-ldb: Add support for i.MX94 Date: Mon, 3 Nov 2025 15:30:47 +0000 Message-ID: <20251103-dcif-upstreaming-v6-3-76fcecfda919@oss.nxp.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20251103-dcif-upstreaming-v6-0-76fcecfda919@oss.nxp.com> References: <20251103-dcif-upstreaming-v6-0-76fcecfda919@oss.nxp.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AS4P190CA0043.EURP190.PROD.OUTLOOK.COM (2603:10a6:20b:5d1::14) 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_|DU4PR04MB10500:EE_ X-MS-Office365-Filtering-Correlation-Id: 56b5ae76-9483-4103-f61a-08de1aee35f5 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|7416014|376014|1800799024|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?WDBSSE9KMGU5VEJJZzE0ekVmR1QxUkhCYzVISlEzUTJnTGtzSlk3OThubU92?= =?utf-8?B?Y0dCNlZ2YmZJZEx0YlUwdGtwMitRdXhXWGRoMW1ZbmM3WkdBdEJLWWFjdldF?= =?utf-8?B?NHlSeFN2VkFEVVhtcEFZSDhXWmFNQ1lwZ3I5NmdaWm9DZDF1UzQ1bklYRTA2?= =?utf-8?B?Y2JrTENmLzdiL3B0N0JZcmdWTFVYZ294MWpScC9aMEhybzFpaU9FYnFFYTlJ?= =?utf-8?B?bHdKTEZsTjJTc1ZXMkUzVHdObDRLdEpYcDUwQXFXY1VHYStoUFFYOFZXVkdG?= =?utf-8?B?c0FYNnVUZjRSR3ZTUnM3R2hmaXhKQUlVTy94clpsOUVNTVJpWEV6b1Bld2Mx?= =?utf-8?B?Z0pyWEtKQVZkWHdzWm1SME8wOG4xUXBYQ0Fya2RUVFNYb1lWc2hUQitSd25m?= =?utf-8?B?VEpzc0IydzVuNWxORjdocXQvMWJyWVExSDQ2SXg0S0xGY2xUM3B3VWZjSFNX?= =?utf-8?B?MUFJQzRpT2drZzlWVlJQL2ZsbDg0MDF3QnhGWE12VUJnRkZNdWcrdncxTSsw?= =?utf-8?B?SjZJdHJ4K1k4STZ3QXlFT3FNMXVuSDJib3hSTkkweWZub3U1L0hXaEorQjhw?= =?utf-8?B?d2pKVmRoaCsvclVYbkdHZWdUV2RoNFcyYnZ6NDN3Mkdub3BDSWVKa1BsVVFz?= =?utf-8?B?bzE3b1dwbDZSZVl3V2tTWWE3ajBLcE5PYzQ4WURkM1VCMURCTTZqcmpDL1Qw?= =?utf-8?B?NzgvSmNnWE8rSHRYcFVENjQrVE5ReWJnRFBNcC8zZm1IVi9oeGRJK1hTZy8r?= =?utf-8?B?UDVCaWg3VFhUUnRZUWZ0TW9XM3AxWmVpNXhPZEQ4NDBDbnJOMEJpQjROOTJa?= =?utf-8?B?NEdMRWQreU4yeHVnTitCTisxaVdKTlp2MXlLN2kzY3o3SFN4TmI4Wlo1cW5S?= =?utf-8?B?QmVVclJvaElldmJUc2ZkUGQ4V1ZOQ3oxU0xmb1EwU2NSaHRES2N5a1RDV0Zi?= =?utf-8?B?T1BwUTZxVXFRTjg3UEpNazJXUHBhVkN3cHJXZ3NncjI1K3NVcEY0aGt6MUMw?= =?utf-8?B?U2M1ZlZhcDVqZnNZOXpkU1RGZkQ4SFBEbWYzSnhUTHNOM2RmRHI3RzdhUFlW?= =?utf-8?B?Zk5obEZHcHI1UnppMVJmR1V5WDRWZFBWaE5ZNkRxRlVEU2pocGxiVTlrSUdI?= =?utf-8?B?d2Q5b3QzSVkxRVVGY2N2eVVZV00vNHdCQnREWCt0UjhST1pKQUhteDd5TG94?= =?utf-8?B?NTRUelp5NFdVSkNnVFRDTTFWdExyQ05ZTVZudCtrU0ErN0taVEJvaVViWkVQ?= =?utf-8?B?MVFnYkxIZCtpUElyWEJqdHZ2YXhEdUJrK21YLzJhOGZFVkxBU3NQUW5Zczlu?= =?utf-8?B?ZXcrZ0x5aUxldVBkRW9ZMkN1eThqamxrQ0ZnQnNkTXY0YTJqaE9BcXlNQ2o4?= =?utf-8?B?TFg3TlZ4NURWMWM1QUt2YzFiK2JGK2E0ZDVVeFFzbUhzY3VPaExzdkZrdkFG?= =?utf-8?B?R29DbkdDL0srbnFBM3VIQnB5OFhnYzIrVnUxL2dlRkswKzIxZmlFL2hkYjNn?= =?utf-8?B?eWtXWHZuOGtwcHBSVE45dVkrUUJFcmxqMHFVdnoyYVB0SHlRQkU4aXhiaEhE?= =?utf-8?B?VFA4SSt1VjR5WmFMVUt3UDdIZU1SZnM4V2hBRS9sNld6VmI2NnVaUEZsZnJp?= =?utf-8?B?Y2E4bDBvRy8wdDRsWW53WWFWMmthanVRVjR5Q1ZVRG9tM2NJK29ycU56ekRu?= =?utf-8?B?dkFRNk1lT2dqVWRDK3ZaVkRaK0szMGZNYk9pc3pWaEtWdWJ4c283OGgrN3lk?= =?utf-8?B?MkhDR2FxNDNmRXE3SDlKTUJVaXFCUWJnUEttaDVsK2wwTko1RlFLVkhiQVhX?= =?utf-8?B?NWRFM2R0b0pxK1lGWnpHZUJJMzRqWmVEY0J2b1hHMDlyWHRxZGVzdjNRcXZs?= =?utf-8?B?bEJDS0VmRGE1M1pLamxFRHRyRXkwWkgzYWxKRGhMa08wcUQ3Z3FUMTVXQ051?= =?utf-8?B?RU1JazhrZUpndGxvTW1NMjdaVDd3NTFiWlRhTmM4WTNlUzk0MjU4Q2F5blVr?= =?utf-8?Q?+p0ri2PDD5bm9lXZIJMh/w+WbW1+Ro=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)(366016)(19092799006)(7416014)(376014)(1800799024)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?R05KZDBienU5VVBjcXdQcUxCM3AxbWlUT25DNUlEaVAvWmdhKzhtVGI4bzRB?= =?utf-8?B?Vk9jY01la3JEakRFdlhxdk1WdG1EYmpCYXNPckF4b2ZOYlpLLy9wMmcyK3hM?= =?utf-8?B?TUFVKzFZVEpQa0EwWCsrUGNoeEtSOU9ld2J2UXFZT1FyTDhmeVZtU3dmb2My?= =?utf-8?B?TGZ3RzdYdndQcXFOQlp3eG1zUXQ4bkY4QWxxKzVqSFlzSW1sV1BhNGlZalhk?= =?utf-8?B?VEc0dnM2OXUwamJyL0gwblNEWEoySGhYR2hJVzRUTit2TlA3b05SUGx3aTdI?= =?utf-8?B?czB4WC9nQ0cyeU5CSjRDSXAwUWhIbjE1cnR4RTEvUHFZRURxMzRXSkFCanFj?= =?utf-8?B?WnFyU3RJYmJpQnpmYzZ2bHBRNTk3VmxTUE5rQzhjTW5iM1RhTTJRMlRGN3g4?= =?utf-8?B?ZFFhNjk3dys1S1pZSlNBUHFpMXVNcitBdEdpVFcyMHhjTmt0SWVvbEdkdXJ4?= =?utf-8?B?TTNubEhuczZXMHVtcTR5WTlyOHFwcFhkL3Y5SmMrRmtmTGF2MXJWaGdXSWs3?= =?utf-8?B?YThNV1QzNmhpNDdmOEJacTNHMEdwakp5a3JSTS9aajZMcFdoNWo5RVVLdEZJ?= =?utf-8?B?T0lNSTJpYlRiNXB3TXl5TE9USGE0MWM1Rnp2RTRoNXVjeGFyNlJTTkRKOHlO?= =?utf-8?B?ZmZmWkVweGtBakd3QUtNRGp1V2ZHZGorRjVsUGM2alRLaVg3eWNObnZ5bEVs?= =?utf-8?B?U3ZIZVVEcHRZM01nSFphV2JGTC9YYTZWa0JER2htbEQrcEhabzJKZlAyVnUz?= =?utf-8?B?YlVPV1lRNVpuVXFZam15YTRuOU5aYkE2aWFHbkR6WW9naXZHZ2NhbjE4b2sz?= =?utf-8?B?STVyRm1zWHFSNElIWXowS1pFQzFpUGhBUnpSS3NWbEorQXRJd2Jya0xUZzdz?= =?utf-8?B?ZlJXTnNRWGM5ZlRwUGdhT1ZaZnZTZG5YLzVYM2FnOEE0bkd3RXpNN1FPczk4?= =?utf-8?B?clVkR1RZNnhaN0kxTWRISloxSC9rc2UxWVBZclhKMUhzUEJyY2ZNczdyTXRz?= =?utf-8?B?cS8vMG5iclJTTTI3TTNmaFd4NWpKc2FKMjVKa2taRisrSldiVzVpTWNjQmEx?= =?utf-8?B?RWRkUDVycWdIY29idXEra1IrcFRiVWVselZXTTJkQkp4SHNHWHNYa3p0U1pH?= =?utf-8?B?SS9DVTR3N1lYTkdmUjZKSVN0eG5POWc3d2ZzZm96TDdIRldtV1pqTERxQkhM?= =?utf-8?B?aUhPVEJqemdjTmlWZ0lPOVk3c1hBTzg0ZGVKc2k5emdwdnF0RDNxaklFTDFI?= =?utf-8?B?cFc1M2RNenM4S2ozbEpNTkU5eFNsZlNiZC80ZDBlTStybWFvdTNHMS85ekJx?= =?utf-8?B?SUo1dXh6VFoxdW9xcWVKU2dpRUlMTWgvOEpsZjNtVnlsOEpoWE1qTnZsNE9s?= =?utf-8?B?R1V5dUtPQ3QvVlBpOE1mR2VvTEpBcGE3dTFMRUhCSEtuTXhob3pqMlA4WGRC?= =?utf-8?B?Unh5UDV5dFRqcjdPUWJsRUJMMTdlMGNneUtkTG1kWmpUUWRZNG56RFprZEtw?= =?utf-8?B?WEpYT2QvUVpsZkVhbU5RT1NudnQwMGpLOHd4d0hUQ0cwWU1mdmRNVGxyWFl1?= =?utf-8?B?eHg1NmMzSEJuY3dQbkNSRjB1b0hBYkJLZmxYTDRnb3JJQXdKVjJtRHNGMEhY?= =?utf-8?B?SmJPSnB2MTRrcGVERzM1Wm5JbWJlbEljR05haXdST0FoclNzZVV5RlFHeVJl?= =?utf-8?B?M3dLS0JZU1VxQ2ZwUjBiSi9iZGhMdk9uVzUrL2hETXN0NmtaRVpwNWw1Z2Qy?= =?utf-8?B?WW1XazR3VmRMQk5ueTNxRHVxSUQ3R2kwQ0E3K1Mvb2F6OFZpTzZzZkhkd2I4?= =?utf-8?B?b0FZOFhtbHQxSUZ5eVFNMVlCOXFYK3N2S2NHcDlSVjAyRWJLREhscmtIMkgy?= =?utf-8?B?bnMxbElyQmRHT05IcDRESFNKOXJmNk9rY0NQME9qcngvR2VXSXhVQVBNWDR6?= =?utf-8?B?cXo0M3RWTTRQUXV5dXZFRExad3plV3k1MWx3RHQ0WXFlREQwdUVwOFc4Smpm?= =?utf-8?B?SXYwVnhHb3ljOWpFR3MyNXFmVG9ScGZpL1RsZElhOWNEQ0NTbnpnTy9rc0Zs?= =?utf-8?B?WndQemtvUTcweEJ2S2RoVnJrUjc2ZmV1YWZJaGRsVEd2UkVpYWVEekRoKysr?= =?utf-8?B?QzJSbjJzajliVG51Smwra3JyeW5hakhpL2FOVmIzWDB5N3R4Z0dSYmpaTS9o?= =?utf-8?B?N1E9PQ==?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 56b5ae76-9483-4103-f61a-08de1aee35f5 X-MS-Exchange-CrossTenant-AuthSource: GV1PR04MB9135.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Nov 2025 15:32:34.5936 (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: ui1dxBK0VSVhS9XfSCpDxAitjni4NEXlhl6qdXN4MUd4hNEfdzkKECu2sSjL0QOYnGi9Kb2Mdy24FVTsOQAIkw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU4PR04MB10500 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. Reviewed-by: Frank Li Reviewed-by: Luca Ceresoli Signed-off-by: Laurentiu Palcu --- drivers/gpu/drm/bridge/fsl-ldb.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/bridge/fsl-ldb.c b/drivers/gpu/drm/bridge/fsl-= ldb.c index 665053d0cb79d2b4f50e69c397863ab024553867..96065a83898666fd789cde5fa10= 08ac2c841b815 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 @@ -271,7 +282,7 @@ fsl_ldb_mode_valid(struct drm_bridge *bridge, { struct fsl_ldb *fsl_ldb =3D to_fsl_ldb(bridge); =20 - if (mode->clock > (fsl_ldb_is_dual(fsl_ldb) ? 160000 : 80000)) + if (mode->clock > (fsl_ldb_is_dual(fsl_ldb) ? 2 : 1) * fsl_ldb->devdata->= max_clk_khz) return MODE_CLOCK_HIGH; =20 return MODE_OK; @@ -377,6 +388,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 Tue Dec 16 05:53:29 2025 Received: from OSPPR02CU001.outbound.protection.outlook.com (mail-norwayeastazon11013045.outbound.protection.outlook.com [40.107.159.45]) (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 2216431B82C; Mon, 3 Nov 2025 15:32:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.159.45 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762183962; cv=fail; b=ioQlcAA+QntlXXQIDuy2Yjl2Wigj4J8ZqvOuPoMB1D1JMqOk9GgYrYCJ78w+8pGz4bcLBfsweuE2Gf0L5UhImIjQf3lqYF5zvJOLH1uAFEFas37xaDKJlAvqxX0fO+oJEdKkusR/VKBJSBTIAuBhDlmzkrviolIl/XwzCQgamhQ= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762183962; c=relaxed/simple; bh=+4HuIN3FZfAUl/y5OIZRsL5ZmfxzvMW0G96nriDm2iY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=PXgO3g2I1xW3P5bh56gSpJV1CE94YjTPzWBueajAMX3EYW3BRhMKdDqdSw5WmSKgFJAOwJ3NpBbLo8DrKUgNrXHSQV74OyvN/l2rurMu7kt/bmDUljZGK9EkM+sod9rUCWEcR0wpwO4cfdmFhZ772LQrt2v2oumcirIHtk1rLek= 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=cMXKMMP4; arc=fail smtp.client-ip=40.107.159.45 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="cMXKMMP4" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=etrNdMZpWIkHarRlMCb6YjP1zYFvb4tHNPNCwMYc7/vn+np+u9pFVKZQ5omio99HNWcPFnJh+fhj+cHeJI9CgC6VvzaJHuTJ7d1P7B9ohIHDwjjp8be3UUlGGVTDr0OC0DZ/LsXNwSqLhLsBxA+5rNTDb1aQipgy01/iDC5kG2qozdzQIe2eVFmEr33hq/D+ngTzlMA7dvxO02gyHb0IqV7hmNAaQ4oMiKcrodeNT7KeRkTRJoiFDpAAu5+EFPSqcRUuFjepd/0in/hyGfdmqExeen2bE3wAMl1eGY32a4km8cakIDWDjez83E/9vTf454E5QAcupeYGLNEJScpn+A== 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=xGiUlQY6dmIjKILe1KV7IC9eh3m39BVSpZ9cBG/0IlE=; b=NXYnu+je2oprwK9x7v21c1IfjunIlTHhvlseGlOsEgjyfqb/4T7I7TpQEAbl1MHVDp0c00b2uFP1Ws5MSeOmdCOaisvHY8uH0hdpIi9jBhEx+NcAZHWiCRV/4GcDRBHaeTMQWo1z72qZTawAelV2Rrv6NfFOg3U9B1cycnhO+JdxxHnbOyMSxMcbmoHfWZImJgq3XiE5w9ZD8CUCQOW8rBfIIEVKs3mYnAUPIWOMrE/qEoNLTMAIX4T+qVsuY5zsI+80yzLP4rphL7d06BQ4bZtZcnmav6hURUwhlXo4CFlrraFQUVR+I+AkARnEaxhBamlHczuYMHNSMpEzWhQ9vQ== 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=xGiUlQY6dmIjKILe1KV7IC9eh3m39BVSpZ9cBG/0IlE=; b=cMXKMMP48RgjreEPcDemuCMSzJPuTXBkpUnOgxcHCXEm3CzeewyufcPicQAb4EXosaWkQErgeLcIq3FEeiVb6M+o/YBifbwttzFdr5jpJOc+Z3Af8ygVL3tBk6rkcG1x24auICRaYGcWWL/LWNqX9TK5wFuC5Kf1KYHtbFs+iLrav5CzlSdTiHNiTzL6rW2DYOVP+qT0Uy9Fy4EvRSWJvABVBQkXNUXzAThEIss7ymTKnutKYZjJYUyeVxfQwzJWb28P91R36NkWvv8US6MIepja2qypBIUxOzbD5D3WRSrqovcHfqkmxypS9jE8znNB7D2bP02yFAA6eSjGg7LR9Q== 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 DU4PR04MB10500.eurprd04.prod.outlook.com (2603:10a6:10:55e::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.16; Mon, 3 Nov 2025 15:32: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%7]) with mapi id 15.20.9275.015; Mon, 3 Nov 2025 15:32:37 +0000 From: Laurentiu Palcu To: imx@lists.linux.dev, Philipp Zabel , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , 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 v6 4/9] dt-bindings: display: imx: Add i.MX94 DCIF Date: Mon, 3 Nov 2025 15:30:48 +0000 Message-ID: <20251103-dcif-upstreaming-v6-4-76fcecfda919@oss.nxp.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20251103-dcif-upstreaming-v6-0-76fcecfda919@oss.nxp.com> References: <20251103-dcif-upstreaming-v6-0-76fcecfda919@oss.nxp.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AS4P190CA0007.EURP190.PROD.OUTLOOK.COM (2603:10a6:20b:5de::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_|DU4PR04MB10500:EE_ X-MS-Office365-Filtering-Correlation-Id: a9d71635-521f-4452-c4c4-08de1aee37a3 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|7416014|376014|1800799024|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?dHlYeHVpT282bjNoMkExamJSNUZPQkZFVSsyVGZ4WDhPeDZkZkh6ZXFZMlNo?= =?utf-8?B?QWcxejJXWnNUMWwrdElIOWRRNVNtT05kS3d1U1BGMWcwSUVjeG5TNFliOXAw?= =?utf-8?B?SFpaMFNjNWE5WldVMnhwS21mT3lxUkdTK01qOEFYcy9JV2J4U2ZkTEszaURj?= =?utf-8?B?L29DaGtzT3cyL2FHdEZEVXRlb2RFZHkvNHFZU0ZYWnB3SElTc1VFOWdEaEd5?= =?utf-8?B?ampoS3RMVVFCRG16M2QrS3FNa3ZiL1RUTjRaMlVwVGhMYWdOamNFeUF2bkZJ?= =?utf-8?B?WUFLa1VRYi9ZaEJmOWJWQk1QVUpnTHdFekFjRm9kMnIxM0plelpUS1E2bDdE?= =?utf-8?B?US9PUXk5eGx4VXFKYjRWYkJlWHdONTlTOUpBYkgyWldkTGhKMmZyeFJZR3hB?= =?utf-8?B?ZElCQW9Ra3F3RjZKME1YbDVIWWZRS205aTR1V3RoQm5vNnk2S01wNnh1RkVq?= =?utf-8?B?SEdWaTkvMnJ4YkRKdlMrRnlzajRibUgzcUFzaEhTYmhuaFNrT3RNRWtlcVVF?= =?utf-8?B?LythYWsrNFY0K2g0TUg4SUczNHlEVitxbGtNdzM4bmNaSkpuZEV0dmk4T2Uv?= =?utf-8?B?TEpvUngvR3FzVklSVnlCMkw1WlgvV09CMUltZ1QwcWFHVklNVnl1ZDNrcDR0?= =?utf-8?B?QTZnNkF4Yi9tbEYwRFl0WmpDUWZSdXRGbjg0aGcxOHZwTjBQaS83V0NkVUo4?= =?utf-8?B?N2g5NGNLNWNPVllpMWVpd2NOYS9QREt6OXRUQTh6cWF2dzVoU1ljSVB6YjQ2?= =?utf-8?B?WGt1K1dGR0JpUFIreEswejgvd3Z2ajVZTkhrUTh6QmQ1b2JVVEhVdFF1QmRF?= =?utf-8?B?UHJRVU5jRDZhZWs4QXNhZjB2S0JnNUoxQ0xTcUNwQUVRRmJ5bWcwb1kraVNt?= =?utf-8?B?eFo0d2lVTjdNdEZxMi9KSDdTTzFWMndaQk15N3JIZDVqYWJDNy9BZWhGaWhV?= =?utf-8?B?T3JBVGkyRzNYNG95MWMxZGFUWk9zdmxLV1lMeFMraGcwNkVyU3VNNGZMREdG?= =?utf-8?B?eGZzL293ZVRVeWxkdmVmUnBnc2MxYWszNDBZUGZTVDBIb0VQZE1RRkZCS0FD?= =?utf-8?B?Y2l6K2hFajlSeDFDQVR0YWZZRnQwMDRhTDduOUJ5aGNuM0xBKzFlMmYrdWZT?= =?utf-8?B?NEoxYjdKaDFmOGxBYXBlRU1xa2VGM1ZSek9FRFVQTll4cVEvR3BzN3Jlejdl?= =?utf-8?B?bDJ0TmszeGNUM2x4cFRXNFQvWWlQMm5xdnFQakpxRjRGcGxOTnRoaTFMTTVE?= =?utf-8?B?UXI3cmluOGNmT2o5cHVFUUtPRThXdFhEdHlQeFpoZmZua0hVRmdCTkhocXVR?= =?utf-8?B?QnUyVEJMcHR4bTBrb1ZZWXlpZUdYaGZHNFpQSjdQMFd2MUJnTnlMTk0vUjVM?= =?utf-8?B?alRBMG5ZdHhUSEt5STBLeTlWTkZNZHZGVTBjcnA1T2MyalhLc2V4RDIwYjda?= =?utf-8?B?MnZFYkx4NGR6cVJrQmJOakhBN1M4R0dkWHZ0Z3Z3V3R0QS9JblBMWis3YU1y?= =?utf-8?B?d1didGtQdUFqdHNVSE9HQVVtK0F5NGcydnkrMENlaWZjY0JlWHI3VnIwSXdL?= =?utf-8?B?dEVDZUxmZnJTRmVmRGo1YytGanFNMGM4ZkZmK1poS2gzRE1ELzUrTDZHOS9H?= =?utf-8?B?Q25kVDZESEN3bm5yNnc4dnJjekNCQ0dBZ0pWUHFiTjNrcndEaVlURk1GKzJH?= =?utf-8?B?UzBGa0t2S2pkeG5ab3hRRUNueU4yQStub25jY3VkT3JESElsWDNBUkpvMysx?= =?utf-8?B?U2Q4amx5Z3piQ1Q4Tm5kWkFpeG1sYjlVR21YMmdTWjNsUzZDN2YxczJrcmZ5?= =?utf-8?B?NHRSU1ZVRzd4dXBhMUh3VmZUdWRLWGFtZ2FzMndlMFNERkVGWkViTHZpTGlB?= =?utf-8?B?RmlqOW8xSmlld0MxOTNqbmpPQjFjRmxORFhkNE1aQ2MvNnkrWHRvV1YzVURX?= =?utf-8?B?SU5PS21hZ1g3NXNNYU5EZ1RpUmFkTGxPZExYWkJUM09rdTI0Uk9ZV0J6bTdK?= =?utf-8?B?TGYwZ0JzZjdBPT0=?= 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)(7416014)(376014)(1800799024)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?QU1oeDJsZ3p4dDhzUHBaUXIvL0R0dWpnN1Z4ajROYWFDMS9ON1htcXhnc3NJ?= =?utf-8?B?MWhFY0lISHhhVFVSd0lFbVNtZk0wcGtIekdQN3pWWDdZWi9hdks5eXM3MHJq?= =?utf-8?B?Y2tSSW5MN054dExpazBhdURwazhCN3NCcFhRSEZwdFBMUnFlMmkxS2JvS2dm?= =?utf-8?B?QUI5VGlCZ2FEMEc4TStub3VsVTIzcVZNR3J2RWROR2MxVG5JeE11bVV3OEhN?= =?utf-8?B?dnFsTG9YcE1SMTRKUFZIeTd6R2VUdEMwZnRyR0pGUU9nUG1VZTlOMEthU1Zh?= =?utf-8?B?QXBuV1N2eVFNV0dqeGJibmFIb2djVzZ4c05kSUtsdWVsUWlacDNtLzdBMXM0?= =?utf-8?B?anBjUlRqa0srTldBT1Y1R1QxRDZ6NVpuK3NvZlpnUTR2M3hxSzh2anlEN2pY?= =?utf-8?B?NU8vNEtRZVg1NWNMOFd2dnhIUWNrUlV3MlAwWFhzSzh2SWg0cUR3ZlE1ZmV6?= =?utf-8?B?R3ZGNzZWSC8yQ0xXLzJBT3AzZTZVL2pOMmgxeXRtaXloVUhnSUl2dFpWaXV4?= =?utf-8?B?dVcxSm51czNGVmY2TGtGWnNtUXZNcE1SM1hEQ05ZbDRUUkF2SFVvd2JacUg5?= =?utf-8?B?WXRYNGZZMWNzT2ZiTFRKTzExRFVVUkJGaG1iQjVCM2N0YTJoMGhDa0svK243?= =?utf-8?B?OG9LVDNEcEQwUEkwMmpDOHdJc2c1ZDhUUGxlekZxTEVjOGh6NkVLbVlYbWtV?= =?utf-8?B?U21PQzdYakNvWHRmdFIvT0drOWs5V0tDU2lwOUJXalYveXVQSGwvVGpYWEp4?= =?utf-8?B?Q2V2SXRpUVBxUGthWmxyaXUzc2hqRmdFVDVWanRGQUNKc0w2bHcwWGo2QzJv?= =?utf-8?B?RzRBSFErQnNBUGhZbWxnRk9EQktOcVJJM29zVm1sL3ZUdUhza24rR3E0dzZq?= =?utf-8?B?SElFNjZBNEFoaFVacFFjUFczRTFNMUg5OGljSTdDc0lpaDFicmkwWDYvOW9V?= =?utf-8?B?UzAzZm5QakxyT3pmai9NbWpYWktqQ0pyMEdkWWpDa1RvVTNMS3JITlVXZWtL?= =?utf-8?B?bWtPL0FkSTl4c3k3a0wxY3h3S2Q0VVRQU2hJVldtcTBzcG05a2lFZU5meEJp?= =?utf-8?B?anNLMmFoOTQzbXVlL1lxMjRERWtjbXlPUlZoMWx4TjZWNGxVRmE1WGs1U1Zt?= =?utf-8?B?clBSYjZVQ3ZNdWpYaTRTaGdBWDQvUzhzaVpCcEhEbDVkaTI1bkhGYk1rZVdU?= =?utf-8?B?V3kycXRQSVdLeGpjVnh2TTJsSG8zQnNVVGpRWjhWWTREQkFmN3R0MU9nWm1X?= =?utf-8?B?dXdwcnBxNzVzOTZuMyt5MURWT3N2NWJYTHc5bVMvbTdBYng2S0lqU0NYYzk5?= =?utf-8?B?cVNYMlVXMXQ2anJhZEg3Q0gzcnl2c2hsN3RZOWhndURvUktuU3ZqZGVlL1Bn?= =?utf-8?B?VlVZdnJSeFhGQ3dhSUNPZGF4SHpabXg3a0JoTWJRU1czMFV5Q0k4YVhleG8y?= =?utf-8?B?Zjdiamh1Njk2ekVHd3pMYWtTS2V5Yk1UTnMxM0RRYk9EeHlCbFJlYUhCSEZJ?= =?utf-8?B?QW1OT2todGNjQnVUYzBsVDc3YzdvR0JXUmROZlVBWkplUEtrdmpZbDBldWdD?= =?utf-8?B?OEhRdHZUaVAzL01xOTB6dWZWL2xFOHFwT09rV2M4Mmt1T3IzSUJucngybkFC?= =?utf-8?B?RGtOcHlQL2xPcEIxUEtWSWZEcFZRaHUwaStrT2UxZ0ViOVNaWGkxdHlabmJD?= =?utf-8?B?Yml0d1oyaWVvSGNwNEszUnp1WElQYnZoMFFXSEtrTTlsd0Y3RjdlZ0FadmJ2?= =?utf-8?B?aDNqM3Q5cmhwdXBEYmdtZW5OSmFZcVhmZDIvMUw4eG9ZMXZ6WmJTZW4ydGRG?= =?utf-8?B?Snhaalk1MG51TFFiUzdvdDloQS9YeklsZC8wRTE2VWd6Y2RTaWo2WTZQOWg4?= =?utf-8?B?S00yaE0xeldNOEdubWFQTWR4U2Q4YjRDdnF1Y0YxYjFyN2o5c2RuZ1BxSC93?= =?utf-8?B?aTRGTTBqNDZMSXZONmhBeFVvVWhmUHM0ZFVadG9OVnB4TFJTU0pFVDd0QkxE?= =?utf-8?B?NkFCV3E3dGtqZ1pKcEhTWW9SSjRoUkVqQXZaclA5K0ZPQlV4bVo3NE5RbHpN?= =?utf-8?B?YXlFQUZrUG02L2RnUGd6VUdNRWlja2VUVks1S3ZvZmxEU29PZGZKQXMxQlFm?= =?utf-8?B?RFdxdjlyMW9rWk9zdTNROU9NWXhkeW1nYm94MXF3QUZ4R3BSN0tlbzg0WDY5?= =?utf-8?B?b2c9PQ==?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: a9d71635-521f-4452-c4c4-08de1aee37a3 X-MS-Exchange-CrossTenant-AuthSource: GV1PR04MB9135.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Nov 2025 15:32:37.3741 (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: H/RbcOcVjnHBHMqYPhi2fHBjocmT2KCFX7f4LOUlyGpxmP0o8Ip07pa4zhe/53jWw+5tdBXONKL6DFWbHpMfBw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU4PR04MB10500 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. Reviewed-by: Krzysztof Kozlowski Signed-off-by: Laurentiu Palcu --- .../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 Tue Dec 16 05:53:29 2025 Received: from OSPPR02CU001.outbound.protection.outlook.com (mail-norwayeastazon11013067.outbound.protection.outlook.com [40.107.159.67]) (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 345A331D74A for ; Mon, 3 Nov 2025 15:32:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.159.67 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762183973; cv=fail; b=ma8qzSX3/JWczIt3v624RPxRjn4I5NpLVWEnYhEjJEPQukxxqQkrkM6wkOvNC4OcS0pfVZfkX9sJqjxaAhGtUy/PPNhG4TEqY8qlEjClNCn1GPOOq00sm8jMPS93XIkobEsrOEor306zPKuTWtrZX8eiiPDNkOkHObyftnLaY/g= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762183973; c=relaxed/simple; bh=BL2DUVdQZOpyx2Thm2kMpdTrNBqqiBGGn9xbm1mqUMY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=F2lrAesBmmSJKL1IRJ9gSORE76zRBbOKukVdahEvRKEMdb43QN42mD9aWnB6aFsZgtxjkzweIRxRUZ3fAkHkvj3Lj4Xj8LShZjG2E8aDTwS5BGA3EGYphTuOigQEkrpjWp7I/mgMDuBaGneRQ60kGYYrxjYBph5REtiXOhb/7vg= 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=DLM8rURr; arc=fail smtp.client-ip=40.107.159.67 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="DLM8rURr" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=kcEnPOnW7nSRkDSLkggQrSEX45+DHI6DNT86jDaR4xGjeDEwYIr62RDwGg+kK78PJbby8H5YgKcNrN9ImURHYQkonisCFIk0h6AQUwFIAA6PN4JKpSUtppOcf8JqK2uNZ/KiDAYOoT510+ua1kE4U7otCbLPvyy1BHd+a3QPhnvvxHc7OJZVVMq5WSokwEOt8BRbezV78fhuAcABW+e8yLbkWAKTIBoUWAQSnFInKRydD+GUgL2qWsnDRWohLoJkHtk0HgE4KYjJwobK4F5P082eHofnfPu7C0WqwWWEPfZVlDOwcGyZbGT4SCiTzwQUan4dg5SIjzCsY9i1IyybxA== 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=0RypFGGkTTKM+Yip4wqxqVJ0xb0l6ONi216FMLfb5h8=; b=yIyetORIbe3YScVtaXca0CJOboheGdyYfJIsoXw2ETER/hPAAa6mQbwIcZON5+vz5HGgXZu0ztkyi09UbtaYrn24dXrpw/9WNFSV/UyccaK0uB1J+JN9tM42IJPU1SRWCUzyavZ1WEjn/n2bbGvgbUeW7vsixBwHE/rC4beEL7aBoHtPs6Y7um0+Qaum0Pu5PjZPHSEo9ciWYOnjBCMUPBire0g3b+XrD2CSRvU0a9RkrEGYQQdHzObrbka0yiOUqE8+FS8+S5hUeV5URYCwzuOlQSkUC6vtlHSOQ4Nbn8PJd0UNrsE05LfSjNmBgK6LaGTdr5fqLaqHOt6wqzyqzg== 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=0RypFGGkTTKM+Yip4wqxqVJ0xb0l6ONi216FMLfb5h8=; b=DLM8rURruLQYOM3gTrkRBLy9M9+RMwfA+xDlD8oge7qpaN7sZHNuVY+IXfFhsvYIu7MHL23XknMFb+ZlaA48yXCjdfZaNpE01zWYetmI7QwOL2A1luXAH82Jd1yU5YejYJaMYarrY9MMdXFxCiy873vJw1YSA+TKO7huSrzyiGt2+bZXZ8obV2m+YjcVLgcFLW7FM29GrgcJ7kaZAKR6YsxwleXWDEQovqjVcKpD3kBEGvT9F0qqEx6eXaKR9zgmUjdnb/4t0N5RnAP0Tk3hpOZ0AkPBgXKTQGZf1bdh+wOsA77LFy27J2UHjtSwqSuU+9yOdKTSbf5a/OCVy+YeUA== 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 DU4PR04MB10500.eurprd04.prod.outlook.com (2603:10a6:10:55e::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.16; Mon, 3 Nov 2025 15:32:43 +0000 Received: from GV1PR04MB9135.eurprd04.prod.outlook.com ([fe80::b1f6:475e:de5d:8442]) by GV1PR04MB9135.eurprd04.prod.outlook.com ([fe80::b1f6:475e:de5d:8442%7]) with mapi id 15.20.9275.015; Mon, 3 Nov 2025 15:32:43 +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 Cc: dri-devel@lists.freedesktop.org, Sandor Yu , Laurentiu Palcu , linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org Subject: [PATCH v6 5/9] drm/imx: Add support for i.MX94 DCIF Date: Mon, 3 Nov 2025 15:30:49 +0000 Message-ID: <20251103-dcif-upstreaming-v6-5-76fcecfda919@oss.nxp.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20251103-dcif-upstreaming-v6-0-76fcecfda919@oss.nxp.com> References: <20251103-dcif-upstreaming-v6-0-76fcecfda919@oss.nxp.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AM4PR07CA0025.eurprd07.prod.outlook.com (2603:10a6:205:1::38) 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_|DU4PR04MB10500:EE_ X-MS-Office365-Filtering-Correlation-Id: c50023c0-8459-47f4-86cd-08de1aee3b1c 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|7416014|376014|1800799024|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?ZlhjOFcrSDZJZS9VM1REelloZDRRVmpiSWhXT3h0TXdsNVZpRjcwdXpXc2w5?= =?utf-8?B?MVNaSjhIZ0pFRk04bkxqa3l4bWU0TlZIak9ydXNTaVkwSzhzYUZ6NFdKdExP?= =?utf-8?B?dmpmdmczaUVIa3ZoZUgrWEhldFZVK0pHTTdSd2JucjZMSTJENmxNMW92QlBH?= =?utf-8?B?TmRDNGgyZUl1Q1g4dkZPcHd0dWRUNVZwS3d0ZlVvaHhjK0pqVVJQL0lMdFpC?= =?utf-8?B?SVg4QlU4RC9iNGQxbk0rbmZKdWVrdXFUYjlPa1JjNFZRUldxenpTYi9MdEZz?= =?utf-8?B?T3NSOUNjbmM2ejhlQzgwOUVRQzBzQlh2bE5uKzR6aysxOFBZQmdzdm1TcTY5?= =?utf-8?B?c21ZV3BpZVhmVGxMZVpOaGNBUTJYeFpDR3ZpUnA5UWtwUXR5Y2ZYRllEOVRR?= =?utf-8?B?TXBoeHBKN1VtWnRuR3RublUrOFNMZjU1aTJ0UFBEQ3ArVE1BbDlOREg2bU9V?= =?utf-8?B?UHo5dUVJZUcvSDNPUkdqYnU1c1dVc1V0bzBvRm1kL3dPeDFDR0VoQ0ZaN3Ez?= =?utf-8?B?dUtocFhOcUlGMjlWZU4vUjZHUkM4K2VDOE9ObjFLWjZ6WndxUEQxdkV4Ky9o?= =?utf-8?B?REc3dkhocGRPay9zK1pITjJVM2lEaTdwNytzeXhucXRuTFZlQXVEZmxzbXNP?= =?utf-8?B?VldNRy9rYXpmTDRPY2VlaDBBRkY3MzFCVWpkVVZxbW1KbHpwZzY5ZTJQRk1u?= =?utf-8?B?cWpLcTNxNFpFM3JHZGwrK3BiOFZPem9PYXBLOW81elkrWXRJY2pCV243cHUv?= =?utf-8?B?MkxlaEo2Yk5Qb2NlZ1g2cGZ4QVloT2h0NHVXZHFFbk85Qm9taVUrcFh0blpY?= =?utf-8?B?Tm1KQTVxMEV5dlhDVndIQkxKYk5WL2lYQzg5eTBPWENvTHA1eFdsSk0waXRw?= =?utf-8?B?TUp4VXRXZzVLVmxPRGZiWlR4Z1dEb0ExbjVCUFRaUjYramlHbGdRbkl6SGVh?= =?utf-8?B?U21tZnVxbkMrRTVjdzdDYk1qVDhIeFNzaExtcTFrZWp0MEFSMXJYc1piZWdY?= =?utf-8?B?Q3htYUI2T2tRUXNrU2RtTE9pQis3STYyanNoQndOdlM4RzA4eVlRSFhEbysv?= =?utf-8?B?ZldCWHpGOWFBUUdqZnhENmI4eldQZTdsdUM2YkNyWURFUWtxLzFSTFBvMG1N?= =?utf-8?B?ZHlWZmkvUHdtSEdhNkZpYU5DOThqRWVwNXExWU55NFFOTU9uV2tKL28vVTFZ?= =?utf-8?B?WlhMaFJaK3NVWnRkQmpNdUpZK25yWkNTM3Z2L0VlcFNBSGlEM1BIdk50ZHgz?= =?utf-8?B?RTY4L29CVUxXaEQ0YmY3MW1hcDJrSXRDWHlUUTJabTk1M20xQjI4dmRMOTVL?= =?utf-8?B?bnlUbzRVK2NhRi96Qmp5OUhEWGVCUG00RXZEeVVpb3F2UEVoRmRQaTh6YUxR?= =?utf-8?B?b010Vm9raWpzbjU4bjZsQ1dlWS94cU9xWUt5dHk3LzRLNi9xcWtMK3AvRlZt?= =?utf-8?B?d3ZCbzVQeXJUa3ZmRmRxT3hEVzZmN0d1RHhpRXBBVVlvRFlqVmhxTHE3ZWJ6?= =?utf-8?B?VFpGWHc5MmdiNmZmYkQyVkN3MkRabDBnYmVnMTdNRy9sbHpRTS85eWIzSVIy?= =?utf-8?B?Nlp4SXdVYUZ0S2dzeTFxdW5pQXZJcmF6M3ZLWTdabWQydmhQR21RRVlaS0Ix?= =?utf-8?B?TVU2K0pEL09jRXlBQ3VpQk5WRUlaeEZLZ0JDWE5qWmJtZG5kbFpLQndDSUMv?= =?utf-8?B?NVVSUHkwM0Y2dG5DL3ovc0RmbENqTDUzZVlrZEJTOGs4alhnQnRwN0twTlp2?= =?utf-8?B?VGNnZ1d6NllpU2h4RG5EVkV2WHY2c0dxMUhVWWVkaEhib3ZpREZhOGVFdXNR?= =?utf-8?B?Zk1xUjBVK1E3dGdCczU4ekVwNVQwbGZ1UmF5NXlKY01mWGUra2tweUxERFlN?= =?utf-8?B?dnN3Tk9jT0hBTGRNNktpMzRyRitONTNoSGN5UnVERlpteE4xMUpVRndvYVZ0?= =?utf-8?B?VUFIdFpyVEEyMTc0eDArUXBoYzJRZ0NaZmtXY0RzS0VHV0VhM2hJbzdlVmNr?= =?utf-8?Q?Fcyhkk6LkfItslc3aQocSwJ1F47IrM=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)(366016)(19092799006)(7416014)(376014)(1800799024)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?YnAwa0FTRndWWUVzSkJ3T3h0RWc4cVBEWVp3cWdkV1h4TDBSL3lHT0lIbmhy?= =?utf-8?B?cFJwRWdMRWRnbjlndElVM3R5Z01UVjhXMU80a3NscXhLSHpWb1hoNzJuckw5?= =?utf-8?B?Rkg2aTlKM0xZbkpiQVFROG5TSmo5YzVNWVFzNjMzQ0NqdWVPK25vV2lldWh3?= =?utf-8?B?Nk9FU0JnYndjQnBaNUUxYW8wQ2tPRGdTOWhpUFp6d21YS2ltanpJb3Mrc2E3?= =?utf-8?B?eVdpV3pjclo4bkhPcDNNcW1GZDlTRHI5M3ZndmdDWG1xVGJhZU5POE5iSHBR?= =?utf-8?B?Wndaam9ncXRST2dzdVZId0RLaXp0VUs5TW5ha1hvcmZIOENOb1UreENyUE14?= =?utf-8?B?b0JJb09DaklZTmlIUGFEcGtKVUM1NFl5UlRtaS9wNmo4QWJNMlRBUkJHYk52?= =?utf-8?B?b2RwbVdyQm0vQm41dFp3Q1ZiYm1VWnB4RnlmTUZ6MENWZXZZcUZ3Rkh2M0ds?= =?utf-8?B?YytrQ1JvSnNSeGVXdERGWk1mM0ZCTU96UjlTSmdQMWt1RERrODZaeXRCY1Qx?= =?utf-8?B?TVhub2F3cklWQlBvWUJuYXgwRWc4RFBhNUlxSzdTdU9nM1NsM2s2elVJVXl3?= =?utf-8?B?Vi9yem1SZFliL3pxMTc0ZEdUMVpQa3JKaUR4SzlVaHMvNzdDOFNFa2h0RGlH?= =?utf-8?B?MUthVlV0TGJjVzJES1FtN0lnVHl0UktSMSs2bUtLZWd6ay9IYVg5blUwUnpi?= =?utf-8?B?YXkyeFBIVmZmUW8rUjdicWlaK29OeDBUM3p4aGxqM2Z1bHJ1QXJNQ3Rhc0xR?= =?utf-8?B?MFlJMEdaOGVoU1ZFc1FubUpsRUViSEdTN0l0dm85K3JnSUNFc0RMaVdxK0VR?= =?utf-8?B?REhUQXltSU0waHZYYVkrQVhORUFLY1JVK0N1UnR5OExlRjRkTTcyUkJFNHRo?= =?utf-8?B?b29aeWFSSnRxYVV1WkUzaEJZTnRVRzFvSW01NnJkbmN1dkhTaGtSb0piNGh6?= =?utf-8?B?eFRYeE00cUR4S3ZCYzMzbTN2a09CVDlKWXBQY0xLRHEvWk01VTA3YVI1cXFp?= =?utf-8?B?d2FRcncxc2tRb0VEM0R3RVhMV1V5VGFMYXN2Q0VBWXFNTlVtTDE0cU1QbWp3?= =?utf-8?B?NXlCNjl1UnU3blNidXUxUDRpWWJSTnFwNXVFQ1A3THpXb2lpVnR5UGM4S3B4?= =?utf-8?B?ejdMRFBGUi9DWmdDb0hQa1BoK3NxREZnQVRkT1ZwTW1qS2JuSVRQeWxRZlc0?= =?utf-8?B?ODNFNnRFQWhOM2R6bFFmck1OcXAvVi9XRE1EenBvQjkzaDFRRFdXNjMrcFMy?= =?utf-8?B?ZHdtM3F5ZS9za0s3eGZoc0d4UllaSDVUU1pieExWOEJ1Z3FPeTFlNDkzYk5I?= =?utf-8?B?bFFnSGhsd2pLQXZJdXg2WXhxWUNiQ2RkOVBib0oxZ1FRZVBQWVVpWnYxWnZ6?= =?utf-8?B?Mno5d2RMNS9oc3FnS0JTOVpKYnBjYkZCcDE3L3ZnQUdPb1NLMDNrN0JaaFhH?= =?utf-8?B?WnZ3S01abjJyc2RVNDgzR0ZaeFVhcVhPTHZhcWhEUVRzS3pnMXVSUVptVUxS?= =?utf-8?B?azBpODI0U25yVlV4ekQyZHkySzUxSzl4blpCTlY0S0JYUEJvdlF6TFpQc0VV?= =?utf-8?B?dEttM0piUGpLc0pvTndpcE9nMmRZSE45NnBORXF3bGMxdEpQSXRsY1BDSzhI?= =?utf-8?B?SU8vWFFrNVJPYkZQcGRFZUJYSlNpRm1PTFVnVnVoWmVnb25MVFZXd0s2M2FM?= =?utf-8?B?NGpFR05SdnhuOS9ZbFg1M1hjNklWQXNpTkF3VmFYNjRVTUJjWFljU3UzYU1Q?= =?utf-8?B?bW5rYk43NHVGSUw0SG10dEt4TUFpNG9BLzg1ekFyMFJCZHMrN3RhdDdCcjZp?= =?utf-8?B?czlkSXRIVXNsMHVoYjlrQkVyK1gyaDhiK2JIa1NHTmJMYm1wSkM1UnJhMi9u?= =?utf-8?B?bHkvSSt5ZDBIMUxDcHhlOGxlazU3UktNaTFLU3ppK0orTjBuTTBiS2pMZWJJ?= =?utf-8?B?OFRxTEwvOVFTeVpxRnB4LzR1aDNQdC9LNGdPbWxSZDQ2eE1pQzFmQ1hqY1J1?= =?utf-8?B?aUlQeXRPVXlVMjRXblEveWVuNklZejdXajlkaWpESytjNUZiVFJWbXRDTkhS?= =?utf-8?B?aVhwYUJqajRFb0tSZCtVUDFlcWw4MmtLSGJUNTBXUDljbEVBS0dPZnkzOXp2?= =?utf-8?B?cjc5VFJhMjFVTFRadGdRMlg4bllWK0VBdE9lMGhqNVNFSTlmejc3ZGFuYWpw?= =?utf-8?B?L3c9PQ==?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: c50023c0-8459-47f4-86cd-08de1aee3b1c X-MS-Exchange-CrossTenant-AuthSource: GV1PR04MB9135.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Nov 2025 15:32:43.3870 (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: 4aoJzliw6dCTe+VyItHdl6OfCunJ0/UHt/St4higlwfJYkRrO7ZVxcvZxozeJDFZPpX5lcnm0HV5Hvqek4HGvQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU4PR04MB10500 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 Reviewed-by: Luca Ceresoli # bridge refcounting --- 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..84610a44100ed3e57dd11fa85d2= 7a53998b275b6 --- /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 *bridge __free(drm_bridge_put) =3D NULL; + struct drm_bridge_state *bridge_state; + + 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 Tue Dec 16 05:53:29 2025 Received: from OSPPR02CU001.outbound.protection.outlook.com (mail-norwayeastazon11013067.outbound.protection.outlook.com [40.107.159.67]) (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 D6FA8314B6D; Mon, 3 Nov 2025 15:32:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.159.67 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762183975; cv=fail; b=O8YGuDMBKaiMStdTnOijzKRBkbyY/PeG4aO8qJ12i0eckMcAYHAUxOIMF1ozzPOMSoRU/SqTfoId5yD0rcRurfbQyZESLXurvme4+7BF/N9XOmpUkUKQ18wozkA/z5Sb2dyFCpXphi7Cjxcm856OjGUKhCnP0OwMENroMBflUJU= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762183975; c=relaxed/simple; bh=+9onMDk5TkYoOAg+b1017feoZcfakRygOZNnIJLYXnc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=fBZcMLV4iJtaSWL/WHNpuR3P/LItIXy6eV8xSYSWBrpKVBjtKA5ZWYILC9WyFl4+w5z/5liN6p2ZhUfc2GDuuIfIXEO64VjbqBO9Y3A1xTGKG+RR0dr1aHZCB4tcD67o0VE9NMktfwujH5wGrp78ijfy1j1TZVu9+lTnkqxLr5c= 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=Z/PaZWnd; arc=fail smtp.client-ip=40.107.159.67 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="Z/PaZWnd" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=cU5LlEw4fBg0J4M+kzjjs8SnnCsN6+eM4z7LKUb01DBdzGjmTb6Xx/+ZvmUyRL4Tcat4perdltLG5SArUIr2qmb7Z6ZmEKo+GsA0xWUqxYvLZ9JR9OrBsNDvnGOV87k56LMHo7LtQr5at6D1a/p1I/n0V12E4OS7QPRIxLS3PfpLZKpdPlx3r/4Xel8oGFG7koDnP0PjKhnQWLkSbZmO88t/NAAhtDRc/XkUm6H5X8dlth5ynsbQxfdsv6jYX12OY7WKzKVppeAxfgmPXOkcmAQ/XpTejil5PPvEEuNL6CuB5EPCQFtoYrNYmTj0HyZR1IENJgdI4Z4Kgx9rDFJLwA== 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=A/vnICDRcXdUiGAKyXxpfxk8aP+QI4QCp4f05R9nIUs=; b=xn19PfMU6IjdP0nYTVutbz5wnZhySwVtdfP33SUoBIPTojUrTfZVbcc21WKwd2RshuEHlkyxAZ1/pH40Jx9TM7t6LVQl5E9bRUYVLe7CvCDAVGIHceEH7xglMKv3l9a29L2sOxqfW6Hj7O3x9M8TyLmkKkMIYXV2RRkvk7EseHDnfxd0PSjD/2dtg6u63YXwomprEOnyl1tlwmIbQQjpSexbJ0cWlNt+KnKRzT41cBOQMaQ23Lh160h2jsunMg9xjpemVnio56ST0SwwiYnrsl4m8tcqUE5BDiomuabP0pNLYTxlu47j4hqXSPMQpP9z65uerx37pxESCLXlCfSuHw== 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=A/vnICDRcXdUiGAKyXxpfxk8aP+QI4QCp4f05R9nIUs=; b=Z/PaZWndl6t1s/0/wqn3siDqFMrAP+6t+qA8vb3l5wSWcq1/XoUM3S1PnbPpcL2/gK4BKWx+VXmVq7f8LlxOzhKOmr0BwXeadV9rtd14i7HvtLYs1ClB36XhPvq76SwmES43PFHs05KqavpHCltKxqoVhRib8anDZ364UdFH+eJ0YiFfUvgkbPX97W4huv2WcgtXoLsImzkEiYRSvUubmNv/IXGgFtcepyRVj0OMWclBRIaLcHqPTO9+E3zrNu6IZw0l/a58k3ibQSJ29KdmC8V2pBiJT3iJBVGAZ/w8peTN4hHZfxubdgib4dWFhXxsweXsu1UTCtTJxdj8fFCRxA== 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 DU4PR04MB10500.eurprd04.prod.outlook.com (2603:10a6:10:55e::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.16; Mon, 3 Nov 2025 15:32: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%7]) with mapi id 15.20.9275.015; Mon, 3 Nov 2025 15:32:46 +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 v6 6/9] dt-bindings: clock: nxp,imx95-blk-ctl: Add ldb child node Date: Mon, 3 Nov 2025 15:30:50 +0000 Message-ID: <20251103-dcif-upstreaming-v6-6-76fcecfda919@oss.nxp.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20251103-dcif-upstreaming-v6-0-76fcecfda919@oss.nxp.com> References: <20251103-dcif-upstreaming-v6-0-76fcecfda919@oss.nxp.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AS4P189CA0050.EURP189.PROD.OUTLOOK.COM (2603:10a6:20b:659::28) 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_|DU4PR04MB10500:EE_ X-MS-Office365-Filtering-Correlation-Id: 7f9654c3-b187-400a-f616-08de1aee3ce5 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|7416014|376014|1800799024|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?MitBdVIybGdRRDhoZFZkVUtxNDZOZHZTcnJ5S2o3dXplNnhEMHFvZStKaGx0?= =?utf-8?B?bjNIK21GQkJDekxMZWhyUld4SENOOFJmRjFQdktLditrVzZUQ3BnamVyQ3Zo?= =?utf-8?B?VnBBQjEzSnVXanAwMHVtSjN0dzVQUmNNSmlrbEJoSCtxbCtVckVDclBYVUor?= =?utf-8?B?UHArRWtTbytzdVJmVFBvYkZYZWVEL1pUTHBTNUZjRlFoN3R6L1JoK0MvK2x6?= =?utf-8?B?Y1RjYVd5REIzVFdwTUtKRFFFL3k4VWxXNmZ2QVFIbGh5TlBsUWp3ZnF4UmI3?= =?utf-8?B?by9wd1JJOWdmYlBPT2dWendhSHRvNkVHZHFvYnpwSEFjaE5mTFpyRG9LaUVO?= =?utf-8?B?Qmxtby9aMU9JVUtHVG1yN1dKbFNGd1dMYjFKV3lsbGw1SXFIQlg0dml2S1Ba?= =?utf-8?B?ZFlFQW9RN2hrd2oyRjVIVDNvR0h3ZGw4cGFINlpQT1RmZTE3ZzJpR2tXV3dK?= =?utf-8?B?VHNoenBKYjhDTWQ3cXRucnBtWWRVY0plT0Y1S0VQd1FTM2N3ZXVqbkgxL3dj?= =?utf-8?B?dzBNandNMElqVDkzRDJDaUw3dldIdEt2c2NEOWN6eksyckE0K1Q4QUpvVDVS?= =?utf-8?B?YS9rckZJSHpFNlp4T0ZwY01BRjQyWEkwd0xQRXlUS3RFWjFNUzVBZ0JZK0tJ?= =?utf-8?B?UzFOWDVZcHF6cldqRThNTGxiNWJzakJENEU0RUxkc2ZYU2dsZEJ5eElPc3Ix?= =?utf-8?B?RjdVZHRnNElDSThPa3dLb0RWK21VWmtjU0h1WVZUQUh3NXNjQWFvTktjWmpy?= =?utf-8?B?WlBRWHY0dGJyOTNkTjRSVkdlRU44M291ZDNtNERXVW5MOXYweUptTzhoWjgz?= =?utf-8?B?VFNHMnFjN0pEeE1TL1VnYW1FejFaWkZ4bnFna3N5RjkvbGwvS1BzclNqVkhq?= =?utf-8?B?ZWVGMThIOHZuNDRDZWo5RDdpNmRzMEFucmwyczdKektUYVlKRFg2Nit2emN5?= =?utf-8?B?ZzBKQzF0WlRFNHE1Tk9vT1lXbGpNRnBSL1FOVzFlTTVNaEZUL2lpU0VXR1dp?= =?utf-8?B?UE5sMjA2cGRhWHQ2eGEwTy9GNEhWYnpIeXJZcmhVdGRZaGFXczJXYVdmeHpq?= =?utf-8?B?N3ZRQ25sU0VHWkptWnhXV3FVWG5rZEZwMTV1MyswT2NiTUNNemE4ek5kTFBm?= =?utf-8?B?S3NPcEtiQzJmaS9EYVFMNUxueFJ1Y3FnbkFydUswL2xJbWtmeHd0NEwxYUEr?= =?utf-8?B?VzdYd2JHODZCV3VtaXA0SDRFQ0QrN0dZZG5FZ2pDNk5WQURvZFdENko1ZXJs?= =?utf-8?B?N2lpTG9OYnRnTmc4Y0lNcnYySXdhR1QyZzdlRUhGdkdWUmJtZmp2T3Fwa0JU?= =?utf-8?B?WkhpM1U5ZjdweXpEbFFZRmpHMzhLOE0zK3RnVFBDQ05iWkFKZjNrS3pUNXZ5?= =?utf-8?B?b3ZqSDJqTFhBQ3BtVG1ISHJUcmRSc2pqNVVMSEpyYXNyU1Y3T2hVVks0cndK?= =?utf-8?B?cmJPYW50TzBVVWxzaE1MS0kyb21vaUpBZ0FlUTBOdlN1ZDNEVkhQWisrcjRq?= =?utf-8?B?MWc2MnJxTlRZanFGNWhnNStuWlp3N3VQaitVSkpFLzlTWUJuUjdIMnhhdnVM?= =?utf-8?B?bUt1OE9iUy9Qa2tnYkNxWUlMaVphOU9IM3hpTW9TMTcvbTZKMi80OTZiWExK?= =?utf-8?B?eDFYSzloZzVOS0FoalBucjFIRWptTHdrZ3NYWGtCdFp0WEJmUVU5cGgzZFhl?= =?utf-8?B?VFhqSnFVa1UybmRJNUFhaU1FTGdtalBUOGwxQ3hzRUZvbTZabkdNT2RWdm91?= =?utf-8?B?dXhwK3hEMENpZEJoUkkyWG5lS0pPR0ZNV3NpLzByUzVWNkFBOXhEdTdCd0VN?= =?utf-8?B?bGRyNzNhQjM1clNubHRDUUhLZ1JoaVlMdTVsMEZHelhkS0ZlOWI0SFRGVGRU?= =?utf-8?B?SzhZcTg2QzRRSlE2b25GM3NGN3pRc0R3WURNU0ZEZ2RlSGhDY2Jhem9LOUQx?= =?utf-8?B?dU1NOVlycUM3NklFT09QYUVWN1dWaHJxZmtHQkc0UXdxN2g3dk1JcHJXNlRN?= =?utf-8?Q?Nqeow/6tcnVf9ygN4ugwSvhxiBHOAc=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)(366016)(19092799006)(7416014)(376014)(1800799024)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?VUp5VnUrSE5ZNUpYYjZpb3JTSU5odDluaG1uVm10YWlsSGxPNG5mcWxXbHlY?= =?utf-8?B?aGdaa3MyOCt5QmJOb1NlLzZINnpWVk1wK3k0RWVyWjBaUXNHKy9JdGsvdmZk?= =?utf-8?B?U0g0V0lhUzByZjlGeXhoeXpTamxEZEtTTHJQdW9WWGphMVVMZUNqRkhXeFJu?= =?utf-8?B?bitOZHNOTWVGY1FJMWltSjVIdTNDSUtoY2NqekVVYVl3elFXbG9US1RTV2l6?= =?utf-8?B?Y3FHMys0UUgrR3l2bU4vMGlTVmRWYTY0N0ppUHVzaXZCTGJGU2hZU1R0RWky?= =?utf-8?B?ZHMxWGJLUG9Vd1FFcHpNdjU2MlJZenBldGpINVFYNE9tbzNJMmhpK0VHS09R?= =?utf-8?B?a040WDJaeXZhb3ljMzF2akJYclpjcVVTQmJDVjNIaG80RVJjZzd4Z0x1Yjhw?= =?utf-8?B?WURUbjFQZVF1eTJMaGJkNit4TlNXN2htNDYzakJ3SjJ1WmVnWnkzbXRSYWxW?= =?utf-8?B?Sk54d3QzM0F3MUE5T0FMWDN1UHAydGgvVXRvY0x2bVN4ZlQ4ZHVyUlVTVFd1?= =?utf-8?B?V21TRnJQUjdGajJJclNBYmNQZnlTSFhza0laS2doQ2ovM2hsYnpKeTFxeVg1?= =?utf-8?B?OXVlVHd5L2xHZUdseWc1Z2o0UHlKLy9NcUJVYUt2UnBHSkYzMHNwYnYvbmVO?= =?utf-8?B?bHprM1Jna0NtaTI0Uy8wZWhubGxYQ2VhM3crMnRFQThkSWV0ekFhTXhQd2Ny?= =?utf-8?B?TWZua0xMSS9ZRnR0U1Vla3NreTZ5c3phYUVLWGxxUEpQVEhTUDEvZ21FVXNO?= =?utf-8?B?cG10NmxPMXJnSDNYaStNc1JOU1k5M1E0UmkwQ29FZWtMdHMybzJqUkhoemw1?= =?utf-8?B?UjhmeFBJWXd3NTZWcmNrd3lESGZ6ZXVGc3A0bTkvc0U2eXh5eGpQcmkxUHFl?= =?utf-8?B?K2NGMm5sdm1Ua2dYSWpXNWtHV1p4eHU1cHcwNFUrVlRXOHhEUzlnN2F2Qjlx?= =?utf-8?B?UVkyNnkwbC80bzFqcGVHdFpDYmVlRS8ybU8zazc4TnpiOFlvbFUrTnphRWdo?= =?utf-8?B?V2M2bTlSTXZ6M2ZnWEJ6ZS9ScDRFV3dyQWlBUE5oSnJzWFJrRTVKSGVyVUQ2?= =?utf-8?B?YTByVFBDQ1kvUlluWlFLT2xPeUJ1RlZtNUlLN3YyZnZOM1E0aU5sRDhZdllj?= =?utf-8?B?Qm81MGtHd1FLQ281T21vVm5XZVRSR2FkVVFDc0pQTVVOeDRwVjdQRmpGR0R5?= =?utf-8?B?R1owTDA2UGVQK2xkbjBGaHVXRndvRW9sRmxWRS9LVVN5SUc4blhPTHF0anFh?= =?utf-8?B?bGZjVmIwOUpRWUc5eHRJVkVuaXNJQ0ozek1lMEVSS3p0WFZwZkwya09yTWZO?= =?utf-8?B?Vm40SGJmcDUzM3lOREJDWHpXNXFuaForK1dTZ3ZCNW4ydnpNVmwwYitYeDIr?= =?utf-8?B?Q0ExOUFxQnZZWG5pVFRBdkRyTXYxVFRBQm95WUpDREZOUlIvaUNUQ0NYV0VE?= =?utf-8?B?MjlRT1NmK0xnZXlBVFJld0pkMmUzWEZyT1p1cWZyV05ERjlTcmdGbjlGLzRH?= =?utf-8?B?V3g4OFhKUW5sZEUvSXZtd2lQVkZ1ZlZ4OGc0MExjRXVNZmt6U24xM0wvc1Bn?= =?utf-8?B?bmhjNEMrajRpZUU1MnBobzQxMGpWLzJFVHhYM0pDRmVtbE5EY1N0RXVaRFo1?= =?utf-8?B?U05FdU5QRDVhRWYwV2NrejBTcmVPVWVsTTJiZWhLQTQzcGVIZ2RqZVpUK3U4?= =?utf-8?B?Y0ZieWpuYzRmZnRmSnlVM2NISzQ4OENMb1NwRmcwc1VHdGtHRndBcFlrOXJ0?= =?utf-8?B?cDFYTWZsRGpLMnIxeGJjbGh6WDExTUFJeHhiRVkyVUpZdUpzOXpIMWFpMDFr?= =?utf-8?B?Zno3SGtDdExaRE1tUThrc2x1dGtad3E5N251aFJTYzRXWm41NjRFTU1PTEVO?= =?utf-8?B?eW1zTGlLWjRHc2piUGd0UmYzdlFpQzdnNHNSSWQ2azArbnRUOW5DK25XcTFm?= =?utf-8?B?U0t4cDhYaFlya1lEbjRQZitGK2srak5saWNsSGJvZHJjTjcwNjV2U1BtYkVv?= =?utf-8?B?bHljQ2pBb3FzOGgrdytVQytpY1Zhc1Y3cE5LVGJMQVo0QkpTWXhhVGVhS3Bx?= =?utf-8?B?a0lzdHVjMzMrYmNrTmM4RG0za01oVW9raTZVUDBRalRsY3ZuVnVwa3ZpN2Y1?= =?utf-8?B?endJQTlIQzVKcEl5bDlWcGVFUkhKelgrSW0wMWNaS1hwNEdhc1hwNkVORVMz?= =?utf-8?B?cGc9PQ==?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7f9654c3-b187-400a-f616-08de1aee3ce5 X-MS-Exchange-CrossTenant-AuthSource: GV1PR04MB9135.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Nov 2025 15:32:46.2729 (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: 66hEZmGGbzemUTgN/VlspAbl8SaFfN6EP1gobFyHIOsBnHXHjJGBUjnrtcrMNawVwR/lEXf3kXu71LtpKmyrLg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU4PR04MB10500 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. Reviewed-by: Krzysztof Kozlowski 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..85d64c4daf4c96372e4171737b6= 954c3941566ba 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,11 @@ 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# + required: - compatible - reg @@ -46,6 +57,21 @@ required: - power-domains - clocks =20 +allOf: + - if: + not: + properties: + compatible: + contains: + const: nxp,imx94-lvds-csr + then: + patternProperties: + "^ldb@[0-9a-f]+$": false + else: + required: + - '#address-cells' + - '#size-cells' + additionalProperties: false =20 examples: --=20 2.49.0 From nobody Tue Dec 16 05:53:29 2025 Received: from OSPPR02CU001.outbound.protection.outlook.com (mail-norwayeastazon11013067.outbound.protection.outlook.com [40.107.159.67]) (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 35DA631D74E; Mon, 3 Nov 2025 15:32:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.159.67 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762183978; cv=fail; b=LUlX8/V/J5plfs8ZtQ+qdPg+Wm90IISOgzbobmd1vZhudk+hbBAzBhLANbFyDkOTaGjgooiBhLsWvttx7zlGmVnm33gPrtKVPMmi/L7uhLgHYGUuUpJDUdEEU/9pRGWf+cD72CJh+vitLAGLhXtVZ8lHW5cQO7FRidVS/CpN8zw= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762183978; c=relaxed/simple; bh=hvnUe7EkevNYVWBmK+fhWjNG9PB6TrP+j51pPuCYRZs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=eRy0guKbjQLjkflcSx2a7FVxZ+FKqizy3ynRONxivV32lBUuDUkgS07RJaZnt0H+lbgYZd1QOyIOmP3QLTL1lEI+k96+A4EfBPipEGU+0gzg9oopV1v8QsEQWcWjvZxEGXxIDzM+OeckINgddLTN/J5ZXHCN1/H1sH6s/Z/qkJk= 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=EsHUjV48; arc=fail smtp.client-ip=40.107.159.67 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="EsHUjV48" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=USFI2VmLRytx1EWZjYdEeCWcjFZ4jtotiZz1J1OLzz/eWf6r1axO4qiJJI1zYshz882ENmX1T+DDuwsRDGw7zxg0U9aDlqwi606ZV4uP/qg+567Q3s8IXqfzgRF5jkgILAKXBGY9YDq8MaRBy2ZDvvCT9yDcoVEmmYWS+8lIVHyz8p1T5zuqEk74gVv2pAj/GYqX1cFCaPjmlA58PHb6qIM0aKl45t/IoE5SV0L8UDQmM05t+/a8XqTErx0/NDBbKGYpWhSXql/xV6V191BqIQRaRDeyzT+QqG/e10HOu5Ubcr1stiOD6IBO0f3SNVGd3+o3wBSFDb1Jo7iPRqrlLw== 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=w2EWvzKJxEGVLQuKCVXFVv23OmedleK/nyTnc0OTzI113Q+3EomfJP958PX19Cuc66dWRuupA5wbQuBOaVRFgIoUsGFFDcScq5LH+YCUF19Vnspzy9T+2YtVkzLPY4BJbL7WBqtbE6V5wVhflsGq9+Vm4XnPhOtHlwU5Qi6m/vGyLz4BO/flHtiLaJ0BU1d1b/FiSV8DY0HyXnOuRARPmXcaGmx8DzouL9SFSwUTYysxFVLVzXGUs8Boi8L9j3t9O5KZQTsRbsvk7a6cP5mHQYwtNKi/QAwqK6AeQwvOE3h/02Fnf2tG6VbohYsgSzm8uYZ71mMD2l9eWsiG1zntqg== 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=EsHUjV48cslEwESL8jrC18Ze7xuxZ6/ZO6+9U8WQDj5OVbB5J5/9DqICNrap88kC1c5/iB2JqdQMmf4WJkiekrpwViYpSgt/6n8XGwKdhOqb2kUvDWbzeD7QCEoVzHkr0/LojskUkVHQBzOwAXM2rLVB/1T1fPbK3KeJ5LgJBYxlV2eYvBUpJlD9Ix28qmADE9rkEb6HolL/hJ60lpVurpuni5uLY+6WAbC/uJ2NJkcrIeo/HiAoxtvH5j0u4cuXA2B8BE5DV68xZjdnjadFoSPvt7IJ1lXBWYhqZq/fSKqzR5N1Djs1OqFN7cK7sGUlBLTdlTR2QW4MtFEibksiFg== 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 DU4PR04MB10500.eurprd04.prod.outlook.com (2603:10a6:10:55e::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.16; Mon, 3 Nov 2025 15:32:49 +0000 Received: from GV1PR04MB9135.eurprd04.prod.outlook.com ([fe80::b1f6:475e:de5d:8442]) by GV1PR04MB9135.eurprd04.prod.outlook.com ([fe80::b1f6:475e:de5d:8442%7]) with mapi id 15.20.9275.015; Mon, 3 Nov 2025 15:32:49 +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 v6 7/9] arm64: dts: imx943: Add display pipeline nodes Date: Mon, 3 Nov 2025 15:30:51 +0000 Message-ID: <20251103-dcif-upstreaming-v6-7-76fcecfda919@oss.nxp.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20251103-dcif-upstreaming-v6-0-76fcecfda919@oss.nxp.com> References: <20251103-dcif-upstreaming-v6-0-76fcecfda919@oss.nxp.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AM8P191CA0018.EURP191.PROD.OUTLOOK.COM (2603:10a6:20b:21a::23) 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_|DU4PR04MB10500:EE_ X-MS-Office365-Filtering-Correlation-Id: 7aaf8664-fb3b-4f59-b302-08de1aee3eb6 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|7416014|376014|1800799024; X-Microsoft-Antispam-Message-Info: =?utf-8?B?NFZQdEhWbmZsS2U3WVpHR3g5VHNpb1dGTlJlN00zZWdwRWVNNUFaaW9NNDJi?= =?utf-8?B?aU9XNisxQ05nWXIzUnI3ZHdzM21pcnRSOXprRXRjL1EzRDZmUWRQNDk1Sm83?= =?utf-8?B?U1I3SDYzTXJJZUQzTlJQSFUwbWV2YkZYeENWbUpPWGFPMTRwRmJzNzgrazky?= =?utf-8?B?UnhESnlpR250RmhMOEs1VTNVM0pKOGhsRzMyeFV1RTl0M2NnVU85OGwwdi85?= =?utf-8?B?cDJZNDlmS3R3UzQyWFZ2YnBDVjR5N2VYZWwzK2paYWtFSXdRVEpnc3oxZEl2?= =?utf-8?B?UVBEemVkKzBZUlozRzZQa2Q3MXZyRDFiY2lxUDdmWlo2NHhXVUdydXY2VDdr?= =?utf-8?B?NTg1ZzFPRzRmZE9PN2gzWm40ckdMYU5EK1g3SEM2aEh5dU5OZy9RNFZyendl?= =?utf-8?B?RHlLQklscC9QR09JOHNIQVhNMDkxOFBqWjVIZ2ZDQ3V5TlhmTGtqUVJHRkcv?= =?utf-8?B?aGRycTY1M1lHOVNWdTRCd2d0SjUvWThlanJpVUg0TkVGbUJBSGJHS2RzRWZ6?= =?utf-8?B?QnpXczlrdTFTTStsbUdpYm52cjF3b2dPeWtLM1BUd3ZiZWU4OEdBUjl3ajVN?= =?utf-8?B?UVV2dlVLeWZQY1EzQ09iUDVCd2M5bkRQSk5vYnpHbzhtTDNaaW0yeENWTTBJ?= =?utf-8?B?dW80L2JyRVZwWnJYR0hOWFRTaHp1L0tlMnJCR1RTcEFsVnhKeEVlQVQ2ZUNH?= =?utf-8?B?Z1dmTHFVYWZZZWk5eHppVU1jVE0xcFF2bVY3WktEQnlVeE5XZlgrajBKYkdt?= =?utf-8?B?Z0dHZ01GNGhrMjQwdUFaM0JzaXNZdnU1NUI4TTNJYk5NL2FOVFlPRUQ3UWV3?= =?utf-8?B?KzQyNFhqU1NmM2lxalJoNGhFTnU1K1cvUUIzdFN1c21yc0x3eThMS216Uy9Q?= =?utf-8?B?bFd5N2F0c0VjTTcvYU94azdsd2g5c0I5N0Npd2hrUkVZNCtZOFVnVjBkNlNM?= =?utf-8?B?S0s2ekpieHp0KzVkbHd1cW9YeFFucExkeGFGM2ZqSzIwWTQ3dDF4dlNyUlhi?= =?utf-8?B?cWhYUjlvRHdaY3FObjRrc3czL25RWmFQNThQeGdNeVhwb1pmWUpsRDMvV240?= =?utf-8?B?Y0RZcWZuQys0K3ZXWHIxVWVhTHd0RTRwV2lyYXUrSXVHY2gwOXRLRVJBbzBp?= =?utf-8?B?cDcyQW9TTFBrTi9CSHVTUlVTN0dTVGVFTG5BaFBzbW1TSjRxVUxxZXBvMTlp?= =?utf-8?B?VEQveEhSSE9YRUMxTzBuZVE0YkxnVnFPME5NZGxRNmRvL3pyelJWT0lZMTk5?= =?utf-8?B?N250T2lCeG92Y0xVbmVsRHk2Wk1sSzJrM3BWOXFvWTFhZzRHZlZ2OTZRcjJG?= =?utf-8?B?ZDRLVnB1VndrVGxnR1AzQ3ByY21uNEFWY2t5YUluYnZWRkVTdGtZTUtEbWZv?= =?utf-8?B?MEJmOEprdk03Qm9FUTVRQStjTU16NTRtTXp3Nms3Qm9TK2xuTlRWbTZ2cTZp?= =?utf-8?B?TzdmQ0YydmlRWUxjbDIrOHVhZitHS3JzcjBmUHFIa08xcVp2cFh2S3dXN0Ny?= =?utf-8?B?akFocVZnMWNFSi8za09aVFVoZzF5SWxncnV3RW1hRmlvZ2I1RlpzOHppcWtZ?= =?utf-8?B?eERhU2FrYW9RVUp3MVBiZC9TVlZ3S3lEUjNvdGJIOURNY2JhUnhiUjlQOGZy?= =?utf-8?B?dGpoMG9yRlZJMHp5U3RycTVZSmVKZ000WTdhQkdnL3pRcUF1dTZnbzcrT3Y0?= =?utf-8?B?QjhyQTBobGQ4Wk50UGYzSVJZWHpMSm83dXU1NkRHOEVieUhBS09Ia0NxcUtP?= =?utf-8?B?OGlYaHd3a0xIUEpaVGduaVFQa1JKMWZvTWFRczdxZmxqYW1tTDFQOEhiN0N0?= =?utf-8?B?aDhpbzNNQ1Q4ZHhLdWtQN3l0NHJBMWxQUzhkU1ZFYmtnQnNHVWRPNDR6bGVt?= =?utf-8?B?U1YvODhFZERtZWxtRmNsWU1DZWR3QXZ0ZkpHaEVlVkxlcjFUNkRsS3VHQm1p?= =?utf-8?Q?5IHuk0mkhTUNI/7HIkCSV7cYmRXn8pVo?= 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)(7416014)(376014)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?T0cvb0lwV0U0UEdmRkpOMmRYeHJNeTZwcStoNXczU1FMTEJIVjhTWm5vOEFV?= =?utf-8?B?VTNCKzBFS3o1Y09UdCtwTnlkWkFydTBUak40WU91OFdCRFFFa283SHZxSDVo?= =?utf-8?B?TTRlcHdVVlZYS0lpN2MwalF0cHp6ZmtiSmZPSFpLaWFUbWtUR2JOZFo3YVJR?= =?utf-8?B?OU1KcnZheVBnaHJ6TythdjN1UGU2TTZHTjVZQVplRkh2M1UzSWxsNkxvTHpF?= =?utf-8?B?ZGtJSGd4Y0JrdFp3d0pIOTdQK1NUOFZRU29aU092c3c0ZjdaQmM2dVZCbzZP?= =?utf-8?B?STJVNGJiNWtvMnMyZDVVZXNkdzNvdUIyaU16R1RPTWVONnlaWTFpRlVTYU95?= =?utf-8?B?alRSSFUzM3RkajRTK1c2dEM5MmtOV3dFeXB6UjJ4eUN1eFF2Y0JZWUJUOTJI?= =?utf-8?B?WFN2dGtyT0xDSzRQQTZZaFJrNXZIQ1Bud04yaEtYV1p1ZWxzQ0xaOWlwbWk3?= =?utf-8?B?c3Zmbm51M1Y3ejhmWHo1NEZlQlNhOW0xSy84R1krSWx3R2pJYnk5QnNBeits?= =?utf-8?B?TVBsc1dLLzFEZCtLSFh1TkplNllhb0pqZ2UyTTFNQlcybFFJMWNjNmZFK2pS?= =?utf-8?B?NkpZbHdMbFBjNi9NZ3dvK2F3RytBMmxYOHptdzIxOGtxSmpvdlpodkIxaDln?= =?utf-8?B?ZlB5UzdoL0E4VnRFc1c1emNBbmMyWXV0ZUFwQk9OdnZqdGtMMDZNUWtmb2l4?= =?utf-8?B?NlJONkFzNWFINFd4blFjZDVpclBjOFNES3E2V1JmZThtVTNlaklQbTQ1cHF2?= =?utf-8?B?MENTZnZWTUxZUGEveU1HY3IzenVtcThWR05yWVd5Ni9TVHlveUUzL2RiakUr?= =?utf-8?B?NWgzSXhGZnpwZm4rMGdaeGZob0xKaXBCQlVJb3B3eUpoWS8wNmtTM05oamZV?= =?utf-8?B?aEpCaFdtaFFsSGFrNzV6eExDdXNmS082TUNLQVRsZ1lDMnpWVUpUQ2pUbStP?= =?utf-8?B?VWpPZkl6UzhxT1pleXFtVkFBQzI2RWJ0SklENHd1YVFoTXhnY3R0S3E3c054?= =?utf-8?B?RFkyTURyazRrT0RvdEdGRzVhQkdDU0E4VHlEMGNOUEZTYWlNL3hOT1QxcDky?= =?utf-8?B?NWpRMmorR2hqWEIyQnNJUGVOOEUyOGZpU2hLbUp6bWRRS2cxMDJJZ0g3WDYw?= =?utf-8?B?VThoT3d0ZzlycUNlek94LzcvU1pOVWE4U3BOYURSbTFBQ20yZGF2SkZQWmV0?= =?utf-8?B?R1VhNExFWStieTlMVGhHZVFqdEVsMDBwYzN0YUZPd3FNZVNoZ0Nza0d6ZEtD?= =?utf-8?B?ajk0dER2WEFQUHY4bituM2JRSDQwTnYrMWN4d2JZeEdTdFlDcVpQdkFBaFl0?= =?utf-8?B?ekI5andBRXZVb09rWlVNZWRPblhxdlZOZmdrYkRVb2JWT0o0NE1tR1VGMGM4?= =?utf-8?B?K3cvUGNVNVB3VWMrY1dsUHZRSTRuU1UxYWQ4a2ZVZEpRNHp4aVdrRUJ6T0M4?= =?utf-8?B?enZwYUY1QXgvemFhZFREUmtuMjFtbnd1UUJEcHgzNmRWdEp1SDZUY1IzVXpW?= =?utf-8?B?SlA2MzNTakpWZFZNbnViTTZHTUFjdUdhWWVGUGxVSExDVWZveFltek93cVE1?= =?utf-8?B?TzZyVld6ZUVnMXBnS0J2dDVQc1JrOFJxcHV2OTBTbXdTTTIrNEhFQXdkWkZU?= =?utf-8?B?MW1Sd1Y0U0VoR2dCc05DRzY0eUU1clRBYWlJZmc4QithODdyVEFHeEZlQTky?= =?utf-8?B?U25VUmZDUDl5czYyMzE4UjZxeEdJVEUzWE9UMktBc01rSHlkNWVtRXVwNHVr?= =?utf-8?B?bHR6THdJS0dxd214ZFdpRUxhVGF1MU5KTzBoclpya3ZPcFdnUUdMYk5wTjdC?= =?utf-8?B?aUhzSlFMUktZTVJUOCtUVWU2b3BaKzBvOUtuWDR3UFdKNldPZnlDU2kxTm5K?= =?utf-8?B?dWpRSlRXYThBbHI4OWJXRmlMYVZaQ09NYkJNSDdoS3J2d1J4M3lQN3YyQ1pE?= =?utf-8?B?bEdzVjRMMzdHcjNCelZnNEZhWVNrS1BPaUhxRzdVOW5HY1d2OHhab3FxUHph?= =?utf-8?B?eGFMeEpnaDFtZ1pkYU5FTEJ2ZFR3Q3BoQ2dLL25GMVJhMlFySGRlWGhwVHlB?= =?utf-8?B?ZU5pay81d2tWNVhULzRCaDZOZ1F2RnY1Wmlxd24yRFNqT1poM3ZMTGREVkVs?= =?utf-8?B?UVlrU2VXK0crbTJoN0NOSVBPZE53MW1ZYUlSVnQ5TUdOdEI2cDVrSEMyR051?= =?utf-8?B?MXc9PQ==?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7aaf8664-fb3b-4f59-b302-08de1aee3eb6 X-MS-Exchange-CrossTenant-AuthSource: GV1PR04MB9135.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Nov 2025 15:32:49.2981 (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: /qBCNqA6kRZEMH2ZFDLInLRXOVly9Omg4bJAWjWk5LpKLddCTmLBI2iU5SHfSk8YR28m/zRjyOSTXi8eVweahg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU4PR04MB10500 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 Tue Dec 16 05:53:29 2025 Received: from OSPPR02CU001.outbound.protection.outlook.com (mail-norwayeastazon11013067.outbound.protection.outlook.com [40.107.159.67]) (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 8495931DDBB; Mon, 3 Nov 2025 15:32:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.159.67 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762183980; cv=fail; b=rkIvUN/3tzkWo6U1GALe4qC5EzJ4Rx4sHVIu2AObKMoHwkwucTtuuRGuEJ5y8DowQUaakd5QGNgwJCyAAgH31gOzmLbi6bYYb2b4wTUUJ2hL0WpC+VUmRc4lSs4RnTd1CHawXWKUmI9+3HleYwkMi+WwAa1ZjOY9HM5Oo32e9YI= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762183980; c=relaxed/simple; bh=OZc5b8SMrP5RALP1Ul8ioVZ6NTEighkd0Niibc+aC1s=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=qdTXF4smdDLveo3FHpWYT0Vs3O9Yxw/QQLvj7oKJBbRrlhWg9wjtVDct2OCk4Bpr6s0wN2MTyXt2gIP/Ag+dDOXRxSsJdLVh6dsvhDYyOc/bIBdufIwTv5YogF6X5881HYduj8wTY7Y7nPif4lwMDLRHJhswqCq7HQK5noxeyo4= 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=JxGOjv1I; arc=fail smtp.client-ip=40.107.159.67 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="JxGOjv1I" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=hGuXyHjJ7MYvs7zB7f9mylVPLXm2TG+LVwRz8c/mBZVAneRV3Wlc6PnuKQU9SKM5MOMCK2qMDEi6ArqSB0347dA7gY+KJlDLUDx0kpYxZ64RwnyeKIg/afey1yc1BK3nRCutAKmepVAlHg1g/pSiCVuMpmCjaE+TF4AGWPVQsJ97/TrUjkWHg5zyplLzZmg+ukqP1WRz3rkekLp6ylY0Y4ApOUK/7esbIsZR1mi7X4WaZgLf8pDHiNolg0OLZB1vrW52O/CVxy2FiatUiRvMchvV8ZvzlY4up4Xhxiy80Q4MpPtJyu34X5qn+cVSgvHD80F+t8fxyzPri2xvfUvJtg== 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=ZIEbC7g8lOSHh5MyQ2MZmQJO876Qp/vUECAcxOaWqQpUx4dZQnQAgQ4fIc5lqH9CQhzx778wEzM5Joma35xHcQOU6ivXLgW7IH4rYinACwpFSBwnuEnm2Y8dHPFmzQybpprW4PHChBptD8nOi/w1YPWpJ2STSVrGjtUjvzZDE4+yaHv60n18n+cz4HQrpWCSpU5gVQUtskK7qq8h1GM2bJFAiIGLqQNaGh543GPQnZjKyOtsryRQIq/Jlw6Z9J8bKYtVFarv9W8b+U/SScFpdxHlEAhGDfVUBnY2B1eGiuzZqs4q5n1pPERq3H7I0vyY1ySV88uRv9jZlM10N2hlmw== 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=JxGOjv1ITAbL29lAjw27/Ui7ubt8kDdBUv+97NE3DaNlHT+WPvTROPpfdIAIzKEGD72nbYq06g/W/xdTAxTco7CZxAB1T66JFLw/h+eq3zG8g/hnMWfYE1lHrtVV63Moao2guNpSWMe6b8uNoEAzQL9EpiNjx1KrXlxDnONEGCoBD4V2qO2gHUZNq9jOBN2Cwqk2q9dFhA0BgdL9+lVugPP+774cW0JjNVvrwFElKy1kp5EcOGrEacgnEdyqzJNZftTp3nPooQLC+e3gtzcqbtulk5XecUKLgUHrWNyZmAvDrxWdCST3ICfWzmagv45Ae5RA0PyaSM3OoHcRJffQ+g== 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 DU4PR04MB10500.eurprd04.prod.outlook.com (2603:10a6:10:55e::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.16; Mon, 3 Nov 2025 15:32:52 +0000 Received: from GV1PR04MB9135.eurprd04.prod.outlook.com ([fe80::b1f6:475e:de5d:8442]) by GV1PR04MB9135.eurprd04.prod.outlook.com ([fe80::b1f6:475e:de5d:8442%7]) with mapi id 15.20.9275.015; Mon, 3 Nov 2025 15:32:52 +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 , Frank Li , devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH v6 8/9] arm64: dts: imx943-evk: Add display support using IT6263 Date: Mon, 3 Nov 2025 15:30:52 +0000 Message-ID: <20251103-dcif-upstreaming-v6-8-76fcecfda919@oss.nxp.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20251103-dcif-upstreaming-v6-0-76fcecfda919@oss.nxp.com> References: <20251103-dcif-upstreaming-v6-0-76fcecfda919@oss.nxp.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AS4P195CA0038.EURP195.PROD.OUTLOOK.COM (2603:10a6:20b:65a::21) 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_|DU4PR04MB10500:EE_ X-MS-Office365-Filtering-Correlation-Id: a609a813-238c-4554-881d-08de1aee4093 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|7416014|376014|1800799024; X-Microsoft-Antispam-Message-Info: =?utf-8?B?cnFMbVRrdVNxVEttV1B5UjFnR3ovN1lJSHpTS2NSN1Yyc3NDQkdiYVliUEZE?= =?utf-8?B?bE9zZ3pkbFk1d0xHb0xZSjRxL1VTdGdleWpJQlZ2bWNZMVVYTXJZQVZ0WWpG?= =?utf-8?B?TmpBSm80M01zT08zOEo1bVZacmFlUDN4NnljVStya2VobFcySFR0cFVUT3FB?= =?utf-8?B?RXB4dXNDT0E4QjB1b2I5Y1dhaGxEVk5HOTZaajB6YUtDcmxMYnFjek5hSGlT?= =?utf-8?B?TTFyQWFRdThhUnpJOFVXUlVJN1FSZ0Q3ckp5OTlzbUZ0RlR3dTdpc1FxaEEv?= =?utf-8?B?c3VrWHhYeC96TFpQdC9RVDNMa0hCWnMreklvZFVBNTcwMnhOTzJkWTRIK1Zz?= =?utf-8?B?UzNEeDJyQnUwbU55R2MySW9wTy9XeEVmR2JlNEJmNkdhT0dUbmx4ZHlreXVO?= =?utf-8?B?SEFqd3lObmxYNGU5Z1pOOXk3UGIxR01jYXFUKzMwcHJxL1FTLys4cytKM0pW?= =?utf-8?B?ZjcrK2VUNDY3eUYrSVpDcXlmNXVaeFVvSmcwd1I1VEhBbkpoU3hHQnlSYm04?= =?utf-8?B?dVdqdEYwRlhkSHlWc2ZoMXJBWVRwZFRRNWNITGlFV3hxM0NzWEdEZHNPNUh2?= =?utf-8?B?bnRzVDRzU0N3cTFwN003bWgyUjNXRy8xS0FjVElGTFZxOWVOU2RGSzRBU2RH?= =?utf-8?B?Ly9MQnM5alRhZGlXeUtJSXMzdmlLY21yYXZ2TDFGUnJ5S0NGb1Z6aE1yREZW?= =?utf-8?B?ck5qK1p0NHdFemU2c3IvdXZJNDA4UDN0OEY0YzFONFljeGtSd1l5TzRTdmdr?= =?utf-8?B?QXk0Qm9GT2FTUUYxSkxrbmNheW9YSnQ1aXlybWJwNVpUMkdUS0c4blhwMXpY?= =?utf-8?B?eDM4ZEJPUU5QZENKMjNTQ0lBYkM0M0NXOHBHM1NlU0dmOURoS0JUWHNFbGZp?= =?utf-8?B?dmJYMmZBN1Btc242MUQzM0ZvaHhielhUM3kweXJucjZYWGZKKzFubzZwZ1BO?= =?utf-8?B?TlhRRE9CMXJBL1o4bTRFc24vK01lbUxtT3dGZWNaVTZ4amxBY0d1TStSQkdi?= =?utf-8?B?blMvWHFiVGR2YW15dHJjUWJOdTI4T28va3IwbEpQWWVtaG1Mb2x6c3NRczRy?= =?utf-8?B?L1hEdnl5eHBXQVl4eDVGakFGS09aZ0I2VTBGSTYwRnVwSHp3UTA1ZzdGdjly?= =?utf-8?B?emZ1ZG5WLzZ5bEE0RHU2dmx6VnpLL0NpczE2QmVhVUR2U2FtWEtQc2hqT29i?= =?utf-8?B?dFI5TC9xd3hxWTYvOEFVVjkwN3o3RWxQZ0l3bTUzK0dZaG9sZ1Q4N3ZZVWZ3?= =?utf-8?B?ajZuMXpUeGl1bm4yRFpBWjdVcFFqYml2S0Y3bGJ3TWhlSXE1RW5tOXFScy9j?= =?utf-8?B?MXh1dDVFMksvaWlVL0pSanRWVFFYZHIzQzdtN1FGdFRZOW0zbldGWTV0Y0dN?= =?utf-8?B?ZzBEdzZYSXErVy95Ung4bGNVdHI5R2hSU0lqQ3pCYjNZL1Nua1d2TENld3FU?= =?utf-8?B?emJuc2llZ0kyOHFwSTBWSkZZOTA3d1RaeFdNZldyU3llNjZWRWUvZ0lOTU55?= =?utf-8?B?aEhNSkRrYlJhMDRoTG15ZjgyZXRxWE16UWdlNnh0NHByek5tWkZBQjBZV2g0?= =?utf-8?B?bjMvYTVpL3Naajl2Lys1RnVsMFRHL25Bd0hjQTI5ZThYSmJQTjVQUDFpY2h0?= =?utf-8?B?MElmR3NIc3h5dE53aFpVTjlaYjA5TlVjdlppTUwzcDVsVHRHcmlEK2RIVEdM?= =?utf-8?B?RENYS3ZPNmhNbWYwaEUxbEtydVV5TTVWSUwxQ0xGd0dBSC9MbVc2clkrTkFh?= =?utf-8?B?TGNrKzZNSklaODJER1dQWGo2MWRtd3JEeXpoNXlOUmU1VTh1UVkydk9HV1Zq?= =?utf-8?B?ekVGWjh0dk5DTk1yVUpMUkVxMEsyaXJGT0N0dmN3NVpodUJ1NElxMVk0bktR?= =?utf-8?B?TUVMNXlKaU9BdmV1Uld0eTVtZzY2UWswOEZ2VzJNRDZlK0VWMVZuVFJ2U2Nk?= =?utf-8?Q?nNgXeE9adpM4hq+9yjyqJXYVArH6U3gZ?= 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)(7416014)(376014)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?TFM0M1M3MkthRHhOOUE5S0FpMGhqMDhIYVZmRzlBeEdYcWJHeGplQTVzait4?= =?utf-8?B?ZkRUS2ExNzk5aXpPNklEMzFvcDhXMFVPaG5wNUREZzc5QjJtT3VDSkxIRSta?= =?utf-8?B?U0NaODRPTDE1cjdQbk5YaGg1RU9vemtNS3YvRlVJK3Y1SFhrTVZSV3ZwVFJW?= =?utf-8?B?ZUVOQ1dnZkYrVXVvNlV0b1FQUWdaanFWcDE1eW9NVy9FZzFDbHdVWHBtcnlS?= =?utf-8?B?TUZWemt3ajhKRjlsTGZRdEZPbUlGZmZ0UDJSVjd6dGFNeFRqVzZabVk0ZUJx?= =?utf-8?B?bXh1STZLRmNaeVdPNUpLRnk1TTFscTFTbFhDSDRRSDZ1TmNJalVhWmdkZnQ0?= =?utf-8?B?RHZjWmY2OGVWcXBoK0M3cWpOendGRzdVd2txN1FBbzI1K3pjRy9tYnBURWN0?= =?utf-8?B?YlN3Mkdad1dkNFNNYWVPdEhQdmtIaXN5UzZJclF5cjVIZHFGRDk3YUNRSFpq?= =?utf-8?B?Zk83ME9YK1ZHT0k0azdTSGZOVU1scU5tSmpkTUtTeUorakl3czNxZThhYTBE?= =?utf-8?B?L0x6SGQ3QU9wV0ZYZUhTc3BBOUhqUDNEdzRvMm9PY1NHcG52eDNjQ1U5ekxv?= =?utf-8?B?NUJpWVZUczc2L1k1T0JSaHdaYlhHWWJtdlJ2eWtZZ3lrTnAwOXBnUmtaajN6?= =?utf-8?B?dk53aFZMWGQvR3ZqTlhFb1F1R0MvSXIvMEtDTUFvMTNOMThaMHJqcmNqRm1S?= =?utf-8?B?aUZWRVVZdzNVd2pObDRobm42VEhvQjByaC9TRUpBOXJIam92eGRiT1BLSmtT?= =?utf-8?B?N240bmgvYmNVdXJteU9qY0tRNFpYRU11SkMySnYxT00wOXdvOEZyekppUk5S?= =?utf-8?B?VmErUjVyeHVqWElLL3BrNUZvUGgxQWdlYWdUQW96Y1liR1lFOXk0MXRpUFpJ?= =?utf-8?B?RkFVY2NGWHZ3aUxYUUY0VjZCS3Y4eUd6c050M0hWd2hENXpJUWNCNGh4dk1L?= =?utf-8?B?M05EUU9zMmRpK0hPUnpXT1VEZG95Z0JyL2xHUjFQY1RpS3lUZS9Ca0F5c1hH?= =?utf-8?B?WUYyT1Ric1ZDZDVCN2t5V1NrWk83dVpFZG82UHJ2VFVWQXZmOVlyRnl5b053?= =?utf-8?B?djJhcHB6bmdpM2VKZ0ZTWFQrK0JGYlpBekdYend4YTdjOFAwQjhmd2Q3Y0Jl?= =?utf-8?B?SlNsWm9WdVZRK2d4aWMxQUF0M0NTN1BOalptM2k0Vnl6cEVGRVRaQWhRYnNn?= =?utf-8?B?bGI5c3BWNnptVmQ5cDRrSURtc3NqdWswTUFjUUFETjg3b05OcDVtNWJRbE9U?= =?utf-8?B?ai9LQzFUNzRaTVZ4ODVCRCtyMFI5clJpZU5TNGI4SVhjYTQwczNvK2dJZ2pk?= =?utf-8?B?cDRpWko1UDlNeCt6eFF4dmtGeDM4UDczVjI5ckZ0WS9taTJmOHg0MjdqekVo?= =?utf-8?B?WTRlRWFCVmlXQTlVZDJyek5vTWVkOVNSTlM0QUhrVmZtZVZwaWFuZERoU2Zz?= =?utf-8?B?TjFNK0FpU084YWlkWFBQTTdYWTl1WXRtQmllWFZOa24vR1U1S0lWUlhSVFJC?= =?utf-8?B?ZEYzSk5CWEFrdHBXdllHVWRKaEI1K3V5TEpxb2pPWE9DL01lQTFzaE9Qa2hO?= =?utf-8?B?TXJUWEMzSDdrQk5PdGl4N3dydFd2MThZWjhmaFUzbE1ramZpUGpUalM3aEVI?= =?utf-8?B?QjZhUURWUk0yVC96T2ZNcmorTW1yU0NJQU9nV0tybVhlM2c4d3VKVVVzcUJX?= =?utf-8?B?M1kxOTYvaWpMRjVOSno5OEdEM3VEeU9CUGF1NC8zMjRJYTNyL3ZZUGtyb0Mz?= =?utf-8?B?UnZMSEE0YlBVblp4YjZhenZyQ3owYVlMWTd0bVliMFBWRWRZRHgzWk1PS1hN?= =?utf-8?B?Vnl4Vmk2RXczakxlWEhkWjBydW1ma2VKWlpIaTEvNDQzTG02cFQ1TDl6Q1pC?= =?utf-8?B?QUxBK09NVm1lTGFUekFUZ3krTHU0eHdiR3hNNVFEbmpYUXZyMDNKeVM2SzJk?= =?utf-8?B?RzlEZ1ZoaDdlVCt6MmxtRUJGN0NFU1VCRkZ6UFpSWG9qcm9NYmNPUkNPbVZr?= =?utf-8?B?cDFsYS92NElTbGp2YkJha2t6c1hQRTA0VS9XMHJ3RDBuaTNtdWgxb0thTG5n?= =?utf-8?B?d2lNUWNkb012NVd2ODJ6V2NDUE4xMWo0dHd6aWQyT3ZLZHFPOGdla2o5NUZo?= =?utf-8?B?OFZmT3VvSFdHU2c0cGFRNnFQQkFUa0xuRlZCV1h3L2lJcGJFNndBZ3ZGekZ0?= =?utf-8?B?eFE9PQ==?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: a609a813-238c-4554-881d-08de1aee4093 X-MS-Exchange-CrossTenant-AuthSource: GV1PR04MB9135.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Nov 2025 15:32:52.4261 (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: jSe3VjYDrIDa4bHm5kMZ7GXB57L8E+/C55Es9kvR5E4qwYF0dRJkBVy1483tBG0xBdT3wAx919GT6pKaQ6SKUw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU4PR04MB10500 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 Tue Dec 16 05:53:29 2025 Received: from OSPPR02CU001.outbound.protection.outlook.com (mail-norwayeastazon11013067.outbound.protection.outlook.com [40.107.159.67]) (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 E30433203B6 for ; Mon, 3 Nov 2025 15:33:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.159.67 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762183982; cv=fail; b=KWmQlSsNu4ROE80Ruy0X2dkJ7tk6/L/B8fzc5+Ky3ISeTrmCt/24uSRaHIxnSk1Jv6CeJQOwJI+wsyEcLXO07cTEj38ZXeAUn70YeqwvLcJWyEdhqzYv9tZ+t0qI8K4uFLP2AhUb93+x9l6Q2ofhUhr/heC1h+1fJ85kTZKTqY8= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762183982; c=relaxed/simple; bh=kfZKJz5ibHnghym8AIujBoOsAnXGBBdgiGJoH/QmU0I=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=D5du2rUhO+Vgrai6f/JseaIeQgktyl2zBkOBYL14mJvg2RhGO5iOT5g9maujgiYGbF5NM+sdJLwSlEDaf916eCEZfD6NNuXSh2XPecwYxHISWtFCcL5FZ/huT+gpk2MPTYnmxPW2qgWZOcTZ+A4be6tqJxTfDeIvIjGzk1Kycx8= 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=dWdyC9QN; arc=fail smtp.client-ip=40.107.159.67 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="dWdyC9QN" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=TyXRXSHnE1GE19lLu1yxeCzfCempEQG0Ahi+KhGp7fN+7s/OemHefkSVC9mli8xKaRqyXgRl7+x2A9yDc2orzznNQ9Jh8he/qnE1AUgE2tqU5NcSNlHDqqIApLkocqdutNADPjYRZ/sD8elz2Oc5dkIe7m22RfTeaXlZl7qFRXOzTL2NH3X5RS69gc+nIJS4zAqqqjyx7MoAjU/axBE2N5xJf+d8FmZ6NoovwIcqpyW7xU/w+O59nGotXy+i6PLu+ndrXCUuume6ZO562mL84feMc12OMkdA5BUVsUGiHBU4vQ0NRRkpv3ocjjA74f75SIrMpSMfRnmw3NM7TejBzA== 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=vgP26udAd2fHCh3OkTxE7AQXDUuf5RWh2ltggmW6hR4=; b=nNtKl0/qoW7LNbF2cb/A8PuPBDHAMXDVQxi0APdg3YgHxDCqupQyo0QmQgr1+3/UOnx9YYn0fPxeH4xPJ+OH28arixQYwY7WHo/E+eOEmwAlymHFMCHNPnSJUhtcbSdHJAJUF9MWr8XG2jSCOYEJG6/x5JcOd6EEjC027a0Xr7URKrNIYAsviUpf3Nd+BTZDesEBrAP5X6enRiOo8PNzyag+R+6OAz3ZgYk6Iu5KKJfUTlQdrE/NsbCcAV1aICtT5ftPmZ3EPAHp/PKjGucAyq17uuVg9j/nfnJ4Jqx7THZ8ol1FI8ebHzTYsTW4g0853b9CZD6pa+gyrzbLK/oFmQ== 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=vgP26udAd2fHCh3OkTxE7AQXDUuf5RWh2ltggmW6hR4=; b=dWdyC9QNINsXpDd9meUePmdZZRemJS8mGuuo6vNiI7lNAiJELZ04r0CaFN1I6UOmeuy2dH/drxiRzUZV/q77PyctYQ+nzUwJRe4tiVI/fTsWbAlhkBhUH9P+MmtM4CGy0CovCU5zy+M1yEkuLcybO7WyHWCAMf7InjioFnNWldO7ifLDx/hGvEkRRvXGzVHD9TIIi3D56wjBz4+qmX40EUsyBtswXWW3oTLx18KpFEI3W3HvFk3qeBE6EEKXyDDlCuUv8Afy3eBP7txnmySCODDpREcbsj42GCK6rBPnjWhE2qmWYeDSil2WkQT5RDgPByeov9eGd/jsy5nd29KuFw== 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 DU4PR04MB10500.eurprd04.prod.outlook.com (2603:10a6:10:55e::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.16; Mon, 3 Nov 2025 15:32:55 +0000 Received: from GV1PR04MB9135.eurprd04.prod.outlook.com ([fe80::b1f6:475e:de5d:8442]) by GV1PR04MB9135.eurprd04.prod.outlook.com ([fe80::b1f6:475e:de5d:8442%7]) with mapi id 15.20.9275.015; Mon, 3 Nov 2025 15:32:55 +0000 From: Laurentiu Palcu To: imx@lists.linux.dev Cc: dri-devel@lists.freedesktop.org, Laurentiu Palcu , Frank Li , linux-kernel@vger.kernel.org Subject: [PATCH v6 9/9] MAINTAINERS: Add entry for i.MX94 DCIF driver Date: Mon, 3 Nov 2025 15:30:53 +0000 Message-ID: <20251103-dcif-upstreaming-v6-9-76fcecfda919@oss.nxp.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20251103-dcif-upstreaming-v6-0-76fcecfda919@oss.nxp.com> References: <20251103-dcif-upstreaming-v6-0-76fcecfda919@oss.nxp.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AM8P191CA0025.EURP191.PROD.OUTLOOK.COM (2603:10a6:20b:21a::30) 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_|DU4PR04MB10500:EE_ X-MS-Office365-Filtering-Correlation-Id: a1b06b0a-e38f-4e97-231f-08de1aee4238 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|7053199007; X-Microsoft-Antispam-Message-Info: =?utf-8?B?R3JJSHpxT0V2SG1HTkZvc3pWYm9lNTFVMTJ4eGpOSFNkaXI2MWJZa1JnUkJx?= =?utf-8?B?UFU5R3dhbllSN2YzRkEybEdINFRqQVRPOG1GdzBtWTA2L2NYVG9TTjRpK0Zs?= =?utf-8?B?MGZvdS93RGpTZFJrc1RtVkE2ejROVFQ2QmFjTHRjSWFtazFWZjh0TnZwb0xs?= =?utf-8?B?TnFHSFRBbHIzTlZ5VTlFVkxCeW0zL1Y0N3FJSnhORFdFSnRGNXlaLzNmOFFr?= =?utf-8?B?TXpvQ2FhM3YzUlBPc2FNN3EvbE5PWml6N1FEaTIzVUpucHEweEl6WUdyc3li?= =?utf-8?B?QVJtTGJtRC9LSk95SCsxOUFhZzZTRFNrV3dHbFJ2OE52aGNVMUV1RUd5WFZL?= =?utf-8?B?RC8rWnNaTTFkYWRSYURIVVBxZ3g0bkdCdHAwRUh2OEFZN2lvZllpNFUvZ3pD?= =?utf-8?B?aG1LTnBPaERlTGFWVVJDazRxWWkyR25jcUhqN3UxZGMzK1JLcWJaWmhuQ2Jx?= =?utf-8?B?SUlMWnRGL3hEK1g0b3pGMXdYZnNNZEF0RFhHUEI2RkNJSTJxcVZ0RmRkbFcv?= =?utf-8?B?YU1IQTFQVkJsTUREajZMTk1aM3R4WjFLMkJqVC9Ld1I3ZTNOdm11dkNNeTY0?= =?utf-8?B?SUZRdDUrTTA0OWh3S201dTBzNzVSZWFHbTkxVjQ0ZWJUQjhuVTFXZ3BxVVM5?= =?utf-8?B?WjdIeVNnbkRCYk9neDEyNzVjcjBidEZWTDJnbVErYjEyNEU2bGFCMFc1dUdE?= =?utf-8?B?Z1JVY1BRaFltRHVtc1hRN3lFRTdzTFRmTXhQUjB4b0xSb0RHODNuSkpMZEVl?= =?utf-8?B?QUdTTkZsNEJZWTNYdXA2ZWc0RXlPcnkvSFlTSFdWWkZtTUkyUmlRVWtnekkx?= =?utf-8?B?ck02WXNVckdjYkNSTTh5YTU2d2pucUU5dGgwYXRTN283amxKREg0aGRxQ0sx?= =?utf-8?B?UUE0OWdlSE4zOUtjSW1VQytQN3BBek9hdVdFNURlcmYxMmppOEhHREJET3ov?= =?utf-8?B?Y1hIL1N2dnZlZ1Jyd2E4dmVGTmVxWVVPUWcyRVR3Ni9IR1VMQldMVm5kSEVt?= =?utf-8?B?M1NCZzRhaU9UZ3lGVUI1bXhhVlhQNmY3elI2Zml6Q1VnNEZSUEduN3cvdTZM?= =?utf-8?B?UFYzUUdpWFJuY2F3OUNuQmwwMzZ4RmVKRGt6UzFFQzN1T2dwL3FIY1AwZVc0?= =?utf-8?B?emxDbXJVaWJocVBKcjFGTnN4UDhrenpHSDNva2tYTVlBZUhFeEsyRmw0Ynps?= =?utf-8?B?S0hQZkVTTTVVVFdKTk0wWGNPRmFRaGZYeWdrMWZJc0dOZXg0OGdlT2xxMnNa?= =?utf-8?B?MlJNYzNiWmVBdWxBNGFCeGxiVkp2eFZ2bEU2QVhiV2pBZ0lHd1BtMzcvdE9O?= =?utf-8?B?c2pTZGFhMTR3UVg3VHFKSjlFaFM4R2c0eFNCamJmbGJ4VXU5c1pPMUc0RDBa?= =?utf-8?B?c2lwVlBNSzg0bXVLLy9mY3pJcE01empTL0lhQ2NBajJTN2RPMUkyelNjSjAw?= =?utf-8?B?TERnZ1ZQRkUycVUxVHRHRlptaElFR3hqR3NtRjlIRWJCSng3TzZGQTZ0Q0o2?= =?utf-8?B?bFJ4b1ExWjNkdEViRVF2RkJIUU5BeGhEaDhoQUxOQ0hkaWdsUG52TS9JV3Rk?= =?utf-8?B?d201UElIdnVDMEVQRVBTb01wZXc0WnNuNk9CdnhCUWpUbUlHYTFIV0trWjRC?= =?utf-8?B?NDVBQzVYQWtaejJnMkVGaTFEWk5nZjVLNXhYSWNoMGNmM1BhRXBBZnpQaHVp?= =?utf-8?B?Mm1iTXdibWJjR3UzU0tJK0ZSL1BJNUp6VDQydmdBWXlsWldZWDFUOGQrbmdN?= =?utf-8?B?UEJvV0UvNnB0eDhyd2JCb2hVZGV0M2pnc0QyVUdzcWY3Ti82WXRoT0tYNXR3?= =?utf-8?B?aFFBVVc0TEt2QVh1VHBZcEczaU5aUFBOR3ErN0RMd2d6UXV2SzAzTHozRFpk?= =?utf-8?B?cWM4ME16R3E0SGdPVDMrdEhnZ3ZaY1pFK1BDamxlQmYwR0E9PQ==?= 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)(7053199007);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?SkZaWi8wZ0Q2by9iQnBLekNlSXc3emVScTJiVHp0b0xGY09CQ0NEOElaWmVz?= =?utf-8?B?cFhZTi9rdnhXa0lsb2FZNGtrVHhiaVFFY200dTA0aHU4M2UwR0hMb3VQeTg5?= =?utf-8?B?cDlGV1BIQWNqMmtqNnFWUUIrNnZMYW56b29FYVNzaHJsd3NVcXZxb09vNWho?= =?utf-8?B?UHhJK09WbG4vMjVOMExFL1RGNlJzMWNiOEJ6K3ZxWS9CTnhWaGdua3hQV2xz?= =?utf-8?B?bHpIcjI4U2FaTU5jbWZscERURUMzUk10UHRXcFNpYXUzZXErd1hyZTJjdi9S?= =?utf-8?B?aVFKeitHblZabXNHUWh0ZnJMcmFsKzBBSTIvVW9rUXNaS0xteFh3WklGYVQz?= =?utf-8?B?ZFlqeXpoVDRUSVdMYU1vcktIQzlvZFRUOTlCQnAxbVRiNkJaVzc3Yis0cTBs?= =?utf-8?B?czNhNTlyY3J3ZVA4d1ZXd0I3TWV3dDJwY0xla1dvQjZUcCtsY2JvUTdZZUI1?= =?utf-8?B?MmtqOHZIanROUFIwNVhFK0d0RGdmMWFFamkrazh3UWQ1T1RxSDBpY21Qd0F5?= =?utf-8?B?bmJrNDFVcWRyTVlsNnM1MERHbmF5TUdLMkxWK1l6eC9ZQXJwL3Z2WC8yd3Jo?= =?utf-8?B?MGZuSlRzNDQ4N3hncWM5aThWblBjZkF6TXRrQlBCT1I2dEFLUXV1MTVVd3NN?= =?utf-8?B?MEpVdnpjK3FadUUrbStQTGdxaVpLT0FXQkhDTThFQWRmS2hCWXJSRFI2aml4?= =?utf-8?B?OWsza2dtY3lnVFFtU3NjaGNBTXVvd1NYb003WCs3RDlIaFRPWmZ1blh1RG1w?= =?utf-8?B?K21RLzlod1dmN01qRFZCNWtaamlFUXgyVys5N0pTZkpxZ0xUcGVPc0FLWVQz?= =?utf-8?B?bDMwZGQzMW9YdXcxSlJlZmhYc0RwT0IyVW1waWVyMGVGbS9IUktMcnhUT3RT?= =?utf-8?B?ZmViVlh5c2szTTF3dFZ0QVZhYkRpOGZWbXFPUHFtbzJnQ05TRXBtLzhhN1Nl?= =?utf-8?B?VkdMUFFueUp3NjdUWW9pNHhaaGRSRnY3aEJCYnJraHBqcGxObUkxR3VVQlUw?= =?utf-8?B?QWxROWI3OVZWUCs4VlZsTlNCMWhuYjEvSHgrMUNEZHJUZ0xVRkdjSEJJRVJB?= =?utf-8?B?cE9RVlU1aGkzLytzMm0xazVuMmJJcnQyNGFocUl3Q3cvcTdrSk9YMGV4dStT?= =?utf-8?B?Tmdpd3Yway9RS21GWGNaajNMSndwaE5hMlpKRnhpSWIvZXRQSmx5eThEeTZW?= =?utf-8?B?OFpCbXFFck1xbjF2L1Qvek9uSDErWHRFNWw5c0ZzSG9XNmhYalBaa1FYTnBK?= =?utf-8?B?OU9wSUtPSkoraXpHNGxRcFlVb2JrbFlYWGZtNzY1VXI4Z1Z0VHVkTU81SHdz?= =?utf-8?B?Yk5GU3pOZEZKNDNYK1MrSk1oNE1UOS93dmNJNGE3YmRGejltK1F2ZU41WVJE?= =?utf-8?B?RWRXd0dpWlhCL3F5MUliZVZveGFJNlB4L29xUjRsa2xFK1E3S014N1VySGVi?= =?utf-8?B?MkpHZFRxVnFVWmREY1J3S3pIQlJPMFNkTENacGJWME55b3RZanJJby9aS2tv?= =?utf-8?B?SXZIa2U4cDZ2ZEZLTlBOUm9SNi8waHltTERPYVFWdkNscmx1MWZ5SUZTZlh2?= =?utf-8?B?OGFGeTE2TWV3bkFUcENtQnM3dUMzVTY0eGIxZmlJV01hRkJEVmp6L2FxeVdZ?= =?utf-8?B?SmRlSnVZdDFiYlRIbFZ1Um1EdW9ibDhCQXRZdThHTTZWOUx1UUh2bE90ZWlX?= =?utf-8?B?S3g2K0hrcGxjR0dEN045c2NMQUk3UlNrR1FwT1pFYVNNUUQwcEpranlFU2pH?= =?utf-8?B?U2JTMTFCTTF5cHUyUmRQNC9pZy9QTjB4bzIrek8wNUtXczAvSVBQRHp3N0hn?= =?utf-8?B?NDVsd3Zjakx0L0twN0VJVC9FWDBZNG5OTWFJczU4THBJditOUlZ1OVllbElM?= =?utf-8?B?aXhYb2R0YzZCWmZJcVJlek02RHk3Rmh3ZGljdGE4MnFCVjVTT2xFcHIzMzNu?= =?utf-8?B?S2t0d0N5SWZUZTI0N2I2eVpzQWNReERoMVN5bWRLWk84bWNJSVJtQzQyQ3B2?= =?utf-8?B?WUYrZnNLWkJ0aFNSU1N1L2cwSm9uQW1wWDR5MzZseW5iR3o2OU0ySUVtZW9x?= =?utf-8?B?L0R0VnJEUEtsTVZJN250NG9JTEVRUnJRcTBvcjkzWVdVRTcxQS9SK1o5dlJE?= =?utf-8?B?Tnk5Qml5YTNFZzZMcHAycVBib1VFTHRWb2wrbkNpNVlEYllrbElrUWg5ZXU1?= =?utf-8?B?c1E9PQ==?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: a1b06b0a-e38f-4e97-231f-08de1aee4238 X-MS-Exchange-CrossTenant-AuthSource: GV1PR04MB9135.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Nov 2025 15:32:55.0390 (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: 5Re1f+PZ2//Ybt0UHtmx4vUVkUX+dcO4fJVX5WOOp07GFZe/RX5viCF7CS7iflHROC8nFiT6mBj4vyX2suE0CA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU4PR04MB10500 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 38383f9d8a31e28c64447032d1052827dd5d3ea5..ba16eebd0da223509aaee6bb600= 70c62bc508a09 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -18693,6 +18693,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