Skip to content

Commit

Permalink
[MIPS] IP28 support
Browse files Browse the repository at this point in the history
Add support for SGI IP28 machines (Indigo 2 with R10k CPUs)
This work is mainly based on Peter Fuersts work.

Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
  • Loading branch information
Thomas Bogendoerfer authored and Ralf Baechle committed Jan 29, 2008
1 parent 81149be commit e2defae
Show file tree
Hide file tree
Showing 10 changed files with 693 additions and 10 deletions.
67 changes: 64 additions & 3 deletions arch/mips/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,7 @@ config MACH_JAZZ
select ARCH_MAY_HAVE_PC_FDC
select CEVT_R4K
select CSRC_R4K
select DEFAULT_SGI_PARTITION if CPU_BIG_ENDIAN
select GENERIC_ISA_DMA
select IRQ_CPU
select I8253
Expand Down Expand Up @@ -401,13 +402,20 @@ config SGI_IP22
select BOOT_ELF32
select CEVT_R4K
select CSRC_R4K
select DEFAULT_SGI_PARTITION
select DMA_NONCOHERENT
select HW_HAS_EISA
select I8253
select I8259
select IP22_CPU_SCACHE
select IRQ_CPU
select GENERIC_ISA_DMA_SUPPORT_BROKEN
select SGI_HAS_DS1286
select SGI_HAS_I8042
select SGI_HAS_INDYDOG
select SGI_HAS_SEEQ
select SGI_HAS_WD93
select SGI_HAS_ZILOG
select SWAP_IO_SPACE
select SYS_HAS_CPU_R4X00
select SYS_HAS_CPU_R5000
Expand All @@ -425,6 +433,7 @@ config SGI_IP27
select ARC
select ARC64
select BOOT_ELF64
select DEFAULT_SGI_PARTITION
select DMA_IP27
select SYS_HAS_EARLY_PRINTK
select HW_HAS_PCI
Expand All @@ -441,6 +450,36 @@ config SGI_IP27
workstations. To compile a Linux kernel that runs on these, say Y
here.

config SGI_IP28
bool "SGI IP28 (Indigo2 R10k) (EXPERIMENTAL)"
depends on EXPERIMENTAL
select ARC
select ARC64
select BOOT_ELF64
select CEVT_R4K
select CSRC_R4K
select DEFAULT_SGI_PARTITION
select DMA_NONCOHERENT
select GENERIC_ISA_DMA_SUPPORT_BROKEN
select IRQ_CPU
select HW_HAS_EISA
select I8253
select I8259
select SGI_HAS_DS1286
select SGI_HAS_I8042
select SGI_HAS_INDYDOG
select SGI_HAS_SEEQ
select SGI_HAS_WD93
select SGI_HAS_ZILOG
select SWAP_IO_SPACE
select SYS_HAS_CPU_R10000
select SYS_HAS_EARLY_PRINTK
select SYS_SUPPORTS_64BIT_KERNEL
select SYS_SUPPORTS_BIG_ENDIAN
help
This is the SGI Indigo2 with R10000 processor. To compile a Linux
kernel that runs on these, say Y here.

config SGI_IP32
bool "SGI IP32 (O2)"
select ARC
Expand Down Expand Up @@ -567,6 +606,7 @@ config SNI_RM
select BOOT_ELF32
select CEVT_R4K
select CSRC_R4K
select DEFAULT_SGI_PARTITION if CPU_BIG_ENDIAN
select DMA_NONCOHERENT
select GENERIC_ISA_DMA
select HW_HAS_EISA
Expand Down Expand Up @@ -939,6 +979,27 @@ config EMMA2RH
config SERIAL_RM9000
bool

config SGI_HAS_DS1286
bool

config SGI_HAS_INDYDOG
bool

config SGI_HAS_SEEQ
bool

config SGI_HAS_WD93
bool

config SGI_HAS_ZILOG
bool

config SGI_HAS_I8042
bool

config DEFAULT_SGI_PARTITION
bool

config ARC32
bool

Expand All @@ -948,7 +1009,7 @@ config BOOT_ELF32
config MIPS_L1_CACHE_SHIFT
int
default "4" if MACH_DECSTATION
default "7" if SGI_IP27 || SNI_RM
default "7" if SGI_IP27 || SGI_IP28 || SNI_RM
default "4" if PMC_MSP4200_EVAL
default "5"

Expand All @@ -957,7 +1018,7 @@ config HAVE_STD_PC_SERIAL_PORT

config ARC_CONSOLE
bool "ARC console support"
depends on SGI_IP22 || (SNI_RM && CPU_LITTLE_ENDIAN)
depends on SGI_IP22 || SGI_IP28 || (SNI_RM && CPU_LITTLE_ENDIAN)

config ARC_MEMORY
bool
Expand All @@ -966,7 +1027,7 @@ config ARC_MEMORY

config ARC_PROMLIB
bool
depends on MACH_JAZZ || SNI_RM || SGI_IP22 || SGI_IP32
depends on MACH_JAZZ || SNI_RM || SGI_IP22 || SGI_IP28 || SGI_IP32
default y

config ARC64
Expand Down
14 changes: 14 additions & 0 deletions arch/mips/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -478,6 +478,20 @@ OBJCOPYFLAGS := --change-addresses=0x57ffffff80000000
endif
endif

#
# SGI IP28 (Indigo2 R10k)
#
# Set the load address to >= 0xa800000020080000 if you want to leave space for
# symmon, 0xa800000020004000 for production kernels ? Note that the value must
# be 16kb aligned or the handling of the current variable will break.
# Simplified: what IP22 does at 128MB+ in ksegN, IP28 does at 512MB+ in xkphys
#
#core-$(CONFIG_SGI_IP28) += arch/mips/sgi-ip22/ arch/mips/arc/arc_con.o
core-$(CONFIG_SGI_IP28) += arch/mips/sgi-ip22/
cflags-$(CONFIG_SGI_IP28) += -mr10k-cache-barrier=1 -Iinclude/asm-mips/mach-ip28
#cflags-$(CONFIG_SGI_IP28) += -Iinclude/asm-mips/mach-ip28
load-$(CONFIG_SGI_IP28) += 0xa800000020004000

#
# SGI-IP32 (O2)
#
Expand Down
8 changes: 5 additions & 3 deletions arch/mips/sgi-ip22/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,11 @@
# under Linux.
#

obj-y += ip22-mc.o ip22-hpc.o ip22-int.o ip22-berr.o \
ip22-time.o ip22-nvram.o ip22-platform.o ip22-reset.o ip22-setup.o
obj-y += ip22-mc.o ip22-hpc.o ip22-int.o ip22-time.o ip22-nvram.o \
ip22-platform.o ip22-reset.o ip22-setup.o

obj-$(CONFIG_SGI_IP22) += ip22-berr.o
obj-$(CONFIG_SGI_IP28) += ip28-berr.o
obj-$(CONFIG_EISA) += ip22-eisa.o

EXTRA_CFLAGS += -Werror
# EXTRA_CFLAGS += -Werror
4 changes: 4 additions & 0 deletions arch/mips/sgi-ip22/ip22-mc.c
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
* Copyright (C) 1996 David S. Miller (dm@engr.sgi.com)
* Copyright (C) 1999 Andrew R. Baker (andrewb@uab.edu) - Indigo2 changes
* Copyright (C) 2003 Ladislav Michl (ladis@linux-mips.org)
* Copyright (C) 2004 Peter Fuerst (pf@net.alphadv.de) - IP28
*/

#include <linux/init.h>
Expand Down Expand Up @@ -137,9 +138,12 @@ void __init sgimc_init(void)
/* Step 2: Enable all parity checking in cpu control register
* zero.
*/
/* don't touch parity settings for IP28 */
#ifndef CONFIG_SGI_IP28
tmp = sgimc->cpuctrl0;
tmp |= (SGIMC_CCTRL0_EPERRGIO | SGIMC_CCTRL0_EPERRMEM |
SGIMC_CCTRL0_R4KNOCHKPARR);
#endif
sgimc->cpuctrl0 = tmp;

/* Step 3: Setup the MC write buffer depth, this is controlled
Expand Down
Loading

0 comments on commit e2defae

Please sign in to comment.