get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/2196337/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 2196337,
    "url": "http://patchwork.ozlabs.org/api/patches/2196337/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/uboot/patch/20260213084956.1031000-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": "<20260213084956.1031000-4-brian.ruley@gehealthcare.com>",
    "list_archive_url": null,
    "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": "new",
    "archived": false,
    "hash": "563e835ad66e90009306634cc3a60ec42cdb54f5",
    "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/20260213084956.1031000-4-brian.ruley@gehealthcare.com/mbox/",
    "series": [
        {
            "id": 492095,
            "url": "http://patchwork.ozlabs.org/api/series/492095/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/uboot/list/?series=492095",
            "date": "2026-02-13T08:49:49",
            "name": "Enable the IPUv3 driver to use CCF",
            "version": 3,
            "mbox": "http://patchwork.ozlabs.org/series/492095/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/2196337/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2196337/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=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"
    ]
}