From: Stephen Boyd <sboyd@codeaurora.org>
To: Jeremy McNicoll <jeremymc@redhat.com>
Cc: linux-arm-msm@vger.kernel.org, linux-soc@vger.kernel.org,
devicetree@vger.kernel.org, linux-mmc@vger.kernel.org,
andy.gross@linaro.org, robh@kernel.org, arnd@arndb.de,
bjorn.andersson@linaro.org, riteshh@codeaurora.org, git@kchr.de,
ulf.hansson@linaro.org, jszhang@marvell.com
Subject: Re: [PATCH V2 1/4] clk: gcc: Updates for SDHCI enablement
Date: Tue, 17 Jan 2017 15:25:42 -0800 [thread overview]
Message-ID: <20170117232542.GV17126@codeaurora.org> (raw)
In-Reply-To: <1484614729-26751-2-git-send-email-jeremymc@redhat.com>
On 01/16, Jeremy McNicoll wrote:
> Global clock updates to enable onboard SDHCI / MMC.
> Re-tabify dt-bindings to align correctly in vim.
We need much more words here on what's going on in this patch.
>
> Signed-off-by: Jeremy McNicoll <jeremymc@redhat.com>
> ---
> drivers/clk/qcom/gcc-msm8994.c | 108 +++++++++++++++++++++------
> include/dt-bindings/clock/qcom,gcc-msm8994.h | 32 ++++----
> 2 files changed, 106 insertions(+), 34 deletions(-)
>
> diff --git a/drivers/clk/qcom/gcc-msm8994.c b/drivers/clk/qcom/gcc-msm8994.c
> index 8afd830..2bf8d1b 100644
> --- a/drivers/clk/qcom/gcc-msm8994.c
> +++ b/drivers/clk/qcom/gcc-msm8994.c
> @@ -24,6 +24,7 @@
>
> #include "common.h"
> #include "clk-regmap.h"
> +#include "clk-pll.h"
Why?
> #include "clk-alpha-pll.h"
> #include "clk-rcg.h"
> #include "clk-branch.h"
> @@ -54,7 +55,7 @@ static const struct parent_map gcc_xo_gpll0_gpll4_map[] = {
> static const char * const gcc_xo_gpll0_gpll4[] = {
> "xo",
> "gpll0",
> - "gpll4",
> + "gpll4_vote",
> };
>
> #define F(f, s, h, m, n) { (f), (s), (2 * (h) - 1), (m), (n) }
> @@ -97,29 +98,65 @@ static struct clk_alpha_pll_postdiv gpll0 = {
> },
> };
>
> -static struct clk_alpha_pll gpll4_early = {
> - .offset = 0x1dc0,
> - .clkr = {
> - .enable_reg = 0x1480,
> - .enable_mask = BIT(4),
This is doing PLL voting.
> - .hw.init = &(struct clk_init_data)
> - {
> - .name = "gpll4_early",
> - .parent_names = (const char *[]) { "xo" },
> - .num_parents = 1,
> - .ops = &clk_alpha_pll_ops,
> - },
> +
> +static struct clk_rcg2 config_noc_clk_src = {
> + .cmd_rcgr = 0x0150,
> + .hid_width = 5,
> + .parent_map = gcc_xo_gpll0_map,
> + .clkr.hw.init = &(struct clk_init_data) {
> + .name = "config_noc_clk_src",
> + .parent_names = gcc_xo_gpll0,
> + .num_parents = 2,
> + .ops = &clk_rcg2_ops,
> + },
> +};
> +
> +static struct clk_rcg2 periph_noc_clk_src = {
> + .cmd_rcgr = 0x0190,
> + .hid_width = 5,
> + .mnd_width = 8,
> + .parent_map = gcc_xo_gpll0_map,
> + .clkr.hw.init = &(struct clk_init_data) {
> + .name = "periph_noc_clk_src",
> + .parent_names = gcc_xo_gpll0,
> + .num_parents = 2,
> + .ops = &clk_rcg2_ops,
> + },
> +};
> +
> +static struct clk_rcg2 system_noc_clk_src = {
> + .cmd_rcgr = 0x0120, //TODO
This is right.
> + .hid_width = 5,
> + .parent_map = gcc_xo_gpll0_map,
> + .clkr.hw.init = &(struct clk_init_data) {
> + .name = "system_noc_clk_src",
> + .parent_names = gcc_xo_gpll0,
> + .num_parents = 2,
> + .ops = &clk_rcg2_ops,
> },
> };
>
> -static struct clk_alpha_pll_postdiv gpll4 = {
> - .offset = 0x1dc0,
> +static struct clk_pll gpll4 = {
gpll4 is an alpha PLL though.
> + .status_reg = 0x1dc0,
> + .status_bit = 30,
> .clkr.hw.init = &(struct clk_init_data)
> {
> .name = "gpll4",
> - .parent_names = (const char *[]) { "gpll4_early" },
> + .parent_names = (const char *[]) { "xo" },
> .num_parents = 1,
> - .ops = &clk_alpha_pll_postdiv_ops,
> + .ops = &clk_pll_ops,
> + },
> +};
> +
> +static struct clk_regmap gpll4_vote = {
> + .enable_reg = 0x1480,
> + .enable_mask = BIT(4),
> + .hw.init = &(struct clk_init_data)
This part is rather confusing.
> + {
> + .name = "gpll4_vote",
> + .parent_names = (const char *[]) { "gpll4" },
> + .num_parents = 1,
> + .ops = &clk_pll_vote_ops,
> },
> };
>
> @@ -896,8 +933,8 @@ static struct freq_tbl ftbl_sdcc1_apps_clk_src[] = {
> F(25000000, P_GPLL0, 12, 1, 2),
> F(50000000, P_GPLL0, 12, 0, 0),
> F(100000000, P_GPLL0, 6, 0, 0),
> - F(192000000, P_GPLL4, 2, 0, 0),
> - F(384000000, P_GPLL4, 1, 0, 0),
> + F(172000000, P_GPLL4, 2, 0, 0),
> + F(344000000, P_GPLL4, 1, 0, 0),
It seems that gpll4 runs at slightly different speeds on 8994 and
8992. You'll need to differentiate which SoC it is and update the
frequency table appropriately. That can be done with the gcc
node's compatible string. That also means gcc-msm8992 needs to be
added and used as a compatible string.
> { }
> };
>
> @@ -1057,6 +1094,10 @@ static struct clk_branch gcc_blsp1_ahb_clk = {
> .hw.init = &(struct clk_init_data)
> {
> .name = "gcc_blsp1_ahb_clk",
> + .parent_names = (const char *[]){
> + "periph_noc_clk_src",
> + },
> + .num_parents = 1,
> .ops = &clk_branch2_ops,
> },
> },
> @@ -1872,6 +1913,7 @@ static struct clk_branch gcc_pdm2_clk = {
>
> static struct clk_branch gcc_sdcc1_apps_clk = {
> .halt_reg = 0x04c4,
> + .halt_check = BRANCH_HALT_VOTED,
> .clkr = {
> .enable_reg = 0x04c4,
> .enable_mask = BIT(0),
> @@ -1888,6 +1930,26 @@ static struct clk_branch gcc_sdcc1_apps_clk = {
> },
> };
>
> +
> +static struct clk_branch gcc_sdcc1_ahb_clk = {
> + .halt_reg = 0x04c8,
> + .halt_check = BRANCH_HALT_VOTED,
Why voted?
> diff --git a/include/dt-bindings/clock/qcom,gcc-msm8994.h b/include/dt-bindings/clock/qcom,gcc-msm8994.h
> index 8fa535b..e4063d5 100644
> --- a/include/dt-bindings/clock/qcom,gcc-msm8994.h
> +++ b/include/dt-bindings/clock/qcom,gcc-msm8994.h
> @@ -15,10 +15,10 @@
> #ifndef _DT_BINDINGS_CLK_MSM_GCC_8994_H
> #define _DT_BINDINGS_CLK_MSM_GCC_8994_H
>
> -#define GPLL0_EARLY 0
> #define GPLL0 1
> -#define GPLL4_EARLY 2
> -#define GPLL4 3
> +#define GPLL0_VOTE 0
Please keep the numbers ordered.
> +#define GPLL4 2
> +#define GPLL4_VOTE 3
> #define UFS_AXI_CLK_SRC 4
> #define USB30_MASTER_CLK_SRC 5
> #define BLSP1_QUP1_I2C_APPS_CLK_SRC 6
> @@ -123,15 +123,21 @@
> #define GCC_SDCC2_APPS_CLK 105
> #define GCC_SDCC3_APPS_CLK 106
> #define GCC_SDCC4_APPS_CLK 107
> -#define GCC_SYS_NOC_UFS_AXI_CLK 108
> -#define GCC_SYS_NOC_USB3_AXI_CLK 109
> -#define GCC_TSIF_REF_CLK 110
> -#define GCC_UFS_AXI_CLK 111
> -#define GCC_UFS_RX_CFG_CLK 112
> -#define GCC_UFS_TX_CFG_CLK 113
> -#define GCC_USB30_MASTER_CLK 114
> -#define GCC_USB30_MOCK_UTMI_CLK 115
> -#define GCC_USB3_PHY_AUX_CLK 116
> -#define GCC_USB_HS_SYSTEM_CLK 117
> +#define GCC_SDCC1_AHB_CLK 108
> +#define GCC_SDCC2_AHB_CLK 109
There should be an ahb clk for sdcc3 and sdcc4 too. Please just
add the defines even if they're not used.
> +
> +#define GCC_SYS_NOC_UFS_AXI_CLK 110
And don't change the numbering randomly. This should still be
108.
> +#define GCC_SYS_NOC_USB3_AXI_CLK 111
> +#define GCC_TSIF_REF_CLK 112
> +#define GCC_UFS_AXI_CLK 113
> +#define GCC_UFS_RX_CFG_CLK 114
> +#define GCC_UFS_TX_CFG_CLK 115
> +#define GCC_USB30_MASTER_CLK 116
> +#define GCC_USB30_MOCK_UTMI_CLK 117
> +#define GCC_USB3_PHY_AUX_CLK 118
> +#define GCC_USB_HS_SYSTEM_CLK 119
> +#define SYSTEM_NOC_CLK_SRC 120
> +#define PERIPH_NOC_CLK_SRC 121
> +#define CONFIG_NOC_CLK_SRC 122
And then the diff will be understandable.
--
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
a Linux Foundation Collaborative Project
next prev parent reply other threads:[~2017-01-17 23:25 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-01-17 0:58 [PATCH V2 0/4] Enable onboard SDHCI for Nexus 5X (msm8992) Jeremy McNicoll
[not found] ` <1484614729-26751-1-git-send-email-jeremymc-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2017-01-17 0:58 ` [PATCH V2 1/4] clk: gcc: Updates for SDHCI enablement Jeremy McNicoll
2017-01-17 23:25 ` Stephen Boyd [this message]
[not found] ` <20170117232542.GV17126-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2017-01-18 20:14 ` Jeremy McNicoll
2017-01-17 0:58 ` [PATCH V2 2/4] sdhci: Add quirk for delayed IRQ ACK Jeremy McNicoll
2017-01-17 0:58 ` [PATCH V2 3/4] arm64: dts: Enable SDHCI for Nexus 5X (msm8992) Jeremy McNicoll
[not found] ` <1484614729-26751-4-git-send-email-jeremymc-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2017-01-18 19:02 ` Bjorn Andersson
2017-01-20 0:20 ` Jeremy McNicoll
2017-01-19 17:21 ` Rob Herring
2017-01-17 0:58 ` [PATCH V2 4/4] dts: doc: rename rpm_requests to respect DT naming conventions Jeremy McNicoll
2017-01-19 17:22 ` Rob Herring
2017-01-23 10:39 ` Jeremy McNicoll
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=20170117232542.GV17126@codeaurora.org \
--to=sboyd@codeaurora.org \
--cc=andy.gross@linaro.org \
--cc=arnd@arndb.de \
--cc=bjorn.andersson@linaro.org \
--cc=devicetree@vger.kernel.org \
--cc=git@kchr.de \
--cc=jeremymc@redhat.com \
--cc=jszhang@marvell.com \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-mmc@vger.kernel.org \
--cc=linux-soc@vger.kernel.org \
--cc=riteshh@codeaurora.org \
--cc=robh@kernel.org \
--cc=ulf.hansson@linaro.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).