aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2012-01-09 17:44:15 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2012-01-09 17:44:15 -0500
commit979ecef5b89a8003902299566d9cdc08de34a3ee (patch)
tree2a695d557adab1dec5263f014789f5b59238bac8 /drivers
parente8cbce976050a9f874a8b07012ddeb9b9eb59603 (diff)
parent8c3b2296f1aa13d7504d2c09bc819cef3759562a (diff)
Merge tag 'clk' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
clock management changes for i.MX Another simple series related to clock management, this time only for imx. * tag 'clk' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: ARM: mxs: select HAVE_CLK_PREPARE for clock clk: add config option HAVE_CLK_PREPARE into Kconfig ASoC: mxs-saif: convert to clk_prepare/clk_unprepare video: mxsfb: convert to clk_prepare/clk_unprepare serial: mxs-auart: convert to clk_prepare/clk_unprepare net: flexcan: convert to clk_prepare/clk_unprepare mtd: gpmi-lib: convert to clk_prepare/clk_unprepare mmc: mxs-mmc: convert to clk_prepare/clk_unprepare dma: mxs-dma: convert to clk_prepare/clk_unprepare net: fec: add clk_prepare/clk_unprepare ARM: mxs: convert platform code to clk_prepare/clk_unprepare clk: add helper functions clk_prepare_enable and clk_disable_unprepare Fix up trivial conflicts in drivers/net/ethernet/freescale/fec.c due to commit 0ebafefcaa7a ("net: fec: add clk_prepare/clk_unprepare") clashing trivially with commit e163cc97f9ac ("net/fec: fix the .remove code").
Diffstat (limited to 'drivers')
-rw-r--r--drivers/clk/Kconfig3
-rw-r--r--drivers/dma/mxs-dma.c8
-rw-r--r--drivers/mmc/host/mxs-mmc.c10
-rw-r--r--drivers/mtd/nand/gpmi-nand/gpmi-lib.c12
-rw-r--r--drivers/net/can/flexcan.c10
-rw-r--r--drivers/net/ethernet/freescale/fec.c10
-rw-r--r--drivers/tty/serial/mxs-auart.c8
-rw-r--r--drivers/video/mxsfb.c8
8 files changed, 36 insertions, 33 deletions
diff --git a/drivers/clk/Kconfig b/drivers/clk/Kconfig
index 35309274ad68..9b3cd08cd0ed 100644
--- a/drivers/clk/Kconfig
+++ b/drivers/clk/Kconfig
@@ -3,5 +3,8 @@ config CLKDEV_LOOKUP
3 bool 3 bool
4 select HAVE_CLK 4 select HAVE_CLK
5 5
6config HAVE_CLK_PREPARE
7 bool
8
6config HAVE_MACH_CLKDEV 9config HAVE_MACH_CLKDEV
7 bool 10 bool
diff --git a/drivers/dma/mxs-dma.c b/drivers/dma/mxs-dma.c
index b4588bdd98bb..fc903c0ed234 100644
--- a/drivers/dma/mxs-dma.c
+++ b/drivers/dma/mxs-dma.c
@@ -334,7 +334,7 @@ static int mxs_dma_alloc_chan_resources(struct dma_chan *chan)
334 goto err_irq; 334 goto err_irq;
335 } 335 }
336 336
337 ret = clk_enable(mxs_dma->clk); 337 ret = clk_prepare_enable(mxs_dma->clk);
338 if (ret) 338 if (ret)
339 goto err_clk; 339 goto err_clk;
340 340
@@ -372,7 +372,7 @@ static void mxs_dma_free_chan_resources(struct dma_chan *chan)
372 dma_free_coherent(mxs_dma->dma_device.dev, PAGE_SIZE, 372 dma_free_coherent(mxs_dma->dma_device.dev, PAGE_SIZE,
373 mxs_chan->ccw, mxs_chan->ccw_phys); 373 mxs_chan->ccw, mxs_chan->ccw_phys);
374 374
375 clk_disable(mxs_dma->clk); 375 clk_disable_unprepare(mxs_dma->clk);
376} 376}
377 377
378static struct dma_async_tx_descriptor *mxs_dma_prep_slave_sg( 378static struct dma_async_tx_descriptor *mxs_dma_prep_slave_sg(
@@ -578,7 +578,7 @@ static int __init mxs_dma_init(struct mxs_dma_engine *mxs_dma)
578{ 578{
579 int ret; 579 int ret;
580 580
581 ret = clk_enable(mxs_dma->clk); 581 ret = clk_prepare_enable(mxs_dma->clk);
582 if (ret) 582 if (ret)
583 goto err_out; 583 goto err_out;
584 584
@@ -604,7 +604,7 @@ static int __init mxs_dma_init(struct mxs_dma_engine *mxs_dma)
604 writel(MXS_DMA_CHANNELS_MASK << MXS_DMA_CHANNELS, 604 writel(MXS_DMA_CHANNELS_MASK << MXS_DMA_CHANNELS,
605 mxs_dma->base + HW_APBHX_CTRL1 + MXS_SET_ADDR); 605 mxs_dma->base + HW_APBHX_CTRL1 + MXS_SET_ADDR);
606 606
607 clk_disable(mxs_dma->clk); 607 clk_disable_unprepare(mxs_dma->clk);
608 608
609 return 0; 609 return 0;
610 610
diff --git a/drivers/mmc/host/mxs-mmc.c b/drivers/mmc/host/mxs-mmc.c
index 99b449d26a4d..973011f9a298 100644
--- a/drivers/mmc/host/mxs-mmc.c
+++ b/drivers/mmc/host/mxs-mmc.c
@@ -713,7 +713,7 @@ static int mxs_mmc_probe(struct platform_device *pdev)
713 ret = PTR_ERR(host->clk); 713 ret = PTR_ERR(host->clk);
714 goto out_iounmap; 714 goto out_iounmap;
715 } 715 }
716 clk_enable(host->clk); 716 clk_prepare_enable(host->clk);
717 717
718 mxs_mmc_reset(host); 718 mxs_mmc_reset(host);
719 719
@@ -772,7 +772,7 @@ out_free_dma:
772 if (host->dmach) 772 if (host->dmach)
773 dma_release_channel(host->dmach); 773 dma_release_channel(host->dmach);
774out_clk_put: 774out_clk_put:
775 clk_disable(host->clk); 775 clk_disable_unprepare(host->clk);
776 clk_put(host->clk); 776 clk_put(host->clk);
777out_iounmap: 777out_iounmap:
778 iounmap(host->base); 778 iounmap(host->base);
@@ -798,7 +798,7 @@ static int mxs_mmc_remove(struct platform_device *pdev)
798 if (host->dmach) 798 if (host->dmach)
799 dma_release_channel(host->dmach); 799 dma_release_channel(host->dmach);
800 800
801 clk_disable(host->clk); 801 clk_disable_unprepare(host->clk);
802 clk_put(host->clk); 802 clk_put(host->clk);
803 803
804 iounmap(host->base); 804 iounmap(host->base);
@@ -819,7 +819,7 @@ static int mxs_mmc_suspend(struct device *dev)
819 819
820 ret = mmc_suspend_host(mmc); 820 ret = mmc_suspend_host(mmc);
821 821
822 clk_disable(host->clk); 822 clk_disable_unprepare(host->clk);
823 823
824 return ret; 824 return ret;
825} 825}
@@ -830,7 +830,7 @@ static int mxs_mmc_resume(struct device *dev)
830 struct mxs_mmc_host *host = mmc_priv(mmc); 830 struct mxs_mmc_host *host = mmc_priv(mmc);
831 int ret = 0; 831 int ret = 0;
832 832
833 clk_enable(host->clk); 833 clk_prepare_enable(host->clk);
834 834
835 ret = mmc_resume_host(mmc); 835 ret = mmc_resume_host(mmc);
836 836
diff --git a/drivers/mtd/nand/gpmi-nand/gpmi-lib.c b/drivers/mtd/nand/gpmi-nand/gpmi-lib.c
index de4db7604a3f..2a56fc6f399a 100644
--- a/drivers/mtd/nand/gpmi-nand/gpmi-lib.c
+++ b/drivers/mtd/nand/gpmi-nand/gpmi-lib.c
@@ -126,7 +126,7 @@ int gpmi_init(struct gpmi_nand_data *this)
126 struct resources *r = &this->resources; 126 struct resources *r = &this->resources;
127 int ret; 127 int ret;
128 128
129 ret = clk_enable(r->clock); 129 ret = clk_prepare_enable(r->clock);
130 if (ret) 130 if (ret)
131 goto err_out; 131 goto err_out;
132 ret = gpmi_reset_block(r->gpmi_regs, false); 132 ret = gpmi_reset_block(r->gpmi_regs, false);
@@ -146,7 +146,7 @@ int gpmi_init(struct gpmi_nand_data *this)
146 /* Select BCH ECC. */ 146 /* Select BCH ECC. */
147 writel(BM_GPMI_CTRL1_BCH_MODE, r->gpmi_regs + HW_GPMI_CTRL1_SET); 147 writel(BM_GPMI_CTRL1_BCH_MODE, r->gpmi_regs + HW_GPMI_CTRL1_SET);
148 148
149 clk_disable(r->clock); 149 clk_disable_unprepare(r->clock);
150 return 0; 150 return 0;
151err_out: 151err_out:
152 return ret; 152 return ret;
@@ -202,7 +202,7 @@ int bch_set_geometry(struct gpmi_nand_data *this)
202 ecc_strength = bch_geo->ecc_strength >> 1; 202 ecc_strength = bch_geo->ecc_strength >> 1;
203 page_size = bch_geo->page_size; 203 page_size = bch_geo->page_size;
204 204
205 ret = clk_enable(r->clock); 205 ret = clk_prepare_enable(r->clock);
206 if (ret) 206 if (ret)
207 goto err_out; 207 goto err_out;
208 208
@@ -229,7 +229,7 @@ int bch_set_geometry(struct gpmi_nand_data *this)
229 writel(BM_BCH_CTRL_COMPLETE_IRQ_EN, 229 writel(BM_BCH_CTRL_COMPLETE_IRQ_EN,
230 r->bch_regs + HW_BCH_CTRL_SET); 230 r->bch_regs + HW_BCH_CTRL_SET);
231 231
232 clk_disable(r->clock); 232 clk_disable_unprepare(r->clock);
233 return 0; 233 return 0;
234err_out: 234err_out:
235 return ret; 235 return ret;
@@ -704,7 +704,7 @@ void gpmi_begin(struct gpmi_nand_data *this)
704 int ret; 704 int ret;
705 705
706 /* Enable the clock. */ 706 /* Enable the clock. */
707 ret = clk_enable(r->clock); 707 ret = clk_prepare_enable(r->clock);
708 if (ret) { 708 if (ret) {
709 pr_err("We failed in enable the clk\n"); 709 pr_err("We failed in enable the clk\n");
710 goto err_out; 710 goto err_out;
@@ -773,7 +773,7 @@ err_out:
773void gpmi_end(struct gpmi_nand_data *this) 773void gpmi_end(struct gpmi_nand_data *this)
774{ 774{
775 struct resources *r = &this->resources; 775 struct resources *r = &this->resources;
776 clk_disable(r->clock); 776 clk_disable_unprepare(r->clock);
777} 777}
778 778
779/* Clears a BCH interrupt. */ 779/* Clears a BCH interrupt. */
diff --git a/drivers/net/can/flexcan.c b/drivers/net/can/flexcan.c
index 165a4c798025..7fd8089946fb 100644
--- a/drivers/net/can/flexcan.c
+++ b/drivers/net/can/flexcan.c
@@ -802,7 +802,7 @@ static int flexcan_open(struct net_device *dev)
802 struct flexcan_priv *priv = netdev_priv(dev); 802 struct flexcan_priv *priv = netdev_priv(dev);
803 int err; 803 int err;
804 804
805 clk_enable(priv->clk); 805 clk_prepare_enable(priv->clk);
806 806
807 err = open_candev(dev); 807 err = open_candev(dev);
808 if (err) 808 if (err)
@@ -824,7 +824,7 @@ static int flexcan_open(struct net_device *dev)
824 out_close: 824 out_close:
825 close_candev(dev); 825 close_candev(dev);
826 out: 826 out:
827 clk_disable(priv->clk); 827 clk_disable_unprepare(priv->clk);
828 828
829 return err; 829 return err;
830} 830}
@@ -838,7 +838,7 @@ static int flexcan_close(struct net_device *dev)
838 flexcan_chip_stop(dev); 838 flexcan_chip_stop(dev);
839 839
840 free_irq(dev->irq, dev); 840 free_irq(dev->irq, dev);
841 clk_disable(priv->clk); 841 clk_disable_unprepare(priv->clk);
842 842
843 close_candev(dev); 843 close_candev(dev);
844 844
@@ -877,7 +877,7 @@ static int __devinit register_flexcandev(struct net_device *dev)
877 struct flexcan_regs __iomem *regs = priv->base; 877 struct flexcan_regs __iomem *regs = priv->base;
878 u32 reg, err; 878 u32 reg, err;
879 879
880 clk_enable(priv->clk); 880 clk_prepare_enable(priv->clk);
881 881
882 /* select "bus clock", chip must be disabled */ 882 /* select "bus clock", chip must be disabled */
883 flexcan_chip_disable(priv); 883 flexcan_chip_disable(priv);
@@ -911,7 +911,7 @@ static int __devinit register_flexcandev(struct net_device *dev)
911 out: 911 out:
912 /* disable core and turn off clocks */ 912 /* disable core and turn off clocks */
913 flexcan_chip_disable(priv); 913 flexcan_chip_disable(priv);
914 clk_disable(priv->clk); 914 clk_disable_unprepare(priv->clk);
915 915
916 return err; 916 return err;
917} 917}
diff --git a/drivers/net/ethernet/freescale/fec.c b/drivers/net/ethernet/freescale/fec.c
index 20c2e3f3e18a..ddcbbb34d1b9 100644
--- a/drivers/net/ethernet/freescale/fec.c
+++ b/drivers/net/ethernet/freescale/fec.c
@@ -1610,7 +1610,7 @@ fec_probe(struct platform_device *pdev)
1610 ret = PTR_ERR(fep->clk); 1610 ret = PTR_ERR(fep->clk);
1611 goto failed_clk; 1611 goto failed_clk;
1612 } 1612 }
1613 clk_enable(fep->clk); 1613 clk_prepare_enable(fep->clk);
1614 1614
1615 ret = fec_enet_init(ndev); 1615 ret = fec_enet_init(ndev);
1616 if (ret) 1616 if (ret)
@@ -1633,7 +1633,7 @@ failed_register:
1633 fec_enet_mii_remove(fep); 1633 fec_enet_mii_remove(fep);
1634failed_mii_init: 1634failed_mii_init:
1635failed_init: 1635failed_init:
1636 clk_disable(fep->clk); 1636 clk_disable_unprepare(fep->clk);
1637 clk_put(fep->clk); 1637 clk_put(fep->clk);
1638failed_clk: 1638failed_clk:
1639 for (i = 0; i < FEC_IRQ_NUM; i++) { 1639 for (i = 0; i < FEC_IRQ_NUM; i++) {
@@ -1666,7 +1666,7 @@ fec_drv_remove(struct platform_device *pdev)
1666 if (irq > 0) 1666 if (irq > 0)
1667 free_irq(irq, ndev); 1667 free_irq(irq, ndev);
1668 } 1668 }
1669 clk_disable(fep->clk); 1669 clk_disable_unprepare(fep->clk);
1670 clk_put(fep->clk); 1670 clk_put(fep->clk);
1671 iounmap(fep->hwp); 1671 iounmap(fep->hwp);
1672 free_netdev(ndev); 1672 free_netdev(ndev);
@@ -1691,7 +1691,7 @@ fec_suspend(struct device *dev)
1691 fec_stop(ndev); 1691 fec_stop(ndev);
1692 netif_device_detach(ndev); 1692 netif_device_detach(ndev);
1693 } 1693 }
1694 clk_disable(fep->clk); 1694 clk_disable_unprepare(fep->clk);
1695 1695
1696 return 0; 1696 return 0;
1697} 1697}
@@ -1702,7 +1702,7 @@ fec_resume(struct device *dev)
1702 struct net_device *ndev = dev_get_drvdata(dev); 1702 struct net_device *ndev = dev_get_drvdata(dev);
1703 struct fec_enet_private *fep = netdev_priv(ndev); 1703 struct fec_enet_private *fep = netdev_priv(ndev);
1704 1704
1705 clk_enable(fep->clk); 1705 clk_prepare_enable(fep->clk);
1706 if (netif_running(ndev)) { 1706 if (netif_running(ndev)) {
1707 fec_restart(ndev, fep->full_duplex); 1707 fec_restart(ndev, fep->full_duplex);
1708 netif_device_attach(ndev); 1708 netif_device_attach(ndev);
diff --git a/drivers/tty/serial/mxs-auart.c b/drivers/tty/serial/mxs-auart.c
index 076169f50b01..55fd362b9879 100644
--- a/drivers/tty/serial/mxs-auart.c
+++ b/drivers/tty/serial/mxs-auart.c
@@ -425,7 +425,7 @@ static int mxs_auart_startup(struct uart_port *u)
425{ 425{
426 struct mxs_auart_port *s = to_auart_port(u); 426 struct mxs_auart_port *s = to_auart_port(u);
427 427
428 clk_enable(s->clk); 428 clk_prepare_enable(s->clk);
429 429
430 writel(AUART_CTRL0_CLKGATE, u->membase + AUART_CTRL0_CLR); 430 writel(AUART_CTRL0_CLKGATE, u->membase + AUART_CTRL0_CLR);
431 431
@@ -454,7 +454,7 @@ static void mxs_auart_shutdown(struct uart_port *u)
454 writel(AUART_INTR_RXIEN | AUART_INTR_RTIEN | AUART_INTR_CTSMIEN, 454 writel(AUART_INTR_RXIEN | AUART_INTR_RTIEN | AUART_INTR_CTSMIEN,
455 u->membase + AUART_INTR_CLR); 455 u->membase + AUART_INTR_CLR);
456 456
457 clk_disable(s->clk); 457 clk_disable_unprepare(s->clk);
458} 458}
459 459
460static unsigned int mxs_auart_tx_empty(struct uart_port *u) 460static unsigned int mxs_auart_tx_empty(struct uart_port *u)
@@ -635,7 +635,7 @@ auart_console_setup(struct console *co, char *options)
635 if (!s) 635 if (!s)
636 return -ENODEV; 636 return -ENODEV;
637 637
638 clk_enable(s->clk); 638 clk_prepare_enable(s->clk);
639 639
640 if (options) 640 if (options)
641 uart_parse_options(options, &baud, &parity, &bits, &flow); 641 uart_parse_options(options, &baud, &parity, &bits, &flow);
@@ -644,7 +644,7 @@ auart_console_setup(struct console *co, char *options)
644 644
645 ret = uart_set_options(&s->port, co, baud, parity, bits, flow); 645 ret = uart_set_options(&s->port, co, baud, parity, bits, flow);
646 646
647 clk_disable(s->clk); 647 clk_disable_unprepare(s->clk);
648 648
649 return ret; 649 return ret;
650} 650}
diff --git a/drivers/video/mxsfb.c b/drivers/video/mxsfb.c
index d837d63c456f..eb3c5eea1a0f 100644
--- a/drivers/video/mxsfb.c
+++ b/drivers/video/mxsfb.c
@@ -328,7 +328,7 @@ static void mxsfb_enable_controller(struct fb_info *fb_info)
328 328
329 dev_dbg(&host->pdev->dev, "%s\n", __func__); 329 dev_dbg(&host->pdev->dev, "%s\n", __func__);
330 330
331 clk_enable(host->clk); 331 clk_prepare_enable(host->clk);
332 clk_set_rate(host->clk, PICOS2KHZ(fb_info->var.pixclock) * 1000U); 332 clk_set_rate(host->clk, PICOS2KHZ(fb_info->var.pixclock) * 1000U);
333 333
334 /* if it was disabled, re-enable the mode again */ 334 /* if it was disabled, re-enable the mode again */
@@ -368,7 +368,7 @@ static void mxsfb_disable_controller(struct fb_info *fb_info)
368 368
369 writel(VDCTRL4_SYNC_SIGNALS_ON, host->base + LCDC_VDCTRL4 + REG_CLR); 369 writel(VDCTRL4_SYNC_SIGNALS_ON, host->base + LCDC_VDCTRL4 + REG_CLR);
370 370
371 clk_disable(host->clk); 371 clk_disable_unprepare(host->clk);
372 372
373 host->enabled = 0; 373 host->enabled = 0;
374} 374}
@@ -668,7 +668,7 @@ static int __devinit mxsfb_restore_mode(struct mxsfb_info *host)
668 line_count = fb_info->fix.smem_len / fb_info->fix.line_length; 668 line_count = fb_info->fix.smem_len / fb_info->fix.line_length;
669 fb_info->fix.ypanstep = 1; 669 fb_info->fix.ypanstep = 1;
670 670
671 clk_enable(host->clk); 671 clk_prepare_enable(host->clk);
672 host->enabled = 1; 672 host->enabled = 1;
673 673
674 return 0; 674 return 0;
@@ -841,7 +841,7 @@ static int __devinit mxsfb_probe(struct platform_device *pdev)
841 841
842error_register: 842error_register:
843 if (host->enabled) 843 if (host->enabled)
844 clk_disable(host->clk); 844 clk_disable_unprepare(host->clk);
845 fb_destroy_modelist(&fb_info->modelist); 845 fb_destroy_modelist(&fb_info->modelist);
846error_init_fb: 846error_init_fb:
847 kfree(fb_info->pseudo_palette); 847 kfree(fb_info->pseudo_palette);