Commit dff148ad authored by Gerhard Sittig's avatar Gerhard Sittig Committed by Anatolij Gustschin

spi: mpc512x: adjust to OF based clock lookup

after device tree based clock lookup became available, the peripheral
driver need no longer construct clock names which include the PSC index,
remove the "psc%d_mclk" template and unconditionally use 'mclk'

acquire and release the 'ipg' clock item for register access as well

Cc: Mark Brown <broonie@kernel.org>
Cc: linux-spi@vger.kernel.org
Signed-off-by: default avatarGerhard Sittig <gsi@denx.de>
Acked-by: default avatarMark Brown <broonie@linaro.org>
Signed-off-by: default avatarAnatolij Gustschin <agust@denx.de>
parent 7d71d5b2
...@@ -40,6 +40,7 @@ struct mpc512x_psc_spi { ...@@ -40,6 +40,7 @@ struct mpc512x_psc_spi {
unsigned int irq; unsigned int irq;
u8 bits_per_word; u8 bits_per_word;
struct clk *clk_mclk; struct clk *clk_mclk;
struct clk *clk_ipg;
u32 mclk_rate; u32 mclk_rate;
struct completion txisrdone; struct completion txisrdone;
...@@ -475,8 +476,6 @@ static int mpc512x_psc_spi_do_probe(struct device *dev, u32 regaddr, ...@@ -475,8 +476,6 @@ static int mpc512x_psc_spi_do_probe(struct device *dev, u32 regaddr,
struct spi_master *master; struct spi_master *master;
int ret; int ret;
void *tempp; void *tempp;
int psc_num;
char clk_name[16];
struct clk *clk; struct clk *clk;
master = spi_alloc_master(dev, sizeof *mps); master = spi_alloc_master(dev, sizeof *mps);
...@@ -520,9 +519,7 @@ static int mpc512x_psc_spi_do_probe(struct device *dev, u32 regaddr, ...@@ -520,9 +519,7 @@ static int mpc512x_psc_spi_do_probe(struct device *dev, u32 regaddr,
goto free_master; goto free_master;
init_completion(&mps->txisrdone); init_completion(&mps->txisrdone);
psc_num = master->bus_num; clk = devm_clk_get(dev, "mclk");
snprintf(clk_name, sizeof(clk_name), "psc%d_mclk", psc_num);
clk = devm_clk_get(dev, clk_name);
if (IS_ERR(clk)) { if (IS_ERR(clk)) {
ret = PTR_ERR(clk); ret = PTR_ERR(clk);
goto free_irq; goto free_irq;
...@@ -533,17 +530,29 @@ static int mpc512x_psc_spi_do_probe(struct device *dev, u32 regaddr, ...@@ -533,17 +530,29 @@ static int mpc512x_psc_spi_do_probe(struct device *dev, u32 regaddr,
mps->clk_mclk = clk; mps->clk_mclk = clk;
mps->mclk_rate = clk_get_rate(clk); mps->mclk_rate = clk_get_rate(clk);
clk = devm_clk_get(dev, "ipg");
if (IS_ERR(clk)) {
ret = PTR_ERR(clk);
goto free_mclk_clock;
}
ret = clk_prepare_enable(clk);
if (ret)
goto free_mclk_clock;
mps->clk_ipg = clk;
ret = mpc512x_psc_spi_port_config(master, mps); ret = mpc512x_psc_spi_port_config(master, mps);
if (ret < 0) if (ret < 0)
goto free_clock; goto free_ipg_clock;
ret = devm_spi_register_master(dev, master); ret = devm_spi_register_master(dev, master);
if (ret < 0) if (ret < 0)
goto free_clock; goto free_ipg_clock;
return ret; return ret;
free_clock: free_ipg_clock:
clk_disable_unprepare(mps->clk_ipg);
free_mclk_clock:
clk_disable_unprepare(mps->clk_mclk); clk_disable_unprepare(mps->clk_mclk);
free_irq: free_irq:
free_irq(mps->irq, mps); free_irq(mps->irq, mps);
...@@ -561,6 +570,7 @@ static int mpc512x_psc_spi_do_remove(struct device *dev) ...@@ -561,6 +570,7 @@ static int mpc512x_psc_spi_do_remove(struct device *dev)
struct mpc512x_psc_spi *mps = spi_master_get_devdata(master); struct mpc512x_psc_spi *mps = spi_master_get_devdata(master);
clk_disable_unprepare(mps->clk_mclk); clk_disable_unprepare(mps->clk_mclk);
clk_disable_unprepare(mps->clk_ipg);
free_irq(mps->irq, mps); free_irq(mps->irq, mps);
if (mps->psc) if (mps->psc)
iounmap(mps->psc); iounmap(mps->psc);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment