From patchwork Sun Dec 29 14:49:24 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dario Binacchi X-Patchwork-Id: 13922769 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 6D924E7718B for ; Sun, 29 Dec 2024 14:51:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Transfer-Encoding: MIME-Version:Message-ID:Date:Subject:Cc:To:From:Reply-To:Content-Type: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References:List-Owner; bh=F6+f7jMoIATRyOE70ikq3cyEvYNf4urCVh8EzVTjWJY=; b=obTIRb823053zZ95G0HSoXv6Ji O5RmMmaixKZh4m23ihXogHKSidSG86nSq9amAQTE8XKf4OQKhwbjkB1cQIC/9gmclVS/PVaBEx99d ZCLuTIrIcWNo+aC26lAMMwUbHOYRtBR/yJr0u5tqWna0OCqZF8teIoJ+bW1UzpcBvKhB/zK+25od3 TszRCAC5Aa2KSaG8H+7gZa8m6Bkq7an5Q5t7SUDpBzFLvWxfGxTRMm3f32vvDhBwJ9BHJ648Vtvd+ uf8PL7Ws5dJTmcQ/s6qGpRcYaFj+0u6zdCSfeIAe90C4t4tQpCpOeMF23ov0OVP7Yz3CE01ewYkeO 8HtLiCMg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tRudw-00000003WDw-3ZYN; Sun, 29 Dec 2024 14:51:48 +0000 Received: from mail-ej1-x630.google.com ([2a00:1450:4864:20::630]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tRucj-00000003VuN-1tck for linux-arm-kernel@lists.infradead.org; Sun, 29 Dec 2024 14:50:34 +0000 Received: by mail-ej1-x630.google.com with SMTP id a640c23a62f3a-aa66e4d1d5aso1363773066b.2 for ; Sun, 29 Dec 2024 06:50:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amarulasolutions.com; s=google; t=1735483831; x=1736088631; darn=lists.infradead.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=F6+f7jMoIATRyOE70ikq3cyEvYNf4urCVh8EzVTjWJY=; b=gJdFhbdsf9Xn7PiBsYRY8h2rCR1tV2rYn8+ewI7+V6eTqNNqJlMAZhBwsjv1s7oZrG N7HdnPI5u1tC1chturn+jIviC0iOeVSED7LxXZQDZkW+poW9vM7BjRdp0+G3SxziikaJ YVBzrsM60EejQ48Z4DOEnu4ToZvCYnVhB8TuI= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1735483831; x=1736088631; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=F6+f7jMoIATRyOE70ikq3cyEvYNf4urCVh8EzVTjWJY=; b=DwwRJSx3DZpaDG1XX/dJn+p6KPKOuyidk8hmDnrnfMgx5m0/OKdt87ar/ZA1P1VWjI X90sNF2wJVTHt6/QExfxJuK+hG0wcrHnqQET+BCWUT785EezEoaX/JGQ8zEKb2byRIyS 0yKtPiY+oNXEWz0ANof/piGMoKTzSCo8maaravCtZUUcB3bbkfbI22dgvHO4+tEdJtwS gih6Ka1yKeFcWIUKJkhQPEFYMocD1JWCZ8T+6I8kGlUXLbxNSSV7OvGZD480Z6lm61w5 MwyRzrJFGE3E8P6+pgTUgDcaOBhHTZMfdrYSnTk3wFen+4Z3UuQGpcdty6hFMnLsv56/ G5xQ== X-Forwarded-Encrypted: i=1; AJvYcCXsA4GoF3Z0LSCgxdO7uIhotP7bkIF/2pMDWtbKs/qeuq6pDa7sxn8YUf9tItQgWoMLslQhGZjNl9H7teMGGI0N@lists.infradead.org X-Gm-Message-State: AOJu0Yxquza/yayfeBL9iL5kiACgmYpIo3f37qZTp//6d93o+XLj4auG XkjHfbkTZeQ1k+hDNrwRI48QNhIMoZJ0cR6euxYega1NAFTz5c14T3Ek1S0DRU0= X-Gm-Gg: ASbGncslWGCPdfSAzDi2nvFuRKV53ep3QPRLx6acMdTlPfXJ1bv4SO2NTGLqNRGacf/ ZLnBcIRzMAheuPq4pu3pGdCgUp5ShExu+nV53oxP2Px5Aa3NXC2kb8pqUzmfDQhZhynYhqgZunf 9RX9gijinLoGeWS+Foue1PmHB9QRk0wzvVi9ii7JGXii0lIflh6yrnoxOgm18QT8YQb8c25VTMB wEZPs1IDDbuhz4OXB5vNRZ1NTrfxYDbV/j85ArYjAj72WOXxZEH0Vv7U6BAz2uhRk0OwzKZtJxi iQtRvqEM6xVBz+0YYsbSWg== X-Google-Smtp-Source: AGHT+IGIDvR00Hc3XgVkeolGibSGC8tUB/z1f3sR2v4jZbZHlTnHgn1RaBqUHQyGAHVMOy56/9+qCw== X-Received: by 2002:a17:907:1c14:b0:aa6:a228:afaf with SMTP id a640c23a62f3a-aac3378d0b4mr2559257666b.52.1735483831243; Sun, 29 Dec 2024 06:50:31 -0800 (PST) Received: from dario-ThinkPad-T14s-Gen-2i.. ([2.196.43.175]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-aac0e895080sm1362084466b.47.2024.12.29.06.50.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 29 Dec 2024 06:50:30 -0800 (PST) From: Dario Binacchi To: linux-kernel@vger.kernel.org Cc: linux-amarula@amarulasolutions.com, Dario Binacchi , Abel Vesa , Conor Dooley , Fabio Estevam , Krzysztof Kozlowski , Michael Turquette , Peng Fan , Pengutronix Kernel Team , Rob Herring , Sascha Hauer , Shawn Guo , Stephen Boyd , devicetree@vger.kernel.org, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-clk@vger.kernel.org Subject: [PATCH v8 00/18] Support spread spectrum clocking for i.MX8N PLLs Date: Sun, 29 Dec 2024 15:49:24 +0100 Message-ID: <20241229145027.3984542-1-dario.binacchi@amarulasolutions.com> X-Mailer: git-send-email 2.43.0 MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20241229_065033_592177_2C78785C X-CRM114-Status: GOOD ( 17.51 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org The series adds support for spread spectrum clocking for i.MX8MN PLLs (audio, video and DRAM). It has been tested for the video PLL on a board using i.MX8MN. The patches added in version 4, such as the dt-bindings and the driver for anatop, were inspired by the extensive email exchange from version 3: https://lore.kernel.org/imx/20241106090549.3684963-1-dario.binacchi@amarulasolutions.com/ The series added spectrum spread support for the imx8mn platform only, but in case it was merged, confirming that the directives and suggestions made by the maintainers were correctly understood and implemented, I will extend this support to the imx8mm and imx8mp platforms as well. Changes in v8: - Drop the patches added in version 7: - 10/23 dt-bindings: clock: imx8m-clock: add phandle to the anatop - 11/23 arm64: dts: imx8mm: add phandle to anatop within CCM - 12/23 arm64: dts: imx8mn: add phandle to anatop within CCM - 13/23 arm64: dts: imx8mp: add phandle to anatop within CCM - 14/23 arm64: dts: imx8mq: add phandle to anatop within CCM Changes in v7: - Add and manage fsl,anatop property as phandle to the anatop node with the new patches: - 10/23 dt-bindings: clock: imx8m-clock: add phandle to the anatop - 11/23 arm64: dts: imx8mm: add phandle to anatop within CCM - 12/23 arm64: dts: imx8mn: add phandle to anatop within CCM - 13/23 arm64: dts: imx8mp: add phandle to anatop within CCM - 14/23 arm64: dts: imx8mq: add phandle to anatop within CCM Changes in v6: - Merge patches: 10/20 dt-bindings: clock: imx8mm: add binding definitions for anatop 11/20 dt-bindings: clock: imx8mn: add binding definitions for anatop 12/20 dt-bindings: clock: imx8mp: add binding definitions for anatop to 05/20 dt-bindings: clock: imx8m-anatop: define clocks/clock-names now renamed 05/18 dt-bindings: clock: imx8m-anatop: add oscillators and PLLs - Split the patch 15/20 dt-bindings-clock-imx8m-clock-support-spread-spectru.patch into 12/18 dt-bindings: clock: imx8m-clock: add PLLs 16/18 dt-bindings: clock: imx8m-clock: support spread spectrum clocking Changes in v5: - Fix compilation errors. - Separate driver code from dt-bindings Changes in v4: - Add dt-bindings for anatop - Add anatop driver - Drop fsl,ssc-clocks from spread spectrum dt-bindings Changes in v3: - Patches 1/8 has been added in version 3. The dt-bindings have been moved from fsl,imx8m-anatop.yaml to imx8m-clock.yaml. The anatop device (fsl,imx8m-anatop.yaml) is indeed more or less a syscon, so it represents a memory area accessible by ccm (imx8m-clock.yaml) to setup the PLLs. - Patches {3,5}/8 have been added in version 3. - Patches {4,6,8}/8 use ccm device node instead of the anatop one. Changes in v2: - Add "allOf:" and place it after "required:" block, like in the example schema. - Move the properties definition to the top-level. - Drop unit types as requested by the "make dt_binding_check" command. Dario Binacchi (18): dt-bindings: clock: imx8mm: add VIDEO_PLL clocks clk: imx8mm: rename video_pll1 to video_pll dt-bindings: clock: imx8mp: add VIDEO_PLL clocks clk: imx8mp: rename video_pll1 to video_pll dt-bindings: clock: imx8m-anatop: add oscillators and PLLs arm64: dts: imx8mm: add anatop clocks arm64: dts: imx8mn: add anatop clocks arm64: dts: imx8mp: add anatop clocks arm64: dts: imx8mq: add anatop clocks clk: imx: add hw API imx_anatop_get_clk_hw clk: imx: add support for i.MX8MN anatop clock driver dt-bindings: clock: imx8m-clock: add PLLs arm64: dts: imx8mm: add PLLs to clock controller module (CCM) arm64: dts: imx8mn: add PLLs to clock controller module (CCM) arm64: dts: imx8mp: add PLLs to clock controller module (CCM) dt-bindings: clock: imx8m-clock: support spread spectrum clocking clk: imx: pll14xx: support spread spectrum clock generation clk: imx8mn: support spread spectrum clock generation .../bindings/clock/fsl,imx8m-anatop.yaml | 53 +++- .../bindings/clock/imx8m-clock.yaml | 74 ++++- arch/arm64/boot/dts/freescale/imx8mm.dtsi | 11 +- arch/arm64/boot/dts/freescale/imx8mn.dtsi | 11 +- arch/arm64/boot/dts/freescale/imx8mp.dtsi | 11 +- arch/arm64/boot/dts/freescale/imx8mq.dtsi | 2 + drivers/clk/imx/Makefile | 2 +- drivers/clk/imx/clk-imx8mm.c | 102 +++---- drivers/clk/imx/clk-imx8mn-anatop.c | 283 ++++++++++++++++++ drivers/clk/imx/clk-imx8mn.c | 196 ++++++------ drivers/clk/imx/clk-imx8mp.c | 118 ++++---- drivers/clk/imx/clk-pll14xx.c | 134 +++++++++ drivers/clk/imx/clk.c | 15 + drivers/clk/imx/clk.h | 18 ++ include/dt-bindings/clock/imx8mm-clock.h | 76 ++++- include/dt-bindings/clock/imx8mn-clock.h | 64 ++++ include/dt-bindings/clock/imx8mp-clock.h | 80 ++++- 17 files changed, 1015 insertions(+), 235 deletions(-) create mode 100644 drivers/clk/imx/clk-imx8mn-anatop.c