ipq806x: copy kernel 5.4 patches to 5.10
[openwrt/staging/dedeckeh.git] / target / linux / ipq806x / patches-5.10 / 090-v5.8-clk-clk-rpm-fixes.patch
1 From eec152734be10c72d2d413a27ca9d282c28cdb61 Mon Sep 17 00:00:00 2001
2 From: Ansuel Smith <ansuelsmth@gmail.com>
3 Date: Tue, 10 Mar 2020 15:37:56 +0100
4 Subject: clk: qcom: clk-rpm: add missing rpm clk for ipq806x
5
6 Add missing definition of rpm clk for ipq806x soc
7
8 Signed-off-by: John Crispin <john@phrozen.org>
9 Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
10 Acked-by: John Crispin <john@phrozen.org>
11 Reviewed-by: Rob Herring <robh@kernel.org>
12 Link: https://lkml.kernel.org/r/20200310143756.244-1-ansuelsmth@gmail.com
13 Signed-off-by: Stephen Boyd <sboyd@kernel.org>
14 ---
15 .../devicetree/bindings/clock/qcom,rpmcc.txt | 1 +
16 drivers/clk/qcom/clk-rpm.c | 35 ++++++++++++++++++++++
17 include/dt-bindings/clock/qcom,rpmcc.h | 4 +++
18 3 files changed, 40 insertions(+)
19
20 --- a/Documentation/devicetree/bindings/clock/qcom,rpmcc.txt
21 +++ b/Documentation/devicetree/bindings/clock/qcom,rpmcc.txt
22 @@ -15,6 +15,7 @@ Required properties :
23 "qcom,rpmcc-msm8916", "qcom,rpmcc"
24 "qcom,rpmcc-msm8974", "qcom,rpmcc"
25 "qcom,rpmcc-apq8064", "qcom,rpmcc"
26 + "qcom,rpmcc-ipq806x", "qcom,rpmcc"
27 "qcom,rpmcc-msm8996", "qcom,rpmcc"
28 "qcom,rpmcc-msm8998", "qcom,rpmcc"
29 "qcom,rpmcc-qcs404", "qcom,rpmcc"
30 --- a/drivers/clk/qcom/clk-rpm.c
31 +++ b/drivers/clk/qcom/clk-rpm.c
32 @@ -543,10 +543,45 @@ static const struct rpm_clk_desc rpm_clk
33 .num_clks = ARRAY_SIZE(apq8064_clks),
34 };
35
36 +/* ipq806x */
37 +DEFINE_CLK_RPM(ipq806x, afab_clk, afab_a_clk, QCOM_RPM_APPS_FABRIC_CLK);
38 +DEFINE_CLK_RPM(ipq806x, cfpb_clk, cfpb_a_clk, QCOM_RPM_CFPB_CLK);
39 +DEFINE_CLK_RPM(ipq806x, daytona_clk, daytona_a_clk, QCOM_RPM_DAYTONA_FABRIC_CLK);
40 +DEFINE_CLK_RPM(ipq806x, ebi1_clk, ebi1_a_clk, QCOM_RPM_EBI1_CLK);
41 +DEFINE_CLK_RPM(ipq806x, sfab_clk, sfab_a_clk, QCOM_RPM_SYS_FABRIC_CLK);
42 +DEFINE_CLK_RPM(ipq806x, sfpb_clk, sfpb_a_clk, QCOM_RPM_SFPB_CLK);
43 +DEFINE_CLK_RPM(ipq806x, nss_fabric_0_clk, nss_fabric_0_a_clk, QCOM_RPM_NSS_FABRIC_0_CLK);
44 +DEFINE_CLK_RPM(ipq806x, nss_fabric_1_clk, nss_fabric_1_a_clk, QCOM_RPM_NSS_FABRIC_1_CLK);
45 +
46 +static struct clk_rpm *ipq806x_clks[] = {
47 + [RPM_APPS_FABRIC_CLK] = &ipq806x_afab_clk,
48 + [RPM_APPS_FABRIC_A_CLK] = &ipq806x_afab_a_clk,
49 + [RPM_CFPB_CLK] = &ipq806x_cfpb_clk,
50 + [RPM_CFPB_A_CLK] = &ipq806x_cfpb_a_clk,
51 + [RPM_DAYTONA_FABRIC_CLK] = &ipq806x_daytona_clk,
52 + [RPM_DAYTONA_FABRIC_A_CLK] = &ipq806x_daytona_a_clk,
53 + [RPM_EBI1_CLK] = &ipq806x_ebi1_clk,
54 + [RPM_EBI1_A_CLK] = &ipq806x_ebi1_a_clk,
55 + [RPM_SYS_FABRIC_CLK] = &ipq806x_sfab_clk,
56 + [RPM_SYS_FABRIC_A_CLK] = &ipq806x_sfab_a_clk,
57 + [RPM_SFPB_CLK] = &ipq806x_sfpb_clk,
58 + [RPM_SFPB_A_CLK] = &ipq806x_sfpb_a_clk,
59 + [RPM_NSS_FABRIC_0_CLK] = &ipq806x_nss_fabric_0_clk,
60 + [RPM_NSS_FABRIC_0_A_CLK] = &ipq806x_nss_fabric_0_a_clk,
61 + [RPM_NSS_FABRIC_1_CLK] = &ipq806x_nss_fabric_1_clk,
62 + [RPM_NSS_FABRIC_1_A_CLK] = &ipq806x_nss_fabric_1_a_clk,
63 +};
64 +
65 +static const struct rpm_clk_desc rpm_clk_ipq806x = {
66 + .clks = ipq806x_clks,
67 + .num_clks = ARRAY_SIZE(ipq806x_clks),
68 +};
69 +
70 static const struct of_device_id rpm_clk_match_table[] = {
71 { .compatible = "qcom,rpmcc-msm8660", .data = &rpm_clk_msm8660 },
72 { .compatible = "qcom,rpmcc-apq8060", .data = &rpm_clk_msm8660 },
73 { .compatible = "qcom,rpmcc-apq8064", .data = &rpm_clk_apq8064 },
74 + { .compatible = "qcom,rpmcc-ipq806x", .data = &rpm_clk_ipq806x },
75 { }
76 };
77 MODULE_DEVICE_TABLE(of, rpm_clk_match_table);
78 --- a/include/dt-bindings/clock/qcom,rpmcc.h
79 +++ b/include/dt-bindings/clock/qcom,rpmcc.h
80 @@ -37,6 +37,10 @@
81 #define RPM_XO_A0 27
82 #define RPM_XO_A1 28
83 #define RPM_XO_A2 29
84 +#define RPM_NSS_FABRIC_0_CLK 30
85 +#define RPM_NSS_FABRIC_0_A_CLK 31
86 +#define RPM_NSS_FABRIC_1_CLK 32
87 +#define RPM_NSS_FABRIC_1_A_CLK 33
88
89 /* SMD RPM clocks */
90 #define RPM_SMD_XO_CLK_SRC 0