* [PATCH v2 1/6] clk: qcom: clk-alpha-pll: add support for APSS PLL @ 2022-05-03 19:56 Robert Marko 2022-05-03 19:56 ` [PATCH v2 2/6] dt-bindings: clock: Add support for IPQ8074 APSS clock controller Robert Marko ` (4 more replies) 0 siblings, 5 replies; 12+ messages in thread From: Robert Marko @ 2022-05-03 19:56 UTC (permalink / raw) To: agross, bjorn.andersson, jassisinghbrar, robh+dt, krzysztof.kozlowski+dt, mturquette, sboyd, linux-arm-msm, linux-kernel, devicetree, linux-clk, dmitry.baryshkov Cc: Robert Marko APSS PLL type will be used by the IPQ8074 APSS driver for providing the CPU core clocks and enabling CPU Frequency scaling. This is ported from the downstream 5.4 kernel. Signed-off-by: Robert Marko <robimarko@gmail.com> --- drivers/clk/qcom/clk-alpha-pll.c | 12 ++++++++++++ drivers/clk/qcom/clk-alpha-pll.h | 1 + 2 files changed, 13 insertions(+) diff --git a/drivers/clk/qcom/clk-alpha-pll.c b/drivers/clk/qcom/clk-alpha-pll.c index 4406cf609aae..8270363ff98e 100644 --- a/drivers/clk/qcom/clk-alpha-pll.c +++ b/drivers/clk/qcom/clk-alpha-pll.c @@ -154,6 +154,18 @@ const u8 clk_alpha_pll_regs[][PLL_OFF_MAX_REGS] = { [PLL_OFF_TEST_CTL_U] = 0x30, [PLL_OFF_TEST_CTL_U1] = 0x34, }, + [CLK_ALPHA_PLL_TYPE_APSS] = { + [PLL_OFF_L_VAL] = 0x08, + [PLL_OFF_ALPHA_VAL] = 0x10, + [PLL_OFF_ALPHA_VAL_U] = 0xff, + [PLL_OFF_USER_CTL] = 0x18, + [PLL_OFF_USER_CTL_U] = 0xff, + [PLL_OFF_CONFIG_CTL] = 0x20, + [PLL_OFF_CONFIG_CTL_U] = 0x24, + [PLL_OFF_TEST_CTL] = 0x30, + [PLL_OFF_TEST_CTL_U] = 0x34, + [PLL_OFF_STATUS] = 0x28, + }, }; EXPORT_SYMBOL_GPL(clk_alpha_pll_regs); diff --git a/drivers/clk/qcom/clk-alpha-pll.h b/drivers/clk/qcom/clk-alpha-pll.h index 6e9907deaf30..626fdf80336d 100644 --- a/drivers/clk/qcom/clk-alpha-pll.h +++ b/drivers/clk/qcom/clk-alpha-pll.h @@ -18,6 +18,7 @@ enum { CLK_ALPHA_PLL_TYPE_AGERA, CLK_ALPHA_PLL_TYPE_ZONDA, CLK_ALPHA_PLL_TYPE_LUCID_EVO, + CLK_ALPHA_PLL_TYPE_APSS, CLK_ALPHA_PLL_TYPE_MAX, }; -- 2.35.1 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH v2 2/6] dt-bindings: clock: Add support for IPQ8074 APSS clock controller 2022-05-03 19:56 [PATCH v2 1/6] clk: qcom: clk-alpha-pll: add support for APSS PLL Robert Marko @ 2022-05-03 19:56 ` Robert Marko 2022-05-04 20:08 ` Rob Herring 2022-05-03 19:56 ` [PATCH v2 3/6] clk: qcom: Add " Robert Marko ` (3 subsequent siblings) 4 siblings, 1 reply; 12+ messages in thread From: Robert Marko @ 2022-05-03 19:56 UTC (permalink / raw) To: agross, bjorn.andersson, jassisinghbrar, robh+dt, krzysztof.kozlowski+dt, mturquette, sboyd, linux-arm-msm, linux-kernel, devicetree, linux-clk, dmitry.baryshkov Cc: Robert Marko Add dt-binding for the IPQ8074 APSS clock controller which provides clocks to the CPU cores. Signed-off-by: Robert Marko <robimarko@gmail.com> --- Changes in v2: * Correct subject --- include/dt-bindings/clock/qcom,apss-ipq8074.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 include/dt-bindings/clock/qcom,apss-ipq8074.h diff --git a/include/dt-bindings/clock/qcom,apss-ipq8074.h b/include/dt-bindings/clock/qcom,apss-ipq8074.h new file mode 100644 index 000000000000..df07766b0146 --- /dev/null +++ b/include/dt-bindings/clock/qcom,apss-ipq8074.h @@ -0,0 +1,14 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (c) 2021, The Linux Foundation. All rights reserved. + */ + +#ifndef _DT_BINDINGS_CLOCK_QCA_APSS_IPQ8074_H +#define _DT_BINDINGS_CLOCK_QCA_APSS_IPQ8074_H + +#define APSS_PLL_EARLY 0 +#define APSS_PLL 1 +#define APCS_ALIAS0_CLK_SRC 2 +#define APCS_ALIAS0_CORE_CLK 3 + +#endif -- 2.35.1 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH v2 2/6] dt-bindings: clock: Add support for IPQ8074 APSS clock controller 2022-05-03 19:56 ` [PATCH v2 2/6] dt-bindings: clock: Add support for IPQ8074 APSS clock controller Robert Marko @ 2022-05-04 20:08 ` Rob Herring 2022-05-04 20:45 ` Robert Marko 0 siblings, 1 reply; 12+ messages in thread From: Rob Herring @ 2022-05-04 20:08 UTC (permalink / raw) To: Robert Marko Cc: agross, bjorn.andersson, jassisinghbrar, krzysztof.kozlowski+dt, mturquette, sboyd, linux-arm-msm, linux-kernel, devicetree, linux-clk, dmitry.baryshkov On Tue, May 03, 2022 at 09:56:01PM +0200, Robert Marko wrote: > Add dt-binding for the IPQ8074 APSS clock controller which provides > clocks to the CPU cores. > > Signed-off-by: Robert Marko <robimarko@gmail.com> > --- > Changes in v2: > * Correct subject > --- > include/dt-bindings/clock/qcom,apss-ipq8074.h | 14 ++++++++++++++ > 1 file changed, 14 insertions(+) > create mode 100644 include/dt-bindings/clock/qcom,apss-ipq8074.h > > diff --git a/include/dt-bindings/clock/qcom,apss-ipq8074.h b/include/dt-bindings/clock/qcom,apss-ipq8074.h > new file mode 100644 > index 000000000000..df07766b0146 > --- /dev/null > +++ b/include/dt-bindings/clock/qcom,apss-ipq8074.h > @@ -0,0 +1,14 @@ > +/* SPDX-License-Identifier: GPL-2.0 */ Dual license please. > +/* > + * Copyright (c) 2021, The Linux Foundation. All rights reserved. > + */ > + > +#ifndef _DT_BINDINGS_CLOCK_QCA_APSS_IPQ8074_H > +#define _DT_BINDINGS_CLOCK_QCA_APSS_IPQ8074_H > + > +#define APSS_PLL_EARLY 0 > +#define APSS_PLL 1 > +#define APCS_ALIAS0_CLK_SRC 2 > +#define APCS_ALIAS0_CORE_CLK 3 > + > +#endif > -- > 2.35.1 > > ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v2 2/6] dt-bindings: clock: Add support for IPQ8074 APSS clock controller 2022-05-04 20:08 ` Rob Herring @ 2022-05-04 20:45 ` Robert Marko 2022-05-09 21:12 ` Rob Herring 0 siblings, 1 reply; 12+ messages in thread From: Robert Marko @ 2022-05-04 20:45 UTC (permalink / raw) To: Rob Herring Cc: Andy Gross, Bjorn Andersson, Jassi Brar, krzysztof.kozlowski+dt, Michael Turquette, Stephen Boyd, linux-arm-msm, open list, Devicetree List, linux-clk, dmitry.baryshkov On Wed, 4 May 2022 at 22:08, Rob Herring <robh@kernel.org> wrote: > > On Tue, May 03, 2022 at 09:56:01PM +0200, Robert Marko wrote: > > Add dt-binding for the IPQ8074 APSS clock controller which provides > > clocks to the CPU cores. > > > > Signed-off-by: Robert Marko <robimarko@gmail.com> > > --- > > Changes in v2: > > * Correct subject > > --- > > include/dt-bindings/clock/qcom,apss-ipq8074.h | 14 ++++++++++++++ > > 1 file changed, 14 insertions(+) > > create mode 100644 include/dt-bindings/clock/qcom,apss-ipq8074.h > > > > diff --git a/include/dt-bindings/clock/qcom,apss-ipq8074.h b/include/dt-bindings/clock/qcom,apss-ipq8074.h > > new file mode 100644 > > index 000000000000..df07766b0146 > > --- /dev/null > > +++ b/include/dt-bindings/clock/qcom,apss-ipq8074.h > > @@ -0,0 +1,14 @@ > > +/* SPDX-License-Identifier: GPL-2.0 */ > > Dual license please. Hi Rob, Krzysztof asked about this in v1, I have derived this off IPQ6018 binding which is marked GPL-2.0. So, I was not sure if it was appropriate to mark it as GPL/BSD dual license. If you say that its not an issue to dual-license, I will gladly do it. Regards, Robert > > > +/* > > + * Copyright (c) 2021, The Linux Foundation. All rights reserved. > > + */ > > + > > +#ifndef _DT_BINDINGS_CLOCK_QCA_APSS_IPQ8074_H > > +#define _DT_BINDINGS_CLOCK_QCA_APSS_IPQ8074_H > > + > > +#define APSS_PLL_EARLY 0 > > +#define APSS_PLL 1 > > +#define APCS_ALIAS0_CLK_SRC 2 > > +#define APCS_ALIAS0_CORE_CLK 3 > > + > > +#endif > > -- > > 2.35.1 > > > > ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v2 2/6] dt-bindings: clock: Add support for IPQ8074 APSS clock controller 2022-05-04 20:45 ` Robert Marko @ 2022-05-09 21:12 ` Rob Herring 2022-05-10 15:58 ` Robert Marko 0 siblings, 1 reply; 12+ messages in thread From: Rob Herring @ 2022-05-09 21:12 UTC (permalink / raw) To: Robert Marko Cc: Andy Gross, Bjorn Andersson, Jassi Brar, krzysztof.kozlowski+dt, Michael Turquette, Stephen Boyd, linux-arm-msm, open list, Devicetree List, linux-clk, dmitry.baryshkov On Wed, May 04, 2022 at 10:45:22PM +0200, Robert Marko wrote: > On Wed, 4 May 2022 at 22:08, Rob Herring <robh@kernel.org> wrote: > > > > On Tue, May 03, 2022 at 09:56:01PM +0200, Robert Marko wrote: > > > Add dt-binding for the IPQ8074 APSS clock controller which provides > > > clocks to the CPU cores. > > > > > > Signed-off-by: Robert Marko <robimarko@gmail.com> > > > --- > > > Changes in v2: > > > * Correct subject > > > --- > > > include/dt-bindings/clock/qcom,apss-ipq8074.h | 14 ++++++++++++++ > > > 1 file changed, 14 insertions(+) > > > create mode 100644 include/dt-bindings/clock/qcom,apss-ipq8074.h > > > > > > diff --git a/include/dt-bindings/clock/qcom,apss-ipq8074.h b/include/dt-bindings/clock/qcom,apss-ipq8074.h > > > new file mode 100644 > > > index 000000000000..df07766b0146 > > > --- /dev/null > > > +++ b/include/dt-bindings/clock/qcom,apss-ipq8074.h > > > @@ -0,0 +1,14 @@ > > > +/* SPDX-License-Identifier: GPL-2.0 */ > > > > Dual license please. > > Hi Rob, > Krzysztof asked about this in v1, I have derived this off IPQ6018 > binding which is marked GPL-2.0. > So, I was not sure if it was appropriate to mark it as GPL/BSD dual license. > If you say that its not an issue to dual-license, I will gladly do it. Technically, you should maintain it, but I don't think 2 defines is really enough to represent copyrightable work (but IANAL). I also know that QCom prefers the DT stuff to be dual licensed because they've raised the issue with me. Rob ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v2 2/6] dt-bindings: clock: Add support for IPQ8074 APSS clock controller 2022-05-09 21:12 ` Rob Herring @ 2022-05-10 15:58 ` Robert Marko 0 siblings, 0 replies; 12+ messages in thread From: Robert Marko @ 2022-05-10 15:58 UTC (permalink / raw) To: Rob Herring Cc: Andy Gross, Bjorn Andersson, Jassi Brar, krzysztof.kozlowski+dt, Michael Turquette, Stephen Boyd, linux-arm-msm, open list, Devicetree List, linux-clk, dmitry.baryshkov On Mon, 9 May 2022 at 23:12, Rob Herring <robh@kernel.org> wrote: > > On Wed, May 04, 2022 at 10:45:22PM +0200, Robert Marko wrote: > > On Wed, 4 May 2022 at 22:08, Rob Herring <robh@kernel.org> wrote: > > > > > > On Tue, May 03, 2022 at 09:56:01PM +0200, Robert Marko wrote: > > > > Add dt-binding for the IPQ8074 APSS clock controller which provides > > > > clocks to the CPU cores. > > > > > > > > Signed-off-by: Robert Marko <robimarko@gmail.com> > > > > --- > > > > Changes in v2: > > > > * Correct subject > > > > --- > > > > include/dt-bindings/clock/qcom,apss-ipq8074.h | 14 ++++++++++++++ > > > > 1 file changed, 14 insertions(+) > > > > create mode 100644 include/dt-bindings/clock/qcom,apss-ipq8074.h > > > > > > > > diff --git a/include/dt-bindings/clock/qcom,apss-ipq8074.h b/include/dt-bindings/clock/qcom,apss-ipq8074.h > > > > new file mode 100644 > > > > index 000000000000..df07766b0146 > > > > --- /dev/null > > > > +++ b/include/dt-bindings/clock/qcom,apss-ipq8074.h > > > > @@ -0,0 +1,14 @@ > > > > +/* SPDX-License-Identifier: GPL-2.0 */ > > > > > > Dual license please. > > > > Hi Rob, > > Krzysztof asked about this in v1, I have derived this off IPQ6018 > > binding which is marked GPL-2.0. > > So, I was not sure if it was appropriate to mark it as GPL/BSD dual license. > > If you say that its not an issue to dual-license, I will gladly do it. > > Technically, you should maintain it, but I don't think 2 defines is > really enough to represent copyrightable work (but IANAL). I also know > that QCom prefers the DT stuff to be dual licensed because they've > raised the issue with me. If that is the case, then I will dual-license it and send in v4 as I am waiting for the code portion to get some comments before resending. Regards, Robert > > Rob ^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH v2 3/6] clk: qcom: Add IPQ8074 APSS clock controller 2022-05-03 19:56 [PATCH v2 1/6] clk: qcom: clk-alpha-pll: add support for APSS PLL Robert Marko 2022-05-03 19:56 ` [PATCH v2 2/6] dt-bindings: clock: Add support for IPQ8074 APSS clock controller Robert Marko @ 2022-05-03 19:56 ` Robert Marko 2022-05-03 19:56 ` [PATCH v2 4/6] mailbox: qcom-apcs-ipc: add IPQ8074 APSS clock controller support Robert Marko ` (2 subsequent siblings) 4 siblings, 0 replies; 12+ messages in thread From: Robert Marko @ 2022-05-03 19:56 UTC (permalink / raw) To: agross, bjorn.andersson, jassisinghbrar, robh+dt, krzysztof.kozlowski+dt, mturquette, sboyd, linux-arm-msm, linux-kernel, devicetree, linux-clk, dmitry.baryshkov Cc: Robert Marko, Ansuel Smith IPQ8074 APSS clock controller provides the clock for the IPQ8074 CPU cores, thus also providing support for CPU frequency scaling. It looks like they are clocked by the XO and a custom APSS type PLL. Co-developed-by: Ansuel Smith <ansuelsmth@gmail.com> Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com> Signed-off-by: Robert Marko <robimarko@gmail.com> --- Changes in v2: * Convert to using parent-data instead of parent-names --- drivers/clk/qcom/Kconfig | 11 +++ drivers/clk/qcom/Makefile | 1 + drivers/clk/qcom/apss-ipq8074.c | 170 ++++++++++++++++++++++++++++++++ 3 files changed, 182 insertions(+) create mode 100644 drivers/clk/qcom/apss-ipq8074.c diff --git a/drivers/clk/qcom/Kconfig b/drivers/clk/qcom/Kconfig index d01436be6d7a..ea2ecb062563 100644 --- a/drivers/clk/qcom/Kconfig +++ b/drivers/clk/qcom/Kconfig @@ -134,6 +134,17 @@ config IPQ_APSS_6018 Say Y if you want to support CPU frequency scaling on ipq based devices. +config IPQ_APSS_8074 + tristate "IPQ8074 APSS Clock Controller" + select IPQ_GCC_8074 + depends on QCOM_APCS_IPC || COMPILE_TEST + help + Support for APSS clock controller on IPQ8074 platforms. The + APSS clock controller manages the Mux and enable block that feeds the + CPUs. + Say Y if you want to support CPU frequency scaling on + IPQ8074 based devices. + config IPQ_GCC_4019 tristate "IPQ4019 Global Clock Controller" help diff --git a/drivers/clk/qcom/Makefile b/drivers/clk/qcom/Makefile index 671cf5821af1..7b2da6dd570c 100644 --- a/drivers/clk/qcom/Makefile +++ b/drivers/clk/qcom/Makefile @@ -22,6 +22,7 @@ obj-$(CONFIG_APQ_MMCC_8084) += mmcc-apq8084.o obj-$(CONFIG_CLK_GFM_LPASS_SM8250) += lpass-gfm-sm8250.o obj-$(CONFIG_IPQ_APSS_PLL) += apss-ipq-pll.o obj-$(CONFIG_IPQ_APSS_6018) += apss-ipq6018.o +obj-$(CONFIG_IPQ_APSS_8074) += apss-ipq8074.o obj-$(CONFIG_IPQ_GCC_4019) += gcc-ipq4019.o obj-$(CONFIG_IPQ_GCC_6018) += gcc-ipq6018.o obj-$(CONFIG_IPQ_GCC_806X) += gcc-ipq806x.o diff --git a/drivers/clk/qcom/apss-ipq8074.c b/drivers/clk/qcom/apss-ipq8074.c new file mode 100644 index 000000000000..38d03cd0ff76 --- /dev/null +++ b/drivers/clk/qcom/apss-ipq8074.c @@ -0,0 +1,170 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (c) 2022, The Linux Foundation. All rights reserved. + */ + +#include <linux/clk-provider.h> +#include <linux/err.h> +#include <linux/kernel.h> +#include <linux/module.h> +#include <linux/platform_device.h> +#include <linux/regmap.h> + +#include <dt-bindings/clock/qcom,apss-ipq8074.h> + +#include "common.h" +#include "clk-regmap.h" +#include "clk-pll.h" +#include "clk-rcg.h" +#include "clk-branch.h" +#include "clk-alpha-pll.h" +#include "clk-regmap-divider.h" +#include "clk-regmap-mux.h" + +#define F(f, s, h, m, n) { (f), (s), (2 * (h) - 1), (m), (n) } + +enum { + P_XO, + P_GPLL0, + P_GPLL2, + P_GPLL4, + P_APSS_PLL_EARLY, + P_APSS_PLL +}; + +static struct clk_alpha_pll apss_pll_early = { + .offset = 0x5000, + .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_APSS], + .clkr = { + .enable_reg = 0x5000, + .enable_mask = BIT(0), + .hw.init = &(struct clk_init_data){ + .name = "apss_pll_early", + .parent_data = &(const struct clk_parent_data) { + .fw_name = "xo", .name = "xo" + }, + .num_parents = 1, + .ops = &clk_alpha_pll_huayra_ops, + }, + }, +}; + +static struct clk_alpha_pll_postdiv apss_pll = { + .offset = 0x5000, + .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_APSS], + .width = 2, + .clkr.hw.init = &(struct clk_init_data){ + .name = "apss_pll", + .parent_hws = (const struct clk_hw *[]){ + &apss_pll_early.clkr.hw }, + .num_parents = 1, + .ops = &clk_alpha_pll_postdiv_ro_ops, + }, +}; + +static const struct clk_parent_data parents_apcs_alias0_clk_src[] = { + { .fw_name = "xo", .name = "xo" }, + { .fw_name = "gpll0", .name = "gpll0" }, + { .fw_name = "gpll2", .name = "gpll2" }, + { .fw_name = "gpll4", .name = "gpll4" }, + { .hw = &apss_pll.clkr.hw }, + { .hw = &apss_pll_early.clkr.hw }, +}; + +static const struct parent_map parents_apcs_alias0_clk_src_map[] = { + { P_XO, 0 }, + { P_GPLL0, 4 }, + { P_GPLL2, 2 }, + { P_GPLL4, 1 }, + { P_APSS_PLL, 3 }, + { P_APSS_PLL_EARLY, 5 }, +}; + +struct freq_tbl ftbl_apcs_alias0_clk_src[] = { + F(19200000, P_XO, 1, 0, 0), + F(403200000, P_APSS_PLL_EARLY, 1, 0, 0), + F(806400000, P_APSS_PLL_EARLY, 1, 0, 0), + F(1017600000, P_APSS_PLL_EARLY, 1, 0, 0), + F(1382400000, P_APSS_PLL_EARLY, 1, 0, 0), + F(1651200000, P_APSS_PLL_EARLY, 1, 0, 0), + F(1843200000, P_APSS_PLL_EARLY, 1, 0, 0), + F(1920000000, P_APSS_PLL_EARLY, 1, 0, 0), + F(2208000000UL, P_APSS_PLL_EARLY, 1, 0, 0), + { } +}; + +struct clk_rcg2 apcs_alias0_clk_src = { + .cmd_rcgr = 0x0050, + .freq_tbl = ftbl_apcs_alias0_clk_src, + .hid_width = 5, + .parent_map = parents_apcs_alias0_clk_src_map, + .clkr.hw.init = &(struct clk_init_data){ + .name = "apcs_alias0_clk_src", + .parent_data = parents_apcs_alias0_clk_src, + .num_parents = ARRAY_SIZE(parents_apcs_alias0_clk_src), + .ops = &clk_rcg2_ops, + .flags = CLK_SET_RATE_PARENT, + }, +}; + +static struct clk_branch apcs_alias0_core_clk = { + .halt_reg = 0x0058, + .halt_bit = 31, + .clkr = { + .enable_reg = 0x0058, + .enable_mask = BIT(0), + .hw.init = &(struct clk_init_data){ + .name = "apcs_alias0_core_clk", + .parent_hws = (const struct clk_hw *[]){ + &apcs_alias0_clk_src.clkr.hw }, + .num_parents = 1, + .flags = CLK_SET_RATE_PARENT | + CLK_IS_CRITICAL, + .ops = &clk_branch2_ops, + }, + }, +}; + +static struct clk_regmap *apss_ipq8074_clks[] = { + [APSS_PLL_EARLY] = &apss_pll_early.clkr, + [APSS_PLL] = &apss_pll.clkr, + [APCS_ALIAS0_CLK_SRC] = &apcs_alias0_clk_src.clkr, + [APCS_ALIAS0_CORE_CLK] = &apcs_alias0_core_clk.clkr, +}; + +static const struct regmap_config apss_ipq8074_regmap_config = { + .reg_bits = 32, + .reg_stride = 4, + .val_bits = 32, + .max_register = 0x5ffc, + .fast_io = true, +}; + +static const struct qcom_cc_desc apss_ipq8074_desc = { + .config = &apss_ipq8074_regmap_config, + .clks = apss_ipq8074_clks, + .num_clks = ARRAY_SIZE(apss_ipq8074_clks), +}; + +static int apss_ipq8074_probe(struct platform_device *pdev) +{ + struct regmap *regmap; + + regmap = dev_get_regmap(pdev->dev.parent, NULL); + if (!regmap) + return -ENODEV; + + return qcom_cc_really_probe(pdev, &apss_ipq8074_desc, regmap); +} + +static struct platform_driver apss_ipq8074_driver = { + .probe = apss_ipq8074_probe, + .driver = { + .name = "qcom,apss-ipq8074-clk", + }, +}; + +module_platform_driver(apss_ipq8074_driver); + +MODULE_DESCRIPTION("Qualcomm IPQ8074 APSS clock driver"); +MODULE_LICENSE("GPL"); -- 2.35.1 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH v2 4/6] mailbox: qcom-apcs-ipc: add IPQ8074 APSS clock controller support 2022-05-03 19:56 [PATCH v2 1/6] clk: qcom: clk-alpha-pll: add support for APSS PLL Robert Marko 2022-05-03 19:56 ` [PATCH v2 2/6] dt-bindings: clock: Add support for IPQ8074 APSS clock controller Robert Marko 2022-05-03 19:56 ` [PATCH v2 3/6] clk: qcom: Add " Robert Marko @ 2022-05-03 19:56 ` Robert Marko 2022-05-03 19:56 ` [PATCH v2 5/6] dt-bindings: mailbox: qcom: set correct #clock-cells Robert Marko 2022-05-03 19:56 ` [PATCH v2 6/6] arm64: dts: ipq8074: update APCS node due to clock support Robert Marko 4 siblings, 0 replies; 12+ messages in thread From: Robert Marko @ 2022-05-03 19:56 UTC (permalink / raw) To: agross, bjorn.andersson, jassisinghbrar, robh+dt, krzysztof.kozlowski+dt, mturquette, sboyd, linux-arm-msm, linux-kernel, devicetree, linux-clk, dmitry.baryshkov Cc: Robert Marko IPQ8074 has the APSS clock controller utilizing the same register space as the APCS, so provide access to the APSS utilizing a child device like IPQ6018 does as well, but just by utilizing the IPQ8074 specific APSS clock driver. Also, APCS register space in IPQ8074 is 0x6000 so max_register needs to be updated to 0x5FFC. Signed-off-by: Robert Marko <robimarko@gmail.com> --- drivers/mailbox/qcom-apcs-ipc-mailbox.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/drivers/mailbox/qcom-apcs-ipc-mailbox.c b/drivers/mailbox/qcom-apcs-ipc-mailbox.c index 80a54d81412e..b3b9debf5673 100644 --- a/drivers/mailbox/qcom-apcs-ipc-mailbox.c +++ b/drivers/mailbox/qcom-apcs-ipc-mailbox.c @@ -33,6 +33,10 @@ static const struct qcom_apcs_ipc_data ipq6018_apcs_data = { .offset = 8, .clk_name = "qcom,apss-ipq6018-clk" }; +static const struct qcom_apcs_ipc_data ipq8074_apcs_data = { + .offset = 8, .clk_name = "qcom,apss-ipq8074-clk" +}; + static const struct qcom_apcs_ipc_data msm8916_apcs_data = { .offset = 8, .clk_name = "qcom-apcs-msm8916-clk" }; @@ -57,7 +61,7 @@ static const struct regmap_config apcs_regmap_config = { .reg_bits = 32, .reg_stride = 4, .val_bits = 32, - .max_register = 0x1008, + .max_register = 0x5FFC, .fast_io = true, }; @@ -142,7 +146,7 @@ static int qcom_apcs_ipc_remove(struct platform_device *pdev) /* .data is the offset of the ipc register within the global block */ static const struct of_device_id qcom_apcs_ipc_of_match[] = { { .compatible = "qcom,ipq6018-apcs-apps-global", .data = &ipq6018_apcs_data }, - { .compatible = "qcom,ipq8074-apcs-apps-global", .data = &msm8994_apcs_data }, + { .compatible = "qcom,ipq8074-apcs-apps-global", .data = &ipq8074_apcs_data }, { .compatible = "qcom,msm8916-apcs-kpss-global", .data = &msm8916_apcs_data }, { .compatible = "qcom,msm8939-apcs-kpss-global", .data = &msm8916_apcs_data }, { .compatible = "qcom,msm8953-apcs-kpss-global", .data = &msm8994_apcs_data }, -- 2.35.1 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH v2 5/6] dt-bindings: mailbox: qcom: set correct #clock-cells 2022-05-03 19:56 [PATCH v2 1/6] clk: qcom: clk-alpha-pll: add support for APSS PLL Robert Marko ` (2 preceding siblings ...) 2022-05-03 19:56 ` [PATCH v2 4/6] mailbox: qcom-apcs-ipc: add IPQ8074 APSS clock controller support Robert Marko @ 2022-05-03 19:56 ` Robert Marko 2022-05-05 8:37 ` Krzysztof Kozlowski 2022-05-03 19:56 ` [PATCH v2 6/6] arm64: dts: ipq8074: update APCS node due to clock support Robert Marko 4 siblings, 1 reply; 12+ messages in thread From: Robert Marko @ 2022-05-03 19:56 UTC (permalink / raw) To: agross, bjorn.andersson, jassisinghbrar, robh+dt, krzysztof.kozlowski+dt, mturquette, sboyd, linux-arm-msm, linux-kernel, devicetree, linux-clk, dmitry.baryshkov Cc: Robert Marko, Krzysztof Kozlowski IPQ6018 and IPQ8074 require #clock-cells to be set to 1 as their APSS clock driver provides multiple clock outputs. So allow setting 1 as #clock-cells and check that its set to 1 for IPQ6018 and IPQ8074, check others for 0 as its currently. Signed-off-by: Robert Marko <robimarko@gmail.com> Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> --- Changes in v2: * Correct subject name --- .../mailbox/qcom,apcs-kpss-global.yaml | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/Documentation/devicetree/bindings/mailbox/qcom,apcs-kpss-global.yaml b/Documentation/devicetree/bindings/mailbox/qcom,apcs-kpss-global.yaml index 3b5ba7ecc19d..1f803925867e 100644 --- a/Documentation/devicetree/bindings/mailbox/qcom,apcs-kpss-global.yaml +++ b/Documentation/devicetree/bindings/mailbox/qcom,apcs-kpss-global.yaml @@ -50,7 +50,7 @@ properties: const: 1 '#clock-cells': - const: 0 + enum: [0, 1] clock-names: minItems: 2 @@ -96,6 +96,22 @@ allOf: properties: clocks: maxItems: 3 + - if: + properties: + compatible: + enum: + - qcom,ipq6018-apcs-apps-global + - qcom,ipq8074-apcs-apps-global + then: + properties: + '#clock-cells': + const: 1 + + else: + properties: + '#clock-cells': + const: 0 + examples: # Example apcs with msm8996 -- 2.35.1 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH v2 5/6] dt-bindings: mailbox: qcom: set correct #clock-cells 2022-05-03 19:56 ` [PATCH v2 5/6] dt-bindings: mailbox: qcom: set correct #clock-cells Robert Marko @ 2022-05-05 8:37 ` Krzysztof Kozlowski 2022-05-07 20:37 ` Robert Marko 0 siblings, 1 reply; 12+ messages in thread From: Krzysztof Kozlowski @ 2022-05-05 8:37 UTC (permalink / raw) To: Robert Marko, agross, bjorn.andersson, jassisinghbrar, robh+dt, krzysztof.kozlowski+dt, mturquette, sboyd, linux-arm-msm, linux-kernel, devicetree, linux-clk, dmitry.baryshkov On 03/05/2022 21:56, Robert Marko wrote: > diff --git a/Documentation/devicetree/bindings/mailbox/qcom,apcs-kpss-global.yaml b/Documentation/devicetree/bindings/mailbox/qcom,apcs-kpss-global.yaml > index 3b5ba7ecc19d..1f803925867e 100644 > --- a/Documentation/devicetree/bindings/mailbox/qcom,apcs-kpss-global.yaml > +++ b/Documentation/devicetree/bindings/mailbox/qcom,apcs-kpss-global.yaml > @@ -50,7 +50,7 @@ properties: > const: 1 > > '#clock-cells': > - const: 0 > + enum: [0, 1] > > clock-names: > minItems: 2 > @@ -96,6 +96,22 @@ allOf: > properties: > clocks: > maxItems: 3 > + - if: > + properties: > + compatible: > + enum: > + - qcom,ipq6018-apcs-apps-global > + - qcom,ipq8074-apcs-apps-global > + then: > + properties: > + '#clock-cells': > + const: 1 > + If there is a respin, please drop this blank line. > + else: > + properties: > + '#clock-cells': > + const: 0 > + > examples: > > # Example apcs with msm8996 Best regards, Krzysztof ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v2 5/6] dt-bindings: mailbox: qcom: set correct #clock-cells 2022-05-05 8:37 ` Krzysztof Kozlowski @ 2022-05-07 20:37 ` Robert Marko 0 siblings, 0 replies; 12+ messages in thread From: Robert Marko @ 2022-05-07 20:37 UTC (permalink / raw) To: Krzysztof Kozlowski Cc: Andy Gross, Bjorn Andersson, Jassi Brar, Rob Herring, krzysztof.kozlowski+dt, Michael Turquette, Stephen Boyd, linux-arm-msm, open list, Devicetree List, linux-clk, dmitry.baryshkov On Thu, 5 May 2022 at 10:37, Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> wrote: > > On 03/05/2022 21:56, Robert Marko wrote: > > diff --git a/Documentation/devicetree/bindings/mailbox/qcom,apcs-kpss-global.yaml b/Documentation/devicetree/bindings/mailbox/qcom,apcs-kpss-global.yaml > > index 3b5ba7ecc19d..1f803925867e 100644 > > --- a/Documentation/devicetree/bindings/mailbox/qcom,apcs-kpss-global.yaml > > +++ b/Documentation/devicetree/bindings/mailbox/qcom,apcs-kpss-global.yaml > > @@ -50,7 +50,7 @@ properties: > > const: 1 > > > > '#clock-cells': > > - const: 0 > > + enum: [0, 1] > > > > clock-names: > > minItems: 2 > > @@ -96,6 +96,22 @@ allOf: > > properties: > > clocks: > > maxItems: 3 > > + - if: > > + properties: > > + compatible: > > + enum: > > + - qcom,ipq6018-apcs-apps-global > > + - qcom,ipq8074-apcs-apps-global > > + then: > > + properties: > > + '#clock-cells': > > + const: 1 > > + > > If there is a respin, please drop this blank line. Done as part of v3, thanks. Regards, Robert > > > + else: > > + properties: > > + '#clock-cells': > > + const: 0 > > + > > examples: > > > > # Example apcs with msm8996 > > > Best regards, > Krzysztof ^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH v2 6/6] arm64: dts: ipq8074: update APCS node due to clock support 2022-05-03 19:56 [PATCH v2 1/6] clk: qcom: clk-alpha-pll: add support for APSS PLL Robert Marko ` (3 preceding siblings ...) 2022-05-03 19:56 ` [PATCH v2 5/6] dt-bindings: mailbox: qcom: set correct #clock-cells Robert Marko @ 2022-05-03 19:56 ` Robert Marko 4 siblings, 0 replies; 12+ messages in thread From: Robert Marko @ 2022-05-03 19:56 UTC (permalink / raw) To: agross, bjorn.andersson, jassisinghbrar, robh+dt, krzysztof.kozlowski+dt, mturquette, sboyd, linux-arm-msm, linux-kernel, devicetree, linux-clk, dmitry.baryshkov Cc: Robert Marko APCS now has support for providing the APSS clocks as the child device for IPQ8074, so update the DT node to reflect the expanded register space as well as add #clock-cells property as it now provides the APSS clock that will be used for CPU scaling. Signed-off-by: Robert Marko <robimarko@gmail.com> --- arch/arm64/boot/dts/qcom/ipq8074.dtsi | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/arch/arm64/boot/dts/qcom/ipq8074.dtsi b/arch/arm64/boot/dts/qcom/ipq8074.dtsi index dfba87f2b295..96de58fb7736 100644 --- a/arch/arm64/boot/dts/qcom/ipq8074.dtsi +++ b/arch/arm64/boot/dts/qcom/ipq8074.dtsi @@ -970,8 +970,9 @@ IRQ_TYPE_LEVEL_HIGH>, /* int_c */ apcs_glb: mailbox@b111000 { compatible = "qcom,ipq8074-apcs-apps-global"; - reg = <0x0b111000 0x1000>; + reg = <0x0b111000 0x6000>; + #clock-cells = <1>; #mbox-cells = <1>; }; -- 2.35.1 ^ permalink raw reply related [flat|nested] 12+ messages in thread
end of thread, other threads:[~2022-05-10 16:05 UTC | newest] Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2022-05-03 19:56 [PATCH v2 1/6] clk: qcom: clk-alpha-pll: add support for APSS PLL Robert Marko 2022-05-03 19:56 ` [PATCH v2 2/6] dt-bindings: clock: Add support for IPQ8074 APSS clock controller Robert Marko 2022-05-04 20:08 ` Rob Herring 2022-05-04 20:45 ` Robert Marko 2022-05-09 21:12 ` Rob Herring 2022-05-10 15:58 ` Robert Marko 2022-05-03 19:56 ` [PATCH v2 3/6] clk: qcom: Add " Robert Marko 2022-05-03 19:56 ` [PATCH v2 4/6] mailbox: qcom-apcs-ipc: add IPQ8074 APSS clock controller support Robert Marko 2022-05-03 19:56 ` [PATCH v2 5/6] dt-bindings: mailbox: qcom: set correct #clock-cells Robert Marko 2022-05-05 8:37 ` Krzysztof Kozlowski 2022-05-07 20:37 ` Robert Marko 2022-05-03 19:56 ` [PATCH v2 6/6] arm64: dts: ipq8074: update APCS node due to clock support Robert Marko
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.