From 1a3c1d3de1b5d92ed430b01855fe30d01f092e83 Mon Sep 17 00:00:00 2001 From: Sascha Hauer Date: Wed, 7 Jan 2009 17:07:48 +0100 Subject: i.MX: introduce imx_get_uartclk function We need this function for MX35 support since the uart clock is not equal to perclk1 anymore. Uh, it's really time to implement some real clock API instead of this cruft. Signed-off-by: Sascha Hauer --- arch/arm/mach-imx/speed-imx1.c | 5 +++++ arch/arm/mach-imx/speed-imx27.c | 5 +++++ arch/arm/mach-imx/speed-imx31.c | 5 +++++ drivers/serial/serial_imx.c | 2 +- include/asm-arm/arch-imx/clock.h | 1 + 5 files changed, 17 insertions(+), 1 deletion(-) diff --git a/arch/arm/mach-imx/speed-imx1.c b/arch/arm/mach-imx/speed-imx1.c index de593a9e3b..22f953b8a9 100644 --- a/arch/arm/mach-imx/speed-imx1.c +++ b/arch/arm/mach-imx/speed-imx1.c @@ -69,6 +69,11 @@ ulong imx_get_perclk3(void) return imx_get_spllclk() / (((PCDR>>16) & 0x7f)+1); } +ulong imx_get_uartclk(void) +{ + return imx_get_perclk1(void); +} + #if 0 typedef enum imx_cookies { PARAM_CPUCLK, diff --git a/arch/arm/mach-imx/speed-imx27.c b/arch/arm/mach-imx/speed-imx27.c index 06c69b597d..94d00e5ceb 100644 --- a/arch/arm/mach-imx/speed-imx27.c +++ b/arch/arm/mach-imx/speed-imx27.c @@ -134,6 +134,11 @@ ulong imx_get_perclk4(void) return imx_decode_perclk(((PCDR1 >> 24) & 0x3f) + 1); } +ulong imx_get_uartclk(void) +{ + return imx_get_perclk1(); +} + int imx_dump_clocks(void) { uint32_t cid = CID; diff --git a/arch/arm/mach-imx/speed-imx31.c b/arch/arm/mach-imx/speed-imx31.c index ae39392730..a626692d3e 100644 --- a/arch/arm/mach-imx/speed-imx31.c +++ b/arch/arm/mach-imx/speed-imx31.c @@ -60,4 +60,9 @@ int imx_dump_clocks(void) return 0; } +ulong imx_get_uartclk(void) +{ + return imx_get_perclk1(); +} + late_initcall(imx_dump_clocks); diff --git a/drivers/serial/serial_imx.c b/drivers/serial/serial_imx.c index 14f3059bba..edb9fba703 100644 --- a/drivers/serial/serial_imx.c +++ b/drivers/serial/serial_imx.c @@ -176,7 +176,7 @@ static int imx_serial_reffreq(ulong base) rfdiv = (UFCR(base) >> 7) & 7; rfdiv = rfdiv < 6 ? 6 - rfdiv : 7; - return imx_get_perclk1() / rfdiv; + return imx_get_uartclk() / rfdiv; } /* diff --git a/include/asm-arm/arch-imx/clock.h b/include/asm-arm/arch-imx/clock.h index a7bfcaa66d..4a565d7c6f 100644 --- a/include/asm-arm/arch-imx/clock.h +++ b/include/asm-arm/arch-imx/clock.h @@ -24,5 +24,6 @@ ulong imx_get_perclk2(void); ulong imx_get_perclk3(void); ulong imx_get_ahbclk(void); ulong imx_get_ipgclk(void); +ulong imx_get_uartclk(void); #endif /* __ASM_ARCH_CLOCK_H */ -- cgit v1.2.3