1 /* 2 * This file is subject to the terms and conditions of the GNU General Public 3 * License. See the file "COPYING" in the main directory of this archive 4 * for more details. 5 * 6 * Copyright (C) 2008 Maxime Bizon <mbizon@freebox.fr> 7 */ 8 9 #include <linux/init.h> 10 #include <linux/bootmem.h> 11 #include <asm/bootinfo.h> 12 #include <bcm63xx_board.h> 13 #include <bcm63xx_cpu.h> 14 #include <bcm63xx_io.h> 15 #include <bcm63xx_regs.h> 16 #include <bcm63xx_gpio.h> 17 18 void __init prom_init(void) 19 { 20 u32 reg, mask; 21 22 bcm63xx_cpu_init(); 23 24 /* stop any running watchdog */ 25 bcm_wdt_writel(WDT_STOP_1, WDT_CTL_REG); 26 bcm_wdt_writel(WDT_STOP_2, WDT_CTL_REG); 27 28 /* disable all hardware blocks clock for now */ 29 if (BCMCPU_IS_6338()) 30 mask = CKCTL_6338_ALL_SAFE_EN; 31 else if (BCMCPU_IS_6345()) 32 mask = CKCTL_6345_ALL_SAFE_EN; 33 else if (BCMCPU_IS_6348()) 34 mask = CKCTL_6348_ALL_SAFE_EN; 35 else 36 /* BCMCPU_IS_6358() */ 37 mask = CKCTL_6358_ALL_SAFE_EN; 38 39 reg = bcm_perf_readl(PERF_CKCTL_REG); 40 reg &= ~mask; 41 bcm_perf_writel(reg, PERF_CKCTL_REG); 42 43 /* register gpiochip */ 44 bcm63xx_gpio_init(); 45 46 /* do low level board init */ 47 board_prom_init(); 48 } 49 50 void __init prom_free_prom_memory(void) 51 { 52 } 53