X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=drivers%2Fusb%2Fhost%2Fohci-at91.c;h=8ceabaf45c1b98501789b1039d03e8a937072b89;hb=747fed56d3876d7de89959f9a927901e02166151;hp=7c44ad0e95e210bb68b0fb79268233bd50ebee66;hpb=f75a729b5c1434d5a5bbf453b1b699bf1c3ffbce;p=oweals%2Fu-boot.git diff --git a/drivers/usb/host/ohci-at91.c b/drivers/usb/host/ohci-at91.c index 7c44ad0e95..8ceabaf45c 100644 --- a/drivers/usb/host/ohci-at91.c +++ b/drivers/usb/host/ohci-at91.c @@ -1,51 +1,36 @@ +// SPDX-License-Identifier: GPL-2.0+ /* * (C) Copyright 2006 * DENX Software Engineering - * - * See file CREDITS for list of people who contributed to this - * project. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, - * MA 02111-1307 USA */ #include #if defined(CONFIG_USB_OHCI_NEW) && defined(CONFIG_SYS_USB_OHCI_CPU_INIT) -#include -#include -#include +#include int usb_cpu_init(void) { +#ifdef CONFIG_USB_ATMEL_CLK_SEL_PLLB + if (at91_pllb_clk_enable(get_pllb_init())) + return -1; -#if defined(CONFIG_AT91CAP9) || defined(CONFIG_AT91SAM9260) || \ - defined(CONFIG_AT91SAM9263) || defined(CONFIG_AT91SAM9G20) - /* Enable PLLB */ - at91_sys_write(AT91_CKGR_PLLBR, CONFIG_SYS_AT91_PLLB); - while ((at91_sys_read(AT91_PMC_SR) & AT91_PMC_LOCKB) != AT91_PMC_LOCKB) - ; +#ifdef CONFIG_AT91SAM9N12 + at91_usb_clk_init(AT91_PMC_USBS_USB_PLLB | AT91_PMC_USB_DIV_2); #endif +#elif defined(CONFIG_USB_ATMEL_CLK_SEL_UPLL) + if (at91_upll_clk_enable()) + return -1; - /* Enable USB host clock. */ - at91_sys_write(AT91_PMC_PCER, 1 << AT91_ID_UHP); -#ifdef CONFIG_AT91SAM9261 - at91_sys_write(AT91_PMC_SCER, AT91_PMC_UHP | AT91_PMC_HCK0); -#else - at91_sys_write(AT91_PMC_SCER, AT91_PMC_UHP); + at91_usb_clk_init(AT91_PMC_USBS_USB_UPLL | AT91_PMC_USBDIV_10); +#endif + + at91_periph_clk_enable(ATMEL_ID_UHP); + + at91_system_clk_enable(ATMEL_PMC_UHP); +#if defined(CONFIG_AT91SAM9261) || defined(CONFIG_AT91SAM9G10) + at91_system_clk_enable(AT91_PMC_HCK0); #endif return 0; @@ -53,20 +38,24 @@ int usb_cpu_init(void) int usb_cpu_stop(void) { - /* Disable USB host clock. */ - at91_sys_write(AT91_PMC_PCDR, 1 << AT91_ID_UHP); -#ifdef CONFIG_AT91SAM9261 - at91_sys_write(AT91_PMC_SCDR, AT91_PMC_UHP | AT91_PMC_HCK0); -#else - at91_sys_write(AT91_PMC_SCDR, AT91_PMC_UHP); + at91_periph_clk_disable(ATMEL_ID_UHP); + + at91_system_clk_disable(ATMEL_PMC_UHP); +#if defined(CONFIG_AT91SAM9261) || defined(CONFIG_AT91SAM9G10) + at91_system_clk_disable(AT91_PMC_HCK0); #endif -#if defined(CONFIG_AT91CAP9) || defined(CONFIG_AT91SAM9260) || \ - defined(CONFIG_AT91SAM9263) || defined(CONFIG_AT91SAM9G20) - /* Disable PLLB */ - at91_sys_write(AT91_CKGR_PLLBR, 0); - while ((at91_sys_read(AT91_PMC_SR) & AT91_PMC_LOCKB) != 0) - ; +#ifdef CONFIG_USB_ATMEL_CLK_SEL_PLLB +#ifdef CONFIG_AT91SAM9N12 + at91_usb_clk_init(0); +#endif + + if (at91_pllb_clk_disable()) + return -1; + +#elif defined(CONFIG_USB_ATMEL_CLK_SEL_UPLL) + if (at91_upll_clk_disable()) + return -1; #endif return 0;