From: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
To: Daniel Golle <daniel@makrotopia.org>,
Rob Herring <robh+dt@kernel.org>,
Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>,
Conor Dooley <conor+dt@kernel.org>,
Michael Turquette <mturquette@baylibre.com>,
Stephen Boyd <sboyd@kernel.org>,
Matthias Brugger <matthias.bgg@gmail.com>,
"David S. Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@google.com>,
Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
Sabrina Dubroca <sd@queasysnail.net>,
Jianhui Zhao <zhaojh329@gmail.com>,
Chen-Yu Tsai <wenst@chromium.org>,
"Garmin.Chang" <Garmin.Chang@mediatek.com>,
Sam Shih <sam.shih@mediatek.com>,
Frank Wunderlich <frank-w@public-files.de>,
Dan Carpenter <dan.carpenter@linaro.org>,
James Liao <jamesjj.liao@mediatek.com>,
devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-clk@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
linux-mediatek@lists.infradead.org, netdev@vger.kernel.org
Subject: Re: [PATCH v3 3/4] clk: mediatek: Add pcw_chg_shift control
Date: Wed, 6 Dec 2023 11:38:36 +0100 [thread overview]
Message-ID: <0ebce75d-0074-4128-b35e-e86ee3ee546b@collabora.com> (raw)
In-Reply-To: <40981d0bb722eb509628bcf82c31f632e4cf747a.1701823757.git.daniel@makrotopia.org>
Il 06/12/23 01:57, Daniel Golle ha scritto:
> From: Sam Shih <sam.shih@mediatek.com>
>
> Introduce pcw_chg_shfit control to optionally use that instead of the
> hardcoded PCW_CHG_MASK macro.
> This will needed for clocks on the MT7988 SoC.
>
> Signed-off-by: Sam Shih <sam.shih@mediatek.com>
> Signed-off-by: Daniel Golle <daniel@makrotopia.org>
> ---
> v3: use git --from ...
> v2: no changes
>
> drivers/clk/mediatek/clk-pll.c | 5 ++++-
> drivers/clk/mediatek/clk-pll.h | 1 +
> 2 files changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/clk/mediatek/clk-pll.c b/drivers/clk/mediatek/clk-pll.c
> index 513ab6b1b3229..9f08bc5d2a8a2 100644
> --- a/drivers/clk/mediatek/clk-pll.c
> +++ b/drivers/clk/mediatek/clk-pll.c
> @@ -114,7 +114,10 @@ static void mtk_pll_set_rate_regs(struct mtk_clk_pll *pll, u32 pcw,
> pll->data->pcw_shift);
> val |= pcw << pll->data->pcw_shift;
> writel(val, pll->pcw_addr);
> - chg = readl(pll->pcw_chg_addr) | PCW_CHG_MASK;
> + if (pll->data->pcw_chg_shift)
> + chg = readl(pll->pcw_chg_addr) | BIT(pll->data->pcw_chg_shift);
> + else
> + chg = readl(pll->pcw_chg_addr) | PCW_CHG_MASK;
> writel(chg, pll->pcw_chg_addr);
> if (pll->tuner_addr)
> writel(val + 1, pll->tuner_addr);
> diff --git a/drivers/clk/mediatek/clk-pll.h b/drivers/clk/mediatek/clk-pll.h
> index f17278ff15d78..d28d317e84377 100644
> --- a/drivers/clk/mediatek/clk-pll.h
> +++ b/drivers/clk/mediatek/clk-pll.h
> @@ -44,6 +44,7 @@ struct mtk_pll_data {
> u32 pcw_reg;
> int pcw_shift;
> u32 pcw_chg_reg;
> + int pcw_chg_shift;
> const struct mtk_pll_div_table *div_table;
> const char *parent_name;
> u32 en_reg;
Hmm... no, this is not the best at all and can be improved.
Okay, so, the situation here is that one or some PLL(s) on MT7988 have a different
PCW_CHG_MASK as far as I understand.
Situation here is:
- Each PLL must be registered to clk-pll
- Each driver declaring a PLL does exactly so
- There's a function to register the PLL
You definitely don't want to add a conditional in pll_set_rate(): even though
this is technically not a performance path on the current SoCs (and will probably
never be), it's simply useless to have this (very small) overhead there.
The solution is to:
- Change that pcw_chg_shift to an unsigned short int type (or u8, your call):
you don't need 32 bits for this number, as the expected range of this member
is [0-31], and this can be expressed in just 4 bits (u8 is the smallest though)
- Add that to function mtk_clk_register_pll_ops()
- Change mtk_pll_set_rate_regs() to always do
chg = readl(pll->pcw_chg_addr) | BIT(pll->data->pcw_chg_shift);
Cheers,
Angelo
WARNING: multiple messages have this Message-ID (diff)
From: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
To: Daniel Golle <daniel@makrotopia.org>,
Rob Herring <robh+dt@kernel.org>,
Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>,
Conor Dooley <conor+dt@kernel.org>,
Michael Turquette <mturquette@baylibre.com>,
Stephen Boyd <sboyd@kernel.org>,
Matthias Brugger <matthias.bgg@gmail.com>,
"David S. Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@google.com>,
Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
Sabrina Dubroca <sd@queasysnail.net>,
Jianhui Zhao <zhaojh329@gmail.com>,
Chen-Yu Tsai <wenst@chromium.org>,
"Garmin.Chang" <Garmin.Chang@mediatek.com>,
Sam Shih <sam.shih@mediatek.com>,
Frank Wunderlich <frank-w@public-files.de>,
Dan Carpenter <dan.carpenter@linaro.org>,
James Liao <jamesjj.liao@mediatek.com>,
devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-clk@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
linux-mediatek@lists.infradead.org, netdev@vger.kernel.org
Subject: Re: [PATCH v3 3/4] clk: mediatek: Add pcw_chg_shift control
Date: Wed, 6 Dec 2023 11:38:36 +0100 [thread overview]
Message-ID: <0ebce75d-0074-4128-b35e-e86ee3ee546b@collabora.com> (raw)
In-Reply-To: <40981d0bb722eb509628bcf82c31f632e4cf747a.1701823757.git.daniel@makrotopia.org>
Il 06/12/23 01:57, Daniel Golle ha scritto:
> From: Sam Shih <sam.shih@mediatek.com>
>
> Introduce pcw_chg_shfit control to optionally use that instead of the
> hardcoded PCW_CHG_MASK macro.
> This will needed for clocks on the MT7988 SoC.
>
> Signed-off-by: Sam Shih <sam.shih@mediatek.com>
> Signed-off-by: Daniel Golle <daniel@makrotopia.org>
> ---
> v3: use git --from ...
> v2: no changes
>
> drivers/clk/mediatek/clk-pll.c | 5 ++++-
> drivers/clk/mediatek/clk-pll.h | 1 +
> 2 files changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/clk/mediatek/clk-pll.c b/drivers/clk/mediatek/clk-pll.c
> index 513ab6b1b3229..9f08bc5d2a8a2 100644
> --- a/drivers/clk/mediatek/clk-pll.c
> +++ b/drivers/clk/mediatek/clk-pll.c
> @@ -114,7 +114,10 @@ static void mtk_pll_set_rate_regs(struct mtk_clk_pll *pll, u32 pcw,
> pll->data->pcw_shift);
> val |= pcw << pll->data->pcw_shift;
> writel(val, pll->pcw_addr);
> - chg = readl(pll->pcw_chg_addr) | PCW_CHG_MASK;
> + if (pll->data->pcw_chg_shift)
> + chg = readl(pll->pcw_chg_addr) | BIT(pll->data->pcw_chg_shift);
> + else
> + chg = readl(pll->pcw_chg_addr) | PCW_CHG_MASK;
> writel(chg, pll->pcw_chg_addr);
> if (pll->tuner_addr)
> writel(val + 1, pll->tuner_addr);
> diff --git a/drivers/clk/mediatek/clk-pll.h b/drivers/clk/mediatek/clk-pll.h
> index f17278ff15d78..d28d317e84377 100644
> --- a/drivers/clk/mediatek/clk-pll.h
> +++ b/drivers/clk/mediatek/clk-pll.h
> @@ -44,6 +44,7 @@ struct mtk_pll_data {
> u32 pcw_reg;
> int pcw_shift;
> u32 pcw_chg_reg;
> + int pcw_chg_shift;
> const struct mtk_pll_div_table *div_table;
> const char *parent_name;
> u32 en_reg;
Hmm... no, this is not the best at all and can be improved.
Okay, so, the situation here is that one or some PLL(s) on MT7988 have a different
PCW_CHG_MASK as far as I understand.
Situation here is:
- Each PLL must be registered to clk-pll
- Each driver declaring a PLL does exactly so
- There's a function to register the PLL
You definitely don't want to add a conditional in pll_set_rate(): even though
this is technically not a performance path on the current SoCs (and will probably
never be), it's simply useless to have this (very small) overhead there.
The solution is to:
- Change that pcw_chg_shift to an unsigned short int type (or u8, your call):
you don't need 32 bits for this number, as the expected range of this member
is [0-31], and this can be expressed in just 4 bits (u8 is the smallest though)
- Add that to function mtk_clk_register_pll_ops()
- Change mtk_pll_set_rate_regs() to always do
chg = readl(pll->pcw_chg_addr) | BIT(pll->data->pcw_chg_shift);
Cheers,
Angelo
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2023-12-06 10:38 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-12-06 0:55 [PATCH v3 1/4] dt-bindings: clock: mediatek: add MT7988 clock IDs Daniel Golle
2023-12-06 0:55 ` Daniel Golle
2023-12-06 0:57 ` [PATCH v3 2/4] dt-bindings: clock: mediatek: add clock controllers of MT7988 Daniel Golle
2023-12-06 0:57 ` Daniel Golle
2023-12-06 10:21 ` Krzysztof Kozlowski
2023-12-06 10:21 ` Krzysztof Kozlowski
2023-12-06 10:59 ` AngeloGioacchino Del Regno
2023-12-06 10:59 ` AngeloGioacchino Del Regno
2023-12-06 12:45 ` Daniel Golle
2023-12-06 12:45 ` Daniel Golle
2023-12-06 12:45 ` Daniel Golle
2023-12-07 17:03 ` Krzysztof Kozlowski
2023-12-07 17:03 ` Krzysztof Kozlowski
2023-12-07 17:03 ` Krzysztof Kozlowski
2023-12-07 17:17 ` Daniel Golle
2023-12-07 17:17 ` Daniel Golle
2023-12-07 17:17 ` Daniel Golle
2023-12-07 17:23 ` Krzysztof Kozlowski
2023-12-07 17:23 ` Krzysztof Kozlowski
2023-12-07 17:23 ` Krzysztof Kozlowski
2023-12-06 0:57 ` [PATCH v3 3/4] clk: mediatek: Add pcw_chg_shift control Daniel Golle
2023-12-06 0:57 ` Daniel Golle
2023-12-06 10:38 ` AngeloGioacchino Del Regno [this message]
2023-12-06 10:38 ` AngeloGioacchino Del Regno
2023-12-09 0:10 ` Daniel Golle
2023-12-09 0:10 ` Daniel Golle
2023-12-09 0:10 ` Daniel Golle
2023-12-06 0:57 ` [PATCH v3 4/4] clk: mediatek: add drivers for MT7988 SoC Daniel Golle
2023-12-06 0:57 ` Daniel Golle
2023-12-06 10:58 ` AngeloGioacchino Del Regno
2023-12-06 10:58 ` AngeloGioacchino Del Regno
2023-12-06 10:20 ` [PATCH v3 1/4] dt-bindings: clock: mediatek: add MT7988 clock IDs Krzysztof Kozlowski
2023-12-06 10:20 ` Krzysztof Kozlowski
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=0ebce75d-0074-4128-b35e-e86ee3ee546b@collabora.com \
--to=angelogioacchino.delregno@collabora.com \
--cc=Garmin.Chang@mediatek.com \
--cc=conor+dt@kernel.org \
--cc=dan.carpenter@linaro.org \
--cc=daniel@makrotopia.org \
--cc=davem@davemloft.net \
--cc=devicetree@vger.kernel.org \
--cc=edumazet@google.com \
--cc=frank-w@public-files.de \
--cc=jamesjj.liao@mediatek.com \
--cc=krzysztof.kozlowski+dt@linaro.org \
--cc=kuba@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-clk@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mediatek@lists.infradead.org \
--cc=matthias.bgg@gmail.com \
--cc=mturquette@baylibre.com \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=robh+dt@kernel.org \
--cc=sam.shih@mediatek.com \
--cc=sboyd@kernel.org \
--cc=sd@queasysnail.net \
--cc=wenst@chromium.org \
--cc=zhaojh329@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.