1*83d290c5STom Rini // SPDX-License-Identifier: GPL-2.0+ 27237d22bSSergey Kostanbaev /* 37237d22bSSergey Kostanbaev * (C) Copyright 2013 47237d22bSSergey Kostanbaev * Sergey Kostanbaev < sergey.kostanbaev <at> fairwaves.ru > 57237d22bSSergey Kostanbaev */ 67237d22bSSergey Kostanbaev 77237d22bSSergey Kostanbaev #include <config.h> 87237d22bSSergey Kostanbaev #include <common.h> 97237d22bSSergey Kostanbaev 107237d22bSSergey Kostanbaev #if defined(CONFIG_USB_OHCI_NEW) && defined(CONFIG_SYS_USB_OHCI_CPU_INIT) 117237d22bSSergey Kostanbaev #include <asm/io.h> 127237d22bSSergey Kostanbaev #include <asm/arch/ep93xx.h> 137237d22bSSergey Kostanbaev 147237d22bSSergey Kostanbaev int usb_cpu_init(void) 157237d22bSSergey Kostanbaev { 167237d22bSSergey Kostanbaev struct syscon_regs *syscon = (struct syscon_regs *)SYSCON_BASE; 177237d22bSSergey Kostanbaev unsigned long pwr = readl(&syscon->pwrcnt); 187237d22bSSergey Kostanbaev writel(pwr | SYSCON_PWRCNT_USH_EN, &syscon->pwrcnt); 197237d22bSSergey Kostanbaev 207237d22bSSergey Kostanbaev return 0; 217237d22bSSergey Kostanbaev } 227237d22bSSergey Kostanbaev 237237d22bSSergey Kostanbaev int usb_cpu_stop(void) 247237d22bSSergey Kostanbaev { 257237d22bSSergey Kostanbaev struct syscon_regs *syscon = (struct syscon_regs *)SYSCON_BASE; 267237d22bSSergey Kostanbaev unsigned long pwr = readl(&syscon->pwrcnt); 277237d22bSSergey Kostanbaev writel(pwr & ~SYSCON_PWRCNT_USH_EN, &syscon->pwrcnt); 287237d22bSSergey Kostanbaev 297237d22bSSergey Kostanbaev return 0; 307237d22bSSergey Kostanbaev } 317237d22bSSergey Kostanbaev 327237d22bSSergey Kostanbaev int usb_cpu_init_fail(void) 337237d22bSSergey Kostanbaev { 347237d22bSSergey Kostanbaev return usb_cpu_stop(); 357237d22bSSergey Kostanbaev } 367237d22bSSergey Kostanbaev 377237d22bSSergey Kostanbaev #endif /* defined(CONFIG_USB_OHCI) && defined(CONFIG_SYS_USB_OHCI_CPU_INIT) */ 38