AR7: core support
PATCH 1/7 AR7: core support
Support for memory mapping, clock and the vlynq bus
Signed-off-by Matteo Croce <[email protected]>
Signed-off-by Florian Fainelli <[email protected]>
Signed-off-by Felix Fietkau <[email protected]>
Signed-off-by Eugene Konev <[email protected]>
Signed-off-by Nicolas Thill <[email protected]>
arch/mips/Kconfig +14 -0
@@ -15,6 +15,20 @@ choice prompt "System type" default SGI_IP22 +config AR7 + bool "Texas Instruments AR7" + select BOOT_ELF32 + select DMA_NONCOHERENT + select HW_HAS_PCI + select IRQ_CPU + select SWAP_IO_SPACE + select SYS_HAS_CPU_MIPS32_R1 + select SYS_HAS_EARLY_PRINTK + select SYS_SUPPORTS_32BIT_KERNEL + select SYS_SUPPORTS_KGDB + select SYS_SUPPORTS_LITTLE_ENDIAN + select GENERIC_GPIO + config MACH_ALCHEMY bool "Alchemy processor based machines"
arch/mips/Makefile +7 -0
@@ -161,6 +161,13 @@ libs-$(CONFIG_SIBYTE_CFE) += arch/mips/sibyte/cfe/ # # +# Texas Instruments AR7 +# +core-$(CONFIG_AR7) += arch/mips/ar7/ +cflags-$(CONFIG_AR7) += -Iinclude/asm-mips/ar7 +load-$(CONFIG_AR7) += 0xffffffff94100000 + +# # Acer PICA 61, Mips Magnum 4000 and Olivetti M700. # core-$(CONFIG_MACH_JAZZ) += arch/mips/jazz/
arch/mips/ar7/Makefile new file +13 -0
@@ -0,0 +1,13 @@ + +obj-y := \ + prom.o \ + setup.o \ + memory.o \ + irq.o \ + time.o \ + platform.o \ + gpio.o \ + clock.o \ + vlynq.o + +EXTRA_AFLAGS := $(CFLAGS)
arch/mips/ar7/clock.c new file +468 -0
468 lines not on this page · raw message
arch/mips/ar7/gpio.c new file +54 -0
54 lines not on this page · raw message
arch/mips/ar7/irq.c new file +203 -0
203 lines not on this page · raw message
arch/mips/ar7/memory.c new file +72 -0
72 lines not on this page · raw message
arch/mips/ar7/platform.c new file +407 -0
407 lines not on this page · raw message
arch/mips/ar7/prom.c new file +322 -0
322 lines not on this page · raw message
arch/mips/ar7/setup.c new file +120 -0
120 lines not on this page · raw message
arch/mips/ar7/time.c new file +55 -0
55 lines not on this page · raw message
arch/mips/ar7/vlynq.c new file +547 -0
547 lines not on this page · raw message
arch/mips/kernel/traps.c +14 -0
@@ -1075,9 +1075,23 @@ void *set_except_vector(int n, void *addr) exception_handlers[n] = handler;if (n ==0 && cpu_has_divec) { +#ifdef CONFIG_AR7 +/* lui k0, 0x0000 */ + *(volatile u32 *)(CAC_BASE +0x200 ) = +0x3c1a0000 | (handler >>16 ); +/* ori k0, 0x0000 */ + *(volatile u32 *)(CAC_BASE +0x204 ) = +0x375a0000 | (handler &0xffff ); +/* jr k0 */ + *(volatile u32 *)(CAC_BASE +0x208 ) =0x03400008 ; +/* nop */ + *(volatile u32 *)(CAC_BASE +0x20C ) =0x00000000 ; +flush_icache_range (CAC_BASE +0x200 ,CAC_BASE +0x210 ); +#else *(volatile u32 *)(ebase +0x200 ) =0x08000000 | (0x03ffffff & (handler >>2 ));flush_icache_range (ebase +0x200 , ebase +0x204 ); +#endif }return (void *)old_handler; }
include/asm-mips/ar7/ar7.h new file +166 -0
166 lines not on this page · raw message
include/asm-mips/ar7/gpio.h new file +114 -0
114 lines not on this page · raw message
include/asm-mips/ar7/mmzone.h new file +27 -0
@@ -0,0 +1,27 @@ +/* +* Copyright (C) 2007 Felix Fietkau, Eugene Konev +* +* This program is free software; you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation; either version 2 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software +* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef _ASM_MACH_MMZONE_H +#define _ASM_MACH_MMZONE_H + +extern pg_data_t __node_data[]; +#define NODE_DATA (nid) (&__node_data[nid]) +#define NODE_MEM_MAP (nid) (NODE_DATA(nid)->node_mem_map) +#define pa_to_nid (addr) (((addr) >= ARCH_PFN_OFFSET << PAGE_SHIFT) ? 0 : -1) + +#endif /* _ASM_MACH_MMZONE_H */
include/asm-mips/ar7/prom.h new file +25 -0
@@ -0,0 +1,25 @@ +/* +* Copyright (C) 2006, 2007 Florian Fainelli <[email protected]> +* +* This program is free software; you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation; either version 2 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software +* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef __PROM_H__ +#define __PROM_H__ + +extern char *prom_getenv (char *name); +extern void prom_printf (char *fmt, ...); + +#endif /* __PROM_H__ */
include/asm-mips/ar7/spaces.h new file +32 -0
@@ -0,0 +1,32 @@ +/* +* This file is subject to the terms and conditions of the GNU General Public +* License. See the file "COPYING" in the main directory of this archive +* for more details. +* +* Copyright (C) 1994 - 1999, 2000, 03, 04 Ralf Baechle +* Copyright (C) 2000, 2002 Maciej W. Rozycki +* Copyright (C) 1990, 1999, 2000 Silicon Graphics, Inc. +*/ +#ifndef _ASM_AR7_SPACES_H +#define _ASM_AR7_SPACES_H + +#define CAC_BASE 0x80000000 +#define IO_BASE 0xa0000000 +#define UNCAC_BASE 0xa0000000 +#define MAP_BASE 0xc0000000 + +/* +* This handles the memory map. +* We handle pages at KSEG0 for kernels with 32 bit address space. +*/ +#define PAGE_OFFSET 0x94000000UL +#define PHYS_OFFSET 0x14000000UL + +/* +* Memory above this physical address will be considered highmem. +*/ +#ifndef HIGHMEM_START +#define HIGHMEM_START 0x40000000UL +#endif + +#endif /* __ASM_AR7_SPACES_H */
include/asm-mips/ar7/vlynq.h new file +90 -0
90 lines not on this page · raw message