Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

authored by

Gerhard Sittig and committed by
Anatolij Gustschin
dff148ad 7d71d5b2

+18 -8
+18 -8
drivers/spi/spi-mpc512x-psc.c
··· 40 40 unsigned int irq; 41 41 u8 bits_per_word; 42 42 struct clk *clk_mclk; 43 + struct clk *clk_ipg; 43 44 u32 mclk_rate; 44 45 45 46 struct completion txisrdone; ··· 476 475 struct spi_master *master; 477 476 int ret; 478 477 void *tempp; 479 - int psc_num; 480 - char clk_name[16]; 481 478 struct clk *clk; 482 479 483 480 master = spi_alloc_master(dev, sizeof *mps); ··· 519 520 goto free_master; 520 521 init_completion(&mps->txisrdone); 521 522 522 - psc_num = master->bus_num; 523 - snprintf(clk_name, sizeof(clk_name), "psc%d_mclk", psc_num); 524 - clk = devm_clk_get(dev, clk_name); 523 + clk = devm_clk_get(dev, "mclk"); 525 524 if (IS_ERR(clk)) { 526 525 ret = PTR_ERR(clk); 527 526 goto free_irq; ··· 530 533 mps->clk_mclk = clk; 531 534 mps->mclk_rate = clk_get_rate(clk); 532 535 536 + clk = devm_clk_get(dev, "ipg"); 537 + if (IS_ERR(clk)) { 538 + ret = PTR_ERR(clk); 539 + goto free_mclk_clock; 540 + } 541 + ret = clk_prepare_enable(clk); 542 + if (ret) 543 + goto free_mclk_clock; 544 + mps->clk_ipg = clk; 545 + 533 546 ret = mpc512x_psc_spi_port_config(master, mps); 534 547 if (ret < 0) 535 - goto free_clock; 548 + goto free_ipg_clock; 536 549 537 550 ret = devm_spi_register_master(dev, master); 538 551 if (ret < 0) 539 - goto free_clock; 552 + goto free_ipg_clock; 540 553 541 554 return ret; 542 555 543 - free_clock: 556 + free_ipg_clock: 557 + clk_disable_unprepare(mps->clk_ipg); 558 + free_mclk_clock: 544 559 clk_disable_unprepare(mps->clk_mclk); 545 560 free_irq: 546 561 free_irq(mps->irq, mps); ··· 570 561 struct mpc512x_psc_spi *mps = spi_master_get_devdata(master); 571 562 572 563 clk_disable_unprepare(mps->clk_mclk); 564 + clk_disable_unprepare(mps->clk_ipg); 573 565 free_irq(mps->irq, mps); 574 566 if (mps->psc) 575 567 iounmap(mps->psc);