135832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean/* 235832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean * The generic setup file for PMC-Sierra MSP processors 335832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean * 435832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean * Copyright 2005-2007 PMC-Sierra, Inc, 535832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean * Author: Jun Sun, jsun@mvista.com or jsun@junsun.net 635832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean * 735832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean * This program is free software; you can redistribute it and/or modify it 835832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean * under the terms of the GNU General Public License as published by the 935832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean * Free Software Foundation; either version 2 of the License, or (at your 1035832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean * option) any later version. 1135832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean */ 1235832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean 1335832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean#include <asm/bootinfo.h> 1435832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean#include <asm/cacheflush.h> 1535832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean#include <asm/r4kcache.h> 1635832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean#include <asm/reboot.h> 172fd431085cab7a5d0ae4fae91c85c5a05d6afaa0Ralf Baechle#include <asm/smp-ops.h> 1835832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean#include <asm/time.h> 1935832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean 2035832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean#include <msp_prom.h> 2135832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean#include <msp_regs.h> 2235832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean 2335832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean#if defined(CONFIG_PMC_MSP7120_GW) 2435832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean#include <msp_regops.h> 2535832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean#define MSP_BOARD_RESET_GPIO 9 2635832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean#endif 2735832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean 2835832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jeanextern void msp_serial_setup(void); 2935832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jeanextern void pmctwiled_setup(void); 3035832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean 3135832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean#if defined(CONFIG_PMC_MSP7120_EVAL) || \ 3235832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean defined(CONFIG_PMC_MSP7120_GW) || \ 3335832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean defined(CONFIG_PMC_MSP7120_FPGA) 3435832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean/* 3535832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean * Performs the reset for MSP7120-based boards 3635832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean */ 3735832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jeanvoid msp7120_reset(void) 3835832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean{ 3935832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean void *start, *end, *iptr; 4035832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean register int i; 4135832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean 4235832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean /* Diasble all interrupts */ 4335832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean local_irq_disable(); 4435832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean#ifdef CONFIG_SYS_SUPPORTS_MULTITHREADING 4535832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean dvpe(); 4635832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean#endif 4735832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean 4835832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean /* Cache the reset code of this function */ 4935832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean __asm__ __volatile__ ( 5035832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean " .set push \n" 5135832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean " .set mips3 \n" 5235832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean " la %0,startpoint \n" 5335832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean " la %1,endpoint \n" 5435832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean " .set pop \n" 5535832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean : "=r" (start), "=r" (end) 5635832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean : 5735832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean ); 5835832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean 5935832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean for (iptr = (void *)((unsigned int)start & ~(L1_CACHE_BYTES - 1)); 6035832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean iptr < end; iptr += L1_CACHE_BYTES) 6135832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean cache_op(Fill, iptr); 6235832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean 6335832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean __asm__ __volatile__ ( 6435832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean "startpoint: \n" 6535832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean ); 6635832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean 6735832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean /* Put the DDRC into self-refresh mode */ 6835832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean DDRC_INDIRECT_WRITE(DDRC_CTL(10), 0xb, 1 << 16); 6935832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean 7035832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean /* 7135832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean * IMPORTANT! 7235832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean * DO NOT do anything from here on out that might even 7335832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean * think about fetching from RAM - i.e., don't call any 7435832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean * non-inlined functions, and be VERY sure that any inline 7535832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean * functions you do call do NOT access any sort of RAM 7635832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean * anywhere! 7735832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean */ 7835832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean 7935832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean /* Wait a bit for the DDRC to settle */ 8035832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean for (i = 0; i < 100000000; i++); 8135832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean 8235832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean#if defined(CONFIG_PMC_MSP7120_GW) 8335832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean /* 8435832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean * Set GPIO 9 HI, (tied to board reset logic) 8535832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean * GPIO 9 is the 4th GPIO of register 3 8635832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean * 8735832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean * NOTE: We cannot use the higher-level msp_gpio_mode()/out() 8835832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean * as GPIO char driver may not be enabled and it would look up 8935832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean * data inRAM! 9035832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean */ 91005076a16bd4c5ea60905ff475e8af57d60578f1Shane McDonald set_value_reg32(GPIO_CFG3_REG, 0xf000, 0x8000); 92005076a16bd4c5ea60905ff475e8af57d60578f1Shane McDonald set_reg32(GPIO_DATA3_REG, 8); 9335832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean 9435832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean /* 9535832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean * In case GPIO9 doesn't reset the board (jumper configurable!) 9635832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean * fallback to device reset below. 9735832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean */ 9835832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean#endif 9935832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean /* Set bit 1 of the MSP7120 reset register */ 10035832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean *RST_SET_REG = 0x00000001; 10135832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean 10235832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean __asm__ __volatile__ ( 10335832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean "endpoint: \n" 10435832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean ); 10535832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean} 10635832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean#endif 10735832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean 10835832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jeanvoid msp_restart(char *command) 10935832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean{ 11035832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean printk(KERN_WARNING "Now rebooting .......\n"); 11135832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean 11235832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean#if defined(CONFIG_PMC_MSP7120_EVAL) || \ 11335832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean defined(CONFIG_PMC_MSP7120_GW) || \ 11435832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean defined(CONFIG_PMC_MSP7120_FPGA) 11535832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean msp7120_reset(); 11635832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean#else 11735832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean /* No chip-specific reset code, just jump to the ROM reset vector */ 11835832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean set_c0_status(ST0_BEV | ST0_ERL); 11935832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean change_c0_config(CONF_CM_CMASK, CONF_CM_UNCACHED); 12035832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean flush_cache_all(); 12135832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean write_c0_wired(0); 12235832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean 12335832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean __asm__ __volatile__("jr\t%0"::"r"(0xbfc00000)); 12435832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean#endif 12535832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean} 12635832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean 12735832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jeanvoid msp_halt(void) 12835832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean{ 12935832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean printk(KERN_WARNING "\n** You can safely turn off the power\n"); 13035832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean while (1) 13135832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean /* If possible call official function to get CPU WARs */ 13235832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean if (cpu_wait) 13335832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean (*cpu_wait)(); 13435832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean else 13535832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean __asm__(".set\tmips3\n\t" "wait\n\t" ".set\tmips0"); 13635832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean} 13735832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean 13835832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jeanvoid msp_power_off(void) 13935832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean{ 14035832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean msp_halt(); 14135832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean} 14235832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean 14335832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jeanvoid __init plat_mem_setup(void) 14435832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean{ 14535832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean _machine_restart = msp_restart; 14635832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean _machine_halt = msp_halt; 14735832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean pm_power_off = msp_power_off; 14835832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean} 14935832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean 150088f3876fc9234feca0cdfdf710b8fafa87bfce1Anoop P Aextern struct plat_smp_ops msp_smtc_smp_ops; 151088f3876fc9234feca0cdfdf710b8fafa87bfce1Anoop P A 15235832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jeanvoid __init prom_init(void) 15335832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean{ 15435832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean unsigned long family; 15535832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean unsigned long revision; 15635832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean 15735832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean prom_argc = fw_arg0; 15835832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean prom_argv = (char **)fw_arg1; 15935832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean prom_envp = (char **)fw_arg2; 16035832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean 16135832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean /* 16235832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean * Someday we can use this with PMON2000 to get a 16335832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean * platform call prom routines for output etc. without 16435832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean * having to use grody hacks. For now it's unused. 16535832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean * 16635832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean * struct callvectors *cv = (struct callvectors *) fw_arg3; 16735832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean */ 16835832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean family = identify_family(); 16935832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean revision = identify_revision(); 17035832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean 17135832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean switch (family) { 17235832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean case FAMILY_FPGA: 17335832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean if (FPGA_IS_MSP4200(revision)) { 17435832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean /* Old-style revision ID */ 17535832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean mips_machtype = MACH_MSP4200_FPGA; 17635832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean } else { 17735832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean mips_machtype = MACH_MSP_OTHER; 17835832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean } 17935832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean break; 18035832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean 18135832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean case FAMILY_MSP4200: 18235832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean#if defined(CONFIG_PMC_MSP4200_EVAL) 18335832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean mips_machtype = MACH_MSP4200_EVAL; 18435832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean#elif defined(CONFIG_PMC_MSP4200_GW) 18535832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean mips_machtype = MACH_MSP4200_GW; 18635832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean#else 18735832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean mips_machtype = MACH_MSP_OTHER; 18835832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean#endif 18935832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean break; 19035832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean 19135832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean case FAMILY_MSP4200_FPGA: 19235832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean mips_machtype = MACH_MSP4200_FPGA; 19335832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean break; 19435832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean 19535832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean case FAMILY_MSP7100: 19635832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean#if defined(CONFIG_PMC_MSP7120_EVAL) 19735832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean mips_machtype = MACH_MSP7120_EVAL; 19835832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean#elif defined(CONFIG_PMC_MSP7120_GW) 19935832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean mips_machtype = MACH_MSP7120_GW; 20035832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean#else 20135832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean mips_machtype = MACH_MSP_OTHER; 20235832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean#endif 20335832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean break; 20435832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean 20535832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean case FAMILY_MSP7100_FPGA: 20635832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean mips_machtype = MACH_MSP7120_FPGA; 20735832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean break; 20835832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean 20935832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean default: 21035832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean /* we don't recognize the machine */ 21135832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean mips_machtype = MACH_UNKNOWN; 212ab75dc02c151c9d2a2fd446334d740b097a3b9dbRalf Baechle panic("***Bogosity factor five***, exiting"); 21305dc8c02bf40090e9ed23932b1980ead48eb8870Ralf Baechle break; 21435832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean } 21535832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean 21635832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean prom_init_cmdline(); 21735832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean 21835832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean prom_meminit(); 21935832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean 22035832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean /* 22135832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean * Sub-system setup follows. 22235832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean * Setup functions can either be called here or using the 22335832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean * subsys_initcall mechanism (i.e. see msp_pci_setup). The 22435832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean * order in which they are called can be changed by using the 22535832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean * link order in arch/mips/pmc-sierra/msp71xx/Makefile. 22635832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean * 22735832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean * NOTE: Please keep sub-system specific initialization code 22835832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean * in separate specific files. 22935832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean */ 23035832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean msp_serial_setup(); 23135832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean 232852fe3105e94ca26d1b3df7e2cb6878ebdd67608Ralf Baechle if (register_vsmp_smp_ops()) { 233088f3876fc9234feca0cdfdf710b8fafa87bfce1Anoop P A#ifdef CONFIG_MIPS_MT_SMTC 234852fe3105e94ca26d1b3df7e2cb6878ebdd67608Ralf Baechle register_smp_ops(&msp_smtc_smp_ops); 235088f3876fc9234feca0cdfdf710b8fafa87bfce1Anoop P A#endif 236852fe3105e94ca26d1b3df7e2cb6878ebdd67608Ralf Baechle } 237088f3876fc9234feca0cdfdf710b8fafa87bfce1Anoop P A 23835832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean#ifdef CONFIG_PMCTWILED 23935832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean /* 24035832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean * Setup LED states before the subsys_initcall loads other 24125985edcedea6396277003854657b5f3cb31a628Lucas De Marchi * dependent drivers/modules. 24235832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean */ 24335832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean pmctwiled_setup(); 24435832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean#endif 24535832e26f95ba14a6b6f0519441c5cb64cca6bf9Marc St-Jean} 246