mirror of https://gitee.com/openkylin/linux.git
Merge branch 'clk-qcom' into clk-next
- Enable CPU clks on Qualcomm IPQ6018 SoCs * clk-qcom: clk: qcom: smd: Add support for MSM8936 rpm clocks dt-bindings: clock: rpmcc: Document MSM8936 compatible clk: qcom: smd: Add support for SDM660 rpm clocks clk: qcom: Add ipq6018 apss clock controller clk: qcom: Add DT bindings for ipq6018 apss clock controller clk: qcom: Add ipq apss pll driver dt-bindings: clock: add ipq6018 a53 pll compatible
This commit is contained in:
commit
ef01ab612b
|
@ -15,7 +15,9 @@ description:
|
|||
|
||||
properties:
|
||||
compatible:
|
||||
const: qcom,msm8916-a53pll
|
||||
enum:
|
||||
- qcom,ipq6018-a53pll
|
||||
- qcom,msm8916-a53pll
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
@ -23,6 +25,14 @@ properties:
|
|||
'#clock-cells':
|
||||
const: 0
|
||||
|
||||
clocks:
|
||||
items:
|
||||
- description: board XO clock
|
||||
|
||||
clock-names:
|
||||
items:
|
||||
- const: xo
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
|
@ -38,3 +48,12 @@ examples:
|
|||
reg = <0xb016000 0x40>;
|
||||
#clock-cells = <0>;
|
||||
};
|
||||
#Example 2 - A53 PLL found on IPQ6018 devices
|
||||
- |
|
||||
a53pll_ipq: clock-controller@b116000 {
|
||||
compatible = "qcom,ipq6018-a53pll";
|
||||
reg = <0x0b116000 0x40>;
|
||||
#clock-cells = <0>;
|
||||
clocks = <&xo>;
|
||||
clock-names = "xo";
|
||||
};
|
||||
|
|
|
@ -13,6 +13,7 @@ Required properties :
|
|||
"qcom,rpmcc-msm8660", "qcom,rpmcc"
|
||||
"qcom,rpmcc-apq8060", "qcom,rpmcc"
|
||||
"qcom,rpmcc-msm8916", "qcom,rpmcc"
|
||||
"qcom,rpmcc-msm8936", "qcom,rpmcc"
|
||||
"qcom,rpmcc-msm8974", "qcom,rpmcc"
|
||||
"qcom,rpmcc-msm8976", "qcom,rpmcc"
|
||||
"qcom,rpmcc-apq8064", "qcom,rpmcc"
|
||||
|
@ -20,6 +21,7 @@ Required properties :
|
|||
"qcom,rpmcc-msm8996", "qcom,rpmcc"
|
||||
"qcom,rpmcc-msm8998", "qcom,rpmcc"
|
||||
"qcom,rpmcc-qcs404", "qcom,rpmcc"
|
||||
"qcom,rpmcc-sdm660", "qcom,rpmcc"
|
||||
|
||||
- #clock-cells : shall contain 1
|
||||
|
||||
|
|
|
@ -89,6 +89,25 @@ config APQ_MMCC_8084
|
|||
Say Y if you want to support multimedia devices such as display,
|
||||
graphics, video encode/decode, camera, etc.
|
||||
|
||||
config IPQ_APSS_PLL
|
||||
tristate "IPQ APSS PLL"
|
||||
help
|
||||
Support for APSS PLL on ipq devices. The APSS PLL is the main
|
||||
clock that feeds the CPUs on ipq based devices.
|
||||
Say Y if you want to support CPU frequency scaling on ipq based
|
||||
devices.
|
||||
|
||||
config IPQ_APSS_6018
|
||||
tristate "IPQ APSS Clock Controller"
|
||||
select IPQ_APSS_PLL
|
||||
depends on QCOM_APCS_IPC || COMPILE_TEST
|
||||
help
|
||||
Support for APSS clock controller on IPQ 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
|
||||
ipq based devices.
|
||||
|
||||
config IPQ_GCC_4019
|
||||
tristate "IPQ4019 Global Clock Controller"
|
||||
help
|
||||
|
|
|
@ -19,6 +19,8 @@ clk-qcom-$(CONFIG_QCOM_GDSC) += gdsc.o
|
|||
# Keep alphabetically sorted by config
|
||||
obj-$(CONFIG_APQ_GCC_8084) += gcc-apq8084.o
|
||||
obj-$(CONFIG_APQ_MMCC_8084) += mmcc-apq8084.o
|
||||
obj-$(CONFIG_IPQ_APSS_PLL) += apss-ipq-pll.o
|
||||
obj-$(CONFIG_IPQ_APSS_6018) += apss-ipq6018.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
|
||||
|
|
|
@ -0,0 +1,95 @@
|
|||
// SPDX-License-Identifier: GPL-2.0
|
||||
// Copyright (c) 2018, The Linux Foundation. All rights reserved.
|
||||
#include <linux/clk-provider.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/regmap.h>
|
||||
|
||||
#include "clk-alpha-pll.h"
|
||||
|
||||
static const u8 ipq_pll_offsets[] = {
|
||||
[PLL_OFF_L_VAL] = 0x08,
|
||||
[PLL_OFF_ALPHA_VAL] = 0x10,
|
||||
[PLL_OFF_USER_CTL] = 0x18,
|
||||
[PLL_OFF_CONFIG_CTL] = 0x20,
|
||||
[PLL_OFF_CONFIG_CTL_U] = 0x24,
|
||||
[PLL_OFF_STATUS] = 0x28,
|
||||
[PLL_OFF_TEST_CTL] = 0x30,
|
||||
[PLL_OFF_TEST_CTL_U] = 0x34,
|
||||
};
|
||||
|
||||
static struct clk_alpha_pll ipq_pll = {
|
||||
.offset = 0x0,
|
||||
.regs = ipq_pll_offsets,
|
||||
.flags = SUPPORTS_DYNAMIC_UPDATE,
|
||||
.clkr = {
|
||||
.enable_reg = 0x0,
|
||||
.enable_mask = BIT(0),
|
||||
.hw.init = &(struct clk_init_data){
|
||||
.name = "a53pll",
|
||||
.parent_data = &(const struct clk_parent_data) {
|
||||
.fw_name = "xo",
|
||||
},
|
||||
.num_parents = 1,
|
||||
.ops = &clk_alpha_pll_huayra_ops,
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
static const struct alpha_pll_config ipq_pll_config = {
|
||||
.l = 0x37,
|
||||
.config_ctl_val = 0x04141200,
|
||||
.config_ctl_hi_val = 0x0,
|
||||
.early_output_mask = BIT(3),
|
||||
.main_output_mask = BIT(0),
|
||||
};
|
||||
|
||||
static const struct regmap_config ipq_pll_regmap_config = {
|
||||
.reg_bits = 32,
|
||||
.reg_stride = 4,
|
||||
.val_bits = 32,
|
||||
.max_register = 0x40,
|
||||
.fast_io = true,
|
||||
};
|
||||
|
||||
static int apss_ipq_pll_probe(struct platform_device *pdev)
|
||||
{
|
||||
struct device *dev = &pdev->dev;
|
||||
struct regmap *regmap;
|
||||
void __iomem *base;
|
||||
int ret;
|
||||
|
||||
base = devm_platform_ioremap_resource(pdev, 0);
|
||||
if (IS_ERR(base))
|
||||
return PTR_ERR(base);
|
||||
|
||||
regmap = devm_regmap_init_mmio(dev, base, &ipq_pll_regmap_config);
|
||||
if (IS_ERR(regmap))
|
||||
return PTR_ERR(regmap);
|
||||
|
||||
clk_alpha_pll_configure(&ipq_pll, regmap, &ipq_pll_config);
|
||||
|
||||
ret = devm_clk_register_regmap(dev, &ipq_pll.clkr);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
return devm_of_clk_add_hw_provider(dev, of_clk_hw_simple_get,
|
||||
&ipq_pll.clkr.hw);
|
||||
}
|
||||
|
||||
static const struct of_device_id apss_ipq_pll_match_table[] = {
|
||||
{ .compatible = "qcom,ipq6018-a53pll" },
|
||||
{ }
|
||||
};
|
||||
|
||||
static struct platform_driver apss_ipq_pll_driver = {
|
||||
.probe = apss_ipq_pll_probe,
|
||||
.driver = {
|
||||
.name = "qcom-ipq-apss-pll",
|
||||
.of_match_table = apss_ipq_pll_match_table,
|
||||
},
|
||||
};
|
||||
module_platform_driver(apss_ipq_pll_driver);
|
||||
|
||||
MODULE_DESCRIPTION("Qualcomm technology Inc APSS ALPHA PLL Driver");
|
||||
MODULE_LICENSE("GPL v2");
|
|
@ -0,0 +1,106 @@
|
|||
// SPDX-License-Identifier: GPL-2.0
|
||||
/*
|
||||
* Copyright (c) 2018, The Linux Foundation. All rights reserved.
|
||||
*/
|
||||
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/err.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/clk-provider.h>
|
||||
#include <linux/regmap.h>
|
||||
#include <linux/module.h>
|
||||
|
||||
#include <dt-bindings/clock/qcom,apss-ipq.h>
|
||||
|
||||
#include "common.h"
|
||||
#include "clk-regmap.h"
|
||||
#include "clk-branch.h"
|
||||
#include "clk-alpha-pll.h"
|
||||
#include "clk-regmap-mux.h"
|
||||
|
||||
enum {
|
||||
P_XO,
|
||||
P_APSS_PLL_EARLY,
|
||||
};
|
||||
|
||||
static const struct clk_parent_data parents_apcs_alias0_clk_src[] = {
|
||||
{ .fw_name = "xo" },
|
||||
{ .fw_name = "pll" },
|
||||
};
|
||||
|
||||
static const struct parent_map parents_apcs_alias0_clk_src_map[] = {
|
||||
{ P_XO, 0 },
|
||||
{ P_APSS_PLL_EARLY, 5 },
|
||||
};
|
||||
|
||||
static struct clk_regmap_mux apcs_alias0_clk_src = {
|
||||
.reg = 0x0050,
|
||||
.width = 3,
|
||||
.shift = 7,
|
||||
.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 = 2,
|
||||
.ops = &clk_regmap_mux_closest_ops,
|
||||
.flags = CLK_SET_RATE_PARENT,
|
||||
},
|
||||
};
|
||||
|
||||
static struct clk_branch apcs_alias0_core_clk = {
|
||||
.halt_reg = 0x0058,
|
||||
.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,
|
||||
.ops = &clk_branch2_ops,
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
static const struct regmap_config apss_ipq6018_regmap_config = {
|
||||
.reg_bits = 32,
|
||||
.reg_stride = 4,
|
||||
.val_bits = 32,
|
||||
.max_register = 0x1000,
|
||||
.fast_io = true,
|
||||
};
|
||||
|
||||
static struct clk_regmap *apss_ipq6018_clks[] = {
|
||||
[APCS_ALIAS0_CLK_SRC] = &apcs_alias0_clk_src.clkr,
|
||||
[APCS_ALIAS0_CORE_CLK] = &apcs_alias0_core_clk.clkr,
|
||||
};
|
||||
|
||||
static const struct qcom_cc_desc apss_ipq6018_desc = {
|
||||
.config = &apss_ipq6018_regmap_config,
|
||||
.clks = apss_ipq6018_clks,
|
||||
.num_clks = ARRAY_SIZE(apss_ipq6018_clks),
|
||||
};
|
||||
|
||||
static int apss_ipq6018_probe(struct platform_device *pdev)
|
||||
{
|
||||
struct regmap *regmap;
|
||||
|
||||
regmap = dev_get_regmap(pdev->dev.parent, NULL);
|
||||
if (IS_ERR(regmap))
|
||||
return PTR_ERR(regmap);
|
||||
|
||||
return qcom_cc_really_probe(pdev, &apss_ipq6018_desc, regmap);
|
||||
}
|
||||
|
||||
static struct platform_driver apss_ipq6018_driver = {
|
||||
.probe = apss_ipq6018_probe,
|
||||
.driver = {
|
||||
.name = "qcom,apss-ipq6018-clk",
|
||||
},
|
||||
};
|
||||
|
||||
module_platform_driver(apss_ipq6018_driver);
|
||||
|
||||
MODULE_DESCRIPTION("QCOM APSS IPQ 6018 CLK Driver");
|
||||
MODULE_LICENSE("GPL v2");
|
|
@ -452,6 +452,55 @@ static const struct rpm_smd_clk_desc rpm_clk_msm8916 = {
|
|||
.num_clks = ARRAY_SIZE(msm8916_clks),
|
||||
};
|
||||
|
||||
/* msm8936 */
|
||||
DEFINE_CLK_SMD_RPM(msm8936, pcnoc_clk, pcnoc_a_clk, QCOM_SMD_RPM_BUS_CLK, 0);
|
||||
DEFINE_CLK_SMD_RPM(msm8936, snoc_clk, snoc_a_clk, QCOM_SMD_RPM_BUS_CLK, 1);
|
||||
DEFINE_CLK_SMD_RPM(msm8936, bimc_clk, bimc_a_clk, QCOM_SMD_RPM_MEM_CLK, 0);
|
||||
DEFINE_CLK_SMD_RPM(msm8936, sysmmnoc_clk, sysmmnoc_a_clk, QCOM_SMD_RPM_BUS_CLK, 2);
|
||||
DEFINE_CLK_SMD_RPM_QDSS(msm8936, qdss_clk, qdss_a_clk, QCOM_SMD_RPM_MISC_CLK, 1);
|
||||
DEFINE_CLK_SMD_RPM_XO_BUFFER(msm8936, bb_clk1, bb_clk1_a, 1);
|
||||
DEFINE_CLK_SMD_RPM_XO_BUFFER(msm8936, bb_clk2, bb_clk2_a, 2);
|
||||
DEFINE_CLK_SMD_RPM_XO_BUFFER(msm8936, rf_clk1, rf_clk1_a, 4);
|
||||
DEFINE_CLK_SMD_RPM_XO_BUFFER(msm8936, rf_clk2, rf_clk2_a, 5);
|
||||
DEFINE_CLK_SMD_RPM_XO_BUFFER_PINCTRL(msm8936, bb_clk1_pin, bb_clk1_a_pin, 1);
|
||||
DEFINE_CLK_SMD_RPM_XO_BUFFER_PINCTRL(msm8936, bb_clk2_pin, bb_clk2_a_pin, 2);
|
||||
DEFINE_CLK_SMD_RPM_XO_BUFFER_PINCTRL(msm8936, rf_clk1_pin, rf_clk1_a_pin, 4);
|
||||
DEFINE_CLK_SMD_RPM_XO_BUFFER_PINCTRL(msm8936, rf_clk2_pin, rf_clk2_a_pin, 5);
|
||||
|
||||
static struct clk_smd_rpm *msm8936_clks[] = {
|
||||
[RPM_SMD_PCNOC_CLK] = &msm8936_pcnoc_clk,
|
||||
[RPM_SMD_PCNOC_A_CLK] = &msm8936_pcnoc_a_clk,
|
||||
[RPM_SMD_SNOC_CLK] = &msm8936_snoc_clk,
|
||||
[RPM_SMD_SNOC_A_CLK] = &msm8936_snoc_a_clk,
|
||||
[RPM_SMD_BIMC_CLK] = &msm8936_bimc_clk,
|
||||
[RPM_SMD_BIMC_A_CLK] = &msm8936_bimc_a_clk,
|
||||
[RPM_SMD_SYSMMNOC_CLK] = &msm8936_sysmmnoc_clk,
|
||||
[RPM_SMD_SYSMMNOC_A_CLK] = &msm8936_sysmmnoc_a_clk,
|
||||
[RPM_SMD_QDSS_CLK] = &msm8936_qdss_clk,
|
||||
[RPM_SMD_QDSS_A_CLK] = &msm8936_qdss_a_clk,
|
||||
[RPM_SMD_BB_CLK1] = &msm8936_bb_clk1,
|
||||
[RPM_SMD_BB_CLK1_A] = &msm8936_bb_clk1_a,
|
||||
[RPM_SMD_BB_CLK2] = &msm8936_bb_clk2,
|
||||
[RPM_SMD_BB_CLK2_A] = &msm8936_bb_clk2_a,
|
||||
[RPM_SMD_RF_CLK1] = &msm8936_rf_clk1,
|
||||
[RPM_SMD_RF_CLK1_A] = &msm8936_rf_clk1_a,
|
||||
[RPM_SMD_RF_CLK2] = &msm8936_rf_clk2,
|
||||
[RPM_SMD_RF_CLK2_A] = &msm8936_rf_clk2_a,
|
||||
[RPM_SMD_BB_CLK1_PIN] = &msm8936_bb_clk1_pin,
|
||||
[RPM_SMD_BB_CLK1_A_PIN] = &msm8936_bb_clk1_a_pin,
|
||||
[RPM_SMD_BB_CLK2_PIN] = &msm8936_bb_clk2_pin,
|
||||
[RPM_SMD_BB_CLK2_A_PIN] = &msm8936_bb_clk2_a_pin,
|
||||
[RPM_SMD_RF_CLK1_PIN] = &msm8936_rf_clk1_pin,
|
||||
[RPM_SMD_RF_CLK1_A_PIN] = &msm8936_rf_clk1_a_pin,
|
||||
[RPM_SMD_RF_CLK2_PIN] = &msm8936_rf_clk2_pin,
|
||||
[RPM_SMD_RF_CLK2_A_PIN] = &msm8936_rf_clk2_a_pin,
|
||||
};
|
||||
|
||||
static const struct rpm_smd_clk_desc rpm_clk_msm8936 = {
|
||||
.clks = msm8936_clks,
|
||||
.num_clks = ARRAY_SIZE(msm8936_clks),
|
||||
};
|
||||
|
||||
/* msm8974 */
|
||||
DEFINE_CLK_SMD_RPM(msm8974, pnoc_clk, pnoc_a_clk, QCOM_SMD_RPM_BUS_CLK, 0);
|
||||
DEFINE_CLK_SMD_RPM(msm8974, snoc_clk, snoc_a_clk, QCOM_SMD_RPM_BUS_CLK, 1);
|
||||
|
@ -766,13 +815,90 @@ static const struct rpm_smd_clk_desc rpm_clk_msm8998 = {
|
|||
.num_clks = ARRAY_SIZE(msm8998_clks),
|
||||
};
|
||||
|
||||
/* sdm660 */
|
||||
DEFINE_CLK_SMD_RPM_BRANCH(sdm660, bi_tcxo, bi_tcxo_a, QCOM_SMD_RPM_MISC_CLK, 0,
|
||||
19200000);
|
||||
DEFINE_CLK_SMD_RPM(sdm660, snoc_clk, snoc_a_clk, QCOM_SMD_RPM_BUS_CLK, 1);
|
||||
DEFINE_CLK_SMD_RPM(sdm660, cnoc_clk, cnoc_a_clk, QCOM_SMD_RPM_BUS_CLK, 2);
|
||||
DEFINE_CLK_SMD_RPM(sdm660, cnoc_periph_clk, cnoc_periph_a_clk,
|
||||
QCOM_SMD_RPM_BUS_CLK, 0);
|
||||
DEFINE_CLK_SMD_RPM(sdm660, bimc_clk, bimc_a_clk, QCOM_SMD_RPM_MEM_CLK, 0);
|
||||
DEFINE_CLK_SMD_RPM(sdm660, mmssnoc_axi_clk, mmssnoc_axi_a_clk,
|
||||
QCOM_SMD_RPM_MMAXI_CLK, 0);
|
||||
DEFINE_CLK_SMD_RPM(sdm660, ipa_clk, ipa_a_clk, QCOM_SMD_RPM_IPA_CLK, 0);
|
||||
DEFINE_CLK_SMD_RPM(sdm660, ce1_clk, ce1_a_clk, QCOM_SMD_RPM_CE_CLK, 0);
|
||||
DEFINE_CLK_SMD_RPM(sdm660, aggre2_noc_clk, aggre2_noc_a_clk,
|
||||
QCOM_SMD_RPM_AGGR_CLK, 2);
|
||||
DEFINE_CLK_SMD_RPM_QDSS(sdm660, qdss_clk, qdss_a_clk,
|
||||
QCOM_SMD_RPM_MISC_CLK, 1);
|
||||
DEFINE_CLK_SMD_RPM_XO_BUFFER(sdm660, rf_clk1, rf_clk1_a, 4);
|
||||
DEFINE_CLK_SMD_RPM_XO_BUFFER(sdm660, div_clk1, div_clk1_a, 11);
|
||||
DEFINE_CLK_SMD_RPM_XO_BUFFER(sdm660, ln_bb_clk1, ln_bb_clk1_a, 1);
|
||||
DEFINE_CLK_SMD_RPM_XO_BUFFER(sdm660, ln_bb_clk2, ln_bb_clk2_a, 2);
|
||||
DEFINE_CLK_SMD_RPM_XO_BUFFER(sdm660, ln_bb_clk3, ln_bb_clk3_a, 3);
|
||||
|
||||
DEFINE_CLK_SMD_RPM_XO_BUFFER_PINCTRL(sdm660, rf_clk1_pin, rf_clk1_a_pin, 4);
|
||||
DEFINE_CLK_SMD_RPM_XO_BUFFER_PINCTRL(sdm660, ln_bb_clk1_pin,
|
||||
ln_bb_clk1_pin_a, 1);
|
||||
DEFINE_CLK_SMD_RPM_XO_BUFFER_PINCTRL(sdm660, ln_bb_clk2_pin,
|
||||
ln_bb_clk2_pin_a, 2);
|
||||
DEFINE_CLK_SMD_RPM_XO_BUFFER_PINCTRL(sdm660, ln_bb_clk3_pin,
|
||||
ln_bb_clk3_pin_a, 3);
|
||||
static struct clk_smd_rpm *sdm660_clks[] = {
|
||||
[RPM_SMD_XO_CLK_SRC] = &sdm660_bi_tcxo,
|
||||
[RPM_SMD_XO_A_CLK_SRC] = &sdm660_bi_tcxo_a,
|
||||
[RPM_SMD_SNOC_CLK] = &sdm660_snoc_clk,
|
||||
[RPM_SMD_SNOC_A_CLK] = &sdm660_snoc_a_clk,
|
||||
[RPM_SMD_CNOC_CLK] = &sdm660_cnoc_clk,
|
||||
[RPM_SMD_CNOC_A_CLK] = &sdm660_cnoc_a_clk,
|
||||
[RPM_SMD_CNOC_PERIPH_CLK] = &sdm660_cnoc_periph_clk,
|
||||
[RPM_SMD_CNOC_PERIPH_A_CLK] = &sdm660_cnoc_periph_a_clk,
|
||||
[RPM_SMD_BIMC_CLK] = &sdm660_bimc_clk,
|
||||
[RPM_SMD_BIMC_A_CLK] = &sdm660_bimc_a_clk,
|
||||
[RPM_SMD_MMSSNOC_AXI_CLK] = &sdm660_mmssnoc_axi_clk,
|
||||
[RPM_SMD_MMSSNOC_AXI_CLK_A] = &sdm660_mmssnoc_axi_a_clk,
|
||||
[RPM_SMD_IPA_CLK] = &sdm660_ipa_clk,
|
||||
[RPM_SMD_IPA_A_CLK] = &sdm660_ipa_a_clk,
|
||||
[RPM_SMD_CE1_CLK] = &sdm660_ce1_clk,
|
||||
[RPM_SMD_CE1_A_CLK] = &sdm660_ce1_a_clk,
|
||||
[RPM_SMD_AGGR2_NOC_CLK] = &sdm660_aggre2_noc_clk,
|
||||
[RPM_SMD_AGGR2_NOC_A_CLK] = &sdm660_aggre2_noc_a_clk,
|
||||
[RPM_SMD_QDSS_CLK] = &sdm660_qdss_clk,
|
||||
[RPM_SMD_QDSS_A_CLK] = &sdm660_qdss_a_clk,
|
||||
[RPM_SMD_RF_CLK1] = &sdm660_rf_clk1,
|
||||
[RPM_SMD_RF_CLK1_A] = &sdm660_rf_clk1_a,
|
||||
[RPM_SMD_DIV_CLK1] = &sdm660_div_clk1,
|
||||
[RPM_SMD_DIV_A_CLK1] = &sdm660_div_clk1_a,
|
||||
[RPM_SMD_LN_BB_CLK] = &sdm660_ln_bb_clk1,
|
||||
[RPM_SMD_LN_BB_A_CLK] = &sdm660_ln_bb_clk1_a,
|
||||
[RPM_SMD_LN_BB_CLK2] = &sdm660_ln_bb_clk2,
|
||||
[RPM_SMD_LN_BB_CLK2_A] = &sdm660_ln_bb_clk2_a,
|
||||
[RPM_SMD_LN_BB_CLK3] = &sdm660_ln_bb_clk3,
|
||||
[RPM_SMD_LN_BB_CLK3_A] = &sdm660_ln_bb_clk3_a,
|
||||
[RPM_SMD_RF_CLK1_PIN] = &sdm660_rf_clk1_pin,
|
||||
[RPM_SMD_RF_CLK1_A_PIN] = &sdm660_rf_clk1_a_pin,
|
||||
[RPM_SMD_LN_BB_CLK1_PIN] = &sdm660_ln_bb_clk1_pin,
|
||||
[RPM_SMD_LN_BB_CLK1_A_PIN] = &sdm660_ln_bb_clk1_pin_a,
|
||||
[RPM_SMD_LN_BB_CLK2_PIN] = &sdm660_ln_bb_clk2_pin,
|
||||
[RPM_SMD_LN_BB_CLK2_A_PIN] = &sdm660_ln_bb_clk2_pin_a,
|
||||
[RPM_SMD_LN_BB_CLK3_PIN] = &sdm660_ln_bb_clk3_pin,
|
||||
[RPM_SMD_LN_BB_CLK3_A_PIN] = &sdm660_ln_bb_clk3_pin_a,
|
||||
};
|
||||
|
||||
static const struct rpm_smd_clk_desc rpm_clk_sdm660 = {
|
||||
.clks = sdm660_clks,
|
||||
.num_clks = ARRAY_SIZE(sdm660_clks),
|
||||
};
|
||||
|
||||
static const struct of_device_id rpm_smd_clk_match_table[] = {
|
||||
{ .compatible = "qcom,rpmcc-msm8916", .data = &rpm_clk_msm8916 },
|
||||
{ .compatible = "qcom,rpmcc-msm8936", .data = &rpm_clk_msm8936 },
|
||||
{ .compatible = "qcom,rpmcc-msm8974", .data = &rpm_clk_msm8974 },
|
||||
{ .compatible = "qcom,rpmcc-msm8976", .data = &rpm_clk_msm8976 },
|
||||
{ .compatible = "qcom,rpmcc-msm8996", .data = &rpm_clk_msm8996 },
|
||||
{ .compatible = "qcom,rpmcc-msm8998", .data = &rpm_clk_msm8998 },
|
||||
{ .compatible = "qcom,rpmcc-qcs404", .data = &rpm_clk_qcs404 },
|
||||
{ .compatible = "qcom,rpmcc-sdm660", .data = &rpm_clk_sdm660 },
|
||||
{ }
|
||||
};
|
||||
MODULE_DEVICE_TABLE(of, rpm_smd_clk_match_table);
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
/*
|
||||
* Copyright (c) 2018, The Linux Foundation. All rights reserved.
|
||||
*/
|
||||
|
||||
#ifndef _DT_BINDINGS_CLOCK_QCA_APSS_IPQ6018_H
|
||||
#define _DT_BINDINGS_CLOCK_QCA_APSS_IPQ6018_H
|
||||
|
||||
#define APCS_ALIAS0_CLK_SRC 0
|
||||
#define APCS_ALIAS0_CORE_CLK 1
|
||||
|
||||
#endif
|
|
@ -133,5 +133,17 @@
|
|||
#define RPM_SMD_RF_CLK3_A 87
|
||||
#define RPM_SMD_RF_CLK3_PIN 88
|
||||
#define RPM_SMD_RF_CLK3_A_PIN 89
|
||||
#define RPM_SMD_MMSSNOC_AXI_CLK 90
|
||||
#define RPM_SMD_MMSSNOC_AXI_CLK_A 91
|
||||
#define RPM_SMD_CNOC_PERIPH_CLK 92
|
||||
#define RPM_SMD_CNOC_PERIPH_A_CLK 93
|
||||
#define RPM_SMD_LN_BB_CLK3 94
|
||||
#define RPM_SMD_LN_BB_CLK3_A 95
|
||||
#define RPM_SMD_LN_BB_CLK1_PIN 96
|
||||
#define RPM_SMD_LN_BB_CLK1_A_PIN 97
|
||||
#define RPM_SMD_LN_BB_CLK2_PIN 98
|
||||
#define RPM_SMD_LN_BB_CLK2_A_PIN 99
|
||||
#define RPM_SMD_SYSMMNOC_CLK 100
|
||||
#define RPM_SMD_SYSMMNOC_A_CLK 101
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue