summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorQuinn Jensen <quinn.jensen@freescale.com>2007-05-24 18:14:54 -0600
committerQuinn Jensen <quinn.jensen@freescale.com>2007-05-24 18:14:54 -0600
commitb2a9622b7b804bbe7148975f496874ffc4c034cf (patch)
tree54879a32bc1e7c65b8251b7bd219750f3e45dd9c /drivers
parent04627c5c44f195a26d99c73502f7e845214f6782 (diff)
Update drivers, such as dpm, dvfs, ide, and sir to use the new,
generic clock API's. Remove clock-gating calls from the gpio active and inactive functions. http://www.bitshrine.org/gpp/linux-2.6.19.2-mx-generic_clk_porting.patch
Diffstat (limited to 'drivers')
-rw-r--r--drivers/ide/arm/mxc_ide.c2
-rw-r--r--drivers/net/irda/mxc_sir.c24
2 files changed, 17 insertions, 9 deletions
diff --git a/drivers/ide/arm/mxc_ide.c b/drivers/ide/arm/mxc_ide.c
index 79c47675e7d5..23016e1d84a4 100644
--- a/drivers/ide/arm/mxc_ide.c
+++ b/drivers/ide/arm/mxc_ide.c
@@ -1018,7 +1018,7 @@ static int __init mxc_ide_init(void)
gpio_ata_active();
/* Enable the ata clock */
- ata_clk = clk_get(NULL, "ata_clk");
+ ata_clk = clk_get(NULL, "ata_clk.0");
clk_enable(ata_clk);
/* Deassert the reset bit to enable the interface */
diff --git a/drivers/net/irda/mxc_sir.c b/drivers/net/irda/mxc_sir.c
index cead50d0a333..59d75b5bee2d 100644
--- a/drivers/net/irda/mxc_sir.c
+++ b/drivers/net/irda/mxc_sir.c
@@ -24,6 +24,7 @@
#include <linux/init.h>
#include <linux/netdevice.h>
#include <linux/interrupt.h>
+#include <linux/clk.h>
#include <linux/delay.h>
#include <linux/platform_device.h>
#include <linux/dma-mapping.h>
@@ -163,10 +164,12 @@ struct mxc_irda {
static int max_rate = 115200;
static int uart_ir_mux = 1;
+static struct clk *irda_clk;
+static struct clk *per_clk;
+
extern void gpio_irda_active(void);
extern void gpio_irda_inactive(void);
-extern unsigned int irda_get_clocks(void);
/*
* This function is called to set the IrDA communications speed.
@@ -521,7 +524,7 @@ static struct net_device_stats *mxc_irda_stats(struct net_device *dev)
static int mxc_irda_startup(struct mxc_irda *si)
{
unsigned int num, denom, baud, ufcr = 0;
- unsigned int per_clk;
+ unsigned int per_clk_val;
unsigned int cr;
int d = 1;
int ret;
@@ -532,18 +535,20 @@ static int mxc_irda_startup(struct mxc_irda *si)
/* Configure the IOMUX for the UART */
gpio_irda_active();
-
- per_clk = irda_get_clocks();
- mxcirda_debug("per_clk = %d", per_clk);
- baud = per_clk / 16;
+ irda_clk = clk_get(NULL, "uart_baud.1");
+ clk_enable(irda_clk);
+ per_clk = clk_get(NULL, "per_clk.0");
+ per_clk_val = clk_get_rate(per_clk);
+ mxcirda_debug("per_clk_val = %d", per_clk_val);
+ baud = per_clk_val / 16;
if (baud > MAX_UART_BAUDRATE) {
baud = MAX_UART_BAUDRATE;
- d = per_clk / ((baud * 16) + 1000);
+ d = per_clk_val / ((baud * 16) + 1000);
if (d > 6) {
d = 6;
}
}
- si->uartclk = per_clk / d;
+ si->uartclk = per_clk_val / d;
writel(si->uartclk / 1000, si->uart_base + MXC_UARTONEMS);
cr = readl(si->uart_base + MXC_UARTUCR4);
@@ -613,6 +618,9 @@ static void mxc_irda_shutdown(struct mxc_irda *si)
cr &= ~MXC_UARTUCR1_UARTEN;
writel(cr, si->uart_base + MXC_UARTUCR1);
+ clk_disable(irda_clk);
+ clk_put(irda_clk);
+ clk_put(per_clk);
gpio_irda_inactive();
return;
}