spi: spi-adi-v3: convert to use common clk framework
authorScott Jiang <scott.jiang.linux@gmail.com>
Sat, 5 Apr 2014 03:29:09 +0000 (11:29 +0800)
committerMark Brown <broonie@linaro.org>
Mon, 14 Apr 2014 16:45:25 +0000 (17:45 +0100)
Use common clk api to get spi clock.

Signed-off-by: Scott Jiang <scott.jiang.linux@gmail.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
arch/blackfin/mach-bf609/clock.c
drivers/spi/spi-adi-v3.c

index 56200f3..244fa4a 100644 (file)
@@ -363,6 +363,12 @@ static struct clk ethclk = {
        .ops        = &dummy_clk_ops,
 };
 
+static struct clk spiclk = {
+       .name       = "spi",
+       .parent     = &sclk1,
+       .ops        = &dummy_clk_ops,
+};
+
 static struct clk_lookup bf609_clks[] = {
        CLK(sys_clkin, NULL, "SYS_CLKIN"),
        CLK(pll_clk, NULL, "PLLCLK"),
@@ -375,6 +381,7 @@ static struct clk_lookup bf609_clks[] = {
        CLK(dclk, NULL, "DCLK"),
        CLK(oclk, NULL, "OCLK"),
        CLK(ethclk, NULL, "stmmaceth"),
+       CLK(spiclk, NULL, "spi"),
 };
 
 int __init clk_init(void)
index 0c2914c..dcb2287 100644 (file)
@@ -13,6 +13,7 @@
  * GNU General Public License for more details.
  */
 
+#include <linux/clk.h>
 #include <linux/delay.h>
 #include <linux/device.h>
 #include <linux/dma-mapping.h>
@@ -800,7 +801,7 @@ static int adi_spi_probe(struct platform_device *pdev)
        struct adi_spi_master *drv_data;
        struct resource *mem, *res;
        unsigned int tx_dma, rx_dma;
-       unsigned long sclk;
+       struct clk *sclk;
        int ret;
 
        if (!info) {
@@ -808,10 +809,10 @@ static int adi_spi_probe(struct platform_device *pdev)
                return -ENODEV;
        }
 
-       sclk = get_sclk1();
-       if (!sclk) {
-               dev_err(dev, "can not get sclk1\n");
-               return -ENXIO;
+       sclk = devm_clk_get(dev, "spi");
+       if (IS_ERR(sclk)) {
+               dev_err(dev, "can not get spi clock\n");
+               return PTR_ERR(sclk);
        }
 
        res = platform_get_resource(pdev, IORESOURCE_DMA, 0);
@@ -852,7 +853,7 @@ static int adi_spi_probe(struct platform_device *pdev)
        drv_data->tx_dma = tx_dma;
        drv_data->rx_dma = rx_dma;
        drv_data->pin_req = info->pin_req;
-       drv_data->sclk = sclk;
+       drv_data->sclk = clk_get_rate(sclk);
 
        mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
        drv_data->regs = devm_ioremap_resource(dev, mem);