#include <linux/module.h>
#include <linux/clk-provider.h>
#include <linux/slab.h>
#include <linux/err.h>
#include <linux/of.h>
#include <linux/platform_device.h>
static unsigned long clk_factor_recalc_rate(struct clk_hw *hw,
unsigned long parent_rate)
{ … }
static long clk_factor_round_rate(struct clk_hw *hw, unsigned long rate,
unsigned long *prate)
{ … }
static int clk_factor_set_rate(struct clk_hw *hw, unsigned long rate,
unsigned long parent_rate)
{ … }
static unsigned long clk_factor_recalc_accuracy(struct clk_hw *hw,
unsigned long parent_accuracy)
{ … }
const struct clk_ops clk_fixed_factor_ops = …;
EXPORT_SYMBOL_GPL(…);
static void devm_clk_hw_register_fixed_factor_release(struct device *dev, void *res)
{ … }
static struct clk_hw *
__clk_hw_register_fixed_factor(struct device *dev, struct device_node *np,
const char *name, const char *parent_name,
const struct clk_hw *parent_hw, const struct clk_parent_data *pdata,
unsigned long flags, unsigned int mult, unsigned int div,
unsigned long acc, unsigned int fixflags, bool devm)
{ … }
struct clk_hw *devm_clk_hw_register_fixed_factor_index(struct device *dev,
const char *name, unsigned int index, unsigned long flags,
unsigned int mult, unsigned int div)
{ … }
EXPORT_SYMBOL_GPL(…);
struct clk_hw *devm_clk_hw_register_fixed_factor_parent_hw(struct device *dev,
const char *name, const struct clk_hw *parent_hw,
unsigned long flags, unsigned int mult, unsigned int div)
{ … }
EXPORT_SYMBOL_GPL(…);
struct clk_hw *clk_hw_register_fixed_factor_parent_hw(struct device *dev,
const char *name, const struct clk_hw *parent_hw,
unsigned long flags, unsigned int mult, unsigned int div)
{ … }
EXPORT_SYMBOL_GPL(…);
struct clk_hw *clk_hw_register_fixed_factor(struct device *dev,
const char *name, const char *parent_name, unsigned long flags,
unsigned int mult, unsigned int div)
{ … }
EXPORT_SYMBOL_GPL(…);
struct clk_hw *clk_hw_register_fixed_factor_fwname(struct device *dev,
struct device_node *np, const char *name, const char *fw_name,
unsigned long flags, unsigned int mult, unsigned int div)
{ … }
EXPORT_SYMBOL_GPL(…);
struct clk_hw *clk_hw_register_fixed_factor_with_accuracy_fwname(struct device *dev,
struct device_node *np, const char *name, const char *fw_name,
unsigned long flags, unsigned int mult, unsigned int div,
unsigned long acc)
{ … }
EXPORT_SYMBOL_GPL(…);
struct clk *clk_register_fixed_factor(struct device *dev, const char *name,
const char *parent_name, unsigned long flags,
unsigned int mult, unsigned int div)
{ … }
EXPORT_SYMBOL_GPL(…);
void clk_unregister_fixed_factor(struct clk *clk)
{ … }
EXPORT_SYMBOL_GPL(…);
void clk_hw_unregister_fixed_factor(struct clk_hw *hw)
{ … }
EXPORT_SYMBOL_GPL(…);
struct clk_hw *devm_clk_hw_register_fixed_factor(struct device *dev,
const char *name, const char *parent_name, unsigned long flags,
unsigned int mult, unsigned int div)
{ … }
EXPORT_SYMBOL_GPL(…);
struct clk_hw *devm_clk_hw_register_fixed_factor_fwname(struct device *dev,
struct device_node *np, const char *name, const char *fw_name,
unsigned long flags, unsigned int mult, unsigned int div)
{ … }
EXPORT_SYMBOL_GPL(…);
struct clk_hw *devm_clk_hw_register_fixed_factor_with_accuracy_fwname(struct device *dev,
struct device_node *np, const char *name, const char *fw_name,
unsigned long flags, unsigned int mult, unsigned int div,
unsigned long acc)
{ … }
EXPORT_SYMBOL_GPL(…);
#ifdef CONFIG_OF
static struct clk_hw *_of_fixed_factor_clk_setup(struct device_node *node)
{ … }
void __init of_fixed_factor_clk_setup(struct device_node *node)
{ … }
CLK_OF_DECLARE(fixed_factor_clk, "fixed-factor-clock",
of_fixed_factor_clk_setup);
static void of_fixed_factor_clk_remove(struct platform_device *pdev)
{ … }
static int of_fixed_factor_clk_probe(struct platform_device *pdev)
{ … }
static const struct of_device_id of_fixed_factor_clk_ids[] = …;
MODULE_DEVICE_TABLE(of, of_fixed_factor_clk_ids);
static struct platform_driver of_fixed_factor_clk_driver = …;
builtin_platform_driver(…) …;
#endif