1*4882a593Smuzhiyun /* 2*4882a593Smuzhiyun * (C) Copyright 2013 3*4882a593Smuzhiyun * Sergey Kostanbaev < sergey.kostanbaev <at> fairwaves.ru > 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * SPDX-License-Identifier: GPL-2.0+ 6*4882a593Smuzhiyun */ 7*4882a593Smuzhiyun 8*4882a593Smuzhiyun #include <config.h> 9*4882a593Smuzhiyun #include <common.h> 10*4882a593Smuzhiyun 11*4882a593Smuzhiyun #if defined(CONFIG_USB_OHCI_NEW) && defined(CONFIG_SYS_USB_OHCI_CPU_INIT) 12*4882a593Smuzhiyun #include <asm/io.h> 13*4882a593Smuzhiyun #include <asm/arch/ep93xx.h> 14*4882a593Smuzhiyun usb_cpu_init(void)15*4882a593Smuzhiyunint usb_cpu_init(void) 16*4882a593Smuzhiyun { 17*4882a593Smuzhiyun struct syscon_regs *syscon = (struct syscon_regs *)SYSCON_BASE; 18*4882a593Smuzhiyun unsigned long pwr = readl(&syscon->pwrcnt); 19*4882a593Smuzhiyun writel(pwr | SYSCON_PWRCNT_USH_EN, &syscon->pwrcnt); 20*4882a593Smuzhiyun 21*4882a593Smuzhiyun return 0; 22*4882a593Smuzhiyun } 23*4882a593Smuzhiyun usb_cpu_stop(void)24*4882a593Smuzhiyunint usb_cpu_stop(void) 25*4882a593Smuzhiyun { 26*4882a593Smuzhiyun struct syscon_regs *syscon = (struct syscon_regs *)SYSCON_BASE; 27*4882a593Smuzhiyun unsigned long pwr = readl(&syscon->pwrcnt); 28*4882a593Smuzhiyun writel(pwr & ~SYSCON_PWRCNT_USH_EN, &syscon->pwrcnt); 29*4882a593Smuzhiyun 30*4882a593Smuzhiyun return 0; 31*4882a593Smuzhiyun } 32*4882a593Smuzhiyun usb_cpu_init_fail(void)33*4882a593Smuzhiyunint usb_cpu_init_fail(void) 34*4882a593Smuzhiyun { 35*4882a593Smuzhiyun return usb_cpu_stop(); 36*4882a593Smuzhiyun } 37*4882a593Smuzhiyun 38*4882a593Smuzhiyun #endif /* defined(CONFIG_USB_OHCI) && defined(CONFIG_SYS_USB_OHCI_CPU_INIT) */ 39