mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-21 03:33:59 +08:00
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: Gerhard Sittig <gsi@denx.de> Acked-by: Mark Brown <broonie@linaro.org> Signed-off-by: Anatolij Gustschin <agust@denx.de>
This commit is contained in:
parent
7d71d5b2e8
commit
dff148ad7b
@ -40,6 +40,7 @@ struct mpc512x_psc_spi {
|
||||
unsigned int irq;
|
||||
u8 bits_per_word;
|
||||
struct clk *clk_mclk;
|
||||
struct clk *clk_ipg;
|
||||
u32 mclk_rate;
|
||||
|
||||
struct completion txisrdone;
|
||||
@ -475,8 +476,6 @@ static int mpc512x_psc_spi_do_probe(struct device *dev, u32 regaddr,
|
||||
struct spi_master *master;
|
||||
int ret;
|
||||
void *tempp;
|
||||
int psc_num;
|
||||
char clk_name[16];
|
||||
struct clk *clk;
|
||||
|
||||
master = spi_alloc_master(dev, sizeof *mps);
|
||||
@ -520,9 +519,7 @@ static int mpc512x_psc_spi_do_probe(struct device *dev, u32 regaddr,
|
||||
goto free_master;
|
||||
init_completion(&mps->txisrdone);
|
||||
|
||||
psc_num = master->bus_num;
|
||||
snprintf(clk_name, sizeof(clk_name), "psc%d_mclk", psc_num);
|
||||
clk = devm_clk_get(dev, clk_name);
|
||||
clk = devm_clk_get(dev, "mclk");
|
||||
if (IS_ERR(clk)) {
|
||||
ret = PTR_ERR(clk);
|
||||
goto free_irq;
|
||||
@ -533,17 +530,29 @@ static int mpc512x_psc_spi_do_probe(struct device *dev, u32 regaddr,
|
||||
mps->clk_mclk = 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);
|
||||
if (ret < 0)
|
||||
goto free_clock;
|
||||
goto free_ipg_clock;
|
||||
|
||||
ret = devm_spi_register_master(dev, master);
|
||||
if (ret < 0)
|
||||
goto free_clock;
|
||||
goto free_ipg_clock;
|
||||
|
||||
return ret;
|
||||
|
||||
free_clock:
|
||||
free_ipg_clock:
|
||||
clk_disable_unprepare(mps->clk_ipg);
|
||||
free_mclk_clock:
|
||||
clk_disable_unprepare(mps->clk_mclk);
|
||||
free_irq:
|
||||
free_irq(mps->irq, mps);
|
||||
@ -561,6 +570,7 @@ static int mpc512x_psc_spi_do_remove(struct device *dev)
|
||||
struct mpc512x_psc_spi *mps = spi_master_get_devdata(master);
|
||||
|
||||
clk_disable_unprepare(mps->clk_mclk);
|
||||
clk_disable_unprepare(mps->clk_ipg);
|
||||
free_irq(mps->irq, mps);
|
||||
if (mps->psc)
|
||||
iounmap(mps->psc);
|
||||
|
Loading…
Reference in New Issue
Block a user