Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/2195102/?format=api
{ "id": 2195102, "url": "http://patchwork.ozlabs.org/api/patches/2195102/?format=api", "web_url": "http://patchwork.ozlabs.org/project/uboot/patch/20260210090029.728636-4-brian.ruley@gehealthcare.com/", "project": { "id": 18, "url": "http://patchwork.ozlabs.org/api/projects/18/?format=api", "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, "list_archive_url": "", "list_archive_url_format": "", "commit_url_format": "" }, "msgid": "<20260210090029.728636-4-brian.ruley@gehealthcare.com>", "list_archive_url": null, "date": "2026-02-10T09:00:25", "name": "[v2,3/6] clk: imx6q: add ipu and ldb clocks and dependencies", "commit_ref": null, "pull_url": null, "state": "superseded", "archived": false, "hash": "0c44002ae12b7c98aa57ceec8b8ec389d1ae9621", "submitter": { "id": 89422, "url": "http://patchwork.ozlabs.org/api/people/89422/?format=api", "name": "Brian Ruley", "email": "brian.ruley@gehealthcare.com" }, "delegate": { "id": 151988, "url": "http://patchwork.ozlabs.org/api/users/151988/?format=api", "username": "festevam", "first_name": "Fabio", "last_name": "Estevam", "email": "festevam@gmail.com" }, "mbox": "http://patchwork.ozlabs.org/project/uboot/patch/20260210090029.728636-4-brian.ruley@gehealthcare.com/mbox/", "series": [ { "id": 491668, "url": "http://patchwork.ozlabs.org/api/series/491668/?format=api", "web_url": "http://patchwork.ozlabs.org/project/uboot/list/?series=491668", "date": "2026-02-10T09:00:24", "name": "Enable the IPUv3 driver to use CCF", "version": 2, "mbox": "http://patchwork.ozlabs.org/series/491668/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/2195102/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2195102/checks/", "tags": {}, "related": [], "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=P5k36Wof;\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=\"P5k36Wof\";\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 4f9LnY6hSYz1xtV\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 10 Feb 2026 23:42:57 +1100 (AEDT)", "from h2850616.stratoserver.net (localhost [IPv6:::1])\n\tby phobos.denx.de (Postfix) with ESMTP id 1261F83DBF;\n\tTue, 10 Feb 2026 13:42:03 +0100 (CET)", "by phobos.denx.de (Postfix, from userid 109)\n id 022488388D; Tue, 10 Feb 2026 10:00:58 +0100 (CET)", "from SA9PR02CU001.outbound.protection.outlook.com\n (mail-southcentralusazlp170130001.outbound.protection.outlook.com\n [IPv6:2a01:111:f403:c10c::1])\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 661DC83CE3\n for <u-boot@lists.denx.de>; Tue, 10 Feb 2026 10:00:54 +0100 (CET)", "from SJ0PR05CA0020.namprd05.prod.outlook.com (2603:10b6:a03:33b::25)\n by DS4PPF7C31BD26B.namprd22.prod.outlook.com (2603:10b6:f:fc00::b30)\n with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9587.15; Tue, 10 Feb\n 2026 09:00:49 +0000", "from MWH0EPF000989E8.namprd02.prod.outlook.com\n (2603:10b6:a03:33b:cafe::93) by SJ0PR05CA0020.outlook.office365.com\n (2603:10b6:a03:33b::25) with Microsoft SMTP Server (version=TLS1_3,\n cipher=TLS_AES_256_GCM_SHA384) id 15.20.9611.6 via Frontend Transport; Tue,\n 10 Feb 2026 09:00:49 +0000", "from atlrelay1.compute.ge-healthcare.net (165.85.157.49) by\n MWH0EPF000989E8.mail.protection.outlook.com (10.167.241.135) 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; Tue, 10 Feb 2026 09:00:48 +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 EAA55FD2FC;\n Tue, 10 Feb 2026 11:00:45 +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=x0F2dDrFN3JAwkbOUrczE1C/4Dzkmz8hj1Y6HuNpLIuGl/G5LNoAnTu9okp5m9QB6wLSDtxfUCROL9M0XqklcWkHcU/ERHIHSYEf05CrF7g/kKtvZon4AUtJhnhRUY45zXChGIT0Dw4btVJ/O2o8O+kLDi6U9MkyZGetDnmZE5BLZ55hbRKdd2imgQs71fuTb/jGobFYo0zVgb3s9zLdHQRefi5GI91D+zEX6950YZL9e8wF1Yve25zwr+fshtx8ccltBkDb4Ms/EmJrhXAB5io19G2QV+ffLf6FsrHta41nBwD4QNkVV6AyiOFGwnEbz0p+10IYwCrdbB+Ny9G+SA==", "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=D7vC5IdIwHTi/+fsS8+9UFfN+qZhF5oqY14qc7QUZdY=;\n b=q9CbBwyPfimcYaL1q6fks2K08DqtD87zg32n2VB56a/gpCkrL9yEDbR+IXH6yqIPxzuvtd7aep6jOjkclrbvq7gAnzMUphUi/rqpufWEqD3LFC7kH6foXdwJ5DyuXY1+F3VME2+fracGpuZweP7Wto3U3jePUJ/xA218+rU0Jiz7lmOz6DXKphjFWywvcLhF/cG9Xo93+RPZ8AAaop0g2zIoRLZIbGxvtYVDaqm2IZyWfpi6DIVyYFG9m7bpK09F8J1/ghHaAYa9e5/YAtECstF/LUGOkDkGfu403UbkIsayJJ2baJEQb+wB1ONy1K8irnNEzeA/6ggCb6KJmMVBMw==", "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=D7vC5IdIwHTi/+fsS8+9UFfN+qZhF5oqY14qc7QUZdY=;\n b=P5k36WofpaTQW3ymcpEu+iQk+EQp8/vEfEtzL+i/bI51fGGN3Z6wKZexjZdeH+OUTATFuTNidx8L8TOad9dJ7WB6LPkeXftbLAjQ2ARNOfeR3pv3zSkG+EQOTJUqGZ0y+jd8OQkURr4bfZ99vdQLlQubHc3YtaFPbFnV8py73VNLFTv17IJfqG6Vb/97Diu2c8IzosDXO6mgxcFuqzSlaVOVhPGoA6IsosP8LQS6MEnNYIKZ+h/JwhdN21oJF9P3D3uTZ4yuDlhpQhxtB78PoKwUL6Vr2BTZH7imYKT7tAulXihWTWcMF+d4PNYEyE/MTLhqxjT8V3DSMZs+5669Vg==", "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=atlrelay1.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 v2 3/6] clk: imx6q: add ipu and ldb clocks and dependencies", "Date": "Tue, 10 Feb 2026 11:00:25 +0200", "Message-Id": "<20260210090029.728636-4-brian.ruley@gehealthcare.com>", "X-Mailer": "git-send-email 2.39.5", "In-Reply-To": "<20260210090029.728636-1-brian.ruley@gehealthcare.com>", "References": "<\"20260205141332.2515996-6-brian.ruley@gehealthcare.com\">\n <20260210090029.728636-1-brian.ruley@gehealthcare.com>", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "X-EOPAttributedMessage": "0", "X-MS-PublicTrafficType": "Email", "X-MS-TrafficTypeDiagnostic": "MWH0EPF000989E8:EE_|DS4PPF7C31BD26B:EE_", "Content-Type": "text/plain", "X-MS-Office365-Filtering-Correlation-Id": "7d25dd91-a19f-4781-f007-08de6882e27b", "X-MS-Exchange-SenderADCheck": "1", "X-MS-Exchange-AntiSpam-Relay": "0", "X-Microsoft-Antispam": "BCL:0;\n ARA:13230040|36860700013|376014|82310400026|1800799024;", "X-Microsoft-Antispam-Message-Info": "\n Ht5FJGFcn7iXVMe+h/XHUtSI08HEurFIeEaib10gSJO5Ko0dRzfXx+9dWFWHvlUZBW4Oe6uITkEsVQYoYZeRb6cjEyUeaMKjY1xSIf/As73BhP79MdOnWJrUo58BPTAB08SYgJQI/qyMAP6xw03zqV9LUNrhKnkjrkEOY564ZE5ESAOZTQ/1QVjSGvXPYfLjqDjfuFWsipkE+M5S+sAOOXdyWifwonUBjAZkAuxGM263vkLg7g/HPhTkFnsokCOtpZ4WXy6bc3zy/wGQnwfk4UO9hI9aBgE/wkVMChHbzMJ5PaUJt/w+ZU2VKJ0c7kDcfwJr3FUYVFafmybfNvrAT9M6Kn69MD41udunw95byZsDjLEHb2XHRap6QRFS5br/s1lDFhtGEYGW917heHjOYzg8iX84uib/nzJpHyBjFMVLrdESFkgceFoQ095THGP05E+o43+UaIf1C456Jg5vJNJnep6eVslAn7btYlFnNiz+ogTmjG7fKakMqxYNKbTHXTzBuDyqlpBXNUPopEDyQ3XRt2H9KSgILN7WgSIPJvMxV7IGCHefCCovsGkjH4iOsF7CNjcOI7u+NthXcVXe8H5edj5YDhC/FDAWoz+IV5YTd1exR/40JK2u5QChsl+hE15dd/tzDT72l60WvChVvWF5V18WAbpJpF0j+qcOFFmrT1mKLFRnHHc0/ilCeEDKdFdG7sOwvKUFi9YuzvVAV49cU4r3FlfRvj/Kc5YldPyY1mufQX2VFgFAbIvwsoInQyMJo2jhGLjQbvTF72WUjPw6t3vd3ZMyevDVW+d7UR0fr1ONUAUO0wcrPuzxNyrz1LYCaLrkcCzjid+Qlvim6IOQVj9M5jp3wekHBueiHcQ9qnuFEonk67+2xmC2p6dccj9CRn4Sf9GMg3TJ7+JAjX4zNZS+H89vQcuZrfh5yN/H96PpGlZMYVriyjSzqD+hokvZS7m3tQ1VKxotFIfuzV5svRiWcKvERvItXCIaOEmvalbPhMxo5JzacflTFTyZJUDJVTBMU+l6yhKKFjA/GcFO3wN3J9+PhaAElmyF+NDYmMtnf1wf9hwv/eV2jjrp4NeFiS+wf6shVf+iZdN9m1vKQWTjJs7JUVIuyN5vJ6lZOMjEa/UqclFXv5yS7jRdNyozGqxLYiCGFHAiDpTxcp3yCc87bd10XgFbZUB0FgNeeD4ZKWSNPNnKNCPq5L8HkT9c3H87GIVDeO3gMCstCL3uHiLFFDyhCiudAgGFASBZt1rcsYy2odRnOYT6aZ3yZePIV1X13SoV0rs+EI4IJ/NgUTZcrSS6Sl4Iusj9Ybsjchfg3CGvooQ4C3EzJVGBq5B1h9lQEsMy2kB7DPpjY2N2oQsUXkSVkLC1aCwHw7iuj+XbvQnsQBX/sVBYduMFDbo5ZJFw0MD4e4kc4n6TDw3mMeQ6Qh2bsqHO3MHrzbrT51kCWBQlkqzlezEevSIezEt9jL69CXDi3SLl8MqKlJ9vgFs2/dTnv+njbRsOpBlX3g07DtTNw2Ii8AH37tjiO8v98ktj7q8yP3EK1QZFEKYYAsCZ008VmjWUtQbvghcOVpse4CA/xOOJLeeswLolkf79OeBtHY+rBooHhRXwa/wQWjrCidDlQ4soFiZKR43TRJJtlIM8huWnwQwr3+Ft4CNQyQcNqtL82PgWZ/Egfw==", "X-Forefront-Antispam-Report": "CIP:165.85.157.49; CTRY:US; LANG:en; SCL:1; SRV:;\n IPV:NLI; SFV:NSPM; H:atlrelay1.compute.ge-healthcare.net;\n PTR:InfoDomainNonexistent; CAT:NONE;\n SFS:(13230040)(36860700013)(376014)(82310400026)(1800799024); DIR:OUT;\n SFP:1101;", "X-MS-Exchange-AntiSpam-MessageData-ChunkCount": "1", "X-MS-Exchange-AntiSpam-MessageData-0": "\n MSL0KN7qUjzs2yKmm/6lIzZNdljlXBMoIHroACLc6Z6vbY7Ce1ALKv9W37S1isCRPLvtI7sPDZtAC9pKLCbqcEDzdFsCq21OphDmoGo5mKeAozrn4H1ruuXUD68GAavxN5PCOjJLsWmUxhImKmFzowKrk7N5N8m+yAqlSC2Yo9XFR0Us//JfX9iA/AvIQ+upH1F1a1KNWszuQWS23TzsZuyc05BIynAbnbZI2/c6Z1Z7bXoiOksJCoYL+NhmXU6ht9ptoKOHv7Wsgb38ECHKt8NpDQGoue3gznQvGdxh3DpWhY6xlRkRNsP0exDUWwBi26YSfcgzuKUa6lUSzYX0igmVSAQhumyfQGd4bC/3VjYWXpREpAxDBTp7mUxQsK32BA0ffaMoRJGmoR/ALTCa04aPKVGJzfYNokKuzr1adrKE90TUkjRnLXTvQZt/UNti", "X-OriginatorOrg": "gehealthcare.com", "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "10 Feb 2026 09:00:48.5820 (UTC)", "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n 7d25dd91-a19f-4781-f007-08de6882e27b", "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=[atlrelay1.compute.ge-healthcare.net]", "X-MS-Exchange-CrossTenant-AuthAs": "Internal", "X-MS-Exchange-CrossTenant-AuthSource": "\n TreatMessagesAsInternal-MWH0EPF000989E8.namprd02.prod.outlook.com", "X-MS-Exchange-CrossTenant-FromEntityHeader": "HybridOnPrem", "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "DS4PPF7C31BD26B", "X-Mailman-Approved-At": "Tue, 10 Feb 2026 13:41:53 +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\n(no changes since v1)\n\n drivers/clk/imx/clk-imx6q.c | 320 +++++++++++++++++++++++++++++++++---\n drivers/clk/imx/clk.h | 9 +\n 2 files changed, 308 insertions(+), 21 deletions(-)", "diff": "diff --git a/drivers/clk/imx/clk-imx6q.c b/drivers/clk/imx/clk-imx6q.c\nindex f11f9045abb..55c0426d5b8 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,44 @@ 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 int imx6q_clk_probe(struct udevice *dev)\n {\n@@ -69,15 +126,34 @@ 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+\n \t/* CCM clocks */\n \tbase = dev_read_addr_ptr(dev);\n \tif (!base)\n@@ -105,6 +181,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 +223,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 +417,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 +430,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 +444,28 @@ 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_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": [ "v2", "3/6" ] }