USB HOST问题解决

来源:互联网 发布:火星直播软件下载 编辑:程序博客网 时间:2024/04/29 09:06

USB HOST问题解决


/*************************************************************************************

* USB HOST
**************************************************************************************/
#ifdef CONFIG_USB_OHCI_HCD
void usb_host_clk_en(int usb_host_clksrc)
{
printk("Usb Host CLK enable! 2009 by Rockie /n");

switch (usb_host_clksrc)
{
case 0: // epll clk
   writel((readl(S3C_CLK_SRC)& ~S3C_CLKSRC_UHOST_MASK) | S3C_CLKSRC_EPLL_CLKSEL | S3C_CLKSRC_UHOST_EPLL,
S3C_CLK_SRC);

   // USB host colock divider ratio is 2 /
   //writel((readl(S3C_CLK_DIV1)& ~S3C_CLKDIVN_UHOST_MASK) | S3C_CLKDIV1_USBDIV2, S3C_CLK_DIV1);
   *(volatile unsigned long*) S3C_CLK_DIV1 |= (0<<20);
   break;
case 1: // oscillator 48M clk /
   writel(readl(S3C_CLK_SRC)& ~S3C_CLKSRC_UHOST_MASK, S3C_CLK_SRC);
   //otg_phy_init(otg_phy_clk);

   // USB host colock divider ratio is 1 /
   //writel(readl(S3C_CLK_DIV1)& ~S3C_CLKDIVN_UHOST_MASK, S3C_CLK_DIV1);
   *(volatile unsigned long*) S3C_CLK_DIV1 |= (0<<20);
   break;
default:
   printk(KERN_INFO "Unknown USB Host Clock Source/n");
   BUG();
   break;

}

writel(readl(S3C_HCLK_GATE)|S3C_CLKCON_HCLK_UHOST|S3C_CLKCON_HCLK_SECUR, S3C_HCLK_GATE);
writel(readl(S3C_SCLK_GATE)|S3C_CLKCON_SCLK_UHOST, S3C_SCLK_GATE);

}
EXPORT_SYMBOL(usb_host_clk_en);
#endif

 

    把case0中:*(volatile unsigned long*) S3C_CLK_DIV1 |= (0<<20);改成*(volatile unsigned long*)
S3C_CLK_DIV1 |= (1<<2);才可将rootfs引导起来。

 

原创粉丝点击