Received: by 2002:a05:6a10:af89:0:0:0:0 with SMTP id iu9csp5467605pxb; Wed, 26 Jan 2022 12:41:44 -0800 (PST) X-Google-Smtp-Source: ABdhPJxI4jhvhJ2MlB31BmvHLcvOGXgG0iRodbIgqsJQdrO+twVu5JN0sGWmI+V0kbXNVI8rOO6+ X-Received: by 2002:aa7:9838:: with SMTP id q24mr197978pfl.76.1643229704687; Wed, 26 Jan 2022 12:41:44 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1643229704; cv=none; d=google.com; s=arc-20160816; b=Gf7JlahoS+VBi17C6Ay7TD4TmSPHzEtqK/nKrCPefpSfrSIz6TlSV5OtQYbLwzv/4b eEn3qLG4nrrFA+IMRVWb/kKKVpUcDJjUhdzNy+A3YnFe19q3o3ryIqHW4iW2e+IiCjgF MX3H/15Ivc1K6PJddPApgr4KUKD1SeSfEaYrtUEJuYHhGsS9PHdOlOY//3ohHHTbr8eo L+nYXDGYugt1zXuqFhZGugAmbavW2g2QQOzyW1RPKpiqXLWIjlcXeG9o8OSBFpeXInOs EFKsdMzxb1BPv7c/Ml/Q8vaZj/hipovtskQHaAzRUE8UvtQ2Vsqalf39OQXS29H5G/Xo 22zA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:message-id:in-reply-to:date:subject :cc:to:from:user-agent:references:dkim-signature; bh=6W0uXYBUGimlgrjGSvj7ylLW7W4DYopOCTHsVfAmY4k=; b=MgB1uvMGECV+QOlHwK38S/9O2k5/iRFeb3oVRL8CHF7CmHYsS/GiTNp1PtcAuUuv9g bse9KZa4vQuK03ttNAn7hv8NaTFoCkT/l+WHMaxclfoe/S3deeGjV2jxeJyqK50/J0fG Ya18qJsa71/RM7+nqyJsDpLknO7uA5OGlhnyyL3sF6VQvjcp5PchxdSJnhlNj0tMXIS8 csBDWFkcixL8PGpiCt+ZgISRbsolBIhWq513id+33E3VQTtUW+0QDRJAf7UeRGQRozCx nr3mKQfn4okdrQscG9GdCa4G6ccFmViuvdWSdY09yFQ/Qw8tKCwjzCzoI+HeolXwJ7HO gxAw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@baylibre-com.20210112.gappssmtp.com header.s=20210112 header.b=LTgwi81M; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id w69si286959pgd.259.2022.01.26.12.41.32; Wed, 26 Jan 2022 12:41:44 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@baylibre-com.20210112.gappssmtp.com header.s=20210112 header.b=LTgwi81M; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238972AbiAZJTi (ORCPT + 99 others); Wed, 26 Jan 2022 04:19:38 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41668 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230127AbiAZJTg (ORCPT ); Wed, 26 Jan 2022 04:19:36 -0500 Received: from mail-wr1-x436.google.com (mail-wr1-x436.google.com [IPv6:2a00:1450:4864:20::436]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 815C4C06161C for ; Wed, 26 Jan 2022 01:19:36 -0800 (PST) Received: by mail-wr1-x436.google.com with SMTP id a13so24563483wrh.9 for ; Wed, 26 Jan 2022 01:19:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=references:user-agent:from:to:cc:subject:date:in-reply-to :message-id:mime-version; bh=6W0uXYBUGimlgrjGSvj7ylLW7W4DYopOCTHsVfAmY4k=; b=LTgwi81MnixOV81jpbU8WYduofSRLnxZ7CM0Zne4n+Wg/oyiGO3kvyOeLMnKM0S4XQ /ZhTYdiZOlKLZPoVTHPWaD7Cqf+sBxvnaKx16wH1LRCuANSHrYlLfP891usJo+IWQAJx tuMXr5msG9wWVUcBkssTOmwknn7N4js1l7enttugM55f+Yb698SB/qzRyV9IjIV9Dxiv iQONJ/t3pZxbqvdPZjf0PXMPeVn+SYmvVFf8KlJGem9+ODyGxb4aJduyCHYiY88BQKhz BVwZWWlwo488sLzlcBYrb60g5xvMYj+JrnUKS0W+tz3YYZbt+RDm3Cj347YWSao2WSSe u64Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:references:user-agent:from:to:cc:subject:date :in-reply-to:message-id:mime-version; bh=6W0uXYBUGimlgrjGSvj7ylLW7W4DYopOCTHsVfAmY4k=; b=s3vCQjNPfUn29n4re+9EVzn7fRGLH7IfmLLS0ODZlOlR4Y2hF1uGTHXM7nh5VDqOjz qZjzmBa7to4GB2VNLLya74n6Fdvg2OpkjZud53mtstmaqSGnAB2It3d7hG0O1f42sQAQ Ku7FIP3Nb9Jotm3kbbrR8QE0HFmV091DM2wLESsKA/NhOBSSmKyp45JSN7fVbOjMzrnk J0sF3jkxyOrVFGki5mwcbqubjn2nRH6+rKkshf4Z6IEqFLwcPuszkelHb0eu9bn+ExZB vzZ8TI9kJPohXo7eKuWIIysF0g58YVOzT7GXr0lcTwZz9y+R08f/CLGWY0RnroeSXW91 Tp7A== X-Gm-Message-State: AOAM531a8MhAje0Bmmmjsv5O+ithvMO9b68W9dYyF+IVXp8cHqR00VkV QYgmrOrCylrvlKGJ3j3N1CXKyw== X-Received: by 2002:a5d:6da1:: with SMTP id u1mr1657242wrs.281.1643188775011; Wed, 26 Jan 2022 01:19:35 -0800 (PST) Received: from localhost (82-65-169-74.subs.proxad.net. [82.65.169.74]) by smtp.gmail.com with ESMTPSA id h8sm2913872wmq.26.2022.01.26.01.19.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 26 Jan 2022 01:19:34 -0800 (PST) References: <20220121074508.42168-1-liang.yang@amlogic.com> <6eb4f247-367b-d460-6314-fc94ccd00b89@amlogic.com> User-agent: mu4e 1.6.10; emacs 27.1 From: Jerome Brunet To: Liang Yang , Neil Armstrong , Kevin Hilman , Michael Turquette , Stephen Boyd , Rob Herring , linux-clk@vger.kernel.org Cc: Martin Blumenstingl , Jianxin Pan , Victor Wan , XianWei Zhao , Kelvin Zhang , BiChao Zheng , YongHui Yu , linux-arm-kernel@lists.infradead.org, linux-amlogic@lists.infradead.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org Subject: Re: [PATCH v10 0/4] clk: meson: add a sub EMMC clock controller support Date: Wed, 26 Jan 2022 10:14:55 +0100 In-reply-to: <6eb4f247-367b-d460-6314-fc94ccd00b89@amlogic.com> Message-ID: <1jy23226sa.fsf@starbuckisacylon.baylibre.com> MIME-Version: 1.0 Content-Type: text/plain Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed 26 Jan 2022 at 17:08, Liang Yang wrote: > Hi Neil, > > On 2022/1/25 22:54, Neil Armstrong wrote: >> [ EXTERNAL EMAIL ] >> Hi Liang, >> On 21/01/2022 08:45, Liang Yang wrote: >>> This driver will add a MMC clock controller driver support. >>> The original idea about adding a clock controller is during the >>> discussion in the NAND driver mainline effort[1]. >>> >>> This driver is tested in the S400 board (AXG platform) with NAND driver. >> Thanks a lot for providing a fixed and updated version of this serie. >> After some chat with Jerome and Kevin, it seems the way the eMMC clock >> reuse >> for NAND was designed nearly 4 years doesn't look accurate anymore. >> Having a separate clk driver designed to replace the eMMC node when NAND >> is >> used on the board seems over engineered. >> Actually having the clock code you add in this serie _but_ directly in >> the NAND looks far better, and more coherent since having Linux runtime >> detection of eMMC vs NAND will never happen and even this serie required >> some DT modification from the bootloader. >> I'll let Jerome or Kevin add more details if they want, but I think you >> should resurrect >> the work you pushed in [1] & [2] but: >> - passing the eMMC clk registers as a third "reg" cell > Does it just need to define a 'reg' resource in NFC node and not 'syscon' > here? Yes >> - passing the same "clocks" phandle as the eMMC node >> - adding the eMMC clock code in the NAND driver directly >> I'm open to discussions if you consider the current approach is still >> superior. > > I don't have persuasive ideas, but really it shares the common clock > implementation for both NFC and EMMC. and we don't need to paste the > same code in NFC and EMMC. You don't need to copy everything. If I understood correctly, all the Rx/Tx should not be needed. Yes, there is some duplication as it stands but it allows to avoid coupling the MMC and NAND driver. We can still think about optimizing things later on. Let's get something simply working first. > >> Thanks, >> Neil >> [1] >> https://lore.kernel.org/r/20220106033130.37623-1-liang.yang@amlogic.com >> [2] https://lore.kernel.org/r/20220106032504.23310-1-liang.yang@amlogic.com >> >>> >>> Changes since v9 [10] >>> - use clk_parent_data instead of parent_names >>> >>> Changes since v8 [9] >>> - use MESON_SCLK_ONE_BASED instead of CLK_DIVIDER_ONE_BASED >>> - use struct_size to caculate onecell_data >>> - add clk-phase-delay.h >>> - define CLK_DELAY_STEP_PS_GX and CLK_DELAY_STEP_PS_AXG >>> >>> Changes since v7 [8] >>> - move meson_clk_get_phase_delay_data() from header to driver >>> - CONFIG sclk-div with COMMON_CLK_AMLOGIC instead of COMMON_CLK_AMLOGIC_AUDIO >>> - remove onecell date and ID for internal MUX clk >>> - use helper for functions for ONE_BASED in sclk-div >>> - add ONE_BASED support for duty cycle >>> >>> Changes since v6 [7]: >>> - add one based support for sclk divier >>> - alloc sclk in probe for multiple instance >>> - fix coding styles >>> >>> Changes since v5 [6]: >>> - remove divider ops with .init and use sclk_div instead >>> - drop CLK_DIVIDER_ROUND_CLOSEST in mux and div >>> - drop the useless type cast >>> >>> Changes since v4 [5]: >>> - use struct parm in phase delay driver >>> - remove 0 delay releted part in phase delay driver >>> - don't rebuild the parent name once again >>> - add divider ops with .init >>> >>> Changes since v3 [4]: >>> - separate clk-phase-delay driver >>> - replace clk_get_rate() with clk_hw_get_rate() >>> - collect Rob's R-Y >>> - drop 'meson-' prefix from compatible string >>> >>> Changes since v2 [3]: >>> - squash dt-binding clock-id patch >>> - update license >>> - fix alignment >>> - construct a clk register helper() function >>> >>> Changes since v1 [2]: >>> - implement phase clock >>> - update compatible name >>> - adjust file name >>> - divider probe() into small functions, and re-use them >>> >>> [1] https://lkml.kernel.org/r/20180628090034.0637a062@xps13 >>> [2] https://lkml.kernel.org/r/20180703145716.31860-1-yixun.lan@amlogic.com >>> [3] https://lkml.kernel.org/r/20180710163658.6175-1-yixun.lan@amlogic.com >>> [4] https://lkml.kernel.org/r/20180712211244.11428-1-yixun.lan@amlogic.com >>> [5] https://lkml.kernel.org/r/20180809070724.11935-4-yixun.lan@amlogic.com >>> [6] https://lkml.kernel.org/r/1539839245-13793-1-git-send-email-jianxin.pan@amlogic.com >>> [7] https://lkml.kernel.org/r/1541089855-19356-1-git-send-email-jianxin.pan@amlogic.com >>> [8] https://lkml.kernel.org/r/1544457877-51301-1-git-send-email-jianxin.pan@amlogic.com >>> [9] https://lkml.kernel.org/r/1545063850-21504-1-git-send-email-jianxin.pan@amlogic.com >>> [10] https://lore.kernel.org/all/20220113115745.45826-1-liang.yang@amlogic.com/ >>> Liang Yang (4): >>> clk: meson: add one based divider support for sclk >>> clk: meson: add emmc sub clock phase delay driver >>> clk: meson: add DT documentation for emmc clock controller >>> clk: meson: add sub MMC clock controller driver >>> >>> .../bindings/clock/amlogic,mmc-clkc.yaml | 64 ++++ >>> drivers/clk/meson/Kconfig | 18 ++ >>> drivers/clk/meson/Makefile | 2 + >>> drivers/clk/meson/clk-phase-delay.c | 69 ++++ >>> drivers/clk/meson/clk-phase-delay.h | 20 ++ >>> drivers/clk/meson/mmc-clkc.c | 302 ++++++++++++++++++ >>> drivers/clk/meson/sclk-div.c | 59 ++-- >>> drivers/clk/meson/sclk-div.h | 3 + >>> include/dt-bindings/clock/amlogic,mmc-clkc.h | 14 + >>> 9 files changed, 529 insertions(+), 22 deletions(-) >>> create mode 100644 Documentation/devicetree/bindings/clock/amlogic,mmc-clkc.yaml >>> create mode 100644 drivers/clk/meson/clk-phase-delay.c >>> create mode 100644 drivers/clk/meson/clk-phase-delay.h >>> create mode 100644 drivers/clk/meson/mmc-clkc.c >>> create mode 100644 include/dt-bindings/clock/amlogic,mmc-clkc.h >>> >> .