#include <linux/clk-provider.h>
#include <linux/device.h>
#include <linux/err.h>
#include <linux/of.h>
#include <linux/module.h>
#include <linux/platform_device.h>
#include <linux/scpi_protocol.h>
struct scpi_clk { … };
#define to_scpi_clk(clk) …
static struct platform_device *cpufreq_dev;
static unsigned long scpi_clk_recalc_rate(struct clk_hw *hw,
unsigned long parent_rate)
{ … }
static long scpi_clk_round_rate(struct clk_hw *hw, unsigned long rate,
unsigned long *parent_rate)
{ … }
static int scpi_clk_set_rate(struct clk_hw *hw, unsigned long rate,
unsigned long parent_rate)
{ … }
static const struct clk_ops scpi_clk_ops = …;
static long __scpi_dvfs_round_rate(struct scpi_clk *clk, unsigned long rate)
{ … }
static unsigned long scpi_dvfs_recalc_rate(struct clk_hw *hw,
unsigned long parent_rate)
{ … }
static long scpi_dvfs_round_rate(struct clk_hw *hw, unsigned long rate,
unsigned long *parent_rate)
{ … }
static int __scpi_find_dvfs_index(struct scpi_clk *clk, unsigned long rate)
{ … }
static int scpi_dvfs_set_rate(struct clk_hw *hw, unsigned long rate,
unsigned long parent_rate)
{ … }
static const struct clk_ops scpi_dvfs_ops = …;
static const struct of_device_id scpi_clk_match[] __maybe_unused = …;
static int
scpi_clk_ops_init(struct device *dev, const struct of_device_id *match,
struct scpi_clk *sclk, const char *name)
{ … }
struct scpi_clk_data { … };
static struct clk_hw *
scpi_of_clk_src_get(struct of_phandle_args *clkspec, void *data)
{ … }
static int scpi_clk_add(struct device *dev, struct device_node *np,
const struct of_device_id *match)
{ … }
static void scpi_clocks_remove(struct platform_device *pdev)
{ … }
static int scpi_clocks_probe(struct platform_device *pdev)
{ … }
static const struct of_device_id scpi_clocks_ids[] = …;
MODULE_DEVICE_TABLE(of, scpi_clocks_ids);
static struct platform_driver scpi_clocks_driver = …;
module_platform_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;