1/* 2 * 3 * BRIEF MODULE DESCRIPTION 4 * IT8172/QED5231 board setup. 5 * 6 * Copyright 2000 MontaVista Software Inc. 7 * Author: MontaVista Software, Inc. 8 * ppopov@mvista.com or source@mvista.com 9 * 10 * This program is free software; you can redistribute it and/or modify it 11 * under the terms of the GNU General Public License as published by the 12 * Free Software Foundation; either version 2 of the License, or (at your 13 * option) any later version. 14 * 15 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED 16 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 17 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN 18 * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 19 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 20 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 21 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 22 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 24 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 * 26 * You should have received a copy of the GNU General Public License along 27 * with this program; if not, write to the Free Software Foundation, Inc., 28 * 675 Mass Ave, Cambridge, MA 02139, USA. 29 */ 30#include <linux/init.h> 31#include <linux/mm.h> 32#include <linux/sched.h> 33#include <linux/bootmem.h> 34#include <asm/addrspace.h> 35#include <asm/bootinfo.h> 36#include <linux/string.h> 37#include <linux/kernel.h> 38#include <linux/sched.h> 39#include <asm/it8172/it8172.h> 40#include <asm/it8172/it8172_dbg.h> 41 42int prom_argc; 43char **prom_argv, **prom_envp; 44 45extern char _end; 46extern void __init prom_init_cmdline(void); 47extern unsigned long __init prom_get_memsize(void); 48extern void __init it8172_init_ram_resource(unsigned long memsize); 49 50#define PFN_UP(x) (((x) + PAGE_SIZE-1) >> PAGE_SHIFT) 51#define PFN_ALIGN(x) (((unsigned long)(x) + (PAGE_SIZE - 1)) & PAGE_MASK) 52 53const char *get_system_type(void) 54{ 55 return "ITE QED-4N-S01B"; 56} 57 58int __init prom_init(int argc, char **argv, char **envp, int *prom_vec) 59{ 60 unsigned long mem_size; 61 unsigned long pcicr; 62 63 prom_argc = argc; 64 prom_argv = argv; 65 prom_envp = envp; 66 67 puts("ITE board running..."); 68 69 mips_machgroup = MACH_GROUP_ITE; 70 mips_machtype = MACH_QED_4N_S01B; /* ITE board name/number */ 71 72 prom_init_cmdline(); 73 mem_size = prom_get_memsize(); 74 75 printk("Memory size: %dMB\n", (unsigned)mem_size); 76 77 mem_size <<= 20; /* MB */ 78 79 /* 80 * make the entire physical memory visible to pci bus masters 81 */ 82 IT_READ(IT_MC_PCICR, pcicr); 83 pcicr &= ~0x1f; 84 pcicr |= (mem_size - 1) >> 22; 85 IT_WRITE(IT_MC_PCICR, pcicr); 86 87 it8172_init_ram_resource(mem_size); 88 add_memory_region(0, mem_size, BOOT_MEM_RAM); 89 90 return 0; 91} 92