#include <linux/clk-provider.h>
#include <linux/err.h>
#include <linux/export.h>
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/mutex.h>
#include <linux/of.h>
#include <linux/platform_device.h>
#include <linux/soc/qcom/smd-rpm.h>
#include <dt-bindings/clock/qcom,rpmcc.h>
#define __DEFINE_CLK_SMD_RPM_PREFIX(_prefix, _name, _active, \
type, r_id, key, ao_rate, ao_flags) …
#define __DEFINE_CLK_SMD_RPM(_name, _active, type, r_id, key,\
ao_rate, ao_flags) …
#define __DEFINE_CLK_SMD_RPM_BRANCH_PREFIX(_prefix, _name, _active,\
type, r_id, r, key, ao_flags) …
#define __DEFINE_CLK_SMD_RPM_BRANCH(_name, _active, type, r_id, r, key) …
#define DEFINE_CLK_SMD_RPM(_name, type, r_id) …
#define DEFINE_CLK_SMD_RPM_BUS(_name, r_id) …
#define DEFINE_CLK_SMD_RPM_BUS_A(_name, r_id, ao_rate, ao_flags) …
#define DEFINE_CLK_SMD_RPM_CLK_SRC(_name, type, r_id) …
#define DEFINE_CLK_SMD_RPM_BRANCH(_name, type, r_id, r) …
#define DEFINE_CLK_SMD_RPM_BRANCH_A(_name, type, r_id, r, ao_flags) …
#define DEFINE_CLK_SMD_RPM_QDSS(_name, type, r_id) …
#define DEFINE_CLK_SMD_RPM_XO_BUFFER(_name, r_id, r) …
#define DEFINE_CLK_SMD_RPM_XO_BUFFER_PREFIX(_prefix, _name, r_id, r) …
#define DEFINE_CLK_SMD_RPM_XO_BUFFER_PINCTRL(_name, r_id, r) …
#define to_clk_smd_rpm(_hw) …
static struct qcom_smd_rpm *rpmcc_smd_rpm;
struct clk_smd_rpm { … };
struct rpm_smd_clk_desc { … };
static DEFINE_MUTEX(rpm_smd_clk_lock);
static int clk_smd_rpm_handoff(const struct clk_smd_rpm *r)
{ … }
static int clk_smd_rpm_set_rate_active(struct clk_smd_rpm *r,
unsigned long rate)
{ … }
static int clk_smd_rpm_set_rate_sleep(struct clk_smd_rpm *r,
unsigned long rate)
{ … }
static void to_active_sleep(struct clk_smd_rpm *r, unsigned long rate,
unsigned long *active, unsigned long *sleep)
{ … }
static int clk_smd_rpm_prepare(struct clk_hw *hw)
{ … }
static void clk_smd_rpm_unprepare(struct clk_hw *hw)
{ … }
static int clk_smd_rpm_set_rate(struct clk_hw *hw, unsigned long rate,
unsigned long parent_rate)
{ … }
static long clk_smd_rpm_round_rate(struct clk_hw *hw, unsigned long rate,
unsigned long *parent_rate)
{ … }
static unsigned long clk_smd_rpm_recalc_rate(struct clk_hw *hw,
unsigned long parent_rate)
{ … }
static int clk_smd_rpm_enable_scaling(void)
{ … }
static const struct clk_ops clk_smd_rpm_ops = …;
static const struct clk_ops clk_smd_rpm_branch_ops = …;
DEFINE_CLK_SMD_RPM_BRANCH_A(…);
DEFINE_CLK_SMD_RPM_BRANCH(…);
DEFINE_CLK_SMD_RPM_QDSS(…);
DEFINE_CLK_SMD_RPM_BRANCH_A(…);
DEFINE_CLK_SMD_RPM_BRANCH(…);
DEFINE_CLK_SMD_RPM_BRANCH(…);
DEFINE_CLK_SMD_RPM_BRANCH(…);
DEFINE_CLK_SMD_RPM(…);
DEFINE_CLK_SMD_RPM(…);
DEFINE_CLK_SMD_RPM_BUS_A(…);
DEFINE_CLK_SMD_RPM_BUS(…);
DEFINE_CLK_SMD_RPM_BUS(…);
DEFINE_CLK_SMD_RPM_BUS(…);
DEFINE_CLK_SMD_RPM_BUS(…);
DEFINE_CLK_SMD_RPM_BUS(…);
DEFINE_CLK_SMD_RPM_BUS(…);
DEFINE_CLK_SMD_RPM_BUS(…);
DEFINE_CLK_SMD_RPM_BUS(…);
DEFINE_CLK_SMD_RPM(…);
DEFINE_CLK_SMD_RPM(…);
DEFINE_CLK_SMD_RPM_CLK_SRC(…);
DEFINE_CLK_SMD_RPM(…);
DEFINE_CLK_SMD_RPM(…);
DEFINE_CLK_SMD_RPM(…);
DEFINE_CLK_SMD_RPM(…);
DEFINE_CLK_SMD_RPM(…);
DEFINE_CLK_SMD_RPM(…);
DEFINE_CLK_SMD_RPM(…);
DEFINE_CLK_SMD_RPM(…);
DEFINE_CLK_SMD_RPM(…);
DEFINE_CLK_SMD_RPM(…);
DEFINE_CLK_SMD_RPM(…);
DEFINE_CLK_SMD_RPM(…);
DEFINE_CLK_SMD_RPM(…);
DEFINE_CLK_SMD_RPM_XO_BUFFER_PINCTRL(…);
DEFINE_CLK_SMD_RPM_XO_BUFFER_PINCTRL(…);
DEFINE_CLK_SMD_RPM_XO_BUFFER_PINCTRL(…);
DEFINE_CLK_SMD_RPM_XO_BUFFER_PINCTRL(…);
DEFINE_CLK_SMD_RPM_XO_BUFFER_PINCTRL(…);
DEFINE_CLK_SMD_RPM_XO_BUFFER_PINCTRL(…);
DEFINE_CLK_SMD_RPM_XO_BUFFER_PINCTRL(…);
DEFINE_CLK_SMD_RPM_XO_BUFFER_PINCTRL(…);
DEFINE_CLK_SMD_RPM_XO_BUFFER_PINCTRL(…);
DEFINE_CLK_SMD_RPM_XO_BUFFER_PREFIX(…);
DEFINE_CLK_SMD_RPM_XO_BUFFER_PINCTRL(…);
DEFINE_CLK_SMD_RPM_XO_BUFFER_PINCTRL(…);
DEFINE_CLK_SMD_RPM_XO_BUFFER_PINCTRL(…);
DEFINE_CLK_SMD_RPM_XO_BUFFER_PINCTRL(…);
DEFINE_CLK_SMD_RPM_XO_BUFFER_PINCTRL(…);
DEFINE_CLK_SMD_RPM_XO_BUFFER(…);
DEFINE_CLK_SMD_RPM_XO_BUFFER(…);
DEFINE_CLK_SMD_RPM_XO_BUFFER(…);
DEFINE_CLK_SMD_RPM_XO_BUFFER(…);
static const struct clk_smd_rpm *bimc_pcnoc_icc_clks[] = …;
static const struct clk_smd_rpm *bimc_pcnoc_snoc_icc_clks[] = …;
static const struct clk_smd_rpm *bimc_pcnoc_snoc_smmnoc_icc_clks[] = …;
static const struct clk_smd_rpm *bimc_pcnoc_snoc_cnoc_ocmem_icc_clks[] = …;
static const struct clk_smd_rpm *msm8996_icc_clks[] = …;
static const struct clk_smd_rpm *msm8998_icc_clks[] = …;
static const struct clk_smd_rpm *sdm660_icc_clks[] = …;
static const struct clk_smd_rpm *sm_qnoc_icc_clks[] = …;
static const struct clk_smd_rpm *qcm2290_icc_clks[] = …;
static struct clk_smd_rpm *msm8909_clks[] = …;
static const struct rpm_smd_clk_desc rpm_clk_msm8909 = …;
static struct clk_smd_rpm *msm8916_clks[] = …;
static const struct rpm_smd_clk_desc rpm_clk_msm8916 = …;
static struct clk_smd_rpm *msm8917_clks[] = …;
static const struct rpm_smd_clk_desc rpm_clk_msm8917 = …;
static struct clk_smd_rpm *msm8936_clks[] = …;
static const struct rpm_smd_clk_desc rpm_clk_msm8936 = …;
static struct clk_smd_rpm *msm8974_clks[] = …;
static const struct rpm_smd_clk_desc rpm_clk_msm8974 = …;
static struct clk_smd_rpm *msm8976_clks[] = …;
static const struct rpm_smd_clk_desc rpm_clk_msm8976 = …;
static struct clk_smd_rpm *msm8992_clks[] = …;
static const struct rpm_smd_clk_desc rpm_clk_msm8992 = …;
static struct clk_smd_rpm *msm8994_clks[] = …;
static const struct rpm_smd_clk_desc rpm_clk_msm8994 = …;
static struct clk_smd_rpm *msm8996_clks[] = …;
static const struct rpm_smd_clk_desc rpm_clk_msm8996 = …;
static struct clk_smd_rpm *qcs404_clks[] = …;
static const struct rpm_smd_clk_desc rpm_clk_qcs404 = …;
static struct clk_smd_rpm *msm8998_clks[] = …;
static const struct rpm_smd_clk_desc rpm_clk_msm8998 = …;
static struct clk_smd_rpm *sdm660_clks[] = …;
static const struct rpm_smd_clk_desc rpm_clk_sdm660 = …;
static struct clk_smd_rpm *mdm9607_clks[] = …;
static const struct rpm_smd_clk_desc rpm_clk_mdm9607 = …;
static struct clk_smd_rpm *msm8953_clks[] = …;
static const struct rpm_smd_clk_desc rpm_clk_msm8953 = …;
static struct clk_smd_rpm *sm6125_clks[] = …;
static const struct rpm_smd_clk_desc rpm_clk_sm6125 = …;
static struct clk_smd_rpm *sm6115_clks[] = …;
static const struct rpm_smd_clk_desc rpm_clk_sm6115 = …;
static struct clk_smd_rpm *sm6375_clks[] = …;
static const struct rpm_smd_clk_desc rpm_clk_sm6375 = …;
static struct clk_smd_rpm *qcm2290_clks[] = …;
static const struct rpm_smd_clk_desc rpm_clk_qcm2290 = …;
static const struct of_device_id rpm_smd_clk_match_table[] = …;
MODULE_DEVICE_TABLE(of, rpm_smd_clk_match_table);
static struct clk_hw *qcom_smdrpm_clk_hw_get(struct of_phandle_args *clkspec,
void *data)
{ … }
static void rpm_smd_unregister_icc(void *data)
{ … }
static int rpm_smd_clk_probe(struct platform_device *pdev)
{ … }
static struct platform_driver rpm_smd_clk_driver = …;
static int __init rpm_smd_clk_init(void)
{ … }
core_initcall(rpm_smd_clk_init);
static void __exit rpm_smd_clk_exit(void)
{ … }
module_exit(rpm_smd_clk_exit);
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;
MODULE_ALIAS(…) …;