diff options
| -rw-r--r-- | arch/arm/mach-omap2/omap_hwmod_44xx_data.c | 18 | 
1 files changed, 11 insertions, 7 deletions
diff --git a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c index 9e0576569e0..eaba9dc91a0 100644 --- a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c +++ b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c @@ -2714,16 +2714,22 @@ static struct omap_ocp2scp_dev ocp2scp_dev_attr[] = {  	{ }  }; -static struct omap_hwmod_opt_clk ocp2scp_usb_phy_opt_clks[] = { -	{ .role = "48mhz", .clk = "ocp2scp_usb_phy_phy_48m" }, -}; -  /* ocp2scp_usb_phy */  static struct omap_hwmod omap44xx_ocp2scp_usb_phy_hwmod = {  	.name		= "ocp2scp_usb_phy",  	.class		= &omap44xx_ocp2scp_hwmod_class,  	.clkdm_name	= "l3_init_clkdm", -	.main_clk	= "func_48m_fclk", +	/* +	 * ocp2scp_usb_phy_phy_48m is provided by the OMAP4 PRCM IP +	 * block as an "optional clock," and normally should never be +	 * specified as the main_clk for an OMAP IP block.  However it +	 * turns out that this clock is actually the main clock for +	 * the ocp2scp_usb_phy IP block: +	 * http://lists.infradead.org/pipermail/linux-arm-kernel/2012-September/119943.html +	 * So listing ocp2scp_usb_phy_phy_48m as a main_clk here seems +	 * to be the best workaround. +	 */ +	.main_clk	= "ocp2scp_usb_phy_phy_48m",  	.prcm = {  		.omap4 = {  			.clkctrl_offs = OMAP4_CM_L3INIT_USBPHYOCP2SCP_CLKCTRL_OFFSET, @@ -2732,8 +2738,6 @@ static struct omap_hwmod omap44xx_ocp2scp_usb_phy_hwmod = {  		},  	},  	.dev_attr	= ocp2scp_dev_attr, -	.opt_clks	= ocp2scp_usb_phy_opt_clks, -	.opt_clks_cnt	= ARRAY_SIZE(ocp2scp_usb_phy_opt_clks),  };  /*  |