Commit 2f1a2c1d authored by Dong Aisheng's avatar Dong Aisheng Committed by Shawn Guo
Browse files

clk: imx: scu: allow scu clk to take device pointer



Used to support runtime pm.

Cc: Shawn Guo <shawnguo@kernel.org>
Cc: Sascha Hauer <kernel@pengutronix.de>
Cc: Michael Turquette <mturquette@baylibre.com>
Reviewed-by: default avatarStephen Boyd <sboyd@kernel.org>
Signed-off-by: default avatarDong Aisheng <aisheng.dong@nxp.com>
Signed-off-by: default avatarShawn Guo <shawnguo@kernel.org>
parent 0d5f1f47
Loading
Loading
Loading
Loading
+5 −4
Original line number Diff line number Diff line
@@ -387,8 +387,9 @@ static const struct clk_ops clk_scu_cpu_ops = {
	.unprepare = clk_scu_unprepare,
};

struct clk_hw *__imx_clk_scu(const char *name, const char * const *parents,
			     int num_parents, u32 rsrc_id, u8 clk_type)
struct clk_hw *__imx_clk_scu(struct device *dev, const char *name,
			     const char * const *parents, int num_parents,
			     u32 rsrc_id, u8 clk_type)
{
	struct clk_init_data init;
	struct clk_scu *clk;
@@ -422,7 +423,7 @@ struct clk_hw *__imx_clk_scu(const char *name, const char * const *parents,
	clk->hw.init = &init;

	hw = &clk->hw;
	ret = clk_hw_register(NULL, hw);
	ret = clk_hw_register(dev, hw);
	if (ret) {
		kfree(clk);
		hw = ERR_PTR(ret);
@@ -453,7 +454,7 @@ static int imx_clk_scu_probe(struct platform_device *pdev)
	struct imx_scu_clk_node *clk = dev_get_platdata(dev);
	struct clk_hw *hw;

	hw = __imx_clk_scu(clk->name, clk->parents, clk->num_parents,
	hw = __imx_clk_scu(NULL, clk->name, clk->parents, clk->num_parents,
			   clk->rsrc, clk->clk_type);
	if (IS_ERR(hw))
		return PTR_ERR(hw);
+5 −4
Original line number Diff line number Diff line
@@ -19,8 +19,9 @@ struct clk_hw *imx_clk_scu_alloc_dev(const char *name,
				     const char * const *parents,
				     int num_parents, u32 rsrc_id, u8 clk_type);

struct clk_hw *__imx_clk_scu(const char *name, const char * const *parents,
			     int num_parents, u32 rsrc_id, u8 clk_type);
struct clk_hw *__imx_clk_scu(struct device *dev, const char *name,
			     const char * const *parents, int num_parents,
			     u32 rsrc_id, u8 clk_type);

void imx_clk_scu_unregister(void);

@@ -30,7 +31,7 @@ static inline struct clk_hw *imx_clk_scu(const char *name, u32 rsrc_id,
	if (clk_cells == 2)
		return imx_clk_scu_alloc_dev(name, NULL, 0, rsrc_id, clk_type);
	else
		return __imx_clk_scu(name, NULL, 0, rsrc_id, clk_type);
		return __imx_clk_scu(NULL, name, NULL, 0, rsrc_id, clk_type);
}

static inline struct clk_hw *imx_clk_scu2(const char *name, const char * const *parents,
@@ -40,7 +41,7 @@ static inline struct clk_hw *imx_clk_scu2(const char *name, const char * const *
	if (clk_cells == 2)
		return imx_clk_scu_alloc_dev(name, parents, num_parents, rsrc_id, clk_type);
	else
		return __imx_clk_scu(name, parents, num_parents, rsrc_id, clk_type);
		return __imx_clk_scu(NULL, name, parents, num_parents, rsrc_id, clk_type);
}

struct clk_hw *imx_clk_lpcg_scu(const char *name, const char *parent_name,