From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id E09D7C47083 for ; Fri, 4 Jun 2021 03:58:54 +0000 (UTC) Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id C1B0961358 for ; Fri, 4 Jun 2021 03:58:52 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org C1B0961358 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 3CFA282FFB; Fri, 4 Jun 2021 05:58:49 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="L9Yd6qgn"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 63D2982FF8; Fri, 4 Jun 2021 05:58:46 +0200 (CEST) Received: from mail-qk1-x732.google.com (mail-qk1-x732.google.com [IPv6:2607:f8b0:4864:20::732]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 1779F82CAC for ; Fri, 4 Jun 2021 05:58:40 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=seanga2@gmail.com Received: by mail-qk1-x732.google.com with SMTP id h20so8109177qko.11 for ; Thu, 03 Jun 2021 20:58:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=fmVSc8q3Cihl5c0nxls1XctVh07LWN5yViMHq1pSovU=; b=L9Yd6qgn/hBHcDl0SV7SN41PtX2eEVrQsouey0bNed1tWCNUVdkpX7rRXKhq6dVrtU 9LlGDSfAvzOuvpRnJUyj4wuAHm++GmKWg0+A8i05xVwejoIHzQaZI8t/YaOJnHAzQyXE YUYlMReThRupQXN7saMK2sZRchRxhhXkeFlyDwvLR54cs8iObMMz9RDSoWTzeeUZOa6/ nkraV+NN6fJuI9dQsSTj+k3qLRP51aJ0ybKeiWPEUpjcYJw7o2pXRCEI+ErV6WBjzIIl Cnm+MgqhVh4aTd8uHZVVcMj2QyG+6Kyz8PVocb8LvO333egYqmuvM2VNtabdtK1Nb7Lo RwiQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=fmVSc8q3Cihl5c0nxls1XctVh07LWN5yViMHq1pSovU=; b=mCG16v8n6MB5VN5R0muky5mqYqQ19uXn50G7H75tt1SityhNFxF4Cw4DJMcXq8voYD oVwWrHCpcTycJ6uJ9fUYVnBF4PV3btrtPAjvCplMDvwezrfA0jc8uvGmZPpzkxFlYTW+ kkSZ2uc+X6bA26B7/IPVVNznrz0Y8yb7/B+/oYNHFLR8QPnHAZc80KV5lt+34soNNdfu yniDqJpKSUfCXmdiZw4q0sghqBKl12IuJKiAXQe/CDqAtq4MbTmyl0ljVd4GwyVwfF6+ My+Fv7+Nuu64Li55i07oEl3hxDs6+WTMv905pVMq1mp6cnlfaKXegXmwHtNuV3z6HPF9 I1jg== X-Gm-Message-State: AOAM531qUYtdpMweFKkgmNEXigxVk37nqMTrKiVlVlKPf0+iCYeTdCgA r9yNd576AhRzSD/ZxDXcpKCXmqGKmss= X-Google-Smtp-Source: ABdhPJwWKoNpDObjYc+YH/QALK5I4nsPsb4tBL3dJf3w0ERn6ypJmv3NkRITrhfaB5BmQUT1oWnUNg== X-Received: by 2002:a37:7c02:: with SMTP id x2mr2486017qkc.483.1622779118537; Thu, 03 Jun 2021 20:58:38 -0700 (PDT) Received: from godwin.fios-router.home (pool-74-96-87-9.washdc.fios.verizon.net. [74.96.87.9]) by smtp.gmail.com with ESMTPSA id s10sm3120612qkj.77.2021.06.03.20.58.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Jun 2021 20:58:38 -0700 (PDT) From: Sean Anderson To: u-boot@lists.denx.de Cc: Lukasz Majewski , Leo Liang , Damien Le Moal , Sean Anderson , Andreas Dannenberg , Lokesh Vutla , Philipp Tomsich Subject: [PATCH v2 00/11] clk: k210: Rewrite K210 clock without CCF Date: Thu, 3 Jun 2021 23:58:23 -0400 Message-Id: <20210604035834.625772-1-seanga2@gmail.com> X-Mailer: git-send-email 2.31.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.102.4 at phobos.denx.de X-Virus-Status: Clean This is something I've been meaning to do for a while but only just got around to. The CCF has been quite unwieldy in a few ways: * It is very rigid, and there are not easy ways to hook into it without rewriting many things. See e.g. things like the bypass clock and all the _half clocks which were created because CCF didn't support the dividers used on the k210. While preparing this series, I encountered several edge cases which I had initially overlooked (or which were not supported in the initial release). These would have been very difficult to fix with CCF, but were much easier to address because each funcion is implemented in one place. * There is a lot of magic going on under the curtains because of all the CCF code which lives in many different files. Some things live in drivers, but many things live in e.g. clk-uclass.c. So many things live in so many files and it can be very difficult to get a handle on what exactly happens. Complicating this is that there is a conflation of struct clk as a handle and struct clk as a device. In this regard, refcounting is completely broken. IMO we should just do away with refcounts and only disable clocks when explicitly asked for. * It is very dependent on runtime initialization. Typically, everything is initialized by calling into various register() functions, usually with several wrappers to avoid specifying all the arguments. This balloons the runtime memory usage since there are so many devices created. It also makes it hard to debug, since if you do it the "typical" way it is easy to accidentally assign a clock to the wrong register. * It inflates code size by pulling in not just some dead code (e.g. this driver does not use divider tables but they are in clk-divider anyway) but also pulling in numerous imx-specific clocks. This could be fixed, but I don't want to due to the other reasons listed. I am very happy to have completely excised it from my driver. IMO there should be big warning signs on the CCF warning not to use it for new code. This would hopefully dissuade those like myself who had no idea that CCF was *not* in fact a good way to write a clock driver. Overall there is a total savings of 12k from this series. text data bss dec hex filename 292485 32672 12624 337781 52775 before/u-boot 283125 29856 12624 325605 4f7e5 after/u-boot This series depends on https://patchwork.ozlabs.org/project/uboot/list/?series=238211 Changes in v2: - Convert stage to enum - Only force probe clocks pre-reloc - Rebase on u-boot/master Sean Anderson (11): clk: Allow force setting clock defaults before relocation clk: k210: Rewrite to remove CCF clk: k210: Move pll into the rest of the driver clk: k210: Implement soc_clk_dump clk: k210: Re-add support for setting rate clk: k210: Don't set PLL rates if we are already at the correct rate clk: k210: Remove bypass driver clk: k210: Move k210 clock out of its own subdirectory k210: dts: Set PLL1 to the same rate as PLL0 k210: Don't imply CCF test: Add K210 PLL tests to sandbox defconfigs MAINTAINERS | 4 +- arch/riscv/dts/k210.dtsi | 2 + board/sipeed/maix/Kconfig | 2 - configs/sandbox64_defconfig | 2 + configs/sandbox_defconfig | 2 + configs/sandbox_flattree_defconfig | 2 + configs/sipeed_maix_bitm_defconfig | 1 - drivers/clk/Kconfig | 14 +- drivers/clk/Makefile | 2 +- drivers/clk/clk-uclass.c | 27 +- drivers/clk/clk_kendryte.c | 1320 +++++++++++++++++++++++ drivers/clk/kendryte/Kconfig | 12 - drivers/clk/kendryte/Makefile | 1 - drivers/clk/kendryte/bypass.c | 273 ----- drivers/clk/kendryte/clk.c | 668 ------------ drivers/clk/kendryte/pll.c | 585 ---------- drivers/clk/rockchip/clk_rk3308.c | 2 +- drivers/core/device.c | 2 +- drivers/net/gmac_rockchip.c | 2 +- include/clk.h | 30 +- include/dt-bindings/clock/k210-sysctl.h | 94 +- include/kendryte/bypass.h | 31 - include/kendryte/clk.h | 35 - include/kendryte/pll.h | 34 - 24 files changed, 1436 insertions(+), 1711 deletions(-) create mode 100644 drivers/clk/clk_kendryte.c delete mode 100644 drivers/clk/kendryte/Kconfig delete mode 100644 drivers/clk/kendryte/Makefile delete mode 100644 drivers/clk/kendryte/bypass.c delete mode 100644 drivers/clk/kendryte/clk.c delete mode 100644 drivers/clk/kendryte/pll.c delete mode 100644 include/kendryte/bypass.h delete mode 100644 include/kendryte/clk.h -- 2.31.0