clk: ti: remove exported ll_ops struct, instead add an API for registration
We should avoid exporting data from drivers, instead use an API for registering the clock low level operations. Signed-off-by: Tero Kristo <t-kristo@ti.com>
This commit is contained in:
parent
9e11814ab8
commit
e9e63088e4
@ -112,6 +112,19 @@ static struct ti_clk_ll_ops omap_clk_ll_ops = {
|
||||
.cm_split_idlest_reg = cm_split_idlest_reg,
|
||||
};
|
||||
|
||||
/**
|
||||
* omap2_clk_setup_ll_ops - setup clock driver low-level ops
|
||||
*
|
||||
* Sets up clock driver low-level platform ops. These are needed
|
||||
* for register accesses and various other misc platform operations.
|
||||
* Returns 0 on success, -EBUSY if low level ops have been registered
|
||||
* already.
|
||||
*/
|
||||
int __init omap2_clk_setup_ll_ops(void)
|
||||
{
|
||||
return ti_clk_setup_ll_ops(&omap_clk_ll_ops);
|
||||
}
|
||||
|
||||
/**
|
||||
* omap2_clk_provider_init - initialize a clock provider
|
||||
* @match_table: DT device table to match for devices to init
|
||||
@ -130,8 +143,6 @@ int __init omap2_clk_provider_init(struct device_node *np, int index,
|
||||
{
|
||||
struct clk_iomap *io;
|
||||
|
||||
ti_clk_ll_ops = &omap_clk_ll_ops;
|
||||
|
||||
io = kzalloc(sizeof(*io), GFP_KERNEL);
|
||||
|
||||
io->regmap = syscon;
|
||||
@ -155,8 +166,6 @@ void __init omap2_clk_legacy_provider_init(int index, void __iomem *mem)
|
||||
{
|
||||
struct clk_iomap *io;
|
||||
|
||||
ti_clk_ll_ops = &omap_clk_ll_ops;
|
||||
|
||||
io = memblock_virt_alloc(sizeof(*io), 0);
|
||||
|
||||
io->mem = mem;
|
||||
|
@ -83,6 +83,7 @@ struct regmap;
|
||||
int __init omap2_clk_provider_init(struct device_node *np, int index,
|
||||
struct regmap *syscon, void __iomem *mem);
|
||||
void __init omap2_clk_legacy_provider_init(int index, void __iomem *mem);
|
||||
int __init omap2_clk_setup_ll_ops(void);
|
||||
|
||||
void __init ti_clk_init_features(void);
|
||||
#endif
|
||||
|
@ -722,6 +722,8 @@ int __init omap_clk_init(void)
|
||||
|
||||
ti_clk_init_features();
|
||||
|
||||
omap2_clk_setup_ll_ops();
|
||||
|
||||
if (of_have_populated_dt()) {
|
||||
ret = omap_control_init();
|
||||
if (ret)
|
||||
|
@ -32,6 +32,27 @@ static struct device_node *clocks_node_ptr[CLK_MAX_MEMMAPS];
|
||||
|
||||
struct ti_clk_features ti_clk_features;
|
||||
|
||||
/**
|
||||
* ti_clk_setup_ll_ops - setup low level clock operations
|
||||
* @ops: low level clock ops descriptor
|
||||
*
|
||||
* Sets up low level clock operations for TI clock driver. This is used
|
||||
* to provide various callbacks for the clock driver towards platform
|
||||
* specific code. Returns 0 on success, -EBUSY if ll_ops have been
|
||||
* registered already.
|
||||
*/
|
||||
int ti_clk_setup_ll_ops(struct ti_clk_ll_ops *ops)
|
||||
{
|
||||
if (ti_clk_ll_ops) {
|
||||
pr_err("Attempt to register ll_ops multiple times.\n");
|
||||
return -EBUSY;
|
||||
}
|
||||
|
||||
ti_clk_ll_ops = ops;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* ti_dt_clocks_register - register DT alias clocks during boot
|
||||
* @oclks: list of clocks to register
|
||||
|
@ -280,4 +280,6 @@ long omap4_dpll_regm4xen_determine_rate(struct clk_hw *hw,
|
||||
unsigned long *best_parent_rate,
|
||||
struct clk_hw **best_parent_clk);
|
||||
|
||||
extern struct ti_clk_ll_ops *ti_clk_ll_ops;
|
||||
|
||||
#endif
|
||||
|
@ -21,6 +21,8 @@
|
||||
#include <linux/of_address.h>
|
||||
#include <linux/clk/ti.h>
|
||||
|
||||
#include "clock.h"
|
||||
|
||||
#undef pr_fmt
|
||||
#define pr_fmt(fmt) "%s: " fmt, __func__
|
||||
|
||||
|
@ -235,8 +235,6 @@ struct ti_clk_ll_ops {
|
||||
u8 *idlest_reg_id);
|
||||
};
|
||||
|
||||
extern struct ti_clk_ll_ops *ti_clk_ll_ops;
|
||||
|
||||
#define to_clk_hw_omap(_hw) container_of(_hw, struct clk_hw_omap, hw)
|
||||
|
||||
void omap2_init_clk_clkdm(struct clk_hw *clk);
|
||||
@ -255,6 +253,7 @@ unsigned long omap2_get_dpll_rate(struct clk_hw_omap *clk);
|
||||
void ti_dt_clk_init_provider(struct device_node *np, int index);
|
||||
void ti_dt_clk_init_retry_clks(void);
|
||||
void ti_dt_clockdomains_setup(void);
|
||||
int ti_clk_setup_ll_ops(struct ti_clk_ll_ops *ops);
|
||||
|
||||
int omap3430_dt_clk_init(void);
|
||||
int omap3630_dt_clk_init(void);
|
||||
|
Loading…
Reference in New Issue
Block a user