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 18void __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 /* assign command line from kernel config */ 44 strcpy(arcs_cmdline, CONFIG_CMDLINE); 45 46 /* register gpiochip */ 47 bcm63xx_gpio_init(); 48 49 /* do low level board init */ 50 board_prom_init(); 51} 52 53void __init prom_free_prom_memory(void) 54{ 55} 56