diff options
author | Quinn Jensen <quinn.jensen@freescale.com> | 2007-05-24 18:14:54 -0600 |
---|---|---|
committer | Quinn Jensen <quinn.jensen@freescale.com> | 2007-05-24 18:14:54 -0600 |
commit | b2a9622b7b804bbe7148975f496874ffc4c034cf (patch) | |
tree | 54879a32bc1e7c65b8251b7bd219750f3e45dd9c /drivers | |
parent | 04627c5c44f195a26d99c73502f7e845214f6782 (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.c | 2 | ||||
-rw-r--r-- | drivers/net/irda/mxc_sir.c | 24 |
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; } |