Received: by 2002:a05:6a10:f3d0:0:0:0:0 with SMTP id a16csp2801524pxv; Mon, 12 Jul 2021 02:09:37 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzZ9nyCSLyDwoXOWXIGRr1wZm92HPWjFelrEyFCOvfYZ2/1Jj0xbjWrcAUh1yYEmljvOHIV X-Received: by 2002:a05:6638:3882:: with SMTP id b2mr31801995jav.15.1626080977190; Mon, 12 Jul 2021 02:09:37 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1626080977; cv=none; d=google.com; s=arc-20160816; b=MNiXNYQbm78rpV0LPRyzatGNVtzyLDmAzqN4eaHlrLnUD8oRDy5wEv2J1XaKdIcJGN 5xV3+PtJBhaz1TNejsgLSVssTNO+CIkQJinbL4awJ3R6lhO5x8jQ7PwZqu+1eY7jX6B+ aTW/hGBAyYJm8uxQ71xNFIpy03UXZ5egxpKxtker33CLx4i+0U7qd064cqduPU3UIxOq h5KSVFO4fr6lU/8gweOAe3niPxQliYp1A4ICxVe8Wi672od1jztzTGdIfYoZpspVvWLU suF5Wt90Y9au/fYZh4lwCkkzCYzSjH5JsoLcRg0bdfMXH7zgaB2/Zs3K5l9KbqVtbvEg uPWw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=sR4KnKKgxHN9z8BeYEVAscsOfy0MsCFzGozgJRmjHoQ=; b=A30rLP5KkPgH7SOVFeDrDusZVpqiO26T2hrMbZM4brtABgktROFRtl/6mCThH8Y0Bz Fd/bzhJx89Z+J1RoOwe2xq2QU+vmqwywmgVJC6fhALRDFBijqm5Z5clT54TFCp6utJBQ CK2apGCFYJB3xk9+gK8s3wFDpcmtlyJDmGuh902CdJ2GngLDVTEsl3ByyxHGfHDJyO8a yR5jVvJtA0bBSnj3AzBlP5RTYuVOZKmsUlBoszDQhifBx77oP8z1L6wXFIGpc610TWVH CIfeBaGPxBaL/efgcHst/IETAlysz4jKzV3Sfr5acJxWEADps46Ydjcx4tWMh983M62n ixNw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=KBTKNUYZ; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id n2si18436064jaj.36.2021.07.12.02.09.26; Mon, 12 Jul 2021 02:09:37 -0700 (PDT) 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=@chromium.org header.s=google header.b=KBTKNUYZ; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1379744AbhGLJJV (ORCPT + 99 others); Mon, 12 Jul 2021 05:09:21 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33216 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1381601AbhGLJAK (ORCPT ); Mon, 12 Jul 2021 05:00:10 -0400 Received: from mail-lj1-x22b.google.com (mail-lj1-x22b.google.com [IPv6:2a00:1450:4864:20::22b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 311B4C0613B1 for ; Mon, 12 Jul 2021 01:51:45 -0700 (PDT) Received: by mail-lj1-x22b.google.com with SMTP id q4so22931254ljp.13 for ; Mon, 12 Jul 2021 01:51:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=sR4KnKKgxHN9z8BeYEVAscsOfy0MsCFzGozgJRmjHoQ=; b=KBTKNUYZKpv1sfofoG4yBTpCqrXuE/QxxcU5XAWeL7z1AGVZFoAa5YAou4XmMVTWqr oKvV+cFzMqHu22KtQT1+v+8BIhMvn9fPjAqM+CkB2XEcVzcqyWrW/KgN16Lto6pSAWNW yMOezXNLCbp6WHbZzS+yVgpy7N2WIXBtiL8DA= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=sR4KnKKgxHN9z8BeYEVAscsOfy0MsCFzGozgJRmjHoQ=; b=PI/cj+ryTOeWc87pbdXHuMIL2d3ehOTdv0ZFpdQooT/0k9cfnUX5ntB3uxDbS8BOTg 4RPK48Vp2e8MDzmvzh8BQ0ls5VAu6tx7ej5okoY9SSbrBWxCq8udVZvbsQ7KcO54Y0A5 arI29oiNe5VdsLVgqp4KbtSpc1Uwr1EwZio9p+3/pIWitsu9pQ49jVENlcha3i+nPOE6 iSS4QzPfG5u6SCfACt2nAJrPAvAEX48Z+nSeG8NHE6VL4id8XmySCOsXAHQvs/ojZqx1 Sc1myrSpUd6EpCz2Hn2mKYase8u7+tiM2RNqYA084DrfdqxZGIxuwyV5uiV7+x3kBVkM d3WQ== X-Gm-Message-State: AOAM533B4Ti0E5XQrCZD/qaTqQRtiFaiuDNLr3E2oM/F5kxlfMZS51ym Byj1ACTyLSS6f/JJPteJ9nCs3UY/7POXSCv6uhwcbw== X-Received: by 2002:a05:651c:2115:: with SMTP id a21mr41006635ljq.185.1626079903572; Mon, 12 Jul 2021 01:51:43 -0700 (PDT) MIME-Version: 1.0 References: <20210616224743.5109-1-chun-jie.chen@mediatek.com> <20210616224743.5109-23-chun-jie.chen@mediatek.com> In-Reply-To: <20210616224743.5109-23-chun-jie.chen@mediatek.com> From: Chen-Yu Tsai Date: Mon, 12 Jul 2021 16:51:32 +0800 Message-ID: Subject: Re: [PATCH 22/22] clk: mediatek: Add MT8195 apusys clock support To: Chun-Jie Chen Cc: Matthias Brugger , Stephen Boyd , Nicolas Boichat , Rob Herring , linux-arm-kernel@lists.infradead.org, LKML , linux-mediatek@lists.infradead.org, linux-clk@vger.kernel.org, devicetree@vger.kernel.org, srv_heupstream , Project_Global_Chrome_Upstream_Group Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi, On Thu, Jun 17, 2021 at 7:00 AM Chun-Jie Chen wrote: > > Add MT8195 apusys clock provider > > Signed-off-by: Chun-Jie Chen > --- > drivers/clk/mediatek/Kconfig | 6 ++ > drivers/clk/mediatek/Makefile | 1 + > drivers/clk/mediatek/clk-mt8195-apusys_pll.c | 84 ++++++++++++++++++++ > 3 files changed, 91 insertions(+) > create mode 100644 drivers/clk/mediatek/clk-mt8195-apusys_pll.c > > diff --git a/drivers/clk/mediatek/Kconfig b/drivers/clk/mediatek/Kconfig > index ade85a52b7ed..9bd1ebff61f2 100644 > --- a/drivers/clk/mediatek/Kconfig > +++ b/drivers/clk/mediatek/Kconfig > @@ -690,6 +690,12 @@ config COMMON_CLK_MT8195_IMP_IIC_WRAP > help > This driver supports MediaTek MT8195 imp_iic_wrap clocks. > > +config COMMON_CLK_MT8195_APUSYS_PLL > + bool "Clock driver for MediaTek MT8195 apusys_pll" > + depends on COMMON_CLK_MT8195 > + help > + This driver supports MediaTek MT8195 apusys_pll clocks. > + > config COMMON_CLK_MT8516 > bool "Clock driver for MediaTek MT8516" > depends on ARCH_MEDIATEK || COMPILE_TEST > diff --git a/drivers/clk/mediatek/Makefile b/drivers/clk/mediatek/Makefile > index b10c6267ba98..676ed7d665b7 100644 > --- a/drivers/clk/mediatek/Makefile > +++ b/drivers/clk/mediatek/Makefile > @@ -98,5 +98,6 @@ obj-$(CONFIG_COMMON_CLK_MT8195_VPPSYS0) += clk-mt8195-vpp0.o > obj-$(CONFIG_COMMON_CLK_MT8195_VPPSYS1) += clk-mt8195-vpp1.o > obj-$(CONFIG_COMMON_CLK_MT8195_WPESYS) += clk-mt8195-wpe.o > obj-$(CONFIG_COMMON_CLK_MT8195_IMP_IIC_WRAP) += clk-mt8195-imp_iic_wrap.o > +obj-$(CONFIG_COMMON_CLK_MT8195_APUSYS_PLL) += clk-mt8195-apusys_pll.o > obj-$(CONFIG_COMMON_CLK_MT8516) += clk-mt8516.o > obj-$(CONFIG_COMMON_CLK_MT8516_AUDSYS) += clk-mt8516-aud.o > diff --git a/drivers/clk/mediatek/clk-mt8195-apusys_pll.c b/drivers/clk/mediatek/clk-mt8195-apusys_pll.c > new file mode 100644 > index 000000000000..d9b49cf71281 > --- /dev/null > +++ b/drivers/clk/mediatek/clk-mt8195-apusys_pll.c > @@ -0,0 +1,84 @@ > +// SPDX-License-Identifier: GPL-2.0-only > +// > +// Copyright (c) 2021 MediaTek Inc. > +// Author: Chun-Jie Chen > + > +#include > +#include > + > +#include "clk-mtk.h" > +#include "clk-gate.h" > + > +#include > + > +#define MT8195_PLL_FMAX (3800UL * MHZ) > +#define MT8195_PLL_FMIN (1500UL * MHZ) > +#define MT8195_INTEGER_BITS 8 > + > +#define PLL(_id, _name, _reg, _pwr_reg, _en_mask, _flags, \ > + _rst_bar_mask, _pcwbits, _pd_reg, _pd_shift, \ > + _tuner_reg, _tuner_en_reg, _tuner_en_bit, \ > + _pcw_reg, _pcw_shift, _pcw_chg_reg, \ > + _en_reg, _pll_en_bit) { \ Some of these fields are always set to zero in this driver. Either they use the same value, or it means the particular function is not supported in the hardware. You could move the fixed value for unsupported functions, such as rst_bar_mask, or even all common values, into the macro to simplify the macro argument list. And if you do so, please also add comments explaining which values are shared, and why they can be shared. I believe the same could also be done for the APLL driver. > + .id = _id, \ > + .name = _name, \ > + .reg = _reg, \ > + .pwr_reg = _pwr_reg, \ > + .en_mask = _en_mask, \ > + .flags = _flags, \ > + .rst_bar_mask = _rst_bar_mask, \ > + .fmax = MT8195_PLL_FMAX, \ > + .fmin = MT8195_PLL_FMIN, \ > + .pcwbits = _pcwbits, \ > + .pcwibits = MT8195_INTEGER_BITS, \ > + .pd_reg = _pd_reg, \ > + .pd_shift = _pd_shift, \ > + .tuner_reg = _tuner_reg, \ > + .tuner_en_reg = _tuner_en_reg, \ > + .tuner_en_bit = _tuner_en_bit, \ > + .pcw_reg = _pcw_reg, \ > + .pcw_shift = _pcw_shift, \ > + .pcw_chg_reg = _pcw_chg_reg, \ > + .en_reg = _en_reg, \ > + .pll_en_bit = _pll_en_bit, \ > + } > + > +static const struct mtk_pll_data apusys_plls[] = { > + PLL(CLK_APUSYS_PLL_APUPLL, "apusys_pll_apupll", 0x008, 0x014, 0, > + 0, 0, 22, 0x00c, 24, 0, 0, 0, 0x00c, 0, 0, 0, 0), > + PLL(CLK_APUSYS_PLL_NPUPLL, "apusys_pll_npupll", 0x018, 0x024, 0, > + 0, 0, 22, 0x01c, 24, 0, 0, 0, 0x01c, 0, 0, 0, 0), > + PLL(CLK_APUSYS_PLL_APUPLL1, "apusys_pll_apupll1", 0x028, 0x034, 0, > + 0, 0, 22, 0x02c, 24, 0, 0, 0, 0x02c, 0, 0, 0, 0), > + PLL(CLK_APUSYS_PLL_APUPLL2, "apusys_pll_apupll2", 0x038, 0x044, 0, > + 0, 0, 22, 0x03c, 24, 0, 0, 0, 0x03c, 0, 0, 0, 0), The datasheet doesn't provide names for these clocks. The values here look correct though. > +}; > + > +static int clk_mt8195_apusys_pll_probe(struct platform_device *pdev) > +{ > + struct clk_onecell_data *clk_data; > + struct device_node *node = pdev->dev.of_node; > + > + clk_data = mtk_alloc_clk_data(CLK_APUSYS_PLL_NR_CLK); > + if (!clk_data) > + return -ENOMEM; > + > + mtk_clk_register_plls(node, apusys_plls, ARRAY_SIZE(apusys_plls), clk_data); > + > + return of_clk_add_provider(node, of_clk_src_onecell_get, clk_data); > +} > + > +static const struct of_device_id of_match_clk_mt8195_apusys_pll[] = { > + { .compatible = "mediatek,mt8195-apusys_pll", }, > + {} > +}; > + > +static struct platform_driver clk_mt8195_apusys_pll_drv = { > + .probe = clk_mt8195_apusys_pll_probe, > + .driver = { > + .name = "clk-mt8195-apusys_pll", > + .of_match_table = of_match_clk_mt8195_apusys_pll, > + }, > +}; > + The general comments from the other patches apply as well Regards ChenYu > +builtin_platform_driver(clk_mt8195_apusys_pll_drv); > -- > 2.18.0 > _______________________________________________ > Linux-mediatek mailing list > Linux-mediatek@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-mediatek