예제 #1
0
void usb20host_soft_reset(void)
    {
    printk("~~~~~~~~~~usb20otg_soft_reset\n");
    //phy reset
    *(unsigned int*)(RK319X_GRF_BASE + GRF_UOC1_CON1) = 0x00030001;

    cru_set_soft_reset(SOFT_RST_USBPHY1_UTMI, true);

    udelay(15);

    *(unsigned int*)(RK319X_GRF_BASE + GRF_UOC1_CON1) = 0x00030002;

    udelay(1500);
    cru_set_soft_reset(SOFT_RST_USBPHY1_UTMI, false);

    cru_set_soft_reset(SOFT_RST_USBOTG1, true);
    cru_set_soft_reset(SOFT_RST_USBPHY1, true);
    cru_set_soft_reset(SOFT_RST_OTGC1, true);
    udelay(5);

    cru_set_soft_reset(SOFT_RST_USBOTG1, false);
    cru_set_soft_reset(SOFT_RST_USBPHY1, false);
    cru_set_soft_reset(SOFT_RST_OTGC1, false);
    mdelay(2);

}
예제 #2
0
void usb20host_soft_reset(void)
{
#if 0
    cru_set_soft_reset(SOFT_RST_USBOTG1, true);
    //cru_set_soft_reset(SOFT_RST_USBPHY1, true);
    cru_set_soft_reset(SOFT_RST_OTGC1, true);
    
    udelay(1);

    cru_set_soft_reset(SOFT_RST_USBOTG1, false);
    //cru_set_soft_reset(SOFT_RST_USBPHY1, false);
    cru_set_soft_reset(SOFT_RST_OTGC1, false);
    mdelay(1);
#endif
}
예제 #3
0
void rkehci_soft_reset(void)
{
	unsigned int * phy_con0 = (unsigned int*)(USBGRF_UOC2_CON0);

	cru_set_soft_reset(SOFT_RST_HSICPHY, true);
	udelay(12);
	cru_set_soft_reset(SOFT_RST_HSICPHY, false);
	mdelay(2);

	*phy_con0 = ((1<<10)<<16)|(1<<10);
	udelay(2);
	*phy_con0 = ((1<<10)<<16)|(0<<10);
	udelay(2);

	cru_set_soft_reset(SOFT_RST_HSIC_AHB, true);
	udelay(2);
	cru_set_soft_reset(SOFT_RST_HSIC_AHB, false);
	udelay(2);
}
예제 #4
0
void usb20otg_soft_reset(void)
{
    cru_set_soft_reset(SOFT_RST_USBOTG0, true);
    cru_set_soft_reset(SOFT_RST_USBPHY0, true);
    cru_set_soft_reset(SOFT_RST_OTGC0, true);
    udelay(1);
    cru_set_soft_reset(SOFT_RST_USBOTG0, false);
    cru_set_soft_reset(SOFT_RST_USBPHY0, false);
    cru_set_soft_reset(SOFT_RST_OTGC0, false);
    mdelay(1);
}
예제 #5
0
void usb20host_soft_reset(void)
{
    cru_set_soft_reset(SOFT_RST_USBOTG1, true);
    cru_set_soft_reset(SOFT_RST_USBPHY1, true);
    cru_set_soft_reset(SOFT_RST_OTGC1, true);
    udelay(5);

    cru_set_soft_reset(SOFT_RST_USBOTG1, false);
    cru_set_soft_reset(SOFT_RST_USBPHY1, false);
    cru_set_soft_reset(SOFT_RST_OTGC1, false);
    mdelay(2);
}
예제 #6
0
void usb20otg_soft_reset(void)
{
#if 1 //@lyz todo for 3028 phy
    printk("~~~~~~~~~~usb20otg_soft_reset\n");
    //phy reset
    *(unsigned int*)(USBGRF_UOC0_CON0) = 0x00030001;
    *(unsigned int*)(USBGRF_UOC1_CON1) = 0x00030001;


    cru_set_soft_reset(SOFT_RST_USBPOR, true);

    cru_set_soft_reset(SOFT_RST_UTMI0, true);
    cru_set_soft_reset(SOFT_RST_UTMI1, true);

    udelay(15);
    
    *(unsigned int*)(USBGRF_UOC0_CON0) = 0x00030002; 
    *(unsigned int*)(USBGRF_UOC1_CON1) = 0x00030002;

    udelay(1500);
    cru_set_soft_reset(SOFT_RST_USBPOR, false);
    udelay(2);
    cru_set_soft_reset(SOFT_RST_UTMI0, false);
    cru_set_soft_reset(SOFT_RST_UTMI1, false);

    //ctrler reset
    cru_set_soft_reset(SOFT_RST_OTGC0, true);
    cru_set_soft_reset(SOFT_RST_OTGC1, true);
    udelay(2);

    cru_set_soft_reset(SOFT_RST_USBOTG0, true);
    cru_set_soft_reset(SOFT_RST_USBOTG1, true);
    udelay(2);
    
    cru_set_soft_reset(SOFT_RST_OTGC0,false);
    cru_set_soft_reset(SOFT_RST_OTGC1,false);
    cru_set_soft_reset(SOFT_RST_USBOTG0,false);
    cru_set_soft_reset(SOFT_RST_USBOTG1,false);
#endif
}