{"id":2196337,"url":"http://patchwork.ozlabs.org/api/1.0/patches/2196337/?format=json","project":{"id":18,"url":"http://patchwork.ozlabs.org/api/1.0/projects/18/?format=json","name":"U-Boot","link_name":"uboot","list_id":"u-boot.lists.denx.de","list_email":"u-boot@lists.denx.de","web_url":null,"scm_url":null,"webscm_url":null},"msgid":"<20260213084956.1031000-4-brian.ruley@gehealthcare.com>","date":"2026-02-13T08:49:52","name":"[v3,3/6] clk: imx6q: add ipu and ldb clocks and dependencies","commit_ref":null,"pull_url":null,"state":"accepted","archived":false,"hash":"563e835ad66e90009306634cc3a60ec42cdb54f5","submitter":{"id":89422,"url":"http://patchwork.ozlabs.org/api/1.0/people/89422/?format=json","name":"Brian Ruley","email":"brian.ruley@gehealthcare.com"},"delegate":{"id":151988,"url":"http://patchwork.ozlabs.org/api/1.0/users/151988/?format=json","username":"festevam","first_name":"Fabio","last_name":"Estevam","email":"festevam@gmail.com"},"mbox":"http://patchwork.ozlabs.org/project/uboot/patch/20260213084956.1031000-4-brian.ruley@gehealthcare.com/mbox/","series":[{"id":492095,"url":"http://patchwork.ozlabs.org/api/1.0/series/492095/?format=json","date":"2026-02-13T08:49:49","name":"Enable the IPUv3 driver to use CCF","version":3,"mbox":"http://patchwork.ozlabs.org/series/492095/mbox/"}],"check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/2196337/checks/","tags":{},"headers":{"Return-Path":"<u-boot-bounces@lists.denx.de>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=gehealthcare.com header.i=@gehealthcare.com\n header.a=rsa-sha256 header.s=selector1 header.b=S2nIq6rt;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de\n (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de;\n envelope-from=u-boot-bounces@lists.denx.de; receiver=patchwork.ozlabs.org)","phobos.denx.de;\n dmarc=pass (p=quarantine dis=none) header.from=gehealthcare.com","phobos.denx.de;\n spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de","phobos.denx.de;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=gehealthcare.com header.i=@gehealthcare.com\n header.b=\"S2nIq6rt\";\n\tdkim-atps=neutral","phobos.denx.de; dmarc=pass (p=quarantine dis=none)\n header.from=gehealthcare.com","phobos.denx.de;\n spf=pass smtp.mailfrom=Brian.Ruley@gehealthcare.com"],"Received":["from phobos.denx.de (phobos.denx.de\n [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fCCZb5Tttz1xpl\n\tfor <incoming@patchwork.ozlabs.org>; Sat, 14 Feb 2026 00:24:55 +1100 (AEDT)","from h2850616.stratoserver.net (localhost [IPv6:::1])\n\tby phobos.denx.de (Postfix) with ESMTP id 0A57A83DFF;\n\tFri, 13 Feb 2026 14:24:12 +0100 (CET)","by phobos.denx.de (Postfix, from userid 109)\n id 1A8EC83B9D; Fri, 13 Feb 2026 09:50:15 +0100 (CET)","from BL2PR02CU003.outbound.protection.outlook.com\n (mail-eastusazlp17011000f.outbound.protection.outlook.com\n [IPv6:2a01:111:f403:c100::f])\n (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits))\n (No client certificate requested)\n by phobos.denx.de (Postfix) with ESMTPS id 80F8D83DBF\n for <u-boot@lists.denx.de>; Fri, 13 Feb 2026 09:50:12 +0100 (CET)","from CH0PR03CA0050.namprd03.prod.outlook.com (2603:10b6:610:b3::25)\n by PH3PPF44669FFFD.namprd22.prod.outlook.com (2603:10b6:518:1::69c)\n with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9611.12; Fri, 13 Feb\n 2026 08:50:06 +0000","from CH1PEPF0000A34C.namprd04.prod.outlook.com\n (2603:10b6:610:b3:cafe::36) by CH0PR03CA0050.outlook.office365.com\n (2603:10b6:610:b3::25) with Microsoft SMTP Server (version=TLS1_3,\n cipher=TLS_AES_256_GCM_SHA384) id 15.20.9587.15 via Frontend Transport; Fri,\n 13 Feb 2026 08:50:06 +0000","from mkerelay2.compute.ge-healthcare.net (165.85.157.49) by\n CH1PEPF0000A34C.mail.protection.outlook.com (10.167.244.6) with Microsoft\n SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n 15.20.9611.8 via Frontend Transport; Fri, 13 Feb 2026 08:50:06 +0000","from zoo11.fihel.lab.ge-healthcare.net\n (zoo11.fihel.lab.ge-healthcare.net [10.168.174.93])\n by builder1.fihel.lab.ge-healthcare.net (Postfix) with ESMTP id 8717FFD310;\n Fri, 13 Feb 2026 10:50:03 +0200 (EET)"],"X-Spam-Checker-Version":"SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de","X-Spam-Level":"","X-Spam-Status":"No, score=-1.1 required=5.0 tests=BAYES_00,DKIM_SIGNED,\n DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FORGED_SPF_HELO,\n RCVD_IN_DNSWL_BLOCKED,SPF_HELO_PASS,T_SPF_PERMERROR autolearn=no\n autolearn_force=no version=3.4.2","ARC-Seal":"i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=VFkPqAEAbC6IoArOZdVMxHfRfnVqunotDQLcDRujn+FQd+JsupB0YZe5/d+B+XbRxOEa+w6Heu1YSe8YElJ5qeMz7KE+uRSvf275/zk1dpJtZjxrdqqLm6YXrDRIxb/WNJWSJBNgYMtpcxNoEFfcbk7u+s/OteyFHPWkAl7SJN3+fsAbxAhT9Pn1UYIuZo0c4whvqF+h0AKSXHNRI9+8QkcQ+9jrMY5MX81QAZ7uQJE58/XAqjN8xJxdlEP/9YQIdzYUQicg6NpedUenf3+W1Zi2wTeYgqATIUxoyiZcS0ON50AcbxE9UJnilN0D+06aa0ZVAQC0Cs4fF1uKr4dcRQ==","ARC-Message-Signature":"i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector10001;\n 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;\n bh=BeC2V1tUC8V0M+FHBFAfVAHZAErdJDCtHCwkiAlBmaA=;\n b=OcCJ4P61tjqW9MbNyfaJBrQavK3Jb6CZPXuArUA/FfVJUmCSu4rytwrYTdH+ej2/aAJsDaxTSpM3ljTPkoWeKDuLKejD5GxjJklWFEf6J7+VhERmusGYF7FmESR+hN5DGP1KflpaVeC2m20qQ5njQc5rjCx9ZeppvGusRs4SiiPY1aXAwePkI8r1qIY+IXxmmas2G/1CvJcRJvJsVFgByXEsk+RujlwJoCjov4XDUn2eFsAu5FuFFzLEreyUhecJyFlBVJ37Wnblwxuo+LXsJK2d64oCb4cRmhcL0J4cZ/FI95OA34m0xCU7UPqV58pViHthPFlYAXiKIXHZd36XkA==","ARC-Authentication-Results":"i=1; mx.microsoft.com 1; spf=fail (sender ip is\n 165.85.157.49) smtp.rcpttodomain=lists.denx.de\n smtp.mailfrom=gehealthcare.com; dmarc=fail (p=quarantine sp=quarantine\n pct=100) action=quarantine header.from=gehealthcare.com; dkim=none (message\n not signed); arc=none (0)","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=gehealthcare.com;\n s=selector1;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=BeC2V1tUC8V0M+FHBFAfVAHZAErdJDCtHCwkiAlBmaA=;\n b=S2nIq6rt8nSFuTPidoq2Pna9/5MclDpUSIA+Ty7QvVmRozYPZ8SLpIwV2yfpi0qxEM+HFMpm5XlaeShwa3KbcsdkSZkwjIKPZrVsZfApkweX5jXPx94F+7j4ENw62j64FYqniLx1F1fb+23JOfSJRJAoXJ9U8B6k4zK1BErLySyjjlKM0MvEaMpEBN9thdd8moYDWhY3XZhc1O5w2rbXR0TZTfN0dEyc6LC8jaBBjiUkvrhgLfiokGpW4VPviGdqh2Ob9wTWRzpbZOl7K7hIPgiDwLGAzvV1dA2K+I9Z3sJQKZLD+al9+A8xMrBThMXs8LQLftghSuIqpY+f2HrYvA==","X-MS-Exchange-Authentication-Results":"spf=fail (sender IP is 165.85.157.49)\n smtp.mailfrom=gehealthcare.com; dkim=none (message not signed)\n header.d=none;dmarc=fail action=quarantine header.from=gehealthcare.com;","Received-SPF":"Fail (protection.outlook.com: domain of gehealthcare.com does\n not designate 165.85.157.49 as permitted sender)\n receiver=protection.outlook.com; client-ip=165.85.157.49;\n helo=mkerelay2.compute.ge-healthcare.net;","From":"Brian Ruley <brian.ruley@gehealthcare.com>","To":"u-boot@lists.denx.de, Lukasz Majewski <lukma@denx.de>,\n Tom Rini <trini@konsulko.com>","Cc":"Brian Ruley <brian.ruley@gehealthcare.com>,\n Adam Ford <aford173@gmail.com>,\n Marek Vasut <marex@denx.de>, Peng Fan <peng.fan@nxp.com>,\n Ricardo Simoes <ricardo.simoes@pt.bosch.com>","Subject":"[PATCH v3 3/6] clk: imx6q: add ipu and ldb clocks and dependencies","Date":"Fri, 13 Feb 2026 10:49:52 +0200","Message-Id":"<20260213084956.1031000-4-brian.ruley@gehealthcare.com>","X-Mailer":"git-send-email 2.39.5","In-Reply-To":"<20260213084956.1031000-1-brian.ruley@gehealthcare.com>","References":"<\"aYtUi1WdLPLEnv2X@zoo11.em.health.ge.com\">\n <20260213084956.1031000-1-brian.ruley@gehealthcare.com>","MIME-Version":"1.0","Content-Transfer-Encoding":"8bit","X-EOPAttributedMessage":"0","X-MS-PublicTrafficType":"Email","X-MS-TrafficTypeDiagnostic":"CH1PEPF0000A34C:EE_|PH3PPF44669FFFD:EE_","Content-Type":"text/plain","X-MS-Office365-Filtering-Correlation-Id":"57068064-f743-42be-2e92-08de6adce2c2","X-MS-Exchange-SenderADCheck":"1","X-MS-Exchange-AntiSpam-Relay":"0","X-Microsoft-Antispam":"BCL:0;\n ARA:13230040|376014|82310400026|1800799024|36860700013;","X-Microsoft-Antispam-Message-Info":"\n PdHPaI+5v0Y6bf7i3ZYA38Rqbx80ABIJEXM3cXoR6dGezi5pBmrvqzyvsyS1fwxksWbs9hDIFdoU2AKGr2syG9vO0RUz80uZsmxbARnmYCpc8R77A9LNLmNhpZoaifZbR/8Y9MHI+1koINdE8+rkY+vFvwpYt0XnotYNCzvEjwVA99PS+3tPjK75w/TEsoIxqXmfeMjSCpe5n3WUZnBy9jLjYzFaVNWbVr2syTjtF2vzJxK1pAtMUnpn5+nwG30CgijodtuXja2Q5t+dKRif2OGM+tf/US7yYBcF7fsHjOjzKyrsV8o1/QFju6rNICY5ev5xrb3IodMOCszamxnL0lqG3ezfi/Qfm3QerHXMz1ZPWOdoxkGrPjCIHSsNPxNtE2ruI9tsmqLLyUNgTBTi7cbSezBCjqgp99TbhsplfcntMCB3F9MmGjuHjf5PrTOS3nSH+wfvCyxt+emEYsp8LfqwUdYZCjzV5FZODQFGcCZYmbHDcORIkrenwi2FzgdzDFYcDLz7azMlIYXMweOFfBzRMvmltPNpmcK5l8BRAbFEHkKJr/wAnjc2dn0bB+QLSAJLT1Gz71b2SZ1pGOjT7voAC1CEOs/vqTxRTUfPi91TtX1S0ee4FwEYYgTTa6NEHuCHAJ2blEv9BiRxfTE9bUMueaZcaP5Uqe/Xz+82y7qNK70LTvgGiRYFkSCPUoY0g4t4DWQiEcUEjNNnhCmHL+r++/1KG5qbU2zP1H5K/qUJCbsPeBy86AlWT7aF7H+8zx9DkS3Da7eX2M7A6XZ4eci8Yb4iQnBiPupTYG87Q0pBW5u5ZxiuC/vomT1FAapjopAtCSCyqk0A6rETHrYufP8ezu+htbr7hLOB35LF69Xq3NY7818YB1cmgEt4v907jWrGuW+MDYyHeu3Qy0iVI2ydwQVYHx8gX7r/2RXdxxSrPXH9hlLjrh2Fx75gmBn8Xq5epp2a74/Y8wijj4RZJI9IZyjB9dUTLVGEnV1KxcC6UXEXOIOIKUGiu4jA1MtGZn1GNKFtkaJzcpgqXxf7FmL65QLbELxR8/HE5oo6wMnG/qyU829no/KrjbhGdyVcBsbDKNCEh2Abw983OpUALybB567vVQBUGPbldvMgZd0xqrVrzyjYyeIOJMpr22NuO36zWXTEXxcEaUdsz7U3nGenGFD8+4sONUexcRBJkLH/qskXII0K+A6T4XTPHRgGPuQ0w4dSZGBEcxYLFj6C8f/BGbUYIsRSQcyD+iT4KH10MnU4z7U3Wmf6rEHPbHj4k5PUMBLxh60x3bhi7Fi9lmQX93dhcZfjf5U04Hi7vtJCyQ28MtRGXGaC4wMRJiyD5lLpBNSnYzcsJO3OOmXDYtjWgTGkgWelb7l65h1te2S0rrcOTtPc5Gy913O2dgR1VxMcedpxTOwv0fAy9a1IFfM277dvnQFQQpcw51k1IqTOLEcAG+06il42DOBi4IYsoFaDaf07v/8Y/2g2Hd6+wNG7U8yz2EMmgVM5ACojXlun0vrY+HJfYnLBntgMQRzL0LuqIF1Qq/mgYt86BZ53oMMQffWOxnFJZMItyPhJX12CQeaz/+IRNGg7RF78WFm4eBzktANA6XukIDxZC/CVDLS2AkgGudqoqY2IjVGDKWfrIlSCxlVvA73xj9G2U+m0KnoLFbP1UpFm2S01iOf9Ng==","X-Forefront-Antispam-Report":"CIP:165.85.157.49; CTRY:US; LANG:en; SCL:1; SRV:;\n IPV:NLI; SFV:NSPM; H:mkerelay2.compute.ge-healthcare.net;\n PTR:InfoDomainNonexistent; CAT:NONE;\n SFS:(13230040)(376014)(82310400026)(1800799024)(36860700013); DIR:OUT;\n SFP:1101;","X-MS-Exchange-AntiSpam-MessageData-ChunkCount":"1","X-MS-Exchange-AntiSpam-MessageData-0":"\n MxEZgLNAJ6BntE3EE7DjjfUgtQ7SURXjyozY8IsqzusKexodHgKGynd/dOKnyDirJMYhpPI7v6f6dATM7v+scughr7x1lZi9IFX1kymjny6Lb7LYY5otoWZ2MEFAIs7orUvvW01Rs14pVgZP40OI67M5VEx2+9ofPA3uA6Vk0bmguIEHks3Mr5a3OHkeTz4kHcJ5liCbenAqbMA5t4E/k+8W47LTblZqw45PIflKOR2ySNiKE7BsHyTG9sRlBaDsqI/MEacJz1RN5pzuYpukdpRui0Ux9wCuVrAMb8sZkvkWJ6Eu9PgiHwr2UaA0nZ30+/eo6xJlEwBLJ6Y6ujmJ5uIIYb5mjvbljJbWBoSeFMbf5mJEF2t088ndBk8s5aUrh4e9FRpujLzRnhG5ENeNWFtqQ1UWvFyijpdNzRS0P20X2e79UspWTSr42vtzevdk","X-OriginatorOrg":"gehealthcare.com","X-MS-Exchange-CrossTenant-OriginalArrivalTime":"13 Feb 2026 08:50:06.1739 (UTC)","X-MS-Exchange-CrossTenant-Network-Message-Id":"\n 57068064-f743-42be-2e92-08de6adce2c2","X-MS-Exchange-CrossTenant-Id":"9a309606-d6ec-4188-a28a-298812b4bbbf","X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp":"\n TenantId=9a309606-d6ec-4188-a28a-298812b4bbbf; Ip=[165.85.157.49];\n Helo=[mkerelay2.compute.ge-healthcare.net]","X-MS-Exchange-CrossTenant-AuthAs":"Internal","X-MS-Exchange-CrossTenant-AuthSource":"\n TreatMessagesAsInternal-CH1PEPF0000A34C.namprd04.prod.outlook.com","X-MS-Exchange-CrossTenant-FromEntityHeader":"HybridOnPrem","X-MS-Exchange-Transport-CrossTenantHeadersStamped":"PH3PPF44669FFFD","X-Mailman-Approved-At":"Fri, 13 Feb 2026 14:24:08 +0100","X-BeenThere":"u-boot@lists.denx.de","X-Mailman-Version":"2.1.39","Precedence":"list","List-Id":"U-Boot discussion <u-boot.lists.denx.de>","List-Unsubscribe":"<https://lists.denx.de/options/u-boot>,\n <mailto:u-boot-request@lists.denx.de?subject=unsubscribe>","List-Archive":"<https://lists.denx.de/pipermail/u-boot/>","List-Post":"<mailto:u-boot@lists.denx.de>","List-Help":"<mailto:u-boot-request@lists.denx.de?subject=help>","List-Subscribe":"<https://lists.denx.de/listinfo/u-boot>,\n <mailto:u-boot-request@lists.denx.de?subject=subscribe>","Errors-To":"u-boot-bounces@lists.denx.de","Sender":"\"U-Boot\" <u-boot-bounces@lists.denx.de>","X-Virus-Scanned":"clamav-milter 0.103.8 at phobos.denx.de","X-Virus-Status":"Clean"},"content":"This is required for the IPUv3 driver to migrate to CCF, changes are\nlargely based on the Linux kernel equivalent.\n\nAdd new gate2_flags function (also present in the Linux code) to set\nrequired flags.\n\nAdd usboh clock to get rid of error.\n\nSigned-off-by: Brian Ruley <brian.ruley@gehealthcare.com>\n---\n\nChanges in v3:\n- Added HDMI clocks\n\n drivers/clk/imx/clk-imx6q.c | 334 +++++++++++++++++++++++++++++++++---\n drivers/clk/imx/clk.h       |   9 +\n 2 files changed, 322 insertions(+), 21 deletions(-)","diff":"diff --git a/drivers/clk/imx/clk-imx6q.c b/drivers/clk/imx/clk-imx6q.c\nindex f11f9045abb..f57ac79f8ca 100644\n--- a/drivers/clk/imx/clk-imx6q.c\n+++ b/drivers/clk/imx/clk-imx6q.c\n@@ -13,6 +13,21 @@\n \n #include \"clk.h\"\n \n+#define SET_CLK_RATE(id, rate)           \\\n+\tdo {                             \\\n+\t\tstruct clk *clk;         \\\n+\t\tclk_get_by_id(id, &clk); \\\n+\t\tclk_set_rate(clk, rate); \\\n+\t} while (0)\n+\n+#define SET_CLK_PARENT(child_id, parent_id)            \\\n+\tdo {                                           \\\n+\t\tstruct clk *clk, *clk_parent;          \\\n+\t\tclk_get_by_id(parent_id, &clk_parent); \\\n+\t\tclk_get_by_id(child_id, &clk);         \\\n+\t\tclk_set_parent(clk, clk_parent);       \\\n+\t} while (0)\n+\n static int imx6q_clk_request(struct clk *clk)\n {\n \tif (clk->id < IMX6QDL_CLK_DUMMY || clk->id >= IMX6QDL_CLK_END) {\n@@ -39,6 +54,10 @@ static const char *const periph_sels[] = {\n \t\"periph_pre\",\n \t\"periph_clk2\",\n };\n+static const char *periph2_sels[] = {\n+\t\"periph2_pre\",\n+\t\"periph2_clk2\",\n+};\n static const char *const periph_pre_sels[] = {\n \t\"pll2_bus\",\n \t\"pll2_pfd2_396m\",\n@@ -53,6 +72,46 @@ static const char *const ecspi_sels[] = {\n \t\"pll3_60m\",\n \t\"osc\",\n };\n+static const char *const ipu_sels[] = {\n+\t\"mmdc_ch0_axi\",\n+\t\"pll2_pfd2_396m\",\n+\t\"pll3_120m\",\n+\t\"pll3_pfd1_540m\",\n+};\n+static const char *const ldb_di_sels[] = {\n+\t\"pll5_video_div\", \"pll2_pfd0_352m\", \"pll2_pfd2_396m\",\n+\t\"mmdc_ch1_axi\",\t  \"pll3_usb_otg\",\n+};\n+static const char *const ipu_di_pre_sels[] = {\n+\t\"mmdc_ch0_axi\",\t  \"pll3_usb_otg\",   \"pll5_video_div\",\n+\t\"pll2_pfd0_352m\", \"pll2_pfd2_396m\", \"pll3_pfd1_540m\",\n+};\n+static const char *const ipu1_di0_sels[] = {\n+\t\"ipu1_di0_pre\", \"dummy\", \"dummy\", \"ldb_di0\", \"ldb_di1\",\n+};\n+static const char *const ipu1_di1_sels[] = {\n+\t\"ipu1_di1_pre\", \"dummy\", \"dummy\", \"ldb_di0\", \"ldb_di1\",\n+};\n+static const char *const ipu2_di0_sels[] = {\n+\t\"ipu2_di0_pre\", \"dummy\", \"dummy\", \"ldb_di0\", \"ldb_di1\",\n+};\n+static const char *const ipu2_di1_sels[] = {\n+\t\"ipu2_di1_pre\", \"dummy\", \"dummy\", \"ldb_di0\", \"ldb_di1\",\n+};\n+static const char *ipu1_di0_sels_2[] = {\n+\t\"ipu1_di0_pre\", \"dummy\", \"dummy\", \"ldb_di0_podf\", \"ldb_di1_podf\",\n+};\n+static const char *ipu1_di1_sels_2[] = {\n+\t\"ipu1_di1_pre\", \"dummy\", \"dummy\", \"ldb_di0_podf\", \"ldb_di1_podf\",\n+};\n+static const char *ipu2_di0_sels_2[] = {\n+\t\"ipu2_di0_pre\", \"dummy\", \"dummy\", \"ldb_di0_podf\", \"ldb_di1_podf\",\n+};\n+static const char *ipu2_di1_sels_2[] = {\n+\t\"ipu2_di1_pre\", \"dummy\", \"dummy\", \"ldb_di0_podf\", \"ldb_di1_podf\",\n+};\n+\n+static unsigned int share_count_mipi_core_cfg;\n \n static int imx6q_clk_probe(struct udevice *dev)\n {\n@@ -69,15 +128,37 @@ static int imx6q_clk_probe(struct udevice *dev)\n \t\t\t     base + 0x10, 0x3));\n \tclk_dm(IMX6QDL_CLK_PLL3_60M,\n \t       imx_clk_fixed_factor(dev, \"pll3_60m\", \"pll3_usb_otg\", 1, 8));\n-\tclk_dm(IMX6QDL_CLK_PLL2_PFD0_352M,\n-\t       imx_clk_pfd(\"pll2_pfd0_352m\", \"pll2_bus\", base + 0x100, 0));\n-\tclk_dm(IMX6QDL_CLK_PLL2_PFD2_396M,\n-\t       imx_clk_pfd(\"pll2_pfd2_396m\", \"pll2_bus\", base + 0x100, 2));\n+\tclk_dm(IMX6QDL_CLK_PLL3_80M,\n+\t       imx_clk_fixed_factor(dev, \"pll3_80m\", \"pll3_usb_otg\", 1, 6));\n+\tclk_dm(IMX6QDL_CLK_PLL3_120M,\n+\t       imx_clk_fixed_factor(dev, \"pll3_120m\", \"pll3_usb_otg\", 1, 4));\n+\tclk_dm(IMX6QDL_CLK_PLL5, imx_clk_pllv3(dev, IMX_PLLV3_AV, \"pll5\", \"osc\",\n+\t\t\t\t\t       base + 0xa0, 0x7f));\n+\tclk_dm(IMX6QDL_CLK_PLL5_VIDEO,\n+\t       imx_clk_gate(dev, \"pll5_video\", \"pll5\", base + 0xa0, 13));\n \tclk_dm(IMX6QDL_CLK_PLL6, imx_clk_pllv3(dev, IMX_PLLV3_ENET, \"pll6\",\n \t\t\t\t\t       \"osc\", base + 0xe0, 0x3));\n \tclk_dm(IMX6QDL_CLK_PLL6_ENET,\n \t       imx_clk_gate(dev, \"pll6_enet\", \"pll6\", base + 0xe0, 13));\n \n+\tclk_dm(IMX6QDL_CLK_PLL2_PFD0_352M,\n+\t       imx_clk_pfd(\"pll2_pfd0_352m\", \"pll2_bus\", base + 0x100, 0));\n+\tclk_dm(IMX6QDL_CLK_PLL2_PFD2_396M,\n+\t       imx_clk_pfd(\"pll2_pfd2_396m\", \"pll2_bus\", base + 0x100, 2));\n+\tclk_dm(IMX6QDL_CLK_PLL3_PFD1_540M,\n+\t       imx_clk_pfd(\"pll3_pfd1_540m\", \"pll3_usb_otg\", base + 0xf0, 1));\n+\n+\tclk_dm(IMX6QDL_CLK_PLL2_198M,\n+\t       imx_clk_fixed_factor(dev, \"pll2_198m\", \"pll2_pfd2_396m\", 1, 2));\n+\tclk_dm(IMX6QDL_CLK_PLL5_POST_DIV,\n+\t       imx_clk_fixed_factor(dev, \"pll5_post_div\", \"pll5_video\", 1, 1));\n+\tclk_dm(IMX6QDL_CLK_PLL5_VIDEO_DIV,\n+\t       imx_clk_fixed_factor(dev, \"pll5_video_div\", \"pll5_post_div\", 1,\n+\t\t\t\t    1));\n+\tclk_dm(IMX6QDL_CLK_VIDEO_27M,\n+\t       imx_clk_fixed_factor(dev, \"video_27m\", \"pll3_pfd1_540m\", 1,\n+\t\t\t\t    20));\n+\n \t/* CCM clocks */\n \tbase = dev_read_addr_ptr(dev);\n \tif (!base)\n@@ -105,6 +186,19 @@ static int imx6q_clk_probe(struct udevice *dev)\n \t\t\t\t   ecspi_sels, ARRAY_SIZE(ecspi_sels)));\n \t}\n \n+\tclk_dm(IMX6QDL_CLK_PERIPH_PRE,\n+\t       imx_clk_mux(dev, \"periph_pre\", base + 0x18, 18, 2,\n+\t\t\t   periph_pre_sels, ARRAY_SIZE(periph_pre_sels)));\n+\tclk_dm(IMX6QDL_CLK_PERIPH2_PRE,\n+\t       imx_clk_mux(dev, \"periph2_pre\", base + 0x18, 21, 2,\n+\t\t\t   periph_pre_sels, ARRAY_SIZE(periph_pre_sels)));\n+\tclk_dm(IMX6QDL_CLK_PERIPH,\n+\t       imx_clk_busy_mux(dev, \"periph\", base + 0x14, 25, 1, base + 0x48,\n+\t\t\t\t5, periph_sels, ARRAY_SIZE(periph_sels)));\n+\tclk_dm(IMX6QDL_CLK_PERIPH2,\n+\t       imx_clk_busy_mux(dev, \"periph2\", base + 0x14, 26, 1, base + 0x48,\n+\t\t\t\t3, periph2_sels, ARRAY_SIZE(periph2_sels)));\n+\n \tclk_dm(IMX6QDL_CLK_USDHC1_PODF,\n \t       imx_clk_divider(dev, \"usdhc1_podf\", \"usdhc1_sel\", base + 0x24,\n \t\t\t       11, 3));\n@@ -134,6 +228,192 @@ static int imx6q_clk_probe(struct udevice *dev)\n \t\t\t\t       base + 0x38, 19, 6));\n \t}\n \n+\tclk_dm(IMX6QDL_CLK_AHB,\n+\t       imx_clk_busy_divider(dev, \"ahb\", \"periph\", base + 0x14, 10, 3,\n+\t\t\t\t    base + 0x48, 1));\n+\tclk_dm(IMX6QDL_CLK_IPG,\n+\t       imx_clk_divider(dev, \"ipg\", \"ahb\", base + 0x14, 8, 2));\n+\tclk_dm(IMX6QDL_CLK_IPG_PER,\n+\t       imx_clk_divider(dev, \"ipg_per\", \"ipg\", base + 0x1c, 0, 6));\n+\tclk_dm(IMX6QDL_CLK_UART_IPG,\n+\t       imx_clk_gate2(dev, \"uart_ipg\", \"ipg\", base + 0x7c, 24));\n+\n+\tif (of_machine_is_compatible(\"fsl,imx6qp\")) {\n+\t\tclk_dm(IMX6QDL_CLK_MMDC_CH1_AXI_CG,\n+\t\t       imx_clk_gate2(dev, \"mmdc_ch1_axi_cg\", \"periph2\",\n+\t\t\t\t     base + 0x4, 18));\n+\t\tclk_dm(IMX6QDL_CLK_MMDC_CH1_AXI_PODF,\n+\t\t       imx_clk_busy_divider(dev, \"mmdc_ch1_axi_podf\",\n+\t\t\t\t\t    \"mmdc_ch1_axi_cg\", base + 0x14, 3,\n+\t\t\t\t\t    3, base + 0x48, 2));\n+\t} else {\n+\t\tclk_dm(IMX6QDL_CLK_MMDC_CH1_AXI_PODF,\n+\t\t       imx_clk_busy_divider(dev, \"mmdc_ch1_axi_podf\", \"periph2\",\n+\t\t\t\t\t    base + 0x14, 3, 3, base + 0x48, 2));\n+\t}\n+\n+\tclk_dm(IMX6QDL_CLK_MMDC_CH0_AXI_PODF,\n+\t       imx_clk_busy_divider(dev, \"mmdc_ch0_axi_podf\", \"periph\",\n+\t\t\t\t    base + 0x14, 19, 3, base + 0x48, 4));\n+\n+\tclk_dm(IMX6QDL_CLK_MMDC_CH0_AXI,\n+\t       imx_clk_gate2_flags(dev, \"mmdc_ch0_axi\", \"mmdc_ch0_axi_podf\",\n+\t\t\t\t   base + 0x74, 20, CLK_IS_CRITICAL));\n+\tclk_dm(IMX6QDL_CLK_MMDC_CH1_AXI,\n+\t       imx_clk_gate2(dev, \"mmdc_ch1_axi\", \"mmdc_ch1_axi_podf\",\n+\t\t\t     base + 0x74, 22));\n+\n+\tclk_dm(IMX6QDL_CLK_IPU1_SEL,\n+\t       imx_clk_mux(dev, \"ipu1_sel\", base + 0x3c, 9, 2, ipu_sels,\n+\t\t\t   ARRAY_SIZE(ipu_sels)));\n+\tclk_dm(IMX6QDL_CLK_IPU2_SEL,\n+\t       imx_clk_mux(dev, \"ipu2_sel\", base + 0x3c, 14, 2, ipu_sels,\n+\t\t\t   ARRAY_SIZE(ipu_sels)));\n+\n+\tif (of_machine_is_compatible(\"fsl,imx6qp\")) {\n+\t\tclk_dm(IMX6QDL_CLK_LDB_DI0_SEL,\n+\t\t       imx_clk_mux(dev, \"ldb_di0_sel\", base + 0x2c, 9, 3,\n+\t\t\t\t   ldb_di_sels, ARRAY_SIZE(ldb_di_sels)));\n+\t\tclk_dm(IMX6QDL_CLK_LDB_DI1_SEL,\n+\t\t       imx_clk_mux(dev, \"ldb_di1_sel\", base + 0x2c, 12, 3,\n+\t\t\t\t   ldb_di_sels, ARRAY_SIZE(ldb_di_sels)));\n+\t} else {\n+\t\t/*\n+                 * Need to set these as read-only due to a hardware bug.\n+                 * Keeping default mux values. Fixed on the i.MX6 QuadPlus\n+                 */\n+\t\tclk_dm(IMX6QDL_CLK_LDB_DI0_SEL,\n+\t\t       imx_clk_mux_flags(dev, \"ldb_di0_sel\", base + 0x2c, 9, 3,\n+\t\t\t\t\t ldb_di_sels, ARRAY_SIZE(ldb_di_sels),\n+\t\t\t\t\t CLK_SET_RATE_PARENT |\n+\t\t\t\t\t\t CLK_MUX_READ_ONLY));\n+\t\tclk_dm(IMX6QDL_CLK_LDB_DI1_SEL,\n+\t\t       imx_clk_mux_flags(dev, \"ldb_di1_sel\", base + 0x2c, 12, 3,\n+\t\t\t\t\t ldb_di_sels, ARRAY_SIZE(ldb_di_sels),\n+\t\t\t\t\t CLK_SET_RATE_PARENT |\n+\t\t\t\t\t\t CLK_MUX_READ_ONLY));\n+\t}\n+\n+\tclk_dm(IMX6QDL_CLK_IPU1_DI0_PRE_SEL,\n+\t       imx_clk_mux_flags(dev, \"ipu1_di0_pre_sel\", base + 0x34, 6, 3,\n+\t\t\t\t ipu_di_pre_sels, ARRAY_SIZE(ipu_di_pre_sels),\n+\t\t\t\t CLK_SET_RATE_PARENT));\n+\tclk_dm(IMX6QDL_CLK_IPU1_DI1_PRE_SEL,\n+\t       imx_clk_mux_flags(dev, \"ipu1_di1_pre_sel\", base + 0x34, 15, 3,\n+\t\t\t\t ipu_di_pre_sels, ARRAY_SIZE(ipu_di_pre_sels),\n+\t\t\t\t CLK_SET_RATE_PARENT));\n+\tclk_dm(IMX6QDL_CLK_IPU2_DI0_PRE_SEL,\n+\t       imx_clk_mux_flags(dev, \"ipu2_di0_pre_sel\", base + 0x38, 6, 3,\n+\t\t\t\t ipu_di_pre_sels, ARRAY_SIZE(ipu_di_pre_sels),\n+\t\t\t\t CLK_SET_RATE_PARENT));\n+\tclk_dm(IMX6QDL_CLK_IPU2_DI1_PRE_SEL,\n+\t       imx_clk_mux_flags(dev, \"ipu2_di1_pre_sel\", base + 0x38, 15, 3,\n+\t\t\t\t ipu_di_pre_sels, ARRAY_SIZE(ipu_di_pre_sels),\n+\t\t\t\t CLK_SET_RATE_PARENT));\n+\n+\tif (of_machine_is_compatible(\"fsl,imx6qp\")) {\n+\t\tclk_dm(IMX6QDL_CLK_LDB_DI0,\n+\t\t       imx_clk_gate2(dev, \"ldb_di0\", \"ldb_di0_sel\", base + 0x74,\n+\t\t\t\t     12));\n+\t\tclk_dm(IMX6QDL_CLK_LDB_DI1,\n+\t\t       imx_clk_gate2(dev, \"ldb_di1\", \"ldb_di1_sel\", base + 0x74,\n+\t\t\t\t     14));\n+\t\tclk_dm(IMX6QDL_CLK_LDB_DI0_DIV_3_5,\n+\t\t       imx_clk_fixed_factor(dev, \"ldb_di0_div_3_5\", \"ldb_di0\",\n+\t\t\t\t\t    2, 7));\n+\t\tclk_dm(IMX6QDL_CLK_LDB_DI1_DIV_3_5,\n+\t\t       imx_clk_fixed_factor(dev, \"ldb_di1_div_3_5\", \"ldb_di1\",\n+\t\t\t\t\t    2, 7));\n+\t\tclk_dm(IMX6QDL_CLK_LDB_DI0_PODF,\n+\t\t       imx_clk_divider(dev, \"ldb_di0_podf\", \"ldb_di0_div_3_5\",\n+\t\t\t\t       base + 0x20, 10, 1));\n+\t\tclk_dm(IMX6QDL_CLK_LDB_DI1_PODF,\n+\t\t       imx_clk_divider(dev, \"ldb_di1_podf\", \"ldb_di1_div_3_5\",\n+\t\t\t\t       base + 0x20, 11, 1));\n+\t} else {\n+\t\tclk_dm(IMX6QDL_CLK_LDB_DI0_DIV_3_5,\n+\t\t       imx_clk_fixed_factor(dev, \"ldb_di0_div_3_5\",\n+\t\t\t\t\t    \"ldb_di0_sel\", 2, 7));\n+\t\tclk_dm(IMX6QDL_CLK_LDB_DI1_DIV_3_5,\n+\t\t       imx_clk_fixed_factor(dev, \"ldb_di1_div_3_5\",\n+\t\t\t\t\t    \"ldb_di1_sel\", 2, 7));\n+\t\tclk_dm(IMX6QDL_CLK_LDB_DI0_PODF,\n+\t\t       imx_clk_divider(dev, \"ldb_di0_podf\", \"ldb_di0_div_3_5\",\n+\t\t\t\t       base + 0x20, 10, 1));\n+\t\tclk_dm(IMX6QDL_CLK_LDB_DI1_PODF,\n+\t\t       imx_clk_divider(dev, \"ldb_di1_podf\", \"ldb_di1_div_3_5\",\n+\t\t\t\t       base + 0x20, 11, 1));\n+\t\tclk_dm(IMX6QDL_CLK_LDB_DI0,\n+\t\t       imx_clk_gate2(dev, \"ldb_di0\", \"ldb_di0_podf\",\n+\t\t\t\t     base + 0x74, 12));\n+\t\tclk_dm(IMX6QDL_CLK_LDB_DI1,\n+\t\t       imx_clk_gate2(dev, \"ldb_di1\", \"ldb_di1_podf\",\n+\t\t\t\t     base + 0x74, 14));\n+\t}\n+\n+\tclk_dm(IMX6QDL_CLK_IPU1_PODF,\n+\t       imx_clk_divider(dev, \"ipu1_podf\", \"ipu1_sel\", base + 0x3c, 11,\n+\t\t\t       3));\n+\tclk_dm(IMX6QDL_CLK_IPU2_PODF,\n+\t       imx_clk_divider(dev, \"ipu2_podf\", \"ipu2_sel\", base + 0x3c, 16,\n+\t\t\t       3));\n+\tclk_dm(IMX6QDL_CLK_IPU1_DI0_PRE,\n+\t       imx_clk_divider(dev, \"ipu1_di0_pre\", \"ipu1_di0_pre_sel\",\n+\t\t\t       base + 0x34, 3, 3));\n+\tclk_dm(IMX6QDL_CLK_IPU1_DI1_PRE,\n+\t       imx_clk_divider(dev, \"ipu1_di1_pre\", \"ipu1_di1_pre_sel\",\n+\t\t\t       base + 0x34, 12, 3));\n+\tclk_dm(IMX6QDL_CLK_IPU2_DI0_PRE,\n+\t       imx_clk_divider(dev, \"ipu2_di0_pre\", \"ipu2_di0_pre_sel\",\n+\t\t\t       base + 0x38, 3, 3));\n+\tclk_dm(IMX6QDL_CLK_IPU2_DI1_PRE,\n+\t       imx_clk_divider(dev, \"ipu2_di1_pre\", \"ipu2_di1_pre_sel\",\n+\t\t\t       base + 0x38, 12, 3));\n+\n+\tif (of_machine_is_compatible(\"fsl,imx6qp\")) {\n+\t\tclk_dm(IMX6QDL_CLK_IPU1_DI0_SEL,\n+\t\t       imx_clk_mux_flags(dev, \"ipu1_di0_sel\", base + 0x34, 0, 3,\n+\t\t\t\t\t ipu1_di0_sels_2,\n+\t\t\t\t\t ARRAY_SIZE(ipu1_di0_sels_2),\n+\t\t\t\t\t CLK_SET_RATE_PARENT));\n+\t\tclk_dm(IMX6QDL_CLK_IPU1_DI1_SEL,\n+\t\t       imx_clk_mux_flags(dev, \"ipu1_di1_sel\", base + 0x34, 9, 3,\n+\t\t\t\t\t ipu1_di1_sels_2,\n+\t\t\t\t\t ARRAY_SIZE(ipu1_di1_sels_2),\n+\t\t\t\t\t CLK_SET_RATE_PARENT));\n+\t\tclk_dm(IMX6QDL_CLK_IPU2_DI0_SEL,\n+\t\t       imx_clk_mux_flags(dev, \"ipu2_di0_sel\", base + 0x38, 0, 3,\n+\t\t\t\t\t ipu2_di0_sels_2,\n+\t\t\t\t\t ARRAY_SIZE(ipu2_di0_sels_2),\n+\t\t\t\t\t CLK_SET_RATE_PARENT));\n+\t\tclk_dm(IMX6QDL_CLK_IPU2_DI1_SEL,\n+\t\t       imx_clk_mux_flags(dev, \"ipu2_di1_sel\", base + 0x38, 9, 3,\n+\t\t\t\t\t ipu2_di1_sels_2,\n+\t\t\t\t\t ARRAY_SIZE(ipu2_di1_sels_2),\n+\t\t\t\t\t CLK_SET_RATE_PARENT));\n+\t} else {\n+\t\tclk_dm(IMX6QDL_CLK_IPU1_DI0_SEL,\n+\t\t       imx_clk_mux_flags(dev, \"ipu1_di0_sel\", base + 0x34, 0, 3,\n+\t\t\t\t\t ipu1_di0_sels,\n+\t\t\t\t\t ARRAY_SIZE(ipu1_di0_sels),\n+\t\t\t\t\t CLK_SET_RATE_PARENT));\n+\t\tclk_dm(IMX6QDL_CLK_IPU1_DI1_SEL,\n+\t\t       imx_clk_mux_flags(dev, \"ipu1_di1_sel\", base + 0x34, 9, 3,\n+\t\t\t\t\t ipu1_di1_sels,\n+\t\t\t\t\t ARRAY_SIZE(ipu1_di1_sels),\n+\t\t\t\t\t CLK_SET_RATE_PARENT));\n+\t\tclk_dm(IMX6QDL_CLK_IPU2_DI0_SEL,\n+\t\t       imx_clk_mux_flags(dev, \"ipu2_di0_sel\", base + 0x38, 0, 3,\n+\t\t\t\t\t ipu2_di0_sels,\n+\t\t\t\t\t ARRAY_SIZE(ipu2_di0_sels),\n+\t\t\t\t\t CLK_SET_RATE_PARENT));\n+\t\tclk_dm(IMX6QDL_CLK_IPU2_DI1_SEL,\n+\t\t       imx_clk_mux_flags(dev, \"ipu2_di1_sel\", base + 0x38, 9, 3,\n+\t\t\t\t\t ipu2_di1_sels,\n+\t\t\t\t\t ARRAY_SIZE(ipu2_di1_sels),\n+\t\t\t\t\t CLK_SET_RATE_PARENT));\n+\t}\n+\n \tclk_dm(IMX6QDL_CLK_ECSPI1,\n \t       imx_clk_gate2(dev, \"ecspi1\", \"ecspi_root\", base + 0x6c, 0));\n \tclk_dm(IMX6QDL_CLK_ECSPI2,\n@@ -142,11 +422,11 @@ static int imx6q_clk_probe(struct udevice *dev)\n \t       imx_clk_gate2(dev, \"ecspi3\", \"ecspi_root\", base + 0x6c, 4));\n \tclk_dm(IMX6QDL_CLK_ECSPI4,\n \t       imx_clk_gate2(dev, \"ecspi4\", \"ecspi_root\", base + 0x6c, 6));\n-\tclk_dm(IMX6QDL_CLK_UART_IPG,\n-\t       imx_clk_gate2(dev, \"uart_ipg\", \"ipg\", base + 0x7c, 24));\n \tclk_dm(IMX6QDL_CLK_UART_SERIAL,\n \t       imx_clk_gate2(dev, \"uart_serial\", \"uart_serial_podf\",\n \t\t\t     base + 0x7c, 26));\n+\tclk_dm(IMX6QDL_CLK_USBOH3,\n+\t       imx_clk_gate2(dev, \"usboh3\", \"ipg\", base + 0x80, 0));\n \tclk_dm(IMX6QDL_CLK_USDHC1,\n \t       imx_clk_gate2(dev, \"usdhc1\", \"usdhc1_podf\", base + 0x80, 2));\n \tclk_dm(IMX6QDL_CLK_USDHC2,\n@@ -155,20 +435,6 @@ static int imx6q_clk_probe(struct udevice *dev)\n \t       imx_clk_gate2(dev, \"usdhc3\", \"usdhc3_podf\", base + 0x80, 6));\n \tclk_dm(IMX6QDL_CLK_USDHC4,\n \t       imx_clk_gate2(dev, \"usdhc4\", \"usdhc4_podf\", base + 0x80, 8));\n-\n-\tclk_dm(IMX6QDL_CLK_PERIPH_PRE,\n-\t       imx_clk_mux(dev, \"periph_pre\", base + 0x18, 18, 2,\n-\t\t\t   periph_pre_sels, ARRAY_SIZE(periph_pre_sels)));\n-\tclk_dm(IMX6QDL_CLK_PERIPH,\n-\t       imx_clk_busy_mux(dev, \"periph\", base + 0x14, 25, 1, base + 0x48,\n-\t\t\t\t5, periph_sels, ARRAY_SIZE(periph_sels)));\n-\tclk_dm(IMX6QDL_CLK_AHB,\n-\t       imx_clk_busy_divider(dev, \"ahb\", \"periph\", base + 0x14, 10, 3,\n-\t\t\t\t    base + 0x48, 1));\n-\tclk_dm(IMX6QDL_CLK_IPG,\n-\t       imx_clk_divider(dev, \"ipg\", \"ahb\", base + 0x14, 8, 2));\n-\tclk_dm(IMX6QDL_CLK_IPG_PER,\n-\t       imx_clk_divider(dev, \"ipg_per\", \"ipg\", base + 0x1c, 0, 6));\n \tclk_dm(IMX6QDL_CLK_I2C1,\n \t       imx_clk_gate2(dev, \"i2c1\", \"ipg_per\", base + 0x70, 6));\n \tclk_dm(IMX6QDL_CLK_I2C2,\n@@ -183,11 +449,37 @@ static int imx6q_clk_probe(struct udevice *dev)\n \t       imx_clk_gate2(dev, \"pwm3\", \"ipg_per\", base + 0x78, 20));\n \tclk_dm(IMX6QDL_CLK_PWM4,\n \t       imx_clk_gate2(dev, \"pwm4\", \"ipg_per\", base + 0x78, 22));\n-\n \tclk_dm(IMX6QDL_CLK_ENET,\n \t       imx_clk_gate2(dev, \"enet\", \"ipg\", base + 0x6c, 10));\n \tclk_dm(IMX6QDL_CLK_ENET_REF,\n \t       imx_clk_fixed_factor(dev, \"enet_ref\", \"pll6_enet\", 1, 1));\n+\tclk_dm(IMX6QDL_CLK_MIPI_CORE_CFG,\n+\t       imx_clk_gate2_shared(dev, \"mipi_core_cfg\", \"video_27m\",\n+\t\t\t\t    base + 0x74, 16,\n+\t\t\t\t    &share_count_mipi_core_cfg));\n+\tclk_dm(IMX6QDL_CLK_HDMI_IAHB,\n+\t       imx_clk_gate2(dev, \"hdmi_iahb\", \"ahb\", base + 0x70, 0));\n+\tclk_dm(IMX6QDL_CLK_HDMI_ISFR,\n+\t       imx_clk_gate2(dev, \"hdmi_isfr\", \"mipi_core_cfg\", base + 0x70,\n+\t\t\t     4));\n+\tclk_dm(IMX6QDL_CLK_IPU1,\n+\t       imx_clk_gate2(dev, \"ipu1\", \"ipu1_podf\", base + 0x74, 0));\n+\tclk_dm(IMX6QDL_CLK_IPU2,\n+\t       imx_clk_gate2(dev, \"ipu2\", \"ipu2_podf\", base + 0x74, 6));\n+\tclk_dm(IMX6QDL_CLK_IPU1_DI0,\n+\t       imx_clk_gate2(dev, \"ipu1_di0\", \"ipu1_di0_sel\", base + 0x74, 2));\n+\tclk_dm(IMX6QDL_CLK_IPU1_DI1,\n+\t       imx_clk_gate2(dev, \"ipu1_di1\", \"ipu1_di1_sel\", base + 0x74, 4));\n+\tclk_dm(IMX6QDL_CLK_IPU2_DI0,\n+\t       imx_clk_gate2(dev, \"ipu2_di0\", \"ipu2_di0_sel\", base + 0x74, 8));\n+\tclk_dm(IMX6QDL_CLK_IPU2_DI1,\n+\t       imx_clk_gate2(dev, \"ipu2_di1\", \"ipu2_di1_sel\", base + 0x74, 10));\n+\n+\tif (of_machine_is_compatible(\"fsl,imx6dl\")) {\n+\t\tSET_CLK_RATE(IMX6QDL_CLK_PLL3_PFD1_540M, 540000000UL);\n+\t\tSET_CLK_PARENT(IMX6QDL_CLK_IPU1_SEL,\n+\t\t\t       IMX6QDL_CLK_PLL3_PFD1_540M);\n+\t}\n \n \treturn 0;\n }\ndiff --git a/drivers/clk/imx/clk.h b/drivers/clk/imx/clk.h\nindex 7d14dbc395f..b53f35df84f 100644\n--- a/drivers/clk/imx/clk.h\n+++ b/drivers/clk/imx/clk.h\n@@ -95,6 +95,15 @@ static inline struct clk *imx_clk_gate2(struct udevice *dev, const char *name,\n \t\t\tshift, 0x3, 0, NULL);\n }\n \n+static inline struct clk *\n+imx_clk_gate2_flags(struct udevice *dev, const char *name, const char *parent,\n+\t\t    void __iomem *reg, u8 shift, unsigned long flags)\n+{\n+\treturn clk_register_gate2(dev, name, parent,\n+\t\t\t\t  flags | CLK_SET_RATE_PARENT, reg, shift, 0x3,\n+\t\t\t\t  0, NULL);\n+}\n+\n static inline struct clk *imx_clk_gate2_shared(struct udevice *dev, const char *name,\n \t\t\t\t\t       const char *parent,\n \t\t\t\t\t       void __iomem *reg, u8 shift,\n","prefixes":["v3","3/6"]}