1/* 2 * (C) Copyright 2006 3 * DENX Software Engineering <mk@denx.de> 4 * 5 * See file CREDITS for list of people who contributed to this 6 * project. 7 * 8 * This program is free software; you can redistribute it and/or 9 * modify it under the terms of the GNU General Public License as 10 * published by the Free Software Foundation; either version 2 of 11 * the License, or (at your option) any later version. 12 * 13 * This program is distributed in the hope that it will be useful, 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 * GNU General Public License for more details. 17 * 18 * You should have received a copy of the GNU General Public License 19 * along with this program; if not, write to the Free Software 20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, 21 * MA 02111-1307 USA 22 */ 23 24#include <common.h> 25 26#if defined(CONFIG_USB_OHCI_NEW) && \ 27 defined(CONFIG_SYS_USB_OHCI_CPU_INIT) && \ 28 defined(CONFIG_S3C24X0) 29 30#include <asm/arch/s3c24x0_cpu.h> 31#include <asm/io.h> 32 33int usb_cpu_init(void) 34{ 35 struct s3c24x0_clock_power *clk_power = s3c24x0_get_base_clock_power(); 36 struct s3c24x0_gpio *gpio = s3c24x0_get_base_gpio(); 37 38 /* 39 * Set the 48 MHz UPLL clocking. Values are taken from 40 * "PLL value selection guide", 6-23, s3c2400_UM.pdf. 41 */ 42 writel((40 << 12) + (1 << 4) + 2, &clk_power->UPLLCON); 43 /* 1 = use pads related USB for USB host */ 44 writel(readl(&gpio->MISCCR) | 0x8, &gpio->MISCCR); 45 46 /* 47 * Enable USB host clock. 48 */ 49 writel(readl(&clk_power->CLKCON) | (1 << 4), &clk_power->CLKCON); 50 51 return 0; 52} 53 54int usb_cpu_stop(void) 55{ 56 struct s3c24x0_clock_power *clk_power = s3c24x0_get_base_clock_power(); 57 /* may not want to do this */ 58 writel(readl(&clk_power->CLKCON) & ~(1 << 4), &clk_power->CLKCON); 59 return 0; 60} 61 62int usb_cpu_init_fail(void) 63{ 64 struct s3c24x0_clock_power *clk_power = s3c24x0_get_base_clock_power(); 65 writel(readl(&clk_power->CLKCON) & ~(1 << 4), &clk_power->CLKCON); 66 return 0; 67} 68 69#endif /* defined(CONFIG_USB_OHCI_NEW) && \ 70 defined(CONFIG_SYS_USB_OHCI_CPU_INIT) && \ 71 defined(CONFIG_S3C24X0) */ 72