Message ID | 20190430103056.32537-2-peng.fan@nxp.com |
---|---|
State | Superseded |
Delegated to: | Stefano Babic |
Headers | show |
Series | i.MX8MM + CCF | expand |
Hi Peng, > Directly use driver data is wrong, need to the helper to get > the correct clk_divider and etc I just followed the kernel approach. This works as the address of first element of struct clk_XXX is always struct clk clk address; But yes, this may be the preferred (more readable) approach. > > Signed-off-by: Peng Fan <peng.fan@nxp.com> > --- > drivers/clk/clk-divider.c | 2 +- > drivers/clk/imx/clk-gate2.c | 4 ++-- > drivers/clk/imx/clk-pfd.c | 2 +- > drivers/clk/imx/clk-pllv3.c | 2 +- > 4 files changed, 5 insertions(+), 5 deletions(-) > > diff --git a/drivers/clk/clk-divider.c b/drivers/clk/clk-divider.c > index 3841d8bfbb..1d2c1b1ec4 100644 > --- a/drivers/clk/clk-divider.c > +++ b/drivers/clk/clk-divider.c > @@ -70,7 +70,7 @@ unsigned long divider_recalc_rate(struct clk *hw, > unsigned long parent_rate, static ulong > clk_divider_recalc_rate(struct clk *clk) { > struct clk_divider *divider = > - (struct clk_divider *)dev_get_driver_data(clk->dev); > + to_clk_divider((struct clk > *)dev_get_driver_data(clk->dev)); unsigned long parent_rate = > clk_get_parent_rate(clk); unsigned int val; > > diff --git a/drivers/clk/imx/clk-gate2.c b/drivers/clk/imx/clk-gate2.c > index 1e53e4f9db..83589b9206 100644 > --- a/drivers/clk/imx/clk-gate2.c > +++ b/drivers/clk/imx/clk-gate2.c > @@ -38,7 +38,7 @@ struct clk_gate2 { > static int clk_gate2_enable(struct clk *clk) > { > struct clk_gate2 *gate = > - (struct clk_gate2 *)dev_get_driver_data(clk->dev); > + to_clk_gate2((struct clk > *)dev_get_driver_data(clk->dev)); u32 reg; > > reg = readl(gate->reg); > @@ -52,7 +52,7 @@ static int clk_gate2_enable(struct clk *clk) > static int clk_gate2_disable(struct clk *clk) > { > struct clk_gate2 *gate = > - (struct clk_gate2 *)dev_get_driver_data(clk->dev); > + to_clk_gate2((struct clk > *)dev_get_driver_data(clk->dev)); u32 reg; > > reg = readl(gate->reg); > diff --git a/drivers/clk/imx/clk-pfd.c b/drivers/clk/imx/clk-pfd.c > index 2293d481d4..51521ccee6 100644 > --- a/drivers/clk/imx/clk-pfd.c > +++ b/drivers/clk/imx/clk-pfd.c > @@ -41,7 +41,7 @@ struct clk_pfd { > static unsigned long clk_pfd_recalc_rate(struct clk *clk) > { > struct clk_pfd *pfd = > - (struct clk_pfd *)dev_get_driver_data(clk->dev); > + to_clk_pfd((struct clk > *)dev_get_driver_data(clk->dev)); unsigned long parent_rate = > clk_get_parent_rate(clk); u64 tmp = parent_rate; > u8 frac = (readl(pfd->reg) >> (pfd->idx * 8)) & 0x3f; > diff --git a/drivers/clk/imx/clk-pllv3.c b/drivers/clk/imx/clk-pllv3.c > index 3fe9b7c03d..28c0439878 100644 > --- a/drivers/clk/imx/clk-pllv3.c > +++ b/drivers/clk/imx/clk-pllv3.c > @@ -27,7 +27,7 @@ struct clk_pllv3 { > static ulong clk_pllv3_get_rate(struct clk *clk) > { > struct clk_pllv3 *pll = > - (struct clk_pllv3 *)dev_get_driver_data(clk->dev); > + to_clk_pllv3((struct clk > *)dev_get_driver_data(clk->dev)); unsigned long parent_rate = > clk_get_parent_rate(clk); > u32 div = (readl(pll->base) >> pll->div_shift) & > pll->div_mask; Best regards, Lukasz Majewski -- DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma@denx.de
diff --git a/drivers/clk/clk-divider.c b/drivers/clk/clk-divider.c index 3841d8bfbb..1d2c1b1ec4 100644 --- a/drivers/clk/clk-divider.c +++ b/drivers/clk/clk-divider.c @@ -70,7 +70,7 @@ unsigned long divider_recalc_rate(struct clk *hw, unsigned long parent_rate, static ulong clk_divider_recalc_rate(struct clk *clk) { struct clk_divider *divider = - (struct clk_divider *)dev_get_driver_data(clk->dev); + to_clk_divider((struct clk *)dev_get_driver_data(clk->dev)); unsigned long parent_rate = clk_get_parent_rate(clk); unsigned int val; diff --git a/drivers/clk/imx/clk-gate2.c b/drivers/clk/imx/clk-gate2.c index 1e53e4f9db..83589b9206 100644 --- a/drivers/clk/imx/clk-gate2.c +++ b/drivers/clk/imx/clk-gate2.c @@ -38,7 +38,7 @@ struct clk_gate2 { static int clk_gate2_enable(struct clk *clk) { struct clk_gate2 *gate = - (struct clk_gate2 *)dev_get_driver_data(clk->dev); + to_clk_gate2((struct clk *)dev_get_driver_data(clk->dev)); u32 reg; reg = readl(gate->reg); @@ -52,7 +52,7 @@ static int clk_gate2_enable(struct clk *clk) static int clk_gate2_disable(struct clk *clk) { struct clk_gate2 *gate = - (struct clk_gate2 *)dev_get_driver_data(clk->dev); + to_clk_gate2((struct clk *)dev_get_driver_data(clk->dev)); u32 reg; reg = readl(gate->reg); diff --git a/drivers/clk/imx/clk-pfd.c b/drivers/clk/imx/clk-pfd.c index 2293d481d4..51521ccee6 100644 --- a/drivers/clk/imx/clk-pfd.c +++ b/drivers/clk/imx/clk-pfd.c @@ -41,7 +41,7 @@ struct clk_pfd { static unsigned long clk_pfd_recalc_rate(struct clk *clk) { struct clk_pfd *pfd = - (struct clk_pfd *)dev_get_driver_data(clk->dev); + to_clk_pfd((struct clk *)dev_get_driver_data(clk->dev)); unsigned long parent_rate = clk_get_parent_rate(clk); u64 tmp = parent_rate; u8 frac = (readl(pfd->reg) >> (pfd->idx * 8)) & 0x3f; diff --git a/drivers/clk/imx/clk-pllv3.c b/drivers/clk/imx/clk-pllv3.c index 3fe9b7c03d..28c0439878 100644 --- a/drivers/clk/imx/clk-pllv3.c +++ b/drivers/clk/imx/clk-pllv3.c @@ -27,7 +27,7 @@ struct clk_pllv3 { static ulong clk_pllv3_get_rate(struct clk *clk) { struct clk_pllv3 *pll = - (struct clk_pllv3 *)dev_get_driver_data(clk->dev); + to_clk_pllv3((struct clk *)dev_get_driver_data(clk->dev)); unsigned long parent_rate = clk_get_parent_rate(clk); u32 div = (readl(pll->base) >> pll->div_shift) & pll->div_mask;
Directly use driver data is wrong, need to the helper to get the correct clk_divider and etc Signed-off-by: Peng Fan <peng.fan@nxp.com> --- drivers/clk/clk-divider.c | 2 +- drivers/clk/imx/clk-gate2.c | 4 ++-- drivers/clk/imx/clk-pfd.c | 2 +- drivers/clk/imx/clk-pllv3.c | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-)