summaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-omap2
diff options
context:
space:
mode:
authorAnand Gadiyar <gadiyar@ti.com>2011-01-10 14:42:15 +0000
committerTony Lindgren <tony@atomide.com>2011-01-10 11:13:46 -0800
commit1740d483ba4d79f9fa6984dccd7152b6b208f1bf (patch)
tree83fe9290a4f231971da768351cced67e34e3e93b /arch/arm/mach-omap2
parent56a6a19dffda6b75cef8d4183c7c6ff650025cbd (diff)
arm: omap4: pandaboard: turn on PHY reference clock at init
The SMSC 3320 USB PHY on the OMAP4 Pandaboard needs a 19.2 MHz reference clock. This clock is provided from the OMAP4's fref_clk3 pad. Recent changes to clock44xx_data.c made the clock framework aware of the existence of these fref_clk[i] lines. If the option CONFIG_OMAP_RESET_CLOCKS is enabled in the kernel, then the clock framework will turn these clocks off during bootup. Explicitly request and keep this clock enabled at init for the Pandaboard, so that the PHY receives this clock at all times. Reported-by: Ming Lei <tom.leiming@gmail.com> Signed-off-by: Anand Gadiyar <gadiyar@ti.com> Cc: Benoit Cousson <b-cousson@ti.com> Reviewed-by: Paul Walmsley <paul@pwsan.com> Signed-off-by: Tony Lindgren <tony@atomide.com>
Diffstat (limited to 'arch/arm/mach-omap2')
-rw-r--r--arch/arm/mach-omap2/board-omap4panda.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/arch/arm/mach-omap2/board-omap4panda.c b/arch/arm/mach-omap2/board-omap4panda.c
index b43e3ff9ade..613bdd89bcf 100644
--- a/arch/arm/mach-omap2/board-omap4panda.c
+++ b/arch/arm/mach-omap2/board-omap4panda.c
@@ -19,6 +19,7 @@
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/platform_device.h>
+#include <linux/clk.h>
#include <linux/io.h>
#include <linux/leds.h>
#include <linux/gpio.h>
@@ -95,7 +96,16 @@ static const struct ehci_hcd_omap_platform_data ehci_pdata __initconst = {
static void __init omap4_ehci_init(void)
{
int ret;
+ struct clk *phy_ref_clk;
+ /* FREF_CLK3 provides the 19.2 MHz reference clock to the PHY */
+ phy_ref_clk = clk_get(NULL, "auxclk3_ck");
+ if (IS_ERR(phy_ref_clk)) {
+ pr_err("Cannot request auxclk3\n");
+ goto error1;
+ }
+ clk_set_rate(phy_ref_clk, 19200000);
+ clk_enable(phy_ref_clk);
/* disable the power to the usb hub prior to init */
ret = gpio_request(GPIO_HUB_POWER, "hub_power");