mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-25 04:50:57 +07:00
Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus
* 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus: (51 commits) [MIPS] Make timer interrupt frequency configurable from kconfig. [MIPS] Correct HAL2 Kconfig description [MIPS] Fix R4K cache macro names [MIPS] Add Missing R4K Cache Macros to IP27 & IP32 [MIPS] Support for the RM9000-based Basler eXcite smart camera platform. [MIPS] Support for the R5500-based NEC EMMA2RH Mark-eins board [MIPS] Support SNI RM200C SNI in big endian mode and R5000 processors. [MIPS] SN: include asm/sn/types.h for nasid_t. [MIPS] Random fixes for sb1250 [MIPS] Fix bcm1480 compile [MIPS] Remove support for NEC DDB5476. [MIPS] Remove support for NEC DDB5074. [MIPS] Cleanup memory managment initialization. [MIPS] SN: Declare bridge_pci_ops. [MIPS] Remove unused function alloc_pci_controller. [MIPS] IP27: Extract pci_ops into separate file. [MIPS] IP27: Use symbolic constants instead of magic numbers. [MIPS] vr41xx: remove unnecessay items from vr41xx/Kconfig. [MIPS] IP27: Cleanup N/M mode configuration. [MIPS] IP27: Throw away old unused hacks. ...
This commit is contained in:
commit
25f42b6af0
@ -212,15 +212,6 @@ Who: Greg Kroah-Hartman <gregkh@suse.de>
|
||||
|
||||
---------------------------
|
||||
|
||||
What: Support for NEC DDB5074 and DDB5476 evaluation boards.
|
||||
When: June 2006
|
||||
Why: Board specific code doesn't build anymore since ~2.6.0 and no
|
||||
users have complained indicating there is no more need for these
|
||||
boards. This should really be considered a last call.
|
||||
Who: Ralf Baechle <ralf@linux-mips.org>
|
||||
|
||||
---------------------------
|
||||
|
||||
What: USB driver API moves to EXPORT_SYMBOL_GPL
|
||||
When: Febuary 2008
|
||||
Files: include/linux/usb.h, drivers/usb/core/driver.c
|
||||
|
@ -119,6 +119,32 @@ config MIPS_MIRAGE
|
||||
select SYS_HAS_CPU_MIPS32_R1
|
||||
select SYS_SUPPORTS_LITTLE_ENDIAN
|
||||
|
||||
config BASLER_EXCITE
|
||||
bool "Basler eXcite smart camera support"
|
||||
select DMA_COHERENT
|
||||
select HW_HAS_PCI
|
||||
select IRQ_CPU
|
||||
select IRQ_CPU_RM7K
|
||||
select IRQ_CPU_RM9K
|
||||
select SERIAL_RM9000
|
||||
select SYS_HAS_CPU_RM9000
|
||||
select SYS_SUPPORTS_32BIT_KERNEL
|
||||
select SYS_SUPPORTS_64BIT_KERNEL
|
||||
select SYS_SUPPORTS_BIG_ENDIAN
|
||||
help
|
||||
The eXcite is a smart camera platform manufactured by
|
||||
Basler Vision Technologies AG
|
||||
|
||||
config BASLER_EXCITE_PROTOTYPE
|
||||
bool "Support for pre-release units"
|
||||
depends on BASLER_EXCITE
|
||||
default n
|
||||
help
|
||||
Pre-series (prototype) units are different from later ones in
|
||||
some ways. Select this option if you have one of these. Please
|
||||
note that a kernel built with this option selected will not be
|
||||
able to run on normal units.
|
||||
|
||||
config MIPS_COBALT
|
||||
bool "Cobalt Server"
|
||||
select DMA_NONCOHERENT
|
||||
@ -142,6 +168,9 @@ config MACH_DECSTATION
|
||||
select SYS_SUPPORTS_32BIT_KERNEL
|
||||
select SYS_SUPPORTS_64BIT_KERNEL if EXPERIMENTAL
|
||||
select SYS_SUPPORTS_LITTLE_ENDIAN
|
||||
select SYS_SUPPORTS_128HZ
|
||||
select SYS_SUPPORTS_256HZ
|
||||
select SYS_SUPPORTS_1024HZ
|
||||
help
|
||||
This enables support for DEC's MIPS based workstations. For details
|
||||
see the Linux/MIPS FAQ on <http://www.linux-mips.org/> and the
|
||||
@ -239,6 +268,7 @@ config MACH_JAZZ
|
||||
select SYS_HAS_CPU_R4X00
|
||||
select SYS_SUPPORTS_32BIT_KERNEL
|
||||
select SYS_SUPPORTS_64BIT_KERNEL if EXPERIMENTAL
|
||||
select SYS_SUPPORTS_100HZ
|
||||
help
|
||||
This a family of machines based on the MIPS R4030 chipset which was
|
||||
used by several vendors to build RISC/os and Windows NT workstations.
|
||||
@ -327,6 +357,27 @@ config MIPS_SEAD
|
||||
This enables support for the MIPS Technologies SEAD evaluation
|
||||
board.
|
||||
|
||||
config WR_PPMC
|
||||
bool "Support for Wind River PPMC board"
|
||||
select IRQ_CPU
|
||||
select BOOT_ELF32
|
||||
select DMA_NONCOHERENT
|
||||
select HW_HAS_PCI
|
||||
select MIPS_GT64120
|
||||
select SWAP_IO_SPACE
|
||||
select SYS_HAS_CPU_MIPS32_R1
|
||||
select SYS_HAS_CPU_MIPS32_R2
|
||||
select SYS_HAS_CPU_MIPS64_R1
|
||||
select SYS_HAS_CPU_NEVADA
|
||||
select SYS_HAS_CPU_RM7000
|
||||
select SYS_SUPPORTS_32BIT_KERNEL
|
||||
select SYS_SUPPORTS_64BIT_KERNEL
|
||||
select SYS_SUPPORTS_BIG_ENDIAN
|
||||
select SYS_SUPPORTS_LITTLE_ENDIAN
|
||||
help
|
||||
This enables support for the Wind River MIPS32 4KC PPMC evaluation
|
||||
board, which is based on GT64120 bridge chip.
|
||||
|
||||
config MIPS_SIM
|
||||
bool 'MIPS simulator (MIPSsim)'
|
||||
select DMA_NONCOHERENT
|
||||
@ -438,53 +489,16 @@ config MIPS_XXS1500
|
||||
|
||||
config PNX8550_V2PCI
|
||||
bool "Philips PNX8550 based Viper2-PCI board"
|
||||
depends on BROKEN
|
||||
select PNX8550
|
||||
select SYS_SUPPORTS_LITTLE_ENDIAN
|
||||
|
||||
config PNX8550_JBS
|
||||
bool "Philips PNX8550 based JBS board"
|
||||
depends on BROKEN
|
||||
select PNX8550
|
||||
select SYS_SUPPORTS_LITTLE_ENDIAN
|
||||
|
||||
config DDB5074
|
||||
bool "NEC DDB Vrc-5074 (EXPERIMENTAL)"
|
||||
depends on EXPERIMENTAL
|
||||
select DDB5XXX_COMMON
|
||||
select DMA_NONCOHERENT
|
||||
select HAVE_STD_PC_SERIAL_PORT
|
||||
select HW_HAS_PCI
|
||||
select IRQ_CPU
|
||||
select I8259
|
||||
select ISA
|
||||
select SYS_HAS_CPU_R5000
|
||||
select SYS_SUPPORTS_32BIT_KERNEL
|
||||
select SYS_SUPPORTS_64BIT_KERNEL if EXPERIMENTAL
|
||||
select SYS_SUPPORTS_LITTLE_ENDIAN
|
||||
help
|
||||
This enables support for the VR5000-based NEC DDB Vrc-5074
|
||||
evaluation board.
|
||||
|
||||
config DDB5476
|
||||
bool "NEC DDB Vrc-5476"
|
||||
select DDB5XXX_COMMON
|
||||
select DMA_NONCOHERENT
|
||||
select HAVE_STD_PC_SERIAL_PORT
|
||||
select HW_HAS_PCI
|
||||
select IRQ_CPU
|
||||
select I8259
|
||||
select ISA
|
||||
select SYS_HAS_CPU_R5432
|
||||
select SYS_SUPPORTS_32BIT_KERNEL
|
||||
select SYS_SUPPORTS_64BIT_KERNEL if EXPERIMENTAL
|
||||
select SYS_SUPPORTS_LITTLE_ENDIAN
|
||||
help
|
||||
This enables support for the R5432-based NEC DDB Vrc-5476
|
||||
evaluation board.
|
||||
|
||||
Features : kernel debugging, serial terminal, NFS root fs, on-board
|
||||
ether port USB, AC97, PCI, PCI VGA card & framebuffer console,
|
||||
IDE controller, PS2 keyboard, PS2 mouse, etc.
|
||||
|
||||
config DDB5477
|
||||
bool "NEC DDB Vrc-5477"
|
||||
select DDB5XXX_COMMON
|
||||
@ -546,6 +560,20 @@ config QEMU
|
||||
simulate actual MIPS hardware platforms. More information on Qemu
|
||||
can be found at http://www.linux-mips.org/wiki/Qemu.
|
||||
|
||||
config MARKEINS
|
||||
bool "Support for NEC EMMA2RH Mark-eins"
|
||||
select DMA_NONCOHERENT
|
||||
select HW_HAS_PCI
|
||||
select IRQ_CPU
|
||||
select SWAP_IO_SPACE
|
||||
select SYS_SUPPORTS_32BIT_KERNEL
|
||||
select SYS_SUPPORTS_BIG_ENDIAN
|
||||
select SYS_SUPPORTS_LITTLE_ENDIAN
|
||||
select SYS_HAS_CPU_R5000
|
||||
help
|
||||
This enables support for the R5432-based NEC Mark-eins
|
||||
boards with R5500 CPU.
|
||||
|
||||
config SGI_IP22
|
||||
bool "SGI IP22 (Indy/Indigo2)"
|
||||
select ARC
|
||||
@ -555,6 +583,7 @@ config SGI_IP22
|
||||
select HW_HAS_EISA
|
||||
select IP22_CPU_SCACHE
|
||||
select IRQ_CPU
|
||||
select NO_ISA if ISA
|
||||
select SWAP_IO_SPACE
|
||||
select SYS_HAS_CPU_R4X00
|
||||
select SYS_HAS_CPU_R5000
|
||||
@ -577,6 +606,7 @@ config SGI_IP27
|
||||
select SYS_HAS_CPU_R10000
|
||||
select SYS_SUPPORTS_64BIT_KERNEL
|
||||
select SYS_SUPPORTS_BIG_ENDIAN
|
||||
select SYS_SUPPORTS_NUMA
|
||||
help
|
||||
This are the SGI Origin 200, Origin 2000 and Onyx 2 Graphics
|
||||
workstations. To compile a Linux kernel that runs on these, say Y
|
||||
@ -707,8 +737,8 @@ config SIBYTE_CRHONE
|
||||
|
||||
config SNI_RM200_PCI
|
||||
bool "SNI RM200 PCI"
|
||||
select ARC
|
||||
select ARC32
|
||||
select ARC if CPU_LITTLE_ENDIAN
|
||||
select ARC32 if CPU_LITTLE_ENDIAN
|
||||
select ARCH_MAY_HAVE_PC_FDC
|
||||
select BOOT_ELF32
|
||||
select DMA_NONCOHERENT
|
||||
@ -719,10 +749,13 @@ config SNI_RM200_PCI
|
||||
select I8253
|
||||
select I8259
|
||||
select ISA
|
||||
select SWAP_IO_SPACE if CPU_BIG_ENDIAN
|
||||
select SYS_HAS_CPU_R4X00
|
||||
select SYS_HAS_CPU_R5000
|
||||
select R5000_CPU_SCACHE
|
||||
select SYS_SUPPORTS_32BIT_KERNEL
|
||||
select SYS_SUPPORTS_64BIT_KERNEL if EXPERIMENTAL
|
||||
select SYS_SUPPORTS_BIG_ENDIAN if EXPERIMENTAL
|
||||
select SYS_SUPPORTS_BIG_ENDIAN
|
||||
select SYS_SUPPORTS_HIGHMEM
|
||||
select SYS_SUPPORTS_LITTLE_ENDIAN
|
||||
help
|
||||
@ -979,6 +1012,11 @@ config SOC_PNX8550
|
||||
config SWAP_IO_SPACE
|
||||
bool
|
||||
|
||||
config EMMA2RH
|
||||
bool
|
||||
depends on MARKEINS
|
||||
default y
|
||||
|
||||
#
|
||||
# Unfortunately not all GT64120 systems run the chip at the same clock.
|
||||
# As the user for the clock rate and try to minimize the available options.
|
||||
@ -1607,6 +1645,28 @@ config ARCH_FLATMEM_ENABLE
|
||||
def_bool y
|
||||
depends on !NUMA
|
||||
|
||||
config ARCH_DISCONTIGMEM_ENABLE
|
||||
bool
|
||||
default y if SGI_IP27
|
||||
help
|
||||
Say Y to upport efficient handling of discontiguous physical memory,
|
||||
for architectures which are either NUMA (Non-Uniform Memory Access)
|
||||
or have huge holes in the physical address space for other reasons.
|
||||
See <file:Documentation/vm/numa> for more.
|
||||
|
||||
config NUMA
|
||||
bool "NUMA Support"
|
||||
depends on SYS_SUPPORTS_NUMA
|
||||
help
|
||||
Say Y to compile the kernel to support NUMA (Non-Uniform Memory
|
||||
Access). This option improves performance on systems with more
|
||||
than two nodes; on two node systems it is generally better to
|
||||
leave it disabled; on single node systems disable this option
|
||||
disabled.
|
||||
|
||||
config SYS_SUPPORTS_NUMA
|
||||
bool
|
||||
|
||||
config NODES_SHIFT
|
||||
int
|
||||
default "6"
|
||||
@ -1651,6 +1711,77 @@ config NR_CPUS
|
||||
This is purely to save memory - each supported CPU adds
|
||||
approximately eight kilobytes to the kernel image.
|
||||
|
||||
#
|
||||
# Timer Interrupt Frequency Configuration
|
||||
#
|
||||
|
||||
choice
|
||||
prompt "Timer frequency"
|
||||
default HZ_250
|
||||
help
|
||||
Allows the configuration of the timer frequency.
|
||||
|
||||
config HZ_48
|
||||
bool "48 HZ" if SYS_SUPPORTS_48HZ
|
||||
|
||||
config HZ_100
|
||||
bool "100 HZ" if SYS_SUPPORTS_100HZ || SYS_SUPPORTS_ARBIT_HZ
|
||||
|
||||
config HZ_128
|
||||
bool "128 HZ" if SYS_SUPPORTS_128HZ || SYS_SUPPORTS_ARBIT_HZ
|
||||
|
||||
config HZ_250
|
||||
bool "250 HZ" if SYS_SUPPORTS_250HZ || SYS_SUPPORTS_ARBIT_HZ
|
||||
|
||||
config HZ_256
|
||||
bool "256 HZ" if SYS_SUPPORTS_256HZ || SYS_SUPPORTS_ARBIT_HZ
|
||||
|
||||
config HZ_1000
|
||||
bool "1000 HZ" if SYS_SUPPORTS_1000HZ || SYS_SUPPORTS_ARBIT_HZ
|
||||
|
||||
config HZ_1024
|
||||
bool "1024 HZ" if SYS_SUPPORTS_1024HZ || SYS_SUPPORTS_ARBIT_HZ
|
||||
|
||||
endchoice
|
||||
|
||||
config SYS_SUPPORTS_48HZ
|
||||
bool
|
||||
|
||||
config SYS_SUPPORTS_100HZ
|
||||
bool
|
||||
|
||||
config SYS_SUPPORTS_128HZ
|
||||
bool
|
||||
|
||||
config SYS_SUPPORTS_250HZ
|
||||
bool
|
||||
|
||||
config SYS_SUPPORTS_256HZ
|
||||
bool
|
||||
|
||||
config SYS_SUPPORTS_1000HZ
|
||||
bool
|
||||
|
||||
config SYS_SUPPORTS_1024HZ
|
||||
bool
|
||||
|
||||
config SYS_SUPPORTS_ARBIT_HZ
|
||||
bool
|
||||
default y if !SYS_SUPPORTS_48HZ && !SYS_SUPPORTS_100HZ && \
|
||||
!SYS_SUPPORTS_128HZ && !SYS_SUPPORTS_250HZ && \
|
||||
!SYS_SUPPORTS_256HZ && !SYS_SUPPORTS_1000HZ && \
|
||||
!SYS_SUPPORTS_1024HZ
|
||||
|
||||
config HZ
|
||||
int
|
||||
default 48 if HZ_48
|
||||
default 100 if HZ_100
|
||||
default 128 if HZ_128
|
||||
default 250 if HZ_250
|
||||
default 256 if HZ_256
|
||||
default 1000 if HZ_1000
|
||||
default 1024 if HZ_1024
|
||||
|
||||
source "kernel/Kconfig.preempt"
|
||||
|
||||
config RTC_DS1742
|
||||
@ -1710,6 +1841,9 @@ source "drivers/pci/Kconfig"
|
||||
config ISA
|
||||
bool
|
||||
|
||||
config NO_ISA
|
||||
bool
|
||||
|
||||
config EISA
|
||||
bool "EISA support"
|
||||
depends on HW_HAS_EISA
|
||||
@ -1840,6 +1974,32 @@ config PM
|
||||
bool "Power Management support (EXPERIMENTAL)"
|
||||
depends on EXPERIMENTAL && SOC_AU1X00
|
||||
|
||||
config APM
|
||||
tristate "Advanced Power Management Emulation"
|
||||
depends on PM
|
||||
---help---
|
||||
APM is a BIOS specification for saving power using several different
|
||||
techniques. This is mostly useful for battery powered systems with
|
||||
APM compliant BIOSes. If you say Y here, the system time will be
|
||||
reset after a RESUME operation, the /proc/apm device will provide
|
||||
battery status information, and user-space programs will receive
|
||||
notification of APM "events" (e.g. battery status change).
|
||||
|
||||
In order to use APM, you will need supporting software. For location
|
||||
and more information, read <file:Documentation/pm.txt> and the
|
||||
Battery Powered Linux mini-HOWTO, available from
|
||||
<http://www.tldp.org/docs.html#howto>.
|
||||
|
||||
This driver does not spin down disk drives (see the hdparm(8)
|
||||
manpage ("man 8 hdparm") for that), and it doesn't turn off
|
||||
VESA-compliant "green" monitors.
|
||||
|
||||
Generally, if you don't have a battery in your machine, there isn't
|
||||
much point in using this driver and you should say N. If you get
|
||||
random kernel OOPSes or reboots that don't seem to be related to
|
||||
anything, try disabling/enabling this option (or disabling/enabling
|
||||
APM in your BIOS).
|
||||
|
||||
endmenu
|
||||
|
||||
source "net/Kconfig"
|
||||
|
@ -83,6 +83,8 @@ cflags-y += -msoft-float
|
||||
LDFLAGS_vmlinux += -G 0 -static -n -nostdlib
|
||||
MODFLAGS += -mlong-calls
|
||||
|
||||
cflags-y += -ffreestanding
|
||||
|
||||
#
|
||||
# We explicitly add the endianness specifier if needed, this allows
|
||||
# to compile kernels with a toolchain for the other endianness. We
|
||||
@ -284,6 +286,13 @@ core-$(CONFIG_MIPS_EV96100) += arch/mips/galileo-boards/ev96100/
|
||||
cflags-$(CONFIG_MIPS_EV96100) += -Iinclude/asm-mips/mach-ev96100
|
||||
load-$(CONFIG_MIPS_EV96100) += 0xffffffff80100000
|
||||
|
||||
#
|
||||
# Wind River PPMC Board (4KC + GT64120)
|
||||
#
|
||||
core-$(CONFIG_WR_PPMC) += arch/mips/gt64120/wrppmc/
|
||||
cflags-$(CONFIG_WR_PPMC) += -Iinclude/asm-mips/mach-wrppmc
|
||||
load-$(CONFIG_WR_PPMC) += 0xffffffff80100000
|
||||
|
||||
#
|
||||
# Globespan IVR eval board with QED 5231 CPU
|
||||
#
|
||||
@ -378,6 +387,13 @@ core-$(CONFIG_MOMENCO_OCELOT_3) += arch/mips/momentum/ocelot_3/
|
||||
cflags-$(CONFIG_MOMENCO_OCELOT_3) += -Iinclude/asm-mips/mach-ocelot3
|
||||
load-$(CONFIG_MOMENCO_OCELOT_3) += 0xffffffff80100000
|
||||
|
||||
#
|
||||
# Basler eXcite
|
||||
#
|
||||
core-$(CONFIG_BASLER_EXCITE) += arch/mips/basler/excite/
|
||||
cflags-$(CONFIG_BASLER_EXCITE) += -Iinclude/asm-mips/mach-excite
|
||||
load-$(CONFIG_BASLER_EXCITE) += 0x80100000
|
||||
|
||||
#
|
||||
# Momentum Jaguar ATX
|
||||
#
|
||||
@ -394,18 +410,6 @@ load-$(CONFIG_MOMENCO_JAGUAR_ATX) += 0xffffffff80100000
|
||||
#
|
||||
core-$(CONFIG_DDB5XXX_COMMON) += arch/mips/ddb5xxx/common/
|
||||
|
||||
#
|
||||
# NEC DDB Vrc-5074
|
||||
#
|
||||
core-$(CONFIG_DDB5074) += arch/mips/ddb5xxx/ddb5074/
|
||||
load-$(CONFIG_DDB5074) += 0xffffffff80080000
|
||||
|
||||
#
|
||||
# NEC DDB Vrc-5476
|
||||
#
|
||||
core-$(CONFIG_DDB5476) += arch/mips/ddb5xxx/ddb5476/
|
||||
load-$(CONFIG_DDB5476) += 0xffffffff80080000
|
||||
|
||||
#
|
||||
# NEC DDB Vrc-5477
|
||||
#
|
||||
@ -468,6 +472,15 @@ libs-$(CONFIG_PNX8550_JBS) += arch/mips/philips/pnx8550/jbs/
|
||||
#cflags-$(CONFIG_PNX8550_JBS) += -Iinclude/asm-mips/mach-pnx8550
|
||||
load-$(CONFIG_PNX8550_JBS) += 0xffffffff80060000
|
||||
|
||||
# NEC EMMA2RH boards
|
||||
#
|
||||
core-$(CONFIG_EMMA2RH) += arch/mips/emma2rh/common/
|
||||
cflags-$(CONFIG_EMMA2RH) += -Iinclude/asm-mips/mach-emma2rh
|
||||
|
||||
# NEC EMMA2RH Mark-eins
|
||||
core-$(CONFIG_MARKEINS) += arch/mips/emma2rh/markeins/
|
||||
load-$(CONFIG_MARKEINS) += 0xffffffff88100000
|
||||
|
||||
#
|
||||
# SGI IP22 (Indy/Indigo2)
|
||||
#
|
||||
|
@ -55,7 +55,7 @@
|
||||
* Careful if you change match 2 request!
|
||||
* The interrupt handler is called directly from the low level dispatch code.
|
||||
*/
|
||||
au1xxx_irq_map_t au1xxx_ic0_map[] = {
|
||||
au1xxx_irq_map_t __initdata au1xxx_ic0_map[] = {
|
||||
|
||||
#if defined(CONFIG_SOC_AU1000)
|
||||
{ AU1000_UART0_INT, INTC_INT_HIGH_LEVEL, 0},
|
||||
@ -220,5 +220,5 @@ au1xxx_irq_map_t au1xxx_ic0_map[] = {
|
||||
|
||||
};
|
||||
|
||||
int au1xxx_ic0_nr_irqs = sizeof(au1xxx_ic0_map)/sizeof(au1xxx_irq_map_t);
|
||||
int __initdata au1xxx_ic0_nr_irqs = ARRAY_SIZE(au1xxx_ic0_map);
|
||||
|
||||
|
@ -40,17 +40,17 @@
|
||||
|
||||
/* TBD */
|
||||
static struct resource pci_io_resource = {
|
||||
"pci IO space",
|
||||
(u32)PCI_IO_START,
|
||||
(u32)PCI_IO_END,
|
||||
IORESOURCE_IO
|
||||
.start = PCI_IO_START,
|
||||
.end = PCI_IO_END,
|
||||
.name = "PCI IO space",
|
||||
.flags = IORESOURCE_IO
|
||||
};
|
||||
|
||||
static struct resource pci_mem_resource = {
|
||||
"pci memory space",
|
||||
(u32)PCI_MEM_START,
|
||||
(u32)PCI_MEM_END,
|
||||
IORESOURCE_MEM
|
||||
.start = PCI_MEM_START,
|
||||
.end = PCI_MEM_END,
|
||||
.name = "PCI memory space",
|
||||
.flags = IORESOURCE_MEM
|
||||
};
|
||||
|
||||
extern struct pci_ops au1x_pci_ops;
|
||||
|
@ -49,17 +49,13 @@ extern void __init board_setup(void);
|
||||
extern void au1000_restart(char *);
|
||||
extern void au1000_halt(void);
|
||||
extern void au1000_power_off(void);
|
||||
extern struct resource ioport_resource;
|
||||
extern struct resource iomem_resource;
|
||||
extern void (*board_time_init)(void);
|
||||
extern void au1x_time_init(void);
|
||||
extern void (*board_timer_setup)(struct irqaction *irq);
|
||||
extern void au1x_timer_setup(struct irqaction *irq);
|
||||
extern void au1xxx_time_init(void);
|
||||
extern void au1xxx_timer_setup(struct irqaction *irq);
|
||||
extern void set_cpuspec(void);
|
||||
|
||||
void __init plat_setup(void)
|
||||
void __init plat_mem_setup(void)
|
||||
{
|
||||
struct cpu_spec *sp;
|
||||
char *argptr;
|
||||
|
@ -50,10 +50,6 @@
|
||||
#include <linux/mc146818rtc.h>
|
||||
#include <linux/timex.h>
|
||||
|
||||
extern void do_softirq(void);
|
||||
extern volatile unsigned long wall_jiffies;
|
||||
unsigned long missed_heart_beats = 0;
|
||||
|
||||
static unsigned long r4k_offset; /* Amount to increment compare reg each time */
|
||||
static unsigned long r4k_cur; /* What counter should be at next timer irq */
|
||||
int no_au1xxx_32khz;
|
||||
@ -388,10 +384,9 @@ static unsigned long do_fast_pm_gettimeoffset(void)
|
||||
}
|
||||
#endif
|
||||
|
||||
void au1xxx_timer_setup(struct irqaction *irq)
|
||||
void __init au1xxx_timer_setup(struct irqaction *irq)
|
||||
{
|
||||
unsigned int est_freq;
|
||||
extern unsigned long (*do_gettimeoffset)(void);
|
||||
unsigned int est_freq;
|
||||
|
||||
printk("calculating r4koff... ");
|
||||
r4k_offset = cal_r4koff();
|
||||
|
@ -47,7 +47,7 @@
|
||||
#include <asm/system.h>
|
||||
#include <asm/au1000.h>
|
||||
|
||||
au1xxx_irq_map_t au1xxx_irq_map[] = {
|
||||
au1xxx_irq_map_t __initdata au1xxx_irq_map[] = {
|
||||
|
||||
{ AU1500_GPIO_204, INTC_INT_HIGH_LEVEL, 0},
|
||||
{ AU1500_GPIO_201, INTC_INT_LOW_LEVEL, 0 },
|
||||
@ -57,4 +57,4 @@ au1xxx_irq_map_t au1xxx_irq_map[] = {
|
||||
{ AU1500_GPIO_207, INTC_INT_LOW_LEVEL, 0 },
|
||||
};
|
||||
|
||||
int au1xxx_nr_irqs = sizeof(au1xxx_irq_map)/sizeof(au1xxx_irq_map_t);
|
||||
int __initdata au1xxx_nr_irqs = ARRAY_SIZE(au1xxx_irq_map);
|
||||
|
@ -80,7 +80,7 @@ char irq_tab_alchemy[][5] __initdata = {
|
||||
#endif
|
||||
|
||||
|
||||
au1xxx_irq_map_t au1xxx_irq_map[] = {
|
||||
au1xxx_irq_map_t __initdata au1xxx_irq_map[] = {
|
||||
|
||||
#ifndef CONFIG_MIPS_MIRAGE
|
||||
#ifdef CONFIG_MIPS_DB1550
|
||||
@ -101,4 +101,4 @@ au1xxx_irq_map_t au1xxx_irq_map[] = {
|
||||
|
||||
};
|
||||
|
||||
int au1xxx_nr_irqs = sizeof(au1xxx_irq_map)/sizeof(au1xxx_irq_map_t);
|
||||
int __initdata au1xxx_nr_irqs = ARRAY_SIZE(au1xxx_irq_map);
|
||||
|
@ -47,10 +47,10 @@
|
||||
#include <asm/system.h>
|
||||
#include <asm/au1000.h>
|
||||
|
||||
au1xxx_irq_map_t au1xxx_irq_map[] = {
|
||||
au1xxx_irq_map_t __initdata au1xxx_irq_map[] = {
|
||||
|
||||
/* { AU1500_GPIO_205, INTC_INT_LOW_LEVEL, 0 }, */
|
||||
{ AU1000_GPIO_21, INTC_INT_LOW_LEVEL, 0 },
|
||||
};
|
||||
|
||||
int au1xxx_nr_irqs = sizeof(au1xxx_irq_map)/sizeof(au1xxx_irq_map_t);
|
||||
int __initdata au1xxx_nr_irqs = ARRAY_SIZE(au1xxx_irq_map);
|
||||
|
@ -58,7 +58,7 @@ char irq_tab_alchemy[][5] __initdata = {
|
||||
[7] = { -1, INTD, INTC, INTX, INTX}, /* IDSEL 07 - AdapterD-Slot1 (bottom) */
|
||||
};
|
||||
|
||||
au1xxx_irq_map_t au1xxx_irq_map[] = {
|
||||
au1xxx_irq_map_t __initdata au1xxx_irq_map[] = {
|
||||
{ AU1500_GPIO_204, INTC_INT_HIGH_LEVEL, 0},
|
||||
{ AU1500_GPIO_201, INTC_INT_LOW_LEVEL, 0 },
|
||||
{ AU1500_GPIO_202, INTC_INT_LOW_LEVEL, 0 },
|
||||
@ -66,4 +66,4 @@ au1xxx_irq_map_t au1xxx_irq_map[] = {
|
||||
{ AU1500_GPIO_205, INTC_INT_LOW_LEVEL, 0 },
|
||||
};
|
||||
|
||||
int au1xxx_nr_irqs = sizeof(au1xxx_irq_map)/sizeof(au1xxx_irq_map_t);
|
||||
int __initdata au1xxx_nr_irqs = ARRAY_SIZE(au1xxx_irq_map);
|
||||
|
@ -47,8 +47,8 @@
|
||||
#include <asm/system.h>
|
||||
#include <asm/mach-au1x00/au1000.h>
|
||||
|
||||
au1xxx_irq_map_t au1xxx_irq_map[] = {
|
||||
au1xxx_irq_map_t __initdata au1xxx_irq_map[] = {
|
||||
{ AU1000_GPIO_15, INTC_INT_LOW_LEVEL, 0 },
|
||||
};
|
||||
|
||||
int au1xxx_nr_irqs = sizeof(au1xxx_irq_map)/sizeof(au1xxx_irq_map_t);
|
||||
int __initdata au1xxx_nr_irqs = ARRAY_SIZE(au1xxx_irq_map);
|
||||
|
@ -47,11 +47,11 @@
|
||||
#include <asm/system.h>
|
||||
#include <asm/mach-au1x00/au1000.h>
|
||||
|
||||
au1xxx_irq_map_t au1xxx_irq_map[] = {
|
||||
au1xxx_irq_map_t __initdata au1xxx_irq_map[] = {
|
||||
{ AU1000_GPIO_9, INTC_INT_LOW_LEVEL, 0 }, // PCMCIA Card Fully_Interted#
|
||||
{ AU1000_GPIO_10, INTC_INT_LOW_LEVEL, 0 }, // PCMCIA Card STSCHG#
|
||||
{ AU1000_GPIO_11, INTC_INT_LOW_LEVEL, 0 }, // PCMCIA Card IRQ#
|
||||
{ AU1000_GPIO_13, INTC_INT_LOW_LEVEL, 0 }, // DC_IRQ#
|
||||
};
|
||||
|
||||
int au1xxx_nr_irqs = sizeof(au1xxx_irq_map)/sizeof(au1xxx_irq_map_t);
|
||||
int __initdata au1xxx_nr_irqs = ARRAY_SIZE(au1xxx_irq_map);
|
||||
|
@ -55,11 +55,11 @@
|
||||
#define PB1200_INT_END DB1200_INT_END
|
||||
#endif
|
||||
|
||||
au1xxx_irq_map_t au1xxx_irq_map[] = {
|
||||
au1xxx_irq_map_t __initdata au1xxx_irq_map[] = {
|
||||
{ AU1000_GPIO_7, INTC_INT_LOW_LEVEL, 0 }, // This is exteranl interrupt cascade
|
||||
};
|
||||
|
||||
int au1xxx_nr_irqs = sizeof(au1xxx_irq_map)/sizeof(au1xxx_irq_map_t);
|
||||
int __initdata au1xxx_nr_irqs = ARRAY_SIZE(au1xxx_irq_map);
|
||||
|
||||
/*
|
||||
* Support for External interrupts on the PbAu1200 Development platform.
|
||||
|
@ -52,7 +52,7 @@ char irq_tab_alchemy[][5] __initdata = {
|
||||
[13] = { -1, INTA, INTB, INTC, INTD}, /* IDSEL 13 - PCI slot */
|
||||
};
|
||||
|
||||
au1xxx_irq_map_t au1xxx_irq_map[] = {
|
||||
au1xxx_irq_map_t __initdata au1xxx_irq_map[] = {
|
||||
{ AU1500_GPIO_204, INTC_INT_HIGH_LEVEL, 0},
|
||||
{ AU1500_GPIO_201, INTC_INT_LOW_LEVEL, 0 },
|
||||
{ AU1500_GPIO_202, INTC_INT_LOW_LEVEL, 0 },
|
||||
@ -60,4 +60,4 @@ au1xxx_irq_map_t au1xxx_irq_map[] = {
|
||||
{ AU1500_GPIO_205, INTC_INT_LOW_LEVEL, 0 },
|
||||
};
|
||||
|
||||
int au1xxx_nr_irqs = sizeof(au1xxx_irq_map)/sizeof(au1xxx_irq_map_t);
|
||||
int __initdata au1xxx_nr_irqs = ARRAY_SIZE(au1xxx_irq_map);
|
||||
|
@ -52,9 +52,9 @@ char irq_tab_alchemy[][5] __initdata = {
|
||||
[13] = { -1, INTA, INTB, INTC, INTD}, /* IDSEL 13 - PCI slot 1 (right) */
|
||||
};
|
||||
|
||||
au1xxx_irq_map_t au1xxx_irq_map[] = {
|
||||
au1xxx_irq_map_t __initdata au1xxx_irq_map[] = {
|
||||
{ AU1000_GPIO_0, INTC_INT_LOW_LEVEL, 0 },
|
||||
{ AU1000_GPIO_1, INTC_INT_LOW_LEVEL, 0 },
|
||||
};
|
||||
|
||||
int au1xxx_nr_irqs = sizeof(au1xxx_irq_map)/sizeof(au1xxx_irq_map_t);
|
||||
int __initdata au1xxx_nr_irqs = ARRAY_SIZE(au1xxx_irq_map);
|
||||
|
@ -47,7 +47,7 @@
|
||||
#include <asm/system.h>
|
||||
#include <asm/au1000.h>
|
||||
|
||||
au1xxx_irq_map_t au1xxx_irq_map[] = {
|
||||
au1xxx_irq_map_t __initdata au1xxx_irq_map[] = {
|
||||
{ AU1500_GPIO_204, INTC_INT_HIGH_LEVEL, 0},
|
||||
{ AU1500_GPIO_201, INTC_INT_LOW_LEVEL, 0 },
|
||||
{ AU1500_GPIO_202, INTC_INT_LOW_LEVEL, 0 },
|
||||
@ -63,4 +63,4 @@ au1xxx_irq_map_t au1xxx_irq_map[] = {
|
||||
{ AU1000_GPIO_5, INTC_INT_LOW_LEVEL, 0 },
|
||||
};
|
||||
|
||||
int au1xxx_nr_irqs = sizeof(au1xxx_irq_map)/sizeof(au1xxx_irq_map_t);
|
||||
int __initdata au1xxx_nr_irqs = ARRAY_SIZE(au1xxx_irq_map);
|
||||
|
9
arch/mips/basler/excite/Makefile
Normal file
9
arch/mips/basler/excite/Makefile
Normal file
@ -0,0 +1,9 @@
|
||||
#
|
||||
# Makefile for Basler eXcite
|
||||
#
|
||||
|
||||
obj-$(CONFIG_BASLER_EXCITE) += excite_irq.o excite_prom.o excite_setup.o \
|
||||
excite_device.o excite_procfs.o
|
||||
|
||||
obj-$(CONFIG_KGDB) += excite_dbg_io.o
|
||||
obj-m += excite_iodev.o
|
122
arch/mips/basler/excite/excite_dbg_io.c
Normal file
122
arch/mips/basler/excite/excite_dbg_io.c
Normal file
@ -0,0 +1,122 @@
|
||||
/*
|
||||
* Copyright (C) 2004 by Basler Vision Technologies AG
|
||||
* Author: Thomas Koeller <thomas.koeller@baslerweb.com>
|
||||
*
|
||||
* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#include <linux/config.h>
|
||||
#include <linux/linkage.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <asm/gdb-stub.h>
|
||||
#include <asm/rm9k-ocd.h>
|
||||
#include <excite.h>
|
||||
|
||||
#if defined(CONFIG_SERIAL_8250) && CONFIG_SERIAL_8250_NR_UARTS > 1
|
||||
#error Debug port used by serial driver
|
||||
#endif
|
||||
|
||||
#define UART_CLK 25000000
|
||||
#define BASE_BAUD (UART_CLK / 16)
|
||||
#define REGISTER_BASE_0 0x0208UL
|
||||
#define REGISTER_BASE_1 0x0238UL
|
||||
|
||||
#define REGISTER_BASE_DBG REGISTER_BASE_1
|
||||
|
||||
#define CPRR 0x0004
|
||||
#define UACFG 0x0200
|
||||
#define UAINTS 0x0204
|
||||
#define UARBR (REGISTER_BASE_DBG + 0x0000)
|
||||
#define UATHR (REGISTER_BASE_DBG + 0x0004)
|
||||
#define UADLL (REGISTER_BASE_DBG + 0x0008)
|
||||
#define UAIER (REGISTER_BASE_DBG + 0x000c)
|
||||
#define UADLH (REGISTER_BASE_DBG + 0x0010)
|
||||
#define UAIIR (REGISTER_BASE_DBG + 0x0014)
|
||||
#define UAFCR (REGISTER_BASE_DBG + 0x0018)
|
||||
#define UALCR (REGISTER_BASE_DBG + 0x001c)
|
||||
#define UAMCR (REGISTER_BASE_DBG + 0x0020)
|
||||
#define UALSR (REGISTER_BASE_DBG + 0x0024)
|
||||
#define UAMSR (REGISTER_BASE_DBG + 0x0028)
|
||||
#define UASCR (REGISTER_BASE_DBG + 0x002c)
|
||||
|
||||
#define PARITY_NONE 0
|
||||
#define PARITY_ODD 0x08
|
||||
#define PARITY_EVEN 0x18
|
||||
#define PARITY_MARK 0x28
|
||||
#define PARITY_SPACE 0x38
|
||||
|
||||
#define DATA_5BIT 0x0
|
||||
#define DATA_6BIT 0x1
|
||||
#define DATA_7BIT 0x2
|
||||
#define DATA_8BIT 0x3
|
||||
|
||||
#define STOP_1BIT 0x0
|
||||
#define STOP_2BIT 0x4
|
||||
|
||||
#define BAUD_DBG 57600
|
||||
#define PARITY_DBG PARITY_NONE
|
||||
#define DATA_DBG DATA_8BIT
|
||||
#define STOP_DBG STOP_1BIT
|
||||
|
||||
/* Initialize the serial port for KGDB debugging */
|
||||
void __init excite_kgdb_init(void)
|
||||
{
|
||||
const u32 divisor = BASE_BAUD / BAUD_DBG;
|
||||
|
||||
/* Take the UART out of reset */
|
||||
titan_writel(0x00ff1cff, CPRR);
|
||||
titan_writel(0x00000000, UACFG);
|
||||
titan_writel(0x00000002, UACFG);
|
||||
|
||||
titan_writel(0x0, UALCR);
|
||||
titan_writel(0x0, UAIER);
|
||||
|
||||
/* Disable FIFOs */
|
||||
titan_writel(0x00, UAFCR);
|
||||
|
||||
titan_writel(0x80, UALCR);
|
||||
titan_writel(divisor & 0xff, UADLL);
|
||||
titan_writel((divisor & 0xff00) >> 8, UADLH);
|
||||
titan_writel(0x0, UALCR);
|
||||
|
||||
titan_writel(DATA_DBG | PARITY_DBG | STOP_DBG, UALCR);
|
||||
|
||||
/* Enable receiver interrupt */
|
||||
titan_readl(UARBR);
|
||||
titan_writel(0x1, UAIER);
|
||||
}
|
||||
|
||||
int getDebugChar(void)
|
||||
{
|
||||
while (!(titan_readl(UALSR) & 0x1));
|
||||
return titan_readl(UARBR);
|
||||
}
|
||||
|
||||
int putDebugChar(int data)
|
||||
{
|
||||
while (!(titan_readl(UALSR) & 0x20));
|
||||
titan_writel(data, UATHR);
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* KGDB interrupt handler */
|
||||
asmlinkage void excite_kgdb_inthdl(struct pt_regs *regs)
|
||||
{
|
||||
if (unlikely(
|
||||
((titan_readl(UAIIR) & 0x7) == 4)
|
||||
&& ((titan_readl(UARBR) & 0xff) == 0x3)))
|
||||
set_async_breakpoint(®s->cp0_epc);
|
||||
}
|
404
arch/mips/basler/excite/excite_device.c
Normal file
404
arch/mips/basler/excite/excite_device.c
Normal file
@ -0,0 +1,404 @@
|
||||
/*
|
||||
* Copyright (C) 2004 by Basler Vision Technologies AG
|
||||
* Author: Thomas Koeller <thomas.koeller@baslerweb.com>
|
||||
*
|
||||
* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#include <linux/config.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/ioport.h>
|
||||
#include <linux/err.h>
|
||||
#include <linux/jiffies.h>
|
||||
#include <linux/sched.h>
|
||||
#include <asm/types.h>
|
||||
#include <asm/rm9k-ocd.h>
|
||||
|
||||
#include <excite.h>
|
||||
#include <rm9k_eth.h>
|
||||
#include <rm9k_wdt.h>
|
||||
#include <rm9k_xicap.h>
|
||||
#include <excite_nandflash.h>
|
||||
|
||||
#include "excite_iodev.h"
|
||||
|
||||
#define RM9K_GE_UNIT 0
|
||||
#define XICAP_UNIT 0
|
||||
#define NAND_UNIT 0
|
||||
|
||||
#define DLL_TIMEOUT 3 /* seconds */
|
||||
|
||||
|
||||
#define RINIT(__start__, __end__, __name__, __parent__) { \
|
||||
.name = __name__ "_0", \
|
||||
.start = (__start__), \
|
||||
.end = (__end__), \
|
||||
.flags = 0, \
|
||||
.parent = (__parent__) \
|
||||
}
|
||||
|
||||
#define RINIT_IRQ(__irq__, __name__) { \
|
||||
.name = __name__ "_0", \
|
||||
.start = (__irq__), \
|
||||
.end = (__irq__), \
|
||||
.flags = IORESOURCE_IRQ, \
|
||||
.parent = NULL \
|
||||
}
|
||||
|
||||
|
||||
|
||||
enum {
|
||||
slice_xicap,
|
||||
slice_eth
|
||||
};
|
||||
|
||||
|
||||
|
||||
static struct resource
|
||||
excite_ctr_resource = {
|
||||
.name = "GPI counters",
|
||||
.start = 0,
|
||||
.end = 5,
|
||||
.flags = 0,
|
||||
.parent = NULL,
|
||||
.sibling = NULL,
|
||||
.child = NULL
|
||||
},
|
||||
excite_gpislice_resource = {
|
||||
.name = "GPI slices",
|
||||
.start = 0,
|
||||
.end = 1,
|
||||
.flags = 0,
|
||||
.parent = NULL,
|
||||
.sibling = NULL,
|
||||
.child = NULL
|
||||
},
|
||||
excite_mdio_channel_resource = {
|
||||
.name = "MDIO channels",
|
||||
.start = 0,
|
||||
.end = 1,
|
||||
.flags = 0,
|
||||
.parent = NULL,
|
||||
.sibling = NULL,
|
||||
.child = NULL
|
||||
},
|
||||
excite_fifomem_resource = {
|
||||
.name = "FIFO memory",
|
||||
.start = 0,
|
||||
.end = 767,
|
||||
.flags = 0,
|
||||
.parent = NULL,
|
||||
.sibling = NULL,
|
||||
.child = NULL
|
||||
},
|
||||
excite_scram_resource = {
|
||||
.name = "Scratch RAM",
|
||||
.start = EXCITE_PHYS_SCRAM,
|
||||
.end = EXCITE_PHYS_SCRAM + EXCITE_SIZE_SCRAM - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
.parent = NULL,
|
||||
.sibling = NULL,
|
||||
.child = NULL
|
||||
},
|
||||
excite_fpga_resource = {
|
||||
.name = "System FPGA",
|
||||
.start = EXCITE_PHYS_FPGA,
|
||||
.end = EXCITE_PHYS_FPGA + EXCITE_SIZE_FPGA - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
.parent = NULL,
|
||||
.sibling = NULL,
|
||||
.child = NULL
|
||||
},
|
||||
excite_nand_resource = {
|
||||
.name = "NAND flash control",
|
||||
.start = EXCITE_PHYS_NAND,
|
||||
.end = EXCITE_PHYS_NAND + EXCITE_SIZE_NAND - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
.parent = NULL,
|
||||
.sibling = NULL,
|
||||
.child = NULL
|
||||
},
|
||||
excite_titan_resource = {
|
||||
.name = "TITAN registers",
|
||||
.start = EXCITE_PHYS_TITAN,
|
||||
.end = EXCITE_PHYS_TITAN + EXCITE_SIZE_TITAN - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
.parent = NULL,
|
||||
.sibling = NULL,
|
||||
.child = NULL
|
||||
};
|
||||
|
||||
|
||||
|
||||
static void adjust_resources(struct resource *res, unsigned int n)
|
||||
{
|
||||
struct resource *p;
|
||||
const unsigned long mask = IORESOURCE_IO | IORESOURCE_MEM
|
||||
| IORESOURCE_IRQ | IORESOURCE_DMA;
|
||||
|
||||
for (p = res; p < res + n; p++) {
|
||||
const struct resource * const parent = p->parent;
|
||||
if (parent) {
|
||||
p->start += parent->start;
|
||||
p->end += parent->start;
|
||||
p->flags = parent->flags & mask;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
#if defined(CONFIG_EXCITE_FCAP_GPI) || defined(CONFIG_EXCITE_FCAP_GPI_MODULE)
|
||||
static struct resource xicap_rsrc[] = {
|
||||
RINIT(0x4840, 0x486f, XICAP_RESOURCE_FIFO_RX, &excite_titan_resource),
|
||||
RINIT(0x4940, 0x494b, XICAP_RESOURCE_FIFO_TX, &excite_titan_resource),
|
||||
RINIT(0x5040, 0x5127, XICAP_RESOURCE_XDMA, &excite_titan_resource),
|
||||
RINIT(0x1000, 0x112f, XICAP_RESOURCE_PKTPROC, &excite_titan_resource),
|
||||
RINIT(0x1100, 0x110f, XICAP_RESOURCE_PKT_STREAM, &excite_fpga_resource),
|
||||
RINIT(0x0800, 0x0bff, XICAP_RESOURCE_DMADESC, &excite_scram_resource),
|
||||
RINIT(slice_xicap, slice_xicap, XICAP_RESOURCE_GPI_SLICE, &excite_gpislice_resource),
|
||||
RINIT(0x0100, 0x02ff, XICAP_RESOURCE_FIFO_BLK, &excite_fifomem_resource),
|
||||
RINIT_IRQ(TITAN_IRQ, XICAP_RESOURCE_IRQ)
|
||||
};
|
||||
|
||||
static struct platform_device xicap_pdev = {
|
||||
.name = XICAP_NAME,
|
||||
.id = XICAP_UNIT,
|
||||
.num_resources = ARRAY_SIZE(xicap_rsrc),
|
||||
.resource = xicap_rsrc
|
||||
};
|
||||
|
||||
/*
|
||||
* Create a platform device for the GPI port that receives the
|
||||
* image data from the embedded camera.
|
||||
*/
|
||||
static int __init xicap_devinit(void)
|
||||
{
|
||||
unsigned long tend;
|
||||
u32 reg;
|
||||
int retval;
|
||||
|
||||
adjust_resources(xicap_rsrc, ARRAY_SIZE(xicap_rsrc));
|
||||
|
||||
/* Power up the slice and configure it. */
|
||||
reg = titan_readl(CPTC1R);
|
||||
reg &= ~(0x11100 << slice_xicap);
|
||||
titan_writel(reg, CPTC1R);
|
||||
|
||||
/* Enable slice & DLL. */
|
||||
reg= titan_readl(CPRR);
|
||||
reg &= ~(0x00030003 << (slice_xicap * 2));
|
||||
titan_writel(reg, CPRR);
|
||||
|
||||
/* Wait for DLLs to lock */
|
||||
tend = jiffies + DLL_TIMEOUT * HZ;
|
||||
while (time_before(jiffies, tend)) {
|
||||
if (!(~titan_readl(CPDSR) & (0x1 << (slice_xicap * 4))))
|
||||
break;
|
||||
yield();
|
||||
}
|
||||
|
||||
if (~titan_readl(CPDSR) & (0x1 << (slice_xicap * 4))) {
|
||||
printk(KERN_ERR "%s: DLL not locked after %u seconds\n",
|
||||
xicap_pdev.name, DLL_TIMEOUT);
|
||||
retval = -ETIME;
|
||||
} else {
|
||||
/* Register platform device */
|
||||
retval = platform_device_register(&xicap_pdev);
|
||||
}
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
device_initcall(xicap_devinit);
|
||||
#endif /* defined(CONFIG_EXCITE_FCAP_GPI) || defined(CONFIG_EXCITE_FCAP_GPI_MODULE) */
|
||||
|
||||
|
||||
|
||||
#if defined(CONFIG_WDT_RM9K_GPI) || defined(CONFIG_WDT_RM9K_GPI_MODULE)
|
||||
static struct resource wdt_rsrc[] = {
|
||||
RINIT(0, 0, WDT_RESOURCE_COUNTER, &excite_ctr_resource),
|
||||
RINIT(0x0084, 0x008f, WDT_RESOURCE_REGS, &excite_titan_resource),
|
||||
RINIT_IRQ(TITAN_IRQ, WDT_RESOURCE_IRQ)
|
||||
};
|
||||
|
||||
static struct platform_device wdt_pdev = {
|
||||
.name = WDT_NAME,
|
||||
.id = -1,
|
||||
.num_resources = ARRAY_SIZE(wdt_rsrc),
|
||||
.resource = wdt_rsrc
|
||||
};
|
||||
|
||||
/*
|
||||
* Create a platform device for the GPI port that receives the
|
||||
* image data from the embedded camera.
|
||||
*/
|
||||
static int __init wdt_devinit(void)
|
||||
{
|
||||
adjust_resources(wdt_rsrc, ARRAY_SIZE(wdt_rsrc));
|
||||
return platform_device_register(&wdt_pdev);
|
||||
}
|
||||
|
||||
device_initcall(wdt_devinit);
|
||||
#endif /* defined(CONFIG_WDT_RM9K_GPI) || defined(CONFIG_WDT_RM9K_GPI_MODULE) */
|
||||
|
||||
|
||||
|
||||
static struct resource excite_nandflash_rsrc[] = {
|
||||
RINIT(0x2000, 0x201f, EXCITE_NANDFLASH_RESOURCE_REGS, &excite_nand_resource)
|
||||
};
|
||||
|
||||
static struct platform_device excite_nandflash_pdev = {
|
||||
.name = "excite_nand",
|
||||
.id = NAND_UNIT,
|
||||
.num_resources = ARRAY_SIZE(excite_nandflash_rsrc),
|
||||
.resource = excite_nandflash_rsrc
|
||||
};
|
||||
|
||||
/*
|
||||
* Create a platform device for the access to the nand-flash
|
||||
* port
|
||||
*/
|
||||
static int __init excite_nandflash_devinit(void)
|
||||
{
|
||||
adjust_resources(excite_nandflash_rsrc, ARRAY_SIZE(excite_nandflash_rsrc));
|
||||
|
||||
/* nothing to be done here */
|
||||
|
||||
/* Register platform device */
|
||||
return platform_device_register(&excite_nandflash_pdev);
|
||||
}
|
||||
|
||||
device_initcall(excite_nandflash_devinit);
|
||||
|
||||
|
||||
|
||||
static struct resource iodev_rsrc[] = {
|
||||
RINIT_IRQ(FPGA1_IRQ, IODEV_RESOURCE_IRQ)
|
||||
};
|
||||
|
||||
static struct platform_device io_pdev = {
|
||||
.name = IODEV_NAME,
|
||||
.id = -1,
|
||||
.num_resources = ARRAY_SIZE(iodev_rsrc),
|
||||
.resource = iodev_rsrc
|
||||
};
|
||||
|
||||
/*
|
||||
* Create a platform device for the external I/O ports.
|
||||
*/
|
||||
static int __init io_devinit(void)
|
||||
{
|
||||
adjust_resources(iodev_rsrc, ARRAY_SIZE(iodev_rsrc));
|
||||
return platform_device_register(&io_pdev);
|
||||
}
|
||||
|
||||
device_initcall(io_devinit);
|
||||
|
||||
|
||||
|
||||
|
||||
#if defined(CONFIG_RM9K_GE) || defined(CONFIG_RM9K_GE_MODULE)
|
||||
static struct resource rm9k_ge_rsrc[] = {
|
||||
RINIT(0x2200, 0x27ff, RM9K_GE_RESOURCE_MAC, &excite_titan_resource),
|
||||
RINIT(0x1800, 0x1fff, RM9K_GE_RESOURCE_MSTAT, &excite_titan_resource),
|
||||
RINIT(0x2000, 0x212f, RM9K_GE_RESOURCE_PKTPROC, &excite_titan_resource),
|
||||
RINIT(0x5140, 0x5227, RM9K_GE_RESOURCE_XDMA, &excite_titan_resource),
|
||||
RINIT(0x4870, 0x489f, RM9K_GE_RESOURCE_FIFO_RX, &excite_titan_resource),
|
||||
RINIT(0x494c, 0x4957, RM9K_GE_RESOURCE_FIFO_TX, &excite_titan_resource),
|
||||
RINIT(0x0000, 0x007f, RM9K_GE_RESOURCE_FIFOMEM_RX, &excite_fifomem_resource),
|
||||
RINIT(0x0080, 0x00ff, RM9K_GE_RESOURCE_FIFOMEM_TX, &excite_fifomem_resource),
|
||||
RINIT(0x0180, 0x019f, RM9K_GE_RESOURCE_PHY, &excite_titan_resource),
|
||||
RINIT(0x0000, 0x03ff, RM9K_GE_RESOURCE_DMADESC_RX, &excite_scram_resource),
|
||||
RINIT(0x0400, 0x07ff, RM9K_GE_RESOURCE_DMADESC_TX, &excite_scram_resource),
|
||||
RINIT(slice_eth, slice_eth, RM9K_GE_RESOURCE_GPI_SLICE, &excite_gpislice_resource),
|
||||
RINIT(0, 0, RM9K_GE_RESOURCE_MDIO_CHANNEL, &excite_mdio_channel_resource),
|
||||
RINIT_IRQ(TITAN_IRQ, RM9K_GE_RESOURCE_IRQ_MAIN),
|
||||
RINIT_IRQ(PHY_IRQ, RM9K_GE_RESOURCE_IRQ_PHY)
|
||||
};
|
||||
|
||||
static struct platform_device rm9k_ge_pdev = {
|
||||
.name = RM9K_GE_NAME,
|
||||
.id = RM9K_GE_UNIT,
|
||||
.num_resources = ARRAY_SIZE(rm9k_ge_rsrc),
|
||||
.resource = rm9k_ge_rsrc
|
||||
};
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Create a platform device for the Ethernet port.
|
||||
*/
|
||||
static int __init rm9k_ge_devinit(void)
|
||||
{
|
||||
u32 reg;
|
||||
|
||||
adjust_resources(rm9k_ge_rsrc, ARRAY_SIZE(rm9k_ge_rsrc));
|
||||
|
||||
/* Power up the slice and configure it. */
|
||||
reg = titan_readl(CPTC1R);
|
||||
reg &= ~(0x11000 << slice_eth);
|
||||
reg |= 0x100 << slice_eth;
|
||||
titan_writel(reg, CPTC1R);
|
||||
|
||||
/* Take the MAC out of reset, reset the DLLs. */
|
||||
reg = titan_readl(CPRR);
|
||||
reg &= ~(0x00030000 << (slice_eth * 2));
|
||||
reg |= 0x3 << (slice_eth * 2);
|
||||
titan_writel(reg, CPRR);
|
||||
|
||||
return platform_device_register(&rm9k_ge_pdev);
|
||||
}
|
||||
|
||||
device_initcall(rm9k_ge_devinit);
|
||||
#endif /* defined(CONFIG_RM9K_GE) || defined(CONFIG_RM9K_GE_MODULE) */
|
||||
|
||||
|
||||
|
||||
static int __init excite_setup_devs(void)
|
||||
{
|
||||
int res;
|
||||
u32 reg;
|
||||
|
||||
/* Enable xdma and fifo interrupts */
|
||||
reg = titan_readl(0x0050);
|
||||
titan_writel(reg | 0x18000000, 0x0050);
|
||||
|
||||
res = request_resource(&iomem_resource, &excite_titan_resource);
|
||||
if (res)
|
||||
return res;
|
||||
res = request_resource(&iomem_resource, &excite_scram_resource);
|
||||
if (res)
|
||||
return res;
|
||||
res = request_resource(&iomem_resource, &excite_fpga_resource);
|
||||
if (res)
|
||||
return res;
|
||||
res = request_resource(&iomem_resource, &excite_nand_resource);
|
||||
if (res)
|
||||
return res;
|
||||
excite_fpga_resource.flags = excite_fpga_resource.parent->flags &
|
||||
( IORESOURCE_IO | IORESOURCE_MEM
|
||||
| IORESOURCE_IRQ | IORESOURCE_DMA);
|
||||
excite_nand_resource.flags = excite_nand_resource.parent->flags &
|
||||
( IORESOURCE_IO | IORESOURCE_MEM
|
||||
| IORESOURCE_IRQ | IORESOURCE_DMA);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
arch_initcall(excite_setup_devs);
|
||||
|
294
arch/mips/basler/excite/excite_flashtest.c
Normal file
294
arch/mips/basler/excite/excite_flashtest.c
Normal file
@ -0,0 +1,294 @@
|
||||
/*
|
||||
* Copyright (C) 2005 by Basler Vision Technologies AG
|
||||
* Author: Thies Moeller <thies.moeller@baslerweb.com>
|
||||
*
|
||||
* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#include <linux/module.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/string.h>
|
||||
#include <linux/ioport.h>
|
||||
#include <linux/device.h>
|
||||
#include <linux/delay.h>
|
||||
#include <linux/err.h>
|
||||
#include <linux/kernel.h>
|
||||
|
||||
#include <excite.h>
|
||||
|
||||
#include <asm/io.h>
|
||||
|
||||
#include <linux/mtd/mtd.h>
|
||||
#include <linux/mtd/nand.h>
|
||||
#include <linux/mtd/nand_ecc.h>
|
||||
#include <linux/mtd/partitions.h>
|
||||
#include <asm/rm9k-ocd.h> // for ocd_write
|
||||
#include <linux/workqueue.h> // for queue
|
||||
|
||||
#include "excite_nandflash.h"
|
||||
#include "nandflash.h"
|
||||
|
||||
#define PFX "excite flashtest: "
|
||||
typedef void __iomem *io_reg_t;
|
||||
|
||||
#define io_readb(__a__) __raw_readb((__a__))
|
||||
#define io_writeb(__v__, __a__) __raw_writeb((__v__), (__a__))
|
||||
|
||||
|
||||
|
||||
static inline const struct resource *excite_nandflash_get_resource(
|
||||
struct platform_device *d, unsigned long flags, const char *basename)
|
||||
{
|
||||
const char fmt[] = "%s_%u";
|
||||
char buf[80];
|
||||
|
||||
if (unlikely(snprintf(buf, sizeof buf, fmt, basename, d->id) >= sizeof buf))
|
||||
return NULL;
|
||||
|
||||
return platform_get_resource_byname(d, flags, buf);
|
||||
}
|
||||
|
||||
static inline io_reg_t
|
||||
excite_nandflash_map_regs(struct platform_device *d, const char *basename)
|
||||
{
|
||||
void *result = NULL;
|
||||
const struct resource *const r =
|
||||
excite_nandflash_get_resource(d, IORESOURCE_MEM, basename);
|
||||
if (r)
|
||||
result = ioremap_nocache(r->start, r->end + 1 - r->start);
|
||||
return result;
|
||||
}
|
||||
|
||||
/* controller and mtd information */
|
||||
|
||||
struct excite_nandflash_drvdata {
|
||||
struct mtd_info board_mtd;
|
||||
struct nand_chip board_chip;
|
||||
io_reg_t regs;
|
||||
};
|
||||
|
||||
|
||||
/* command and control functions */
|
||||
static void excite_nandflash_hwcontrol(struct mtd_info *mtd, int cmd)
|
||||
{
|
||||
struct nand_chip *this = mtd->priv;
|
||||
io_reg_t regs = container_of(mtd,struct excite_nandflash_drvdata,board_mtd)->regs;
|
||||
|
||||
switch (cmd) {
|
||||
/* Select the command latch */
|
||||
case NAND_CTL_SETCLE: this->IO_ADDR_W = regs + EXCITE_NANDFLASH_CMD;
|
||||
break;
|
||||
/* Deselect the command latch */
|
||||
case NAND_CTL_CLRCLE: this->IO_ADDR_W = regs + EXCITE_NANDFLASH_DATA;
|
||||
break;
|
||||
/* Select the address latch */
|
||||
case NAND_CTL_SETALE: this->IO_ADDR_W = regs + EXCITE_NANDFLASH_ADDR;
|
||||
break;
|
||||
/* Deselect the address latch */
|
||||
case NAND_CTL_CLRALE: this->IO_ADDR_W = regs + EXCITE_NANDFLASH_DATA;
|
||||
break;
|
||||
/* Select the chip -- not used */
|
||||
case NAND_CTL_SETNCE:
|
||||
break;
|
||||
/* Deselect the chip -- not used */
|
||||
case NAND_CTL_CLRNCE:
|
||||
break;
|
||||
}
|
||||
|
||||
this->IO_ADDR_R = this->IO_ADDR_W;
|
||||
}
|
||||
|
||||
/* excite_nandflash_devready()
|
||||
*
|
||||
* returns 0 if the nand is busy, 1 if it is ready
|
||||
*/
|
||||
static int excite_nandflash_devready(struct mtd_info *mtd)
|
||||
{
|
||||
struct excite_nandflash_drvdata *drvdata =
|
||||
container_of(mtd, struct excite_nandflash_drvdata, board_mtd);
|
||||
|
||||
return io_readb(drvdata->regs + EXCITE_NANDFLASH_STATUS);
|
||||
}
|
||||
|
||||
/* device management functions */
|
||||
|
||||
/* excite_nandflash_remove
|
||||
*
|
||||
* called by device layer to remove the driver
|
||||
* the binding to the mtd and all allocated
|
||||
* resources are released
|
||||
*/
|
||||
static int excite_nandflash_remove(struct device *dev)
|
||||
{
|
||||
struct excite_nandflash_drvdata *this = dev_get_drvdata(dev);
|
||||
|
||||
pr_info(PFX "remove");
|
||||
|
||||
dev_set_drvdata(dev, NULL);
|
||||
|
||||
if (this == NULL) {
|
||||
pr_debug(PFX "call remove without private data!!");
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/* free the common resources */
|
||||
if (this->regs != NULL) {
|
||||
iounmap(this->regs);
|
||||
this->regs = NULL;
|
||||
}
|
||||
|
||||
kfree(this);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int elapsed;
|
||||
|
||||
void my_workqueue_handler(void *arg)
|
||||
{
|
||||
elapsed = 1;
|
||||
}
|
||||
|
||||
DECLARE_WORK(sigElapsed, my_workqueue_handler, 0);
|
||||
|
||||
|
||||
/* excite_nandflash_probe
|
||||
*
|
||||
* called by device layer when it finds a device matching
|
||||
* one our driver can handled. This code checks to see if
|
||||
* it can allocate all necessary resources then calls the
|
||||
* nand layer to look for devices
|
||||
*/
|
||||
static int excite_nandflash_probe(struct device *dev)
|
||||
{
|
||||
struct platform_device *pdev = to_platform_device(dev);
|
||||
|
||||
struct excite_nandflash_drvdata *drvdata; /* private driver data */
|
||||
struct nand_chip *board_chip; /* private flash chip data */
|
||||
struct mtd_info *board_mtd; /* mtd info for this board */
|
||||
|
||||
int err = 0;
|
||||
int count = 0;
|
||||
struct timeval tv,endtv;
|
||||
unsigned int dt;
|
||||
|
||||
pr_info(PFX "probe dev: (%p)\n", dev);
|
||||
|
||||
pr_info(PFX "adjust LB timing\n");
|
||||
ocd_writel(0x00000330, LDP2);
|
||||
|
||||
drvdata = kmalloc(sizeof(*drvdata), GFP_KERNEL);
|
||||
if (unlikely(!drvdata)) {
|
||||
printk(KERN_ERR PFX "no memory for drvdata\n");
|
||||
err = -ENOMEM;
|
||||
goto mem_error;
|
||||
}
|
||||
|
||||
/* Initialize structures */
|
||||
memset(drvdata, 0, sizeof(*drvdata));
|
||||
|
||||
/* bind private data into driver */
|
||||
dev_set_drvdata(dev, drvdata);
|
||||
|
||||
/* allocate and map the resource */
|
||||
drvdata->regs =
|
||||
excite_nandflash_map_regs(pdev, EXCITE_NANDFLASH_RESOURCE_REGS);
|
||||
|
||||
if (unlikely(!drvdata->regs)) {
|
||||
printk(KERN_ERR PFX "cannot reserve register region\n");
|
||||
err = -ENXIO;
|
||||
goto io_error;
|
||||
}
|
||||
|
||||
/* initialise our chip */
|
||||
board_chip = &drvdata->board_chip;
|
||||
|
||||
board_chip->IO_ADDR_R = drvdata->regs + EXCITE_NANDFLASH_DATA;
|
||||
board_chip->IO_ADDR_W = drvdata->regs + EXCITE_NANDFLASH_DATA;
|
||||
|
||||
board_chip->hwcontrol = excite_nandflash_hwcontrol;
|
||||
board_chip->dev_ready = excite_nandflash_devready;
|
||||
|
||||
board_chip->chip_delay = 25;
|
||||
#if 0
|
||||
/* TODO: speedup the initial scan */
|
||||
board_chip->options = NAND_USE_FLASH_BBT;
|
||||
#endif
|
||||
board_chip->eccmode = NAND_ECC_SOFT;
|
||||
|
||||
/* link chip to mtd */
|
||||
board_mtd = &drvdata->board_mtd;
|
||||
board_mtd->priv = board_chip;
|
||||
|
||||
|
||||
pr_info(PFX "FlashTest\n");
|
||||
elapsed = 0;
|
||||
/* schedule_delayed_work(&sigElapsed, 1*HZ);
|
||||
while (!elapsed) {
|
||||
io_readb(drvdata->regs + EXCITE_NANDFLASH_STATUS);
|
||||
count++;
|
||||
}
|
||||
pr_info(PFX "reads in 1 sec --> %d\n",count);
|
||||
*/
|
||||
do_gettimeofday(&tv);
|
||||
for (count = 0 ; count < 1000000; count ++) {
|
||||
io_readb(drvdata->regs + EXCITE_NANDFLASH_STATUS);
|
||||
}
|
||||
do_gettimeofday(&endtv);
|
||||
dt = (endtv.tv_sec - tv.tv_sec) * 1000000 + endtv.tv_usec - tv.tv_usec;
|
||||
pr_info(PFX "%8d us timeval\n",dt);
|
||||
pr_info(PFX "EndFlashTest\n");
|
||||
|
||||
/* return with error to unload everything
|
||||
*/
|
||||
io_error:
|
||||
iounmap(drvdata->regs);
|
||||
|
||||
mem_error:
|
||||
kfree(drvdata);
|
||||
|
||||
if (err == 0)
|
||||
err = -EINVAL;
|
||||
return err;
|
||||
}
|
||||
|
||||
static struct device_driver excite_nandflash_driver = {
|
||||
.name = "excite_nand",
|
||||
.bus = &platform_bus_type,
|
||||
.probe = excite_nandflash_probe,
|
||||
.remove = excite_nandflash_remove,
|
||||
};
|
||||
|
||||
static int __init excite_nandflash_init(void)
|
||||
{
|
||||
pr_info(PFX "register Driver (Rev: $Revision:$)\n");
|
||||
return driver_register(&excite_nandflash_driver);
|
||||
}
|
||||
|
||||
static void __exit excite_nandflash_exit(void)
|
||||
{
|
||||
driver_unregister(&excite_nandflash_driver);
|
||||
pr_info(PFX "Driver unregistered");
|
||||
}
|
||||
|
||||
module_init(excite_nandflash_init);
|
||||
module_exit(excite_nandflash_exit);
|
||||
|
||||
MODULE_AUTHOR("Thies Moeller <thies.moeller@baslerweb.com>");
|
||||
MODULE_DESCRIPTION("Basler eXcite NAND-Flash driver");
|
||||
MODULE_LICENSE("GPL");
|
80
arch/mips/basler/excite/excite_fpga.h
Normal file
80
arch/mips/basler/excite/excite_fpga.h
Normal file
@ -0,0 +1,80 @@
|
||||
#ifndef EXCITE_FPGA_H_INCLUDED
|
||||
#define EXCITE_FPGA_H_INCLUDED
|
||||
|
||||
|
||||
/**
|
||||
* Adress alignment of the individual FPGA bytes.
|
||||
* The address arrangement of the individual bytes of the FPGA is two
|
||||
* byte aligned at the embedded MK2 platform.
|
||||
*/
|
||||
#ifdef EXCITE_CCI_FPGA_MK2
|
||||
typedef unsigned char excite_cci_fpga_align_t __attribute__ ((aligned(2)));
|
||||
#else
|
||||
typedef unsigned char excite_cci_fpga_align_t;
|
||||
#endif
|
||||
|
||||
|
||||
/**
|
||||
* Size of Dual Ported RAM.
|
||||
*/
|
||||
#define EXCITE_DPR_SIZE 263
|
||||
|
||||
|
||||
/**
|
||||
* Size of Reserved Status Fields in Dual Ported RAM.
|
||||
*/
|
||||
#define EXCITE_DPR_STATUS_SIZE 7
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* FPGA.
|
||||
* Hardware register layout of the FPGA interface. The FPGA must accessed
|
||||
* byte wise solely.
|
||||
* @see EXCITE_CCI_DPR_MK2
|
||||
*/
|
||||
typedef struct excite_fpga {
|
||||
|
||||
/**
|
||||
* Dual Ported RAM.
|
||||
*/
|
||||
excite_cci_fpga_align_t dpr[EXCITE_DPR_SIZE];
|
||||
|
||||
/**
|
||||
* Status.
|
||||
*/
|
||||
excite_cci_fpga_align_t status[EXCITE_DPR_STATUS_SIZE];
|
||||
|
||||
#ifdef EXCITE_CCI_FPGA_MK2
|
||||
/**
|
||||
* RM9000 Interrupt.
|
||||
* Write access initiates interrupt at the RM9000 (MIPS) processor of the eXcite.
|
||||
*/
|
||||
excite_cci_fpga_align_t rm9k_int;
|
||||
#else
|
||||
/**
|
||||
* MK2 Interrupt.
|
||||
* Write access initiates interrupt at the ARM processor of the MK2.
|
||||
*/
|
||||
excite_cci_fpga_align_t mk2_int;
|
||||
|
||||
excite_cci_fpga_align_t gap[0x1000-0x10f];
|
||||
|
||||
/**
|
||||
* IRQ Source/Acknowledge.
|
||||
*/
|
||||
excite_cci_fpga_align_t rm9k_irq_src;
|
||||
|
||||
/**
|
||||
* IRQ Mask.
|
||||
* Set bits enable the related interrupt.
|
||||
*/
|
||||
excite_cci_fpga_align_t rm9k_irq_mask;
|
||||
#endif
|
||||
|
||||
|
||||
} excite_fpga;
|
||||
|
||||
|
||||
|
||||
#endif /* ndef EXCITE_FPGA_H_INCLUDED */
|
183
arch/mips/basler/excite/excite_iodev.c
Normal file
183
arch/mips/basler/excite/excite_iodev.c
Normal file
@ -0,0 +1,183 @@
|
||||
/*
|
||||
* Copyright (C) 2005 by Basler Vision Technologies AG
|
||||
* Author: Thomas Koeller <thomas.koeller@baslerweb.com>
|
||||
*
|
||||
* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#include <linux/config.h>
|
||||
#include <linux/compiler.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/sched.h>
|
||||
#include <linux/wait.h>
|
||||
#include <linux/poll.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/miscdevice.h>
|
||||
|
||||
#include "excite_iodev.h"
|
||||
|
||||
|
||||
|
||||
static const struct resource *iodev_get_resource(struct platform_device *, const char *, unsigned int);
|
||||
static int __init iodev_probe(struct device *);
|
||||
static int __exit iodev_remove(struct device *);
|
||||
static int iodev_open(struct inode *, struct file *);
|
||||
static int iodev_release(struct inode *, struct file *);
|
||||
static ssize_t iodev_read(struct file *, char __user *, size_t s, loff_t *);
|
||||
static unsigned int iodev_poll(struct file *, struct poll_table_struct *);
|
||||
static irqreturn_t iodev_irqhdl(int, void *, struct pt_regs *);
|
||||
|
||||
|
||||
|
||||
static const char iodev_name[] = "iodev";
|
||||
static unsigned int iodev_irq;
|
||||
static DECLARE_WAIT_QUEUE_HEAD(wq);
|
||||
|
||||
|
||||
|
||||
static struct file_operations fops =
|
||||
{
|
||||
.owner = THIS_MODULE,
|
||||
.open = iodev_open,
|
||||
.release = iodev_release,
|
||||
.read = iodev_read,
|
||||
.poll = iodev_poll
|
||||
};
|
||||
|
||||
static struct miscdevice miscdev =
|
||||
{
|
||||
.minor = MISC_DYNAMIC_MINOR,
|
||||
.name = iodev_name,
|
||||
.fops = &fops
|
||||
};
|
||||
|
||||
static struct device_driver iodev_driver =
|
||||
{
|
||||
.name = (char *) iodev_name,
|
||||
.bus = &platform_bus_type,
|
||||
.owner = THIS_MODULE,
|
||||
.probe = iodev_probe,
|
||||
.remove = __exit_p(iodev_remove)
|
||||
};
|
||||
|
||||
|
||||
|
||||
static const struct resource *
|
||||
iodev_get_resource(struct platform_device *pdv, const char *name,
|
||||
unsigned int type)
|
||||
{
|
||||
char buf[80];
|
||||
if (snprintf(buf, sizeof buf, "%s_0", name) >= sizeof buf)
|
||||
return NULL;
|
||||
return platform_get_resource_byname(pdv, type, buf);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* No hotplugging on the platform bus - use __init */
|
||||
static int __init iodev_probe(struct device *dev)
|
||||
{
|
||||
struct platform_device * const pdv = to_platform_device(dev);
|
||||
const struct resource * const ri =
|
||||
iodev_get_resource(pdv, IODEV_RESOURCE_IRQ, IORESOURCE_IRQ);
|
||||
|
||||
if (unlikely(!ri))
|
||||
return -ENXIO;
|
||||
|
||||
iodev_irq = ri->start;
|
||||
return misc_register(&miscdev);
|
||||
}
|
||||
|
||||
|
||||
|
||||
static int __exit iodev_remove(struct device *dev)
|
||||
{
|
||||
return misc_deregister(&miscdev);
|
||||
}
|
||||
|
||||
|
||||
|
||||
static int iodev_open(struct inode *i, struct file *f)
|
||||
{
|
||||
return request_irq(iodev_irq, iodev_irqhdl, SA_INTERRUPT,
|
||||
iodev_name, &miscdev);
|
||||
}
|
||||
|
||||
|
||||
|
||||
static int iodev_release(struct inode *i, struct file *f)
|
||||
{
|
||||
free_irq(iodev_irq, &miscdev);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
static ssize_t
|
||||
iodev_read(struct file *f, char __user *d, size_t s, loff_t *o)
|
||||
{
|
||||
ssize_t ret;
|
||||
DEFINE_WAIT(w);
|
||||
|
||||
prepare_to_wait(&wq, &w, TASK_INTERRUPTIBLE);
|
||||
if (!signal_pending(current))
|
||||
schedule();
|
||||
ret = signal_pending(current) ? -ERESTARTSYS : 0;
|
||||
finish_wait(&wq, &w);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
static unsigned int iodev_poll(struct file *f, struct poll_table_struct *p)
|
||||
{
|
||||
poll_wait(f, &wq, p);
|
||||
return POLLOUT | POLLWRNORM;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
static irqreturn_t iodev_irqhdl(int irq, void *ctxt, struct pt_regs *regs)
|
||||
{
|
||||
wake_up(&wq);
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
|
||||
|
||||
|
||||
static int __init iodev_init_module(void)
|
||||
{
|
||||
return driver_register(&iodev_driver);
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void __exit iodev_cleanup_module(void)
|
||||
{
|
||||
driver_unregister(&iodev_driver);
|
||||
}
|
||||
|
||||
module_init(iodev_init_module);
|
||||
module_exit(iodev_cleanup_module);
|
||||
|
||||
|
||||
|
||||
MODULE_AUTHOR("Thomas Koeller <thomas.koeller@baslerweb.com>");
|
||||
MODULE_DESCRIPTION("Basler eXcite i/o interrupt handler");
|
||||
MODULE_VERSION("0.0");
|
||||
MODULE_LICENSE("GPL");
|
10
arch/mips/basler/excite/excite_iodev.h
Normal file
10
arch/mips/basler/excite/excite_iodev.h
Normal file
@ -0,0 +1,10 @@
|
||||
#ifndef __EXCITE_IODEV_H__
|
||||
#define __EXCITE_IODEV_H__
|
||||
|
||||
/* Device name */
|
||||
#define IODEV_NAME "iodev"
|
||||
|
||||
/* Resource names */
|
||||
#define IODEV_RESOURCE_IRQ "excite_iodev_irq"
|
||||
|
||||
#endif /* __EXCITE_IODEV_H__ */
|
129
arch/mips/basler/excite/excite_irq.c
Normal file
129
arch/mips/basler/excite/excite_irq.c
Normal file
@ -0,0 +1,129 @@
|
||||
/*
|
||||
* Copyright (C) by Basler Vision Technologies AG
|
||||
* Author: Thomas Koeller <thomas.koeller@baslereb.com>
|
||||
*
|
||||
* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#include <linux/errno.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/kernel_stat.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/signal.h>
|
||||
#include <linux/sched.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/ioport.h>
|
||||
#include <linux/timex.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/random.h>
|
||||
#include <asm/bitops.h>
|
||||
#include <asm/bootinfo.h>
|
||||
#include <asm/io.h>
|
||||
#include <asm/irq.h>
|
||||
#include <asm/irq_cpu.h>
|
||||
#include <asm/mipsregs.h>
|
||||
#include <asm/system.h>
|
||||
#include <asm/rm9k-ocd.h>
|
||||
|
||||
#include <excite.h>
|
||||
|
||||
extern asmlinkage void excite_handle_int(void);
|
||||
|
||||
/*
|
||||
* Initialize the interrupt handler
|
||||
*/
|
||||
void __init arch_init_irq(void)
|
||||
{
|
||||
mips_cpu_irq_init(0);
|
||||
rm7k_cpu_irq_init(8);
|
||||
rm9k_cpu_irq_init(12);
|
||||
|
||||
#ifdef CONFIG_KGDB
|
||||
excite_kgdb_init();
|
||||
#endif
|
||||
}
|
||||
|
||||
asmlinkage void plat_irq_dispatch(struct pt_regs *regs)
|
||||
{
|
||||
const u32
|
||||
interrupts = read_c0_cause() >> 8,
|
||||
mask = ((read_c0_status() >> 8) & 0x000000ff) |
|
||||
(read_c0_intcontrol() & 0x0000ff00),
|
||||
pending = interrupts & mask;
|
||||
u32 msgintflags, msgintmask, msgint;
|
||||
|
||||
/* process timer interrupt */
|
||||
if (pending & (1 << TIMER_IRQ)) {
|
||||
do_IRQ(TIMER_IRQ, regs);
|
||||
return;
|
||||
}
|
||||
|
||||
/* Process PCI interrupts */
|
||||
#if USB_IRQ < 10
|
||||
msgintflags = ocd_readl(INTP0Status0 + (USB_MSGINT / 0x20 * 0x10));
|
||||
msgintmask = ocd_readl(INTP0Mask0 + (USB_MSGINT / 0x20 * 0x10));
|
||||
msgint = msgintflags & msgintmask & (0x1 << (USB_MSGINT % 0x20));
|
||||
if ((pending & (1 << USB_IRQ)) && msgint) {
|
||||
#else
|
||||
if (pending & (1 << USB_IRQ)) {
|
||||
#endif
|
||||
do_IRQ(USB_IRQ, regs);
|
||||
return;
|
||||
}
|
||||
|
||||
/* Process TITAN interrupts */
|
||||
msgintflags = ocd_readl(INTP0Status0 + (TITAN_MSGINT / 0x20 * 0x10));
|
||||
msgintmask = ocd_readl(INTP0Mask0 + (TITAN_MSGINT / 0x20 * 0x10));
|
||||
msgint = msgintflags & msgintmask & (0x1 << (TITAN_MSGINT % 0x20));
|
||||
if ((pending & (1 << TITAN_IRQ)) && msgint) {
|
||||
ocd_writel(msgint, INTP0Clear0 + (TITAN_MSGINT / 0x20 * 0x10));
|
||||
#if defined(CONFIG_KGDB)
|
||||
excite_kgdb_inthdl(regs);
|
||||
#endif
|
||||
do_IRQ(TITAN_IRQ, regs);
|
||||
return;
|
||||
}
|
||||
|
||||
/* Process FPGA line #0 interrupts */
|
||||
msgintflags = ocd_readl(INTP0Status0 + (FPGA0_MSGINT / 0x20 * 0x10));
|
||||
msgintmask = ocd_readl(INTP0Mask0 + (FPGA0_MSGINT / 0x20 * 0x10));
|
||||
msgint = msgintflags & msgintmask & (0x1 << (FPGA0_MSGINT % 0x20));
|
||||
if ((pending & (1 << FPGA0_IRQ)) && msgint) {
|
||||
do_IRQ(FPGA0_IRQ, regs);
|
||||
return;
|
||||
}
|
||||
|
||||
/* Process FPGA line #1 interrupts */
|
||||
msgintflags = ocd_readl(INTP0Status0 + (FPGA1_MSGINT / 0x20 * 0x10));
|
||||
msgintmask = ocd_readl(INTP0Mask0 + (FPGA1_MSGINT / 0x20 * 0x10));
|
||||
msgint = msgintflags & msgintmask & (0x1 << (FPGA1_MSGINT % 0x20));
|
||||
if ((pending & (1 << FPGA1_IRQ)) && msgint) {
|
||||
do_IRQ(FPGA1_IRQ, regs);
|
||||
return;
|
||||
}
|
||||
|
||||
/* Process PHY interrupts */
|
||||
msgintflags = ocd_readl(INTP0Status0 + (PHY_MSGINT / 0x20 * 0x10));
|
||||
msgintmask = ocd_readl(INTP0Mask0 + (PHY_MSGINT / 0x20 * 0x10));
|
||||
msgint = msgintflags & msgintmask & (0x1 << (PHY_MSGINT % 0x20));
|
||||
if ((pending & (1 << PHY_IRQ)) && msgint) {
|
||||
do_IRQ(PHY_IRQ, regs);
|
||||
return;
|
||||
}
|
||||
|
||||
/* Process spurious interrupts */
|
||||
spurious_interrupt(regs);
|
||||
}
|
81
arch/mips/basler/excite/excite_procfs.c
Normal file
81
arch/mips/basler/excite/excite_procfs.c
Normal file
@ -0,0 +1,81 @@
|
||||
/*
|
||||
* Copyright (C) 2004, 2005 by Basler Vision Technologies AG
|
||||
* Author: Thomas Koeller <thomas.koeller@baslerweb.com>
|
||||
*
|
||||
* Procfs support for Basler eXcite
|
||||
*
|
||||
* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#include <linux/config.h>
|
||||
#include <linux/proc_fs.h>
|
||||
#include <linux/stat.h>
|
||||
#include <asm/page.h>
|
||||
#include <asm/io.h>
|
||||
#include <asm/system.h>
|
||||
#include <asm/rm9k-ocd.h>
|
||||
|
||||
#include <excite.h>
|
||||
|
||||
static int excite_get_unit_id(char *buf, char **addr, off_t offs, int size)
|
||||
{
|
||||
const int len = snprintf(buf, PAGE_SIZE, "%06x", unit_id);
|
||||
const int w = len - offs;
|
||||
*addr = buf + offs;
|
||||
return w < size ? w : size;
|
||||
}
|
||||
|
||||
static int
|
||||
excite_bootrom_read(char *page, char **start, off_t off, int count,
|
||||
int *eof, void *data)
|
||||
{
|
||||
void __iomem * src;
|
||||
|
||||
if (off >= EXCITE_SIZE_BOOTROM) {
|
||||
*eof = 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
if ((off + count) > EXCITE_SIZE_BOOTROM)
|
||||
count = EXCITE_SIZE_BOOTROM - off;
|
||||
|
||||
src = ioremap(EXCITE_PHYS_BOOTROM + off, count);
|
||||
if (src) {
|
||||
memcpy_fromio(page, src, count);
|
||||
iounmap(src);
|
||||
*start = page;
|
||||
} else {
|
||||
count = -ENOMEM;
|
||||
}
|
||||
|
||||
return count;
|
||||
}
|
||||
|
||||
void excite_procfs_init(void)
|
||||
{
|
||||
/* Create & populate /proc/excite */
|
||||
struct proc_dir_entry * const pdir = proc_mkdir("excite", &proc_root);
|
||||
if (pdir) {
|
||||
struct proc_dir_entry * e;
|
||||
|
||||
e = create_proc_info_entry("unit_id", S_IRUGO, pdir,
|
||||
excite_get_unit_id);
|
||||
if (e) e->size = 6;
|
||||
|
||||
e = create_proc_read_entry("bootrom", S_IRUGO, pdir,
|
||||
excite_bootrom_read, NULL);
|
||||
if (e) e->size = EXCITE_SIZE_BOOTROM;
|
||||
}
|
||||
}
|
148
arch/mips/basler/excite/excite_prom.c
Normal file
148
arch/mips/basler/excite/excite_prom.c
Normal file
@ -0,0 +1,148 @@
|
||||
/*
|
||||
* Copyright (C) 2004, 2005 by Thomas Koeller (thomas.koeller@baslerweb.com)
|
||||
* Based on the PMC-Sierra Yosemite board support by Ralf Baechle and
|
||||
* Manish Lachwani.
|
||||
*
|
||||
* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#include <linux/config.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/sched.h>
|
||||
#include <linux/mm.h>
|
||||
#include <linux/delay.h>
|
||||
#include <linux/smp.h>
|
||||
#include <linux/module.h>
|
||||
#include <asm/io.h>
|
||||
#include <asm/pgtable.h>
|
||||
#include <asm/processor.h>
|
||||
#include <asm/reboot.h>
|
||||
#include <asm/system.h>
|
||||
#include <asm/bootinfo.h>
|
||||
#include <asm/string.h>
|
||||
|
||||
#include <excite.h>
|
||||
|
||||
/* This struct is used by Redboot to pass arguments to the kernel */
|
||||
typedef struct
|
||||
{
|
||||
char *name;
|
||||
char *val;
|
||||
} t_env_var;
|
||||
|
||||
struct parmblock {
|
||||
t_env_var memsize;
|
||||
t_env_var modetty0;
|
||||
t_env_var ethaddr;
|
||||
t_env_var env_end;
|
||||
char *argv[2];
|
||||
char text[0];
|
||||
};
|
||||
|
||||
static unsigned int prom_argc;
|
||||
static const char ** prom_argv;
|
||||
static const t_env_var * prom_env;
|
||||
|
||||
static void prom_halt(void) __attribute__((noreturn));
|
||||
static void prom_exit(void) __attribute__((noreturn));
|
||||
|
||||
|
||||
|
||||
const char *get_system_type(void)
|
||||
{
|
||||
return "Basler eXcite";
|
||||
}
|
||||
|
||||
/*
|
||||
* Halt the system
|
||||
*/
|
||||
static void prom_halt(void)
|
||||
{
|
||||
printk(KERN_NOTICE "\n** System halted.\n");
|
||||
while (1)
|
||||
asm volatile (
|
||||
"\t.set\tmips3\n"
|
||||
"\twait\n"
|
||||
"\t.set\tmips0\n"
|
||||
);
|
||||
}
|
||||
|
||||
/*
|
||||
* Reset the CPU and re-enter Redboot
|
||||
*/
|
||||
static void prom_exit(void)
|
||||
{
|
||||
unsigned int i;
|
||||
volatile unsigned char * const flg =
|
||||
(volatile unsigned char *) (EXCITE_ADDR_FPGA + EXCITE_FPGA_DPR);
|
||||
|
||||
/* Clear the watchdog reset flag, set the reboot flag */
|
||||
*flg &= ~0x01;
|
||||
*flg |= 0x80;
|
||||
|
||||
for (i = 0; i < 10; i++) {
|
||||
*(volatile unsigned char *) (EXCITE_ADDR_FPGA + EXCITE_FPGA_SYSCTL) = 0x02;
|
||||
iob();
|
||||
mdelay(1000);
|
||||
}
|
||||
|
||||
printk(KERN_NOTICE "Reset failed\n");
|
||||
prom_halt();
|
||||
}
|
||||
|
||||
static const char __init *prom_getenv(char *name)
|
||||
{
|
||||
const t_env_var * p;
|
||||
for (p = prom_env; p->name != NULL; p++)
|
||||
if(strcmp(name, p->name) == 0)
|
||||
break;
|
||||
return p->val;
|
||||
}
|
||||
|
||||
/*
|
||||
* Init routine which accepts the variables from Redboot
|
||||
*/
|
||||
void __init prom_init(void)
|
||||
{
|
||||
const struct parmblock * const pb = (struct parmblock *) fw_arg2;
|
||||
|
||||
prom_argc = fw_arg0;
|
||||
prom_argv = (const char **) fw_arg1;
|
||||
prom_env = &pb->memsize;
|
||||
|
||||
/* Callbacks for halt, restart */
|
||||
_machine_restart = (void (*)(char *)) prom_exit;
|
||||
_machine_halt = prom_halt;
|
||||
|
||||
#ifdef CONFIG_32BIT
|
||||
/* copy command line */
|
||||
strcpy(arcs_cmdline, prom_argv[1]);
|
||||
memsize = simple_strtol(prom_getenv("memsize"), NULL, 16);
|
||||
strcpy(modetty, prom_getenv("modetty0"));
|
||||
#endif /* CONFIG_32BIT */
|
||||
|
||||
#ifdef CONFIG_64BIT
|
||||
# error 64 bit support not implemented
|
||||
#endif /* CONFIG_64BIT */
|
||||
|
||||
mips_machgroup = MACH_GROUP_TITAN;
|
||||
mips_machtype = MACH_TITAN_EXCITE;
|
||||
}
|
||||
|
||||
/* This is called from free_initmem(), so we need to provide it */
|
||||
void __init prom_free_prom_memory(void)
|
||||
{
|
||||
/* Nothing to do */
|
||||
}
|
307
arch/mips/basler/excite/excite_setup.c
Normal file
307
arch/mips/basler/excite/excite_setup.c
Normal file
@ -0,0 +1,307 @@
|
||||
/*
|
||||
* Copyright (C) 2004, 2005 by Basler Vision Technologies AG
|
||||
* Author: Thomas Koeller <thomas.koeller@baslerweb.com>
|
||||
* Based on the PMC-Sierra Yosemite board support by Ralf Baechle and
|
||||
* Manish Lachwani.
|
||||
*
|
||||
* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#include <linux/config.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/string.h>
|
||||
#include <linux/tty.h>
|
||||
#include <linux/serial_core.h>
|
||||
#include <linux/serial.h>
|
||||
#include <linux/ioport.h>
|
||||
#include <linux/spinlock.h>
|
||||
#include <asm/bootinfo.h>
|
||||
#include <asm/mipsregs.h>
|
||||
#include <asm/pgtable-32.h>
|
||||
#include <asm/io.h>
|
||||
#include <asm/time.h>
|
||||
#include <asm/rm9k-ocd.h>
|
||||
|
||||
#include <excite.h>
|
||||
|
||||
#define TITAN_UART_CLK 25000000
|
||||
|
||||
#if 1
|
||||
/* normal serial port assignment */
|
||||
#define REGBASE_SER0 0x0208
|
||||
#define REGBASE_SER1 0x0238
|
||||
#define MASK_SER0 0x1
|
||||
#define MASK_SER1 0x2
|
||||
#else
|
||||
/* serial ports swapped */
|
||||
#define REGBASE_SER0 0x0238
|
||||
#define REGBASE_SER1 0x0208
|
||||
#define MASK_SER0 0x2
|
||||
#define MASK_SER1 0x1
|
||||
#endif
|
||||
|
||||
unsigned long memsize;
|
||||
char modetty[30];
|
||||
unsigned int titan_irq = TITAN_IRQ;
|
||||
static void __iomem * ctl_regs;
|
||||
u32 unit_id;
|
||||
|
||||
volatile void __iomem * const ocd_base = (void *) (EXCITE_ADDR_OCD);
|
||||
volatile void __iomem * const titan_base = (void *) (EXCITE_ADDR_TITAN);
|
||||
|
||||
/* Protect access to shared GPI registers */
|
||||
spinlock_t titan_lock = SPIN_LOCK_UNLOCKED;
|
||||
int titan_irqflags;
|
||||
|
||||
|
||||
static void excite_timer_init(void)
|
||||
{
|
||||
const u32 modebit5 = ocd_readl(0x00e4);
|
||||
unsigned int
|
||||
mult = ((modebit5 >> 11) & 0x1f) + 2,
|
||||
div = ((modebit5 >> 16) & 0x1f) + 2;
|
||||
|
||||
if (div == 33) div = 1;
|
||||
mips_hpt_frequency = EXCITE_CPU_EXT_CLOCK * mult / div / 2;
|
||||
}
|
||||
|
||||
static void excite_timer_setup(struct irqaction *irq)
|
||||
{
|
||||
/* The eXcite platform uses the alternate timer interrupt */
|
||||
set_c0_intcontrol(0x80);
|
||||
setup_irq(TIMER_IRQ, irq);
|
||||
}
|
||||
|
||||
static int __init excite_init_console(void)
|
||||
{
|
||||
#if defined(CONFIG_SERIAL_8250)
|
||||
static __initdata char serr[] =
|
||||
KERN_ERR "Serial port #%u setup failed\n";
|
||||
struct uart_port up;
|
||||
|
||||
/* Take the DUART out of reset */
|
||||
titan_writel(0x00ff1cff, CPRR);
|
||||
|
||||
#if defined(CONFIG_KGDB) || (CONFIG_SERIAL_8250_NR_UARTS > 1)
|
||||
/* Enable both ports */
|
||||
titan_writel(MASK_SER0 | MASK_SER1, UACFG);
|
||||
#else
|
||||
/* Enable port #0 only */
|
||||
titan_writel(MASK_SER0, UACFG);
|
||||
#endif /* defined(CONFIG_KGDB) */
|
||||
|
||||
/*
|
||||
* Set up serial port #0. Do not use autodetection; the result is
|
||||
* not what we want.
|
||||
*/
|
||||
memset(&up, 0, sizeof(up));
|
||||
up.membase = (char *) titan_addr(REGBASE_SER0);
|
||||
up.irq = TITAN_IRQ;
|
||||
up.uartclk = TITAN_UART_CLK;
|
||||
up.regshift = 0;
|
||||
up.iotype = UPIO_MEM32;
|
||||
up.type = PORT_RM9000;
|
||||
up.flags = UPF_SHARE_IRQ;
|
||||
up.line = 0;
|
||||
if (early_serial_setup(&up))
|
||||
printk(serr, up.line);
|
||||
|
||||
#if CONFIG_SERIAL_8250_NR_UARTS > 1
|
||||
/* And now for port #1. */
|
||||
up.membase = (char *) titan_addr(REGBASE_SER1);
|
||||
up.line = 1;
|
||||
if (early_serial_setup(&up))
|
||||
printk(serr, up.line);
|
||||
#endif /* CONFIG_SERIAL_8250_NR_UARTS > 1 */
|
||||
#else
|
||||
/* Leave the DUART in reset */
|
||||
titan_writel(0x00ff3cff, CPRR);
|
||||
#endif /* defined(CONFIG_SERIAL_8250) */
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int __init excite_platform_init(void)
|
||||
{
|
||||
unsigned int i;
|
||||
unsigned char buf[3];
|
||||
u8 reg;
|
||||
void __iomem * dpr;
|
||||
|
||||
/* BIU buffer allocations */
|
||||
ocd_writel(8, CPURSLMT); /* CPU */
|
||||
titan_writel(4, CPGRWL); /* GPI / Ethernet */
|
||||
|
||||
/* Map control registers located in FPGA */
|
||||
ctl_regs = ioremap_nocache(EXCITE_PHYS_FPGA + EXCITE_FPGA_SYSCTL, 16);
|
||||
if (!ctl_regs)
|
||||
panic("eXcite: failed to map platform control registers\n");
|
||||
memcpy_fromio(buf, ctl_regs + 2, ARRAY_SIZE(buf));
|
||||
unit_id = buf[0] | (buf[1] << 8) | (buf[2] << 16);
|
||||
|
||||
/* Clear the reboot flag */
|
||||
dpr = ioremap_nocache(EXCITE_PHYS_FPGA + EXCITE_FPGA_DPR, 1);
|
||||
reg = __raw_readb(dpr);
|
||||
__raw_writeb(reg & 0x7f, dpr);
|
||||
iounmap(dpr);
|
||||
|
||||
/* Interrupt controller setup */
|
||||
for (i = INTP0Status0; i < INTP0Status0 + 0x80; i += 0x10) {
|
||||
ocd_writel(0x00000000, i + 0x04);
|
||||
ocd_writel(0xffffffff, i + 0x0c);
|
||||
}
|
||||
ocd_writel(0x2, NMICONFIG);
|
||||
|
||||
ocd_writel(0x1 << (TITAN_MSGINT % 0x20),
|
||||
INTP0Mask0 + (0x10 * (TITAN_MSGINT / 0x20)));
|
||||
ocd_writel((0x1 << (FPGA0_MSGINT % 0x20))
|
||||
| ocd_readl(INTP0Mask0 + (0x10 * (FPGA0_MSGINT / 0x20))),
|
||||
INTP0Mask0 + (0x10 * (FPGA0_MSGINT / 0x20)));
|
||||
ocd_writel((0x1 << (FPGA1_MSGINT % 0x20))
|
||||
| ocd_readl(INTP0Mask0 + (0x10 * (FPGA1_MSGINT / 0x20))),
|
||||
INTP0Mask0 + (0x10 * (FPGA1_MSGINT / 0x20)));
|
||||
ocd_writel((0x1 << (PHY_MSGINT % 0x20))
|
||||
| ocd_readl(INTP0Mask0 + (0x10 * (PHY_MSGINT / 0x20))),
|
||||
INTP0Mask0 + (0x10 * (PHY_MSGINT / 0x20)));
|
||||
#if USB_IRQ < 10
|
||||
ocd_writel((0x1 << (USB_MSGINT % 0x20))
|
||||
| ocd_readl(INTP0Mask0 + (0x10 * (USB_MSGINT / 0x20))),
|
||||
INTP0Mask0 + (0x10 * (USB_MSGINT / 0x20)));
|
||||
#endif
|
||||
/* Enable the packet FIFO, XDMA and XDMA arbiter */
|
||||
titan_writel(0x00ff18ff, CPRR);
|
||||
|
||||
/*
|
||||
* Set up the PADMUX. Power down all ethernet slices,
|
||||
* they will be powered up and configured at device startup.
|
||||
*/
|
||||
titan_writel(0x00878206, CPTC1R);
|
||||
titan_writel(0x00001100, CPTC0R); /* latch PADMUX, enable WCIMODE */
|
||||
|
||||
/* Reset and enable the FIFO block */
|
||||
titan_writel(0x00000001, SDRXFCIE);
|
||||
titan_writel(0x00000001, SDTXFCIE);
|
||||
titan_writel(0x00000100, SDRXFCIE);
|
||||
titan_writel(0x00000000, SDTXFCIE);
|
||||
|
||||
/*
|
||||
* Initialize the common interrupt shared by all components of
|
||||
* the GPI/Ethernet subsystem.
|
||||
*/
|
||||
titan_writel((EXCITE_PHYS_OCD >> 12), CPCFG0);
|
||||
titan_writel(TITAN_MSGINT, CPCFG1);
|
||||
|
||||
/*
|
||||
* XDMA configuration.
|
||||
* In order for the XDMA to be sharable among multiple drivers,
|
||||
* the setup must be done here in the platform. The reason is that
|
||||
* this setup can only be done while the XDMA is in reset. If this
|
||||
* were done in a driver, it would interrupt all other drivers
|
||||
* using the XDMA.
|
||||
*/
|
||||
titan_writel(0x80021dff, GXCFG); /* XDMA reset */
|
||||
titan_writel(0x00000000, CPXCISRA);
|
||||
titan_writel(0x00000000, CPXCISRB); /* clear pending interrupts */
|
||||
#if defined (CONFIG_HIGHMEM)
|
||||
# error change for HIGHMEM support!
|
||||
#else
|
||||
titan_writel(0x00000000, GXDMADRPFX); /* buffer address prefix */
|
||||
#endif
|
||||
titan_writel(0, GXDMA_DESCADR);
|
||||
|
||||
for (i = 0x5040; i <= 0x5300; i += 0x0040)
|
||||
titan_writel(0x80080000, i); /* reset channel */
|
||||
|
||||
titan_writel((0x1 << 29) /* no sparse tx descr. */
|
||||
| (0x1 << 28) /* no sparse rx descr. */
|
||||
| (0x1 << 23) | (0x1 << 24) /* descriptor coherency */
|
||||
| (0x1 << 21) | (0x1 << 22) /* data coherency */
|
||||
| (0x1 << 17)
|
||||
| 0x1dff,
|
||||
GXCFG);
|
||||
|
||||
#if defined(CONFIG_SMP)
|
||||
# error No SMP support
|
||||
#else
|
||||
/* All interrupts go to core #0 only. */
|
||||
titan_writel(0x1f007fff, CPDST0A);
|
||||
titan_writel(0x00000000, CPDST0B);
|
||||
titan_writel(0x0000ff3f, CPDST1A);
|
||||
titan_writel(0x00000000, CPDST1B);
|
||||
titan_writel(0x00ffffff, CPXDSTA);
|
||||
titan_writel(0x00000000, CPXDSTB);
|
||||
#endif
|
||||
|
||||
/* Enable DUART interrupts, disable everything else. */
|
||||
titan_writel(0x04000000, CPGIG0ER);
|
||||
titan_writel(0x000000c0, CPGIG1ER);
|
||||
|
||||
excite_procfs_init();
|
||||
return 0;
|
||||
}
|
||||
|
||||
void __init plat_setup(void)
|
||||
{
|
||||
volatile u32 * const boot_ocd_base = (u32 *) 0xbf7fc000;
|
||||
|
||||
/* Announce RAM to system */
|
||||
add_memory_region(0x00000000, memsize, BOOT_MEM_RAM);
|
||||
|
||||
/* Set up timer initialization hooks */
|
||||
board_time_init = excite_timer_init;
|
||||
board_timer_setup = excite_timer_setup;
|
||||
|
||||
/* Set up the peripheral address map */
|
||||
*(boot_ocd_base + (LKB9 / sizeof (u32))) = 0;
|
||||
*(boot_ocd_base + (LKB10 / sizeof (u32))) = 0;
|
||||
*(boot_ocd_base + (LKB11 / sizeof (u32))) = 0;
|
||||
*(boot_ocd_base + (LKB12 / sizeof (u32))) = 0;
|
||||
wmb();
|
||||
*(boot_ocd_base + (LKB0 / sizeof (u32))) = EXCITE_PHYS_OCD >> 4;
|
||||
wmb();
|
||||
|
||||
ocd_writel((EXCITE_PHYS_TITAN >> 4) | 0x1UL, LKB5);
|
||||
ocd_writel(((EXCITE_SIZE_TITAN >> 4) & 0x7fffff00) - 0x100, LKM5);
|
||||
ocd_writel((EXCITE_PHYS_SCRAM >> 4) | 0x1UL, LKB13);
|
||||
ocd_writel(((EXCITE_SIZE_SCRAM >> 4) & 0xffffff00) - 0x100, LKM13);
|
||||
|
||||
/* Local bus slot #0 */
|
||||
ocd_writel(0x00040510, LDP0);
|
||||
ocd_writel((EXCITE_PHYS_BOOTROM >> 4) | 0x1UL, LKB9);
|
||||
ocd_writel(((EXCITE_SIZE_BOOTROM >> 4) & 0x03ffff00) - 0x100, LKM9);
|
||||
|
||||
/* Local bus slot #2 */
|
||||
ocd_writel(0x00000330, LDP2);
|
||||
ocd_writel((EXCITE_PHYS_FPGA >> 4) | 0x1, LKB11);
|
||||
ocd_writel(((EXCITE_SIZE_FPGA >> 4) - 0x100) & 0x03ffff00, LKM11);
|
||||
|
||||
/* Local bus slot #3 */
|
||||
ocd_writel(0x00123413, LDP3);
|
||||
ocd_writel((EXCITE_PHYS_NAND >> 4) | 0x1, LKB12);
|
||||
ocd_writel(((EXCITE_SIZE_NAND >> 4) - 0x100) & 0x03ffff00, LKM12);
|
||||
}
|
||||
|
||||
|
||||
|
||||
console_initcall(excite_init_console);
|
||||
arch_initcall(excite_platform_init);
|
||||
|
||||
EXPORT_SYMBOL(titan_lock);
|
||||
EXPORT_SYMBOL(titan_irqflags);
|
||||
EXPORT_SYMBOL(titan_irq);
|
||||
EXPORT_SYMBOL(ocd_base);
|
||||
EXPORT_SYMBOL(titan_base);
|
@ -41,3 +41,8 @@ void __init cobalt_early_console(void)
|
||||
|
||||
printk("Cobalt: early console registered\n");
|
||||
}
|
||||
|
||||
void __init disable_early_printk(void)
|
||||
{
|
||||
unregister_console(&cons_info);
|
||||
}
|
||||
|
@ -68,19 +68,46 @@ static void __init cobalt_timer_setup(struct irqaction *irq)
|
||||
extern struct pci_ops gt64111_pci_ops;
|
||||
|
||||
static struct resource cobalt_mem_resource = {
|
||||
"PCI memory", GT64111_MEM_BASE, GT64111_MEM_END, IORESOURCE_MEM
|
||||
.start = GT64111_MEM_BASE,
|
||||
.end = GT64111_MEM_END,
|
||||
.name = "PCI memory",
|
||||
.flags = IORESOURCE_MEM
|
||||
};
|
||||
|
||||
static struct resource cobalt_io_resource = {
|
||||
"PCI I/O", 0x1000, 0xffff, IORESOURCE_IO
|
||||
.start = 0x1000,
|
||||
.end = 0xffff,
|
||||
.name = "PCI I/O",
|
||||
.flags = IORESOURCE_IO
|
||||
};
|
||||
|
||||
static struct resource cobalt_io_resources[] = {
|
||||
{ "dma1", 0x00, 0x1f, IORESOURCE_BUSY },
|
||||
{ "timer", 0x40, 0x5f, IORESOURCE_BUSY },
|
||||
{ "keyboard", 0x60, 0x6f, IORESOURCE_BUSY },
|
||||
{ "dma page reg", 0x80, 0x8f, IORESOURCE_BUSY },
|
||||
{ "dma2", 0xc0, 0xdf, IORESOURCE_BUSY },
|
||||
{
|
||||
.start = 0x00,
|
||||
.end = 0x1f,
|
||||
.name = "dma1",
|
||||
.flags = IORESOURCE_BUSY
|
||||
}, {
|
||||
.start = 0x40,
|
||||
.end = 0x5f,
|
||||
.name = "timer",
|
||||
.flags = IORESOURCE_BUSY
|
||||
}, {
|
||||
.start = 0x60,
|
||||
.end = 0x6f,
|
||||
.name = "keyboard",
|
||||
.flags = IORESOURCE_BUSY
|
||||
}, {
|
||||
.start = 0x80,
|
||||
.end = 0x8f,
|
||||
.name = "dma page reg",
|
||||
.flags = IORESOURCE_BUSY
|
||||
}, {
|
||||
.start = 0xc0,
|
||||
.end = 0xdf,
|
||||
.name = "dma2",
|
||||
.flags = IORESOURCE_BUSY
|
||||
},
|
||||
};
|
||||
|
||||
#define COBALT_IO_RESOURCES (sizeof(cobalt_io_resources)/sizeof(struct resource))
|
||||
@ -93,7 +120,7 @@ static struct pci_controller cobalt_pci_controller = {
|
||||
.io_offset = 0 - GT64111_IO_BASE
|
||||
};
|
||||
|
||||
void __init plat_setup(void)
|
||||
void __init plat_mem_setup(void)
|
||||
{
|
||||
static struct uart_port uart;
|
||||
unsigned int devfn = PCI_DEVFN(COBALT_PCICONF_VIA, 0);
|
||||
|
@ -41,8 +41,6 @@ CONFIG_MIPS_ATLAS=y
|
||||
# CONFIG_MIPS_XXS1500 is not set
|
||||
# CONFIG_PNX8550_V2PCI is not set
|
||||
# CONFIG_PNX8550_JBS is not set
|
||||
# CONFIG_DDB5074 is not set
|
||||
# CONFIG_DDB5476 is not set
|
||||
# CONFIG_DDB5477 is not set
|
||||
# CONFIG_MACH_VR41XX is not set
|
||||
# CONFIG_PMC_YOSEMITE is not set
|
||||
@ -143,6 +141,15 @@ CONFIG_FLATMEM=y
|
||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||
# CONFIG_SPARSEMEM_STATIC is not set
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
# CONFIG_HZ_48 is not set
|
||||
CONFIG_HZ_100=y
|
||||
# CONFIG_HZ_128 is not set
|
||||
# CONFIG_HZ_250 is not set
|
||||
# CONFIG_HZ_256 is not set
|
||||
# CONFIG_HZ_1000 is not set
|
||||
# CONFIG_HZ_1024 is not set
|
||||
CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
|
||||
CONFIG_HZ=100
|
||||
CONFIG_PREEMPT_NONE=y
|
||||
# CONFIG_PREEMPT_VOLUNTARY is not set
|
||||
# CONFIG_PREEMPT is not set
|
||||
|
@ -41,8 +41,6 @@ CONFIG_MIPS=y
|
||||
# CONFIG_MIPS_XXS1500 is not set
|
||||
# CONFIG_PNX8550_V2PCI is not set
|
||||
# CONFIG_PNX8550_JBS is not set
|
||||
# CONFIG_DDB5074 is not set
|
||||
# CONFIG_DDB5476 is not set
|
||||
# CONFIG_DDB5477 is not set
|
||||
# CONFIG_MACH_VR41XX is not set
|
||||
# CONFIG_PMC_YOSEMITE is not set
|
||||
@ -145,6 +143,15 @@ CONFIG_FLATMEM=y
|
||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||
# CONFIG_SPARSEMEM_STATIC is not set
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
# CONFIG_HZ_48 is not set
|
||||
# CONFIG_HZ_100 is not set
|
||||
# CONFIG_HZ_128 is not set
|
||||
# CONFIG_HZ_250 is not set
|
||||
# CONFIG_HZ_256 is not set
|
||||
CONFIG_HZ_1000=y
|
||||
# CONFIG_HZ_1024 is not set
|
||||
CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
|
||||
CONFIG_HZ=1000
|
||||
CONFIG_SMP=y
|
||||
CONFIG_NR_CPUS=4
|
||||
CONFIG_PREEMPT_NONE=y
|
||||
|
@ -41,8 +41,6 @@ CONFIG_MIPS=y
|
||||
# CONFIG_MIPS_XXS1500 is not set
|
||||
# CONFIG_PNX8550_V2PCI is not set
|
||||
# CONFIG_PNX8550_JBS is not set
|
||||
# CONFIG_DDB5074 is not set
|
||||
# CONFIG_DDB5476 is not set
|
||||
# CONFIG_DDB5477 is not set
|
||||
CONFIG_MACH_VR41XX=y
|
||||
# CONFIG_PMC_YOSEMITE is not set
|
||||
@ -132,6 +130,15 @@ CONFIG_FLATMEM=y
|
||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||
# CONFIG_SPARSEMEM_STATIC is not set
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
# CONFIG_HZ_48 is not set
|
||||
# CONFIG_HZ_100 is not set
|
||||
# CONFIG_HZ_128 is not set
|
||||
# CONFIG_HZ_250 is not set
|
||||
# CONFIG_HZ_256 is not set
|
||||
CONFIG_HZ_1000=y
|
||||
# CONFIG_HZ_1024 is not set
|
||||
CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
|
||||
CONFIG_HZ=1000
|
||||
CONFIG_PREEMPT_NONE=y
|
||||
# CONFIG_PREEMPT_VOLUNTARY is not set
|
||||
# CONFIG_PREEMPT is not set
|
||||
|
@ -41,8 +41,6 @@ CONFIG_MIPS_COBALT=y
|
||||
# CONFIG_MIPS_XXS1500 is not set
|
||||
# CONFIG_PNX8550_V2PCI is not set
|
||||
# CONFIG_PNX8550_JBS is not set
|
||||
# CONFIG_DDB5074 is not set
|
||||
# CONFIG_DDB5476 is not set
|
||||
# CONFIG_DDB5477 is not set
|
||||
# CONFIG_MACH_VR41XX is not set
|
||||
# CONFIG_PMC_YOSEMITE is not set
|
||||
@ -129,6 +127,15 @@ CONFIG_FLATMEM=y
|
||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||
# CONFIG_SPARSEMEM_STATIC is not set
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
# CONFIG_HZ_48 is not set
|
||||
# CONFIG_HZ_100 is not set
|
||||
# CONFIG_HZ_128 is not set
|
||||
# CONFIG_HZ_250 is not set
|
||||
# CONFIG_HZ_256 is not set
|
||||
CONFIG_HZ_1000=y
|
||||
# CONFIG_HZ_1024 is not set
|
||||
CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
|
||||
CONFIG_HZ=1000
|
||||
CONFIG_PREEMPT_NONE=y
|
||||
# CONFIG_PREEMPT_VOLUNTARY is not set
|
||||
# CONFIG_PREEMPT is not set
|
||||
|
@ -41,8 +41,6 @@ CONFIG_MIPS_DB1000=y
|
||||
# CONFIG_MIPS_XXS1500 is not set
|
||||
# CONFIG_PNX8550_V2PCI is not set
|
||||
# CONFIG_PNX8550_JBS is not set
|
||||
# CONFIG_DDB5074 is not set
|
||||
# CONFIG_DDB5476 is not set
|
||||
# CONFIG_DDB5477 is not set
|
||||
# CONFIG_MACH_VR41XX is not set
|
||||
# CONFIG_PMC_YOSEMITE is not set
|
||||
@ -130,6 +128,15 @@ CONFIG_FLATMEM=y
|
||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||
# CONFIG_SPARSEMEM_STATIC is not set
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
# CONFIG_HZ_48 is not set
|
||||
# CONFIG_HZ_100 is not set
|
||||
# CONFIG_HZ_128 is not set
|
||||
# CONFIG_HZ_250 is not set
|
||||
# CONFIG_HZ_256 is not set
|
||||
CONFIG_HZ_1000=y
|
||||
# CONFIG_HZ_1024 is not set
|
||||
CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
|
||||
CONFIG_HZ=1000
|
||||
CONFIG_PREEMPT_NONE=y
|
||||
# CONFIG_PREEMPT_VOLUNTARY is not set
|
||||
# CONFIG_PREEMPT is not set
|
||||
|
@ -41,8 +41,6 @@ CONFIG_MIPS_DB1100=y
|
||||
# CONFIG_MIPS_XXS1500 is not set
|
||||
# CONFIG_PNX8550_V2PCI is not set
|
||||
# CONFIG_PNX8550_JBS is not set
|
||||
# CONFIG_DDB5074 is not set
|
||||
# CONFIG_DDB5476 is not set
|
||||
# CONFIG_DDB5477 is not set
|
||||
# CONFIG_MACH_VR41XX is not set
|
||||
# CONFIG_PMC_YOSEMITE is not set
|
||||
@ -130,6 +128,15 @@ CONFIG_FLATMEM=y
|
||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||
# CONFIG_SPARSEMEM_STATIC is not set
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
# CONFIG_HZ_48 is not set
|
||||
# CONFIG_HZ_100 is not set
|
||||
# CONFIG_HZ_128 is not set
|
||||
# CONFIG_HZ_250 is not set
|
||||
# CONFIG_HZ_256 is not set
|
||||
CONFIG_HZ_1000=y
|
||||
# CONFIG_HZ_1024 is not set
|
||||
CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
|
||||
CONFIG_HZ=1000
|
||||
CONFIG_PREEMPT_NONE=y
|
||||
# CONFIG_PREEMPT_VOLUNTARY is not set
|
||||
# CONFIG_PREEMPT is not set
|
||||
|
@ -41,8 +41,6 @@ CONFIG_MIPS_DB1200=y
|
||||
# CONFIG_MIPS_XXS1500 is not set
|
||||
# CONFIG_PNX8550_V2PCI is not set
|
||||
# CONFIG_PNX8550_JBS is not set
|
||||
# CONFIG_DDB5074 is not set
|
||||
# CONFIG_DDB5476 is not set
|
||||
# CONFIG_DDB5477 is not set
|
||||
# CONFIG_MACH_VR41XX is not set
|
||||
# CONFIG_PMC_YOSEMITE is not set
|
||||
@ -130,6 +128,15 @@ CONFIG_FLATMEM=y
|
||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||
# CONFIG_SPARSEMEM_STATIC is not set
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
# CONFIG_HZ_48 is not set
|
||||
# CONFIG_HZ_100 is not set
|
||||
# CONFIG_HZ_128 is not set
|
||||
# CONFIG_HZ_250 is not set
|
||||
# CONFIG_HZ_256 is not set
|
||||
CONFIG_HZ_1000=y
|
||||
# CONFIG_HZ_1024 is not set
|
||||
CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
|
||||
CONFIG_HZ=1000
|
||||
CONFIG_PREEMPT_NONE=y
|
||||
# CONFIG_PREEMPT_VOLUNTARY is not set
|
||||
# CONFIG_PREEMPT is not set
|
||||
|
@ -41,8 +41,6 @@ CONFIG_MIPS_DB1500=y
|
||||
# CONFIG_MIPS_XXS1500 is not set
|
||||
# CONFIG_PNX8550_V2PCI is not set
|
||||
# CONFIG_PNX8550_JBS is not set
|
||||
# CONFIG_DDB5074 is not set
|
||||
# CONFIG_DDB5476 is not set
|
||||
# CONFIG_DDB5477 is not set
|
||||
# CONFIG_MACH_VR41XX is not set
|
||||
# CONFIG_PMC_YOSEMITE is not set
|
||||
@ -132,6 +130,15 @@ CONFIG_FLATMEM=y
|
||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||
# CONFIG_SPARSEMEM_STATIC is not set
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
# CONFIG_HZ_48 is not set
|
||||
# CONFIG_HZ_100 is not set
|
||||
# CONFIG_HZ_128 is not set
|
||||
# CONFIG_HZ_250 is not set
|
||||
# CONFIG_HZ_256 is not set
|
||||
CONFIG_HZ_1000=y
|
||||
# CONFIG_HZ_1024 is not set
|
||||
CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
|
||||
CONFIG_HZ=1000
|
||||
CONFIG_PREEMPT_NONE=y
|
||||
# CONFIG_PREEMPT_VOLUNTARY is not set
|
||||
# CONFIG_PREEMPT is not set
|
||||
|
@ -41,8 +41,6 @@ CONFIG_MIPS_DB1550=y
|
||||
# CONFIG_MIPS_XXS1500 is not set
|
||||
# CONFIG_PNX8550_V2PCI is not set
|
||||
# CONFIG_PNX8550_JBS is not set
|
||||
# CONFIG_DDB5074 is not set
|
||||
# CONFIG_DDB5476 is not set
|
||||
# CONFIG_DDB5477 is not set
|
||||
# CONFIG_MACH_VR41XX is not set
|
||||
# CONFIG_PMC_YOSEMITE is not set
|
||||
@ -131,6 +129,15 @@ CONFIG_FLATMEM=y
|
||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||
# CONFIG_SPARSEMEM_STATIC is not set
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
# CONFIG_HZ_48 is not set
|
||||
# CONFIG_HZ_100 is not set
|
||||
# CONFIG_HZ_128 is not set
|
||||
# CONFIG_HZ_250 is not set
|
||||
# CONFIG_HZ_256 is not set
|
||||
CONFIG_HZ_1000=y
|
||||
# CONFIG_HZ_1024 is not set
|
||||
CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
|
||||
CONFIG_HZ=1000
|
||||
CONFIG_PREEMPT_NONE=y
|
||||
# CONFIG_PREEMPT_VOLUNTARY is not set
|
||||
# CONFIG_PREEMPT is not set
|
||||
|
@ -41,8 +41,6 @@ CONFIG_MIPS=y
|
||||
# CONFIG_MIPS_XXS1500 is not set
|
||||
# CONFIG_PNX8550_V2PCI is not set
|
||||
# CONFIG_PNX8550_JBS is not set
|
||||
# CONFIG_DDB5074 is not set
|
||||
# CONFIG_DDB5476 is not set
|
||||
CONFIG_DDB5477=y
|
||||
# CONFIG_MACH_VR41XX is not set
|
||||
# CONFIG_PMC_YOSEMITE is not set
|
||||
@ -129,6 +127,15 @@ CONFIG_FLATMEM=y
|
||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||
# CONFIG_SPARSEMEM_STATIC is not set
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
# CONFIG_HZ_48 is not set
|
||||
# CONFIG_HZ_100 is not set
|
||||
# CONFIG_HZ_128 is not set
|
||||
# CONFIG_HZ_250 is not set
|
||||
# CONFIG_HZ_256 is not set
|
||||
CONFIG_HZ_1000=y
|
||||
# CONFIG_HZ_1024 is not set
|
||||
CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
|
||||
CONFIG_HZ=1000
|
||||
CONFIG_PREEMPT_NONE=y
|
||||
# CONFIG_PREEMPT_VOLUNTARY is not set
|
||||
# CONFIG_PREEMPT is not set
|
||||
|
@ -41,8 +41,6 @@ CONFIG_MACH_DECSTATION=y
|
||||
# CONFIG_MIPS_XXS1500 is not set
|
||||
# CONFIG_PNX8550_V2PCI is not set
|
||||
# CONFIG_PNX8550_JBS is not set
|
||||
# CONFIG_DDB5074 is not set
|
||||
# CONFIG_DDB5476 is not set
|
||||
# CONFIG_DDB5477 is not set
|
||||
# CONFIG_MACH_VR41XX is not set
|
||||
# CONFIG_PMC_YOSEMITE is not set
|
||||
@ -128,6 +126,17 @@ CONFIG_FLATMEM=y
|
||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||
# CONFIG_SPARSEMEM_STATIC is not set
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
# CONFIG_HZ_48 is not set
|
||||
# CONFIG_HZ_100 is not set
|
||||
CONFIG_HZ_128=y
|
||||
# CONFIG_HZ_250 is not set
|
||||
# CONFIG_HZ_256 is not set
|
||||
# CONFIG_HZ_1000 is not set
|
||||
# CONFIG_HZ_1024 is not set
|
||||
CONFIG_SYS_SUPPORTS_128HZ=y
|
||||
CONFIG_SYS_SUPPORTS_256HZ=y
|
||||
CONFIG_SYS_SUPPORTS_1024HZ=y
|
||||
CONFIG_HZ=128
|
||||
CONFIG_PREEMPT_NONE=y
|
||||
# CONFIG_PREEMPT_VOLUNTARY is not set
|
||||
# CONFIG_PREEMPT is not set
|
||||
|
@ -41,8 +41,6 @@ CONFIG_MIPS=y
|
||||
# CONFIG_MIPS_XXS1500 is not set
|
||||
# CONFIG_PNX8550_V2PCI is not set
|
||||
# CONFIG_PNX8550_JBS is not set
|
||||
# CONFIG_DDB5074 is not set
|
||||
# CONFIG_DDB5476 is not set
|
||||
# CONFIG_DDB5477 is not set
|
||||
CONFIG_MACH_VR41XX=y
|
||||
# CONFIG_PMC_YOSEMITE is not set
|
||||
@ -130,6 +128,15 @@ CONFIG_FLATMEM=y
|
||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||
# CONFIG_SPARSEMEM_STATIC is not set
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
# CONFIG_HZ_48 is not set
|
||||
# CONFIG_HZ_100 is not set
|
||||
# CONFIG_HZ_128 is not set
|
||||
# CONFIG_HZ_250 is not set
|
||||
# CONFIG_HZ_256 is not set
|
||||
CONFIG_HZ_1000=y
|
||||
# CONFIG_HZ_1024 is not set
|
||||
CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
|
||||
CONFIG_HZ=1000
|
||||
CONFIG_PREEMPT_NONE=y
|
||||
# CONFIG_PREEMPT_VOLUNTARY is not set
|
||||
# CONFIG_PREEMPT is not set
|
||||
|
1207
arch/mips/configs/emma2rh_defconfig
Normal file
1207
arch/mips/configs/emma2rh_defconfig
Normal file
File diff suppressed because it is too large
Load Diff
@ -41,8 +41,6 @@ CONFIG_MIPS_EV64120=y
|
||||
# CONFIG_MIPS_XXS1500 is not set
|
||||
# CONFIG_PNX8550_V2PCI is not set
|
||||
# CONFIG_PNX8550_JBS is not set
|
||||
# CONFIG_DDB5074 is not set
|
||||
# CONFIG_DDB5476 is not set
|
||||
# CONFIG_DDB5477 is not set
|
||||
# CONFIG_MACH_VR41XX is not set
|
||||
# CONFIG_PMC_YOSEMITE is not set
|
||||
@ -131,6 +129,15 @@ CONFIG_FLATMEM=y
|
||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||
# CONFIG_SPARSEMEM_STATIC is not set
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
# CONFIG_HZ_48 is not set
|
||||
# CONFIG_HZ_100 is not set
|
||||
# CONFIG_HZ_128 is not set
|
||||
# CONFIG_HZ_250 is not set
|
||||
# CONFIG_HZ_256 is not set
|
||||
CONFIG_HZ_1000=y
|
||||
# CONFIG_HZ_1024 is not set
|
||||
CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
|
||||
CONFIG_HZ=1000
|
||||
CONFIG_PREEMPT_NONE=y
|
||||
# CONFIG_PREEMPT_VOLUNTARY is not set
|
||||
# CONFIG_PREEMPT is not set
|
||||
|
@ -41,8 +41,6 @@ CONFIG_MIPS_EV96100=y
|
||||
# CONFIG_MIPS_XXS1500 is not set
|
||||
# CONFIG_PNX8550_V2PCI is not set
|
||||
# CONFIG_PNX8550_JBS is not set
|
||||
# CONFIG_DDB5074 is not set
|
||||
# CONFIG_DDB5476 is not set
|
||||
# CONFIG_DDB5477 is not set
|
||||
# CONFIG_MACH_VR41XX is not set
|
||||
# CONFIG_PMC_YOSEMITE is not set
|
||||
@ -135,6 +133,15 @@ CONFIG_FLATMEM=y
|
||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||
# CONFIG_SPARSEMEM_STATIC is not set
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
# CONFIG_HZ_48 is not set
|
||||
# CONFIG_HZ_100 is not set
|
||||
# CONFIG_HZ_128 is not set
|
||||
# CONFIG_HZ_250 is not set
|
||||
# CONFIG_HZ_256 is not set
|
||||
CONFIG_HZ_1000=y
|
||||
# CONFIG_HZ_1024 is not set
|
||||
CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
|
||||
CONFIG_HZ=1000
|
||||
CONFIG_PREEMPT_NONE=y
|
||||
# CONFIG_PREEMPT_VOLUNTARY is not set
|
||||
# CONFIG_PREEMPT is not set
|
||||
|
1220
arch/mips/configs/excite_defconfig
Normal file
1220
arch/mips/configs/excite_defconfig
Normal file
File diff suppressed because it is too large
Load Diff
@ -41,8 +41,6 @@ CONFIG_MIPS=y
|
||||
# CONFIG_MIPS_XXS1500 is not set
|
||||
# CONFIG_PNX8550_V2PCI is not set
|
||||
# CONFIG_PNX8550_JBS is not set
|
||||
# CONFIG_DDB5074 is not set
|
||||
# CONFIG_DDB5476 is not set
|
||||
# CONFIG_DDB5477 is not set
|
||||
# CONFIG_MACH_VR41XX is not set
|
||||
# CONFIG_PMC_YOSEMITE is not set
|
||||
@ -136,6 +134,15 @@ CONFIG_FLATMEM=y
|
||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||
# CONFIG_SPARSEMEM_STATIC is not set
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
# CONFIG_HZ_48 is not set
|
||||
# CONFIG_HZ_100 is not set
|
||||
# CONFIG_HZ_128 is not set
|
||||
# CONFIG_HZ_250 is not set
|
||||
# CONFIG_HZ_256 is not set
|
||||
CONFIG_HZ_1000=y
|
||||
# CONFIG_HZ_1024 is not set
|
||||
CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
|
||||
CONFIG_HZ=1000
|
||||
# CONFIG_PREEMPT_NONE is not set
|
||||
CONFIG_PREEMPT_VOLUNTARY=y
|
||||
# CONFIG_PREEMPT is not set
|
||||
|
@ -41,8 +41,6 @@ CONFIG_MIPS=y
|
||||
# CONFIG_MIPS_XXS1500 is not set
|
||||
# CONFIG_PNX8550_V2PCI is not set
|
||||
# CONFIG_PNX8550_JBS is not set
|
||||
# CONFIG_DDB5074 is not set
|
||||
# CONFIG_DDB5476 is not set
|
||||
# CONFIG_DDB5477 is not set
|
||||
# CONFIG_MACH_VR41XX is not set
|
||||
# CONFIG_PMC_YOSEMITE is not set
|
||||
@ -63,7 +61,7 @@ CONFIG_SGI_IP27=y
|
||||
# CONFIG_TOSHIBA_JMR3927 is not set
|
||||
# CONFIG_TOSHIBA_RBTX4927 is not set
|
||||
# CONFIG_TOSHIBA_RBTX4938 is not set
|
||||
# CONFIG_SGI_SN0_N_MODE is not set
|
||||
# CONFIG_SGI_SN_N_MODE is not set
|
||||
CONFIG_ARCH_DISCONTIGMEM_ENABLE=y
|
||||
CONFIG_NUMA=y
|
||||
# CONFIG_MAPPED_KERNEL is not set
|
||||
@ -135,6 +133,15 @@ CONFIG_FLAT_NODE_MEM_MAP=y
|
||||
CONFIG_NEED_MULTIPLE_NODES=y
|
||||
# CONFIG_SPARSEMEM_STATIC is not set
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
# CONFIG_HZ_48 is not set
|
||||
# CONFIG_HZ_100 is not set
|
||||
# CONFIG_HZ_128 is not set
|
||||
# CONFIG_HZ_250 is not set
|
||||
# CONFIG_HZ_256 is not set
|
||||
CONFIG_HZ_1000=y
|
||||
# CONFIG_HZ_1024 is not set
|
||||
CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
|
||||
CONFIG_HZ=1000
|
||||
CONFIG_MIGRATION=y
|
||||
CONFIG_SMP=y
|
||||
CONFIG_NR_CPUS=64
|
||||
|
@ -41,8 +41,6 @@ CONFIG_MIPS=y
|
||||
# CONFIG_MIPS_XXS1500 is not set
|
||||
# CONFIG_PNX8550_V2PCI is not set
|
||||
# CONFIG_PNX8550_JBS is not set
|
||||
# CONFIG_DDB5074 is not set
|
||||
# CONFIG_DDB5476 is not set
|
||||
# CONFIG_DDB5477 is not set
|
||||
# CONFIG_MACH_VR41XX is not set
|
||||
# CONFIG_PMC_YOSEMITE is not set
|
||||
@ -136,6 +134,15 @@ CONFIG_FLATMEM=y
|
||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||
# CONFIG_SPARSEMEM_STATIC is not set
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
# CONFIG_HZ_48 is not set
|
||||
# CONFIG_HZ_100 is not set
|
||||
# CONFIG_HZ_128 is not set
|
||||
# CONFIG_HZ_250 is not set
|
||||
# CONFIG_HZ_256 is not set
|
||||
CONFIG_HZ_1000=y
|
||||
# CONFIG_HZ_1024 is not set
|
||||
CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
|
||||
CONFIG_HZ=1000
|
||||
# CONFIG_PREEMPT_NONE is not set
|
||||
CONFIG_PREEMPT_VOLUNTARY=y
|
||||
# CONFIG_PREEMPT is not set
|
||||
|
@ -41,8 +41,6 @@ CONFIG_MIPS_ITE8172=y
|
||||
# CONFIG_MIPS_XXS1500 is not set
|
||||
# CONFIG_PNX8550_V2PCI is not set
|
||||
# CONFIG_PNX8550_JBS is not set
|
||||
# CONFIG_DDB5074 is not set
|
||||
# CONFIG_DDB5476 is not set
|
||||
# CONFIG_DDB5477 is not set
|
||||
# CONFIG_MACH_VR41XX is not set
|
||||
# CONFIG_PMC_YOSEMITE is not set
|
||||
@ -130,6 +128,15 @@ CONFIG_FLATMEM=y
|
||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||
# CONFIG_SPARSEMEM_STATIC is not set
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
# CONFIG_HZ_48 is not set
|
||||
# CONFIG_HZ_100 is not set
|
||||
# CONFIG_HZ_128 is not set
|
||||
# CONFIG_HZ_250 is not set
|
||||
# CONFIG_HZ_256 is not set
|
||||
CONFIG_HZ_1000=y
|
||||
# CONFIG_HZ_1024 is not set
|
||||
CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
|
||||
CONFIG_HZ=1000
|
||||
CONFIG_PREEMPT_NONE=y
|
||||
# CONFIG_PREEMPT_VOLUNTARY is not set
|
||||
# CONFIG_PREEMPT is not set
|
||||
|
@ -41,8 +41,6 @@ CONFIG_MIPS_IVR=y
|
||||
# CONFIG_MIPS_XXS1500 is not set
|
||||
# CONFIG_PNX8550_V2PCI is not set
|
||||
# CONFIG_PNX8550_JBS is not set
|
||||
# CONFIG_DDB5074 is not set
|
||||
# CONFIG_DDB5476 is not set
|
||||
# CONFIG_DDB5477 is not set
|
||||
# CONFIG_MACH_VR41XX is not set
|
||||
# CONFIG_PMC_YOSEMITE is not set
|
||||
@ -127,6 +125,15 @@ CONFIG_FLATMEM=y
|
||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||
# CONFIG_SPARSEMEM_STATIC is not set
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
# CONFIG_HZ_48 is not set
|
||||
# CONFIG_HZ_100 is not set
|
||||
# CONFIG_HZ_128 is not set
|
||||
# CONFIG_HZ_250 is not set
|
||||
# CONFIG_HZ_256 is not set
|
||||
CONFIG_HZ_1000=y
|
||||
# CONFIG_HZ_1024 is not set
|
||||
CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
|
||||
CONFIG_HZ=1000
|
||||
CONFIG_PREEMPT_NONE=y
|
||||
# CONFIG_PREEMPT_VOLUNTARY is not set
|
||||
# CONFIG_PREEMPT is not set
|
||||
|
@ -41,8 +41,6 @@ CONFIG_MOMENCO_JAGUAR_ATX=y
|
||||
# CONFIG_MIPS_XXS1500 is not set
|
||||
# CONFIG_PNX8550_V2PCI is not set
|
||||
# CONFIG_PNX8550_JBS is not set
|
||||
# CONFIG_DDB5074 is not set
|
||||
# CONFIG_DDB5476 is not set
|
||||
# CONFIG_DDB5477 is not set
|
||||
# CONFIG_MACH_VR41XX is not set
|
||||
# CONFIG_PMC_YOSEMITE is not set
|
||||
@ -136,6 +134,15 @@ CONFIG_FLATMEM=y
|
||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||
# CONFIG_SPARSEMEM_STATIC is not set
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
# CONFIG_HZ_48 is not set
|
||||
# CONFIG_HZ_100 is not set
|
||||
# CONFIG_HZ_128 is not set
|
||||
# CONFIG_HZ_250 is not set
|
||||
# CONFIG_HZ_256 is not set
|
||||
CONFIG_HZ_1000=y
|
||||
# CONFIG_HZ_1024 is not set
|
||||
CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
|
||||
CONFIG_HZ=1000
|
||||
# CONFIG_SMP is not set
|
||||
CONFIG_PREEMPT_NONE=y
|
||||
# CONFIG_PREEMPT_VOLUNTARY is not set
|
||||
|
@ -41,8 +41,6 @@ CONFIG_MIPS=y
|
||||
# CONFIG_MIPS_XXS1500 is not set
|
||||
# CONFIG_PNX8550_V2PCI is not set
|
||||
# CONFIG_PNX8550_JBS is not set
|
||||
# CONFIG_DDB5074 is not set
|
||||
# CONFIG_DDB5476 is not set
|
||||
# CONFIG_DDB5477 is not set
|
||||
# CONFIG_MACH_VR41XX is not set
|
||||
# CONFIG_PMC_YOSEMITE is not set
|
||||
@ -125,6 +123,15 @@ CONFIG_FLATMEM=y
|
||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||
# CONFIG_SPARSEMEM_STATIC is not set
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
# CONFIG_HZ_48 is not set
|
||||
# CONFIG_HZ_100 is not set
|
||||
# CONFIG_HZ_128 is not set
|
||||
# CONFIG_HZ_250 is not set
|
||||
# CONFIG_HZ_256 is not set
|
||||
CONFIG_HZ_1000=y
|
||||
# CONFIG_HZ_1024 is not set
|
||||
CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
|
||||
CONFIG_HZ=1000
|
||||
CONFIG_PREEMPT_NONE=y
|
||||
# CONFIG_PREEMPT_VOLUNTARY is not set
|
||||
# CONFIG_PREEMPT is not set
|
||||
|
@ -41,8 +41,6 @@ CONFIG_LASAT=y
|
||||
# CONFIG_MIPS_XXS1500 is not set
|
||||
# CONFIG_PNX8550_V2PCI is not set
|
||||
# CONFIG_PNX8550_JBS is not set
|
||||
# CONFIG_DDB5074 is not set
|
||||
# CONFIG_DDB5476 is not set
|
||||
# CONFIG_DDB5477 is not set
|
||||
# CONFIG_MACH_VR41XX is not set
|
||||
# CONFIG_PMC_YOSEMITE is not set
|
||||
@ -134,6 +132,15 @@ CONFIG_FLATMEM=y
|
||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||
# CONFIG_SPARSEMEM_STATIC is not set
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
# CONFIG_HZ_48 is not set
|
||||
# CONFIG_HZ_100 is not set
|
||||
# CONFIG_HZ_128 is not set
|
||||
# CONFIG_HZ_250 is not set
|
||||
# CONFIG_HZ_256 is not set
|
||||
CONFIG_HZ_1000=y
|
||||
# CONFIG_HZ_1024 is not set
|
||||
CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
|
||||
CONFIG_HZ=1000
|
||||
CONFIG_PREEMPT_NONE=y
|
||||
# CONFIG_PREEMPT_VOLUNTARY is not set
|
||||
# CONFIG_PREEMPT is not set
|
||||
|
@ -41,8 +41,6 @@ CONFIG_MIPS_MALTA=y
|
||||
# CONFIG_MIPS_XXS1500 is not set
|
||||
# CONFIG_PNX8550_V2PCI is not set
|
||||
# CONFIG_PNX8550_JBS is not set
|
||||
# CONFIG_DDB5074 is not set
|
||||
# CONFIG_DDB5476 is not set
|
||||
# CONFIG_DDB5477 is not set
|
||||
# CONFIG_MACH_VR41XX is not set
|
||||
# CONFIG_PMC_YOSEMITE is not set
|
||||
@ -154,6 +152,15 @@ CONFIG_FLATMEM=y
|
||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||
# CONFIG_SPARSEMEM_STATIC is not set
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
# CONFIG_HZ_48 is not set
|
||||
CONFIG_HZ_100=y
|
||||
# CONFIG_HZ_128 is not set
|
||||
# CONFIG_HZ_250 is not set
|
||||
# CONFIG_HZ_256 is not set
|
||||
# CONFIG_HZ_1000 is not set
|
||||
# CONFIG_HZ_1024 is not set
|
||||
CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
|
||||
CONFIG_HZ=100
|
||||
CONFIG_PREEMPT_NONE=y
|
||||
# CONFIG_PREEMPT_VOLUNTARY is not set
|
||||
# CONFIG_PREEMPT is not set
|
||||
|
@ -41,8 +41,6 @@ CONFIG_MIPS_SIM=y
|
||||
# CONFIG_MIPS_XXS1500 is not set
|
||||
# CONFIG_PNX8550_V2PCI is not set
|
||||
# CONFIG_PNX8550_JBS is not set
|
||||
# CONFIG_DDB5074 is not set
|
||||
# CONFIG_DDB5476 is not set
|
||||
# CONFIG_DDB5477 is not set
|
||||
# CONFIG_MACH_VR41XX is not set
|
||||
# CONFIG_PMC_YOSEMITE is not set
|
||||
@ -138,6 +136,15 @@ CONFIG_FLATMEM=y
|
||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||
# CONFIG_SPARSEMEM_STATIC is not set
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
# CONFIG_HZ_48 is not set
|
||||
# CONFIG_HZ_100 is not set
|
||||
# CONFIG_HZ_128 is not set
|
||||
# CONFIG_HZ_250 is not set
|
||||
# CONFIG_HZ_256 is not set
|
||||
CONFIG_HZ_1000=y
|
||||
# CONFIG_HZ_1024 is not set
|
||||
CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
|
||||
CONFIG_HZ=1000
|
||||
CONFIG_PREEMPT_NONE=y
|
||||
# CONFIG_PREEMPT_VOLUNTARY is not set
|
||||
# CONFIG_PREEMPT is not set
|
||||
|
@ -41,8 +41,6 @@ CONFIG_MIPS=y
|
||||
# CONFIG_MIPS_XXS1500 is not set
|
||||
# CONFIG_PNX8550_V2PCI is not set
|
||||
# CONFIG_PNX8550_JBS is not set
|
||||
# CONFIG_DDB5074 is not set
|
||||
# CONFIG_DDB5476 is not set
|
||||
# CONFIG_DDB5477 is not set
|
||||
CONFIG_MACH_VR41XX=y
|
||||
# CONFIG_PMC_YOSEMITE is not set
|
||||
@ -132,6 +130,15 @@ CONFIG_FLATMEM=y
|
||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||
# CONFIG_SPARSEMEM_STATIC is not set
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
# CONFIG_HZ_48 is not set
|
||||
# CONFIG_HZ_100 is not set
|
||||
# CONFIG_HZ_128 is not set
|
||||
# CONFIG_HZ_250 is not set
|
||||
# CONFIG_HZ_256 is not set
|
||||
CONFIG_HZ_1000=y
|
||||
# CONFIG_HZ_1024 is not set
|
||||
CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
|
||||
CONFIG_HZ=1000
|
||||
CONFIG_PREEMPT_NONE=y
|
||||
# CONFIG_PREEMPT_VOLUNTARY is not set
|
||||
# CONFIG_PREEMPT is not set
|
||||
|
@ -41,8 +41,6 @@ CONFIG_MOMENCO_OCELOT_3=y
|
||||
# CONFIG_MIPS_XXS1500 is not set
|
||||
# CONFIG_PNX8550_V2PCI is not set
|
||||
# CONFIG_PNX8550_JBS is not set
|
||||
# CONFIG_DDB5074 is not set
|
||||
# CONFIG_DDB5476 is not set
|
||||
# CONFIG_DDB5477 is not set
|
||||
# CONFIG_MACH_VR41XX is not set
|
||||
# CONFIG_PMC_YOSEMITE is not set
|
||||
@ -136,6 +134,15 @@ CONFIG_FLATMEM=y
|
||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||
# CONFIG_SPARSEMEM_STATIC is not set
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
# CONFIG_HZ_48 is not set
|
||||
# CONFIG_HZ_100 is not set
|
||||
# CONFIG_HZ_128 is not set
|
||||
# CONFIG_HZ_250 is not set
|
||||
# CONFIG_HZ_256 is not set
|
||||
CONFIG_HZ_1000=y
|
||||
# CONFIG_HZ_1024 is not set
|
||||
CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
|
||||
CONFIG_HZ=1000
|
||||
# CONFIG_SMP is not set
|
||||
CONFIG_PREEMPT_NONE=y
|
||||
# CONFIG_PREEMPT_VOLUNTARY is not set
|
||||
|
@ -41,8 +41,6 @@ CONFIG_MOMENCO_OCELOT_C=y
|
||||
# CONFIG_MIPS_XXS1500 is not set
|
||||
# CONFIG_PNX8550_V2PCI is not set
|
||||
# CONFIG_PNX8550_JBS is not set
|
||||
# CONFIG_DDB5074 is not set
|
||||
# CONFIG_DDB5476 is not set
|
||||
# CONFIG_DDB5477 is not set
|
||||
# CONFIG_MACH_VR41XX is not set
|
||||
# CONFIG_PMC_YOSEMITE is not set
|
||||
@ -133,6 +131,15 @@ CONFIG_FLATMEM=y
|
||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||
# CONFIG_SPARSEMEM_STATIC is not set
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
# CONFIG_HZ_48 is not set
|
||||
# CONFIG_HZ_100 is not set
|
||||
# CONFIG_HZ_128 is not set
|
||||
# CONFIG_HZ_250 is not set
|
||||
# CONFIG_HZ_256 is not set
|
||||
CONFIG_HZ_1000=y
|
||||
# CONFIG_HZ_1024 is not set
|
||||
CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
|
||||
CONFIG_HZ=1000
|
||||
CONFIG_PREEMPT_NONE=y
|
||||
# CONFIG_PREEMPT_VOLUNTARY is not set
|
||||
# CONFIG_PREEMPT is not set
|
||||
|
@ -41,8 +41,6 @@ CONFIG_MOMENCO_OCELOT=y
|
||||
# CONFIG_MIPS_XXS1500 is not set
|
||||
# CONFIG_PNX8550_V2PCI is not set
|
||||
# CONFIG_PNX8550_JBS is not set
|
||||
# CONFIG_DDB5074 is not set
|
||||
# CONFIG_DDB5476 is not set
|
||||
# CONFIG_DDB5477 is not set
|
||||
# CONFIG_MACH_VR41XX is not set
|
||||
# CONFIG_PMC_YOSEMITE is not set
|
||||
@ -137,6 +135,15 @@ CONFIG_FLATMEM=y
|
||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||
# CONFIG_SPARSEMEM_STATIC is not set
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
# CONFIG_HZ_48 is not set
|
||||
# CONFIG_HZ_100 is not set
|
||||
# CONFIG_HZ_128 is not set
|
||||
# CONFIG_HZ_250 is not set
|
||||
# CONFIG_HZ_256 is not set
|
||||
CONFIG_HZ_1000=y
|
||||
# CONFIG_HZ_1024 is not set
|
||||
CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
|
||||
CONFIG_HZ=1000
|
||||
CONFIG_PREEMPT_NONE=y
|
||||
# CONFIG_PREEMPT_VOLUNTARY is not set
|
||||
# CONFIG_PREEMPT is not set
|
||||
|
@ -41,8 +41,6 @@ CONFIG_MOMENCO_OCELOT_G=y
|
||||
# CONFIG_MIPS_XXS1500 is not set
|
||||
# CONFIG_PNX8550_V2PCI is not set
|
||||
# CONFIG_PNX8550_JBS is not set
|
||||
# CONFIG_DDB5074 is not set
|
||||
# CONFIG_DDB5476 is not set
|
||||
# CONFIG_DDB5477 is not set
|
||||
# CONFIG_MACH_VR41XX is not set
|
||||
# CONFIG_PMC_YOSEMITE is not set
|
||||
@ -136,6 +134,15 @@ CONFIG_FLATMEM=y
|
||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||
# CONFIG_SPARSEMEM_STATIC is not set
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
# CONFIG_HZ_48 is not set
|
||||
# CONFIG_HZ_100 is not set
|
||||
# CONFIG_HZ_128 is not set
|
||||
# CONFIG_HZ_250 is not set
|
||||
# CONFIG_HZ_256 is not set
|
||||
CONFIG_HZ_1000=y
|
||||
# CONFIG_HZ_1024 is not set
|
||||
CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
|
||||
CONFIG_HZ=1000
|
||||
CONFIG_PREEMPT_NONE=y
|
||||
# CONFIG_PREEMPT_VOLUNTARY is not set
|
||||
# CONFIG_PREEMPT is not set
|
||||
|
@ -41,8 +41,6 @@ CONFIG_MIPS_PB1100=y
|
||||
# CONFIG_MIPS_XXS1500 is not set
|
||||
# CONFIG_PNX8550_V2PCI is not set
|
||||
# CONFIG_PNX8550_JBS is not set
|
||||
# CONFIG_DDB5074 is not set
|
||||
# CONFIG_DDB5476 is not set
|
||||
# CONFIG_DDB5477 is not set
|
||||
# CONFIG_MACH_VR41XX is not set
|
||||
# CONFIG_PMC_YOSEMITE is not set
|
||||
@ -132,6 +130,15 @@ CONFIG_FLATMEM=y
|
||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||
# CONFIG_SPARSEMEM_STATIC is not set
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
# CONFIG_HZ_48 is not set
|
||||
# CONFIG_HZ_100 is not set
|
||||
# CONFIG_HZ_128 is not set
|
||||
# CONFIG_HZ_250 is not set
|
||||
# CONFIG_HZ_256 is not set
|
||||
CONFIG_HZ_1000=y
|
||||
# CONFIG_HZ_1024 is not set
|
||||
CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
|
||||
CONFIG_HZ=1000
|
||||
CONFIG_PREEMPT_NONE=y
|
||||
# CONFIG_PREEMPT_VOLUNTARY is not set
|
||||
# CONFIG_PREEMPT is not set
|
||||
|
@ -41,8 +41,6 @@ CONFIG_MIPS_PB1500=y
|
||||
# CONFIG_MIPS_XXS1500 is not set
|
||||
# CONFIG_PNX8550_V2PCI is not set
|
||||
# CONFIG_PNX8550_JBS is not set
|
||||
# CONFIG_DDB5074 is not set
|
||||
# CONFIG_DDB5476 is not set
|
||||
# CONFIG_DDB5477 is not set
|
||||
# CONFIG_MACH_VR41XX is not set
|
||||
# CONFIG_PMC_YOSEMITE is not set
|
||||
@ -131,6 +129,15 @@ CONFIG_FLATMEM=y
|
||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||
# CONFIG_SPARSEMEM_STATIC is not set
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
# CONFIG_HZ_48 is not set
|
||||
# CONFIG_HZ_100 is not set
|
||||
# CONFIG_HZ_128 is not set
|
||||
# CONFIG_HZ_250 is not set
|
||||
# CONFIG_HZ_256 is not set
|
||||
CONFIG_HZ_1000=y
|
||||
# CONFIG_HZ_1024 is not set
|
||||
CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
|
||||
CONFIG_HZ=1000
|
||||
CONFIG_PREEMPT_NONE=y
|
||||
# CONFIG_PREEMPT_VOLUNTARY is not set
|
||||
# CONFIG_PREEMPT is not set
|
||||
|
@ -41,8 +41,6 @@ CONFIG_MIPS_PB1550=y
|
||||
# CONFIG_MIPS_XXS1500 is not set
|
||||
# CONFIG_PNX8550_V2PCI is not set
|
||||
# CONFIG_PNX8550_JBS is not set
|
||||
# CONFIG_DDB5074 is not set
|
||||
# CONFIG_DDB5476 is not set
|
||||
# CONFIG_DDB5477 is not set
|
||||
# CONFIG_MACH_VR41XX is not set
|
||||
# CONFIG_PMC_YOSEMITE is not set
|
||||
@ -131,6 +129,15 @@ CONFIG_FLATMEM=y
|
||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||
# CONFIG_SPARSEMEM_STATIC is not set
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
# CONFIG_HZ_48 is not set
|
||||
# CONFIG_HZ_100 is not set
|
||||
# CONFIG_HZ_128 is not set
|
||||
# CONFIG_HZ_250 is not set
|
||||
# CONFIG_HZ_256 is not set
|
||||
CONFIG_HZ_1000=y
|
||||
# CONFIG_HZ_1024 is not set
|
||||
CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
|
||||
CONFIG_HZ=1000
|
||||
CONFIG_PREEMPT_NONE=y
|
||||
# CONFIG_PREEMPT_VOLUNTARY is not set
|
||||
# CONFIG_PREEMPT is not set
|
||||
|
@ -41,8 +41,6 @@ CONFIG_MIPS=y
|
||||
# CONFIG_MIPS_XXS1500 is not set
|
||||
# CONFIG_PNX8550_V2PCI is not set
|
||||
CONFIG_PNX8550_JBS=y
|
||||
# CONFIG_DDB5074 is not set
|
||||
# CONFIG_DDB5476 is not set
|
||||
# CONFIG_DDB5477 is not set
|
||||
# CONFIG_MACH_VR41XX is not set
|
||||
# CONFIG_PMC_YOSEMITE is not set
|
||||
@ -130,6 +128,15 @@ CONFIG_FLATMEM=y
|
||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||
# CONFIG_SPARSEMEM_STATIC is not set
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
# CONFIG_HZ_48 is not set
|
||||
# CONFIG_HZ_100 is not set
|
||||
# CONFIG_HZ_128 is not set
|
||||
# CONFIG_HZ_250 is not set
|
||||
# CONFIG_HZ_256 is not set
|
||||
CONFIG_HZ_1000=y
|
||||
# CONFIG_HZ_1024 is not set
|
||||
CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
|
||||
CONFIG_HZ=1000
|
||||
CONFIG_PREEMPT_NONE=y
|
||||
# CONFIG_PREEMPT_VOLUNTARY is not set
|
||||
# CONFIG_PREEMPT is not set
|
||||
|
@ -41,8 +41,6 @@ CONFIG_MIPS=y
|
||||
# CONFIG_MIPS_XXS1500 is not set
|
||||
CONFIG_PNX8550_V2PCI=y
|
||||
# CONFIG_PNX8550_JBS is not set
|
||||
# CONFIG_DDB5074 is not set
|
||||
# CONFIG_DDB5476 is not set
|
||||
# CONFIG_DDB5477 is not set
|
||||
# CONFIG_MACH_VR41XX is not set
|
||||
# CONFIG_PMC_YOSEMITE is not set
|
||||
@ -130,6 +128,15 @@ CONFIG_FLATMEM=y
|
||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||
# CONFIG_SPARSEMEM_STATIC is not set
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
# CONFIG_HZ_48 is not set
|
||||
# CONFIG_HZ_100 is not set
|
||||
# CONFIG_HZ_128 is not set
|
||||
# CONFIG_HZ_250 is not set
|
||||
# CONFIG_HZ_256 is not set
|
||||
CONFIG_HZ_1000=y
|
||||
# CONFIG_HZ_1024 is not set
|
||||
CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
|
||||
CONFIG_HZ=1000
|
||||
CONFIG_PREEMPT_NONE=y
|
||||
# CONFIG_PREEMPT_VOLUNTARY is not set
|
||||
# CONFIG_PREEMPT is not set
|
||||
|
@ -41,8 +41,6 @@ CONFIG_MIPS=y
|
||||
# CONFIG_MIPS_XXS1500 is not set
|
||||
# CONFIG_PNX8550_V2PCI is not set
|
||||
# CONFIG_PNX8550_JBS is not set
|
||||
# CONFIG_DDB5074 is not set
|
||||
# CONFIG_DDB5476 is not set
|
||||
# CONFIG_DDB5477 is not set
|
||||
# CONFIG_MACH_VR41XX is not set
|
||||
# CONFIG_PMC_YOSEMITE is not set
|
||||
@ -128,6 +126,15 @@ CONFIG_FLAT_NODE_MEM_MAP=y
|
||||
# CONFIG_SPARSEMEM_STATIC is not set
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
# CONFIG_SMP is not set
|
||||
# CONFIG_HZ_48 is not set
|
||||
CONFIG_HZ_100=y
|
||||
# CONFIG_HZ_128 is not set
|
||||
# CONFIG_HZ_250 is not set
|
||||
# CONFIG_HZ_256 is not set
|
||||
# CONFIG_HZ_1000 is not set
|
||||
# CONFIG_HZ_1024 is not set
|
||||
CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
|
||||
CONFIG_HZ=100
|
||||
CONFIG_PREEMPT_NONE=y
|
||||
# CONFIG_PREEMPT_VOLUNTARY is not set
|
||||
# CONFIG_PREEMPT is not set
|
||||
|
@ -41,8 +41,6 @@ CONFIG_MIPS=y
|
||||
# CONFIG_MIPS_XXS1500 is not set
|
||||
# CONFIG_PNX8550_V2PCI is not set
|
||||
# CONFIG_PNX8550_JBS is not set
|
||||
# CONFIG_DDB5074 is not set
|
||||
# CONFIG_DDB5476 is not set
|
||||
# CONFIG_DDB5477 is not set
|
||||
# CONFIG_MACH_VR41XX is not set
|
||||
# CONFIG_PMC_YOSEMITE is not set
|
||||
@ -138,6 +136,15 @@ CONFIG_FLATMEM=y
|
||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||
# CONFIG_SPARSEMEM_STATIC is not set
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
# CONFIG_HZ_48 is not set
|
||||
# CONFIG_HZ_100 is not set
|
||||
# CONFIG_HZ_128 is not set
|
||||
# CONFIG_HZ_250 is not set
|
||||
# CONFIG_HZ_256 is not set
|
||||
CONFIG_HZ_1000=y
|
||||
# CONFIG_HZ_1024 is not set
|
||||
CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
|
||||
CONFIG_HZ=1000
|
||||
CONFIG_PREEMPT_NONE=y
|
||||
# CONFIG_PREEMPT_VOLUNTARY is not set
|
||||
# CONFIG_PREEMPT is not set
|
||||
|
@ -41,8 +41,6 @@ CONFIG_MIPS=y
|
||||
# CONFIG_MIPS_XXS1500 is not set
|
||||
# CONFIG_PNX8550_V2PCI is not set
|
||||
# CONFIG_PNX8550_JBS is not set
|
||||
# CONFIG_DDB5074 is not set
|
||||
# CONFIG_DDB5476 is not set
|
||||
# CONFIG_DDB5477 is not set
|
||||
# CONFIG_MACH_VR41XX is not set
|
||||
# CONFIG_PMC_YOSEMITE is not set
|
||||
@ -138,6 +136,15 @@ CONFIG_FLATMEM=y
|
||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||
# CONFIG_SPARSEMEM_STATIC is not set
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
# CONFIG_HZ_48 is not set
|
||||
# CONFIG_HZ_100 is not set
|
||||
# CONFIG_HZ_128 is not set
|
||||
# CONFIG_HZ_250 is not set
|
||||
# CONFIG_HZ_256 is not set
|
||||
CONFIG_HZ_1000=y
|
||||
# CONFIG_HZ_1024 is not set
|
||||
CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
|
||||
CONFIG_HZ=1000
|
||||
# CONFIG_PREEMPT_NONE is not set
|
||||
CONFIG_PREEMPT_VOLUNTARY=y
|
||||
# CONFIG_PREEMPT is not set
|
||||
|
@ -41,8 +41,6 @@ CONFIG_MIPS=y
|
||||
# CONFIG_MIPS_XXS1500 is not set
|
||||
# CONFIG_PNX8550_V2PCI is not set
|
||||
# CONFIG_PNX8550_JBS is not set
|
||||
# CONFIG_DDB5074 is not set
|
||||
# CONFIG_DDB5476 is not set
|
||||
# CONFIG_DDB5477 is not set
|
||||
# CONFIG_MACH_VR41XX is not set
|
||||
# CONFIG_PMC_YOSEMITE is not set
|
||||
@ -149,6 +147,15 @@ CONFIG_FLATMEM=y
|
||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||
# CONFIG_SPARSEMEM_STATIC is not set
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
# CONFIG_HZ_48 is not set
|
||||
# CONFIG_HZ_100 is not set
|
||||
# CONFIG_HZ_128 is not set
|
||||
# CONFIG_HZ_250 is not set
|
||||
# CONFIG_HZ_256 is not set
|
||||
CONFIG_HZ_1000=y
|
||||
# CONFIG_HZ_1024 is not set
|
||||
CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
|
||||
CONFIG_HZ=1000
|
||||
CONFIG_SMP=y
|
||||
CONFIG_NR_CPUS=2
|
||||
CONFIG_PREEMPT_NONE=y
|
||||
|
@ -41,8 +41,6 @@ CONFIG_MIPS_SEAD=y
|
||||
# CONFIG_MIPS_XXS1500 is not set
|
||||
# CONFIG_PNX8550_V2PCI is not set
|
||||
# CONFIG_PNX8550_JBS is not set
|
||||
# CONFIG_DDB5074 is not set
|
||||
# CONFIG_DDB5476 is not set
|
||||
# CONFIG_DDB5477 is not set
|
||||
# CONFIG_MACH_VR41XX is not set
|
||||
# CONFIG_PMC_YOSEMITE is not set
|
||||
@ -134,6 +132,15 @@ CONFIG_FLATMEM=y
|
||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||
# CONFIG_SPARSEMEM_STATIC is not set
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
# CONFIG_HZ_48 is not set
|
||||
# CONFIG_HZ_100 is not set
|
||||
# CONFIG_HZ_128 is not set
|
||||
# CONFIG_HZ_250 is not set
|
||||
# CONFIG_HZ_256 is not set
|
||||
CONFIG_HZ_1000=y
|
||||
# CONFIG_HZ_1024 is not set
|
||||
CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
|
||||
CONFIG_HZ=1000
|
||||
CONFIG_PREEMPT_NONE=y
|
||||
# CONFIG_PREEMPT_VOLUNTARY is not set
|
||||
# CONFIG_PREEMPT is not set
|
||||
|
@ -41,8 +41,6 @@ CONFIG_MIPS=y
|
||||
# CONFIG_MIPS_XXS1500 is not set
|
||||
# CONFIG_PNX8550_V2PCI is not set
|
||||
# CONFIG_PNX8550_JBS is not set
|
||||
# CONFIG_DDB5074 is not set
|
||||
# CONFIG_DDB5476 is not set
|
||||
# CONFIG_DDB5477 is not set
|
||||
CONFIG_MACH_VR41XX=y
|
||||
# CONFIG_PMC_YOSEMITE is not set
|
||||
@ -134,6 +132,15 @@ CONFIG_FLATMEM=y
|
||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||
# CONFIG_SPARSEMEM_STATIC is not set
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
# CONFIG_HZ_48 is not set
|
||||
# CONFIG_HZ_100 is not set
|
||||
# CONFIG_HZ_128 is not set
|
||||
# CONFIG_HZ_250 is not set
|
||||
# CONFIG_HZ_256 is not set
|
||||
CONFIG_HZ_1000=y
|
||||
# CONFIG_HZ_1024 is not set
|
||||
CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
|
||||
CONFIG_HZ=1000
|
||||
CONFIG_PREEMPT_NONE=y
|
||||
# CONFIG_PREEMPT_VOLUNTARY is not set
|
||||
# CONFIG_PREEMPT is not set
|
||||
|
@ -41,8 +41,6 @@ CONFIG_MIPS=y
|
||||
# CONFIG_MIPS_XXS1500 is not set
|
||||
# CONFIG_PNX8550_V2PCI is not set
|
||||
# CONFIG_PNX8550_JBS is not set
|
||||
# CONFIG_DDB5074 is not set
|
||||
# CONFIG_DDB5476 is not set
|
||||
# CONFIG_DDB5477 is not set
|
||||
CONFIG_MACH_VR41XX=y
|
||||
# CONFIG_PMC_YOSEMITE is not set
|
||||
@ -134,6 +132,15 @@ CONFIG_FLATMEM=y
|
||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||
# CONFIG_SPARSEMEM_STATIC is not set
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
# CONFIG_HZ_48 is not set
|
||||
# CONFIG_HZ_100 is not set
|
||||
# CONFIG_HZ_128 is not set
|
||||
# CONFIG_HZ_250 is not set
|
||||
# CONFIG_HZ_256 is not set
|
||||
CONFIG_HZ_1000=y
|
||||
# CONFIG_HZ_1024 is not set
|
||||
CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
|
||||
CONFIG_HZ=1000
|
||||
CONFIG_PREEMPT_NONE=y
|
||||
# CONFIG_PREEMPT_VOLUNTARY is not set
|
||||
# CONFIG_PREEMPT is not set
|
||||
|
@ -41,8 +41,6 @@ CONFIG_MIPS=y
|
||||
# CONFIG_MIPS_XXS1500 is not set
|
||||
# CONFIG_PNX8550_V2PCI is not set
|
||||
# CONFIG_PNX8550_JBS is not set
|
||||
# CONFIG_DDB5074 is not set
|
||||
# CONFIG_DDB5476 is not set
|
||||
# CONFIG_DDB5477 is not set
|
||||
CONFIG_MACH_VR41XX=y
|
||||
# CONFIG_PMC_YOSEMITE is not set
|
||||
@ -135,6 +133,15 @@ CONFIG_FLATMEM=y
|
||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||
# CONFIG_SPARSEMEM_STATIC is not set
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
# CONFIG_HZ_48 is not set
|
||||
# CONFIG_HZ_100 is not set
|
||||
# CONFIG_HZ_128 is not set
|
||||
# CONFIG_HZ_250 is not set
|
||||
# CONFIG_HZ_256 is not set
|
||||
CONFIG_HZ_1000=y
|
||||
# CONFIG_HZ_1024 is not set
|
||||
CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
|
||||
CONFIG_HZ=1000
|
||||
CONFIG_PREEMPT_NONE=y
|
||||
# CONFIG_PREEMPT_VOLUNTARY is not set
|
||||
# CONFIG_PREEMPT is not set
|
||||
|
@ -41,8 +41,6 @@ CONFIG_MIPS=y
|
||||
# CONFIG_MIPS_XXS1500 is not set
|
||||
# CONFIG_PNX8550_V2PCI is not set
|
||||
# CONFIG_PNX8550_JBS is not set
|
||||
# CONFIG_DDB5074 is not set
|
||||
# CONFIG_DDB5476 is not set
|
||||
# CONFIG_DDB5477 is not set
|
||||
CONFIG_MACH_VR41XX=y
|
||||
# CONFIG_PMC_YOSEMITE is not set
|
||||
@ -130,6 +128,15 @@ CONFIG_FLATMEM=y
|
||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||
# CONFIG_SPARSEMEM_STATIC is not set
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
# CONFIG_HZ_48 is not set
|
||||
# CONFIG_HZ_100 is not set
|
||||
# CONFIG_HZ_128 is not set
|
||||
# CONFIG_HZ_250 is not set
|
||||
# CONFIG_HZ_256 is not set
|
||||
CONFIG_HZ_1000=y
|
||||
# CONFIG_HZ_1024 is not set
|
||||
CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
|
||||
CONFIG_HZ=1000
|
||||
CONFIG_PREEMPT_NONE=y
|
||||
# CONFIG_PREEMPT_VOLUNTARY is not set
|
||||
# CONFIG_PREEMPT is not set
|
||||
|
@ -1,7 +1,7 @@
|
||||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.17-rc2
|
||||
# Mon Apr 24 14:51:00 2006
|
||||
# Linux kernel version: 2.6.16.11
|
||||
# Fri May 5 17:11:22 2006
|
||||
#
|
||||
CONFIG_MIPS=y
|
||||
|
||||
@ -32,6 +32,7 @@ CONFIG_MIPS=y
|
||||
# CONFIG_MIPS_ATLAS is not set
|
||||
# CONFIG_MIPS_MALTA is not set
|
||||
# CONFIG_MIPS_SEAD is not set
|
||||
CONFIG_WR_PPMC=y
|
||||
# CONFIG_MIPS_SIM is not set
|
||||
# CONFIG_MOMENCO_JAGUAR_ATX is not set
|
||||
# CONFIG_MOMENCO_OCELOT is not set
|
||||
@ -41,8 +42,6 @@ CONFIG_MIPS=y
|
||||
# CONFIG_MIPS_XXS1500 is not set
|
||||
# CONFIG_PNX8550_V2PCI is not set
|
||||
# CONFIG_PNX8550_JBS is not set
|
||||
# CONFIG_DDB5074 is not set
|
||||
CONFIG_DDB5476=y
|
||||
# CONFIG_DDB5477 is not set
|
||||
# CONFIG_MACH_VR41XX is not set
|
||||
# CONFIG_PMC_YOSEMITE is not set
|
||||
@ -64,24 +63,23 @@ CONFIG_DDB5476=y
|
||||
# CONFIG_TOSHIBA_RBTX4927 is not set
|
||||
# CONFIG_TOSHIBA_RBTX4938 is not set
|
||||
CONFIG_RWSEM_GENERIC_SPINLOCK=y
|
||||
CONFIG_GENERIC_FIND_NEXT_BIT=y
|
||||
CONFIG_GENERIC_HWEIGHT=y
|
||||
CONFIG_GENERIC_CALIBRATE_DELAY=y
|
||||
CONFIG_DMA_NONCOHERENT=y
|
||||
CONFIG_DMA_NEED_PCI_MAP_STATE=y
|
||||
CONFIG_I8259=y
|
||||
# CONFIG_CPU_BIG_ENDIAN is not set
|
||||
CONFIG_CPU_LITTLE_ENDIAN=y
|
||||
CONFIG_CPU_BIG_ENDIAN=y
|
||||
# CONFIG_CPU_LITTLE_ENDIAN is not set
|
||||
CONFIG_SYS_SUPPORTS_BIG_ENDIAN=y
|
||||
CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
|
||||
CONFIG_IRQ_CPU=y
|
||||
CONFIG_DDB5XXX_COMMON=y
|
||||
CONFIG_MIPS_GT64120=y
|
||||
CONFIG_SWAP_IO_SPACE=y
|
||||
CONFIG_BOOT_ELF32=y
|
||||
CONFIG_MIPS_L1_CACHE_SHIFT=5
|
||||
CONFIG_HAVE_STD_PC_SERIAL_PORT=y
|
||||
|
||||
#
|
||||
# CPU selection
|
||||
#
|
||||
# CONFIG_CPU_MIPS32_R1 is not set
|
||||
CONFIG_CPU_MIPS32_R1=y
|
||||
# CONFIG_CPU_MIPS32_R2 is not set
|
||||
# CONFIG_CPU_MIPS64_R1 is not set
|
||||
# CONFIG_CPU_MIPS64_R2 is not set
|
||||
@ -92,7 +90,7 @@ CONFIG_HAVE_STD_PC_SERIAL_PORT=y
|
||||
# CONFIG_CPU_R4X00 is not set
|
||||
# CONFIG_CPU_TX49XX is not set
|
||||
# CONFIG_CPU_R5000 is not set
|
||||
CONFIG_CPU_R5432=y
|
||||
# CONFIG_CPU_R5432 is not set
|
||||
# CONFIG_CPU_R6000 is not set
|
||||
# CONFIG_CPU_NEVADA is not set
|
||||
# CONFIG_CPU_R8000 is not set
|
||||
@ -100,11 +98,16 @@ CONFIG_CPU_R5432=y
|
||||
# CONFIG_CPU_RM7000 is not set
|
||||
# CONFIG_CPU_RM9000 is not set
|
||||
# CONFIG_CPU_SB1 is not set
|
||||
CONFIG_SYS_HAS_CPU_R5432=y
|
||||
CONFIG_SYS_HAS_CPU_MIPS32_R1=y
|
||||
CONFIG_SYS_HAS_CPU_MIPS32_R2=y
|
||||
CONFIG_SYS_HAS_CPU_MIPS64_R1=y
|
||||
CONFIG_SYS_HAS_CPU_NEVADA=y
|
||||
CONFIG_SYS_HAS_CPU_RM7000=y
|
||||
CONFIG_CPU_MIPS32=y
|
||||
CONFIG_CPU_MIPSR1=y
|
||||
CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
|
||||
CONFIG_SYS_SUPPORTS_64BIT_KERNEL=y
|
||||
CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
|
||||
CONFIG_CPU_SUPPORTS_64BIT_KERNEL=y
|
||||
|
||||
#
|
||||
# Kernel type
|
||||
@ -115,11 +118,15 @@ CONFIG_PAGE_SIZE_4KB=y
|
||||
# CONFIG_PAGE_SIZE_8KB is not set
|
||||
# CONFIG_PAGE_SIZE_16KB is not set
|
||||
# CONFIG_PAGE_SIZE_64KB is not set
|
||||
CONFIG_CPU_HAS_PREFETCH=y
|
||||
# CONFIG_MIPS_MT is not set
|
||||
# CONFIG_64BIT_PHYS_ADDR is not set
|
||||
# CONFIG_CPU_ADVANCED is not set
|
||||
CONFIG_CPU_HAS_LLSC=y
|
||||
CONFIG_CPU_HAS_SYNC=y
|
||||
CONFIG_GENERIC_HARDIRQS=y
|
||||
CONFIG_GENERIC_IRQ_PROBE=y
|
||||
CONFIG_CPU_SUPPORTS_HIGHMEM=y
|
||||
CONFIG_ARCH_FLATMEM_ENABLE=y
|
||||
CONFIG_SELECT_MEMORY_MODEL=y
|
||||
CONFIG_FLATMEM_MANUAL=y
|
||||
@ -129,6 +136,15 @@ CONFIG_FLATMEM=y
|
||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||
# CONFIG_SPARSEMEM_STATIC is not set
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
# CONFIG_HZ_48 is not set
|
||||
# CONFIG_HZ_100 is not set
|
||||
# CONFIG_HZ_128 is not set
|
||||
# CONFIG_HZ_250 is not set
|
||||
# CONFIG_HZ_256 is not set
|
||||
CONFIG_HZ_1000=y
|
||||
# CONFIG_HZ_1024 is not set
|
||||
CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
|
||||
CONFIG_HZ=1000
|
||||
CONFIG_PREEMPT_NONE=y
|
||||
# CONFIG_PREEMPT_VOLUNTARY is not set
|
||||
# CONFIG_PREEMPT is not set
|
||||
@ -145,27 +161,31 @@ CONFIG_INIT_ENV_ARG_LIMIT=32
|
||||
#
|
||||
CONFIG_LOCALVERSION=""
|
||||
CONFIG_LOCALVERSION_AUTO=y
|
||||
CONFIG_SWAP=y
|
||||
# CONFIG_SWAP is not set
|
||||
CONFIG_SYSVIPC=y
|
||||
# CONFIG_POSIX_MQUEUE is not set
|
||||
# CONFIG_BSD_PROCESS_ACCT is not set
|
||||
CONFIG_BSD_PROCESS_ACCT=y
|
||||
# CONFIG_BSD_PROCESS_ACCT_V3 is not set
|
||||
CONFIG_SYSCTL=y
|
||||
# CONFIG_AUDIT is not set
|
||||
# CONFIG_IKCONFIG is not set
|
||||
CONFIG_RELAY=y
|
||||
CONFIG_INITRAMFS_SOURCE=""
|
||||
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
|
||||
CONFIG_EMBEDDED=y
|
||||
CONFIG_KALLSYMS=y
|
||||
# CONFIG_KALLSYMS_EXTRA_PASS is not set
|
||||
CONFIG_KALLSYMS_EXTRA_PASS=y
|
||||
CONFIG_HOTPLUG=y
|
||||
CONFIG_PRINTK=y
|
||||
CONFIG_BUG=y
|
||||
CONFIG_ELF_CORE=y
|
||||
CONFIG_BASE_FULL=y
|
||||
CONFIG_FUTEX=y
|
||||
CONFIG_EPOLL=y
|
||||
# CONFIG_EPOLL is not set
|
||||
CONFIG_SHMEM=y
|
||||
CONFIG_CC_ALIGN_FUNCTIONS=0
|
||||
CONFIG_CC_ALIGN_LABELS=0
|
||||
CONFIG_CC_ALIGN_LOOPS=0
|
||||
CONFIG_CC_ALIGN_JUMPS=0
|
||||
CONFIG_SLAB=y
|
||||
# CONFIG_TINY_SHMEM is not set
|
||||
CONFIG_BASE_SMALL=0
|
||||
@ -174,14 +194,18 @@ CONFIG_BASE_SMALL=0
|
||||
#
|
||||
# Loadable module support
|
||||
#
|
||||
# CONFIG_MODULES is not set
|
||||
CONFIG_MODULES=y
|
||||
CONFIG_MODULE_UNLOAD=y
|
||||
# CONFIG_MODULE_FORCE_UNLOAD is not set
|
||||
CONFIG_OBSOLETE_MODPARM=y
|
||||
CONFIG_MODVERSIONS=y
|
||||
CONFIG_MODULE_SRCVERSION_ALL=y
|
||||
# CONFIG_KMOD is not set
|
||||
|
||||
#
|
||||
# Block layer
|
||||
#
|
||||
# CONFIG_LBD is not set
|
||||
# CONFIG_BLK_DEV_IO_TRACE is not set
|
||||
# CONFIG_LSF is not set
|
||||
|
||||
#
|
||||
# IO Schedulers
|
||||
@ -201,7 +225,7 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
|
||||
#
|
||||
CONFIG_HW_HAS_PCI=y
|
||||
CONFIG_PCI=y
|
||||
CONFIG_ISA=y
|
||||
CONFIG_PCI_LEGACY_PROC=y
|
||||
CONFIG_MMU=y
|
||||
|
||||
#
|
||||
@ -212,13 +236,16 @@ CONFIG_MMU=y
|
||||
#
|
||||
# PCI Hotplug Support
|
||||
#
|
||||
# CONFIG_HOTPLUG_PCI is not set
|
||||
CONFIG_HOTPLUG_PCI=y
|
||||
# CONFIG_HOTPLUG_PCI_FAKE is not set
|
||||
# CONFIG_HOTPLUG_PCI_CPCI is not set
|
||||
# CONFIG_HOTPLUG_PCI_SHPC is not set
|
||||
|
||||
#
|
||||
# Executable file formats
|
||||
#
|
||||
CONFIG_BINFMT_ELF=y
|
||||
# CONFIG_BINFMT_MISC is not set
|
||||
CONFIG_BINFMT_MISC=y
|
||||
CONFIG_TRAD_SIGNALS=y
|
||||
|
||||
#
|
||||
@ -231,35 +258,33 @@ CONFIG_NET=y
|
||||
#
|
||||
# CONFIG_NETDEBUG is not set
|
||||
CONFIG_PACKET=y
|
||||
# CONFIG_PACKET_MMAP is not set
|
||||
CONFIG_PACKET_MMAP=y
|
||||
CONFIG_UNIX=y
|
||||
CONFIG_XFRM=y
|
||||
CONFIG_XFRM_USER=y
|
||||
CONFIG_NET_KEY=y
|
||||
# CONFIG_NET_KEY is not set
|
||||
CONFIG_INET=y
|
||||
# CONFIG_IP_MULTICAST is not set
|
||||
CONFIG_IP_MULTICAST=y
|
||||
# CONFIG_IP_ADVANCED_ROUTER is not set
|
||||
CONFIG_IP_FIB_HASH=y
|
||||
CONFIG_IP_PNP=y
|
||||
# CONFIG_IP_PNP_DHCP is not set
|
||||
CONFIG_IP_PNP_DHCP=y
|
||||
CONFIG_IP_PNP_BOOTP=y
|
||||
# CONFIG_IP_PNP_RARP is not set
|
||||
CONFIG_IP_PNP_RARP=y
|
||||
# CONFIG_NET_IPIP is not set
|
||||
# CONFIG_NET_IPGRE is not set
|
||||
# CONFIG_ARPD is not set
|
||||
CONFIG_IP_MROUTE=y
|
||||
# CONFIG_IP_PIMSM_V1 is not set
|
||||
# CONFIG_IP_PIMSM_V2 is not set
|
||||
CONFIG_ARPD=y
|
||||
# CONFIG_SYN_COOKIES is not set
|
||||
# CONFIG_INET_AH is not set
|
||||
# CONFIG_INET_ESP is not set
|
||||
# CONFIG_INET_IPCOMP is not set
|
||||
# CONFIG_INET_XFRM_TUNNEL is not set
|
||||
# CONFIG_INET_TUNNEL is not set
|
||||
CONFIG_INET_DIAG=y
|
||||
CONFIG_INET_TCP_DIAG=y
|
||||
# CONFIG_TCP_CONG_ADVANCED is not set
|
||||
CONFIG_TCP_CONG_BIC=y
|
||||
# CONFIG_IPV6 is not set
|
||||
# CONFIG_INET6_XFRM_TUNNEL is not set
|
||||
# CONFIG_INET6_TUNNEL is not set
|
||||
# CONFIG_NETFILTER is not set
|
||||
|
||||
#
|
||||
@ -301,13 +326,7 @@ CONFIG_TCP_CONG_BIC=y
|
||||
# CONFIG_HAMRADIO is not set
|
||||
# CONFIG_IRDA is not set
|
||||
# CONFIG_BT is not set
|
||||
CONFIG_IEEE80211=y
|
||||
# CONFIG_IEEE80211_DEBUG is not set
|
||||
CONFIG_IEEE80211_CRYPT_WEP=y
|
||||
CONFIG_IEEE80211_CRYPT_CCMP=y
|
||||
CONFIG_IEEE80211_SOFTMAC=y
|
||||
# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
|
||||
CONFIG_WIRELESS_EXT=y
|
||||
# CONFIG_IEEE80211 is not set
|
||||
|
||||
#
|
||||
# Device Drivers
|
||||
@ -318,13 +337,12 @@ CONFIG_WIRELESS_EXT=y
|
||||
#
|
||||
CONFIG_STANDALONE=y
|
||||
CONFIG_PREVENT_FIRMWARE_BUILD=y
|
||||
CONFIG_FW_LOADER=y
|
||||
# CONFIG_FW_LOADER is not set
|
||||
|
||||
#
|
||||
# Connector - unified userspace <-> kernelspace linker
|
||||
#
|
||||
CONFIG_CONNECTOR=y
|
||||
CONFIG_PROC_EVENTS=y
|
||||
# CONFIG_CONNECTOR is not set
|
||||
|
||||
#
|
||||
# Memory Technology Devices (MTD)
|
||||
@ -339,7 +357,6 @@ CONFIG_PROC_EVENTS=y
|
||||
#
|
||||
# Plug and Play support
|
||||
#
|
||||
# CONFIG_PNP is not set
|
||||
|
||||
#
|
||||
# Block devices
|
||||
@ -352,52 +369,24 @@ CONFIG_PROC_EVENTS=y
|
||||
# CONFIG_BLK_DEV_LOOP is not set
|
||||
# CONFIG_BLK_DEV_NBD is not set
|
||||
# CONFIG_BLK_DEV_SX8 is not set
|
||||
# CONFIG_BLK_DEV_RAM is not set
|
||||
# CONFIG_BLK_DEV_INITRD is not set
|
||||
CONFIG_CDROM_PKTCDVD=y
|
||||
CONFIG_CDROM_PKTCDVD_BUFFERS=8
|
||||
# CONFIG_CDROM_PKTCDVD_WCACHE is not set
|
||||
CONFIG_ATA_OVER_ETH=y
|
||||
CONFIG_BLK_DEV_RAM=y
|
||||
CONFIG_BLK_DEV_RAM_COUNT=16
|
||||
CONFIG_BLK_DEV_RAM_SIZE=4096
|
||||
CONFIG_BLK_DEV_INITRD=y
|
||||
# CONFIG_CDROM_PKTCDVD is not set
|
||||
# CONFIG_ATA_OVER_ETH is not set
|
||||
|
||||
#
|
||||
# ATA/ATAPI/MFM/RLL support
|
||||
#
|
||||
CONFIG_IDE=y
|
||||
CONFIG_BLK_DEV_IDE=y
|
||||
|
||||
#
|
||||
# Please see Documentation/ide.txt for help/info on IDE drives
|
||||
#
|
||||
# CONFIG_BLK_DEV_IDE_SATA is not set
|
||||
CONFIG_BLK_DEV_IDEDISK=y
|
||||
# CONFIG_IDEDISK_MULTI_MODE is not set
|
||||
# CONFIG_BLK_DEV_IDECD is not set
|
||||
# CONFIG_BLK_DEV_IDETAPE is not set
|
||||
# CONFIG_BLK_DEV_IDEFLOPPY is not set
|
||||
# CONFIG_IDE_TASK_IOCTL is not set
|
||||
|
||||
#
|
||||
# IDE chipset support/bugfixes
|
||||
#
|
||||
CONFIG_IDE_GENERIC=y
|
||||
# CONFIG_BLK_DEV_IDEPCI is not set
|
||||
# CONFIG_IDE_ARM is not set
|
||||
# CONFIG_IDE_CHIPSETS is not set
|
||||
# CONFIG_BLK_DEV_IDEDMA is not set
|
||||
# CONFIG_IDEDMA_AUTO is not set
|
||||
# CONFIG_BLK_DEV_HD is not set
|
||||
# CONFIG_IDE is not set
|
||||
|
||||
#
|
||||
# SCSI device support
|
||||
#
|
||||
CONFIG_RAID_ATTRS=y
|
||||
# CONFIG_RAID_ATTRS is not set
|
||||
# CONFIG_SCSI is not set
|
||||
|
||||
#
|
||||
# Old CD-ROM drivers (not SCSI, not IDE)
|
||||
#
|
||||
# CONFIG_CD_NO_IDESCSI is not set
|
||||
|
||||
#
|
||||
# Multi-device support (RAID and LVM)
|
||||
#
|
||||
@ -440,34 +429,48 @@ CONFIG_PHYLIB=y
|
||||
#
|
||||
# MII PHY device drivers
|
||||
#
|
||||
CONFIG_MARVELL_PHY=y
|
||||
CONFIG_DAVICOM_PHY=y
|
||||
CONFIG_QSEMI_PHY=y
|
||||
CONFIG_LXT_PHY=y
|
||||
CONFIG_CICADA_PHY=y
|
||||
# CONFIG_MARVELL_PHY is not set
|
||||
# CONFIG_DAVICOM_PHY is not set
|
||||
# CONFIG_QSEMI_PHY is not set
|
||||
# CONFIG_LXT_PHY is not set
|
||||
# CONFIG_CICADA_PHY is not set
|
||||
|
||||
#
|
||||
# Ethernet (10 or 100Mbit)
|
||||
#
|
||||
CONFIG_NET_ETHERNET=y
|
||||
# CONFIG_MII is not set
|
||||
CONFIG_MII=y
|
||||
# CONFIG_HAPPYMEAL is not set
|
||||
# CONFIG_SUNGEM is not set
|
||||
# CONFIG_CASSINI is not set
|
||||
# CONFIG_NET_VENDOR_3COM is not set
|
||||
# CONFIG_NET_VENDOR_SMC is not set
|
||||
# CONFIG_DM9000 is not set
|
||||
# CONFIG_NET_VENDOR_RACAL is not set
|
||||
|
||||
#
|
||||
# Tulip family network device support
|
||||
#
|
||||
# CONFIG_NET_TULIP is not set
|
||||
# CONFIG_AT1700 is not set
|
||||
# CONFIG_DEPCA is not set
|
||||
# CONFIG_HP100 is not set
|
||||
# CONFIG_NET_ISA is not set
|
||||
# CONFIG_NET_PCI is not set
|
||||
CONFIG_NET_PCI=y
|
||||
# CONFIG_PCNET32 is not set
|
||||
# CONFIG_AMD8111_ETH is not set
|
||||
# CONFIG_ADAPTEC_STARFIRE is not set
|
||||
# CONFIG_B44 is not set
|
||||
# CONFIG_FORCEDETH is not set
|
||||
# CONFIG_DGRS is not set
|
||||
# CONFIG_EEPRO100 is not set
|
||||
CONFIG_E100=y
|
||||
# CONFIG_FEALNX is not set
|
||||
# CONFIG_NATSEMI is not set
|
||||
# CONFIG_NE2K_PCI is not set
|
||||
# CONFIG_8139CP is not set
|
||||
# CONFIG_8139TOO is not set
|
||||
# CONFIG_SIS900 is not set
|
||||
# CONFIG_EPIC100 is not set
|
||||
# CONFIG_SUNDANCE is not set
|
||||
# CONFIG_TLAN is not set
|
||||
# CONFIG_VIA_RHINE is not set
|
||||
# CONFIG_LAN_SAA9730 is not set
|
||||
|
||||
#
|
||||
# Ethernet (1000 Mbit)
|
||||
@ -483,6 +486,7 @@ CONFIG_NET_ETHERNET=y
|
||||
# CONFIG_SKGE is not set
|
||||
# CONFIG_SKY2 is not set
|
||||
# CONFIG_SK98LIN is not set
|
||||
# CONFIG_VIA_VELOCITY is not set
|
||||
# CONFIG_TIGON3 is not set
|
||||
# CONFIG_BNX2 is not set
|
||||
|
||||
@ -529,46 +533,18 @@ CONFIG_NET_ETHERNET=y
|
||||
#
|
||||
# Input device support
|
||||
#
|
||||
CONFIG_INPUT=y
|
||||
|
||||
#
|
||||
# Userland interfaces
|
||||
#
|
||||
CONFIG_INPUT_MOUSEDEV=y
|
||||
CONFIG_INPUT_MOUSEDEV_PSAUX=y
|
||||
CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
|
||||
CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
|
||||
# CONFIG_INPUT_JOYDEV is not set
|
||||
# CONFIG_INPUT_TSDEV is not set
|
||||
# CONFIG_INPUT_EVDEV is not set
|
||||
# CONFIG_INPUT_EVBUG is not set
|
||||
|
||||
#
|
||||
# Input Device Drivers
|
||||
#
|
||||
# CONFIG_INPUT_KEYBOARD is not set
|
||||
# CONFIG_INPUT_MOUSE is not set
|
||||
# CONFIG_INPUT_JOYSTICK is not set
|
||||
# CONFIG_INPUT_TOUCHSCREEN is not set
|
||||
# CONFIG_INPUT_MISC is not set
|
||||
# CONFIG_INPUT is not set
|
||||
|
||||
#
|
||||
# Hardware I/O ports
|
||||
#
|
||||
CONFIG_SERIO=y
|
||||
# CONFIG_SERIO_I8042 is not set
|
||||
CONFIG_SERIO_SERPORT=y
|
||||
# CONFIG_SERIO_PCIPS2 is not set
|
||||
# CONFIG_SERIO_LIBPS2 is not set
|
||||
CONFIG_SERIO_RAW=y
|
||||
# CONFIG_SERIO is not set
|
||||
# CONFIG_GAMEPORT is not set
|
||||
|
||||
#
|
||||
# Character devices
|
||||
#
|
||||
CONFIG_VT=y
|
||||
CONFIG_VT_CONSOLE=y
|
||||
CONFIG_HW_CONSOLE=y
|
||||
# CONFIG_VT is not set
|
||||
# CONFIG_SERIAL_NONSTANDARD is not set
|
||||
|
||||
#
|
||||
@ -576,9 +552,8 @@ CONFIG_HW_CONSOLE=y
|
||||
#
|
||||
CONFIG_SERIAL_8250=y
|
||||
CONFIG_SERIAL_8250_CONSOLE=y
|
||||
CONFIG_SERIAL_8250_PCI=y
|
||||
CONFIG_SERIAL_8250_NR_UARTS=4
|
||||
CONFIG_SERIAL_8250_RUNTIME_UARTS=4
|
||||
CONFIG_SERIAL_8250_NR_UARTS=1
|
||||
CONFIG_SERIAL_8250_RUNTIME_UARTS=1
|
||||
# CONFIG_SERIAL_8250_EXTENDED is not set
|
||||
|
||||
#
|
||||
@ -600,8 +575,7 @@ CONFIG_LEGACY_PTY_COUNT=256
|
||||
# Watchdog Cards
|
||||
#
|
||||
# CONFIG_WATCHDOG is not set
|
||||
# CONFIG_RTC is not set
|
||||
# CONFIG_GEN_RTC is not set
|
||||
CONFIG_RTC=y
|
||||
# CONFIG_DTLK is not set
|
||||
# CONFIG_R3964 is not set
|
||||
# CONFIG_APPLICOM is not set
|
||||
@ -637,13 +611,19 @@ CONFIG_LEGACY_PTY_COUNT=256
|
||||
#
|
||||
# Hardware Monitoring support
|
||||
#
|
||||
# CONFIG_HWMON is not set
|
||||
CONFIG_HWMON=y
|
||||
# CONFIG_HWMON_VID is not set
|
||||
# CONFIG_SENSORS_F71805F is not set
|
||||
# CONFIG_HWMON_DEBUG_CHIP is not set
|
||||
|
||||
#
|
||||
# Misc devices
|
||||
#
|
||||
|
||||
#
|
||||
# Multimedia Capabilities Port drivers
|
||||
#
|
||||
|
||||
#
|
||||
# Multimedia devices
|
||||
#
|
||||
@ -657,49 +637,7 @@ CONFIG_LEGACY_PTY_COUNT=256
|
||||
#
|
||||
# Graphics support
|
||||
#
|
||||
CONFIG_FB=y
|
||||
# CONFIG_FB_CFB_FILLRECT is not set
|
||||
# CONFIG_FB_CFB_COPYAREA is not set
|
||||
# CONFIG_FB_CFB_IMAGEBLIT is not set
|
||||
# CONFIG_FB_MACMODES is not set
|
||||
CONFIG_FB_FIRMWARE_EDID=y
|
||||
# CONFIG_FB_MODE_HELPERS is not set
|
||||
# CONFIG_FB_TILEBLITTING is not set
|
||||
# CONFIG_FB_CIRRUS is not set
|
||||
# CONFIG_FB_PM2 is not set
|
||||
# CONFIG_FB_CYBER2000 is not set
|
||||
# CONFIG_FB_ASILIANT is not set
|
||||
# CONFIG_FB_IMSTT is not set
|
||||
# CONFIG_FB_S1D13XXX is not set
|
||||
# CONFIG_FB_NVIDIA is not set
|
||||
# CONFIG_FB_RIVA is not set
|
||||
# CONFIG_FB_MATROX is not set
|
||||
# CONFIG_FB_RADEON is not set
|
||||
# CONFIG_FB_ATY128 is not set
|
||||
# CONFIG_FB_ATY is not set
|
||||
# CONFIG_FB_SAVAGE is not set
|
||||
# CONFIG_FB_SIS is not set
|
||||
# CONFIG_FB_NEOMAGIC is not set
|
||||
# CONFIG_FB_KYRO is not set
|
||||
# CONFIG_FB_3DFX is not set
|
||||
# CONFIG_FB_VOODOO1 is not set
|
||||
# CONFIG_FB_SMIVGX is not set
|
||||
# CONFIG_FB_TRIDENT is not set
|
||||
# CONFIG_FB_VIRTUAL is not set
|
||||
|
||||
#
|
||||
# Console display driver support
|
||||
#
|
||||
# CONFIG_VGA_CONSOLE is not set
|
||||
# CONFIG_MDA_CONSOLE is not set
|
||||
CONFIG_DUMMY_CONSOLE=y
|
||||
# CONFIG_FRAMEBUFFER_CONSOLE is not set
|
||||
|
||||
#
|
||||
# Logo configuration
|
||||
#
|
||||
# CONFIG_LOGO is not set
|
||||
# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
|
||||
# CONFIG_FB is not set
|
||||
|
||||
#
|
||||
# Sound
|
||||
@ -711,7 +649,6 @@ CONFIG_DUMMY_CONSOLE=y
|
||||
#
|
||||
CONFIG_USB_ARCH_HAS_HCD=y
|
||||
CONFIG_USB_ARCH_HAS_OHCI=y
|
||||
CONFIG_USB_ARCH_HAS_EHCI=y
|
||||
# CONFIG_USB is not set
|
||||
|
||||
#
|
||||
@ -728,19 +665,6 @@ CONFIG_USB_ARCH_HAS_EHCI=y
|
||||
#
|
||||
# CONFIG_MMC is not set
|
||||
|
||||
#
|
||||
# LED devices
|
||||
#
|
||||
# CONFIG_NEW_LEDS is not set
|
||||
|
||||
#
|
||||
# LED drivers
|
||||
#
|
||||
|
||||
#
|
||||
# LED Triggers
|
||||
#
|
||||
|
||||
#
|
||||
# InfiniBand support
|
||||
#
|
||||
@ -750,17 +674,10 @@ CONFIG_USB_ARCH_HAS_EHCI=y
|
||||
# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
|
||||
#
|
||||
|
||||
#
|
||||
# Real Time Clock
|
||||
#
|
||||
# CONFIG_RTC_CLASS is not set
|
||||
|
||||
#
|
||||
# File systems
|
||||
#
|
||||
CONFIG_EXT2_FS=y
|
||||
# CONFIG_EXT2_FS_XATTR is not set
|
||||
# CONFIG_EXT2_FS_XIP is not set
|
||||
# CONFIG_EXT2_FS is not set
|
||||
# CONFIG_EXT3_FS is not set
|
||||
# CONFIG_REISERFS_FS is not set
|
||||
# CONFIG_JFS_FS is not set
|
||||
@ -774,7 +691,7 @@ CONFIG_INOTIFY=y
|
||||
CONFIG_DNOTIFY=y
|
||||
# CONFIG_AUTOFS_FS is not set
|
||||
# CONFIG_AUTOFS4_FS is not set
|
||||
CONFIG_FUSE_FS=y
|
||||
# CONFIG_FUSE_FS is not set
|
||||
|
||||
#
|
||||
# CD-ROM/DVD Filesystems
|
||||
@ -795,9 +712,10 @@ CONFIG_FUSE_FS=y
|
||||
CONFIG_PROC_FS=y
|
||||
CONFIG_PROC_KCORE=y
|
||||
CONFIG_SYSFS=y
|
||||
# CONFIG_TMPFS is not set
|
||||
CONFIG_TMPFS=y
|
||||
# CONFIG_HUGETLB_PAGE is not set
|
||||
CONFIG_RAMFS=y
|
||||
# CONFIG_RELAYFS_FS is not set
|
||||
# CONFIG_CONFIGFS_FS is not set
|
||||
|
||||
#
|
||||
@ -821,12 +739,14 @@ CONFIG_RAMFS=y
|
||||
# Network File Systems
|
||||
#
|
||||
CONFIG_NFS_FS=y
|
||||
# CONFIG_NFS_V3 is not set
|
||||
CONFIG_NFS_V3=y
|
||||
# CONFIG_NFS_V3_ACL is not set
|
||||
# CONFIG_NFS_V4 is not set
|
||||
# CONFIG_NFS_DIRECTIO is not set
|
||||
# CONFIG_NFSD is not set
|
||||
CONFIG_ROOT_NFS=y
|
||||
CONFIG_LOCKD=y
|
||||
CONFIG_LOCKD_V4=y
|
||||
CONFIG_NFS_COMMON=y
|
||||
CONFIG_SUNRPC=y
|
||||
# CONFIG_RPCSEC_GSS_KRB5 is not set
|
||||
@ -861,46 +781,19 @@ CONFIG_MSDOS_PARTITION=y
|
||||
# CONFIG_MAGIC_SYSRQ is not set
|
||||
# CONFIG_DEBUG_KERNEL is not set
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
# CONFIG_DEBUG_FS is not set
|
||||
# CONFIG_UNWIND_INFO is not set
|
||||
CONFIG_CROSSCOMPILE=y
|
||||
CONFIG_CMDLINE="ip=any"
|
||||
CONFIG_CMDLINE="console=ttyS0,115200n8"
|
||||
|
||||
#
|
||||
# Security options
|
||||
#
|
||||
CONFIG_KEYS=y
|
||||
CONFIG_KEYS_DEBUG_PROC_KEYS=y
|
||||
# CONFIG_KEYS is not set
|
||||
# CONFIG_SECURITY is not set
|
||||
|
||||
#
|
||||
# Cryptographic options
|
||||
#
|
||||
CONFIG_CRYPTO=y
|
||||
CONFIG_CRYPTO_HMAC=y
|
||||
CONFIG_CRYPTO_NULL=y
|
||||
CONFIG_CRYPTO_MD4=y
|
||||
CONFIG_CRYPTO_MD5=y
|
||||
CONFIG_CRYPTO_SHA1=y
|
||||
CONFIG_CRYPTO_SHA256=y
|
||||
CONFIG_CRYPTO_SHA512=y
|
||||
CONFIG_CRYPTO_WP512=y
|
||||
CONFIG_CRYPTO_TGR192=y
|
||||
CONFIG_CRYPTO_DES=y
|
||||
CONFIG_CRYPTO_BLOWFISH=y
|
||||
CONFIG_CRYPTO_TWOFISH=y
|
||||
CONFIG_CRYPTO_SERPENT=y
|
||||
CONFIG_CRYPTO_AES=y
|
||||
CONFIG_CRYPTO_CAST5=y
|
||||
CONFIG_CRYPTO_CAST6=y
|
||||
CONFIG_CRYPTO_TEA=y
|
||||
CONFIG_CRYPTO_ARC4=y
|
||||
CONFIG_CRYPTO_KHAZAD=y
|
||||
CONFIG_CRYPTO_ANUBIS=y
|
||||
CONFIG_CRYPTO_DEFLATE=y
|
||||
CONFIG_CRYPTO_MICHAEL_MIC=y
|
||||
CONFIG_CRYPTO_CRC32C=y
|
||||
# CONFIG_CRYPTO_TEST is not set
|
||||
# CONFIG_CRYPTO is not set
|
||||
|
||||
#
|
||||
# Hardware crypto devices
|
||||
@ -909,9 +802,7 @@ CONFIG_CRYPTO_CRC32C=y
|
||||
#
|
||||
# Library routines
|
||||
#
|
||||
# CONFIG_CRC_CCITT is not set
|
||||
CONFIG_CRC_CCITT=y
|
||||
CONFIG_CRC16=y
|
||||
CONFIG_CRC32=y
|
||||
CONFIG_LIBCRC32C=y
|
||||
CONFIG_ZLIB_INFLATE=y
|
||||
CONFIG_ZLIB_DEFLATE=y
|
@ -41,8 +41,6 @@ CONFIG_MIPS=y
|
||||
# CONFIG_MIPS_XXS1500 is not set
|
||||
# CONFIG_PNX8550_V2PCI is not set
|
||||
# CONFIG_PNX8550_JBS is not set
|
||||
# CONFIG_DDB5074 is not set
|
||||
# CONFIG_DDB5476 is not set
|
||||
# CONFIG_DDB5477 is not set
|
||||
# CONFIG_MACH_VR41XX is not set
|
||||
CONFIG_PMC_YOSEMITE=y
|
||||
@ -130,6 +128,15 @@ CONFIG_FLATMEM=y
|
||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||
# CONFIG_SPARSEMEM_STATIC is not set
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
# CONFIG_HZ_48 is not set
|
||||
# CONFIG_HZ_100 is not set
|
||||
# CONFIG_HZ_128 is not set
|
||||
# CONFIG_HZ_250 is not set
|
||||
# CONFIG_HZ_256 is not set
|
||||
CONFIG_HZ_1000=y
|
||||
# CONFIG_HZ_1024 is not set
|
||||
CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
|
||||
CONFIG_HZ=1000
|
||||
CONFIG_SMP=y
|
||||
CONFIG_NR_CPUS=2
|
||||
CONFIG_PREEMPT_NONE=y
|
||||
|
@ -56,13 +56,7 @@ void __init prom_init(void)
|
||||
|
||||
mips_machgroup = MACH_GROUP_NEC_DDB;
|
||||
|
||||
#if defined(CONFIG_DDB5074)
|
||||
mips_machtype = MACH_NEC_DDB5074;
|
||||
add_memory_region(0, DDB_SDRAM_SIZE, BOOT_MEM_RAM);
|
||||
#elif defined(CONFIG_DDB5476)
|
||||
mips_machtype = MACH_NEC_DDB5476;
|
||||
add_memory_region(0, DDB_SDRAM_SIZE, BOOT_MEM_RAM);
|
||||
#elif defined(CONFIG_DDB5477)
|
||||
#if defined(CONFIG_DDB5477)
|
||||
ddb5477_runtime_detection();
|
||||
add_memory_region(0, board_ram_size, BOOT_MEM_RAM);
|
||||
#endif
|
||||
|
@ -1,8 +0,0 @@
|
||||
#
|
||||
# Makefile for the NEC DDB Vrc-5074 specific kernel interface routines
|
||||
# under Linux.
|
||||
#
|
||||
|
||||
obj-y += setup.o irq.o nile4_pic.o
|
||||
|
||||
EXTRA_AFLAGS := $(CFLAGS)
|
@ -1,169 +0,0 @@
|
||||
/*
|
||||
* arch/mips/ddb5074/irq.c -- NEC DDB Vrc-5074 interrupt routines
|
||||
*
|
||||
* Copyright (C) 2000 Geert Uytterhoeven <geert@sonycom.com>
|
||||
* Sony Software Development Center Europe (SDCE), Brussels
|
||||
*/
|
||||
#include <linux/init.h>
|
||||
#include <linux/irq.h>
|
||||
#include <linux/signal.h>
|
||||
#include <linux/sched.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/ioport.h>
|
||||
|
||||
#include <asm/i8259.h>
|
||||
#include <asm/io.h>
|
||||
#include <asm/irq_cpu.h>
|
||||
#include <asm/ptrace.h>
|
||||
#include <asm/nile4.h>
|
||||
#include <asm/ddb5xxx/ddb5xxx.h>
|
||||
#include <asm/ddb5xxx/ddb5074.h>
|
||||
|
||||
|
||||
static struct irqaction irq_cascade = { no_action, 0, CPU_MASK_NONE, "cascade", NULL, NULL };
|
||||
|
||||
#define M1543_PNP_CONFIG 0x03f0 /* PnP Config Port */
|
||||
#define M1543_PNP_INDEX 0x03f0 /* PnP Index Port */
|
||||
#define M1543_PNP_DATA 0x03f1 /* PnP Data Port */
|
||||
|
||||
#define M1543_PNP_ALT_CONFIG 0x0370 /* Alternative PnP Config Port */
|
||||
#define M1543_PNP_ALT_INDEX 0x0370 /* Alternative PnP Index Port */
|
||||
#define M1543_PNP_ALT_DATA 0x0371 /* Alternative PnP Data Port */
|
||||
|
||||
#define M1543_INT1_MASTER_CTRL 0x0020 /* INT_1 (master) Control Register */
|
||||
#define M1543_INT1_MASTER_MASK 0x0021 /* INT_1 (master) Mask Register */
|
||||
|
||||
#define M1543_INT1_SLAVE_CTRL 0x00a0 /* INT_1 (slave) Control Register */
|
||||
#define M1543_INT1_SLAVE_MASK 0x00a1 /* INT_1 (slave) Mask Register */
|
||||
|
||||
#define M1543_INT1_MASTER_ELCR 0x04d0 /* INT_1 (master) Edge/Level Control */
|
||||
#define M1543_INT1_SLAVE_ELCR 0x04d1 /* INT_1 (slave) Edge/Level Control */
|
||||
|
||||
|
||||
static void m1543_irq_setup(void)
|
||||
{
|
||||
/*
|
||||
* The ALI M1543 has 13 interrupt inputs, IRQ1..IRQ13. Not all
|
||||
* the possible IO sources in the M1543 are in use by us. We will
|
||||
* use the following mapping:
|
||||
*
|
||||
* IRQ1 - keyboard (default set by M1543)
|
||||
* IRQ3 - reserved for UART B (default set by M1543) (note that
|
||||
* the schematics for the DDB Vrc-5074 board seem to
|
||||
* indicate that IRQ3 is connected to the DS1386
|
||||
* watchdog timer interrupt output so we might have
|
||||
* a conflict)
|
||||
* IRQ4 - reserved for UART A (default set by M1543)
|
||||
* IRQ5 - parallel (default set by M1543)
|
||||
* IRQ8 - DS1386 time of day (RTC) interrupt
|
||||
* IRQ12 - mouse
|
||||
*/
|
||||
|
||||
/*
|
||||
* Assing mouse interrupt to IRQ12
|
||||
*/
|
||||
|
||||
/* Enter configuration mode */
|
||||
outb(0x51, M1543_PNP_CONFIG);
|
||||
outb(0x23, M1543_PNP_CONFIG);
|
||||
|
||||
/* Select logical device 7 (Keyboard) */
|
||||
outb(0x07, M1543_PNP_INDEX);
|
||||
outb(0x07, M1543_PNP_DATA);
|
||||
|
||||
/* Select IRQ12 */
|
||||
outb(0x72, M1543_PNP_INDEX);
|
||||
outb(0x0c, M1543_PNP_DATA);
|
||||
|
||||
outb(0x30, M1543_PNP_INDEX);
|
||||
printk("device 7, 0x30: %02x\n",inb(M1543_PNP_DATA));
|
||||
|
||||
outb(0x70, M1543_PNP_INDEX);
|
||||
printk("device 7, 0x70: %02x\n",inb(M1543_PNP_DATA));
|
||||
|
||||
/* Leave configration mode */
|
||||
outb(0xbb, M1543_PNP_CONFIG);
|
||||
|
||||
|
||||
}
|
||||
|
||||
static void ddb_local0_irqdispatch(struct pt_regs *regs)
|
||||
{
|
||||
u32 mask;
|
||||
int nile4_irq;
|
||||
|
||||
mask = nile4_get_irq_stat(0);
|
||||
|
||||
/* Handle the timer interrupt first */
|
||||
#if 0
|
||||
if (mask & (1 << NILE4_INT_GPT)) {
|
||||
do_IRQ(nile4_to_irq(NILE4_INT_GPT), regs);
|
||||
mask &= ~(1 << NILE4_INT_GPT);
|
||||
}
|
||||
#endif
|
||||
for (nile4_irq = 0; mask; nile4_irq++, mask >>= 1)
|
||||
if (mask & 1) {
|
||||
if (nile4_irq == NILE4_INT_INTE) {
|
||||
int i8259_irq;
|
||||
|
||||
nile4_clear_irq(NILE4_INT_INTE);
|
||||
i8259_irq = nile4_i8259_iack();
|
||||
do_IRQ(i8259_irq, regs);
|
||||
} else
|
||||
do_IRQ(nile4_to_irq(nile4_irq), regs);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
static void ddb_local1_irqdispatch(void)
|
||||
{
|
||||
printk("ddb_local1_irqdispatch called\n");
|
||||
}
|
||||
|
||||
static void ddb_buserror_irq(void)
|
||||
{
|
||||
printk("ddb_buserror_irq called\n");
|
||||
}
|
||||
|
||||
static void ddb_8254timer_irq(void)
|
||||
{
|
||||
printk("ddb_8254timer_irq called\n");
|
||||
}
|
||||
|
||||
asmlinkage void plat_irq_dispatch(struct pt_regs *regs)
|
||||
{
|
||||
unsigned int pending = read_c0_cause() & read_c0_status();
|
||||
|
||||
if (pending & CAUSEF_IP2)
|
||||
ddb_local0_irqdispatch(regs);
|
||||
else if (pending & CAUSEF_IP3)
|
||||
ddb_local1_irqdispatch();
|
||||
else if (pending & CAUSEF_IP6)
|
||||
ddb_buserror_irq();
|
||||
else if (pending & (CAUSEF_IP4 | CAUSEF_IP5))
|
||||
ddb_8254timer_irq();
|
||||
}
|
||||
|
||||
void __init arch_init_irq(void)
|
||||
{
|
||||
/* setup cascade interrupts */
|
||||
setup_irq(NILE4_IRQ_BASE + NILE4_INT_INTE, &irq_cascade);
|
||||
setup_irq(CPU_IRQ_BASE + CPU_NILE4_CASCADE, &irq_cascade);
|
||||
|
||||
nile4_irq_setup(NILE4_IRQ_BASE);
|
||||
m1543_irq_setup();
|
||||
init_i8259_irqs();
|
||||
|
||||
|
||||
printk("CPU_IRQ_BASE: %d\n",CPU_IRQ_BASE);
|
||||
|
||||
mips_cpu_irq_init(CPU_IRQ_BASE);
|
||||
|
||||
printk("enabling 8259 cascade\n");
|
||||
|
||||
ddb5074_led_hex(0);
|
||||
|
||||
/* Enable the interrupt cascade */
|
||||
nile4_enable_irq(NILE4_IRQ_BASE+IRQ_I8259_CASCADE);
|
||||
}
|
@ -1,286 +0,0 @@
|
||||
/*
|
||||
* arch/mips/ddb5476/nile4.c --
|
||||
* low-level PIC code for NEC Vrc-5476 (Nile 4)
|
||||
*
|
||||
* Copyright (C) 2000 Geert Uytterhoeven <geert@sonycom.com>
|
||||
* Sony Software Development Center Europe (SDCE), Brussels
|
||||
*
|
||||
* Copyright 2001 MontaVista Software Inc.
|
||||
* Author: jsun@mvista.com or jsun@junsun.net
|
||||
*
|
||||
*/
|
||||
#include <linux/config.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/ioport.h>
|
||||
|
||||
#include <asm/addrspace.h>
|
||||
|
||||
#include <asm/ddb5xxx/ddb5xxx.h>
|
||||
|
||||
static int irq_base;
|
||||
|
||||
/*
|
||||
* Interrupt Programming
|
||||
*/
|
||||
void nile4_map_irq(int nile4_irq, int cpu_irq)
|
||||
{
|
||||
u32 offset, t;
|
||||
|
||||
offset = DDB_INTCTRL;
|
||||
if (nile4_irq >= 8) {
|
||||
offset += 4;
|
||||
nile4_irq -= 8;
|
||||
}
|
||||
t = ddb_in32(offset);
|
||||
t &= ~(7 << (nile4_irq * 4));
|
||||
t |= cpu_irq << (nile4_irq * 4);
|
||||
ddb_out32(offset, t);
|
||||
}
|
||||
|
||||
void nile4_map_irq_all(int cpu_irq)
|
||||
{
|
||||
u32 all, t;
|
||||
|
||||
all = cpu_irq;
|
||||
all |= all << 4;
|
||||
all |= all << 8;
|
||||
all |= all << 16;
|
||||
t = ddb_in32(DDB_INTCTRL);
|
||||
t &= 0x88888888;
|
||||
t |= all;
|
||||
ddb_out32(DDB_INTCTRL, t);
|
||||
t = ddb_in32(DDB_INTCTRL + 4);
|
||||
t &= 0x88888888;
|
||||
t |= all;
|
||||
ddb_out32(DDB_INTCTRL + 4, t);
|
||||
}
|
||||
|
||||
void nile4_enable_irq(unsigned int nile4_irq)
|
||||
{
|
||||
u32 offset, t;
|
||||
|
||||
nile4_irq-=irq_base;
|
||||
|
||||
ddb5074_led_hex(8);
|
||||
|
||||
offset = DDB_INTCTRL;
|
||||
if (nile4_irq >= 8) {
|
||||
offset += 4;
|
||||
nile4_irq -= 8;
|
||||
}
|
||||
ddb5074_led_hex(9);
|
||||
t = ddb_in32(offset);
|
||||
ddb5074_led_hex(0xa);
|
||||
t |= 8 << (nile4_irq * 4);
|
||||
ddb_out32(offset, t);
|
||||
ddb5074_led_hex(0xb);
|
||||
}
|
||||
|
||||
void nile4_disable_irq(unsigned int nile4_irq)
|
||||
{
|
||||
u32 offset, t;
|
||||
|
||||
nile4_irq-=irq_base;
|
||||
|
||||
offset = DDB_INTCTRL;
|
||||
if (nile4_irq >= 8) {
|
||||
offset += 4;
|
||||
nile4_irq -= 8;
|
||||
}
|
||||
t = ddb_in32(offset);
|
||||
t &= ~(8 << (nile4_irq * 4));
|
||||
ddb_out32(offset, t);
|
||||
}
|
||||
|
||||
void nile4_disable_irq_all(void)
|
||||
{
|
||||
ddb_out32(DDB_INTCTRL, 0);
|
||||
ddb_out32(DDB_INTCTRL + 4, 0);
|
||||
}
|
||||
|
||||
u16 nile4_get_irq_stat(int cpu_irq)
|
||||
{
|
||||
return ddb_in16(DDB_INTSTAT0 + cpu_irq * 2);
|
||||
}
|
||||
|
||||
void nile4_enable_irq_output(int cpu_irq)
|
||||
{
|
||||
u32 t;
|
||||
|
||||
t = ddb_in32(DDB_INTSTAT1 + 4);
|
||||
t |= 1 << (16 + cpu_irq);
|
||||
ddb_out32(DDB_INTSTAT1, t);
|
||||
}
|
||||
|
||||
void nile4_disable_irq_output(int cpu_irq)
|
||||
{
|
||||
u32 t;
|
||||
|
||||
t = ddb_in32(DDB_INTSTAT1 + 4);
|
||||
t &= ~(1 << (16 + cpu_irq));
|
||||
ddb_out32(DDB_INTSTAT1, t);
|
||||
}
|
||||
|
||||
void nile4_set_pci_irq_polarity(int pci_irq, int high)
|
||||
{
|
||||
u32 t;
|
||||
|
||||
t = ddb_in32(DDB_INTPPES);
|
||||
if (high)
|
||||
t &= ~(1 << (pci_irq * 2));
|
||||
else
|
||||
t |= 1 << (pci_irq * 2);
|
||||
ddb_out32(DDB_INTPPES, t);
|
||||
}
|
||||
|
||||
void nile4_set_pci_irq_level_or_edge(int pci_irq, int level)
|
||||
{
|
||||
u32 t;
|
||||
|
||||
t = ddb_in32(DDB_INTPPES);
|
||||
if (level)
|
||||
t |= 2 << (pci_irq * 2);
|
||||
else
|
||||
t &= ~(2 << (pci_irq * 2));
|
||||
ddb_out32(DDB_INTPPES, t);
|
||||
}
|
||||
|
||||
void nile4_clear_irq(int nile4_irq)
|
||||
{
|
||||
nile4_irq-=irq_base;
|
||||
ddb_out32(DDB_INTCLR, 1 << nile4_irq);
|
||||
}
|
||||
|
||||
void nile4_clear_irq_mask(u32 mask)
|
||||
{
|
||||
ddb_out32(DDB_INTCLR, mask);
|
||||
}
|
||||
|
||||
u8 nile4_i8259_iack(void)
|
||||
{
|
||||
u8 irq;
|
||||
u32 reg;
|
||||
|
||||
/* Set window 0 for interrupt acknowledge */
|
||||
reg = ddb_in32(DDB_PCIINIT0);
|
||||
|
||||
ddb_set_pmr(DDB_PCIINIT0, DDB_PCICMD_IACK, 0, DDB_PCI_ACCESS_32);
|
||||
irq = *(volatile u8 *) KSEG1ADDR(DDB_PCI_IACK_BASE);
|
||||
/* restore window 0 for PCI I/O space */
|
||||
// ddb_set_pmr(DDB_PCIINIT0, DDB_PCICMD_IO, 0, DDB_PCI_ACCESS_32);
|
||||
ddb_out32(DDB_PCIINIT0, reg);
|
||||
|
||||
/* i8269.c set the base vector to be 0x0 */
|
||||
return irq ;
|
||||
}
|
||||
|
||||
static unsigned int nile4_irq_startup(unsigned int irq) {
|
||||
|
||||
nile4_enable_irq(irq);
|
||||
return 0;
|
||||
|
||||
}
|
||||
|
||||
static void nile4_ack_irq(unsigned int irq) {
|
||||
|
||||
ddb5074_led_hex(4);
|
||||
|
||||
nile4_clear_irq(irq);
|
||||
ddb5074_led_hex(2);
|
||||
nile4_disable_irq(irq);
|
||||
|
||||
ddb5074_led_hex(0);
|
||||
}
|
||||
|
||||
static void nile4_irq_end(unsigned int irq) {
|
||||
|
||||
ddb5074_led_hex(3);
|
||||
if(!(irq_desc[irq].status & (IRQ_DISABLED | IRQ_INPROGRESS))) {
|
||||
ddb5074_led_hex(5);
|
||||
nile4_enable_irq(irq);
|
||||
ddb5074_led_hex(7);
|
||||
}
|
||||
|
||||
ddb5074_led_hex(1);
|
||||
}
|
||||
|
||||
#define nile4_irq_shutdown nile4_disable_irq
|
||||
|
||||
static hw_irq_controller nile4_irq_controller = {
|
||||
.typename = "nile4",
|
||||
.startup = nile4_irq_startup,
|
||||
.shutdown = nile4_irq_shutdown,
|
||||
.enable = nile4_enable_irq,
|
||||
.disable = nile4_disable_irq,
|
||||
.ack = nile4_ack_irq,
|
||||
.end = nile4_irq_end,
|
||||
};
|
||||
|
||||
void nile4_irq_setup(u32 base) {
|
||||
|
||||
int i;
|
||||
|
||||
irq_base=base;
|
||||
|
||||
/* Map all interrupts to CPU int #0 */
|
||||
nile4_map_irq_all(0);
|
||||
|
||||
/* PCI INTA#-E# must be level triggered */
|
||||
nile4_set_pci_irq_level_or_edge(0, 1);
|
||||
nile4_set_pci_irq_level_or_edge(1, 1);
|
||||
nile4_set_pci_irq_level_or_edge(2, 1);
|
||||
nile4_set_pci_irq_level_or_edge(3, 1);
|
||||
nile4_set_pci_irq_level_or_edge(4, 1);
|
||||
|
||||
/* PCI INTA#-D# must be active low, INTE# must be active high */
|
||||
nile4_set_pci_irq_polarity(0, 0);
|
||||
nile4_set_pci_irq_polarity(1, 0);
|
||||
nile4_set_pci_irq_polarity(2, 0);
|
||||
nile4_set_pci_irq_polarity(3, 0);
|
||||
nile4_set_pci_irq_polarity(4, 1);
|
||||
|
||||
|
||||
for (i = 0; i < 16; i++) {
|
||||
nile4_clear_irq(i);
|
||||
nile4_disable_irq(i);
|
||||
}
|
||||
|
||||
/* Enable CPU int #0 */
|
||||
nile4_enable_irq_output(0);
|
||||
|
||||
for (i= base; i< base + NUM_NILE4_INTERRUPTS; i++) {
|
||||
irq_desc[i].status = IRQ_DISABLED;
|
||||
irq_desc[i].action = NULL;
|
||||
irq_desc[i].depth = 1;
|
||||
irq_desc[i].handler = &nile4_irq_controller;
|
||||
}
|
||||
}
|
||||
|
||||
#if defined(CONFIG_RUNTIME_DEBUG)
|
||||
void nile4_dump_irq_status(void)
|
||||
{
|
||||
printk(KERN_DEBUG "
|
||||
CPUSTAT = %p:%p\n", (void *) ddb_in32(DDB_CPUSTAT + 4),
|
||||
(void *) ddb_in32(DDB_CPUSTAT));
|
||||
printk(KERN_DEBUG "
|
||||
INTCTRL = %p:%p\n", (void *) ddb_in32(DDB_INTCTRL + 4),
|
||||
(void *) ddb_in32(DDB_INTCTRL));
|
||||
printk(KERN_DEBUG
|
||||
"INTSTAT0 = %p:%p\n",
|
||||
(void *) ddb_in32(DDB_INTSTAT0 + 4),
|
||||
(void *) ddb_in32(DDB_INTSTAT0));
|
||||
printk(KERN_DEBUG
|
||||
"INTSTAT1 = %p:%p\n",
|
||||
(void *) ddb_in32(DDB_INTSTAT1 + 4),
|
||||
(void *) ddb_in32(DDB_INTSTAT1));
|
||||
printk(KERN_DEBUG
|
||||
"INTCLR = %p:%p\n", (void *) ddb_in32(DDB_INTCLR + 4),
|
||||
(void *) ddb_in32(DDB_INTCLR));
|
||||
printk(KERN_DEBUG
|
||||
"INTPPES = %p:%p\n", (void *) ddb_in32(DDB_INTPPES + 4),
|
||||
(void *) ddb_in32(DDB_INTPPES));
|
||||
}
|
||||
|
||||
#endif
|
@ -1,234 +0,0 @@
|
||||
/*
|
||||
* arch/mips/ddb5074/setup.c -- NEC DDB Vrc-5074 setup routines
|
||||
*
|
||||
* Copyright (C) 2000 Geert Uytterhoeven <geert@sonycom.com>
|
||||
* Sony Software Development Center Europe (SDCE), Brussels
|
||||
*/
|
||||
#include <linux/init.h>
|
||||
#include <linux/kbd_ll.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/kdev_t.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/sched.h>
|
||||
#include <linux/pci.h>
|
||||
#include <linux/ide.h>
|
||||
#include <linux/ioport.h>
|
||||
#include <linux/irq.h>
|
||||
#include <linux/pm.h>
|
||||
|
||||
#include <asm/addrspace.h>
|
||||
#include <asm/bcache.h>
|
||||
#include <asm/irq.h>
|
||||
#include <asm/reboot.h>
|
||||
#include <asm/gdb-stub.h>
|
||||
#include <asm/time.h>
|
||||
#include <asm/nile4.h>
|
||||
#include <asm/ddb5xxx/ddb5074.h>
|
||||
#include <asm/ddb5xxx/ddb5xxx.h>
|
||||
|
||||
static void (*back_to_prom) (void) = (void (*)(void)) 0xbfc00000;
|
||||
|
||||
static void ddb_machine_restart(char *command)
|
||||
{
|
||||
u32 t;
|
||||
|
||||
/* PCI cold reset */
|
||||
t = nile4_in32(NILE4_PCICTRL + 4);
|
||||
t |= 0x40000000;
|
||||
nile4_out32(NILE4_PCICTRL + 4, t);
|
||||
/* CPU cold reset */
|
||||
t = nile4_in32(NILE4_CPUSTAT);
|
||||
t |= 1;
|
||||
nile4_out32(NILE4_CPUSTAT, t);
|
||||
/* Call the PROM */
|
||||
back_to_prom();
|
||||
}
|
||||
|
||||
static void ddb_machine_halt(void)
|
||||
{
|
||||
printk("DDB Vrc-5074 halted.\n");
|
||||
do {
|
||||
} while (1);
|
||||
}
|
||||
|
||||
static void ddb_machine_power_off(void)
|
||||
{
|
||||
printk("DDB Vrc-5074 halted. Please turn off the power.\n");
|
||||
do {
|
||||
} while (1);
|
||||
}
|
||||
|
||||
extern void rtc_ds1386_init(unsigned long base);
|
||||
|
||||
extern void (*board_timer_setup) (struct irqaction * irq);
|
||||
|
||||
static void __init ddb_timer_init(struct irqaction *irq)
|
||||
{
|
||||
/* set the clock to 1 Hz */
|
||||
nile4_out32(NILE4_T2CTRL, 1000000);
|
||||
/* enable the General-Purpose Timer */
|
||||
nile4_out32(NILE4_T2CTRL + 4, 0x00000001);
|
||||
/* reset timer */
|
||||
nile4_out32(NILE4_T2CNTR, 0);
|
||||
/* enable interrupt */
|
||||
setup_irq(nile4_to_irq(NILE4_INT_GPT), irq);
|
||||
nile4_enable_irq(nile4_to_irq(NILE4_INT_GPT));
|
||||
change_c0_status(ST0_IM,
|
||||
IE_IRQ0 | IE_IRQ1 | IE_IRQ2 | IE_IRQ3 | IE_IRQ4);
|
||||
|
||||
}
|
||||
|
||||
static void __init ddb_time_init(void)
|
||||
{
|
||||
/* we have ds1396 RTC chip */
|
||||
rtc_ds1386_init(KSEG1ADDR(DDB_PCI_MEM_BASE));
|
||||
}
|
||||
|
||||
|
||||
|
||||
void __init plat_setup(void)
|
||||
{
|
||||
set_io_port_base(NILE4_PCI_IO_BASE);
|
||||
isa_slot_offset = NILE4_PCI_MEM_BASE;
|
||||
board_timer_setup = ddb_timer_init;
|
||||
board_time_init = ddb_time_init;
|
||||
|
||||
|
||||
_machine_restart = ddb_machine_restart;
|
||||
_machine_halt = ddb_machine_halt;
|
||||
pm_power_off = ddb_machine_power_off;
|
||||
|
||||
ddb_out32(DDB_BAR0, 0);
|
||||
|
||||
ddb_set_pmr(DDB_PCIINIT0, DDB_PCICMD_IO, 0, 0x10);
|
||||
ddb_set_pmr(DDB_PCIINIT1, DDB_PCICMD_MEM, DDB_PCI_MEM_BASE , 0x10);
|
||||
|
||||
/* Reboot on panic */
|
||||
panic_timeout = 180;
|
||||
}
|
||||
|
||||
#define USE_NILE4_SERIAL 0
|
||||
|
||||
#if USE_NILE4_SERIAL
|
||||
#define ns16550_in(reg) nile4_in8((reg)*8)
|
||||
#define ns16550_out(reg, val) nile4_out8((reg)*8, (val))
|
||||
#else
|
||||
#define NS16550_BASE (NILE4_PCI_IO_BASE+0x03f8)
|
||||
static inline u8 ns16550_in(u32 reg)
|
||||
{
|
||||
return *(volatile u8 *) (NS16550_BASE + reg);
|
||||
}
|
||||
|
||||
static inline void ns16550_out(u32 reg, u8 val)
|
||||
{
|
||||
*(volatile u8 *) (NS16550_BASE + reg) = val;
|
||||
}
|
||||
#endif
|
||||
|
||||
#define NS16550_RBR 0
|
||||
#define NS16550_THR 0
|
||||
#define NS16550_DLL 0
|
||||
#define NS16550_IER 1
|
||||
#define NS16550_DLM 1
|
||||
#define NS16550_FCR 2
|
||||
#define NS16550_IIR 2
|
||||
#define NS16550_LCR 3
|
||||
#define NS16550_MCR 4
|
||||
#define NS16550_LSR 5
|
||||
#define NS16550_MSR 6
|
||||
#define NS16550_SCR 7
|
||||
|
||||
#define NS16550_LSR_DR 0x01 /* Data ready */
|
||||
#define NS16550_LSR_OE 0x02 /* Overrun */
|
||||
#define NS16550_LSR_PE 0x04 /* Parity error */
|
||||
#define NS16550_LSR_FE 0x08 /* Framing error */
|
||||
#define NS16550_LSR_BI 0x10 /* Break */
|
||||
#define NS16550_LSR_THRE 0x20 /* Xmit holding register empty */
|
||||
#define NS16550_LSR_TEMT 0x40 /* Xmitter empty */
|
||||
#define NS16550_LSR_ERR 0x80 /* Error */
|
||||
|
||||
|
||||
void _serinit(void)
|
||||
{
|
||||
#if USE_NILE4_SERIAL
|
||||
ns16550_out(NS16550_LCR, 0x80);
|
||||
ns16550_out(NS16550_DLM, 0x00);
|
||||
ns16550_out(NS16550_DLL, 0x36); /* 9600 baud */
|
||||
ns16550_out(NS16550_LCR, 0x00);
|
||||
ns16550_out(NS16550_LCR, 0x03);
|
||||
ns16550_out(NS16550_FCR, 0x47);
|
||||
#else
|
||||
/* done by PMON */
|
||||
#endif
|
||||
}
|
||||
|
||||
void _putc(char c)
|
||||
{
|
||||
while (!(ns16550_in(NS16550_LSR) & NS16550_LSR_THRE));
|
||||
ns16550_out(NS16550_THR, c);
|
||||
if (c == '\n') {
|
||||
while (!(ns16550_in(NS16550_LSR) & NS16550_LSR_THRE));
|
||||
ns16550_out(NS16550_THR, '\r');
|
||||
}
|
||||
}
|
||||
|
||||
void _puts(const char *s)
|
||||
{
|
||||
char c;
|
||||
while ((c = *s++))
|
||||
_putc(c);
|
||||
}
|
||||
|
||||
char _getc(void)
|
||||
{
|
||||
while (!(ns16550_in(NS16550_LSR) & NS16550_LSR_DR));
|
||||
return ns16550_in(NS16550_RBR);
|
||||
}
|
||||
|
||||
int _testc(void)
|
||||
{
|
||||
return (ns16550_in(NS16550_LSR) & NS16550_LSR_DR) != 0;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Hexadecimal 7-segment LED
|
||||
*/
|
||||
void ddb5074_led_hex(int hex)
|
||||
{
|
||||
outb(hex, 0x80);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* LEDs D2 and D3, connected to the GPIO pins of the PMU in the ALi M1543
|
||||
*/
|
||||
struct pci_dev *pci_pmu = NULL;
|
||||
|
||||
void ddb5074_led_d2(int on)
|
||||
{
|
||||
u8 t;
|
||||
|
||||
if (pci_pmu) {
|
||||
pci_read_config_byte(pci_pmu, 0x7e, &t);
|
||||
if (on)
|
||||
t &= 0x7f;
|
||||
else
|
||||
t |= 0x80;
|
||||
pci_write_config_byte(pci_pmu, 0x7e, t);
|
||||
}
|
||||
}
|
||||
|
||||
void ddb5074_led_d3(int on)
|
||||
{
|
||||
u8 t;
|
||||
|
||||
if (pci_pmu) {
|
||||
pci_read_config_byte(pci_pmu, 0x7e, &t);
|
||||
if (on)
|
||||
t &= 0xbf;
|
||||
else
|
||||
t |= 0x40;
|
||||
pci_write_config_byte(pci_pmu, 0x7e, t);
|
||||
}
|
||||
}
|
@ -1,9 +0,0 @@
|
||||
#
|
||||
# Makefile for the NEC DDB Vrc-5476 specific kernel interface routines
|
||||
# under Linux.
|
||||
#
|
||||
|
||||
obj-y += setup.o irq.o nile4_pic.o vrc5476_irq.o
|
||||
obj-$(CONFIG_KGDB) += dbg_io.o
|
||||
|
||||
EXTRA_AFLAGS := $(CFLAGS)
|
@ -1,136 +0,0 @@
|
||||
/*
|
||||
* kgdb io functions for DDB5476. We use the second serial port.
|
||||
*
|
||||
* Copyright (C) 2001 MontaVista Software Inc.
|
||||
* Author: jsun@mvista.com or jsun@junsun.net
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
*/
|
||||
|
||||
/* ======================= CONFIG ======================== */
|
||||
|
||||
/* [jsun] we use the second serial port for kdb */
|
||||
#define BASE 0xa60002f8
|
||||
#define MAX_BAUD 115200
|
||||
|
||||
/* distance in bytes between two serial registers */
|
||||
#define REG_OFFSET 1
|
||||
|
||||
/*
|
||||
* 0 - kgdb does serial init
|
||||
* 1 - kgdb skip serial init
|
||||
*/
|
||||
static int remoteDebugInitialized = 0;
|
||||
|
||||
/*
|
||||
* the default baud rate *if* kgdb does serial init
|
||||
*/
|
||||
#define BAUD_DEFAULT UART16550_BAUD_38400
|
||||
|
||||
/* ======================= END OF CONFIG ======================== */
|
||||
|
||||
typedef unsigned char uint8;
|
||||
typedef unsigned int uint32;
|
||||
|
||||
#define UART16550_BAUD_2400 2400
|
||||
#define UART16550_BAUD_4800 4800
|
||||
#define UART16550_BAUD_9600 9600
|
||||
#define UART16550_BAUD_19200 19200
|
||||
#define UART16550_BAUD_38400 38400
|
||||
#define UART16550_BAUD_57600 57600
|
||||
#define UART16550_BAUD_115200 115200
|
||||
|
||||
#define UART16550_PARITY_NONE 0
|
||||
#define UART16550_PARITY_ODD 0x08
|
||||
#define UART16550_PARITY_EVEN 0x18
|
||||
#define UART16550_PARITY_MARK 0x28
|
||||
#define UART16550_PARITY_SPACE 0x38
|
||||
|
||||
#define UART16550_DATA_5BIT 0x0
|
||||
#define UART16550_DATA_6BIT 0x1
|
||||
#define UART16550_DATA_7BIT 0x2
|
||||
#define UART16550_DATA_8BIT 0x3
|
||||
|
||||
#define UART16550_STOP_1BIT 0x0
|
||||
#define UART16550_STOP_2BIT 0x4
|
||||
|
||||
/* register offset */
|
||||
#define OFS_RCV_BUFFER 0
|
||||
#define OFS_TRANS_HOLD 0
|
||||
#define OFS_SEND_BUFFER 0
|
||||
#define OFS_INTR_ENABLE (1*REG_OFFSET)
|
||||
#define OFS_INTR_ID (2*REG_OFFSET)
|
||||
#define OFS_DATA_FORMAT (3*REG_OFFSET)
|
||||
#define OFS_LINE_CONTROL (3*REG_OFFSET)
|
||||
#define OFS_MODEM_CONTROL (4*REG_OFFSET)
|
||||
#define OFS_RS232_OUTPUT (4*REG_OFFSET)
|
||||
#define OFS_LINE_STATUS (5*REG_OFFSET)
|
||||
#define OFS_MODEM_STATUS (6*REG_OFFSET)
|
||||
#define OFS_RS232_INPUT (6*REG_OFFSET)
|
||||
#define OFS_SCRATCH_PAD (7*REG_OFFSET)
|
||||
|
||||
#define OFS_DIVISOR_LSB (0*REG_OFFSET)
|
||||
#define OFS_DIVISOR_MSB (1*REG_OFFSET)
|
||||
|
||||
|
||||
/* memory-mapped read/write of the port */
|
||||
#define UART16550_READ(y) (*((volatile uint8*)(BASE + y)))
|
||||
#define UART16550_WRITE(y, z) ((*((volatile uint8*)(BASE + y))) = z)
|
||||
|
||||
void debugInit(uint32 baud, uint8 data, uint8 parity, uint8 stop)
|
||||
{
|
||||
/* disable interrupts */
|
||||
UART16550_WRITE(OFS_INTR_ENABLE, 0);
|
||||
|
||||
/* set up baud rate */
|
||||
{
|
||||
uint32 divisor;
|
||||
|
||||
/* set DIAB bit */
|
||||
UART16550_WRITE(OFS_LINE_CONTROL, 0x80);
|
||||
|
||||
/* set divisor */
|
||||
divisor = MAX_BAUD / baud;
|
||||
UART16550_WRITE(OFS_DIVISOR_LSB, divisor & 0xff);
|
||||
UART16550_WRITE(OFS_DIVISOR_MSB, (divisor & 0xff00) >> 8);
|
||||
|
||||
/* clear DIAB bit */
|
||||
UART16550_WRITE(OFS_LINE_CONTROL, 0x0);
|
||||
}
|
||||
|
||||
/* set data format */
|
||||
UART16550_WRITE(OFS_DATA_FORMAT, data | parity | stop);
|
||||
}
|
||||
|
||||
|
||||
uint8 getDebugChar(void)
|
||||
{
|
||||
if (!remoteDebugInitialized) {
|
||||
remoteDebugInitialized = 1;
|
||||
debugInit(BAUD_DEFAULT,
|
||||
UART16550_DATA_8BIT,
|
||||
UART16550_PARITY_NONE, UART16550_STOP_1BIT);
|
||||
}
|
||||
|
||||
while ((UART16550_READ(OFS_LINE_STATUS) & 0x1) == 0);
|
||||
return UART16550_READ(OFS_RCV_BUFFER);
|
||||
}
|
||||
|
||||
|
||||
int putDebugChar(uint8 byte)
|
||||
{
|
||||
if (!remoteDebugInitialized) {
|
||||
remoteDebugInitialized = 1;
|
||||
debugInit(BAUD_DEFAULT,
|
||||
UART16550_DATA_8BIT,
|
||||
UART16550_PARITY_NONE, UART16550_STOP_1BIT);
|
||||
}
|
||||
|
||||
while ((UART16550_READ(OFS_LINE_STATUS) & 0x20) == 0);
|
||||
UART16550_WRITE(OFS_SEND_BUFFER, byte);
|
||||
return 1;
|
||||
}
|
@ -1,165 +0,0 @@
|
||||
/*
|
||||
* arch/mips/ddb5476/irq.c -- NEC DDB Vrc-5476 interrupt routines
|
||||
*
|
||||
* Copyright (C) 2000 Geert Uytterhoeven <geert@sonycom.com>
|
||||
* Sony Software Development Center Europe (SDCE), Brussels
|
||||
*
|
||||
* Re-write the whole thing to use new irq.c file.
|
||||
* Copyright (C) 2001 MontaVista Software Inc.
|
||||
* Author: Jun Sun, jsun@mvista.com or jsun@junsun.net
|
||||
*
|
||||
*/
|
||||
#include <linux/init.h>
|
||||
#include <linux/sched.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/interrupt.h>
|
||||
|
||||
#include <asm/i8259.h>
|
||||
#include <asm/io.h>
|
||||
#include <asm/ptrace.h>
|
||||
|
||||
#include <asm/ddb5xxx/ddb5xxx.h>
|
||||
|
||||
#define M1543_PNP_CONFIG 0x03f0 /* PnP Config Port */
|
||||
#define M1543_PNP_INDEX 0x03f0 /* PnP Index Port */
|
||||
#define M1543_PNP_DATA 0x03f1 /* PnP Data Port */
|
||||
|
||||
#define M1543_PNP_ALT_CONFIG 0x0370 /* Alternative PnP Config Port */
|
||||
#define M1543_PNP_ALT_INDEX 0x0370 /* Alternative PnP Index Port */
|
||||
#define M1543_PNP_ALT_DATA 0x0371 /* Alternative PnP Data Port */
|
||||
|
||||
#define M1543_INT1_MASTER_CTRL 0x0020 /* INT_1 (master) Control Register */
|
||||
#define M1543_INT1_MASTER_MASK 0x0021 /* INT_1 (master) Mask Register */
|
||||
|
||||
#define M1543_INT1_SLAVE_CTRL 0x00a0 /* INT_1 (slave) Control Register */
|
||||
#define M1543_INT1_SLAVE_MASK 0x00a1 /* INT_1 (slave) Mask Register */
|
||||
|
||||
#define M1543_INT1_MASTER_ELCR 0x04d0 /* INT_1 (master) Edge/Level Control */
|
||||
#define M1543_INT1_SLAVE_ELCR 0x04d1 /* INT_1 (slave) Edge/Level Control */
|
||||
|
||||
static void m1543_irq_setup(void)
|
||||
{
|
||||
/*
|
||||
* The ALI M1543 has 13 interrupt inputs, IRQ1..IRQ13. Not all
|
||||
* the possible IO sources in the M1543 are in use by us. We will
|
||||
* use the following mapping:
|
||||
*
|
||||
* IRQ1 - keyboard (default set by M1543)
|
||||
* IRQ3 - reserved for UART B (default set by M1543) (note that
|
||||
* the schematics for the DDB Vrc-5476 board seem to
|
||||
* indicate that IRQ3 is connected to the DS1386
|
||||
* watchdog timer interrupt output so we might have
|
||||
* a conflict)
|
||||
* IRQ4 - reserved for UART A (default set by M1543)
|
||||
* IRQ5 - parallel (default set by M1543)
|
||||
* IRQ8 - DS1386 time of day (RTC) interrupt
|
||||
* IRQ9 - USB (hardwired in ddb_setup)
|
||||
* IRQ10 - PMU (hardwired in ddb_setup)
|
||||
* IRQ12 - mouse
|
||||
* IRQ14,15 - IDE controller (need to be confirmed, jsun)
|
||||
*/
|
||||
|
||||
/*
|
||||
* Assing mouse interrupt to IRQ12
|
||||
*/
|
||||
|
||||
/* Enter configuration mode */
|
||||
outb(0x51, M1543_PNP_CONFIG);
|
||||
outb(0x23, M1543_PNP_CONFIG);
|
||||
|
||||
/* Select logical device 7 (Keyboard) */
|
||||
outb(0x07, M1543_PNP_INDEX);
|
||||
outb(0x07, M1543_PNP_DATA);
|
||||
|
||||
/* Select IRQ12 */
|
||||
outb(0x72, M1543_PNP_INDEX);
|
||||
outb(0x0c, M1543_PNP_DATA);
|
||||
|
||||
/* Leave configration mode */
|
||||
outb(0xbb, M1543_PNP_CONFIG);
|
||||
}
|
||||
|
||||
static void nile4_irq_setup(void)
|
||||
{
|
||||
int i;
|
||||
|
||||
/* Map all interrupts to CPU int #0 (IP2) */
|
||||
nile4_map_irq_all(0);
|
||||
|
||||
/* PCI INTA#-E# must be level triggered */
|
||||
nile4_set_pci_irq_level_or_edge(0, 1);
|
||||
nile4_set_pci_irq_level_or_edge(1, 1);
|
||||
nile4_set_pci_irq_level_or_edge(2, 1);
|
||||
nile4_set_pci_irq_level_or_edge(3, 1);
|
||||
|
||||
/* PCI INTA#, B#, D# must be active low, INTC# must be active high */
|
||||
nile4_set_pci_irq_polarity(0, 0);
|
||||
nile4_set_pci_irq_polarity(1, 0);
|
||||
nile4_set_pci_irq_polarity(2, 1);
|
||||
nile4_set_pci_irq_polarity(3, 0);
|
||||
|
||||
for (i = 0; i < 16; i++)
|
||||
nile4_clear_irq(i);
|
||||
|
||||
/* Enable CPU int #0 */
|
||||
nile4_enable_irq_output(0);
|
||||
|
||||
/* memory resource acquire in ddb_setup */
|
||||
}
|
||||
|
||||
static struct irqaction irq_cascade = { no_action, 0, CPU_MASK_NONE, "cascade", NULL, NULL };
|
||||
static struct irqaction irq_error = { no_action, 0, CPU_MASK_NONE, "error", NULL, NULL };
|
||||
|
||||
extern int setup_irq(unsigned int irq, struct irqaction *irqaction);
|
||||
extern void mips_cpu_irq_init(u32 irq_base);
|
||||
extern void vrc5476_irq_init(u32 irq_base);
|
||||
|
||||
extern void vrc5476_irq_dispatch(struct pt_regs *regs);
|
||||
|
||||
asmlinkage void plat_irq_dispatch(struct pt_regs *regs)
|
||||
{
|
||||
unsigned int pending = read_c0_cause() & read_c0_status();
|
||||
|
||||
if (pending & STATUSF_IP7)
|
||||
do_IRQ(CPU_IRQ_BASE + 7, regs);
|
||||
else if (pending & STATUSF_IP2)
|
||||
vrc5476_irq_dispatch(regs);
|
||||
else if (pending & STATUSF_IP3)
|
||||
do_IRQ(CPU_IRQ_BASE + 3, regs);
|
||||
else if (pending & STATUSF_IP4)
|
||||
do_IRQ(CPU_IRQ_BASE + 4, regs);
|
||||
else if (pending & STATUSF_IP5)
|
||||
do_IRQ(CPU_IRQ_BASE + 5, regs);
|
||||
else if (pending & STATUSF_IP6)
|
||||
do_IRQ(CPU_IRQ_BASE + 6, regs);
|
||||
else if (pending & STATUSF_IP0)
|
||||
do_IRQ(CPU_IRQ_BASE, regs);
|
||||
else if (pending & STATUSF_IP1)
|
||||
do_IRQ(CPU_IRQ_BASE + 1, regs);
|
||||
|
||||
vrc5476_irq_dispatch(regs);
|
||||
}
|
||||
|
||||
void __init arch_init_irq(void)
|
||||
{
|
||||
/* hardware initialization */
|
||||
nile4_irq_setup();
|
||||
m1543_irq_setup();
|
||||
|
||||
/* controller setup */
|
||||
init_i8259_irqs();
|
||||
vrc5476_irq_init(VRC5476_IRQ_BASE);
|
||||
mips_cpu_irq_init(CPU_IRQ_BASE);
|
||||
|
||||
/* setup cascade interrupts */
|
||||
setup_irq(VRC5476_IRQ_BASE + VRC5476_I8259_CASCADE, &irq_cascade);
|
||||
setup_irq(CPU_IRQ_BASE + CPU_VRC5476_CASCADE, &irq_cascade);
|
||||
|
||||
/* setup error interrupts for debugging */
|
||||
setup_irq(VRC5476_IRQ_BASE + VRC5476_IRQ_CPCE, &irq_error);
|
||||
setup_irq(VRC5476_IRQ_BASE + VRC5476_IRQ_CNTD, &irq_error);
|
||||
setup_irq(VRC5476_IRQ_BASE + VRC5476_IRQ_MCE, &irq_error);
|
||||
setup_irq(VRC5476_IRQ_BASE + VRC5476_IRQ_LBRT, &irq_error);
|
||||
setup_irq(VRC5476_IRQ_BASE + VRC5476_IRQ_PCIS, &irq_error);
|
||||
setup_irq(VRC5476_IRQ_BASE + VRC5476_IRQ_PCI, &irq_error);
|
||||
}
|
@ -1,190 +0,0 @@
|
||||
/*
|
||||
* arch/mips/ddb5476/nile4.c --
|
||||
* low-level PIC code for NEC Vrc-5476 (Nile 4)
|
||||
*
|
||||
* Copyright (C) 2000 Geert Uytterhoeven <geert@sonycom.com>
|
||||
* Sony Software Development Center Europe (SDCE), Brussels
|
||||
*
|
||||
* Copyright 2001 MontaVista Software Inc.
|
||||
* Author: jsun@mvista.com or jsun@junsun.net
|
||||
*
|
||||
*/
|
||||
#include <linux/config.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/types.h>
|
||||
|
||||
#include <asm/addrspace.h>
|
||||
|
||||
#include <asm/ddb5xxx/ddb5xxx.h>
|
||||
|
||||
|
||||
/*
|
||||
* Interrupt Programming
|
||||
*/
|
||||
void nile4_map_irq(int nile4_irq, int cpu_irq)
|
||||
{
|
||||
u32 offset, t;
|
||||
|
||||
offset = DDB_INTCTRL;
|
||||
if (nile4_irq >= 8) {
|
||||
offset += 4;
|
||||
nile4_irq -= 8;
|
||||
}
|
||||
t = ddb_in32(offset);
|
||||
t &= ~(7 << (nile4_irq * 4));
|
||||
t |= cpu_irq << (nile4_irq * 4);
|
||||
ddb_out32(offset, t);
|
||||
}
|
||||
|
||||
void nile4_map_irq_all(int cpu_irq)
|
||||
{
|
||||
u32 all, t;
|
||||
|
||||
all = cpu_irq;
|
||||
all |= all << 4;
|
||||
all |= all << 8;
|
||||
all |= all << 16;
|
||||
t = ddb_in32(DDB_INTCTRL);
|
||||
t &= 0x88888888;
|
||||
t |= all;
|
||||
ddb_out32(DDB_INTCTRL, t);
|
||||
t = ddb_in32(DDB_INTCTRL + 4);
|
||||
t &= 0x88888888;
|
||||
t |= all;
|
||||
ddb_out32(DDB_INTCTRL + 4, t);
|
||||
}
|
||||
|
||||
void nile4_enable_irq(int nile4_irq)
|
||||
{
|
||||
u32 offset, t;
|
||||
|
||||
offset = DDB_INTCTRL;
|
||||
if (nile4_irq >= 8) {
|
||||
offset += 4;
|
||||
nile4_irq -= 8;
|
||||
}
|
||||
t = ddb_in32(offset);
|
||||
t |= 8 << (nile4_irq * 4);
|
||||
ddb_out32(offset, t);
|
||||
}
|
||||
|
||||
void nile4_disable_irq(int nile4_irq)
|
||||
{
|
||||
u32 offset, t;
|
||||
|
||||
offset = DDB_INTCTRL;
|
||||
if (nile4_irq >= 8) {
|
||||
offset += 4;
|
||||
nile4_irq -= 8;
|
||||
}
|
||||
t = ddb_in32(offset);
|
||||
t &= ~(8 << (nile4_irq * 4));
|
||||
ddb_out32(offset, t);
|
||||
}
|
||||
|
||||
void nile4_disable_irq_all(void)
|
||||
{
|
||||
ddb_out32(DDB_INTCTRL, 0);
|
||||
ddb_out32(DDB_INTCTRL + 4, 0);
|
||||
}
|
||||
|
||||
u16 nile4_get_irq_stat(int cpu_irq)
|
||||
{
|
||||
return ddb_in16(DDB_INTSTAT0 + cpu_irq * 2);
|
||||
}
|
||||
|
||||
void nile4_enable_irq_output(int cpu_irq)
|
||||
{
|
||||
u32 t;
|
||||
|
||||
t = ddb_in32(DDB_INTSTAT1 + 4);
|
||||
t |= 1 << (16 + cpu_irq);
|
||||
ddb_out32(DDB_INTSTAT1, t);
|
||||
}
|
||||
|
||||
void nile4_disable_irq_output(int cpu_irq)
|
||||
{
|
||||
u32 t;
|
||||
|
||||
t = ddb_in32(DDB_INTSTAT1 + 4);
|
||||
t &= ~(1 << (16 + cpu_irq));
|
||||
ddb_out32(DDB_INTSTAT1, t);
|
||||
}
|
||||
|
||||
void nile4_set_pci_irq_polarity(int pci_irq, int high)
|
||||
{
|
||||
u32 t;
|
||||
|
||||
t = ddb_in32(DDB_INTPPES);
|
||||
if (high)
|
||||
t &= ~(1 << (pci_irq * 2));
|
||||
else
|
||||
t |= 1 << (pci_irq * 2);
|
||||
ddb_out32(DDB_INTPPES, t);
|
||||
}
|
||||
|
||||
void nile4_set_pci_irq_level_or_edge(int pci_irq, int level)
|
||||
{
|
||||
u32 t;
|
||||
|
||||
t = ddb_in32(DDB_INTPPES);
|
||||
if (level)
|
||||
t |= 2 << (pci_irq * 2);
|
||||
else
|
||||
t &= ~(2 << (pci_irq * 2));
|
||||
ddb_out32(DDB_INTPPES, t);
|
||||
}
|
||||
|
||||
void nile4_clear_irq(int nile4_irq)
|
||||
{
|
||||
ddb_out32(DDB_INTCLR, 1 << nile4_irq);
|
||||
}
|
||||
|
||||
void nile4_clear_irq_mask(u32 mask)
|
||||
{
|
||||
ddb_out32(DDB_INTCLR, mask);
|
||||
}
|
||||
|
||||
u8 nile4_i8259_iack(void)
|
||||
{
|
||||
u8 irq;
|
||||
u32 reg;
|
||||
|
||||
/* Set window 0 for interrupt acknowledge */
|
||||
reg = ddb_in32(DDB_PCIINIT0);
|
||||
|
||||
ddb_set_pmr(DDB_PCIINIT0, DDB_PCICMD_IACK, 0, DDB_PCI_ACCESS_32);
|
||||
irq = *(volatile u8 *) KSEG1ADDR(DDB_PCI_IACK_BASE);
|
||||
/* restore window 0 for PCI I/O space */
|
||||
// ddb_set_pmr(DDB_PCIINIT0, DDB_PCICMD_IO, 0, DDB_PCI_ACCESS_32);
|
||||
ddb_out32(DDB_PCIINIT0, reg);
|
||||
|
||||
/* i8269.c set the base vector to be 0x0 */
|
||||
return irq + I8259_IRQ_BASE;
|
||||
}
|
||||
|
||||
#if defined(CONFIG_RUNTIME_DEBUG)
|
||||
void nile4_dump_irq_status(void)
|
||||
{
|
||||
printk(KERN_DEBUG "
|
||||
CPUSTAT = %p:%p\n", (void *) ddb_in32(DDB_CPUSTAT + 4),
|
||||
(void *) ddb_in32(DDB_CPUSTAT));
|
||||
printk(KERN_DEBUG "
|
||||
INTCTRL = %p:%p\n", (void *) ddb_in32(DDB_INTCTRL + 4),
|
||||
(void *) ddb_in32(DDB_INTCTRL));
|
||||
printk(KERN_DEBUG
|
||||
"INTSTAT0 = %p:%p\n",
|
||||
(void *) ddb_in32(DDB_INTSTAT0 + 4),
|
||||
(void *) ddb_in32(DDB_INTSTAT0));
|
||||
printk(KERN_DEBUG
|
||||
"INTSTAT1 = %p:%p\n",
|
||||
(void *) ddb_in32(DDB_INTSTAT1 + 4),
|
||||
(void *) ddb_in32(DDB_INTSTAT1));
|
||||
printk(KERN_DEBUG
|
||||
"INTCLR = %p:%p\n", (void *) ddb_in32(DDB_INTCLR + 4),
|
||||
(void *) ddb_in32(DDB_INTCLR));
|
||||
printk(KERN_DEBUG
|
||||
"INTPPES = %p:%p\n", (void *) ddb_in32(DDB_INTPPES + 4),
|
||||
(void *) ddb_in32(DDB_INTPPES));
|
||||
}
|
||||
#endif
|
@ -1,296 +0,0 @@
|
||||
/*
|
||||
* arch/mips/ddb5476/setup.c -- NEC DDB Vrc-5476 setup routines
|
||||
*
|
||||
* Copyright (C) 2000 Geert Uytterhoeven <geert@sonycom.com>
|
||||
* Sony Software Development Center Europe (SDCE), Brussels
|
||||
*/
|
||||
#include <linux/init.h>
|
||||
#include <linux/kbd_ll.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/kdev_t.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/sched.h>
|
||||
#include <linux/pci.h>
|
||||
#include <linux/pm.h>
|
||||
|
||||
#include <asm/addrspace.h>
|
||||
#include <asm/bcache.h>
|
||||
#include <asm/irq.h>
|
||||
#include <asm/reboot.h>
|
||||
#include <asm/gdb-stub.h>
|
||||
#include <asm/time.h>
|
||||
#include <asm/debug.h>
|
||||
#include <asm/traps.h>
|
||||
|
||||
#include <asm/ddb5xxx/ddb5xxx.h>
|
||||
|
||||
// #define USE_CPU_COUNTER_TIMER /* whether we use cpu counter */
|
||||
|
||||
#ifdef USE_CPU_COUNTER_TIMER
|
||||
|
||||
#define CPU_COUNTER_FREQUENCY 83000000
|
||||
#else
|
||||
/* otherwise we use general purpose timer */
|
||||
#define TIMER_FREQUENCY 83000000
|
||||
#define TIMER_BASE DDB_T2CTRL
|
||||
#define TIMER_IRQ (VRC5476_IRQ_BASE + VRC5476_IRQ_GPT)
|
||||
#endif
|
||||
|
||||
static void (*back_to_prom) (void) = (void (*)(void)) 0xbfc00000;
|
||||
|
||||
static void ddb_machine_restart(char *command)
|
||||
{
|
||||
u32 t;
|
||||
|
||||
/* PCI cold reset */
|
||||
t = ddb_in32(DDB_PCICTRL + 4);
|
||||
t |= 0x40000000;
|
||||
ddb_out32(DDB_PCICTRL + 4, t);
|
||||
/* CPU cold reset */
|
||||
t = ddb_in32(DDB_CPUSTAT);
|
||||
t |= 1;
|
||||
ddb_out32(DDB_CPUSTAT, t);
|
||||
/* Call the PROM */
|
||||
back_to_prom();
|
||||
}
|
||||
|
||||
static void ddb_machine_halt(void)
|
||||
{
|
||||
printk(KERN_NOTICE "DDB Vrc-5476 halted.\n");
|
||||
while (1);
|
||||
}
|
||||
|
||||
static void ddb_machine_power_off(void)
|
||||
{
|
||||
printk(KERN_NOTICE "DDB Vrc-5476 halted. Please turn off the power.\n");
|
||||
while (1);
|
||||
}
|
||||
|
||||
extern void rtc_ds1386_init(unsigned long base);
|
||||
|
||||
static void __init ddb_time_init(void)
|
||||
{
|
||||
#if defined(USE_CPU_COUNTER_TIMER)
|
||||
mips_hpt_frequency = CPU_COUNTER_FREQUENCY;
|
||||
#endif
|
||||
|
||||
/* we have ds1396 RTC chip */
|
||||
rtc_ds1386_init(KSEG1ADDR(DDB_PCI_MEM_BASE));
|
||||
}
|
||||
|
||||
|
||||
extern int setup_irq(unsigned int irq, struct irqaction *irqaction);
|
||||
static void __init ddb_timer_setup(struct irqaction *irq)
|
||||
{
|
||||
#if defined(USE_CPU_COUNTER_TIMER)
|
||||
|
||||
unsigned int count;
|
||||
|
||||
/* we are using the cpu counter for timer interrupts */
|
||||
setup_irq(CPU_IRQ_BASE + 7, irq);
|
||||
|
||||
/* to generate the first timer interrupt */
|
||||
count = read_c0_count();
|
||||
write_c0_compare(count + 1000);
|
||||
|
||||
#else
|
||||
|
||||
ddb_out32(TIMER_BASE, TIMER_FREQUENCY/HZ);
|
||||
ddb_out32(TIMER_BASE+4, 0x1); /* enable timer */
|
||||
setup_irq(TIMER_IRQ, irq);
|
||||
#endif
|
||||
}
|
||||
|
||||
static struct {
|
||||
struct resource dma1;
|
||||
struct resource timer;
|
||||
struct resource rtc;
|
||||
struct resource dma_page_reg;
|
||||
struct resource dma2;
|
||||
} ddb5476_ioport = {
|
||||
{
|
||||
"dma1", 0x00, 0x1f, IORESOURCE_BUSY}, {
|
||||
"timer", 0x40, 0x5f, IORESOURCE_BUSY}, {
|
||||
"rtc", 0x70, 0x7f, IORESOURCE_BUSY}, {
|
||||
"dma page reg", 0x80, 0x8f, IORESOURCE_BUSY}, {
|
||||
"dma2", 0xc0, 0xdf, IORESOURCE_BUSY}
|
||||
};
|
||||
|
||||
static struct {
|
||||
struct resource nile4;
|
||||
} ddb5476_iomem = {
|
||||
{ "Nile 4", DDB_BASE, DDB_BASE + DDB_SIZE - 1, IORESOURCE_BUSY}
|
||||
};
|
||||
|
||||
|
||||
static void ddb5476_board_init(void);
|
||||
|
||||
void __init plat_setup(void)
|
||||
{
|
||||
set_io_port_base(KSEG1ADDR(DDB_PCI_IO_BASE));
|
||||
|
||||
board_time_init = ddb_time_init;
|
||||
board_timer_setup = ddb_timer_setup;
|
||||
|
||||
_machine_restart = ddb_machine_restart;
|
||||
_machine_halt = ddb_machine_halt;
|
||||
pm_power_off = ddb_machine_power_off;
|
||||
|
||||
/* request io port/mem resources */
|
||||
if (request_resource(&ioport_resource, &ddb5476_ioport.dma1) ||
|
||||
request_resource(&ioport_resource, &ddb5476_ioport.timer) ||
|
||||
request_resource(&ioport_resource, &ddb5476_ioport.rtc) ||
|
||||
request_resource(&ioport_resource,
|
||||
&ddb5476_ioport.dma_page_reg)
|
||||
|| request_resource(&ioport_resource, &ddb5476_ioport.dma2)
|
||||
|| request_resource(&iomem_resource, &ddb5476_iomem.nile4)) {
|
||||
printk
|
||||
("ddb_setup - requesting oo port resources failed.\n");
|
||||
for (;;);
|
||||
}
|
||||
|
||||
/* Reboot on panic */
|
||||
panic_timeout = 180;
|
||||
|
||||
/* [jsun] we need to set BAR0 so that SDRAM 0 appears at 0x0 in PCI */
|
||||
/* *(long*)0xbfa00218 = 0x8; */
|
||||
|
||||
/* board initialization stuff */
|
||||
ddb5476_board_init();
|
||||
}
|
||||
|
||||
/*
|
||||
* We don't trust bios. We essentially does hardware re-initialization
|
||||
* as complete as possible, as far as we know we can safely do.
|
||||
*/
|
||||
static void ddb5476_board_init(void)
|
||||
{
|
||||
/* ----------- setup PDARs ------------ */
|
||||
/* check SDRAM0, whether we are on MEM bus does not matter */
|
||||
db_assert((ddb_in32(DDB_SDRAM0) & 0xffffffef) ==
|
||||
ddb_calc_pdar(DDB_SDRAM_BASE, DDB_SDRAM_SIZE, 32, 0, 1));
|
||||
|
||||
/* SDRAM1 should be turned off. What is this for anyway ? */
|
||||
db_assert( (ddb_in32(DDB_SDRAM1) & 0xf) == 0);
|
||||
|
||||
/* flash 1&2, DDB status, DDB control */
|
||||
ddb_set_pdar(DDB_DCS2, DDB_DCS2_BASE, DDB_DCS2_SIZE, 16, 0, 0);
|
||||
ddb_set_pdar(DDB_DCS3, DDB_DCS3_BASE, DDB_DCS3_SIZE, 16, 0, 0);
|
||||
ddb_set_pdar(DDB_DCS4, DDB_DCS4_BASE, DDB_DCS4_SIZE, 8, 0, 0);
|
||||
ddb_set_pdar(DDB_DCS5, DDB_DCS5_BASE, DDB_DCS5_SIZE, 8, 0, 0);
|
||||
|
||||
/* shut off other pdar so they don't accidentally get into the way */
|
||||
ddb_set_pdar(DDB_DCS6, 0xffffffff, 0, 32, 0, 0);
|
||||
ddb_set_pdar(DDB_DCS7, 0xffffffff, 0, 32, 0, 0);
|
||||
ddb_set_pdar(DDB_DCS8, 0xffffffff, 0, 32, 0, 0);
|
||||
|
||||
/* verify VRC5477 base addr */
|
||||
/* don't care about some details */
|
||||
db_assert((ddb_in32(DDB_INTCS) & 0xffffff0f) ==
|
||||
ddb_calc_pdar(DDB_INTCS_BASE, DDB_INTCS_SIZE, 8, 0, 0));
|
||||
|
||||
/* verify BOOT ROM addr */
|
||||
/* don't care about some details */
|
||||
db_assert((ddb_in32(DDB_BOOTCS) & 0xffffff0f) ==
|
||||
ddb_calc_pdar(DDB_BOOTCS_BASE, DDB_BOOTCS_SIZE, 8, 0, 0));
|
||||
|
||||
/* setup PCI windows - window1 for MEM/config, window0 for IO */
|
||||
ddb_set_pdar(DDB_PCIW0, DDB_PCI_IO_BASE, DDB_PCI_IO_SIZE, 32, 0, 1);
|
||||
ddb_set_pmr(DDB_PCIINIT0, DDB_PCICMD_IO, 0, DDB_PCI_ACCESS_32);
|
||||
|
||||
ddb_set_pdar(DDB_PCIW1, DDB_PCI_MEM_BASE, DDB_PCI_MEM_SIZE, 32, 0, 1);
|
||||
ddb_set_pmr(DDB_PCIINIT1, DDB_PCICMD_MEM, DDB_PCI_MEM_BASE, DDB_PCI_ACCESS_32);
|
||||
|
||||
/* ----------- setup PDARs ------------ */
|
||||
/* this is problematic - it will reset Aladin which cause we loose
|
||||
* serial port, and we don't know how to set up Aladin chip again.
|
||||
*/
|
||||
// ddb_pci_reset_bus();
|
||||
|
||||
ddb_out32(DDB_BAR0, 0x00000008);
|
||||
|
||||
ddb_out32(DDB_BARC, 0xffffffff);
|
||||
ddb_out32(DDB_BARB, 0xffffffff);
|
||||
ddb_out32(DDB_BAR1, 0xffffffff);
|
||||
ddb_out32(DDB_BAR2, 0xffffffff);
|
||||
ddb_out32(DDB_BAR3, 0xffffffff);
|
||||
ddb_out32(DDB_BAR4, 0xffffffff);
|
||||
ddb_out32(DDB_BAR5, 0xffffffff);
|
||||
ddb_out32(DDB_BAR6, 0xffffffff);
|
||||
ddb_out32(DDB_BAR7, 0xffffffff);
|
||||
ddb_out32(DDB_BAR8, 0xffffffff);
|
||||
|
||||
/* ----------- switch PCI1 to PCI CONFIG space ------------ */
|
||||
ddb_set_pdar(DDB_PCIW1, DDB_PCI_CONFIG_BASE, DDB_PCI_CONFIG_SIZE, 32, 0, 1);
|
||||
ddb_set_pmr(DDB_PCIINIT1, DDB_PCICMD_CFG, 0x0, DDB_PCI_ACCESS_32);
|
||||
|
||||
/* ----- M1543 PCI setup ------ */
|
||||
|
||||
/* we know M1543 PCI-ISA controller is at addr:18 */
|
||||
/* xxxx1010 makes USB at addr:13 and PMU at addr:14 */
|
||||
*(volatile unsigned char *) 0xa8040072 &= 0xf0;
|
||||
*(volatile unsigned char *) 0xa8040072 |= 0xa;
|
||||
|
||||
/* setup USB interrupt to IRQ 9, (bit 0:3 - 0001)
|
||||
* no IOCHRDY signal, (bit 7 - 1)
|
||||
* M1543C & M7101 VID and Subsys Device ID are read-only (bit 6 - 1)
|
||||
* Make USB Master INTAJ level to edge conversion (bit 4 - 1)
|
||||
*/
|
||||
*(unsigned char *) 0xa8040074 = 0xd1;
|
||||
|
||||
/* setup PMU(SCI to IRQ 10 (bit 0:3 - 0011)
|
||||
* SCI routing to IRQ 13 disabled (bit 7 - 1)
|
||||
* SCI interrupt level to edge conversion bypassed (bit 4 - 0)
|
||||
*/
|
||||
*(unsigned char *) 0xa8040076 = 0x83;
|
||||
|
||||
/* setup IDE controller
|
||||
* enable IDE controller (bit 6 - 1)
|
||||
* IDE IDSEL to be addr:24 (bit 4:5 - 11)
|
||||
* no IDE ATA Secondary Bus Signal Pad Control (bit 3 - 0)
|
||||
* no IDE ATA Primary Bus Signal Pad Control (bit 2 - 0)
|
||||
* primary IRQ is 14, secondary is 15 (bit 1:0 - 01
|
||||
*/
|
||||
// *(unsigned char*)0xa8040058 = 0x71;
|
||||
// *(unsigned char*)0xa8040058 = 0x79;
|
||||
// *(unsigned char*)0xa8040058 = 0x74; // use SIRQ, primary tri-state
|
||||
*(unsigned char *) 0xa8040058 = 0x75; // primary tri-state
|
||||
|
||||
#if 0
|
||||
/* this is not necessary if M5229 does not use SIRQ */
|
||||
*(unsigned char *) 0xa8040044 = 0x0d; // primary to IRQ 14
|
||||
*(unsigned char *) 0xa8040075 = 0x0d; // secondary to IRQ 14
|
||||
#endif
|
||||
|
||||
/* enable IDE in the M5229 config register 0x50 (bit 0 - 1) */
|
||||
/* M5229 IDSEL is addr:24; see above setting */
|
||||
*(unsigned char *) 0xa9000050 |= 0x1;
|
||||
|
||||
/* enable bus master (bit 2) and IO decoding (bit 0) */
|
||||
*(unsigned char *) 0xa9000004 |= 0x5;
|
||||
|
||||
/* enable native, copied from arch/ppc/k2boot/head.S */
|
||||
/* TODO - need volatile, need to be portable */
|
||||
*(unsigned char *) 0xa9000009 = 0xff;
|
||||
|
||||
/* ----- end of M1543 PCI setup ------ */
|
||||
|
||||
/* ----- reset on-board ether chip ------ */
|
||||
*((volatile u32 *) 0xa8020004) |= 1; /* decode I/O */
|
||||
*((volatile u32 *) 0xa8020010) = 0; /* set BAR address */
|
||||
|
||||
/* send reset command */
|
||||
*((volatile u32 *) 0xa6000000) = 1; /* do a soft reset */
|
||||
|
||||
/* disable ether chip */
|
||||
*((volatile u32 *) 0xa8020004) = 0; /* disable any decoding */
|
||||
|
||||
/* put it into sleep */
|
||||
*((volatile u32 *) 0xa8020040) = 0x80000000;
|
||||
|
||||
/* ----- end of reset on-board ether chip ------ */
|
||||
|
||||
/* ----------- switch PCI1 back to PCI MEM space ------------ */
|
||||
ddb_set_pdar(DDB_PCIW1, DDB_PCI_MEM_BASE, DDB_PCI_MEM_SIZE, 32, 0, 1);
|
||||
ddb_set_pmr(DDB_PCIINIT1, DDB_PCICMD_MEM, DDB_PCI_MEM_BASE, DDB_PCI_ACCESS_32);
|
||||
}
|
@ -1,109 +0,0 @@
|
||||
/*
|
||||
* The irq controller for vrc5476.
|
||||
*
|
||||
* Copyright (C) 2001 MontaVista Software Inc.
|
||||
* Author: jsun@mvista.com or jsun@junsun.net
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
*/
|
||||
#include <linux/init.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/irq.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/ptrace.h>
|
||||
|
||||
#include <asm/system.h>
|
||||
|
||||
#include <asm/ddb5xxx/ddb5xxx.h>
|
||||
|
||||
static int irq_base;
|
||||
|
||||
static void vrc5476_irq_enable(uint irq)
|
||||
{
|
||||
nile4_enable_irq(irq - irq_base);
|
||||
}
|
||||
|
||||
static void vrc5476_irq_disable(uint irq)
|
||||
{
|
||||
nile4_disable_irq(irq - irq_base);
|
||||
}
|
||||
|
||||
static unsigned int vrc5476_irq_startup(uint irq)
|
||||
{
|
||||
nile4_enable_irq(irq - irq_base);
|
||||
return 0;
|
||||
}
|
||||
|
||||
#define vrc5476_irq_shutdown vrc5476_irq_disable
|
||||
|
||||
static void vrc5476_irq_ack(uint irq)
|
||||
{
|
||||
nile4_clear_irq(irq - irq_base);
|
||||
nile4_disable_irq(irq - irq_base);
|
||||
}
|
||||
|
||||
static void vrc5476_irq_end(uint irq)
|
||||
{
|
||||
if(!(irq_desc[irq].status & (IRQ_DISABLED | IRQ_INPROGRESS)))
|
||||
vrc5476_irq_enable(irq);
|
||||
}
|
||||
|
||||
static hw_irq_controller vrc5476_irq_controller = {
|
||||
.typename = "vrc5476",
|
||||
.startup = vrc5476_irq_startup,
|
||||
.shutdown = vrc5476_irq_shutdown,
|
||||
.enable = vrc5476_irq_enable,
|
||||
.disable = vrc5476_irq_disable,
|
||||
.ack = vrc5476_irq_ack,
|
||||
.end = vrc5476_irq_end
|
||||
};
|
||||
|
||||
void __init
|
||||
vrc5476_irq_init(u32 base)
|
||||
{
|
||||
u32 i;
|
||||
|
||||
irq_base = base;
|
||||
for (i= base; i< base + NUM_VRC5476_IRQ; i++) {
|
||||
irq_desc[i].status = IRQ_DISABLED;
|
||||
irq_desc[i].action = NULL;
|
||||
irq_desc[i].depth = 1;
|
||||
irq_desc[i].handler = &vrc5476_irq_controller;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
vrc5476_irq_dispatch(struct pt_regs *regs)
|
||||
{
|
||||
u32 mask;
|
||||
int nile4_irq;
|
||||
|
||||
mask = nile4_get_irq_stat(0);
|
||||
|
||||
/* quick check for possible time interrupt */
|
||||
if (mask & (1 << VRC5476_IRQ_GPT)) {
|
||||
do_IRQ(VRC5476_IRQ_BASE + VRC5476_IRQ_GPT, regs);
|
||||
return;
|
||||
}
|
||||
|
||||
/* check for i8259 interrupts */
|
||||
if (mask & (1 << VRC5476_I8259_CASCADE)) {
|
||||
int i8259_irq = nile4_i8259_iack();
|
||||
do_IRQ(I8259_IRQ_BASE + i8259_irq, regs);
|
||||
return;
|
||||
}
|
||||
|
||||
/* regular nile4 interrupts (we should not really have any */
|
||||
for (nile4_irq = 0; mask; nile4_irq++, mask >>= 1) {
|
||||
if (mask & 1) {
|
||||
do_IRQ(VRC5476_IRQ_BASE + nile4_irq, regs);
|
||||
return;
|
||||
}
|
||||
}
|
||||
spurious_interrupt(regs);
|
||||
}
|
@ -171,7 +171,7 @@ static void ddb5477_board_init(void);
|
||||
extern struct pci_controller ddb5477_ext_controller;
|
||||
extern struct pci_controller ddb5477_io_controller;
|
||||
|
||||
void __init plat_setup(void)
|
||||
void __init plat_mem_setup(void)
|
||||
{
|
||||
/* initialize board - we don't trust the loader */
|
||||
ddb5477_board_init();
|
||||
|
@ -147,7 +147,7 @@ static void __init dec_be_init(void)
|
||||
extern void dec_time_init(void);
|
||||
extern void dec_timer_setup(struct irqaction *);
|
||||
|
||||
void __init plat_setup(void)
|
||||
void __init plat_mem_setup(void)
|
||||
{
|
||||
board_be_init = dec_be_init;
|
||||
board_time_init = dec_time_init;
|
||||
|
@ -181,7 +181,7 @@ void __init dec_time_init(void)
|
||||
}
|
||||
|
||||
/* Set up the rate of periodic DS1287 interrupts. */
|
||||
CMOS_WRITE(RTC_REF_CLCK_32KHZ | (16 - LOG_2_HZ), RTC_REG_A);
|
||||
CMOS_WRITE(RTC_REF_CLCK_32KHZ | (16 - __ffs(HZ)), RTC_REG_A);
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL(do_settimeofday);
|
||||
|
@ -41,8 +41,6 @@ CONFIG_MIPS=y
|
||||
# CONFIG_MIPS_XXS1500 is not set
|
||||
# CONFIG_PNX8550_V2PCI is not set
|
||||
# CONFIG_PNX8550_JBS is not set
|
||||
# CONFIG_DDB5074 is not set
|
||||
# CONFIG_DDB5476 is not set
|
||||
# CONFIG_DDB5477 is not set
|
||||
# CONFIG_MACH_VR41XX is not set
|
||||
# CONFIG_PMC_YOSEMITE is not set
|
||||
@ -136,6 +134,15 @@ CONFIG_FLATMEM=y
|
||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||
# CONFIG_SPARSEMEM_STATIC is not set
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
# CONFIG_HZ_48 is not set
|
||||
# CONFIG_HZ_100 is not set
|
||||
# CONFIG_HZ_128 is not set
|
||||
# CONFIG_HZ_250 is not set
|
||||
# CONFIG_HZ_256 is not set
|
||||
CONFIG_HZ_1000=y
|
||||
# CONFIG_HZ_1024 is not set
|
||||
CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
|
||||
CONFIG_HZ=1000
|
||||
# CONFIG_PREEMPT_NONE is not set
|
||||
CONFIG_PREEMPT_VOLUNTARY=y
|
||||
# CONFIG_PREEMPT is not set
|
||||
|
13
arch/mips/emma2rh/common/Makefile
Normal file
13
arch/mips/emma2rh/common/Makefile
Normal file
@ -0,0 +1,13 @@
|
||||
#
|
||||
# arch/mips/emma2rh/common/Makefile
|
||||
# Makefile for the common code of NEC EMMA2RH based board.
|
||||
#
|
||||
# Copyright (C) NEC Electronics Corporation 2005-2006
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
|
||||
obj-$(CONFIG_MARKEINS) += irq.o irq_emma2rh.o prom.o
|
108
arch/mips/emma2rh/common/irq.c
Normal file
108
arch/mips/emma2rh/common/irq.c
Normal file
@ -0,0 +1,108 @@
|
||||
/*
|
||||
* arch/mips/emma2rh/common/irq.c
|
||||
* This file is common irq dispatcher.
|
||||
*
|
||||
* Copyright (C) NEC Electronics Corporation 2005-2006
|
||||
*
|
||||
* This file is based on the arch/mips/ddb5xxx/ddb5477/irq.c
|
||||
*
|
||||
* Copyright 2001 MontaVista Software Inc.
|
||||
*
|
||||
* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
#include <linux/config.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/irq.h>
|
||||
#include <linux/types.h>
|
||||
|
||||
#include <asm/i8259.h>
|
||||
#include <asm/system.h>
|
||||
#include <asm/mipsregs.h>
|
||||
#include <asm/debug.h>
|
||||
#include <asm/addrspace.h>
|
||||
#include <asm/bootinfo.h>
|
||||
|
||||
#include <asm/emma2rh/emma2rh.h>
|
||||
|
||||
/*
|
||||
* the first level int-handler will jump here if it is a emma2rh irq
|
||||
*/
|
||||
asmlinkage void emma2rh_irq_dispatch(struct pt_regs *regs)
|
||||
{
|
||||
u32 intStatus;
|
||||
u32 bitmask;
|
||||
u32 i;
|
||||
|
||||
intStatus = emma2rh_in32(EMMA2RH_BHIF_INT_ST_0)
|
||||
& emma2rh_in32(EMMA2RH_BHIF_INT_EN_0);
|
||||
|
||||
#ifdef EMMA2RH_SW_CASCADE
|
||||
if (intStatus &
|
||||
(1 << ((EMMA2RH_SW_CASCADE - EMMA2RH_IRQ_INT0) & (32 - 1)))) {
|
||||
u32 swIntStatus;
|
||||
swIntStatus = emma2rh_in32(EMMA2RH_BHIF_SW_INT)
|
||||
& emma2rh_in32(EMMA2RH_BHIF_SW_INT_EN);
|
||||
for (i = 0, bitmask = 1; i < 32; i++, bitmask <<= 1) {
|
||||
if (swIntStatus & bitmask) {
|
||||
do_IRQ(EMMA2RH_SW_IRQ_BASE + i, regs);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
for (i = 0, bitmask = 1; i < 32; i++, bitmask <<= 1) {
|
||||
if (intStatus & bitmask) {
|
||||
do_IRQ(EMMA2RH_IRQ_BASE + i, regs);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
intStatus = emma2rh_in32(EMMA2RH_BHIF_INT_ST_1)
|
||||
& emma2rh_in32(EMMA2RH_BHIF_INT_EN_1);
|
||||
|
||||
#ifdef EMMA2RH_GPIO_CASCADE
|
||||
if (intStatus &
|
||||
(1 << ((EMMA2RH_GPIO_CASCADE - EMMA2RH_IRQ_INT0) & (32 - 1)))) {
|
||||
u32 gpioIntStatus;
|
||||
gpioIntStatus = emma2rh_in32(EMMA2RH_GPIO_INT_ST)
|
||||
& emma2rh_in32(EMMA2RH_GPIO_INT_MASK);
|
||||
for (i = 0, bitmask = 1; i < 32; i++, bitmask <<= 1) {
|
||||
if (gpioIntStatus & bitmask) {
|
||||
do_IRQ(EMMA2RH_GPIO_IRQ_BASE + i, regs);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
for (i = 32, bitmask = 1; i < 64; i++, bitmask <<= 1) {
|
||||
if (intStatus & bitmask) {
|
||||
do_IRQ(EMMA2RH_IRQ_BASE + i, regs);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
intStatus = emma2rh_in32(EMMA2RH_BHIF_INT_ST_2)
|
||||
& emma2rh_in32(EMMA2RH_BHIF_INT_EN_2);
|
||||
|
||||
for (i = 64, bitmask = 1; i < 96; i++, bitmask <<= 1) {
|
||||
if (intStatus & bitmask) {
|
||||
do_IRQ(EMMA2RH_IRQ_BASE + i, regs);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
134
arch/mips/emma2rh/common/irq_emma2rh.c
Normal file
134
arch/mips/emma2rh/common/irq_emma2rh.c
Normal file
@ -0,0 +1,134 @@
|
||||
/*
|
||||
* arch/mips/emma2rh/common/irq_emma2rh.c
|
||||
* This file defines the irq handler for EMMA2RH.
|
||||
*
|
||||
* Copyright (C) NEC Electronics Corporation 2005-2006
|
||||
*
|
||||
* This file is based on the arch/mips/ddb5xxx/ddb5477/irq_5477.c
|
||||
*
|
||||
* Copyright 2001 MontaVista Software Inc.
|
||||
*
|
||||
* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
/*
|
||||
* EMMA2RH defines 64 IRQs.
|
||||
*
|
||||
* This file exports one function:
|
||||
* emma2rh_irq_init(u32 irq_base);
|
||||
*/
|
||||
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/ptrace.h>
|
||||
|
||||
#include <asm/debug.h>
|
||||
|
||||
#include <asm/emma2rh/emma2rh.h>
|
||||
|
||||
/* number of total irqs supported by EMMA2RH */
|
||||
#define NUM_EMMA2RH_IRQ 96
|
||||
|
||||
static int emma2rh_irq_base = -1;
|
||||
|
||||
void ll_emma2rh_irq_enable(int);
|
||||
void ll_emma2rh_irq_disable(int);
|
||||
|
||||
static void emma2rh_irq_enable(unsigned int irq)
|
||||
{
|
||||
ll_emma2rh_irq_enable(irq - emma2rh_irq_base);
|
||||
}
|
||||
|
||||
static void emma2rh_irq_disable(unsigned int irq)
|
||||
{
|
||||
ll_emma2rh_irq_disable(irq - emma2rh_irq_base);
|
||||
}
|
||||
|
||||
static unsigned int emma2rh_irq_startup(unsigned int irq)
|
||||
{
|
||||
emma2rh_irq_enable(irq);
|
||||
return 0;
|
||||
}
|
||||
|
||||
#define emma2rh_irq_shutdown emma2rh_irq_disable
|
||||
|
||||
static void emma2rh_irq_ack(unsigned int irq)
|
||||
{
|
||||
/* disable interrupt - some handler will re-enable the irq
|
||||
* and if the interrupt is leveled, we will have infinite loop
|
||||
*/
|
||||
ll_emma2rh_irq_disable(irq - emma2rh_irq_base);
|
||||
}
|
||||
|
||||
static void emma2rh_irq_end(unsigned int irq)
|
||||
{
|
||||
if (!(irq_desc[irq].status & (IRQ_DISABLED | IRQ_INPROGRESS)))
|
||||
ll_emma2rh_irq_enable(irq - emma2rh_irq_base);
|
||||
}
|
||||
|
||||
hw_irq_controller emma2rh_irq_controller = {
|
||||
.typename = "emma2rh_irq",
|
||||
.startup = emma2rh_irq_startup,
|
||||
.shutdown = emma2rh_irq_shutdown,
|
||||
.enable = emma2rh_irq_enable,
|
||||
.disable = emma2rh_irq_disable,
|
||||
.ack = emma2rh_irq_ack,
|
||||
.end = emma2rh_irq_end,
|
||||
.set_affinity = NULL /* no affinity stuff for UP */
|
||||
};
|
||||
|
||||
void emma2rh_irq_init(u32 irq_base)
|
||||
{
|
||||
u32 i;
|
||||
|
||||
for (i = irq_base; i < irq_base + NUM_EMMA2RH_IRQ; i++) {
|
||||
irq_desc[i].status = IRQ_DISABLED;
|
||||
irq_desc[i].action = NULL;
|
||||
irq_desc[i].depth = 1;
|
||||
irq_desc[i].handler = &emma2rh_irq_controller;
|
||||
}
|
||||
|
||||
emma2rh_irq_base = irq_base;
|
||||
}
|
||||
|
||||
void ll_emma2rh_irq_enable(int emma2rh_irq)
|
||||
{
|
||||
u32 reg_value;
|
||||
u32 reg_bitmask;
|
||||
u32 reg_index;
|
||||
|
||||
reg_index = EMMA2RH_BHIF_INT_EN_0
|
||||
+ (EMMA2RH_BHIF_INT_EN_1 - EMMA2RH_BHIF_INT_EN_0)
|
||||
* (emma2rh_irq / 32);
|
||||
reg_value = emma2rh_in32(reg_index);
|
||||
reg_bitmask = 0x1 << (emma2rh_irq % 32);
|
||||
db_assert((reg_value & reg_bitmask) == 0);
|
||||
emma2rh_out32(reg_index, reg_value | reg_bitmask);
|
||||
}
|
||||
|
||||
void ll_emma2rh_irq_disable(int emma2rh_irq)
|
||||
{
|
||||
u32 reg_value;
|
||||
u32 reg_bitmask;
|
||||
u32 reg_index;
|
||||
|
||||
reg_index = EMMA2RH_BHIF_INT_EN_0
|
||||
+ (EMMA2RH_BHIF_INT_EN_1 - EMMA2RH_BHIF_INT_EN_0)
|
||||
* (emma2rh_irq / 32);
|
||||
reg_value = emma2rh_in32(reg_index);
|
||||
reg_bitmask = 0x1 << (emma2rh_irq % 32);
|
||||
db_assert((reg_value & reg_bitmask) != 0);
|
||||
emma2rh_out32(reg_index, reg_value & ~reg_bitmask);
|
||||
}
|
77
arch/mips/emma2rh/common/prom.c
Normal file
77
arch/mips/emma2rh/common/prom.c
Normal file
@ -0,0 +1,77 @@
|
||||
/*
|
||||
* arch/mips/emma2rh/common/prom.c
|
||||
* This file is prom file.
|
||||
*
|
||||
* Copyright (C) NEC Electronics Corporation 2004-2006
|
||||
*
|
||||
* This file is based on the arch/mips/ddb5xxx/common/prom.c
|
||||
*
|
||||
* Copyright 2001 MontaVista Software Inc.
|
||||
*
|
||||
* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
#include <linux/config.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/mm.h>
|
||||
#include <linux/sched.h>
|
||||
#include <linux/bootmem.h>
|
||||
|
||||
#include <asm/addrspace.h>
|
||||
#include <asm/bootinfo.h>
|
||||
#include <asm/emma2rh/emma2rh.h>
|
||||
#include <asm/debug.h>
|
||||
|
||||
const char *get_system_type(void)
|
||||
{
|
||||
switch (mips_machtype) {
|
||||
case MACH_NEC_MARKEINS:
|
||||
return "NEC EMMA2RH Mark-eins";
|
||||
default:
|
||||
return "Unknown NEC board";
|
||||
}
|
||||
}
|
||||
|
||||
/* [jsun@junsun.net] PMON passes arguments in C main() style */
|
||||
void __init prom_init(void)
|
||||
{
|
||||
int argc = fw_arg0;
|
||||
char **arg = (char **)fw_arg1;
|
||||
int i;
|
||||
|
||||
/* if user passes kernel args, ignore the default one */
|
||||
if (argc > 1)
|
||||
arcs_cmdline[0] = '\0';
|
||||
|
||||
/* arg[0] is "g", the rest is boot parameters */
|
||||
for (i = 1; i < argc; i++) {
|
||||
if (strlen(arcs_cmdline) + strlen(arg[i] + 1)
|
||||
>= sizeof(arcs_cmdline))
|
||||
break;
|
||||
strcat(arcs_cmdline, arg[i]);
|
||||
strcat(arcs_cmdline, " ");
|
||||
}
|
||||
|
||||
mips_machgroup = MACH_GROUP_NEC_EMMA2RH;
|
||||
|
||||
#if defined(CONFIG_MARKEINS)
|
||||
mips_machtype = MACH_NEC_MARKEINS;
|
||||
add_memory_region(0, EMMA2RH_RAM_SIZE, BOOT_MEM_RAM);
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
void __init prom_free_prom_memory(void)
|
||||
{
|
||||
}
|
13
arch/mips/emma2rh/markeins/Makefile
Normal file
13
arch/mips/emma2rh/markeins/Makefile
Normal file
@ -0,0 +1,13 @@
|
||||
#
|
||||
# arch/mips/emma2rh/markeins/Makefile
|
||||
# Makefile for the common code of NEC EMMA2RH based board.
|
||||
#
|
||||
# Copyright (C) NEC Electronics Corporation 2005-2006
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
|
||||
obj-$(CONFIG_MARKEINS) += irq.o irq_markeins.o setup.o led.o platform.o
|
134
arch/mips/emma2rh/markeins/irq.c
Normal file
134
arch/mips/emma2rh/markeins/irq.c
Normal file
@ -0,0 +1,134 @@
|
||||
/*
|
||||
* arch/mips/emma2rh/markeins/irq.c
|
||||
* This file defines the irq handler for EMMA2RH.
|
||||
*
|
||||
* Copyright (C) NEC Electronics Corporation 2004-2006
|
||||
*
|
||||
* This file is based on the arch/mips/ddb5xxx/ddb5477/irq.c
|
||||
*
|
||||
* Copyright 2001 MontaVista Software Inc.
|
||||
*
|
||||
* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
#include <linux/config.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/irq.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/ptrace.h>
|
||||
#include <linux/delay.h>
|
||||
|
||||
#include <asm/i8259.h>
|
||||
#include <asm/irq_cpu.h>
|
||||
#include <asm/system.h>
|
||||
#include <asm/mipsregs.h>
|
||||
#include <asm/debug.h>
|
||||
#include <asm/addrspace.h>
|
||||
#include <asm/bootinfo.h>
|
||||
|
||||
#include <asm/emma2rh/emma2rh.h>
|
||||
|
||||
/*
|
||||
* IRQ mapping
|
||||
*
|
||||
* 0-7: 8 CPU interrupts
|
||||
* 0 - software interrupt 0
|
||||
* 1 - software interrupt 1
|
||||
* 2 - most Vrc5477 interrupts are routed to this pin
|
||||
* 3 - (optional) some other interrupts routed to this pin for debugg
|
||||
* 4 - not used
|
||||
* 5 - not used
|
||||
* 6 - not used
|
||||
* 7 - cpu timer (used by default)
|
||||
*
|
||||
*/
|
||||
|
||||
extern void emma2rh_sw_irq_init(u32 base);
|
||||
extern void emma2rh_gpio_irq_init(u32 base);
|
||||
extern void emma2rh_irq_init(u32 base);
|
||||
extern asmlinkage void emma2rh_irq_dispatch(struct pt_regs *regs);
|
||||
|
||||
static struct irqaction irq_cascade = {
|
||||
.handler = no_action,
|
||||
.flags = 0,
|
||||
.mask = CPU_MASK_NONE,
|
||||
.name = "cascade",
|
||||
.dev_id = NULL,
|
||||
.next = NULL,
|
||||
};
|
||||
|
||||
void __init arch_init_irq(void)
|
||||
{
|
||||
u32 reg;
|
||||
|
||||
db_run(printk("markeins_irq_setup invoked.\n"));
|
||||
|
||||
/* by default, interrupts are disabled. */
|
||||
emma2rh_out32(EMMA2RH_BHIF_INT_EN_0, 0);
|
||||
emma2rh_out32(EMMA2RH_BHIF_INT_EN_1, 0);
|
||||
emma2rh_out32(EMMA2RH_BHIF_INT_EN_2, 0);
|
||||
emma2rh_out32(EMMA2RH_BHIF_INT1_EN_0, 0);
|
||||
emma2rh_out32(EMMA2RH_BHIF_INT1_EN_1, 0);
|
||||
emma2rh_out32(EMMA2RH_BHIF_INT1_EN_2, 0);
|
||||
emma2rh_out32(EMMA2RH_BHIF_SW_INT_EN, 0);
|
||||
|
||||
clear_c0_status(0xff00);
|
||||
set_c0_status(0x0400);
|
||||
|
||||
#define GPIO_PCI (0xf<<15)
|
||||
/* setup GPIO interrupt for PCI interface */
|
||||
/* direction input */
|
||||
reg = emma2rh_in32(EMMA2RH_GPIO_DIR);
|
||||
emma2rh_out32(EMMA2RH_GPIO_DIR, reg & ~GPIO_PCI);
|
||||
/* disable interrupt */
|
||||
reg = emma2rh_in32(EMMA2RH_GPIO_INT_MASK);
|
||||
emma2rh_out32(EMMA2RH_GPIO_INT_MASK, reg & ~GPIO_PCI);
|
||||
/* level triggerd */
|
||||
reg = emma2rh_in32(EMMA2RH_GPIO_INT_MODE);
|
||||
emma2rh_out32(EMMA2RH_GPIO_INT_MODE, reg | GPIO_PCI);
|
||||
reg = emma2rh_in32(EMMA2RH_GPIO_INT_CND_A);
|
||||
emma2rh_out32(EMMA2RH_GPIO_INT_CND_A, reg & (~GPIO_PCI));
|
||||
/* interrupt clear */
|
||||
emma2rh_out32(EMMA2RH_GPIO_INT_ST, ~GPIO_PCI);
|
||||
|
||||
/* init all controllers */
|
||||
emma2rh_irq_init(EMMA2RH_IRQ_BASE);
|
||||
emma2rh_sw_irq_init(EMMA2RH_SW_IRQ_BASE);
|
||||
emma2rh_gpio_irq_init(EMMA2RH_GPIO_IRQ_BASE);
|
||||
mips_cpu_irq_init(CPU_IRQ_BASE);
|
||||
|
||||
/* setup cascade interrupts */
|
||||
setup_irq(EMMA2RH_IRQ_BASE + EMMA2RH_SW_CASCADE, &irq_cascade);
|
||||
setup_irq(EMMA2RH_IRQ_BASE + EMMA2RH_GPIO_CASCADE, &irq_cascade);
|
||||
setup_irq(CPU_IRQ_BASE + CPU_EMMA2RH_CASCADE, &irq_cascade);
|
||||
}
|
||||
|
||||
asmlinkage void plat_irq_dispatch(struct pt_regs *regs)
|
||||
{
|
||||
unsigned int pending = read_c0_status() & read_c0_cause();
|
||||
|
||||
if (pending & STATUSF_IP7)
|
||||
do_IRQ(CPU_IRQ_BASE + 7, regs);
|
||||
else if (pending & STATUSF_IP2)
|
||||
emma2rh_irq_dispatch(regs);
|
||||
else if (pending & STATUSF_IP1)
|
||||
do_IRQ(CPU_IRQ_BASE + 1, regs);
|
||||
else if (pending & STATUSF_IP0)
|
||||
do_IRQ(CPU_IRQ_BASE + 0, regs);
|
||||
else
|
||||
spurious_interrupt(regs);
|
||||
}
|
||||
|
||||
|
197
arch/mips/emma2rh/markeins/irq_markeins.c
Normal file
197
arch/mips/emma2rh/markeins/irq_markeins.c
Normal file
@ -0,0 +1,197 @@
|
||||
/*
|
||||
* arch/mips/emma2rh/markeins/irq_markeins.c
|
||||
* This file defines the irq handler for Mark-eins.
|
||||
*
|
||||
* Copyright (C) NEC Electronics Corporation 2004-2006
|
||||
*
|
||||
* This file is based on the arch/mips/ddb5xxx/ddb5477/irq_5477.c
|
||||
*
|
||||
* Copyright 2001 MontaVista Software Inc.
|
||||
*
|
||||
* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/irq.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/ptrace.h>
|
||||
|
||||
#include <asm/debug.h>
|
||||
#include <asm/emma2rh/emma2rh.h>
|
||||
|
||||
static int emma2rh_sw_irq_base = -1;
|
||||
static int emma2rh_gpio_irq_base = -1;
|
||||
|
||||
void ll_emma2rh_sw_irq_enable(int reg);
|
||||
void ll_emma2rh_sw_irq_disable(int reg);
|
||||
void ll_emma2rh_gpio_irq_enable(int reg);
|
||||
void ll_emma2rh_gpio_irq_disable(int reg);
|
||||
|
||||
static void emma2rh_sw_irq_enable(unsigned int irq)
|
||||
{
|
||||
ll_emma2rh_sw_irq_enable(irq - emma2rh_sw_irq_base);
|
||||
}
|
||||
|
||||
static void emma2rh_sw_irq_disable(unsigned int irq)
|
||||
{
|
||||
ll_emma2rh_sw_irq_disable(irq - emma2rh_sw_irq_base);
|
||||
}
|
||||
|
||||
static unsigned int emma2rh_sw_irq_startup(unsigned int irq)
|
||||
{
|
||||
emma2rh_sw_irq_enable(irq);
|
||||
return 0;
|
||||
}
|
||||
|
||||
#define emma2rh_sw_irq_shutdown emma2rh_sw_irq_disable
|
||||
|
||||
static void emma2rh_sw_irq_ack(unsigned int irq)
|
||||
{
|
||||
ll_emma2rh_sw_irq_disable(irq - emma2rh_sw_irq_base);
|
||||
}
|
||||
|
||||
static void emma2rh_sw_irq_end(unsigned int irq)
|
||||
{
|
||||
if (!(irq_desc[irq].status & (IRQ_DISABLED | IRQ_INPROGRESS)))
|
||||
ll_emma2rh_sw_irq_enable(irq - emma2rh_sw_irq_base);
|
||||
}
|
||||
|
||||
hw_irq_controller emma2rh_sw_irq_controller = {
|
||||
.typename = "emma2rh_sw_irq",
|
||||
.startup = emma2rh_sw_irq_startup,
|
||||
.shutdown = emma2rh_sw_irq_shutdown,
|
||||
.enable = emma2rh_sw_irq_enable,
|
||||
.disable = emma2rh_sw_irq_disable,
|
||||
.ack = emma2rh_sw_irq_ack,
|
||||
.end = emma2rh_sw_irq_end,
|
||||
.set_affinity = NULL,
|
||||
};
|
||||
|
||||
void emma2rh_sw_irq_init(u32 irq_base)
|
||||
{
|
||||
u32 i;
|
||||
|
||||
for (i = irq_base; i < irq_base + NUM_EMMA2RH_IRQ_SW; i++) {
|
||||
irq_desc[i].status = IRQ_DISABLED;
|
||||
irq_desc[i].action = NULL;
|
||||
irq_desc[i].depth = 2;
|
||||
irq_desc[i].handler = &emma2rh_sw_irq_controller;
|
||||
}
|
||||
|
||||
emma2rh_sw_irq_base = irq_base;
|
||||
}
|
||||
|
||||
void ll_emma2rh_sw_irq_enable(int irq)
|
||||
{
|
||||
u32 reg;
|
||||
|
||||
db_assert(irq >= 0);
|
||||
db_assert(irq < NUM_EMMA2RH_IRQ_SW);
|
||||
|
||||
reg = emma2rh_in32(EMMA2RH_BHIF_SW_INT_EN);
|
||||
reg |= 1 << irq;
|
||||
emma2rh_out32(EMMA2RH_BHIF_SW_INT_EN, reg);
|
||||
}
|
||||
|
||||
void ll_emma2rh_sw_irq_disable(int irq)
|
||||
{
|
||||
u32 reg;
|
||||
|
||||
db_assert(irq >= 0);
|
||||
db_assert(irq < 32);
|
||||
|
||||
reg = emma2rh_in32(EMMA2RH_BHIF_SW_INT_EN);
|
||||
reg &= ~(1 << irq);
|
||||
emma2rh_out32(EMMA2RH_BHIF_SW_INT_EN, reg);
|
||||
}
|
||||
|
||||
static void emma2rh_gpio_irq_enable(unsigned int irq)
|
||||
{
|
||||
ll_emma2rh_gpio_irq_enable(irq - emma2rh_gpio_irq_base);
|
||||
}
|
||||
|
||||
static void emma2rh_gpio_irq_disable(unsigned int irq)
|
||||
{
|
||||
ll_emma2rh_gpio_irq_disable(irq - emma2rh_gpio_irq_base);
|
||||
}
|
||||
|
||||
static unsigned int emma2rh_gpio_irq_startup(unsigned int irq)
|
||||
{
|
||||
emma2rh_gpio_irq_enable(irq);
|
||||
return 0;
|
||||
}
|
||||
|
||||
#define emma2rh_gpio_irq_shutdown emma2rh_gpio_irq_disable
|
||||
|
||||
static void emma2rh_gpio_irq_ack(unsigned int irq)
|
||||
{
|
||||
irq -= emma2rh_gpio_irq_base;
|
||||
emma2rh_out32(EMMA2RH_GPIO_INT_ST, ~(1 << irq));
|
||||
ll_emma2rh_gpio_irq_disable(irq);
|
||||
}
|
||||
|
||||
static void emma2rh_gpio_irq_end(unsigned int irq)
|
||||
{
|
||||
if (!(irq_desc[irq].status & (IRQ_DISABLED | IRQ_INPROGRESS)))
|
||||
ll_emma2rh_gpio_irq_enable(irq - emma2rh_gpio_irq_base);
|
||||
}
|
||||
|
||||
hw_irq_controller emma2rh_gpio_irq_controller = {
|
||||
.typename = "emma2rh_gpio_irq",
|
||||
.startup = emma2rh_gpio_irq_startup,
|
||||
.shutdown = emma2rh_gpio_irq_shutdown,
|
||||
.enable = emma2rh_gpio_irq_enable,
|
||||
.disable = emma2rh_gpio_irq_disable,
|
||||
.ack = emma2rh_gpio_irq_ack,
|
||||
.end = emma2rh_gpio_irq_end,
|
||||
.set_affinity = NULL,
|
||||
};
|
||||
|
||||
void emma2rh_gpio_irq_init(u32 irq_base)
|
||||
{
|
||||
u32 i;
|
||||
|
||||
for (i = irq_base; i < irq_base + NUM_EMMA2RH_IRQ_GPIO; i++) {
|
||||
irq_desc[i].status = IRQ_DISABLED;
|
||||
irq_desc[i].action = NULL;
|
||||
irq_desc[i].depth = 2;
|
||||
irq_desc[i].handler = &emma2rh_gpio_irq_controller;
|
||||
}
|
||||
|
||||
emma2rh_gpio_irq_base = irq_base;
|
||||
}
|
||||
|
||||
void ll_emma2rh_gpio_irq_enable(int irq)
|
||||
{
|
||||
u32 reg;
|
||||
|
||||
db_assert(irq >= 0);
|
||||
db_assert(irq < NUM_EMMA2RH_IRQ_GPIO);
|
||||
|
||||
reg = emma2rh_in32(EMMA2RH_GPIO_INT_MASK);
|
||||
reg |= 1 << irq;
|
||||
emma2rh_out32(EMMA2RH_GPIO_INT_MASK, reg);
|
||||
}
|
||||
|
||||
void ll_emma2rh_gpio_irq_disable(int irq)
|
||||
{
|
||||
u32 reg;
|
||||
|
||||
db_assert(irq >= 0);
|
||||
db_assert(irq < NUM_EMMA2RH_IRQ_GPIO);
|
||||
|
||||
reg = emma2rh_in32(EMMA2RH_GPIO_INT_MASK);
|
||||
reg &= ~(1 << irq);
|
||||
emma2rh_out32(EMMA2RH_GPIO_INT_MASK, reg);
|
||||
}
|
60
arch/mips/emma2rh/markeins/led.c
Normal file
60
arch/mips/emma2rh/markeins/led.c
Normal file
@ -0,0 +1,60 @@
|
||||
/*
|
||||
* arch/mips/emma2rh/markeins/led.c
|
||||
* This file defines the led display for Mark-eins.
|
||||
*
|
||||
* Copyright (C) NEC Electronics Corporation 2004-2006
|
||||
*
|
||||
* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/string.h>
|
||||
#include <asm/emma2rh/emma2rh.h>
|
||||
|
||||
const unsigned long clear = 0x20202020;
|
||||
|
||||
#define LED_BASE 0xb1400038
|
||||
|
||||
void markeins_led_clear(void)
|
||||
{
|
||||
emma2rh_out32(LED_BASE, clear);
|
||||
emma2rh_out32(LED_BASE + 4, clear);
|
||||
}
|
||||
|
||||
void markeins_led(const char *str)
|
||||
{
|
||||
int i;
|
||||
int len = strlen(str);
|
||||
|
||||
markeins_led_clear();
|
||||
if (len > 8)
|
||||
len = 8;
|
||||
|
||||
if (emma2rh_in32(0xb0000800) & (0x1 << 18))
|
||||
for (i = 0; i < len; i++)
|
||||
emma2rh_out8(LED_BASE + i, str[i]);
|
||||
else
|
||||
for (i = 0; i < len; i++)
|
||||
emma2rh_out8(LED_BASE + (i & 4) + (3 - (i & 3)),
|
||||
str[i]);
|
||||
}
|
||||
|
||||
void markeins_led_hex(u32 val)
|
||||
{
|
||||
char str[10];
|
||||
|
||||
sprintf(str, "%08x", val);
|
||||
markeins_led(str);
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user