forked from Minki/linux
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc
* 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc: (77 commits) [POWERPC] Abolish powerpc_flash_init() [POWERPC] Early serial debug support for PPC44x [POWERPC] Support for the Ebony 440GP reference board in arch/powerpc [POWERPC] Add device tree for Ebony [POWERPC] Add powerpc/platforms/44x, disable platforms/4xx for now [POWERPC] MPIC U3/U4 MSI backend [POWERPC] MPIC MSI allocator [POWERPC] Enable MSI mappings for MPIC [POWERPC] Tell Phyp we support MSI [POWERPC] RTAS MSI implementation [POWERPC] PowerPC MSI infrastructure [POWERPC] Rip out the existing powerpc msi stubs [POWERPC] Remove use of 4level-fixup.h for ppc32 [POWERPC] Add powerpc PCI-E reset API implementation [POWERPC] Holly bootwrapper [POWERPC] Holly DTS [POWERPC] Holly defconfig [POWERPC] Add support for 750CL Holly board [POWERPC] Generalize tsi108 PCI setup [POWERPC] Generalize tsi108 PHY types ... Fixed conflict in include/asm-powerpc/kdebug.h manually Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
commit
df6d3916f3
@ -1560,6 +1560,9 @@ platforms are moved over to use the flattened-device-tree model.
|
||||
network device. This is used by the bootwrapper to interpret
|
||||
MAC addresses passed by the firmware when no information other
|
||||
than indices is available to associate an address with a device.
|
||||
- phy-connection-type : a string naming the controller/PHY interface type,
|
||||
i.e., "mii" (default), "rmii", "gmii", "rgmii", "rgmii-id", "tbi",
|
||||
or "rtbi".
|
||||
|
||||
Example:
|
||||
ucc@2000 {
|
||||
@ -1574,6 +1577,7 @@ platforms are moved over to use the flattened-device-tree model.
|
||||
rx-clock = "none";
|
||||
tx-clock = "clk9";
|
||||
phy-handle = <212000>;
|
||||
phy-connection-type = "gmii";
|
||||
pio-handle = <140001>;
|
||||
};
|
||||
|
||||
|
@ -117,6 +117,9 @@ config GENERIC_BUG
|
||||
default y
|
||||
depends on BUG
|
||||
|
||||
config SYS_SUPPORTS_APM_EMULATION
|
||||
bool
|
||||
|
||||
#
|
||||
# Powerpc uses the slab allocator to manage its ptes and the
|
||||
# page structs of ptes are used for splitting the page table
|
||||
@ -136,6 +139,11 @@ config DEFAULT_UIMAGE
|
||||
Used to allow a board to specify it wants a uImage built by default
|
||||
default n
|
||||
|
||||
config PPC64_SWSUSP
|
||||
bool
|
||||
depends on PPC64 && (BROKEN || (PPC_PMAC64 && EXPERIMENTAL))
|
||||
default y
|
||||
|
||||
menu "Processor support"
|
||||
choice
|
||||
prompt "Processor Type"
|
||||
@ -206,6 +214,7 @@ config 40x
|
||||
config 44x
|
||||
bool "AMCC 44x"
|
||||
select PPC_DCR_NATIVE
|
||||
select WANT_DEVICE_TREE
|
||||
|
||||
config E200
|
||||
bool "Freescale e200"
|
||||
@ -270,9 +279,14 @@ config PPC_OF_PLATFORM_PCI
|
||||
depends on PPC64 # not supported on 32 bits yet
|
||||
default n
|
||||
|
||||
config 4xx
|
||||
bool
|
||||
depends on 40x || 44x
|
||||
default y
|
||||
|
||||
config BOOKE
|
||||
bool
|
||||
depends on E200 || E500
|
||||
depends on E200 || E500 || 44x
|
||||
default y
|
||||
|
||||
config FSL_BOOKE
|
||||
@ -669,11 +683,12 @@ config MCA
|
||||
config PCI
|
||||
bool "PCI support" if 40x || CPM2 || PPC_83xx || PPC_85xx || PPC_86xx \
|
||||
|| PPC_MPC52xx || (EMBEDDED && (PPC_PSERIES || PPC_ISERIES)) \
|
||||
|| MPC7448HPC2 || PPC_PS3
|
||||
|| MPC7448HPC2 || PPC_PS3 || PPC_HOLLY
|
||||
default y if !40x && !CPM2 && !8xx && !APUS && !PPC_83xx \
|
||||
&& !PPC_85xx && !PPC_86xx
|
||||
default PCI_PERMEDIA if !4xx && !CPM2 && !8xx && APUS
|
||||
default PCI_QSPAN if !4xx && !CPM2 && 8xx
|
||||
select ARCH_SUPPORTS_MSI
|
||||
help
|
||||
Find out whether your system includes a PCI bus. PCI is the name of
|
||||
a bus system, i.e. the way the CPU talks to the other stuff inside
|
||||
|
@ -139,10 +139,6 @@ config BOOTX_TEXT
|
||||
Say Y here to see progress messages from the boot firmware in text
|
||||
mode. Requires either BootX or Open Firmware.
|
||||
|
||||
config SERIAL_TEXT_DEBUG
|
||||
bool "Support for early boot texts over serial port"
|
||||
depends on 4xx
|
||||
|
||||
config PPC_EARLY_DEBUG
|
||||
bool "Early debugging (dangerous)"
|
||||
|
||||
@ -207,6 +203,24 @@ config PPC_EARLY_DEBUG_BEAT
|
||||
help
|
||||
Select this to enable early debugging for Celleb with Beat.
|
||||
|
||||
config PPC_EARLY_DEBUG_44x
|
||||
bool "Early serial debugging for IBM/AMCC 44x CPUs"
|
||||
depends on 44x
|
||||
select PPC_UDBG_16550
|
||||
help
|
||||
Select this to enable early debugging for IBM 44x chips via the
|
||||
inbuilt serial port.
|
||||
|
||||
endchoice
|
||||
|
||||
config PPC_EARLY_DEBUG_44x_PHYSLOW
|
||||
hex "Low 32 bits of early debug UART physical address"
|
||||
depends PPC_EARLY_DEBUG_44x
|
||||
default "0x40000200"
|
||||
|
||||
config PPC_EARLY_DEBUG_44x_PHYSHIGH
|
||||
hex "EPRN of early debug UART physical address"
|
||||
depends PPC_EARLY_DEBUG_44x
|
||||
default "0x1"
|
||||
|
||||
endmenu
|
||||
|
@ -148,7 +148,7 @@ all: $(KBUILD_IMAGE)
|
||||
|
||||
CPPFLAGS_vmlinux.lds := -Upowerpc
|
||||
|
||||
BOOT_TARGETS = zImage zImage.initrd uImage cuImage
|
||||
BOOT_TARGETS = zImage zImage.initrd uImage
|
||||
|
||||
PHONY += $(BOOT_TARGETS)
|
||||
|
||||
|
40
arch/powerpc/boot/44x.c
Normal file
40
arch/powerpc/boot/44x.c
Normal file
@ -0,0 +1,40 @@
|
||||
/*
|
||||
* Copyright 2007 David Gibson, IBM Corporation.
|
||||
*
|
||||
* Based on earlier code:
|
||||
* Matt Porter <mporter@kernel.crashing.org>
|
||||
* Copyright 2002-2005 MontaVista Software Inc.
|
||||
*
|
||||
* Eugene Surovegin <eugene.surovegin@zultys.com> or <ebs@ebshome.net>
|
||||
* Copyright (c) 2003, 2004 Zultys Technologies
|
||||
*
|
||||
* 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 <stddef.h>
|
||||
#include "types.h"
|
||||
#include "string.h"
|
||||
#include "stdio.h"
|
||||
#include "ops.h"
|
||||
#include "reg.h"
|
||||
#include "dcr.h"
|
||||
|
||||
/* Read the 44x memory controller to get size of system memory. */
|
||||
void ibm44x_fixup_memsize(void)
|
||||
{
|
||||
int i;
|
||||
unsigned long memsize, bank_config;
|
||||
|
||||
memsize = 0;
|
||||
for (i = 0; i < ARRAY_SIZE(sdram_bxcr); i++) {
|
||||
mtdcr(DCRN_SDRAM0_CFGADDR, sdram_bxcr[i]);
|
||||
bank_config = mfdcr(DCRN_SDRAM0_CFGDATA);
|
||||
|
||||
if (bank_config & SDRAM_CONFIG_BANK_ENABLE)
|
||||
memsize += SDRAM_CONFIG_BANK_SIZE(bank_config);
|
||||
}
|
||||
|
||||
dt_fixup_memory(0, memsize);
|
||||
}
|
16
arch/powerpc/boot/44x.h
Normal file
16
arch/powerpc/boot/44x.h
Normal file
@ -0,0 +1,16 @@
|
||||
/*
|
||||
* PowerPC 44x related functions
|
||||
*
|
||||
* Copyright 2007 David Gibson, IBM Corporation.
|
||||
*
|
||||
* This file is licensed under the terms of the GNU General Public
|
||||
* License version 2. This program is licensed "as is" without any
|
||||
* warranty of any kind, whether express or implied.
|
||||
*/
|
||||
#ifndef _PPC_BOOT_44X_H_
|
||||
#define _PPC_BOOT_44X_H_
|
||||
|
||||
void ibm44x_fixup_memsize(void);
|
||||
void ebony_init(void *mac0, void *mac1);
|
||||
|
||||
#endif /* _PPC_BOOT_44X_H_ */
|
@ -37,13 +37,15 @@ zlib := inffast.c inflate.c inftrees.c
|
||||
zlibheader := inffast.h inffixed.h inflate.h inftrees.h infutil.h
|
||||
zliblinuxheader := zlib.h zconf.h zutil.h
|
||||
|
||||
$(addprefix $(obj)/,$(zlib) main.o): $(addprefix $(obj)/,$(zliblinuxheader)) \
|
||||
$(addprefix $(obj)/,$(zlibheader))
|
||||
$(addprefix $(obj)/,$(zlib) gunzip_util.o main.o): \
|
||||
$(addprefix $(obj)/,$(zliblinuxheader)) $(addprefix $(obj)/,$(zlibheader))
|
||||
|
||||
src-wlib := string.S crt0.S stdio.c main.c flatdevtree.c flatdevtree_misc.c \
|
||||
ns16550.c serial.c simple_alloc.c div64.S util.S \
|
||||
gunzip_util.c elf_util.c $(zlib) devtree.c
|
||||
src-plat := of.c cuboot-83xx.c cuboot-85xx.c
|
||||
gunzip_util.c elf_util.c $(zlib) devtree.c \
|
||||
44x.c ebony.c
|
||||
src-plat := of.c cuboot-83xx.c cuboot-85xx.c holly.c \
|
||||
cuboot-ebony.c treeboot-ebony.c
|
||||
src-boot := $(src-wlib) $(src-plat) empty.c
|
||||
|
||||
src-boot := $(addprefix $(obj)/, $(src-boot))
|
||||
@ -129,7 +131,14 @@ image-$(CONFIG_PPC_CELLEB) += zImage.pseries
|
||||
image-$(CONFIG_PPC_CHRP) += zImage.chrp
|
||||
image-$(CONFIG_PPC_EFIKA) += zImage.chrp
|
||||
image-$(CONFIG_PPC_PMAC) += zImage.pmac
|
||||
image-$(CONFIG_DEFAULT_UIMAGE) += uImage cuImage
|
||||
image-$(CONFIG_PPC_HOLLY) += zImage.holly-elf
|
||||
image-$(CONFIG_DEFAULT_UIMAGE) += uImage
|
||||
|
||||
ifneq ($(CONFIG_DEVICE_TREE),"")
|
||||
image-$(CONFIG_PPC_83xx) += cuImage.83xx
|
||||
image-$(CONFIG_PPC_85xx) += cuImage.85xx
|
||||
image-$(CONFIG_EBONY) += treeImage.ebony cuImage.ebony
|
||||
endif
|
||||
|
||||
# For 32-bit powermacs, build the COFF and miboot images
|
||||
# as well as the ELF images.
|
||||
@ -138,7 +147,8 @@ image-$(CONFIG_PPC_PMAC) += zImage.coff zImage.miboot
|
||||
endif
|
||||
|
||||
initrd- := $(patsubst zImage%, zImage.initrd%, $(image-n) $(image-))
|
||||
initrd-y := $(patsubst zImage%, zImage.initrd%, $(image-y))
|
||||
initrd-y := $(patsubst zImage%, zImage.initrd%, \
|
||||
$(patsubst treeImage%, treeImage.initrd%, $(image-y)))
|
||||
initrd-y := $(filter-out $(image-y), $(initrd-y))
|
||||
targets += $(image-y) $(initrd-y)
|
||||
|
||||
@ -159,18 +169,27 @@ $(obj)/zImage.ps3: vmlinux
|
||||
$(obj)/zImage.initrd.ps3: vmlinux
|
||||
@echo " WARNING zImage.initrd.ps3 not supported (yet)"
|
||||
|
||||
$(obj)/zImage.holly-elf: vmlinux $(wrapperbits)
|
||||
$(call if_changed,wrap,holly,$(obj)/dts/holly.dts,,)
|
||||
|
||||
$(obj)/zImage.initrd.holly-elf: vmlinux $(wrapperbits) $(obj)/ramdisk.image.gz
|
||||
$(call if_changed,wrap,holly,$(obj)/dts/holly.dts,,$(obj)/ramdisk.image.gz)
|
||||
|
||||
$(obj)/uImage: vmlinux $(wrapperbits)
|
||||
$(call if_changed,wrap,uboot)
|
||||
|
||||
cuboot-plat-$(CONFIG_83xx) += 83xx
|
||||
cuboot-plat-$(CONFIG_85xx) += 85xx
|
||||
cuboot-plat-y += unknown-platform
|
||||
|
||||
# CONFIG_DEVICE_TREE will have "" around it, make sure to strip them
|
||||
dts = $(if $(shell echo $(CONFIG_DEVICE_TREE) | grep '^/'),\
|
||||
,$(srctree)/$(src)/dts/)$(CONFIG_DEVICE_TREE)
|
||||
,$(srctree)/$(src)/dts/)$(CONFIG_DEVICE_TREE:"%"=%)
|
||||
|
||||
$(obj)/cuImage: vmlinux $(wrapperbits)
|
||||
$(call if_changed,wrap,cuboot-$(word 1,$(cuboot-plat-y)),$(dts))
|
||||
$(obj)/cuImage.%: vmlinux $(dts) $(wrapperbits)
|
||||
$(call if_changed,wrap,cuboot-$*,$(dts))
|
||||
|
||||
$(obj)/treeImage.%: vmlinux $(dts) $(wrapperbits)
|
||||
$(call if_changed,wrap,treeboot-$*,$(dts))
|
||||
|
||||
$(obj)/treeImage.initrd.%: vmlinux $(dts) $(wrapperbits)
|
||||
$(call if_changed,wrap,treeboot-$*,$(dts),,$(obj)/ramdisk.image.gz)
|
||||
|
||||
$(obj)/zImage: $(addprefix $(obj)/, $(image-y))
|
||||
@rm -f $@; ln $< $@
|
||||
@ -181,8 +200,8 @@ install: $(CONFIGURE) $(addprefix $(obj)/, $(image-y))
|
||||
sh -x $(srctree)/$(src)/install.sh "$(KERNELRELEASE)" vmlinux System.map "$(INSTALL_PATH)" $<
|
||||
|
||||
# anything not in $(targets)
|
||||
clean-files += $(image-) $(initrd-) zImage zImage.initrd \
|
||||
cuImage.elf cuImage.bin.gz
|
||||
clean-files += $(image-) $(initrd-) zImage zImage.initrd cuImage.* \
|
||||
treeImage.*
|
||||
|
||||
# clean up files cached by wrapper
|
||||
clean-kernel := vmlinux.strip vmlinux.bin
|
||||
|
42
arch/powerpc/boot/cuboot-ebony.c
Normal file
42
arch/powerpc/boot/cuboot-ebony.c
Normal file
@ -0,0 +1,42 @@
|
||||
/*
|
||||
* Old U-boot compatibility for Ebony
|
||||
*
|
||||
* Author: David Gibson <david@gibson.dropbear.id.au>
|
||||
*
|
||||
* Copyright 2007 David Gibson, IBM Corporatio.
|
||||
* Based on cuboot-83xx.c, which is:
|
||||
* Copyright (c) 2007 Freescale Semiconductor, Inc.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 as published
|
||||
* by the Free Software Foundation.
|
||||
*/
|
||||
|
||||
#include "ops.h"
|
||||
#include "stdio.h"
|
||||
#include "44x.h"
|
||||
|
||||
#define TARGET_44x
|
||||
#include "ppcboot.h"
|
||||
|
||||
static bd_t bd;
|
||||
extern char _end[];
|
||||
|
||||
BSS_STACK(4096);
|
||||
|
||||
void platform_init(unsigned long r3, unsigned long r4, unsigned long r5,
|
||||
unsigned long r6, unsigned long r7)
|
||||
{
|
||||
unsigned long end_of_ram = bd.bi_memstart + bd.bi_memsize;
|
||||
unsigned long avail_ram = end_of_ram - (unsigned long)_end;
|
||||
|
||||
memcpy(&bd, (bd_t *)r3, sizeof(bd));
|
||||
loader_info.initrd_addr = r4;
|
||||
loader_info.initrd_size = r4 ? r5 : 0;
|
||||
loader_info.cmdline = (char *)r6;
|
||||
loader_info.cmdline_len = r7 - r6;
|
||||
|
||||
simple_alloc_init(_end, avail_ram, 32, 64);
|
||||
|
||||
ebony_init(&bd.bi_enetaddr, &bd.bi_enet1addr);
|
||||
}
|
87
arch/powerpc/boot/dcr.h
Normal file
87
arch/powerpc/boot/dcr.h
Normal file
@ -0,0 +1,87 @@
|
||||
#ifndef _PPC_BOOT_DCR_H_
|
||||
#define _PPC_BOOT_DCR_H_
|
||||
|
||||
#define mfdcr(rn) \
|
||||
({ \
|
||||
unsigned long rval; \
|
||||
asm volatile("mfdcr %0,%1" : "=r"(rval) : "i"(rn)); \
|
||||
rval; \
|
||||
})
|
||||
#define mtdcr(rn, val) \
|
||||
asm volatile("mtdcr %0,%1" : : "i"(rn), "r"(val))
|
||||
|
||||
/* 440GP/440GX SDRAM controller DCRs */
|
||||
#define DCRN_SDRAM0_CFGADDR 0x010
|
||||
#define DCRN_SDRAM0_CFGDATA 0x011
|
||||
|
||||
#define SDRAM0_B0CR 0x40
|
||||
#define SDRAM0_B1CR 0x44
|
||||
#define SDRAM0_B2CR 0x48
|
||||
#define SDRAM0_B3CR 0x4c
|
||||
|
||||
static const unsigned long sdram_bxcr[] = { SDRAM0_B0CR, SDRAM0_B1CR, SDRAM0_B2CR, SDRAM0_B3CR };
|
||||
|
||||
#define SDRAM_CONFIG_BANK_ENABLE 0x00000001
|
||||
#define SDRAM_CONFIG_SIZE_MASK 0x000e0000
|
||||
#define SDRAM_CONFIG_BANK_SIZE(reg) \
|
||||
(0x00400000 << ((reg & SDRAM_CONFIG_SIZE_MASK) >> 17))
|
||||
|
||||
/* 440GP Clock, PM, chip control */
|
||||
#define DCRN_CPC0_SR 0x0b0
|
||||
#define DCRN_CPC0_ER 0x0b1
|
||||
#define DCRN_CPC0_FR 0x0b2
|
||||
#define DCRN_CPC0_SYS0 0x0e0
|
||||
#define CPC0_SYS0_TUNE 0xffc00000
|
||||
#define CPC0_SYS0_FBDV_MASK 0x003c0000
|
||||
#define CPC0_SYS0_FWDVA_MASK 0x00038000
|
||||
#define CPC0_SYS0_FWDVB_MASK 0x00007000
|
||||
#define CPC0_SYS0_OPDV_MASK 0x00000c00
|
||||
#define CPC0_SYS0_EPDV_MASK 0x00000300
|
||||
/* Helper macros to compute the actual clock divider values from the
|
||||
* encodings in the CPC0 register */
|
||||
#define CPC0_SYS0_FBDV(reg) \
|
||||
((((((reg) & CPC0_SYS0_FBDV_MASK) >> 18) - 1) & 0xf) + 1)
|
||||
#define CPC0_SYS0_FWDVA(reg) \
|
||||
(8 - (((reg) & CPC0_SYS0_FWDVA_MASK) >> 15))
|
||||
#define CPC0_SYS0_FWDVB(reg) \
|
||||
(8 - (((reg) & CPC0_SYS0_FWDVB_MASK) >> 12))
|
||||
#define CPC0_SYS0_OPDV(reg) \
|
||||
((((reg) & CPC0_SYS0_OPDV_MASK) >> 10) + 1)
|
||||
#define CPC0_SYS0_EPDV(reg) \
|
||||
((((reg) & CPC0_SYS0_EPDV_MASK) >> 8) + 1)
|
||||
#define CPC0_SYS0_EXTSL 0x00000080
|
||||
#define CPC0_SYS0_RW_MASK 0x00000060
|
||||
#define CPC0_SYS0_RL 0x00000010
|
||||
#define CPC0_SYS0_ZMIISL_MASK 0x0000000c
|
||||
#define CPC0_SYS0_BYPASS 0x00000002
|
||||
#define CPC0_SYS0_NTO1 0x00000001
|
||||
#define DCRN_CPC0_SYS1 0x0e1
|
||||
#define DCRN_CPC0_CUST0 0x0e2
|
||||
#define DCRN_CPC0_CUST1 0x0e3
|
||||
#define DCRN_CPC0_STRP0 0x0e4
|
||||
#define DCRN_CPC0_STRP1 0x0e5
|
||||
#define DCRN_CPC0_STRP2 0x0e6
|
||||
#define DCRN_CPC0_STRP3 0x0e7
|
||||
#define DCRN_CPC0_GPIO 0x0e8
|
||||
#define DCRN_CPC0_PLB 0x0e9
|
||||
#define DCRN_CPC0_CR1 0x0ea
|
||||
#define DCRN_CPC0_CR0 0x0eb
|
||||
#define CPC0_CR0_SWE 0x80000000
|
||||
#define CPC0_CR0_CETE 0x40000000
|
||||
#define CPC0_CR0_U1FCS 0x20000000
|
||||
#define CPC0_CR0_U0DTE 0x10000000
|
||||
#define CPC0_CR0_U0DRE 0x08000000
|
||||
#define CPC0_CR0_U0DC 0x04000000
|
||||
#define CPC0_CR0_U1DTE 0x02000000
|
||||
#define CPC0_CR0_U1DRE 0x01000000
|
||||
#define CPC0_CR0_U1DC 0x00800000
|
||||
#define CPC0_CR0_U0EC 0x00400000
|
||||
#define CPC0_CR0_U1EC 0x00200000
|
||||
#define CPC0_CR0_UDIV_MASK 0x001f0000
|
||||
#define CPC0_CR0_UDIV(reg) \
|
||||
((((reg) & CPC0_CR0_UDIV_MASK) >> 16) + 1)
|
||||
#define DCRN_CPC0_MIRQ0 0x0ec
|
||||
#define DCRN_CPC0_MIRQ1 0x0ed
|
||||
#define DCRN_CPC0_JTAGID 0x0ef
|
||||
|
||||
#endif /* _PPC_BOOT_DCR_H_ */
|
307
arch/powerpc/boot/dts/ebony.dts
Normal file
307
arch/powerpc/boot/dts/ebony.dts
Normal file
@ -0,0 +1,307 @@
|
||||
/*
|
||||
* Device Tree Source for IBM Ebony
|
||||
*
|
||||
* Copyright (c) 2006, 2007 IBM Corp.
|
||||
* Josh Boyer <jwboyer@linux.vnet.ibm.com>, David Gibson <dwg@au1.ibm.com>
|
||||
*
|
||||
* FIXME: Draft only!
|
||||
*
|
||||
* This file is licensed under the terms of the GNU General Public
|
||||
* License version 2. This program is licensed "as is" without
|
||||
* any warranty of any kind, whether express or implied.
|
||||
*
|
||||
* To build:
|
||||
* dtc -I dts -O asm -o ebony.S -b 0 ebony.dts
|
||||
* dtc -I dts -O dtb -o ebony.dtb -b 0 ebony.dts
|
||||
*/
|
||||
|
||||
/ {
|
||||
#address-cells = <2>;
|
||||
#size-cells = <1>;
|
||||
model = "ibm,ebony";
|
||||
compatible = "ibm,ebony";
|
||||
dcr-parent = <&/cpus/PowerPC,440GP@0>;
|
||||
|
||||
cpus {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
PowerPC,440GP@0 {
|
||||
device_type = "cpu";
|
||||
reg = <0>;
|
||||
clock-frequency = <0>; // Filled in by zImage
|
||||
timebase-frequency = <0>; // Filled in by zImage
|
||||
i-cache-line-size = <32>;
|
||||
d-cache-line-size = <32>;
|
||||
i-cache-size = <0>;
|
||||
d-cache-size = <0>;
|
||||
dcr-controller;
|
||||
dcr-access-method = "native";
|
||||
};
|
||||
};
|
||||
|
||||
memory {
|
||||
device_type = "memory";
|
||||
reg = <0 0 0>; // Filled in by zImage
|
||||
};
|
||||
|
||||
UIC0: interrupt-controller0 {
|
||||
device_type = "ibm,uic";
|
||||
compatible = "ibm,uic-440gp", "ibm,uic";
|
||||
interrupt-controller;
|
||||
cell-index = <0>;
|
||||
dcr-reg = <0c0 009>;
|
||||
#address-cells = <0>;
|
||||
#size-cells = <0>;
|
||||
#interrupt-cells = <2>;
|
||||
|
||||
};
|
||||
|
||||
UIC1: interrupt-controller1 {
|
||||
device_type = "ibm,uic";
|
||||
compatible = "ibm,uic-440gp", "ibm,uic";
|
||||
interrupt-controller;
|
||||
cell-index = <1>;
|
||||
dcr-reg = <0d0 009>;
|
||||
#address-cells = <0>;
|
||||
#size-cells = <0>;
|
||||
#interrupt-cells = <2>;
|
||||
interrupts = <1e 4 1f 4>; /* cascade */
|
||||
interrupt-parent = <&UIC0>;
|
||||
};
|
||||
|
||||
CPC0: cpc {
|
||||
device_type = "ibm,cpc";
|
||||
compatible = "ibm,cpc-440gp";
|
||||
dcr-reg = <0b0 003 0e0 010>;
|
||||
// FIXME: anything else?
|
||||
};
|
||||
|
||||
plb {
|
||||
device_type = "ibm,plb";
|
||||
compatible = "ibm,plb-440gp", "ibm,plb4";
|
||||
#address-cells = <2>;
|
||||
#size-cells = <1>;
|
||||
ranges;
|
||||
clock-frequency = <0>; // Filled in by zImage
|
||||
|
||||
SDRAM0: sdram {
|
||||
device_type = "memory-controller";
|
||||
compatible = "ibm,sdram-440gp", "ibm,sdram";
|
||||
dcr-reg = <010 2>;
|
||||
// FIXME: anything else?
|
||||
};
|
||||
|
||||
DMA0: dma {
|
||||
// FIXME: ???
|
||||
device_type = "ibm,dma-4xx";
|
||||
compatible = "ibm,dma-440gp", "ibm,dma-4xx";
|
||||
dcr-reg = <100 027>;
|
||||
};
|
||||
|
||||
MAL0: mcmal {
|
||||
device_type = "mcmal-dma";
|
||||
compatible = "ibm,mcmal-440gp", "ibm,mcmal";
|
||||
dcr-reg = <180 62>;
|
||||
num-tx-chans = <4>;
|
||||
num-rx-chans = <4>;
|
||||
interrupt-parent = <&MAL0>;
|
||||
interrupts = <0 1 2 3 4>;
|
||||
#interrupt-cells = <1>;
|
||||
#address-cells = <0>;
|
||||
#size-cells = <0>;
|
||||
interrupt-map = </*TXEOB*/ 0 &UIC0 a 4
|
||||
/*RXEOB*/ 1 &UIC0 b 4
|
||||
/*SERR*/ 2 &UIC1 0 4
|
||||
/*TXDE*/ 3 &UIC1 1 4
|
||||
/*RXDE*/ 4 &UIC1 2 4>;
|
||||
interrupt-map-mask = <ffffffff>;
|
||||
};
|
||||
|
||||
POB0: opb {
|
||||
device_type = "ibm,opb";
|
||||
compatible = "ibm,opb-440gp", "ibm,opb";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
/* Wish there was a nicer way of specifying a full 32-bit
|
||||
range */
|
||||
ranges = <00000000 1 00000000 80000000
|
||||
80000000 1 80000000 80000000>;
|
||||
dcr-reg = <090 00b>;
|
||||
interrupt-parent = <&UIC1>;
|
||||
interrupts = <7 4>;
|
||||
clock-frequency = <0>; // Filled in by zImage
|
||||
|
||||
EBC0: ebc {
|
||||
device_type = "ibm,ebc";
|
||||
compatible = "ibm,ebc-440gp";
|
||||
dcr-reg = <012 2>;
|
||||
#address-cells = <2>;
|
||||
#size-cells = <1>;
|
||||
clock-frequency = <0>; // Filled in by zImage
|
||||
ranges = <0 00000000 fff00000 100000
|
||||
1 00000000 48000000 100000
|
||||
2 00000000 ff800000 400000
|
||||
3 00000000 48200000 100000
|
||||
7 00000000 48300000 100000>;
|
||||
interrupts = <5 4>;
|
||||
interrupt-parent = <&UIC1>;
|
||||
|
||||
small-flash@0,0 {
|
||||
device_type = "rom";
|
||||
compatible = "direct-mapped";
|
||||
probe-type = "JEDEC";
|
||||
bank-width = <1>;
|
||||
partitions = <0 80000>;
|
||||
partition-names = "OpenBIOS";
|
||||
reg = <0 80000 80000>;
|
||||
};
|
||||
|
||||
ds1743@1,0 {
|
||||
/* NVRAM & RTC */
|
||||
device_type = "nvram";
|
||||
compatible = "ds1743";
|
||||
reg = <1 0 2000>;
|
||||
};
|
||||
|
||||
large-flash@2,0 {
|
||||
device_type = "rom";
|
||||
compatible = "direct-mapped";
|
||||
probe-type = "JEDEC";
|
||||
bank-width = <1>;
|
||||
partitions = <0 380000
|
||||
280000 80000>;
|
||||
partition-names = "fs", "firmware";
|
||||
reg = <2 0 400000>;
|
||||
};
|
||||
|
||||
ir@3,0 {
|
||||
reg = <3 0 10>;
|
||||
};
|
||||
|
||||
fpga@7,0 {
|
||||
compatible = "Ebony-FPGA";
|
||||
reg = <7 0 10>;
|
||||
};
|
||||
};
|
||||
|
||||
UART0: serial@40000200 {
|
||||
device_type = "serial";
|
||||
compatible = "ns16550";
|
||||
reg = <40000200 8>;
|
||||
virtual-reg = <e0000200>;
|
||||
clock-frequency = <A8C000>;
|
||||
current-speed = <2580>;
|
||||
interrupt-parent = <&UIC0>;
|
||||
interrupts = <0 4>;
|
||||
};
|
||||
|
||||
UART1: serial@40000300 {
|
||||
device_type = "serial";
|
||||
compatible = "ns16550";
|
||||
reg = <40000300 8>;
|
||||
virtual-reg = <e0000300>;
|
||||
clock-frequency = <A8C000>;
|
||||
current-speed = <2580>;
|
||||
interrupt-parent = <&UIC0>;
|
||||
interrupts = <1 4>;
|
||||
};
|
||||
|
||||
IIC0: i2c@40000400 {
|
||||
/* FIXME */
|
||||
device_type = "i2c";
|
||||
compatible = "ibm,iic-440gp", "ibm,iic";
|
||||
reg = <40000400 14>;
|
||||
interrupt-parent = <&UIC0>;
|
||||
interrupts = <2 4>;
|
||||
};
|
||||
IIC1: i2c@40000500 {
|
||||
/* FIXME */
|
||||
device_type = "i2c";
|
||||
compatible = "ibm,iic-440gp", "ibm,iic";
|
||||
reg = <40000500 14>;
|
||||
interrupt-parent = <&UIC0>;
|
||||
interrupts = <3 4>;
|
||||
};
|
||||
|
||||
GPIO0: gpio@40000700 {
|
||||
/* FIXME */
|
||||
device_type = "gpio";
|
||||
compatible = "ibm,gpio-440gp";
|
||||
reg = <40000700 20>;
|
||||
};
|
||||
|
||||
ZMII0: emac-zmii@40000780 {
|
||||
device_type = "emac-zmii";
|
||||
compatible = "ibm,zmii-440gp", "ibm,zmii";
|
||||
reg = <40000780 c>;
|
||||
};
|
||||
|
||||
EMAC0: ethernet@40000800 {
|
||||
linux,network-index = <0>;
|
||||
device_type = "network";
|
||||
compatible = "ibm,emac-440gp", "ibm,emac";
|
||||
interrupt-parent = <&UIC1>;
|
||||
interrupts = <1c 4 1d 4>;
|
||||
reg = <40000800 70>;
|
||||
local-mac-address = [000000000000]; // Filled in by zImage
|
||||
mal-device = <&MAL0>;
|
||||
mal-tx-channel = <0 1>;
|
||||
mal-rx-channel = <0>;
|
||||
cell-index = <0>;
|
||||
max-frame-size = <5dc>;
|
||||
rx-fifo-size = <1000>;
|
||||
tx-fifo-size = <800>;
|
||||
phy-mode = "rmii";
|
||||
phy-map = <00000001>;
|
||||
zmii-device = <&ZMII0>;
|
||||
zmii-channel = <0>;
|
||||
};
|
||||
EMAC1: ethernet@40000900 {
|
||||
linux,network-index = <1>;
|
||||
device_type = "network";
|
||||
compatible = "ibm,emac-440gp", "ibm,emac";
|
||||
interrupt-parent = <&UIC1>;
|
||||
interrupts = <1e 4 1f 4>;
|
||||
reg = <40000900 70>;
|
||||
local-mac-address = [000000000000]; // Filled in by zImage
|
||||
mal-device = <&MAL0>;
|
||||
mal-tx-channel = <2 3>;
|
||||
mal-rx-channel = <1>;
|
||||
cell-index = <1>;
|
||||
max-frame-size = <5dc>;
|
||||
rx-fifo-size = <1000>;
|
||||
tx-fifo-size = <800>;
|
||||
phy-mode = "rmii";
|
||||
phy-map = <00000001>;
|
||||
zmii-device = <&ZMII0>;
|
||||
zmii-channel = <1>;
|
||||
};
|
||||
|
||||
|
||||
GPT0: gpt@40000a00 {
|
||||
/* FIXME */
|
||||
reg = <40000a00 d4>;
|
||||
interrupt-parent = <&UIC0>;
|
||||
interrupts = <12 4 13 4 14 4 15 4 16 4>;
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
PCIX0: pci@1234 {
|
||||
device_type = "pci";
|
||||
/* FIXME */
|
||||
reg = <2 0ec00000 8
|
||||
2 0ec80000 f0
|
||||
2 0ec80100 fc>;
|
||||
};
|
||||
};
|
||||
|
||||
chosen {
|
||||
linux,stdout-path = "/plb/opb/serial@40000200";
|
||||
// linux,initrd-start = <0>; /* FIXME */
|
||||
// linux,initrd-end = <0>;
|
||||
// bootargs = "";
|
||||
};
|
||||
};
|
||||
|
198
arch/powerpc/boot/dts/holly.dts
Normal file
198
arch/powerpc/boot/dts/holly.dts
Normal file
@ -0,0 +1,198 @@
|
||||
/*
|
||||
* Device Tree Source for IBM Holly (PPC 750CL with TSI controller)
|
||||
* Copyright 2007, IBM Corporation
|
||||
*
|
||||
* Stephen Winiecki <stevewin@us.ibm.com>
|
||||
* Josh Boyer <jwboyer@linux.vnet.ibm.com>
|
||||
*
|
||||
* This file is licensed under the terms of the GNU General Public
|
||||
* License version 2. This program is licensed "as is" without
|
||||
* any warranty of any kind, whether express or implied.
|
||||
*
|
||||
* To build:
|
||||
* dtc -I dts -O asm -o holly.S -b 0 holly.dts
|
||||
* dtc -I dts -O dtb -o holly.dtb -b 0 holly.dts
|
||||
*/
|
||||
|
||||
/ {
|
||||
model = "41K7339";
|
||||
compatible = "ibm,holly";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
cpus {
|
||||
#address-cells = <1>;
|
||||
#size-cells =<0>;
|
||||
PowerPC,750CL@0 {
|
||||
device_type = "cpu";
|
||||
reg = <0>;
|
||||
d-cache-line-size = <20>;
|
||||
i-cache-line-size = <20>;
|
||||
d-cache-size = <8000>;
|
||||
i-cache-size = <8000>;
|
||||
d-cache-sets = <80>;
|
||||
i-cache-sets = <80>;
|
||||
timebase-frequency = <2faf080>;
|
||||
clock-frequency = <23c34600>;
|
||||
bus-frequency = <bebc200>;
|
||||
32-bit;
|
||||
};
|
||||
};
|
||||
|
||||
memory@0 {
|
||||
device_type = "memory";
|
||||
reg = <00000000 20000000>;
|
||||
};
|
||||
|
||||
tsi109@c0000000 {
|
||||
device_type = "tsi-bridge";
|
||||
compatible = "tsi-bridge";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges = <00000000 c0000000 00010000>;
|
||||
reg = <c0000000 00010000>;
|
||||
|
||||
i2c@7000 {
|
||||
device_type = "i2c";
|
||||
compatible = "tsi-i2c";
|
||||
interrupt-parent = < &/tsi109@c0000000/pic@7400 >;
|
||||
interrupts = <e 2>;
|
||||
reg = <7000 400>;
|
||||
};
|
||||
|
||||
mdio@6000 {
|
||||
device_type = "mdio";
|
||||
compatible = "tsi-ethernet";
|
||||
|
||||
PHY1: ethernet-phy@6000 {
|
||||
device_type = "ethernet-phy";
|
||||
compatible = "bcm54xx";
|
||||
reg = <6000 50>;
|
||||
phy-id = <1>;
|
||||
};
|
||||
|
||||
PHY2: ethernet-phy@6400 {
|
||||
device_type = "ethernet-phy";
|
||||
compatible = "bcm54xx";
|
||||
reg = <6000 50>;
|
||||
phy-id = <2>;
|
||||
};
|
||||
};
|
||||
|
||||
ethernet@6200 {
|
||||
device_type = "network";
|
||||
compatible = "tsi-ethernet";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
reg = <6000 200>;
|
||||
local-mac-address = [ 00 00 00 00 00 00 ];
|
||||
interrupt-parent = < &/tsi109@c0000000/pic@7400 >;
|
||||
interrupts = <10 2>;
|
||||
phy-handle = <&PHY1>;
|
||||
};
|
||||
|
||||
ethernet@6600 {
|
||||
device_type = "network";
|
||||
compatible = "tsi-ethernet";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
reg = <6400 200>;
|
||||
local-mac-address = [ 00 00 00 00 00 00 ];
|
||||
interrupt-parent = < &/tsi109@c0000000/pic@7400 >;
|
||||
interrupts = <11 2>;
|
||||
phy-handle = <&PHY2>;
|
||||
};
|
||||
|
||||
serial@7808 {
|
||||
device_type = "serial";
|
||||
compatible = "ns16550";
|
||||
reg = <7808 200>;
|
||||
virtual-reg = <c0007808>;
|
||||
clock-frequency = <3F9C6000>;
|
||||
current-speed = <1c200>;
|
||||
interrupt-parent = < &/tsi109@c0000000/pic@7400 >;
|
||||
interrupts = <c 2>;
|
||||
};
|
||||
|
||||
serial@7c08 {
|
||||
device_type = "serial";
|
||||
compatible = "ns16550";
|
||||
reg = <7c08 200>;
|
||||
virtual-reg = <c0007c08>;
|
||||
clock-frequency = <3F9C6000>;
|
||||
current-speed = <1c200>;
|
||||
interrupt-parent = < &/tsi109@c0000000/pic@7400 >;
|
||||
interrupts = <d 2>;
|
||||
};
|
||||
|
||||
MPIC: pic@7400 {
|
||||
device_type = "open-pic";
|
||||
compatible = "chrp,open-pic";
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
reg = <7400 400>;
|
||||
big-endian;
|
||||
};
|
||||
|
||||
pci@1000 {
|
||||
device_type = "pci";
|
||||
compatible = "tsi109";
|
||||
#interrupt-cells = <1>;
|
||||
#size-cells = <2>;
|
||||
#address-cells = <3>;
|
||||
reg = <1000 1000>;
|
||||
bus-range = <0 0>;
|
||||
/*----------------------------------------------------+
|
||||
| PCI memory range.
|
||||
| 01 denotes I/O space
|
||||
| 02 denotes 32-bit memory space
|
||||
+----------------------------------------------------*/
|
||||
ranges = <02000000 0 40000000 40000000 0 10000000
|
||||
01000000 0 00000000 7e000000 0 00010000>;
|
||||
clock-frequency = <7f28154>;
|
||||
interrupt-parent = < &/tsi109@c0000000/pic@7400 >;
|
||||
interrupts = <17 2>;
|
||||
interrupt-map-mask = <f800 0 0 7>;
|
||||
/*----------------------------------------------------+
|
||||
| The INTA, INTB, INTC, INTD are shared.
|
||||
+----------------------------------------------------*/
|
||||
interrupt-map = <
|
||||
0800 0 0 1 &RT0 24 0
|
||||
0800 0 0 2 &RT0 25 0
|
||||
0800 0 0 3 &RT0 26 0
|
||||
0800 0 0 4 &RT0 27 0
|
||||
|
||||
1000 0 0 1 &RT0 25 0
|
||||
1000 0 0 2 &RT0 26 0
|
||||
1000 0 0 3 &RT0 27 0
|
||||
1000 0 0 4 &RT0 24 0
|
||||
|
||||
1800 0 0 1 &RT0 26 0
|
||||
1800 0 0 2 &RT0 27 0
|
||||
1800 0 0 3 &RT0 24 0
|
||||
1800 0 0 4 &RT0 25 0
|
||||
|
||||
2000 0 0 1 &RT0 27 0
|
||||
2000 0 0 2 &RT0 24 0
|
||||
2000 0 0 3 &RT0 25 0
|
||||
2000 0 0 4 &RT0 26 0
|
||||
>;
|
||||
|
||||
RT0: router@1180 {
|
||||
device_type = "pic-router";
|
||||
interrupt-controller;
|
||||
big-endian;
|
||||
clock-frequency = <0>;
|
||||
#address-cells = <0>;
|
||||
#interrupt-cells = <2>;
|
||||
interrupts = <17 2>;
|
||||
interrupt-parent = < &/tsi109@c0000000/pic@7400 >;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
chosen {
|
||||
linux,stdout-path = "/tsi109@c0000000/serial@7808";
|
||||
bootargs = "console=ttyS0,115200";
|
||||
};
|
||||
};
|
@ -48,6 +48,7 @@
|
||||
|
||||
soc5200@f0000000 {
|
||||
model = "fsl,mpc5200";
|
||||
compatible = "mpc5200";
|
||||
revision = "" // from bootloader
|
||||
#interrupt-cells = <3>;
|
||||
device_type = "soc";
|
||||
@ -166,7 +167,7 @@
|
||||
device_type = "mscan";
|
||||
compatible = "mpc5200-mscan";
|
||||
cell-index = <1>;
|
||||
interrupts = <1 12 0>;
|
||||
interrupts = <2 12 0>;
|
||||
interrupt-parent = <500>;
|
||||
reg = <980 80>;
|
||||
};
|
||||
@ -178,7 +179,7 @@
|
||||
interrupt-parent = <500>;
|
||||
};
|
||||
|
||||
gpio-wkup@b00 {
|
||||
gpio-wkup@c00 {
|
||||
compatible = "mpc5200-gpio-wkup";
|
||||
reg = <c00 40>;
|
||||
interrupts = <1 8 0 0 3 0>;
|
||||
@ -317,20 +318,22 @@
|
||||
|
||||
i2c@3d00 {
|
||||
device_type = "i2c";
|
||||
compatible = "mpc5200-i2c";
|
||||
compatible = "mpc5200-i2c\0fsl-i2c";
|
||||
cell-index = <0>;
|
||||
reg = <3d00 40>;
|
||||
interrupts = <2 f 0>;
|
||||
interrupt-parent = <500>;
|
||||
fsl5200-clocking;
|
||||
};
|
||||
|
||||
i2c@3d40 {
|
||||
device_type = "i2c";
|
||||
compatible = "mpc5200-i2c";
|
||||
compatible = "mpc5200-i2c\0fsl-i2c";
|
||||
cell-index = <1>;
|
||||
reg = <3d40 40>;
|
||||
interrupts = <2 10 0>;
|
||||
interrupt-parent = <500>;
|
||||
fsl5200-clocking;
|
||||
};
|
||||
sram@8000 {
|
||||
device_type = "sram";
|
||||
|
@ -48,6 +48,7 @@
|
||||
|
||||
soc5200@f0000000 {
|
||||
model = "fsl,mpc5200b";
|
||||
compatible = "mpc5200";
|
||||
revision = ""; // from bootloader
|
||||
#interrupt-cells = <3>;
|
||||
device_type = "soc";
|
||||
@ -166,7 +167,7 @@
|
||||
device_type = "mscan";
|
||||
compatible = "mpc5200b-mscan\0mpc5200-mscan";
|
||||
cell-index = <1>;
|
||||
interrupts = <1 12 0>;
|
||||
interrupts = <2 12 0>;
|
||||
interrupt-parent = <500>;
|
||||
reg = <980 80>;
|
||||
};
|
||||
@ -178,7 +179,7 @@
|
||||
interrupt-parent = <500>;
|
||||
};
|
||||
|
||||
gpio-wkup@b00 {
|
||||
gpio-wkup@c00 {
|
||||
compatible = "mpc5200b-gpio-wkup\0mpc5200-gpio-wkup";
|
||||
reg = <c00 40>;
|
||||
interrupts = <1 8 0 0 3 0>;
|
||||
@ -322,20 +323,22 @@
|
||||
|
||||
i2c@3d00 {
|
||||
device_type = "i2c";
|
||||
compatible = "mpc5200b-i2c\0mpc5200-i2c";
|
||||
compatible = "mpc5200b-i2c\0mpc5200-i2c\0fsl-i2c";
|
||||
cell-index = <0>;
|
||||
reg = <3d00 40>;
|
||||
interrupts = <2 f 0>;
|
||||
interrupt-parent = <500>;
|
||||
fsl5200-clocking;
|
||||
};
|
||||
|
||||
i2c@3d40 {
|
||||
device_type = "i2c";
|
||||
compatible = "mpc5200b-i2c\0mpc5200-i2c";
|
||||
compatible = "mpc5200b-i2c\0mpc5200-i2c\0fsl-i2c";
|
||||
cell-index = <1>;
|
||||
reg = <3d40 40>;
|
||||
interrupts = <2 10 0>;
|
||||
interrupt-parent = <500>;
|
||||
fsl5200-clocking;
|
||||
};
|
||||
sram@8000 {
|
||||
device_type = "sram";
|
||||
|
@ -306,14 +306,12 @@
|
||||
interrupts = <11 8>;
|
||||
reg = <3>;
|
||||
device_type = "ethernet-phy";
|
||||
interface = <3>; //ENET_100_MII
|
||||
};
|
||||
phy4: ethernet-phy@04 {
|
||||
interrupt-parent = < &ipic >;
|
||||
interrupts = <12 8>;
|
||||
reg = <4>;
|
||||
device_type = "ethernet-phy";
|
||||
interface = <3>;
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -265,14 +265,12 @@
|
||||
interrupts = <0>;
|
||||
reg = <0>;
|
||||
device_type = "ethernet-phy";
|
||||
interface = <3>; //ENET_100_MII
|
||||
};
|
||||
phy04:ethernet-phy@04 {
|
||||
interrupt-parent = <&pic>;
|
||||
interrupts = <0>;
|
||||
reg = <4>;
|
||||
device_type = "ethernet-phy";
|
||||
interface = <3>;
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -305,6 +305,7 @@
|
||||
rx-clock = <0>;
|
||||
tx-clock = <19>;
|
||||
phy-handle = < &phy0 >;
|
||||
phy-connection-type = "rgmii-id";
|
||||
pio-handle = < &pio1 >;
|
||||
};
|
||||
|
||||
@ -320,6 +321,7 @@
|
||||
rx-clock = <0>;
|
||||
tx-clock = <14>;
|
||||
phy-handle = < &phy1 >;
|
||||
phy-connection-type = "rgmii-id";
|
||||
pio-handle = < &pio2 >;
|
||||
};
|
||||
|
||||
@ -335,14 +337,12 @@
|
||||
interrupts = <11 8>;
|
||||
reg = <0>;
|
||||
device_type = "ethernet-phy";
|
||||
interface = <6>; //ENET_1000_GMII
|
||||
};
|
||||
phy1: ethernet-phy@01 {
|
||||
interrupt-parent = < &ipic >;
|
||||
interrupts = <12 8>;
|
||||
reg = <1>;
|
||||
device_type = "ethernet-phy";
|
||||
interface = <6>;
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -288,6 +288,7 @@
|
||||
rx-clock = <0>;
|
||||
tx-clock = <19>;
|
||||
phy-handle = <&qe_phy0>;
|
||||
phy-connection-type = "gmii";
|
||||
pio-handle = <&pio1>;
|
||||
};
|
||||
|
||||
@ -303,6 +304,7 @@
|
||||
rx-clock = <0>;
|
||||
tx-clock = <14>;
|
||||
phy-handle = <&qe_phy1>;
|
||||
phy-connection-type = "gmii";
|
||||
pio-handle = <&pio2>;
|
||||
};
|
||||
|
||||
@ -320,28 +322,24 @@
|
||||
interrupts = <31 1>;
|
||||
reg = <0>;
|
||||
device_type = "ethernet-phy";
|
||||
interface = <6>; //ENET_1000_GMII
|
||||
};
|
||||
qe_phy1: ethernet-phy@01 {
|
||||
interrupt-parent = <&mpic>;
|
||||
interrupts = <32 1>;
|
||||
reg = <1>;
|
||||
device_type = "ethernet-phy";
|
||||
interface = <6>;
|
||||
};
|
||||
qe_phy2: ethernet-phy@02 {
|
||||
interrupt-parent = <&mpic>;
|
||||
interrupts = <31 1>;
|
||||
reg = <2>;
|
||||
device_type = "ethernet-phy";
|
||||
interface = <6>; //ENET_1000_GMII
|
||||
};
|
||||
qe_phy3: ethernet-phy@03 {
|
||||
interrupt-parent = <&mpic>;
|
||||
interrupts = <32 1>;
|
||||
reg = <3>;
|
||||
device_type = "ethernet-phy";
|
||||
interface = <6>; //ENET_1000_GMII
|
||||
};
|
||||
};
|
||||
|
||||
|
129
arch/powerpc/boot/ebony.c
Normal file
129
arch/powerpc/boot/ebony.c
Normal file
@ -0,0 +1,129 @@
|
||||
/*
|
||||
* Copyright 2007 David Gibson, IBM Corporation.
|
||||
*
|
||||
* Based on earlier code:
|
||||
* Copyright (C) Paul Mackerras 1997.
|
||||
*
|
||||
* Matt Porter <mporter@kernel.crashing.org>
|
||||
* Copyright 2002-2005 MontaVista Software Inc.
|
||||
*
|
||||
* Eugene Surovegin <eugene.surovegin@zultys.com> or <ebs@ebshome.net>
|
||||
* Copyright (c) 2003, 2004 Zultys Technologies
|
||||
*
|
||||
* 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 <stdarg.h>
|
||||
#include <stddef.h>
|
||||
#include "types.h"
|
||||
#include "elf.h"
|
||||
#include "string.h"
|
||||
#include "stdio.h"
|
||||
#include "page.h"
|
||||
#include "ops.h"
|
||||
#include "reg.h"
|
||||
#include "dcr.h"
|
||||
#include "44x.h"
|
||||
|
||||
extern char _dtb_start[];
|
||||
extern char _dtb_end[];
|
||||
|
||||
static u8 *ebony_mac0, *ebony_mac1;
|
||||
|
||||
/* Calculate 440GP clocks */
|
||||
void ibm440gp_fixup_clocks(unsigned int sysclk, unsigned int ser_clk)
|
||||
{
|
||||
u32 sys0 = mfdcr(DCRN_CPC0_SYS0);
|
||||
u32 cr0 = mfdcr(DCRN_CPC0_CR0);
|
||||
u32 cpu, plb, opb, ebc, tb, uart0, uart1, m;
|
||||
u32 opdv = CPC0_SYS0_OPDV(sys0);
|
||||
u32 epdv = CPC0_SYS0_EPDV(sys0);
|
||||
|
||||
if (sys0 & CPC0_SYS0_BYPASS) {
|
||||
/* Bypass system PLL */
|
||||
cpu = plb = sysclk;
|
||||
} else {
|
||||
if (sys0 & CPC0_SYS0_EXTSL)
|
||||
/* PerClk */
|
||||
m = CPC0_SYS0_FWDVB(sys0) * opdv * epdv;
|
||||
else
|
||||
/* CPU clock */
|
||||
m = CPC0_SYS0_FBDV(sys0) * CPC0_SYS0_FWDVA(sys0);
|
||||
cpu = sysclk * m / CPC0_SYS0_FWDVA(sys0);
|
||||
plb = sysclk * m / CPC0_SYS0_FWDVB(sys0);
|
||||
}
|
||||
|
||||
opb = plb / opdv;
|
||||
ebc = opb / epdv;
|
||||
|
||||
/* FIXME: Check if this is for all 440GP, or just Ebony */
|
||||
if ((mfpvr() & 0xf0000fff) == 0x40000440)
|
||||
/* Rev. B 440GP, use external system clock */
|
||||
tb = sysclk;
|
||||
else
|
||||
/* Rev. C 440GP, errata force us to use internal clock */
|
||||
tb = cpu;
|
||||
|
||||
if (cr0 & CPC0_CR0_U0EC)
|
||||
/* External UART clock */
|
||||
uart0 = ser_clk;
|
||||
else
|
||||
/* Internal UART clock */
|
||||
uart0 = plb / CPC0_CR0_UDIV(cr0);
|
||||
|
||||
if (cr0 & CPC0_CR0_U1EC)
|
||||
/* External UART clock */
|
||||
uart1 = ser_clk;
|
||||
else
|
||||
/* Internal UART clock */
|
||||
uart1 = plb / CPC0_CR0_UDIV(cr0);
|
||||
|
||||
printf("PPC440GP: SysClk = %dMHz (%x)\n\r",
|
||||
(sysclk + 500000) / 1000000, sysclk);
|
||||
|
||||
dt_fixup_cpu_clocks(cpu, tb, 0);
|
||||
|
||||
dt_fixup_clock("/plb", plb);
|
||||
dt_fixup_clock("/plb/opb", opb);
|
||||
dt_fixup_clock("/plb/opb/ebc", ebc);
|
||||
dt_fixup_clock("/plb/opb/serial@40000200", uart0);
|
||||
dt_fixup_clock("/plb/opb/serial@40000300", uart1);
|
||||
}
|
||||
|
||||
static void ebony_fixups(void)
|
||||
{
|
||||
// FIXME: sysclk should be derived by reading the FPGA registers
|
||||
unsigned long sysclk = 33000000;
|
||||
|
||||
ibm440gp_fixup_clocks(sysclk, 6 * 1843200);
|
||||
ibm44x_fixup_memsize();
|
||||
dt_fixup_mac_addresses(ebony_mac0, ebony_mac1);
|
||||
}
|
||||
|
||||
#define SPRN_DBCR0 0x134
|
||||
#define DBCR0_RST_SYSTEM 0x30000000
|
||||
|
||||
static void ebony_exit(void)
|
||||
{
|
||||
unsigned long tmp;
|
||||
|
||||
asm volatile (
|
||||
"mfspr %0,%1\n"
|
||||
"oris %0,%0,%2@h\n"
|
||||
"mtspr %1,%0"
|
||||
: "=&r"(tmp) : "i"(SPRN_DBCR0), "i"(DBCR0_RST_SYSTEM)
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
void ebony_init(void *mac0, void *mac1)
|
||||
{
|
||||
platform_ops.fixups = ebony_fixups;
|
||||
platform_ops.exit = ebony_exit;
|
||||
ebony_mac0 = mac0;
|
||||
ebony_mac1 = mac1;
|
||||
ft_init(_dtb_start, _dtb_end - _dtb_start, 32);
|
||||
serial_console_init();
|
||||
}
|
38
arch/powerpc/boot/holly.c
Normal file
38
arch/powerpc/boot/holly.c
Normal file
@ -0,0 +1,38 @@
|
||||
/*
|
||||
* Copyright 2007 IBM Corporation
|
||||
*
|
||||
* Stephen Winiecki <stevewin@us.ibm.com>
|
||||
* Josh Boyer <jwboyer@linux.vnet.ibm.com>
|
||||
*
|
||||
* Based on earlier code:
|
||||
* Copyright (C) Paul Mackerras 1997.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* version 2 as published by the Free Software Foundation.
|
||||
*/
|
||||
#include <stdarg.h>
|
||||
#include <stddef.h>
|
||||
#include "types.h"
|
||||
#include "elf.h"
|
||||
#include "string.h"
|
||||
#include "stdio.h"
|
||||
#include "page.h"
|
||||
#include "ops.h"
|
||||
#include "io.h"
|
||||
|
||||
extern char _start[];
|
||||
extern char _end[];
|
||||
extern char _dtb_start[];
|
||||
extern char _dtb_end[];
|
||||
|
||||
BSS_STACK(4096);
|
||||
|
||||
void platform_init(unsigned long r3, unsigned long r4, unsigned long r5)
|
||||
{
|
||||
u32 heapsize = 0x8000000 - (u32)_end; /* 128M */
|
||||
|
||||
simple_alloc_init(_end, heapsize, 32, 64);
|
||||
ft_init(_dtb_start, 0, 4);
|
||||
serial_console_init();
|
||||
}
|
@ -46,8 +46,8 @@ int main(int argc, char *argv[])
|
||||
struct stat st;
|
||||
boot_block_t bt;
|
||||
|
||||
if (argc < 3) {
|
||||
fprintf(stderr, "usage: %s <zImage-file> <boot-image> [entry-point]\n",argv[0]);
|
||||
if (argc < 5) {
|
||||
fprintf(stderr, "usage: %s <zImage-file> <boot-image> <load address> <entry point>\n",argv[0]);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
@ -61,10 +61,8 @@ int main(int argc, char *argv[])
|
||||
bt.bb_magic = htonl(0x0052504F);
|
||||
|
||||
/* If we have the optional entry point parameter, use it */
|
||||
if (argc == 4)
|
||||
bt.bb_dest = bt.bb_entry_point = htonl(strtoul(argv[3], NULL, 0));
|
||||
else
|
||||
bt.bb_dest = bt.bb_entry_point = htonl(0x500000);
|
||||
bt.bb_dest = htonl(strtoul(argv[3], NULL, 0));
|
||||
bt.bb_entry_point = htonl(strtoul(argv[4], NULL, 0));
|
||||
|
||||
/* We know these from the linker command.
|
||||
* ...and then move it up into memory a little more so the
|
||||
|
34
arch/powerpc/boot/treeboot-ebony.c
Normal file
34
arch/powerpc/boot/treeboot-ebony.c
Normal file
@ -0,0 +1,34 @@
|
||||
/*
|
||||
* Old U-boot compatibility for Ebony
|
||||
*
|
||||
* Author: David Gibson <david@gibson.dropbear.id.au>
|
||||
*
|
||||
* Copyright 2007 David Gibson, IBM Corporatio.
|
||||
* Based on cuboot-83xx.c, which is:
|
||||
* Copyright (c) 2007 Freescale Semiconductor, Inc.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 as published
|
||||
* by the Free Software Foundation.
|
||||
*/
|
||||
|
||||
#include "ops.h"
|
||||
#include "stdio.h"
|
||||
#include "44x.h"
|
||||
|
||||
extern char _end[];
|
||||
|
||||
BSS_STACK(4096);
|
||||
|
||||
#define OPENBIOS_MAC_BASE 0xfffffe0c
|
||||
#define OPENBIOS_MAC_OFFSET 0xc
|
||||
|
||||
void platform_init(void)
|
||||
{
|
||||
unsigned long end_of_ram = 0x8000000;
|
||||
unsigned long avail_ram = end_of_ram - (unsigned long)_end;
|
||||
|
||||
simple_alloc_init(_end, avail_ram, 32, 64);
|
||||
ebony_init((u8 *)OPENBIOS_MAC_BASE,
|
||||
(u8 *)(OPENBIOS_MAC_BASE + OPENBIOS_MAC_OFFSET));
|
||||
}
|
@ -163,20 +163,19 @@ fi
|
||||
|
||||
vmz="$vmz$gzip"
|
||||
|
||||
case "$platform" in
|
||||
uboot|cuboot*)
|
||||
version=`${CROSS}strings "$kernel" | grep '^Linux version [-0-9.]' | \
|
||||
cut -d' ' -f3`
|
||||
if [ -n "$version" ]; then
|
||||
version="-n Linux-$version"
|
||||
fi
|
||||
esac
|
||||
# Extract kernel version information, some platforms want to include
|
||||
# it in the image header
|
||||
version=`${CROSS}strings "$kernel" | grep '^Linux version [-0-9.]' | \
|
||||
cut -d' ' -f3`
|
||||
if [ -n "$version" ]; then
|
||||
uboot_version="-n Linux-$version"
|
||||
fi
|
||||
|
||||
case "$platform" in
|
||||
uboot)
|
||||
rm -f "$ofile"
|
||||
mkimage -A ppc -O linux -T kernel -C gzip -a 00000000 -e 00000000 \
|
||||
$version -d "$vmz" "$ofile"
|
||||
$uboot_version -d "$vmz" "$ofile"
|
||||
if [ -z "$cacheit" ]; then
|
||||
rm -f "$vmz"
|
||||
fi
|
||||
@ -212,25 +211,32 @@ if [ "$platform" != "miboot" ]; then
|
||||
rm $tmp
|
||||
fi
|
||||
|
||||
# Some platforms need the zImage's entry point and base address
|
||||
base=0x`${CROSS}nm "$ofile" | grep ' _start$' | cut -d' ' -f1`
|
||||
entry=`${CROSS}objdump -f "$ofile" | grep '^start address ' | cut -d' ' -f3`
|
||||
|
||||
# post-processing needed for some platforms
|
||||
case "$platform" in
|
||||
pseries|chrp)
|
||||
$object/addnote "$ofile"
|
||||
;;
|
||||
pmaccoff)
|
||||
entry=`objdump -f "$ofile" | grep '^start address ' | \
|
||||
cut -d' ' -f3`
|
||||
${CROSS}objcopy -O aixcoff-rs6000 --set-start "$entry" "$ofile"
|
||||
$object/hack-coff "$ofile"
|
||||
;;
|
||||
cuboot*)
|
||||
base=`${CROSS}nm "$ofile" | grep ' _start$' | cut -d' ' -f1`
|
||||
entry=`${CROSS}objdump -f "$ofile" | grep '^start address ' | \
|
||||
cut -d' ' -f3`
|
||||
mv "$ofile" "$ofile".elf
|
||||
${CROSS}objcopy -O binary "$ofile".elf "$ofile".bin
|
||||
gzip -f -9 "$ofile".bin
|
||||
mkimage -A ppc -O linux -T kernel -C gzip -a "$base" -e "$entry" \
|
||||
$version -d "$ofile".bin.gz "$ofile"
|
||||
$uboot_version -d "$ofile".bin.gz "$ofile"
|
||||
;;
|
||||
treeboot*)
|
||||
mv "$ofile" "$ofile.elf"
|
||||
$object/mktree "$ofile.elf" "$ofile" "$base" "$entry"
|
||||
if [ -z "$cacheit" ]; then
|
||||
rm -f "$ofile.elf"
|
||||
fi
|
||||
exit 0
|
||||
;;
|
||||
esac
|
||||
|
905
arch/powerpc/configs/ebony_defconfig
Normal file
905
arch/powerpc/configs/ebony_defconfig
Normal file
@ -0,0 +1,905 @@
|
||||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.21
|
||||
# Fri May 4 13:47:08 2007
|
||||
#
|
||||
# CONFIG_PPC64 is not set
|
||||
CONFIG_PPC32=y
|
||||
CONFIG_PPC_MERGE=y
|
||||
CONFIG_MMU=y
|
||||
CONFIG_GENERIC_HARDIRQS=y
|
||||
CONFIG_IRQ_PER_CPU=y
|
||||
CONFIG_RWSEM_XCHGADD_ALGORITHM=y
|
||||
CONFIG_ARCH_HAS_ILOG2_U32=y
|
||||
CONFIG_GENERIC_HWEIGHT=y
|
||||
CONFIG_GENERIC_CALIBRATE_DELAY=y
|
||||
CONFIG_GENERIC_FIND_NEXT_BIT=y
|
||||
CONFIG_PPC=y
|
||||
CONFIG_EARLY_PRINTK=y
|
||||
CONFIG_GENERIC_NVRAM=y
|
||||
CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
|
||||
CONFIG_ARCH_MAY_HAVE_PC_FDC=y
|
||||
CONFIG_PPC_OF=y
|
||||
# CONFIG_PPC_UDBG_16550 is not set
|
||||
# CONFIG_GENERIC_TBSYNC is not set
|
||||
CONFIG_AUDIT_ARCH=y
|
||||
CONFIG_GENERIC_BUG=y
|
||||
# CONFIG_DEFAULT_UIMAGE is not set
|
||||
|
||||
#
|
||||
# Processor support
|
||||
#
|
||||
# CONFIG_CLASSIC32 is not set
|
||||
# CONFIG_PPC_82xx is not set
|
||||
# CONFIG_PPC_83xx is not set
|
||||
# CONFIG_PPC_85xx is not set
|
||||
# CONFIG_PPC_86xx is not set
|
||||
# CONFIG_PPC_8xx is not set
|
||||
# CONFIG_40x is not set
|
||||
CONFIG_44x=y
|
||||
# CONFIG_E200 is not set
|
||||
CONFIG_PPC_DCR_NATIVE=y
|
||||
# CONFIG_PPC_DCR_MMIO is not set
|
||||
CONFIG_PPC_DCR=y
|
||||
CONFIG_4xx=y
|
||||
CONFIG_BOOKE=y
|
||||
CONFIG_PTE_64BIT=y
|
||||
CONFIG_PHYS_64BIT=y
|
||||
CONFIG_NOT_COHERENT_CACHE=y
|
||||
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
|
||||
|
||||
#
|
||||
# Code maturity level options
|
||||
#
|
||||
CONFIG_EXPERIMENTAL=y
|
||||
CONFIG_BROKEN_ON_SMP=y
|
||||
CONFIG_INIT_ENV_ARG_LIMIT=32
|
||||
|
||||
#
|
||||
# General setup
|
||||
#
|
||||
CONFIG_LOCALVERSION=""
|
||||
CONFIG_LOCALVERSION_AUTO=y
|
||||
CONFIG_SWAP=y
|
||||
CONFIG_SYSVIPC=y
|
||||
# CONFIG_IPC_NS is not set
|
||||
CONFIG_SYSVIPC_SYSCTL=y
|
||||
CONFIG_POSIX_MQUEUE=y
|
||||
# CONFIG_BSD_PROCESS_ACCT is not set
|
||||
# CONFIG_TASKSTATS is not set
|
||||
# CONFIG_UTS_NS is not set
|
||||
# CONFIG_AUDIT is not set
|
||||
# CONFIG_IKCONFIG is not set
|
||||
CONFIG_SYSFS_DEPRECATED=y
|
||||
# CONFIG_RELAY is not set
|
||||
CONFIG_BLK_DEV_INITRD=y
|
||||
CONFIG_INITRAMFS_SOURCE=""
|
||||
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
|
||||
CONFIG_SYSCTL=y
|
||||
CONFIG_EMBEDDED=y
|
||||
CONFIG_SYSCTL_SYSCALL=y
|
||||
CONFIG_KALLSYMS=y
|
||||
CONFIG_KALLSYMS_ALL=y
|
||||
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_SHMEM=y
|
||||
CONFIG_SLAB=y
|
||||
CONFIG_VM_EVENT_COUNTERS=y
|
||||
CONFIG_RT_MUTEXES=y
|
||||
# CONFIG_TINY_SHMEM is not set
|
||||
CONFIG_BASE_SMALL=0
|
||||
# CONFIG_SLOB is not set
|
||||
|
||||
#
|
||||
# Loadable module support
|
||||
#
|
||||
CONFIG_MODULES=y
|
||||
CONFIG_MODULE_UNLOAD=y
|
||||
# CONFIG_MODULE_FORCE_UNLOAD is not set
|
||||
# CONFIG_MODVERSIONS is not set
|
||||
# CONFIG_MODULE_SRCVERSION_ALL is not set
|
||||
CONFIG_KMOD=y
|
||||
|
||||
#
|
||||
# Block layer
|
||||
#
|
||||
CONFIG_BLOCK=y
|
||||
CONFIG_LBD=y
|
||||
# CONFIG_BLK_DEV_IO_TRACE is not set
|
||||
# CONFIG_LSF is not set
|
||||
|
||||
#
|
||||
# IO Schedulers
|
||||
#
|
||||
CONFIG_IOSCHED_NOOP=y
|
||||
CONFIG_IOSCHED_AS=y
|
||||
CONFIG_IOSCHED_DEADLINE=y
|
||||
CONFIG_IOSCHED_CFQ=y
|
||||
CONFIG_DEFAULT_AS=y
|
||||
# CONFIG_DEFAULT_DEADLINE is not set
|
||||
# CONFIG_DEFAULT_CFQ is not set
|
||||
# CONFIG_DEFAULT_NOOP is not set
|
||||
CONFIG_DEFAULT_IOSCHED="anticipatory"
|
||||
|
||||
#
|
||||
# Platform support
|
||||
#
|
||||
# CONFIG_PPC_MPC52xx is not set
|
||||
# CONFIG_PPC_MPC5200 is not set
|
||||
# CONFIG_PPC_CELL is not set
|
||||
# CONFIG_PPC_CELL_NATIVE is not set
|
||||
# CONFIG_PQ2ADS is not set
|
||||
CONFIG_EBONY=y
|
||||
CONFIG_440GP=y
|
||||
# CONFIG_MPIC is not set
|
||||
# CONFIG_MPIC_WEIRD is not set
|
||||
# CONFIG_PPC_I8259 is not set
|
||||
# CONFIG_PPC_RTAS is not set
|
||||
# CONFIG_MMIO_NVRAM is not set
|
||||
# CONFIG_PPC_MPC106 is not set
|
||||
# CONFIG_PPC_970_NAP is not set
|
||||
# CONFIG_PPC_INDIRECT_IO is not set
|
||||
# CONFIG_GENERIC_IOMAP is not set
|
||||
# CONFIG_CPU_FREQ is not set
|
||||
# CONFIG_CPM2 is not set
|
||||
|
||||
#
|
||||
# Kernel options
|
||||
#
|
||||
# CONFIG_HIGHMEM is not set
|
||||
# CONFIG_HZ_100 is not set
|
||||
CONFIG_HZ_250=y
|
||||
# CONFIG_HZ_300 is not set
|
||||
# CONFIG_HZ_1000 is not set
|
||||
CONFIG_HZ=250
|
||||
CONFIG_PREEMPT_NONE=y
|
||||
# CONFIG_PREEMPT_VOLUNTARY is not set
|
||||
# CONFIG_PREEMPT is not set
|
||||
CONFIG_BINFMT_ELF=y
|
||||
# CONFIG_BINFMT_MISC is not set
|
||||
CONFIG_MATH_EMULATION=y
|
||||
CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
|
||||
CONFIG_ARCH_FLATMEM_ENABLE=y
|
||||
CONFIG_ARCH_POPULATES_NODE_MAP=y
|
||||
CONFIG_SELECT_MEMORY_MODEL=y
|
||||
CONFIG_FLATMEM_MANUAL=y
|
||||
# CONFIG_DISCONTIGMEM_MANUAL is not set
|
||||
# CONFIG_SPARSEMEM_MANUAL is not set
|
||||
CONFIG_FLATMEM=y
|
||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||
# CONFIG_SPARSEMEM_STATIC is not set
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
CONFIG_RESOURCES_64BIT=y
|
||||
CONFIG_ZONE_DMA_FLAG=1
|
||||
CONFIG_PROC_DEVICETREE=y
|
||||
# CONFIG_CMDLINE_BOOL is not set
|
||||
CONFIG_SECCOMP=y
|
||||
CONFIG_WANT_DEVICE_TREE=y
|
||||
CONFIG_DEVICE_TREE="ebony.dts"
|
||||
CONFIG_ISA_DMA_API=y
|
||||
|
||||
#
|
||||
# Bus options
|
||||
#
|
||||
CONFIG_ZONE_DMA=y
|
||||
CONFIG_PPC_INDIRECT_PCI=y
|
||||
# CONFIG_PPC_INDIRECT_PCI_BE is not set
|
||||
CONFIG_PCI=y
|
||||
CONFIG_PCI_DOMAINS=y
|
||||
# CONFIG_PCIEPORTBUS is not set
|
||||
# CONFIG_PCI_DEBUG is not set
|
||||
|
||||
#
|
||||
# PCCARD (PCMCIA/CardBus) support
|
||||
#
|
||||
# CONFIG_PCCARD is not set
|
||||
|
||||
#
|
||||
# PCI Hotplug Support
|
||||
#
|
||||
# CONFIG_HOTPLUG_PCI is not set
|
||||
|
||||
#
|
||||
# Advanced setup
|
||||
#
|
||||
# CONFIG_ADVANCED_OPTIONS is not set
|
||||
|
||||
#
|
||||
# Default settings for advanced configuration options are used
|
||||
#
|
||||
CONFIG_HIGHMEM_START=0xfe000000
|
||||
CONFIG_LOWMEM_SIZE=0x30000000
|
||||
CONFIG_KERNEL_START=0xc0000000
|
||||
CONFIG_TASK_SIZE=0x80000000
|
||||
CONFIG_CONSISTENT_START=0xff100000
|
||||
CONFIG_CONSISTENT_SIZE=0x00200000
|
||||
CONFIG_BOOT_LOAD=0x01000000
|
||||
|
||||
#
|
||||
# Networking
|
||||
#
|
||||
CONFIG_NET=y
|
||||
|
||||
#
|
||||
# Networking options
|
||||
#
|
||||
CONFIG_PACKET=y
|
||||
# CONFIG_PACKET_MMAP is not set
|
||||
CONFIG_UNIX=y
|
||||
# CONFIG_NET_KEY is not set
|
||||
CONFIG_INET=y
|
||||
# CONFIG_IP_MULTICAST is not set
|
||||
# CONFIG_IP_ADVANCED_ROUTER is not set
|
||||
CONFIG_IP_FIB_HASH=y
|
||||
CONFIG_IP_PNP=y
|
||||
CONFIG_IP_PNP_DHCP=y
|
||||
CONFIG_IP_PNP_BOOTP=y
|
||||
# CONFIG_IP_PNP_RARP is not set
|
||||
# CONFIG_NET_IPIP is not set
|
||||
# CONFIG_NET_IPGRE is not set
|
||||
# CONFIG_ARPD is not set
|
||||
# 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_XFRM_MODE_TRANSPORT is not set
|
||||
# CONFIG_INET_XFRM_MODE_TUNNEL is not set
|
||||
# CONFIG_INET_XFRM_MODE_BEET is not set
|
||||
CONFIG_INET_DIAG=y
|
||||
CONFIG_INET_TCP_DIAG=y
|
||||
# CONFIG_TCP_CONG_ADVANCED is not set
|
||||
CONFIG_TCP_CONG_CUBIC=y
|
||||
CONFIG_DEFAULT_TCP_CONG="cubic"
|
||||
# CONFIG_TCP_MD5SIG is not set
|
||||
# CONFIG_IPV6 is not set
|
||||
# CONFIG_INET6_XFRM_TUNNEL is not set
|
||||
# CONFIG_INET6_TUNNEL is not set
|
||||
# CONFIG_NETWORK_SECMARK is not set
|
||||
# CONFIG_NETFILTER is not set
|
||||
|
||||
#
|
||||
# DCCP Configuration (EXPERIMENTAL)
|
||||
#
|
||||
# CONFIG_IP_DCCP is not set
|
||||
|
||||
#
|
||||
# SCTP Configuration (EXPERIMENTAL)
|
||||
#
|
||||
# CONFIG_IP_SCTP is not set
|
||||
|
||||
#
|
||||
# TIPC Configuration (EXPERIMENTAL)
|
||||
#
|
||||
# CONFIG_TIPC is not set
|
||||
# CONFIG_ATM is not set
|
||||
# CONFIG_BRIDGE is not set
|
||||
# CONFIG_VLAN_8021Q is not set
|
||||
# CONFIG_DECNET is not set
|
||||
# CONFIG_LLC2 is not set
|
||||
# CONFIG_IPX is not set
|
||||
# CONFIG_ATALK is not set
|
||||
# CONFIG_X25 is not set
|
||||
# CONFIG_LAPB is not set
|
||||
# CONFIG_ECONET is not set
|
||||
# CONFIG_WAN_ROUTER is not set
|
||||
|
||||
#
|
||||
# QoS and/or fair queueing
|
||||
#
|
||||
# CONFIG_NET_SCHED is not set
|
||||
|
||||
#
|
||||
# Network testing
|
||||
#
|
||||
# CONFIG_NET_PKTGEN is not set
|
||||
# CONFIG_HAMRADIO is not set
|
||||
# CONFIG_IRDA is not set
|
||||
# CONFIG_BT is not set
|
||||
# CONFIG_AF_RXRPC is not set
|
||||
|
||||
#
|
||||
# Wireless
|
||||
#
|
||||
# CONFIG_CFG80211 is not set
|
||||
# CONFIG_WIRELESS_EXT is not set
|
||||
# CONFIG_IEEE80211 is not set
|
||||
|
||||
#
|
||||
# Device Drivers
|
||||
#
|
||||
|
||||
#
|
||||
# Generic Driver Options
|
||||
#
|
||||
CONFIG_STANDALONE=y
|
||||
CONFIG_PREVENT_FIRMWARE_BUILD=y
|
||||
CONFIG_FW_LOADER=y
|
||||
# CONFIG_DEBUG_DRIVER is not set
|
||||
# CONFIG_DEBUG_DEVRES is not set
|
||||
# CONFIG_SYS_HYPERVISOR is not set
|
||||
|
||||
#
|
||||
# Connector - unified userspace <-> kernelspace linker
|
||||
#
|
||||
CONFIG_CONNECTOR=y
|
||||
CONFIG_PROC_EVENTS=y
|
||||
# CONFIG_MTD is not set
|
||||
|
||||
#
|
||||
# Parallel port support
|
||||
#
|
||||
# CONFIG_PARPORT is not set
|
||||
|
||||
#
|
||||
# Plug and Play support
|
||||
#
|
||||
# CONFIG_PNPACPI is not set
|
||||
|
||||
#
|
||||
# Block devices
|
||||
#
|
||||
# CONFIG_BLK_DEV_FD is not set
|
||||
# CONFIG_BLK_CPQ_DA is not set
|
||||
# CONFIG_BLK_CPQ_CISS_DA is not set
|
||||
# CONFIG_BLK_DEV_DAC960 is not set
|
||||
# CONFIG_BLK_DEV_UMEM is not set
|
||||
# CONFIG_BLK_DEV_COW_COMMON is not set
|
||||
# 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=y
|
||||
CONFIG_BLK_DEV_RAM_COUNT=16
|
||||
CONFIG_BLK_DEV_RAM_SIZE=35000
|
||||
CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
|
||||
# CONFIG_CDROM_PKTCDVD is not set
|
||||
# CONFIG_ATA_OVER_ETH is not set
|
||||
|
||||
#
|
||||
# Misc devices
|
||||
#
|
||||
# CONFIG_SGI_IOC4 is not set
|
||||
# CONFIG_TIFM_CORE is not set
|
||||
|
||||
#
|
||||
# ATA/ATAPI/MFM/RLL support
|
||||
#
|
||||
# CONFIG_IDE is not set
|
||||
|
||||
#
|
||||
# SCSI device support
|
||||
#
|
||||
# CONFIG_RAID_ATTRS is not set
|
||||
# CONFIG_SCSI is not set
|
||||
# CONFIG_SCSI_NETLINK is not set
|
||||
|
||||
#
|
||||
# Serial ATA (prod) and Parallel ATA (experimental) drivers
|
||||
#
|
||||
# CONFIG_ATA is not set
|
||||
|
||||
#
|
||||
# Multi-device support (RAID and LVM)
|
||||
#
|
||||
# CONFIG_MD is not set
|
||||
|
||||
#
|
||||
# Fusion MPT device support
|
||||
#
|
||||
# CONFIG_FUSION is not set
|
||||
|
||||
#
|
||||
# IEEE 1394 (FireWire) support
|
||||
#
|
||||
# CONFIG_IEEE1394 is not set
|
||||
|
||||
#
|
||||
# I2O device support
|
||||
#
|
||||
# CONFIG_I2O is not set
|
||||
# CONFIG_MACINTOSH_DRIVERS is not set
|
||||
|
||||
#
|
||||
# Network device support
|
||||
#
|
||||
CONFIG_NETDEVICES=y
|
||||
# CONFIG_DUMMY is not set
|
||||
# CONFIG_BONDING is not set
|
||||
# CONFIG_EQUALIZER is not set
|
||||
# CONFIG_TUN is not set
|
||||
|
||||
#
|
||||
# ARCnet devices
|
||||
#
|
||||
# CONFIG_ARCNET is not set
|
||||
|
||||
#
|
||||
# PHY device support
|
||||
#
|
||||
|
||||
#
|
||||
# Ethernet (10 or 100Mbit)
|
||||
#
|
||||
# CONFIG_NET_ETHERNET is not set
|
||||
CONFIG_IBM_NEW_EMAC=y
|
||||
CONFIG_IBM_NEW_EMAC_RXB=128
|
||||
CONFIG_IBM_NEW_EMAC_TXB=64
|
||||
CONFIG_IBM_NEW_EMAC_POLL_WEIGHT=32
|
||||
CONFIG_IBM_NEW_EMAC_RX_COPY_THRESHOLD=256
|
||||
CONFIG_IBM_NEW_EMAC_RX_SKB_HEADROOM=0
|
||||
# CONFIG_IBM_NEW_EMAC_DEBUG is not set
|
||||
CONFIG_IBM_NEW_EMAC_ZMII=y
|
||||
# CONFIG_IBM_NEW_EMAC_RGMII is not set
|
||||
# CONFIG_IBM_NEW_EMAC_TAH is not set
|
||||
# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
|
||||
|
||||
#
|
||||
# Ethernet (1000 Mbit)
|
||||
#
|
||||
# CONFIG_ACENIC is not set
|
||||
# CONFIG_DL2K is not set
|
||||
# CONFIG_E1000 is not set
|
||||
# CONFIG_NS83820 is not set
|
||||
# CONFIG_HAMACHI is not set
|
||||
# CONFIG_YELLOWFIN is not set
|
||||
# CONFIG_R8169 is not set
|
||||
# CONFIG_SIS190 is not set
|
||||
# CONFIG_SKGE is not set
|
||||
# CONFIG_SKY2 is not set
|
||||
# CONFIG_SK98LIN is not set
|
||||
# CONFIG_TIGON3 is not set
|
||||
# CONFIG_BNX2 is not set
|
||||
# CONFIG_QLA3XXX is not set
|
||||
# CONFIG_ATL1 is not set
|
||||
|
||||
#
|
||||
# Ethernet (10000 Mbit)
|
||||
#
|
||||
# CONFIG_CHELSIO_T1 is not set
|
||||
# CONFIG_CHELSIO_T3 is not set
|
||||
# CONFIG_IXGB is not set
|
||||
# CONFIG_S2IO is not set
|
||||
# CONFIG_MYRI10GE is not set
|
||||
# CONFIG_NETXEN_NIC is not set
|
||||
|
||||
#
|
||||
# Token Ring devices
|
||||
#
|
||||
# CONFIG_TR is not set
|
||||
|
||||
#
|
||||
# Wireless LAN
|
||||
#
|
||||
# CONFIG_WLAN_PRE80211 is not set
|
||||
# CONFIG_WLAN_80211 is not set
|
||||
|
||||
#
|
||||
# Wan interfaces
|
||||
#
|
||||
# CONFIG_WAN is not set
|
||||
# CONFIG_FDDI is not set
|
||||
# CONFIG_HIPPI is not set
|
||||
# CONFIG_PPP is not set
|
||||
# CONFIG_SLIP is not set
|
||||
# CONFIG_SHAPER is not set
|
||||
# CONFIG_NETCONSOLE is not set
|
||||
# CONFIG_NETPOLL is not set
|
||||
# CONFIG_NET_POLL_CONTROLLER is not set
|
||||
|
||||
#
|
||||
# ISDN subsystem
|
||||
#
|
||||
# CONFIG_ISDN is not set
|
||||
|
||||
#
|
||||
# Telephony Support
|
||||
#
|
||||
# CONFIG_PHONE is not set
|
||||
|
||||
#
|
||||
# Input device support
|
||||
#
|
||||
# CONFIG_INPUT is not set
|
||||
|
||||
#
|
||||
# Hardware I/O ports
|
||||
#
|
||||
# CONFIG_SERIO is not set
|
||||
# CONFIG_GAMEPORT is not set
|
||||
|
||||
#
|
||||
# Character devices
|
||||
#
|
||||
# CONFIG_VT is not set
|
||||
# CONFIG_SERIAL_NONSTANDARD is not set
|
||||
|
||||
#
|
||||
# Serial drivers
|
||||
#
|
||||
CONFIG_SERIAL_8250=y
|
||||
CONFIG_SERIAL_8250_CONSOLE=y
|
||||
# CONFIG_SERIAL_8250_PCI is not set
|
||||
CONFIG_SERIAL_8250_NR_UARTS=4
|
||||
CONFIG_SERIAL_8250_RUNTIME_UARTS=4
|
||||
CONFIG_SERIAL_8250_EXTENDED=y
|
||||
# CONFIG_SERIAL_8250_MANY_PORTS is not set
|
||||
CONFIG_SERIAL_8250_SHARE_IRQ=y
|
||||
# CONFIG_SERIAL_8250_DETECT_IRQ is not set
|
||||
# CONFIG_SERIAL_8250_RSA is not set
|
||||
|
||||
#
|
||||
# Non-8250 serial port support
|
||||
#
|
||||
# CONFIG_SERIAL_UARTLITE is not set
|
||||
CONFIG_SERIAL_CORE=y
|
||||
CONFIG_SERIAL_CORE_CONSOLE=y
|
||||
# CONFIG_SERIAL_JSM is not set
|
||||
CONFIG_SERIAL_OF_PLATFORM=y
|
||||
CONFIG_UNIX98_PTYS=y
|
||||
CONFIG_LEGACY_PTYS=y
|
||||
CONFIG_LEGACY_PTY_COUNT=256
|
||||
|
||||
#
|
||||
# IPMI
|
||||
#
|
||||
# CONFIG_IPMI_HANDLER is not set
|
||||
|
||||
#
|
||||
# Watchdog Cards
|
||||
#
|
||||
# CONFIG_WATCHDOG is not set
|
||||
# CONFIG_HW_RANDOM is not set
|
||||
# CONFIG_NVRAM is not set
|
||||
# CONFIG_GEN_RTC is not set
|
||||
# CONFIG_DTLK is not set
|
||||
# CONFIG_R3964 is not set
|
||||
# CONFIG_APPLICOM is not set
|
||||
# CONFIG_AGP is not set
|
||||
# CONFIG_DRM is not set
|
||||
# CONFIG_RAW_DRIVER is not set
|
||||
|
||||
#
|
||||
# TPM devices
|
||||
#
|
||||
# CONFIG_TCG_TPM is not set
|
||||
|
||||
#
|
||||
# I2C support
|
||||
#
|
||||
# CONFIG_I2C is not set
|
||||
|
||||
#
|
||||
# SPI support
|
||||
#
|
||||
# CONFIG_SPI is not set
|
||||
# CONFIG_SPI_MASTER is not set
|
||||
|
||||
#
|
||||
# Dallas's 1-wire bus
|
||||
#
|
||||
# CONFIG_W1 is not set
|
||||
|
||||
#
|
||||
# Hardware Monitoring support
|
||||
#
|
||||
# CONFIG_HWMON is not set
|
||||
# CONFIG_HWMON_VID is not set
|
||||
|
||||
#
|
||||
# Multifunction device drivers
|
||||
#
|
||||
# CONFIG_MFD_SM501 is not set
|
||||
|
||||
#
|
||||
# Multimedia devices
|
||||
#
|
||||
# CONFIG_VIDEO_DEV is not set
|
||||
|
||||
#
|
||||
# Digital Video Broadcasting Devices
|
||||
#
|
||||
# CONFIG_DVB is not set
|
||||
|
||||
#
|
||||
# Graphics support
|
||||
#
|
||||
# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
|
||||
# CONFIG_FB is not set
|
||||
# CONFIG_FB_IBM_GXT4500 is not set
|
||||
|
||||
#
|
||||
# Sound
|
||||
#
|
||||
# CONFIG_SOUND is not set
|
||||
|
||||
#
|
||||
# USB support
|
||||
#
|
||||
CONFIG_USB_ARCH_HAS_HCD=y
|
||||
CONFIG_USB_ARCH_HAS_OHCI=y
|
||||
CONFIG_USB_ARCH_HAS_EHCI=y
|
||||
# CONFIG_USB is not set
|
||||
|
||||
#
|
||||
# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
|
||||
#
|
||||
|
||||
#
|
||||
# USB Gadget Support
|
||||
#
|
||||
# CONFIG_USB_GADGET is not set
|
||||
|
||||
#
|
||||
# MMC/SD Card support
|
||||
#
|
||||
# CONFIG_MMC is not set
|
||||
|
||||
#
|
||||
# LED devices
|
||||
#
|
||||
# CONFIG_NEW_LEDS is not set
|
||||
|
||||
#
|
||||
# LED drivers
|
||||
#
|
||||
|
||||
#
|
||||
# LED Triggers
|
||||
#
|
||||
|
||||
#
|
||||
# InfiniBand support
|
||||
#
|
||||
# CONFIG_INFINIBAND is not set
|
||||
|
||||
#
|
||||
# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
|
||||
#
|
||||
|
||||
#
|
||||
# Real Time Clock
|
||||
#
|
||||
# CONFIG_RTC_CLASS is not set
|
||||
|
||||
#
|
||||
# DMA Engine support
|
||||
#
|
||||
# CONFIG_DMA_ENGINE is not set
|
||||
|
||||
#
|
||||
# DMA Clients
|
||||
#
|
||||
|
||||
#
|
||||
# DMA Devices
|
||||
#
|
||||
|
||||
#
|
||||
# Auxiliary Display support
|
||||
#
|
||||
|
||||
#
|
||||
# Virtualization
|
||||
#
|
||||
|
||||
#
|
||||
# File systems
|
||||
#
|
||||
CONFIG_EXT2_FS=y
|
||||
# CONFIG_EXT2_FS_XATTR is not set
|
||||
# CONFIG_EXT2_FS_XIP is not set
|
||||
# CONFIG_EXT3_FS is not set
|
||||
# CONFIG_EXT4DEV_FS is not set
|
||||
# CONFIG_REISERFS_FS is not set
|
||||
# CONFIG_JFS_FS is not set
|
||||
# CONFIG_FS_POSIX_ACL is not set
|
||||
# CONFIG_XFS_FS is not set
|
||||
# CONFIG_GFS2_FS is not set
|
||||
# CONFIG_OCFS2_FS is not set
|
||||
# CONFIG_MINIX_FS is not set
|
||||
# CONFIG_ROMFS_FS is not set
|
||||
CONFIG_INOTIFY=y
|
||||
CONFIG_INOTIFY_USER=y
|
||||
# CONFIG_QUOTA is not set
|
||||
CONFIG_DNOTIFY=y
|
||||
# CONFIG_AUTOFS_FS is not set
|
||||
# CONFIG_AUTOFS4_FS is not set
|
||||
# CONFIG_FUSE_FS is not set
|
||||
|
||||
#
|
||||
# CD-ROM/DVD Filesystems
|
||||
#
|
||||
# CONFIG_ISO9660_FS is not set
|
||||
# CONFIG_UDF_FS is not set
|
||||
|
||||
#
|
||||
# DOS/FAT/NT Filesystems
|
||||
#
|
||||
# CONFIG_MSDOS_FS is not set
|
||||
# CONFIG_VFAT_FS is not set
|
||||
# CONFIG_NTFS_FS is not set
|
||||
|
||||
#
|
||||
# Pseudo filesystems
|
||||
#
|
||||
CONFIG_PROC_FS=y
|
||||
CONFIG_PROC_KCORE=y
|
||||
CONFIG_PROC_SYSCTL=y
|
||||
CONFIG_SYSFS=y
|
||||
CONFIG_TMPFS=y
|
||||
# CONFIG_TMPFS_POSIX_ACL is not set
|
||||
# CONFIG_HUGETLB_PAGE is not set
|
||||
CONFIG_RAMFS=y
|
||||
# CONFIG_CONFIGFS_FS is not set
|
||||
|
||||
#
|
||||
# Miscellaneous filesystems
|
||||
#
|
||||
# CONFIG_ADFS_FS is not set
|
||||
# CONFIG_AFFS_FS is not set
|
||||
# CONFIG_HFS_FS is not set
|
||||
# CONFIG_HFSPLUS_FS is not set
|
||||
# CONFIG_BEFS_FS is not set
|
||||
# CONFIG_BFS_FS is not set
|
||||
# CONFIG_EFS_FS is not set
|
||||
CONFIG_CRAMFS=y
|
||||
# CONFIG_VXFS_FS is not set
|
||||
# CONFIG_HPFS_FS is not set
|
||||
# CONFIG_QNX4FS_FS is not set
|
||||
# CONFIG_SYSV_FS is not set
|
||||
# CONFIG_UFS_FS is not set
|
||||
|
||||
#
|
||||
# Network File Systems
|
||||
#
|
||||
CONFIG_NFS_FS=y
|
||||
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
|
||||
# CONFIG_RPCSEC_GSS_SPKM3 is not set
|
||||
# CONFIG_SMB_FS is not set
|
||||
# CONFIG_CIFS is not set
|
||||
# CONFIG_NCP_FS is not set
|
||||
# CONFIG_CODA_FS is not set
|
||||
# CONFIG_AFS_FS is not set
|
||||
# CONFIG_9P_FS is not set
|
||||
|
||||
#
|
||||
# Partition Types
|
||||
#
|
||||
# CONFIG_PARTITION_ADVANCED is not set
|
||||
CONFIG_MSDOS_PARTITION=y
|
||||
|
||||
#
|
||||
# Native Language Support
|
||||
#
|
||||
# CONFIG_NLS is not set
|
||||
|
||||
#
|
||||
# Distributed Lock Manager
|
||||
#
|
||||
# CONFIG_DLM is not set
|
||||
# CONFIG_UCC_SLOW is not set
|
||||
# CONFIG_UCC_FAST is not set
|
||||
|
||||
#
|
||||
# Library routines
|
||||
#
|
||||
CONFIG_BITREVERSE=y
|
||||
# CONFIG_CRC_CCITT is not set
|
||||
# CONFIG_CRC16 is not set
|
||||
CONFIG_CRC32=y
|
||||
# CONFIG_LIBCRC32C is not set
|
||||
CONFIG_ZLIB_INFLATE=y
|
||||
CONFIG_PLIST=y
|
||||
CONFIG_HAS_IOMEM=y
|
||||
CONFIG_HAS_IOPORT=y
|
||||
|
||||
#
|
||||
# Instrumentation Support
|
||||
#
|
||||
# CONFIG_PROFILING is not set
|
||||
|
||||
#
|
||||
# Kernel hacking
|
||||
#
|
||||
# CONFIG_PRINTK_TIME is not set
|
||||
CONFIG_ENABLE_MUST_CHECK=y
|
||||
CONFIG_MAGIC_SYSRQ=y
|
||||
# CONFIG_UNUSED_SYMBOLS is not set
|
||||
# CONFIG_DEBUG_FS is not set
|
||||
# CONFIG_HEADERS_CHECK is not set
|
||||
CONFIG_DEBUG_KERNEL=y
|
||||
# CONFIG_DEBUG_SHIRQ is not set
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
CONFIG_DETECT_SOFTLOCKUP=y
|
||||
# CONFIG_SCHEDSTATS is not set
|
||||
# CONFIG_TIMER_STATS is not set
|
||||
# CONFIG_DEBUG_SLAB is not set
|
||||
# CONFIG_DEBUG_RT_MUTEXES is not set
|
||||
# CONFIG_RT_MUTEX_TESTER is not set
|
||||
# CONFIG_DEBUG_SPINLOCK is not set
|
||||
# CONFIG_DEBUG_MUTEXES is not set
|
||||
# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
|
||||
# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
|
||||
# CONFIG_DEBUG_KOBJECT is not set
|
||||
CONFIG_DEBUG_BUGVERBOSE=y
|
||||
# CONFIG_DEBUG_INFO is not set
|
||||
# CONFIG_DEBUG_VM is not set
|
||||
# CONFIG_DEBUG_LIST is not set
|
||||
CONFIG_FORCED_INLINING=y
|
||||
# CONFIG_RCU_TORTURE_TEST is not set
|
||||
# CONFIG_FAULT_INJECTION is not set
|
||||
# CONFIG_DEBUG_STACKOVERFLOW is not set
|
||||
# CONFIG_DEBUG_STACK_USAGE is not set
|
||||
# CONFIG_DEBUG_PAGEALLOC is not set
|
||||
# CONFIG_DEBUGGER is not set
|
||||
# CONFIG_BDI_SWITCH is not set
|
||||
# CONFIG_BOOTX_TEXT is not set
|
||||
# CONFIG_SERIAL_TEXT_DEBUG is not set
|
||||
# CONFIG_PPC_EARLY_DEBUG is not set
|
||||
|
||||
#
|
||||
# Security options
|
||||
#
|
||||
# CONFIG_KEYS is not set
|
||||
# CONFIG_SECURITY is not set
|
||||
|
||||
#
|
||||
# Cryptographic options
|
||||
#
|
||||
CONFIG_CRYPTO=y
|
||||
CONFIG_CRYPTO_ALGAPI=y
|
||||
CONFIG_CRYPTO_BLKCIPHER=y
|
||||
CONFIG_CRYPTO_MANAGER=y
|
||||
# CONFIG_CRYPTO_HMAC is not set
|
||||
# CONFIG_CRYPTO_XCBC is not set
|
||||
# CONFIG_CRYPTO_NULL is not set
|
||||
# CONFIG_CRYPTO_MD4 is not set
|
||||
CONFIG_CRYPTO_MD5=y
|
||||
# CONFIG_CRYPTO_SHA1 is not set
|
||||
# CONFIG_CRYPTO_SHA256 is not set
|
||||
# CONFIG_CRYPTO_SHA512 is not set
|
||||
# CONFIG_CRYPTO_WP512 is not set
|
||||
# CONFIG_CRYPTO_TGR192 is not set
|
||||
# CONFIG_CRYPTO_GF128MUL is not set
|
||||
CONFIG_CRYPTO_ECB=y
|
||||
CONFIG_CRYPTO_CBC=y
|
||||
CONFIG_CRYPTO_PCBC=y
|
||||
# CONFIG_CRYPTO_LRW is not set
|
||||
CONFIG_CRYPTO_DES=y
|
||||
# CONFIG_CRYPTO_FCRYPT is not set
|
||||
# CONFIG_CRYPTO_BLOWFISH is not set
|
||||
# CONFIG_CRYPTO_TWOFISH is not set
|
||||
# CONFIG_CRYPTO_SERPENT is not set
|
||||
# CONFIG_CRYPTO_AES is not set
|
||||
# CONFIG_CRYPTO_CAST5 is not set
|
||||
# CONFIG_CRYPTO_CAST6 is not set
|
||||
# CONFIG_CRYPTO_TEA is not set
|
||||
# CONFIG_CRYPTO_ARC4 is not set
|
||||
# CONFIG_CRYPTO_KHAZAD is not set
|
||||
# CONFIG_CRYPTO_ANUBIS is not set
|
||||
# CONFIG_CRYPTO_DEFLATE is not set
|
||||
# CONFIG_CRYPTO_MICHAEL_MIC is not set
|
||||
# CONFIG_CRYPTO_CRC32C is not set
|
||||
# CONFIG_CRYPTO_CAMELLIA is not set
|
||||
# CONFIG_CRYPTO_TEST is not set
|
||||
|
||||
#
|
||||
# Hardware crypto devices
|
||||
#
|
1070
arch/powerpc/configs/holly_defconfig
Normal file
1070
arch/powerpc/configs/holly_defconfig
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,7 +1,7 @@
|
||||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.20-rc5
|
||||
# Tue Jan 30 14:27:25 2007
|
||||
# Linux kernel version: 2.6.21-rc5
|
||||
# Mon Apr 9 16:09:16 2007
|
||||
#
|
||||
# CONFIG_PPC64 is not set
|
||||
CONFIG_PPC32=y
|
||||
@ -34,9 +34,9 @@ CONFIG_DEFAULT_UIMAGE=y
|
||||
CONFIG_PPC_83xx=y
|
||||
# CONFIG_PPC_85xx is not set
|
||||
# CONFIG_PPC_86xx is not set
|
||||
# CONFIG_PPC_8xx is not set
|
||||
# CONFIG_40x is not set
|
||||
# CONFIG_44x is not set
|
||||
# CONFIG_8xx is not set
|
||||
# CONFIG_E200 is not set
|
||||
CONFIG_6xx=y
|
||||
CONFIG_83xx=y
|
||||
@ -63,6 +63,7 @@ CONFIG_LOCALVERSION_AUTO=y
|
||||
CONFIG_SWAP=y
|
||||
CONFIG_SYSVIPC=y
|
||||
# CONFIG_IPC_NS is not set
|
||||
CONFIG_SYSVIPC_SYSCTL=y
|
||||
# CONFIG_POSIX_MQUEUE is not set
|
||||
# CONFIG_BSD_PROCESS_ACCT is not set
|
||||
# CONFIG_TASKSTATS is not set
|
||||
@ -71,6 +72,7 @@ CONFIG_SYSVIPC=y
|
||||
# CONFIG_IKCONFIG is not set
|
||||
CONFIG_SYSFS_DEPRECATED=y
|
||||
# CONFIG_RELAY is not set
|
||||
CONFIG_BLK_DEV_INITRD=y
|
||||
CONFIG_INITRAMFS_SOURCE=""
|
||||
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
|
||||
CONFIG_SYSCTL=y
|
||||
@ -123,16 +125,17 @@ CONFIG_DEFAULT_AS=y
|
||||
# CONFIG_DEFAULT_NOOP is not set
|
||||
CONFIG_DEFAULT_IOSCHED="anticipatory"
|
||||
CONFIG_QUICC_ENGINE=y
|
||||
CONFIG_PPC_GEN550=y
|
||||
# CONFIG_WANT_EARLY_SERIAL is not set
|
||||
|
||||
#
|
||||
# Platform support
|
||||
#
|
||||
# CONFIG_MPC8313_RDB is not set
|
||||
CONFIG_MPC832x_MDS=y
|
||||
# CONFIG_MPC834x_SYS is not set
|
||||
# CONFIG_MPC832x_RDB is not set
|
||||
# CONFIG_MPC834x_MDS is not set
|
||||
# CONFIG_MPC834x_ITX is not set
|
||||
# CONFIG_MPC8360E_PB is not set
|
||||
# CONFIG_MPC836x_MDS is not set
|
||||
CONFIG_PPC_MPC832x=y
|
||||
# CONFIG_MPIC is not set
|
||||
|
||||
@ -163,6 +166,7 @@ CONFIG_FLAT_NODE_MEM_MAP=y
|
||||
# CONFIG_SPARSEMEM_STATIC is not set
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
# CONFIG_RESOURCES_64BIT is not set
|
||||
CONFIG_ZONE_DMA_FLAG=1
|
||||
CONFIG_PROC_DEVICETREE=y
|
||||
# CONFIG_CMDLINE_BOOL is not set
|
||||
# CONFIG_PM is not set
|
||||
@ -172,6 +176,7 @@ CONFIG_ISA_DMA_API=y
|
||||
#
|
||||
# Bus options
|
||||
#
|
||||
CONFIG_ZONE_DMA=y
|
||||
CONFIG_GENERIC_ISA_DMA=y
|
||||
# CONFIG_MPIC_WEIRD is not set
|
||||
# CONFIG_PPC_I8259 is not set
|
||||
@ -220,6 +225,7 @@ CONFIG_UNIX=y
|
||||
CONFIG_XFRM=y
|
||||
# CONFIG_XFRM_USER is not set
|
||||
# CONFIG_XFRM_SUB_POLICY is not set
|
||||
# CONFIG_XFRM_MIGRATE is not set
|
||||
# CONFIG_NET_KEY is not set
|
||||
CONFIG_INET=y
|
||||
CONFIG_IP_MULTICAST=y
|
||||
@ -324,6 +330,7 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
|
||||
#
|
||||
# Plug and Play support
|
||||
#
|
||||
# CONFIG_PNPACPI is not set
|
||||
|
||||
#
|
||||
# Block devices
|
||||
@ -342,7 +349,6 @@ CONFIG_BLK_DEV_RAM=y
|
||||
CONFIG_BLK_DEV_RAM_COUNT=16
|
||||
CONFIG_BLK_DEV_RAM_SIZE=32768
|
||||
CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
|
||||
CONFIG_BLK_DEV_INITRD=y
|
||||
# CONFIG_CDROM_PKTCDVD is not set
|
||||
# CONFIG_ATA_OVER_ETH is not set
|
||||
|
||||
@ -482,7 +488,21 @@ CONFIG_NETDEVICES=y
|
||||
#
|
||||
# PHY device support
|
||||
#
|
||||
# CONFIG_PHYLIB is not set
|
||||
CONFIG_PHYLIB=y
|
||||
|
||||
#
|
||||
# MII PHY device drivers
|
||||
#
|
||||
# CONFIG_MARVELL_PHY is not set
|
||||
CONFIG_DAVICOM_PHY=y
|
||||
# CONFIG_QSEMI_PHY is not set
|
||||
# CONFIG_LXT_PHY is not set
|
||||
# CONFIG_CICADA_PHY is not set
|
||||
# CONFIG_VITESSE_PHY is not set
|
||||
# CONFIG_SMSC_PHY is not set
|
||||
# CONFIG_BROADCOM_PHY is not set
|
||||
# CONFIG_ICPLUS_PHY is not set
|
||||
# CONFIG_FIXED_PHY is not set
|
||||
|
||||
#
|
||||
# Ethernet (10 or 100Mbit)
|
||||
@ -524,11 +544,13 @@ CONFIG_UCC_GETH=y
|
||||
# CONFIG_UGETH_FILTERING is not set
|
||||
# CONFIG_UGETH_TX_ON_DEMOND is not set
|
||||
# CONFIG_QLA3XXX is not set
|
||||
# CONFIG_ATL1 is not set
|
||||
|
||||
#
|
||||
# Ethernet (10000 Mbit)
|
||||
#
|
||||
# CONFIG_CHELSIO_T1 is not set
|
||||
# CONFIG_CHELSIO_T3 is not set
|
||||
# CONFIG_IXGB is not set
|
||||
# CONFIG_S2IO is not set
|
||||
# CONFIG_MYRI10GE is not set
|
||||
@ -621,6 +643,7 @@ CONFIG_SERIAL_8250_RUNTIME_UARTS=4
|
||||
CONFIG_SERIAL_CORE=y
|
||||
CONFIG_SERIAL_CORE_CONSOLE=y
|
||||
# CONFIG_SERIAL_JSM is not set
|
||||
# CONFIG_SERIAL_OF_PLATFORM is not set
|
||||
CONFIG_UNIX98_PTYS=y
|
||||
CONFIG_LEGACY_PTYS=y
|
||||
CONFIG_LEGACY_PTY_COUNT=256
|
||||
@ -691,6 +714,7 @@ CONFIG_I2C_MPC=y
|
||||
# CONFIG_I2C_NFORCE2 is not set
|
||||
# CONFIG_I2C_OCORES is not set
|
||||
# CONFIG_I2C_PARPORT_LIGHT is not set
|
||||
# CONFIG_I2C_PASEMI is not set
|
||||
# CONFIG_I2C_PROSAVAGE is not set
|
||||
# CONFIG_I2C_SAVAGE4 is not set
|
||||
# CONFIG_I2C_SIS5595 is not set
|
||||
@ -738,6 +762,7 @@ CONFIG_HWMON=y
|
||||
# CONFIG_SENSORS_ADM1021 is not set
|
||||
# CONFIG_SENSORS_ADM1025 is not set
|
||||
# CONFIG_SENSORS_ADM1026 is not set
|
||||
# CONFIG_SENSORS_ADM1029 is not set
|
||||
# CONFIG_SENSORS_ADM1031 is not set
|
||||
# CONFIG_SENSORS_ADM9240 is not set
|
||||
# CONFIG_SENSORS_ASB100 is not set
|
||||
@ -778,6 +803,11 @@ CONFIG_HWMON=y
|
||||
# CONFIG_SENSORS_W83627EHF is not set
|
||||
# CONFIG_HWMON_DEBUG_CHIP is not set
|
||||
|
||||
#
|
||||
# Multifunction device drivers
|
||||
#
|
||||
# CONFIG_MFD_SM501 is not set
|
||||
|
||||
#
|
||||
# Multimedia devices
|
||||
#
|
||||
@ -791,10 +821,9 @@ CONFIG_HWMON=y
|
||||
#
|
||||
# Graphics support
|
||||
#
|
||||
CONFIG_FIRMWARE_EDID=y
|
||||
# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
|
||||
# CONFIG_FB is not set
|
||||
# CONFIG_FB_IBM_GXT4500 is not set
|
||||
# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
|
||||
|
||||
#
|
||||
# Sound
|
||||
@ -805,6 +834,7 @@ CONFIG_FIRMWARE_EDID=y
|
||||
# HID Devices
|
||||
#
|
||||
CONFIG_HID=y
|
||||
# CONFIG_HID_DEBUG is not set
|
||||
|
||||
#
|
||||
# USB support
|
||||
@ -868,6 +898,10 @@ CONFIG_USB_ARCH_HAS_EHCI=y
|
||||
# DMA Devices
|
||||
#
|
||||
|
||||
#
|
||||
# Auxiliary Display support
|
||||
#
|
||||
|
||||
#
|
||||
# Virtualization
|
||||
#
|
||||
@ -995,11 +1029,7 @@ CONFIG_PARTITION_ADVANCED=y
|
||||
# Distributed Lock Manager
|
||||
#
|
||||
# CONFIG_DLM is not set
|
||||
|
||||
#
|
||||
# QE Options
|
||||
#
|
||||
CONFIG_UCC_SLOW=y
|
||||
# CONFIG_UCC_SLOW is not set
|
||||
CONFIG_UCC_FAST=y
|
||||
CONFIG_UCC=y
|
||||
|
||||
@ -1012,7 +1042,8 @@ CONFIG_BITREVERSE=y
|
||||
CONFIG_CRC32=y
|
||||
# CONFIG_LIBCRC32C is not set
|
||||
CONFIG_PLIST=y
|
||||
CONFIG_IOMAP_COPY=y
|
||||
CONFIG_HAS_IOMEM=y
|
||||
CONFIG_HAS_IOPORT=y
|
||||
|
||||
#
|
||||
# Instrumentation Support
|
||||
@ -1032,7 +1063,6 @@ CONFIG_ENABLE_MUST_CHECK=y
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
# CONFIG_DEBUG_BUGVERBOSE is not set
|
||||
# CONFIG_BOOTX_TEXT is not set
|
||||
# CONFIG_SERIAL_TEXT_DEBUG is not set
|
||||
# CONFIG_PPC_EARLY_DEBUG is not set
|
||||
|
||||
#
|
||||
@ -1061,8 +1091,10 @@ CONFIG_CRYPTO_MD5=y
|
||||
# CONFIG_CRYPTO_GF128MUL is not set
|
||||
CONFIG_CRYPTO_ECB=m
|
||||
CONFIG_CRYPTO_CBC=y
|
||||
CONFIG_CRYPTO_PCBC=m
|
||||
# CONFIG_CRYPTO_LRW is not set
|
||||
CONFIG_CRYPTO_DES=y
|
||||
# CONFIG_CRYPTO_FCRYPT is not set
|
||||
# CONFIG_CRYPTO_BLOWFISH is not set
|
||||
# CONFIG_CRYPTO_TWOFISH is not set
|
||||
# CONFIG_CRYPTO_SERPENT is not set
|
||||
@ -1076,6 +1108,7 @@ CONFIG_CRYPTO_DES=y
|
||||
# CONFIG_CRYPTO_DEFLATE is not set
|
||||
# CONFIG_CRYPTO_MICHAEL_MIC is not set
|
||||
# CONFIG_CRYPTO_CRC32C is not set
|
||||
# CONFIG_CRYPTO_CAMELLIA is not set
|
||||
# CONFIG_CRYPTO_TEST is not set
|
||||
|
||||
#
|
||||
|
@ -1,7 +1,7 @@
|
||||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.21-rc3
|
||||
# Mon Mar 12 17:32:19 2007
|
||||
# Linux kernel version: 2.6.21-rc5
|
||||
# Mon Apr 9 16:12:43 2007
|
||||
#
|
||||
# CONFIG_PPC64 is not set
|
||||
CONFIG_PPC32=y
|
||||
@ -125,7 +125,6 @@ CONFIG_DEFAULT_AS=y
|
||||
# CONFIG_DEFAULT_NOOP is not set
|
||||
CONFIG_DEFAULT_IOSCHED="anticipatory"
|
||||
CONFIG_QUICC_ENGINE=y
|
||||
CONFIG_PPC_GEN550=y
|
||||
# CONFIG_WANT_EARLY_SERIAL is not set
|
||||
|
||||
#
|
||||
@ -490,7 +489,21 @@ CONFIG_NETDEVICES=y
|
||||
#
|
||||
# PHY device support
|
||||
#
|
||||
# CONFIG_PHYLIB is not set
|
||||
CONFIG_PHYLIB=y
|
||||
|
||||
#
|
||||
# MII PHY device drivers
|
||||
#
|
||||
# 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
|
||||
# CONFIG_VITESSE_PHY is not set
|
||||
# CONFIG_SMSC_PHY is not set
|
||||
# CONFIG_BROADCOM_PHY is not set
|
||||
CONFIG_ICPLUS_PHY=y
|
||||
# CONFIG_FIXED_PHY is not set
|
||||
|
||||
#
|
||||
# Ethernet (10 or 100Mbit)
|
||||
@ -1200,11 +1213,7 @@ CONFIG_NLS_ISO8859_1=y
|
||||
# Distributed Lock Manager
|
||||
#
|
||||
# CONFIG_DLM is not set
|
||||
|
||||
#
|
||||
# QE Options
|
||||
#
|
||||
CONFIG_UCC_SLOW=y
|
||||
# CONFIG_UCC_SLOW is not set
|
||||
CONFIG_UCC_FAST=y
|
||||
CONFIG_UCC=y
|
||||
|
||||
@ -1238,7 +1247,6 @@ CONFIG_ENABLE_MUST_CHECK=y
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
# CONFIG_DEBUG_BUGVERBOSE is not set
|
||||
# CONFIG_BOOTX_TEXT is not set
|
||||
# CONFIG_SERIAL_TEXT_DEBUG is not set
|
||||
# CONFIG_PPC_EARLY_DEBUG is not set
|
||||
|
||||
#
|
||||
|
@ -1,7 +1,7 @@
|
||||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.20
|
||||
# Sat Feb 17 10:09:26 2007
|
||||
# Linux kernel version: 2.6.21-rc5
|
||||
# Mon Apr 9 16:14:05 2007
|
||||
#
|
||||
# CONFIG_PPC64 is not set
|
||||
CONFIG_PPC32=y
|
||||
@ -72,6 +72,7 @@ CONFIG_SYSVIPC_SYSCTL=y
|
||||
# CONFIG_IKCONFIG is not set
|
||||
CONFIG_SYSFS_DEPRECATED=y
|
||||
# CONFIG_RELAY is not set
|
||||
CONFIG_BLK_DEV_INITRD=y
|
||||
CONFIG_INITRAMFS_SOURCE=""
|
||||
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
|
||||
CONFIG_SYSCTL=y
|
||||
@ -124,7 +125,6 @@ CONFIG_DEFAULT_AS=y
|
||||
# CONFIG_DEFAULT_NOOP is not set
|
||||
CONFIG_DEFAULT_IOSCHED="anticipatory"
|
||||
CONFIG_QUICC_ENGINE=y
|
||||
CONFIG_PPC_GEN550=y
|
||||
# CONFIG_WANT_EARLY_SERIAL is not set
|
||||
|
||||
#
|
||||
@ -132,6 +132,7 @@ CONFIG_PPC_GEN550=y
|
||||
#
|
||||
# CONFIG_MPC8313_RDB is not set
|
||||
# CONFIG_MPC832x_MDS is not set
|
||||
# CONFIG_MPC832x_RDB is not set
|
||||
# CONFIG_MPC834x_MDS is not set
|
||||
# CONFIG_MPC834x_ITX is not set
|
||||
CONFIG_MPC836x_MDS=y
|
||||
@ -328,6 +329,7 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
|
||||
#
|
||||
# Plug and Play support
|
||||
#
|
||||
# CONFIG_PNPACPI is not set
|
||||
|
||||
#
|
||||
# Block devices
|
||||
@ -346,7 +348,6 @@ CONFIG_BLK_DEV_RAM=y
|
||||
CONFIG_BLK_DEV_RAM_COUNT=16
|
||||
CONFIG_BLK_DEV_RAM_SIZE=32768
|
||||
CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
|
||||
CONFIG_BLK_DEV_INITRD=y
|
||||
# CONFIG_CDROM_PKTCDVD is not set
|
||||
# CONFIG_ATA_OVER_ETH is not set
|
||||
|
||||
@ -486,7 +487,21 @@ CONFIG_NETDEVICES=y
|
||||
#
|
||||
# PHY device support
|
||||
#
|
||||
# CONFIG_PHYLIB is not set
|
||||
CONFIG_PHYLIB=y
|
||||
|
||||
#
|
||||
# MII PHY device drivers
|
||||
#
|
||||
CONFIG_MARVELL_PHY=y
|
||||
# CONFIG_DAVICOM_PHY is not set
|
||||
# CONFIG_QSEMI_PHY is not set
|
||||
# CONFIG_LXT_PHY is not set
|
||||
# CONFIG_CICADA_PHY is not set
|
||||
# CONFIG_VITESSE_PHY is not set
|
||||
# CONFIG_SMSC_PHY is not set
|
||||
# CONFIG_BROADCOM_PHY is not set
|
||||
# CONFIG_ICPLUS_PHY is not set
|
||||
# CONFIG_FIXED_PHY is not set
|
||||
|
||||
#
|
||||
# Ethernet (10 or 100Mbit)
|
||||
@ -528,6 +543,7 @@ CONFIG_UCC_GETH=y
|
||||
# CONFIG_UGETH_FILTERING is not set
|
||||
# CONFIG_UGETH_TX_ON_DEMOND is not set
|
||||
# CONFIG_QLA3XXX is not set
|
||||
# CONFIG_ATL1 is not set
|
||||
|
||||
#
|
||||
# Ethernet (10000 Mbit)
|
||||
@ -745,6 +761,7 @@ CONFIG_HWMON=y
|
||||
# CONFIG_SENSORS_ADM1021 is not set
|
||||
# CONFIG_SENSORS_ADM1025 is not set
|
||||
# CONFIG_SENSORS_ADM1026 is not set
|
||||
# CONFIG_SENSORS_ADM1029 is not set
|
||||
# CONFIG_SENSORS_ADM1031 is not set
|
||||
# CONFIG_SENSORS_ADM9240 is not set
|
||||
# CONFIG_SENSORS_ASB100 is not set
|
||||
@ -785,6 +802,11 @@ CONFIG_HWMON=y
|
||||
# CONFIG_SENSORS_W83627EHF is not set
|
||||
# CONFIG_HWMON_DEBUG_CHIP is not set
|
||||
|
||||
#
|
||||
# Multifunction device drivers
|
||||
#
|
||||
# CONFIG_MFD_SM501 is not set
|
||||
|
||||
#
|
||||
# Multimedia devices
|
||||
#
|
||||
@ -798,10 +820,9 @@ CONFIG_HWMON=y
|
||||
#
|
||||
# Graphics support
|
||||
#
|
||||
CONFIG_FIRMWARE_EDID=y
|
||||
# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
|
||||
# CONFIG_FB is not set
|
||||
# CONFIG_FB_IBM_GXT4500 is not set
|
||||
# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
|
||||
|
||||
#
|
||||
# Sound
|
||||
@ -1007,11 +1028,7 @@ CONFIG_PARTITION_ADVANCED=y
|
||||
# Distributed Lock Manager
|
||||
#
|
||||
# CONFIG_DLM is not set
|
||||
|
||||
#
|
||||
# QE Options
|
||||
#
|
||||
CONFIG_UCC_SLOW=y
|
||||
# CONFIG_UCC_SLOW is not set
|
||||
CONFIG_UCC_FAST=y
|
||||
CONFIG_UCC=y
|
||||
|
||||
@ -1045,7 +1062,6 @@ CONFIG_ENABLE_MUST_CHECK=y
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
# CONFIG_DEBUG_BUGVERBOSE is not set
|
||||
# CONFIG_BOOTX_TEXT is not set
|
||||
# CONFIG_SERIAL_TEXT_DEBUG is not set
|
||||
# CONFIG_PPC_EARLY_DEBUG is not set
|
||||
|
||||
#
|
||||
|
@ -1,7 +1,7 @@
|
||||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.20-rc6
|
||||
# Thu Jan 25 13:35:34 2007
|
||||
# Linux kernel version: 2.6.21
|
||||
# Mon Apr 30 12:03:35 2007
|
||||
#
|
||||
CONFIG_PPC64=y
|
||||
CONFIG_64BIT=y
|
||||
@ -60,6 +60,7 @@ CONFIG_LOCALVERSION_AUTO=y
|
||||
CONFIG_SWAP=y
|
||||
CONFIG_SYSVIPC=y
|
||||
# CONFIG_IPC_NS is not set
|
||||
CONFIG_SYSVIPC_SYSCTL=y
|
||||
# CONFIG_POSIX_MQUEUE is not set
|
||||
# CONFIG_BSD_PROCESS_ACCT is not set
|
||||
# CONFIG_TASKSTATS is not set
|
||||
@ -69,6 +70,7 @@ CONFIG_SYSVIPC=y
|
||||
# CONFIG_CPUSETS is not set
|
||||
CONFIG_SYSFS_DEPRECATED=y
|
||||
# CONFIG_RELAY is not set
|
||||
CONFIG_BLK_DEV_INITRD=y
|
||||
CONFIG_INITRAMFS_SOURCE=""
|
||||
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
|
||||
CONFIG_SYSCTL=y
|
||||
@ -131,13 +133,36 @@ CONFIG_PPC_MULTIPLATFORM=y
|
||||
# CONFIG_PPC_PSERIES is not set
|
||||
# CONFIG_PPC_ISERIES is not set
|
||||
# CONFIG_PPC_MPC52xx is not set
|
||||
# CONFIG_PPC_MPC5200 is not set
|
||||
# CONFIG_PPC_PMAC is not set
|
||||
# CONFIG_PPC_MAPLE is not set
|
||||
# CONFIG_PPC_PASEMI is not set
|
||||
# CONFIG_PPC_CELLEB is not set
|
||||
CONFIG_PPC_PS3=y
|
||||
|
||||
#
|
||||
# PS3 Platform Options
|
||||
#
|
||||
# CONFIG_PS3_ADVANCED is not set
|
||||
CONFIG_PS3_HTAB_SIZE=20
|
||||
# CONFIG_PS3_DYNAMIC_DMA is not set
|
||||
CONFIG_PS3_USE_LPAR_ADDR=y
|
||||
CONFIG_PS3_VUART=y
|
||||
CONFIG_PS3_PS3AV=y
|
||||
CONFIG_PS3_SYS_MANAGER=y
|
||||
CONFIG_PPC_CELL=y
|
||||
# CONFIG_PPC_CELL_NATIVE is not set
|
||||
# CONFIG_PPC_IBM_CELL_BLADE is not set
|
||||
CONFIG_PPC_PS3=y
|
||||
|
||||
#
|
||||
# Cell Broadband Engine options
|
||||
#
|
||||
CONFIG_SPU_FS=y
|
||||
CONFIG_SPU_BASE=y
|
||||
# CONFIG_PQ2ADS is not set
|
||||
# CONFIG_MPIC is not set
|
||||
# CONFIG_MPIC_WEIRD is not set
|
||||
# CONFIG_PPC_I8259 is not set
|
||||
# CONFIG_U3_DART is not set
|
||||
# CONFIG_PPC_RTAS is not set
|
||||
# CONFIG_MMIO_NVRAM is not set
|
||||
@ -146,24 +171,7 @@ CONFIG_PPC_PS3=y
|
||||
# CONFIG_PPC_INDIRECT_IO is not set
|
||||
# CONFIG_GENERIC_IOMAP is not set
|
||||
# CONFIG_CPU_FREQ is not set
|
||||
# CONFIG_WANT_EARLY_SERIAL is not set
|
||||
# CONFIG_MPIC is not set
|
||||
|
||||
#
|
||||
# Cell Broadband Engine options
|
||||
#
|
||||
CONFIG_SPU_FS=y
|
||||
CONFIG_SPU_BASE=y
|
||||
# CONFIG_CBE_RAS is not set
|
||||
|
||||
#
|
||||
# PS3 Platform Options
|
||||
#
|
||||
CONFIG_PS3_HTAB_SIZE=20
|
||||
# CONFIG_PS3_DYNAMIC_DMA is not set
|
||||
CONFIG_PS3_USE_LPAR_ADDR=y
|
||||
CONFIG_PS3_VUART=y
|
||||
CONFIG_PS3_PS3AV=y
|
||||
# CONFIG_CPM2 is not set
|
||||
|
||||
#
|
||||
# Kernel options
|
||||
@ -179,10 +187,10 @@ CONFIG_PREEMPT_NONE=y
|
||||
# CONFIG_PREEMPT_BKL is not set
|
||||
CONFIG_BINFMT_ELF=y
|
||||
CONFIG_BINFMT_MISC=y
|
||||
CONFIG_FORCE_MAX_ZONEORDER=9
|
||||
CONFIG_FORCE_MAX_ZONEORDER=13
|
||||
# CONFIG_IOMMU_VMERGE is not set
|
||||
CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
|
||||
# CONFIG_KEXEC is not set
|
||||
CONFIG_KEXEC=y
|
||||
# CONFIG_CRASH_DUMP is not set
|
||||
# CONFIG_IRQ_ALL_CPUS is not set
|
||||
# CONFIG_NUMA is not set
|
||||
@ -203,22 +211,22 @@ CONFIG_MEMORY_HOTPLUG=y
|
||||
CONFIG_MEMORY_HOTPLUG_SPARSE=y
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
CONFIG_RESOURCES_64BIT=y
|
||||
CONFIG_ZONE_DMA_FLAG=1
|
||||
CONFIG_ARCH_MEMORY_PROBE=y
|
||||
CONFIG_PPC_64K_PAGES=y
|
||||
# CONFIG_PPC_64K_PAGES is not set
|
||||
# CONFIG_SCHED_SMT is not set
|
||||
CONFIG_PROC_DEVICETREE=y
|
||||
CONFIG_CMDLINE_BOOL=y
|
||||
CONFIG_CMDLINE="root=/dev/sda1 ip=dhcp"
|
||||
# CONFIG_CMDLINE_BOOL is not set
|
||||
# CONFIG_PM is not set
|
||||
# CONFIG_SECCOMP is not set
|
||||
# CONFIG_WANT_DEVICE_TREE is not set
|
||||
CONFIG_ISA_DMA_API=y
|
||||
|
||||
#
|
||||
# Bus options
|
||||
#
|
||||
CONFIG_ZONE_DMA=y
|
||||
CONFIG_GENERIC_ISA_DMA=y
|
||||
# CONFIG_MPIC_WEIRD is not set
|
||||
# CONFIG_PPC_I8259 is not set
|
||||
# CONFIG_PCI is not set
|
||||
# CONFIG_PCI_DOMAINS is not set
|
||||
|
||||
@ -240,10 +248,13 @@ CONFIG_NET=y
|
||||
#
|
||||
# Networking options
|
||||
#
|
||||
# CONFIG_NETDEBUG is not set
|
||||
CONFIG_PACKET=y
|
||||
CONFIG_PACKET_MMAP=y
|
||||
CONFIG_UNIX=y
|
||||
CONFIG_XFRM=y
|
||||
# CONFIG_XFRM_USER is not set
|
||||
# CONFIG_XFRM_SUB_POLICY is not set
|
||||
# CONFIG_XFRM_MIGRATE is not set
|
||||
# CONFIG_NET_KEY is not set
|
||||
CONFIG_INET=y
|
||||
# CONFIG_IP_MULTICAST is not set
|
||||
@ -261,7 +272,7 @@ CONFIG_IP_PNP_DHCP=y
|
||||
# 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_TUNNEL=y
|
||||
# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
|
||||
# CONFIG_INET_XFRM_MODE_TUNNEL is not set
|
||||
# CONFIG_INET_XFRM_MODE_BEET is not set
|
||||
@ -270,9 +281,23 @@ CONFIG_IP_PNP_DHCP=y
|
||||
CONFIG_TCP_CONG_CUBIC=y
|
||||
CONFIG_DEFAULT_TCP_CONG="cubic"
|
||||
# CONFIG_TCP_MD5SIG is not set
|
||||
# CONFIG_IPV6 is not set
|
||||
CONFIG_IPV6=y
|
||||
# CONFIG_IPV6_PRIVACY is not set
|
||||
# CONFIG_IPV6_ROUTER_PREF is not set
|
||||
# CONFIG_IPV6_OPTIMISTIC_DAD is not set
|
||||
# CONFIG_INET6_AH is not set
|
||||
# CONFIG_INET6_ESP is not set
|
||||
# CONFIG_INET6_IPCOMP is not set
|
||||
# CONFIG_IPV6_MIP6 is not set
|
||||
# CONFIG_INET6_XFRM_TUNNEL is not set
|
||||
# CONFIG_INET6_TUNNEL is not set
|
||||
CONFIG_INET6_XFRM_MODE_TRANSPORT=y
|
||||
CONFIG_INET6_XFRM_MODE_TUNNEL=y
|
||||
CONFIG_INET6_XFRM_MODE_BEET=y
|
||||
# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
|
||||
CONFIG_IPV6_SIT=y
|
||||
# CONFIG_IPV6_TUNNEL is not set
|
||||
# CONFIG_IPV6_MULTIPLE_TABLES is not set
|
||||
# CONFIG_NETWORK_SECMARK is not set
|
||||
# CONFIG_NETFILTER is not set
|
||||
|
||||
@ -313,7 +338,31 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
|
||||
# CONFIG_NET_PKTGEN is not set
|
||||
# CONFIG_HAMRADIO is not set
|
||||
# CONFIG_IRDA is not set
|
||||
# CONFIG_BT is not set
|
||||
CONFIG_BT=m
|
||||
CONFIG_BT_L2CAP=m
|
||||
CONFIG_BT_SCO=m
|
||||
CONFIG_BT_RFCOMM=m
|
||||
# CONFIG_BT_RFCOMM_TTY is not set
|
||||
# CONFIG_BT_BNEP is not set
|
||||
CONFIG_BT_HIDP=m
|
||||
|
||||
#
|
||||
# Bluetooth device drivers
|
||||
#
|
||||
CONFIG_BT_HCIUSB=m
|
||||
CONFIG_BT_HCIUSB_SCO=y
|
||||
# CONFIG_BT_HCIUART is not set
|
||||
# CONFIG_BT_HCIBCM203X is not set
|
||||
# CONFIG_BT_HCIBPA10X is not set
|
||||
# CONFIG_BT_HCIBFUSB is not set
|
||||
# CONFIG_BT_HCIVHCI is not set
|
||||
# CONFIG_AF_RXRPC is not set
|
||||
|
||||
#
|
||||
# Wireless
|
||||
#
|
||||
# CONFIG_CFG80211 is not set
|
||||
CONFIG_WIRELESS_EXT=y
|
||||
# CONFIG_IEEE80211 is not set
|
||||
|
||||
#
|
||||
@ -327,16 +376,13 @@ CONFIG_STANDALONE=y
|
||||
CONFIG_PREVENT_FIRMWARE_BUILD=y
|
||||
# CONFIG_FW_LOADER is not set
|
||||
# CONFIG_DEBUG_DRIVER is not set
|
||||
# CONFIG_DEBUG_DEVRES is not set
|
||||
# CONFIG_SYS_HYPERVISOR is not set
|
||||
|
||||
#
|
||||
# Connector - unified userspace <-> kernelspace linker
|
||||
#
|
||||
# CONFIG_CONNECTOR is not set
|
||||
|
||||
#
|
||||
# Memory Technology Devices (MTD)
|
||||
#
|
||||
# CONFIG_MTD is not set
|
||||
|
||||
#
|
||||
@ -347,24 +393,27 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
|
||||
#
|
||||
# Plug and Play support
|
||||
#
|
||||
# CONFIG_PNPACPI is not set
|
||||
|
||||
#
|
||||
# Block devices
|
||||
#
|
||||
# CONFIG_BLK_DEV_FD is not set
|
||||
# CONFIG_BLK_DEV_COW_COMMON is not set
|
||||
# CONFIG_BLK_DEV_LOOP is not set
|
||||
CONFIG_BLK_DEV_LOOP=y
|
||||
# CONFIG_BLK_DEV_CRYPTOLOOP is not set
|
||||
# CONFIG_BLK_DEV_NBD is not set
|
||||
# CONFIG_BLK_DEV_UB is not set
|
||||
# CONFIG_BLK_DEV_RAM is not set
|
||||
# CONFIG_BLK_DEV_INITRD is not set
|
||||
CONFIG_BLK_DEV_RAM=y
|
||||
CONFIG_BLK_DEV_RAM_COUNT=16
|
||||
CONFIG_BLK_DEV_RAM_SIZE=65535
|
||||
CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
|
||||
# CONFIG_CDROM_PKTCDVD is not set
|
||||
# CONFIG_ATA_OVER_ETH is not set
|
||||
|
||||
#
|
||||
# Misc devices
|
||||
#
|
||||
# CONFIG_TIFM_CORE is not set
|
||||
|
||||
#
|
||||
# ATA/ATAPI/MFM/RLL support
|
||||
@ -388,7 +437,7 @@ CONFIG_BLK_DEV_SD=y
|
||||
# CONFIG_CHR_DEV_OSST is not set
|
||||
CONFIG_BLK_DEV_SR=y
|
||||
# CONFIG_BLK_DEV_SR_VENDOR is not set
|
||||
# CONFIG_CHR_DEV_SG is not set
|
||||
CONFIG_CHR_DEV_SG=m
|
||||
# CONFIG_CHR_DEV_SCH is not set
|
||||
|
||||
#
|
||||
@ -413,6 +462,7 @@ CONFIG_BLK_DEV_SR=y
|
||||
#
|
||||
# CONFIG_ISCSI_TCP is not set
|
||||
# CONFIG_SCSI_DEBUG is not set
|
||||
# CONFIG_SCSI_ESP_CORE is not set
|
||||
|
||||
#
|
||||
# Serial ATA (prod) and Parallel ATA (experimental) drivers
|
||||
@ -460,7 +510,7 @@ CONFIG_NETDEVICES=y
|
||||
# Ethernet (10 or 100Mbit)
|
||||
#
|
||||
# CONFIG_NET_ETHERNET is not set
|
||||
CONFIG_MII=y
|
||||
CONFIG_MII=m
|
||||
|
||||
#
|
||||
# Ethernet (1000 Mbit)
|
||||
@ -475,9 +525,10 @@ CONFIG_MII=y
|
||||
#
|
||||
|
||||
#
|
||||
# Wireless LAN (non-hamradio)
|
||||
# Wireless LAN
|
||||
#
|
||||
# CONFIG_NET_RADIO is not set
|
||||
# CONFIG_WLAN_PRE80211 is not set
|
||||
# CONFIG_WLAN_80211 is not set
|
||||
|
||||
#
|
||||
# Wan interfaces
|
||||
@ -551,7 +602,8 @@ CONFIG_HW_CONSOLE=y
|
||||
# Non-8250 serial port support
|
||||
#
|
||||
CONFIG_UNIX98_PTYS=y
|
||||
# CONFIG_LEGACY_PTYS is not set
|
||||
CONFIG_LEGACY_PTYS=y
|
||||
CONFIG_LEGACY_PTY_COUNT=16
|
||||
|
||||
#
|
||||
# IPMI
|
||||
@ -597,6 +649,11 @@ CONFIG_GEN_RTC=y
|
||||
# CONFIG_HWMON is not set
|
||||
# CONFIG_HWMON_VID is not set
|
||||
|
||||
#
|
||||
# Multifunction device drivers
|
||||
#
|
||||
# CONFIG_MFD_SM501 is not set
|
||||
|
||||
#
|
||||
# Multimedia devices
|
||||
#
|
||||
@ -611,15 +668,22 @@ CONFIG_GEN_RTC=y
|
||||
#
|
||||
# Graphics support
|
||||
#
|
||||
# CONFIG_FIRMWARE_EDID is not set
|
||||
# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
|
||||
CONFIG_FB=y
|
||||
# CONFIG_FIRMWARE_EDID is not set
|
||||
# CONFIG_FB_DDC is not set
|
||||
CONFIG_FB_CFB_FILLRECT=y
|
||||
CONFIG_FB_CFB_COPYAREA=y
|
||||
CONFIG_FB_CFB_IMAGEBLIT=y
|
||||
# CONFIG_FB_SVGALIB is not set
|
||||
# CONFIG_FB_MACMODES is not set
|
||||
# CONFIG_FB_BACKLIGHT is not set
|
||||
# CONFIG_FB_MODE_HELPERS is not set
|
||||
# CONFIG_FB_TILEBLITTING is not set
|
||||
|
||||
#
|
||||
# Frame buffer hardware drivers
|
||||
#
|
||||
# CONFIG_FB_OF is not set
|
||||
# CONFIG_FB_VGA16 is not set
|
||||
# CONFIG_FB_S1D13XXX is not set
|
||||
@ -634,7 +698,7 @@ CONFIG_FB_PS3_DEFAULT_SIZE_M=18
|
||||
# CONFIG_VGA_CONSOLE is not set
|
||||
CONFIG_DUMMY_CONSOLE=y
|
||||
CONFIG_FRAMEBUFFER_CONSOLE=y
|
||||
# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
|
||||
CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
|
||||
# CONFIG_FONTS is not set
|
||||
CONFIG_FONT_8x8=y
|
||||
CONFIG_FONT_8x16=y
|
||||
@ -646,17 +710,62 @@ CONFIG_LOGO=y
|
||||
# CONFIG_LOGO_LINUX_MONO is not set
|
||||
# CONFIG_LOGO_LINUX_VGA16 is not set
|
||||
CONFIG_LOGO_LINUX_CLUT224=y
|
||||
# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
|
||||
|
||||
#
|
||||
# Sound
|
||||
#
|
||||
# CONFIG_SOUND is not set
|
||||
CONFIG_SOUND=y
|
||||
|
||||
#
|
||||
# Advanced Linux Sound Architecture
|
||||
#
|
||||
CONFIG_SND=y
|
||||
# CONFIG_SND_SEQUENCER is not set
|
||||
# CONFIG_SND_MIXER_OSS is not set
|
||||
# CONFIG_SND_PCM_OSS is not set
|
||||
# CONFIG_SND_DYNAMIC_MINORS is not set
|
||||
CONFIG_SND_SUPPORT_OLD_API=y
|
||||
CONFIG_SND_VERBOSE_PROCFS=y
|
||||
# CONFIG_SND_VERBOSE_PRINTK is not set
|
||||
# CONFIG_SND_DEBUG is not set
|
||||
|
||||
#
|
||||
# Generic devices
|
||||
#
|
||||
# CONFIG_SND_DUMMY is not set
|
||||
# CONFIG_SND_MTPAV is not set
|
||||
# CONFIG_SND_SERIAL_U16550 is not set
|
||||
# CONFIG_SND_MPU401 is not set
|
||||
|
||||
#
|
||||
# ALSA PowerMac devices
|
||||
#
|
||||
|
||||
#
|
||||
# ALSA PowerMac requires I2C
|
||||
#
|
||||
|
||||
#
|
||||
# USB devices
|
||||
#
|
||||
# CONFIG_SND_USB_AUDIO is not set
|
||||
# CONFIG_SND_USB_USX2Y is not set
|
||||
|
||||
#
|
||||
# SoC audio support
|
||||
#
|
||||
# CONFIG_SND_SOC is not set
|
||||
|
||||
#
|
||||
# Open Sound System
|
||||
#
|
||||
# CONFIG_SOUND_PRIME is not set
|
||||
|
||||
#
|
||||
# HID Devices
|
||||
#
|
||||
CONFIG_HID=y
|
||||
# CONFIG_HID_DEBUG is not set
|
||||
|
||||
#
|
||||
# USB support
|
||||
@ -665,13 +774,13 @@ CONFIG_USB_ARCH_HAS_HCD=y
|
||||
CONFIG_USB_ARCH_HAS_OHCI=y
|
||||
CONFIG_USB_ARCH_HAS_EHCI=y
|
||||
CONFIG_USB=y
|
||||
CONFIG_USB_DEBUG=y
|
||||
# CONFIG_USB_DEBUG is not set
|
||||
|
||||
#
|
||||
# Miscellaneous USB options
|
||||
#
|
||||
# CONFIG_USB_DEVICEFS is not set
|
||||
# CONFIG_USB_BANDWIDTH is not set
|
||||
CONFIG_USB_DEVICEFS=y
|
||||
# CONFIG_USB_DEVICE_CLASS is not set
|
||||
# CONFIG_USB_DYNAMIC_MINORS is not set
|
||||
# CONFIG_USB_OTG is not set
|
||||
|
||||
@ -704,7 +813,7 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y
|
||||
#
|
||||
# may also be needed; see USB_STORAGE Help for more information
|
||||
#
|
||||
CONFIG_USB_STORAGE=y
|
||||
CONFIG_USB_STORAGE=m
|
||||
# CONFIG_USB_STORAGE_DEBUG is not set
|
||||
# CONFIG_USB_STORAGE_DATAFAB is not set
|
||||
# CONFIG_USB_STORAGE_FREECOM is not set
|
||||
@ -720,10 +829,16 @@ CONFIG_USB_STORAGE=y
|
||||
#
|
||||
# USB Input Devices
|
||||
#
|
||||
CONFIG_USB_HID=y
|
||||
CONFIG_USB_HID=m
|
||||
# CONFIG_USB_HIDINPUT_POWERBOOK is not set
|
||||
# CONFIG_HID_FF is not set
|
||||
# CONFIG_USB_HIDDEV is not set
|
||||
|
||||
#
|
||||
# USB HID Boot Protocol drivers
|
||||
#
|
||||
# CONFIG_USB_KBD is not set
|
||||
# CONFIG_USB_MOUSE is not set
|
||||
# CONFIG_USB_AIPTEK is not set
|
||||
# CONFIG_USB_WACOM is not set
|
||||
# CONFIG_USB_ACECAD is not set
|
||||
@ -736,6 +851,7 @@ CONFIG_USB_HID=y
|
||||
# CONFIG_USB_ATI_REMOTE2 is not set
|
||||
# CONFIG_USB_KEYSPAN_REMOTE is not set
|
||||
# CONFIG_USB_APPLETOUCH is not set
|
||||
# CONFIG_USB_GTCO is not set
|
||||
|
||||
#
|
||||
# USB Imaging devices
|
||||
@ -748,15 +864,16 @@ CONFIG_USB_HID=y
|
||||
#
|
||||
# CONFIG_USB_CATC is not set
|
||||
# CONFIG_USB_KAWETH is not set
|
||||
# CONFIG_USB_PEGASUS is not set
|
||||
CONFIG_USB_PEGASUS=m
|
||||
# CONFIG_USB_RTL8150 is not set
|
||||
CONFIG_USB_USBNET_MII=y
|
||||
CONFIG_USB_USBNET=y
|
||||
CONFIG_USB_NET_CDCETHER=y
|
||||
CONFIG_USB_USBNET_MII=m
|
||||
CONFIG_USB_USBNET=m
|
||||
# CONFIG_USB_NET_CDCETHER is not set
|
||||
# CONFIG_USB_NET_DM9601 is not set
|
||||
# CONFIG_USB_NET_GL620A is not set
|
||||
# CONFIG_USB_NET_NET1080 is not set
|
||||
# CONFIG_USB_NET_PLUSB is not set
|
||||
CONFIG_USB_NET_MCS7830=y
|
||||
CONFIG_USB_NET_MCS7830=m
|
||||
# CONFIG_USB_NET_RNDIS_HOST is not set
|
||||
# CONFIG_USB_NET_CDC_SUBSET is not set
|
||||
# CONFIG_USB_NET_ZAURUS is not set
|
||||
@ -781,6 +898,7 @@ CONFIG_USB_MON=y
|
||||
# CONFIG_USB_RIO500 is not set
|
||||
# CONFIG_USB_LEGOTOWER is not set
|
||||
# CONFIG_USB_LCD is not set
|
||||
# CONFIG_USB_BERRY_CHARGE is not set
|
||||
# CONFIG_USB_LED is not set
|
||||
# CONFIG_USB_CYPRESS_CY7C63 is not set
|
||||
# CONFIG_USB_CYTHERM is not set
|
||||
@ -791,6 +909,8 @@ CONFIG_USB_MON=y
|
||||
# CONFIG_USB_SISUSBVGA is not set
|
||||
# CONFIG_USB_LD is not set
|
||||
# CONFIG_USB_TRANCEVIBRATOR is not set
|
||||
# CONFIG_USB_IOWARRIOR is not set
|
||||
# CONFIG_USB_TEST is not set
|
||||
|
||||
#
|
||||
# USB DSL modem support
|
||||
@ -845,6 +965,10 @@ CONFIG_USB_MON=y
|
||||
# DMA Devices
|
||||
#
|
||||
|
||||
#
|
||||
# Auxiliary Display support
|
||||
#
|
||||
|
||||
#
|
||||
# Virtualization
|
||||
#
|
||||
@ -852,7 +976,9 @@ CONFIG_USB_MON=y
|
||||
#
|
||||
# File systems
|
||||
#
|
||||
# CONFIG_EXT2_FS is not set
|
||||
CONFIG_EXT2_FS=m
|
||||
# CONFIG_EXT2_FS_XATTR is not set
|
||||
# CONFIG_EXT2_FS_XIP is not set
|
||||
CONFIG_EXT3_FS=y
|
||||
CONFIG_EXT3_FS_XATTR=y
|
||||
# CONFIG_EXT3_FS_POSIX_ACL is not set
|
||||
@ -871,27 +997,30 @@ CONFIG_FS_MBCACHE=y
|
||||
# CONFIG_ROMFS_FS is not set
|
||||
CONFIG_INOTIFY=y
|
||||
CONFIG_INOTIFY_USER=y
|
||||
# CONFIG_QUOTA is not set
|
||||
CONFIG_QUOTA=y
|
||||
# CONFIG_QFMT_V1 is not set
|
||||
CONFIG_QFMT_V2=y
|
||||
CONFIG_QUOTACTL=y
|
||||
CONFIG_DNOTIFY=y
|
||||
# CONFIG_AUTOFS_FS is not set
|
||||
# CONFIG_AUTOFS4_FS is not set
|
||||
CONFIG_AUTOFS4_FS=y
|
||||
# CONFIG_FUSE_FS is not set
|
||||
|
||||
#
|
||||
# CD-ROM/DVD Filesystems
|
||||
#
|
||||
CONFIG_ISO9660_FS=y
|
||||
CONFIG_ISO9660_FS=m
|
||||
CONFIG_JOLIET=y
|
||||
# CONFIG_ZISOFS is not set
|
||||
CONFIG_UDF_FS=y
|
||||
CONFIG_UDF_FS=m
|
||||
CONFIG_UDF_NLS=y
|
||||
|
||||
#
|
||||
# DOS/FAT/NT Filesystems
|
||||
#
|
||||
CONFIG_FAT_FS=y
|
||||
CONFIG_FAT_FS=m
|
||||
# CONFIG_MSDOS_FS is not set
|
||||
CONFIG_VFAT_FS=y
|
||||
CONFIG_VFAT_FS=m
|
||||
CONFIG_FAT_DEFAULT_CODEPAGE=437
|
||||
CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
|
||||
# CONFIG_NTFS_FS is not set
|
||||
@ -933,7 +1062,7 @@ CONFIG_RAMFS=y
|
||||
CONFIG_NFS_FS=y
|
||||
CONFIG_NFS_V3=y
|
||||
# CONFIG_NFS_V3_ACL is not set
|
||||
# CONFIG_NFS_V4 is not set
|
||||
CONFIG_NFS_V4=y
|
||||
# CONFIG_NFS_DIRECTIO is not set
|
||||
# CONFIG_NFSD is not set
|
||||
CONFIG_ROOT_NFS=y
|
||||
@ -941,10 +1070,16 @@ CONFIG_LOCKD=y
|
||||
CONFIG_LOCKD_V4=y
|
||||
CONFIG_NFS_COMMON=y
|
||||
CONFIG_SUNRPC=y
|
||||
# CONFIG_RPCSEC_GSS_KRB5 is not set
|
||||
CONFIG_SUNRPC_GSS=y
|
||||
CONFIG_RPCSEC_GSS_KRB5=y
|
||||
# CONFIG_RPCSEC_GSS_SPKM3 is not set
|
||||
# CONFIG_SMB_FS is not set
|
||||
# CONFIG_CIFS is not set
|
||||
CONFIG_CIFS=m
|
||||
# CONFIG_CIFS_STATS is not set
|
||||
# CONFIG_CIFS_WEAK_PW_HASH is not set
|
||||
# CONFIG_CIFS_XATTR is not set
|
||||
# CONFIG_CIFS_DEBUG2 is not set
|
||||
# CONFIG_CIFS_EXPERIMENTAL is not set
|
||||
# CONFIG_NCP_FS is not set
|
||||
# CONFIG_CODA_FS is not set
|
||||
# CONFIG_AFS_FS is not set
|
||||
@ -1004,6 +1139,8 @@ CONFIG_NLS_ISO8859_1=y
|
||||
# Distributed Lock Manager
|
||||
#
|
||||
# CONFIG_DLM is not set
|
||||
# CONFIG_UCC_SLOW is not set
|
||||
# CONFIG_UCC_FAST is not set
|
||||
|
||||
#
|
||||
# Library routines
|
||||
@ -1014,7 +1151,8 @@ CONFIG_BITREVERSE=y
|
||||
CONFIG_CRC32=y
|
||||
# CONFIG_LIBCRC32C is not set
|
||||
CONFIG_PLIST=y
|
||||
CONFIG_IOMAP_COPY=y
|
||||
CONFIG_HAS_IOMEM=y
|
||||
CONFIG_HAS_IOPORT=y
|
||||
|
||||
#
|
||||
# Instrumentation Support
|
||||
@ -1032,16 +1170,16 @@ CONFIG_ENABLE_MUST_CHECK=y
|
||||
# CONFIG_DEBUG_FS is not set
|
||||
# CONFIG_HEADERS_CHECK is not set
|
||||
CONFIG_DEBUG_KERNEL=y
|
||||
# CONFIG_DEBUG_SHIRQ is not set
|
||||
CONFIG_LOG_BUF_SHIFT=17
|
||||
CONFIG_DETECT_SOFTLOCKUP=y
|
||||
# CONFIG_SCHEDSTATS is not set
|
||||
CONFIG_DEBUG_SLAB=y
|
||||
# CONFIG_DEBUG_SLAB_LEAK is not set
|
||||
# CONFIG_TIMER_STATS is not set
|
||||
# CONFIG_DEBUG_SLAB is not set
|
||||
# CONFIG_DEBUG_RT_MUTEXES is not set
|
||||
# CONFIG_RT_MUTEX_TESTER is not set
|
||||
CONFIG_DEBUG_SPINLOCK=y
|
||||
CONFIG_DEBUG_MUTEXES=y
|
||||
CONFIG_DEBUG_RWSEMS=y
|
||||
CONFIG_DEBUG_SPINLOCK_SLEEP=y
|
||||
# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
|
||||
# CONFIG_DEBUG_KOBJECT is not set
|
||||
@ -1051,8 +1189,10 @@ CONFIG_DEBUG_INFO=y
|
||||
CONFIG_DEBUG_LIST=y
|
||||
CONFIG_FORCED_INLINING=y
|
||||
# CONFIG_RCU_TORTURE_TEST is not set
|
||||
# CONFIG_FAULT_INJECTION is not set
|
||||
CONFIG_DEBUG_STACKOVERFLOW=y
|
||||
# CONFIG_DEBUG_STACK_USAGE is not set
|
||||
# CONFIG_DEBUG_PAGEALLOC is not set
|
||||
# CONFIG_DEBUGGER is not set
|
||||
CONFIG_IRQSTACKS=y
|
||||
# CONFIG_BOOTX_TEXT is not set
|
||||
@ -1063,6 +1203,8 @@ CONFIG_PPC_EARLY_DEBUG=y
|
||||
# CONFIG_PPC_EARLY_DEBUG_RTAS_CONSOLE is not set
|
||||
# CONFIG_PPC_EARLY_DEBUG_MAPLE is not set
|
||||
# CONFIG_PPC_EARLY_DEBUG_ISERIES is not set
|
||||
# CONFIG_PPC_EARLY_DEBUG_PAS_REALMODE is not set
|
||||
# CONFIG_PPC_EARLY_DEBUG_BEAT is not set
|
||||
|
||||
#
|
||||
# Security options
|
||||
@ -1073,4 +1215,43 @@ CONFIG_PPC_EARLY_DEBUG=y
|
||||
#
|
||||
# Cryptographic options
|
||||
#
|
||||
# CONFIG_CRYPTO is not set
|
||||
CONFIG_CRYPTO=y
|
||||
CONFIG_CRYPTO_ALGAPI=y
|
||||
CONFIG_CRYPTO_BLKCIPHER=y
|
||||
CONFIG_CRYPTO_MANAGER=y
|
||||
# CONFIG_CRYPTO_HMAC is not set
|
||||
# CONFIG_CRYPTO_XCBC is not set
|
||||
# CONFIG_CRYPTO_NULL is not set
|
||||
# CONFIG_CRYPTO_MD4 is not set
|
||||
CONFIG_CRYPTO_MD5=y
|
||||
# CONFIG_CRYPTO_SHA1 is not set
|
||||
# CONFIG_CRYPTO_SHA256 is not set
|
||||
# CONFIG_CRYPTO_SHA512 is not set
|
||||
# CONFIG_CRYPTO_WP512 is not set
|
||||
# CONFIG_CRYPTO_TGR192 is not set
|
||||
# CONFIG_CRYPTO_GF128MUL is not set
|
||||
CONFIG_CRYPTO_ECB=m
|
||||
CONFIG_CRYPTO_CBC=y
|
||||
CONFIG_CRYPTO_PCBC=m
|
||||
# CONFIG_CRYPTO_LRW is not set
|
||||
CONFIG_CRYPTO_DES=y
|
||||
# CONFIG_CRYPTO_FCRYPT is not set
|
||||
# CONFIG_CRYPTO_BLOWFISH is not set
|
||||
# CONFIG_CRYPTO_TWOFISH is not set
|
||||
# CONFIG_CRYPTO_SERPENT is not set
|
||||
# CONFIG_CRYPTO_AES is not set
|
||||
# CONFIG_CRYPTO_CAST5 is not set
|
||||
# CONFIG_CRYPTO_CAST6 is not set
|
||||
# CONFIG_CRYPTO_TEA is not set
|
||||
# CONFIG_CRYPTO_ARC4 is not set
|
||||
# CONFIG_CRYPTO_KHAZAD is not set
|
||||
# CONFIG_CRYPTO_ANUBIS is not set
|
||||
# CONFIG_CRYPTO_DEFLATE is not set
|
||||
# CONFIG_CRYPTO_MICHAEL_MIC is not set
|
||||
# CONFIG_CRYPTO_CRC32C is not set
|
||||
# CONFIG_CRYPTO_CAMELLIA is not set
|
||||
# CONFIG_CRYPTO_TEST is not set
|
||||
|
||||
#
|
||||
# Hardware crypto devices
|
||||
#
|
||||
|
@ -36,8 +36,9 @@ obj-$(CONFIG_GENERIC_TBSYNC) += smp-tbsync.o
|
||||
obj-$(CONFIG_CRASH_DUMP) += crash_dump.o
|
||||
obj-$(CONFIG_6xx) += idle_6xx.o l2cr_6xx.o cpu_setup_6xx.o
|
||||
obj-$(CONFIG_TAU) += tau_6xx.o
|
||||
obj-$(CONFIG_SOFTWARE_SUSPEND) += swsusp.o suspend.o
|
||||
obj32-$(CONFIG_SOFTWARE_SUSPEND) += swsusp_32.o
|
||||
obj-$(CONFIG_SOFTWARE_SUSPEND) += suspend.o
|
||||
obj64-$(CONFIG_SOFTWARE_SUSPEND) += swsusp_64.o swsusp_asm64.o
|
||||
obj32-$(CONFIG_MODULES) += module_32.o
|
||||
|
||||
ifeq ($(CONFIG_PPC_MERGE),y)
|
||||
@ -67,6 +68,7 @@ obj-$(CONFIG_MODULES) += $(module-y)
|
||||
pci64-$(CONFIG_PPC64) += pci_64.o pci_dn.o
|
||||
pci32-$(CONFIG_PPC32) := pci_32.o
|
||||
obj-$(CONFIG_PCI) += $(pci64-y) $(pci32-y)
|
||||
obj-$(CONFIG_PCI_MSI) += msi.o
|
||||
kexec-$(CONFIG_PPC64) := machine_kexec_64.o
|
||||
kexec-$(CONFIG_PPC32) := machine_kexec_32.o
|
||||
obj-$(CONFIG_KEXEC) += machine_kexec.o crash.o $(kexec-y)
|
||||
|
@ -21,12 +21,12 @@
|
||||
#include <linux/types.h>
|
||||
#include <linux/mman.h>
|
||||
#include <linux/mm.h>
|
||||
#include <linux/suspend.h>
|
||||
#ifdef CONFIG_PPC64
|
||||
#include <linux/time.h>
|
||||
#include <linux/hardirq.h>
|
||||
#else
|
||||
#include <linux/ptrace.h>
|
||||
#include <linux/suspend.h>
|
||||
#endif
|
||||
|
||||
#include <asm/io.h>
|
||||
@ -257,11 +257,11 @@ int main(void)
|
||||
DEFINE(CPU_SPEC_SETUP, offsetof(struct cpu_spec, cpu_setup));
|
||||
DEFINE(CPU_SPEC_RESTORE, offsetof(struct cpu_spec, cpu_restore));
|
||||
|
||||
#ifndef CONFIG_PPC64
|
||||
DEFINE(pbe_address, offsetof(struct pbe, address));
|
||||
DEFINE(pbe_orig_address, offsetof(struct pbe, orig_address));
|
||||
DEFINE(pbe_next, offsetof(struct pbe, next));
|
||||
|
||||
#ifndef CONFIG_PPC64
|
||||
DEFINE(TASK_SIZE, TASK_SIZE);
|
||||
DEFINE(NUM_USER_SEGMENTS, TASK_SIZE>>28);
|
||||
#endif /* ! CONFIG_PPC64 */
|
||||
|
@ -120,8 +120,8 @@ skpinv: addi r4,r4,1 /* Increment */
|
||||
* Configure and load pinned entry into TLB slot 63.
|
||||
*/
|
||||
|
||||
lis r3,KERNELBASE@h /* Load the kernel virtual address */
|
||||
ori r3,r3,KERNELBASE@l
|
||||
lis r3,PAGE_OFFSET@h
|
||||
ori r3,r3,PAGE_OFFSET@l
|
||||
|
||||
/* Kernel is at the base of RAM */
|
||||
li r4, 0 /* Load the kernel physical address */
|
||||
@ -172,36 +172,28 @@ skpinv: addi r4,r4,1 /* Increment */
|
||||
isync
|
||||
|
||||
4:
|
||||
#ifdef CONFIG_SERIAL_TEXT_DEBUG
|
||||
/*
|
||||
* Add temporary UART mapping for early debug.
|
||||
* We can map UART registers wherever we want as long as they don't
|
||||
* interfere with other system mappings (e.g. with pinned entries).
|
||||
* For an example of how we handle this - see ocotea.h. --ebs
|
||||
*/
|
||||
#ifdef CONFIG_PPC_EARLY_DEBUG_44x
|
||||
/* Add UART mapping for early debug. */
|
||||
|
||||
/* pageid fields */
|
||||
lis r3,UART0_IO_BASE@h
|
||||
ori r3,r3,PPC44x_TLB_VALID | PPC44x_TLB_4K
|
||||
lis r3,PPC44x_EARLY_DEBUG_VIRTADDR@h
|
||||
ori r3,r3,PPC44x_TLB_VALID|PPC44x_TLB_TS|PPC44x_TLB_64K
|
||||
|
||||
/* xlat fields */
|
||||
lis r4,UART0_PHYS_IO_BASE@h /* RPN depends on SoC */
|
||||
#ifndef CONFIG_440EP
|
||||
ori r4,r4,0x0001 /* ERPN is 1 for second 4GB page */
|
||||
#endif
|
||||
lis r4,CONFIG_PPC_EARLY_DEBUG_44x_PHYSLOW@h
|
||||
ori r4,r4,CONFIG_PPC_EARLY_DEBUG_44x_PHYSHIGH
|
||||
|
||||
/* attrib fields */
|
||||
li r5,0
|
||||
ori r5,r5,(PPC44x_TLB_SW | PPC44x_TLB_SR | PPC44x_TLB_I | PPC44x_TLB_G)
|
||||
li r5,(PPC44x_TLB_SW|PPC44x_TLB_SR|PPC44x_TLB_I|PPC44x_TLB_G)
|
||||
li r0,62 /* TLB slot 0 */
|
||||
|
||||
li r0,0 /* TLB slot 0 */
|
||||
|
||||
tlbwe r3,r0,PPC44x_TLB_PAGEID /* Load the pageid fields */
|
||||
tlbwe r4,r0,PPC44x_TLB_XLAT /* Load the translation fields */
|
||||
tlbwe r5,r0,PPC44x_TLB_ATTRIB /* Load the attrib/access fields */
|
||||
tlbwe r3,r0,PPC44x_TLB_PAGEID
|
||||
tlbwe r4,r0,PPC44x_TLB_XLAT
|
||||
tlbwe r5,r0,PPC44x_TLB_ATTRIB
|
||||
|
||||
/* Force context change */
|
||||
isync
|
||||
#endif /* CONFIG_SERIAL_TEXT_DEBUG */
|
||||
#endif /* CONFIG_PPC_EARLY_DEBUG_44x */
|
||||
|
||||
/* Establish the interrupt vector offsets */
|
||||
SET_IVOR(0, CriticalInput);
|
||||
@ -709,16 +701,6 @@ _GLOBAL(giveup_fpu)
|
||||
blr
|
||||
#endif
|
||||
|
||||
/*
|
||||
* extern void abort(void)
|
||||
*
|
||||
* At present, this routine just applies a system reset.
|
||||
*/
|
||||
_GLOBAL(abort)
|
||||
mfspr r13,SPRN_DBCR0
|
||||
oris r13,r13,DBCR0_RST_SYSTEM@h
|
||||
mtspr SPRN_DBCR0,r13
|
||||
|
||||
_GLOBAL(set_context)
|
||||
|
||||
#ifdef CONFIG_BDI_SWITCH
|
||||
|
@ -33,8 +33,11 @@
|
||||
#include <asm/smp.h>
|
||||
|
||||
#ifdef CONFIG_HOTPLUG_CPU
|
||||
/* this is used for software suspend, and that shuts down
|
||||
* CPUs even while the system is still booting... */
|
||||
#define cpu_should_die() (cpu_is_offline(smp_processor_id()) && \
|
||||
system_state == SYSTEM_RUNNING)
|
||||
(system_state == SYSTEM_RUNNING \
|
||||
|| system_state == SYSTEM_BOOTING))
|
||||
#else
|
||||
#define cpu_should_die() 0
|
||||
#endif
|
||||
|
@ -53,3 +53,24 @@ END_FTR_SECTION_IFSET(CPU_FTR_ALTIVEC)
|
||||
isync
|
||||
b 1b
|
||||
|
||||
_GLOBAL(power4_cpu_offline_powersave)
|
||||
/* Go to NAP now */
|
||||
mfmsr r7
|
||||
rldicl r0,r7,48,1
|
||||
rotldi r0,r0,16
|
||||
mtmsrd r0,1 /* hard-disable interrupts */
|
||||
li r0,1
|
||||
li r6,0
|
||||
stb r0,PACAHARDIRQEN(r13) /* we'll hard-enable shortly */
|
||||
stb r6,PACASOFTIRQEN(r13) /* soft-disable irqs */
|
||||
BEGIN_FTR_SECTION
|
||||
DSSALL
|
||||
sync
|
||||
END_FTR_SECTION_IFSET(CPU_FTR_ALTIVEC)
|
||||
ori r7,r7,MSR_EE
|
||||
oris r7,r7,MSR_POW@h
|
||||
sync
|
||||
isync
|
||||
mtmsrd r7
|
||||
isync
|
||||
blr
|
||||
|
@ -67,6 +67,7 @@
|
||||
#ifdef CONFIG_PPC64
|
||||
#include <asm/paca.h>
|
||||
#include <asm/firmware.h>
|
||||
#include <asm/lv1call.h>
|
||||
#endif
|
||||
|
||||
int __irq_offset_value;
|
||||
@ -162,6 +163,16 @@ void local_irq_restore(unsigned long en)
|
||||
local_paca->hard_enabled = en;
|
||||
if ((int)mfspr(SPRN_DEC) < 0)
|
||||
mtspr(SPRN_DEC, 1);
|
||||
|
||||
/*
|
||||
* Force the delivery of pending soft-disabled interrupts on PS3.
|
||||
* Any HV call will have this side effect.
|
||||
*/
|
||||
if (firmware_has_feature(FW_FEATURE_PS3_LV1)) {
|
||||
u64 tmp;
|
||||
lv1_get_version_info(&tmp);
|
||||
}
|
||||
|
||||
hard_irq_enable();
|
||||
}
|
||||
#endif /* CONFIG_PPC64 */
|
||||
@ -947,33 +958,6 @@ arch_initcall(irq_late_init);
|
||||
|
||||
#endif /* CONFIG_PPC_MERGE */
|
||||
|
||||
#ifdef CONFIG_PCI_MSI
|
||||
int pci_enable_msi(struct pci_dev * pdev)
|
||||
{
|
||||
if (ppc_md.enable_msi)
|
||||
return ppc_md.enable_msi(pdev);
|
||||
else
|
||||
return -1;
|
||||
}
|
||||
EXPORT_SYMBOL(pci_enable_msi);
|
||||
|
||||
void pci_disable_msi(struct pci_dev * pdev)
|
||||
{
|
||||
if (ppc_md.disable_msi)
|
||||
ppc_md.disable_msi(pdev);
|
||||
}
|
||||
EXPORT_SYMBOL(pci_disable_msi);
|
||||
|
||||
void pci_scan_msi_device(struct pci_dev *dev) {}
|
||||
int pci_enable_msix(struct pci_dev* dev, struct msix_entry *entries, int nvec) {return -1;}
|
||||
void pci_disable_msix(struct pci_dev *dev) {}
|
||||
void msi_remove_pci_irq_vectors(struct pci_dev *dev) {}
|
||||
void pci_no_msi(void) {}
|
||||
EXPORT_SYMBOL(pci_enable_msix);
|
||||
EXPORT_SYMBOL(pci_disable_msix);
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_PPC64
|
||||
static int __init setup_noirqdistrib(char *str)
|
||||
{
|
||||
|
@ -401,7 +401,7 @@ out:
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int __kprobes kprobe_fault_handler(struct pt_regs *regs, int trapnr)
|
||||
int __kprobes kprobe_fault_handler(struct pt_regs *regs, int trapnr)
|
||||
{
|
||||
struct kprobe *cur = kprobe_running();
|
||||
struct kprobe_ctlblk *kcb = get_kprobe_ctlblk();
|
||||
@ -486,14 +486,6 @@ int __kprobes kprobe_exceptions_notify(struct notifier_block *self,
|
||||
if (post_kprobe_handler(args->regs))
|
||||
ret = NOTIFY_STOP;
|
||||
break;
|
||||
case DIE_PAGE_FAULT:
|
||||
/* kprobe_running() needs smp_processor_id() */
|
||||
preempt_disable();
|
||||
if (kprobe_running() &&
|
||||
kprobe_fault_handler(args->regs, args->trapnr))
|
||||
ret = NOTIFY_STOP;
|
||||
preempt_enable();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
@ -244,9 +244,9 @@ static int __init add_legacy_pci_port(struct device_node *np,
|
||||
* doesn't work for these settings, you'll have to add your own special
|
||||
* cases here
|
||||
*/
|
||||
if (device_is_compatible(pci_dev, "pci13a8,152") ||
|
||||
device_is_compatible(pci_dev, "pci13a8,154") ||
|
||||
device_is_compatible(pci_dev, "pci13a8,158")) {
|
||||
if (of_device_is_compatible(pci_dev, "pci13a8,152") ||
|
||||
of_device_is_compatible(pci_dev, "pci13a8,154") ||
|
||||
of_device_is_compatible(pci_dev, "pci13a8,158")) {
|
||||
addr += 0x200 * lindex;
|
||||
base += 0x200 * lindex;
|
||||
} else {
|
||||
@ -365,11 +365,11 @@ void __init find_legacy_serial_ports(void)
|
||||
/* Check for known pciclass, and also check wether we have
|
||||
* a device with child nodes for ports or not
|
||||
*/
|
||||
if (device_is_compatible(np, "pciclass,0700") ||
|
||||
device_is_compatible(np, "pciclass,070002"))
|
||||
if (of_device_is_compatible(np, "pciclass,0700") ||
|
||||
of_device_is_compatible(np, "pciclass,070002"))
|
||||
pci = np;
|
||||
else if (device_is_compatible(parent, "pciclass,0700") ||
|
||||
device_is_compatible(parent, "pciclass,070002"))
|
||||
else if (of_device_is_compatible(parent, "pciclass,0700") ||
|
||||
of_device_is_compatible(parent, "pciclass,070002"))
|
||||
pci = parent;
|
||||
else {
|
||||
of_node_put(parent);
|
||||
|
38
arch/powerpc/kernel/msi.c
Normal file
38
arch/powerpc/kernel/msi.c
Normal file
@ -0,0 +1,38 @@
|
||||
/*
|
||||
* Copyright 2006-2007, Michael Ellerman, IBM Corporation.
|
||||
*
|
||||
* 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/kernel.h>
|
||||
#include <linux/msi.h>
|
||||
|
||||
#include <asm/machdep.h>
|
||||
|
||||
int arch_msi_check_device(struct pci_dev* dev, int nvec, int type)
|
||||
{
|
||||
if (!ppc_md.setup_msi_irqs || !ppc_md.teardown_msi_irqs) {
|
||||
pr_debug("msi: Platform doesn't provide MSI callbacks.\n");
|
||||
return -ENOSYS;
|
||||
}
|
||||
|
||||
if (ppc_md.msi_check_device) {
|
||||
pr_debug("msi: Using platform check routine.\n");
|
||||
return ppc_md.msi_check_device(dev, nvec, type);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int arch_setup_msi_irqs(struct pci_dev *dev, int nvec, int type)
|
||||
{
|
||||
return ppc_md.setup_msi_irqs(dev, nvec, type);
|
||||
}
|
||||
|
||||
void arch_teardown_msi_irqs(struct pci_dev *dev)
|
||||
{
|
||||
return ppc_md.teardown_msi_irqs(dev);
|
||||
}
|
@ -27,7 +27,7 @@ const struct of_device_id *of_match_node(const struct of_device_id *matches,
|
||||
match &= node->type
|
||||
&& !strcmp(matches->type, node->type);
|
||||
if (matches->compatible[0])
|
||||
match &= device_is_compatible(node,
|
||||
match &= of_device_is_compatible(node,
|
||||
matches->compatible);
|
||||
if (match)
|
||||
return matches;
|
||||
@ -120,8 +120,8 @@ void of_device_unregister(struct of_device *ofdev)
|
||||
}
|
||||
|
||||
|
||||
static ssize_t of_device_get_modalias(struct of_device *ofdev,
|
||||
char *str, ssize_t len)
|
||||
ssize_t of_device_get_modalias(struct of_device *ofdev,
|
||||
char *str, ssize_t len)
|
||||
{
|
||||
const char *compat;
|
||||
int cplen, i;
|
||||
@ -239,3 +239,4 @@ EXPORT_SYMBOL(of_dev_get);
|
||||
EXPORT_SYMBOL(of_dev_put);
|
||||
EXPORT_SYMBOL(of_release_dev);
|
||||
EXPORT_SYMBOL(of_device_uevent);
|
||||
EXPORT_SYMBOL(of_device_get_modalias);
|
||||
|
@ -29,7 +29,6 @@
|
||||
#include <asm/ppc-pci.h>
|
||||
#include <asm/atomic.h>
|
||||
|
||||
|
||||
/*
|
||||
* The list of OF IDs below is used for matching bus types in the
|
||||
* system whose devices are to be exposed as of_platform_devices.
|
||||
|
@ -1658,7 +1658,7 @@ pgprot_t pci_phys_mem_access_prot(struct file *file,
|
||||
int i;
|
||||
|
||||
if (page_is_ram(pfn))
|
||||
return prot;
|
||||
return __pgprot(prot);
|
||||
|
||||
prot |= _PAGE_NO_CACHE | _PAGE_GUARDED;
|
||||
|
||||
|
@ -1006,8 +1006,9 @@ void __devinit pci_process_bridge_OF_ranges(struct pci_controller *hose,
|
||||
|
||||
switch ((pci_space >> 24) & 0x3) {
|
||||
case 1: /* I/O space */
|
||||
hose->io_base_phys = cpu_phys_addr;
|
||||
hose->pci_io_size = size;
|
||||
hose->io_base_phys = cpu_phys_addr - pci_addr;
|
||||
/* handle from 0 to top of I/O window */
|
||||
hose->pci_io_size = pci_addr + size;
|
||||
|
||||
res = &hose->io_resource;
|
||||
res->flags = IORESOURCE_IO;
|
||||
@ -1117,8 +1118,8 @@ static int get_bus_io_range(struct pci_bus *bus, unsigned long *start_phys,
|
||||
} else {
|
||||
/* Root Bus */
|
||||
res = &hose->io_resource;
|
||||
*start_phys = hose->io_base_phys;
|
||||
*start_virt = (unsigned long) hose->io_base_virt;
|
||||
*start_phys = hose->io_base_phys + res->start;
|
||||
*start_virt = (unsigned long) hose->io_base_virt + res->start;
|
||||
if (res->end > res->start)
|
||||
*size = res->end - res->start + 1;
|
||||
else {
|
||||
|
@ -66,7 +66,6 @@ EXPORT_SYMBOL(clear_pages);
|
||||
EXPORT_SYMBOL(ISA_DMA_THRESHOLD);
|
||||
EXPORT_SYMBOL(DMA_MODE_READ);
|
||||
EXPORT_SYMBOL(DMA_MODE_WRITE);
|
||||
EXPORT_SYMBOL(__div64_32);
|
||||
|
||||
EXPORT_SYMBOL(do_signal);
|
||||
EXPORT_SYMBOL(transfer_to_handler);
|
||||
|
@ -635,6 +635,12 @@ static void __init early_cmdline_parse(void)
|
||||
/* ibm,dynamic-reconfiguration-memory property supported */
|
||||
#define OV5_DRCONF_MEMORY 0x20
|
||||
#define OV5_LARGE_PAGES 0x10 /* large pages supported */
|
||||
/* PCIe/MSI support. Without MSI full PCIe is not supported */
|
||||
#ifdef CONFIG_PCI_MSI
|
||||
#define OV5_MSI 0x01 /* PCIe/MSI support */
|
||||
#else
|
||||
#define OV5_MSI 0x00
|
||||
#endif /* CONFIG_PCI_MSI */
|
||||
|
||||
/*
|
||||
* The architecture vector has an array of PVR mask/value pairs,
|
||||
@ -679,7 +685,7 @@ static unsigned char ibm_architecture_vec[] = {
|
||||
/* option vector 5: PAPR/OF options */
|
||||
3 - 2, /* length */
|
||||
0, /* don't ignore, don't halt */
|
||||
OV5_LPAR | OV5_SPLPAR | OV5_LARGE_PAGES | OV5_DRCONF_MEMORY,
|
||||
OV5_LPAR | OV5_SPLPAR | OV5_LARGE_PAGES | OV5_DRCONF_MEMORY | OV5_MSI,
|
||||
};
|
||||
|
||||
/* Old method - ELF header with PT_NOTE sections */
|
||||
@ -967,7 +973,7 @@ static unsigned long __init prom_next_cell(int s, cell_t **cellp)
|
||||
* If problems seem to show up, it would be a good start to track
|
||||
* them down.
|
||||
*/
|
||||
static void reserve_mem(u64 base, u64 size)
|
||||
static void __init reserve_mem(u64 base, u64 size)
|
||||
{
|
||||
u64 top = base + size;
|
||||
unsigned long cnt = RELOC(mem_reserve_cnt);
|
||||
@ -2153,7 +2159,7 @@ static void __init fixup_device_tree_efika(void)
|
||||
3,12,0, 3,13,0, 3,14,0, 3,15,0 };
|
||||
struct subst_entry efika_subst_table[] = {
|
||||
{ "/", "device_type", prop_cstr("efika") },
|
||||
{ "/builtin", "compatible", prop_cstr("soc") },
|
||||
{ "/builtin", "device_type", prop_cstr("soc") },
|
||||
{ "/builtin/ata", "compatible", prop_cstr("mpc5200b-ata\0mpc5200-ata"), },
|
||||
{ "/builtin/bestcomm", "compatible", prop_cstr("mpc5200b-bestcomm\0mpc5200-bestcomm") },
|
||||
{ "/builtin/bestcomm", "interrupts", prop_bcomm_irq, sizeof(prop_bcomm_irq) },
|
||||
|
@ -1042,3 +1042,28 @@ const void *of_get_mac_address(struct device_node *np)
|
||||
}
|
||||
EXPORT_SYMBOL(of_get_mac_address);
|
||||
|
||||
int of_irq_to_resource(struct device_node *dev, int index, struct resource *r)
|
||||
{
|
||||
int irq = irq_of_parse_and_map(dev, index);
|
||||
|
||||
/* Only dereference the resource if both the
|
||||
* resource and the irq are valid. */
|
||||
if (r && irq != NO_IRQ) {
|
||||
r->start = r->end = irq;
|
||||
r->flags = IORESOURCE_IRQ;
|
||||
}
|
||||
|
||||
return irq;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(of_irq_to_resource);
|
||||
|
||||
void __iomem *of_iomap(struct device_node *np, int index)
|
||||
{
|
||||
struct resource res;
|
||||
|
||||
if (of_address_to_resource(np, index, &res))
|
||||
return NULL;
|
||||
|
||||
return ioremap(res.start, 1 + res.end - res.start);
|
||||
}
|
||||
EXPORT_SYMBOL(of_iomap);
|
||||
|
@ -176,10 +176,10 @@ static struct call_data_struct {
|
||||
#define SMP_CALL_TIMEOUT 8
|
||||
|
||||
/*
|
||||
* This function sends a 'generic call function' IPI to all other CPUs
|
||||
* in the system.
|
||||
* These functions send a 'generic call function' IPI to other online
|
||||
* CPUS in the system.
|
||||
*
|
||||
* [SUMMARY] Run a function on all other CPUs.
|
||||
* [SUMMARY] Run a function on other CPUs.
|
||||
* <func> The function to run. This must be fast and non-blocking.
|
||||
* <info> An arbitrary pointer to pass to the function.
|
||||
* <nonatomic> currently unused.
|
||||
@ -190,18 +190,26 @@ static struct call_data_struct {
|
||||
* You must not call this function with disabled interrupts or from a
|
||||
* hardware interrupt handler or from a bottom half handler.
|
||||
*/
|
||||
int smp_call_function (void (*func) (void *info), void *info, int nonatomic,
|
||||
int wait)
|
||||
{
|
||||
int smp_call_function_map(void (*func) (void *info), void *info, int nonatomic,
|
||||
int wait, cpumask_t map)
|
||||
{
|
||||
struct call_data_struct data;
|
||||
int ret = -1, cpus;
|
||||
int ret = -1, num_cpus;
|
||||
int cpu;
|
||||
u64 timeout;
|
||||
|
||||
/* Can deadlock when called with interrupts disabled */
|
||||
WARN_ON(irqs_disabled());
|
||||
|
||||
/* remove 'self' from the map */
|
||||
if (cpu_isset(smp_processor_id(), map))
|
||||
cpu_clear(smp_processor_id(), map);
|
||||
|
||||
/* sanity check the map, remove any non-online processors. */
|
||||
cpus_and(map, map, cpu_online_map);
|
||||
|
||||
if (unlikely(smp_ops == NULL))
|
||||
return -1;
|
||||
return ret;
|
||||
|
||||
data.func = func;
|
||||
data.info = info;
|
||||
@ -213,40 +221,42 @@ int smp_call_function (void (*func) (void *info), void *info, int nonatomic,
|
||||
spin_lock(&call_lock);
|
||||
/* Must grab online cpu count with preempt disabled, otherwise
|
||||
* it can change. */
|
||||
cpus = num_online_cpus() - 1;
|
||||
if (!cpus) {
|
||||
num_cpus = num_online_cpus() - 1;
|
||||
if (!num_cpus || cpus_empty(map)) {
|
||||
ret = 0;
|
||||
goto out;
|
||||
}
|
||||
|
||||
call_data = &data;
|
||||
smp_wmb();
|
||||
/* Send a message to all other CPUs and wait for them to respond */
|
||||
smp_ops->message_pass(MSG_ALL_BUT_SELF, PPC_MSG_CALL_FUNCTION);
|
||||
/* Send a message to all CPUs in the map */
|
||||
for_each_cpu_mask(cpu, map)
|
||||
smp_ops->message_pass(cpu, PPC_MSG_CALL_FUNCTION);
|
||||
|
||||
timeout = get_tb() + (u64) SMP_CALL_TIMEOUT * tb_ticks_per_sec;
|
||||
|
||||
/* Wait for response */
|
||||
while (atomic_read(&data.started) != cpus) {
|
||||
/* Wait for indication that they have received the message */
|
||||
while (atomic_read(&data.started) != num_cpus) {
|
||||
HMT_low();
|
||||
if (get_tb() >= timeout) {
|
||||
printk("smp_call_function on cpu %d: other cpus not "
|
||||
"responding (%d)\n", smp_processor_id(),
|
||||
atomic_read(&data.started));
|
||||
"responding (%d)\n", smp_processor_id(),
|
||||
atomic_read(&data.started));
|
||||
debugger(NULL);
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
|
||||
/* optionally wait for the CPUs to complete */
|
||||
if (wait) {
|
||||
while (atomic_read(&data.finished) != cpus) {
|
||||
while (atomic_read(&data.finished) != num_cpus) {
|
||||
HMT_low();
|
||||
if (get_tb() >= timeout) {
|
||||
printk("smp_call_function on cpu %d: other "
|
||||
"cpus not finishing (%d/%d)\n",
|
||||
smp_processor_id(),
|
||||
atomic_read(&data.finished),
|
||||
atomic_read(&data.started));
|
||||
"cpus not finishing (%d/%d)\n",
|
||||
smp_processor_id(),
|
||||
atomic_read(&data.finished),
|
||||
atomic_read(&data.started));
|
||||
debugger(NULL);
|
||||
goto out;
|
||||
}
|
||||
@ -262,8 +272,29 @@ int smp_call_function (void (*func) (void *info), void *info, int nonatomic,
|
||||
return ret;
|
||||
}
|
||||
|
||||
int smp_call_function(void (*func) (void *info), void *info, int nonatomic,
|
||||
int wait)
|
||||
{
|
||||
return smp_call_function_map(func,info,nonatomic,wait,cpu_online_map);
|
||||
}
|
||||
EXPORT_SYMBOL(smp_call_function);
|
||||
|
||||
int smp_call_function_single(int cpu, void (*func) (void *info), void *info, int nonatomic,
|
||||
int wait)
|
||||
{
|
||||
cpumask_t map=CPU_MASK_NONE;
|
||||
|
||||
if (!cpu_online(cpu))
|
||||
return -EINVAL;
|
||||
|
||||
if (cpu == smp_processor_id())
|
||||
return -EBUSY;
|
||||
|
||||
cpu_set(cpu, map);
|
||||
return smp_call_function_map(func,info,nonatomic,wait,map);
|
||||
}
|
||||
EXPORT_SYMBOL(smp_call_function_single);
|
||||
|
||||
void smp_call_function_interrupt(void)
|
||||
{
|
||||
void (*func) (void *info);
|
||||
|
43
arch/powerpc/kernel/swsusp.c
Normal file
43
arch/powerpc/kernel/swsusp.c
Normal file
@ -0,0 +1,43 @@
|
||||
/*
|
||||
* Common powerpc suspend code for 32 and 64 bits
|
||||
*
|
||||
* Copyright 2007 Johannes Berg <johannes@sipsolutions.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/sched.h>
|
||||
#include <asm/suspend.h>
|
||||
#include <asm/system.h>
|
||||
#include <asm/current.h>
|
||||
#include <asm/mmu_context.h>
|
||||
|
||||
void save_processor_state(void)
|
||||
{
|
||||
/*
|
||||
* flush out all the special registers so we don't need
|
||||
* to save them in the snapshot
|
||||
*/
|
||||
flush_fp_to_thread(current);
|
||||
flush_altivec_to_thread(current);
|
||||
flush_spe_to_thread(current);
|
||||
|
||||
#ifdef CONFIG_PPC64
|
||||
hard_irq_disable();
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
void restore_processor_state(void)
|
||||
{
|
||||
#ifdef CONFIG_PPC32
|
||||
set_context(current->active_mm->context.id, current->active_mm->pgd);
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_PPC64
|
||||
hard_irq_enable();
|
||||
#endif
|
||||
}
|
24
arch/powerpc/kernel/swsusp_64.c
Normal file
24
arch/powerpc/kernel/swsusp_64.c
Normal file
@ -0,0 +1,24 @@
|
||||
/*
|
||||
* PowerPC 64-bit swsusp implementation
|
||||
*
|
||||
* Copyright 2006 Johannes Berg <johannes@sipsolutions.net>
|
||||
*
|
||||
* GPLv2
|
||||
*/
|
||||
|
||||
#include <asm/system.h>
|
||||
#include <asm/iommu.h>
|
||||
#include <linux/irq.h>
|
||||
#include <linux/interrupt.h>
|
||||
|
||||
void do_after_copyback(void)
|
||||
{
|
||||
iommu_restore();
|
||||
touch_softlockup_watchdog();
|
||||
mb();
|
||||
}
|
||||
|
||||
void _iommu_save(void)
|
||||
{
|
||||
iommu_save();
|
||||
}
|
228
arch/powerpc/kernel/swsusp_asm64.S
Normal file
228
arch/powerpc/kernel/swsusp_asm64.S
Normal file
@ -0,0 +1,228 @@
|
||||
/*
|
||||
* PowerPC 64-bit swsusp implementation
|
||||
*
|
||||
* Copyright 2006 Johannes Berg <johannes@sipsolutions.net>
|
||||
*
|
||||
* GPLv2
|
||||
*/
|
||||
|
||||
#include <linux/threads.h>
|
||||
#include <asm/processor.h>
|
||||
#include <asm/page.h>
|
||||
#include <asm/cputable.h>
|
||||
#include <asm/thread_info.h>
|
||||
#include <asm/ppc_asm.h>
|
||||
#include <asm/asm-offsets.h>
|
||||
|
||||
/*
|
||||
* Structure for storing CPU registers on the save area.
|
||||
*/
|
||||
#define SL_r1 0x00 /* stack pointer */
|
||||
#define SL_PC 0x08
|
||||
#define SL_MSR 0x10
|
||||
#define SL_SDR1 0x18
|
||||
#define SL_XER 0x20
|
||||
#define SL_TB 0x40
|
||||
#define SL_r2 0x48
|
||||
#define SL_CR 0x50
|
||||
#define SL_LR 0x58
|
||||
#define SL_r12 0x60
|
||||
#define SL_r13 0x68
|
||||
#define SL_r14 0x70
|
||||
#define SL_r15 0x78
|
||||
#define SL_r16 0x80
|
||||
#define SL_r17 0x88
|
||||
#define SL_r18 0x90
|
||||
#define SL_r19 0x98
|
||||
#define SL_r20 0xa0
|
||||
#define SL_r21 0xa8
|
||||
#define SL_r22 0xb0
|
||||
#define SL_r23 0xb8
|
||||
#define SL_r24 0xc0
|
||||
#define SL_r25 0xc8
|
||||
#define SL_r26 0xd0
|
||||
#define SL_r27 0xd8
|
||||
#define SL_r28 0xe0
|
||||
#define SL_r29 0xe8
|
||||
#define SL_r30 0xf0
|
||||
#define SL_r31 0xf8
|
||||
#define SL_SIZE SL_r31+8
|
||||
|
||||
/* these macros rely on the save area being
|
||||
* pointed to by r11 */
|
||||
#define SAVE_SPECIAL(special) \
|
||||
mf##special r0 ;\
|
||||
std r0, SL_##special(r11)
|
||||
#define RESTORE_SPECIAL(special) \
|
||||
ld r0, SL_##special(r11) ;\
|
||||
mt##special r0
|
||||
#define SAVE_REGISTER(reg) \
|
||||
std reg, SL_##reg(r11)
|
||||
#define RESTORE_REGISTER(reg) \
|
||||
ld reg, SL_##reg(r11)
|
||||
|
||||
/* space for storing cpu state */
|
||||
.section .data
|
||||
.align 5
|
||||
swsusp_save_area:
|
||||
.space SL_SIZE
|
||||
|
||||
.section ".toc","aw"
|
||||
swsusp_save_area_ptr:
|
||||
.tc swsusp_save_area[TC],swsusp_save_area
|
||||
restore_pblist_ptr:
|
||||
.tc restore_pblist[TC],restore_pblist
|
||||
|
||||
.section .text
|
||||
.align 5
|
||||
_GLOBAL(swsusp_arch_suspend)
|
||||
ld r11,swsusp_save_area_ptr@toc(r2)
|
||||
SAVE_SPECIAL(LR)
|
||||
SAVE_REGISTER(r1)
|
||||
SAVE_SPECIAL(CR)
|
||||
SAVE_SPECIAL(TB)
|
||||
SAVE_REGISTER(r2)
|
||||
SAVE_REGISTER(r12)
|
||||
SAVE_REGISTER(r13)
|
||||
SAVE_REGISTER(r14)
|
||||
SAVE_REGISTER(r15)
|
||||
SAVE_REGISTER(r16)
|
||||
SAVE_REGISTER(r17)
|
||||
SAVE_REGISTER(r18)
|
||||
SAVE_REGISTER(r19)
|
||||
SAVE_REGISTER(r20)
|
||||
SAVE_REGISTER(r21)
|
||||
SAVE_REGISTER(r22)
|
||||
SAVE_REGISTER(r23)
|
||||
SAVE_REGISTER(r24)
|
||||
SAVE_REGISTER(r25)
|
||||
SAVE_REGISTER(r26)
|
||||
SAVE_REGISTER(r27)
|
||||
SAVE_REGISTER(r28)
|
||||
SAVE_REGISTER(r29)
|
||||
SAVE_REGISTER(r30)
|
||||
SAVE_REGISTER(r31)
|
||||
SAVE_SPECIAL(MSR)
|
||||
SAVE_SPECIAL(SDR1)
|
||||
SAVE_SPECIAL(XER)
|
||||
|
||||
/* we push the stack up 128 bytes but don't store the
|
||||
* stack pointer on the stack like a real stackframe */
|
||||
addi r1,r1,-128
|
||||
|
||||
bl _iommu_save
|
||||
bl swsusp_save
|
||||
|
||||
/* restore LR */
|
||||
ld r11,swsusp_save_area_ptr@toc(r2)
|
||||
RESTORE_SPECIAL(LR)
|
||||
addi r1,r1,128
|
||||
|
||||
blr
|
||||
|
||||
/* Resume code */
|
||||
_GLOBAL(swsusp_arch_resume)
|
||||
/* Stop pending alitvec streams and memory accesses */
|
||||
BEGIN_FTR_SECTION
|
||||
DSSALL
|
||||
END_FTR_SECTION_IFSET(CPU_FTR_ALTIVEC)
|
||||
sync
|
||||
|
||||
ld r12,restore_pblist_ptr@toc(r2)
|
||||
ld r12,0(r12)
|
||||
|
||||
cmpdi r12,0
|
||||
beq- nothing_to_copy
|
||||
li r15,512
|
||||
copyloop:
|
||||
ld r13,pbe_address(r12)
|
||||
ld r14,pbe_orig_address(r12)
|
||||
|
||||
mtctr r15
|
||||
li r10,0
|
||||
copy_page_loop:
|
||||
ldx r0,r10,r13
|
||||
stdx r0,r10,r14
|
||||
addi r10,r10,8
|
||||
bdnz copy_page_loop
|
||||
|
||||
ld r12,pbe_next(r12)
|
||||
cmpdi r12,0
|
||||
bne+ copyloop
|
||||
nothing_to_copy:
|
||||
|
||||
/* flush caches */
|
||||
lis r3, 0x10
|
||||
mtctr r3
|
||||
li r3, 0
|
||||
ori r3, r3, CONFIG_KERNEL_START>>48
|
||||
li r0, 48
|
||||
sld r3, r3, r0
|
||||
li r0, 0
|
||||
1:
|
||||
dcbf r0,r3
|
||||
addi r3,r3,0x20
|
||||
bdnz 1b
|
||||
|
||||
sync
|
||||
|
||||
tlbia
|
||||
|
||||
ld r11,swsusp_save_area_ptr@toc(r2)
|
||||
|
||||
RESTORE_SPECIAL(CR)
|
||||
|
||||
/* restore timebase */
|
||||
/* load saved tb */
|
||||
ld r1, SL_TB(r11)
|
||||
/* get upper 32 bits of it */
|
||||
srdi r2, r1, 32
|
||||
/* clear tb lower to avoid wrap */
|
||||
li r0, 0
|
||||
mttbl r0
|
||||
/* set tb upper */
|
||||
mttbu r2
|
||||
/* set tb lower */
|
||||
mttbl r1
|
||||
|
||||
/* restore registers */
|
||||
RESTORE_REGISTER(r1)
|
||||
RESTORE_REGISTER(r2)
|
||||
RESTORE_REGISTER(r12)
|
||||
RESTORE_REGISTER(r13)
|
||||
RESTORE_REGISTER(r14)
|
||||
RESTORE_REGISTER(r15)
|
||||
RESTORE_REGISTER(r16)
|
||||
RESTORE_REGISTER(r17)
|
||||
RESTORE_REGISTER(r18)
|
||||
RESTORE_REGISTER(r19)
|
||||
RESTORE_REGISTER(r20)
|
||||
RESTORE_REGISTER(r21)
|
||||
RESTORE_REGISTER(r22)
|
||||
RESTORE_REGISTER(r23)
|
||||
RESTORE_REGISTER(r24)
|
||||
RESTORE_REGISTER(r25)
|
||||
RESTORE_REGISTER(r26)
|
||||
RESTORE_REGISTER(r27)
|
||||
RESTORE_REGISTER(r28)
|
||||
RESTORE_REGISTER(r29)
|
||||
RESTORE_REGISTER(r30)
|
||||
RESTORE_REGISTER(r31)
|
||||
/* can't use RESTORE_SPECIAL(MSR) */
|
||||
ld r0, SL_MSR(r11)
|
||||
mtmsrd r0, 0
|
||||
RESTORE_SPECIAL(SDR1)
|
||||
RESTORE_SPECIAL(XER)
|
||||
|
||||
sync
|
||||
|
||||
addi r1,r1,-128
|
||||
bl slb_flush_and_rebolt
|
||||
bl do_after_copyback
|
||||
addi r1,r1,128
|
||||
|
||||
ld r11,swsusp_save_area_ptr@toc(r2)
|
||||
RESTORE_SPECIAL(LR)
|
||||
|
||||
li r3, 0
|
||||
blr
|
@ -499,4 +499,4 @@ static int __init topology_init(void)
|
||||
|
||||
return 0;
|
||||
}
|
||||
__initcall(topology_init);
|
||||
subsys_initcall(topology_init);
|
||||
|
@ -51,6 +51,9 @@ void __init udbg_early_init(void)
|
||||
udbg_init_pas_realmode();
|
||||
#elif defined(CONFIG_BOOTX_TEXT)
|
||||
udbg_init_btext();
|
||||
#elif defined(CONFIG_PPC_EARLY_DEBUG_44x)
|
||||
/* PPC44x debug */
|
||||
udbg_init_44x_as1();
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -191,3 +191,26 @@ void udbg_init_pas_realmode(void)
|
||||
udbg_getc_poll = NULL;
|
||||
}
|
||||
#endif /* CONFIG_PPC_MAPLE */
|
||||
|
||||
#ifdef CONFIG_PPC_EARLY_DEBUG_44x
|
||||
#include <platforms/44x/44x.h>
|
||||
|
||||
static void udbg_44x_as1_putc(char c)
|
||||
{
|
||||
if (udbg_comport) {
|
||||
while ((as1_readb(&udbg_comport->lsr) & LSR_THRE) == 0)
|
||||
/* wait for idle */;
|
||||
as1_writeb(c, &udbg_comport->thr); eieio();
|
||||
if (c == '\n')
|
||||
udbg_44x_as1_putc('\r');
|
||||
}
|
||||
}
|
||||
|
||||
void __init udbg_init_44x_as1(void)
|
||||
{
|
||||
udbg_comport =
|
||||
(volatile struct NS16550 __iomem *)PPC44x_EARLY_DEBUG_VIRTADDR;
|
||||
|
||||
udbg_putc = udbg_44x_as1_putc;
|
||||
}
|
||||
#endif /* CONFIG_PPC_EARLY_DEBUG_44x */
|
||||
|
@ -117,7 +117,7 @@ static const struct vio_device_id *vio_match_device(
|
||||
{
|
||||
while (ids->type[0] != '\0') {
|
||||
if ((strncmp(dev->type, ids->type, strlen(ids->type)) == 0) &&
|
||||
device_is_compatible(dev->dev.archdata.of_node,
|
||||
of_device_is_compatible(dev->dev.archdata.of_node,
|
||||
ids->compat))
|
||||
return ids;
|
||||
ids++;
|
||||
|
@ -306,13 +306,15 @@ EXPORT_SYMBOL(__dma_free_coherent);
|
||||
static int __init dma_alloc_init(void)
|
||||
{
|
||||
pgd_t *pgd;
|
||||
pud_t *pud;
|
||||
pmd_t *pmd;
|
||||
pte_t *pte;
|
||||
int ret = 0;
|
||||
|
||||
do {
|
||||
pgd = pgd_offset(&init_mm, CONSISTENT_BASE);
|
||||
pmd = pmd_alloc(&init_mm, pgd, CONSISTENT_BASE);
|
||||
pud = pud_alloc(&init_mm, pgd, CONSISTENT_BASE);
|
||||
pmd = pmd_alloc(&init_mm, pud, CONSISTENT_BASE);
|
||||
if (!pmd) {
|
||||
printk(KERN_ERR "%s: no pmd tables\n", __func__);
|
||||
ret = -ENOMEM;
|
||||
|
@ -24,73 +24,38 @@
|
||||
*
|
||||
*/
|
||||
|
||||
#include <linux/signal.h>
|
||||
#include <linux/sched.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/errno.h>
|
||||
#include <linux/string.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/ptrace.h>
|
||||
#include <linux/mman.h>
|
||||
#include <linux/mm.h>
|
||||
#include <linux/swap.h>
|
||||
#include <linux/stddef.h>
|
||||
#include <linux/vmalloc.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/delay.h>
|
||||
#include <linux/highmem.h>
|
||||
|
||||
#include <asm/pgalloc.h>
|
||||
#include <asm/prom.h>
|
||||
#include <asm/io.h>
|
||||
#include <asm/mmu_context.h>
|
||||
#include <asm/pgtable.h>
|
||||
#include <asm/mmu.h>
|
||||
#include <asm/uaccess.h>
|
||||
#include <asm/smp.h>
|
||||
#include <asm/bootx.h>
|
||||
#include <asm/machdep.h>
|
||||
#include <asm/setup.h>
|
||||
#include <asm/system.h>
|
||||
#include <asm/page.h>
|
||||
|
||||
#include "mmu_decl.h"
|
||||
|
||||
extern char etext[], _stext[];
|
||||
|
||||
/* Used by the 44x TLB replacement exception handler.
|
||||
* Just needed it declared someplace.
|
||||
*/
|
||||
unsigned int tlb_44x_index = 0;
|
||||
unsigned int tlb_44x_hwater = 62;
|
||||
unsigned int tlb_44x_index; /* = 0 */
|
||||
unsigned int tlb_44x_hwater = PPC44x_TLB_SIZE - 1 - PPC44x_EARLY_TLBS;
|
||||
|
||||
/*
|
||||
* "Pins" a 256MB TLB entry in AS0 for kernel lowmem
|
||||
*/
|
||||
static void __init
|
||||
ppc44x_pin_tlb(int slot, unsigned int virt, unsigned int phys)
|
||||
static void __init ppc44x_pin_tlb(unsigned int virt, unsigned int phys)
|
||||
{
|
||||
unsigned long attrib = 0;
|
||||
|
||||
__asm__ __volatile__("\
|
||||
clrrwi %2,%2,10\n\
|
||||
ori %2,%2,%4\n\
|
||||
clrrwi %1,%1,10\n\
|
||||
li %0,0\n\
|
||||
ori %0,%0,%5\n\
|
||||
tlbwe %2,%3,%6\n\
|
||||
tlbwe %1,%3,%7\n\
|
||||
tlbwe %0,%3,%8"
|
||||
__asm__ __volatile__(
|
||||
"tlbwe %2,%3,%4\n"
|
||||
"tlbwe %1,%3,%5\n"
|
||||
"tlbwe %0,%3,%6\n"
|
||||
:
|
||||
: "r" (attrib), "r" (phys), "r" (virt), "r" (slot),
|
||||
"i" (PPC44x_TLB_VALID | PPC44x_TLB_256M),
|
||||
"i" (PPC44x_TLB_SW | PPC44x_TLB_SR | PPC44x_TLB_SX | PPC44x_TLB_G),
|
||||
: "r" (PPC44x_TLB_SW | PPC44x_TLB_SR | PPC44x_TLB_SX | PPC44x_TLB_G),
|
||||
"r" (phys),
|
||||
"r" (virt | PPC44x_TLB_VALID | PPC44x_TLB_256M),
|
||||
"r" (tlb_44x_hwater--), /* slot for this TLB entry */
|
||||
"i" (PPC44x_TLB_PAGEID),
|
||||
"i" (PPC44x_TLB_XLAT),
|
||||
"i" (PPC44x_TLB_ATTRIB));
|
||||
}
|
||||
|
||||
/*
|
||||
* MMU_init_hw does the chip-specific initialization of the MMU hardware.
|
||||
*/
|
||||
void __init MMU_init_hw(void)
|
||||
{
|
||||
flush_instruction_cache();
|
||||
@ -98,22 +63,13 @@ void __init MMU_init_hw(void)
|
||||
|
||||
unsigned long __init mmu_mapin_ram(void)
|
||||
{
|
||||
unsigned int pinned_tlbs = 1;
|
||||
int i;
|
||||
unsigned long addr;
|
||||
|
||||
/* Determine number of entries necessary to cover lowmem */
|
||||
pinned_tlbs = (unsigned int)
|
||||
(_ALIGN(total_lowmem, PPC_PIN_SIZE) >> PPC44x_PIN_SHIFT);
|
||||
|
||||
/* Write upper watermark to save location */
|
||||
tlb_44x_hwater = PPC44x_LOW_SLOT - pinned_tlbs;
|
||||
|
||||
/* If necessary, set additional pinned TLBs */
|
||||
if (pinned_tlbs > 1)
|
||||
for (i = (PPC44x_LOW_SLOT-(pinned_tlbs-1)); i < PPC44x_LOW_SLOT; i++) {
|
||||
unsigned int phys_addr = (PPC44x_LOW_SLOT-i) * PPC_PIN_SIZE;
|
||||
ppc44x_pin_tlb(i, phys_addr+PAGE_OFFSET, phys_addr);
|
||||
}
|
||||
/* Pin in enough TLBs to cover any lowmem not covered by the
|
||||
* initial 256M mapping established in head_44x.S */
|
||||
for (addr = PPC_PIN_SIZE; addr < total_lowmem;
|
||||
addr += PPC_PIN_SIZE)
|
||||
ppc44x_pin_tlb(addr + PAGE_OFFSET, addr);
|
||||
|
||||
return total_lowmem;
|
||||
}
|
||||
|
@ -39,37 +39,26 @@
|
||||
#include <asm/tlbflush.h>
|
||||
#include <asm/siginfo.h>
|
||||
|
||||
|
||||
#ifdef CONFIG_KPROBES
|
||||
ATOMIC_NOTIFIER_HEAD(notify_page_fault_chain);
|
||||
|
||||
/* Hook to register for page fault notifications */
|
||||
int register_page_fault_notifier(struct notifier_block *nb)
|
||||
static inline int notify_page_fault(struct pt_regs *regs)
|
||||
{
|
||||
return atomic_notifier_chain_register(¬ify_page_fault_chain, nb);
|
||||
}
|
||||
int ret = 0;
|
||||
|
||||
int unregister_page_fault_notifier(struct notifier_block *nb)
|
||||
{
|
||||
return atomic_notifier_chain_unregister(¬ify_page_fault_chain, nb);
|
||||
}
|
||||
/* kprobe_running() needs smp_processor_id() */
|
||||
if (!user_mode(regs)) {
|
||||
preempt_disable();
|
||||
if (kprobe_running() && kprobe_fault_handler(regs, 11))
|
||||
ret = 1;
|
||||
preempt_enable();
|
||||
}
|
||||
|
||||
static inline int notify_page_fault(enum die_val val, const char *str,
|
||||
struct pt_regs *regs, long err, int trap, int sig)
|
||||
{
|
||||
struct die_args args = {
|
||||
.regs = regs,
|
||||
.str = str,
|
||||
.err = err,
|
||||
.trapnr = trap,
|
||||
.signr = sig
|
||||
};
|
||||
return atomic_notifier_call_chain(¬ify_page_fault_chain, val, &args);
|
||||
return ret;
|
||||
}
|
||||
#else
|
||||
static inline int notify_page_fault(enum die_val val, const char *str,
|
||||
struct pt_regs *regs, long err, int trap, int sig)
|
||||
static inline int notify_page_fault(struct pt_regs *regs)
|
||||
{
|
||||
return NOTIFY_DONE;
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -175,8 +164,7 @@ int __kprobes do_page_fault(struct pt_regs *regs, unsigned long address,
|
||||
is_write = error_code & ESR_DST;
|
||||
#endif /* CONFIG_4xx || CONFIG_BOOKE */
|
||||
|
||||
if (notify_page_fault(DIE_PAGE_FAULT, "page_fault", regs, error_code,
|
||||
11, SIGSEGV) == NOTIFY_STOP)
|
||||
if (notify_page_fault(regs))
|
||||
return 0;
|
||||
|
||||
if (trap == 0x300) {
|
||||
|
@ -26,6 +26,7 @@
|
||||
#include <asm/tlb.h>
|
||||
#include <asm/cputable.h>
|
||||
#include <asm/udbg.h>
|
||||
#include <asm/kexec.h>
|
||||
|
||||
#ifdef DEBUG_LOW
|
||||
#define DBG_LOW(fmt...) udbg_printf(fmt)
|
||||
@ -340,31 +341,70 @@ static void native_hpte_invalidate(unsigned long slot, unsigned long va,
|
||||
local_irq_restore(flags);
|
||||
}
|
||||
|
||||
/*
|
||||
* XXX This need fixing based on page size. It's only used by
|
||||
* native_hpte_clear() for now which needs fixing too so they
|
||||
* make a good pair...
|
||||
*/
|
||||
static unsigned long slot2va(unsigned long hpte_v, unsigned long slot)
|
||||
#define LP_SHIFT 12
|
||||
#define LP_BITS 8
|
||||
#define LP_MASK(i) ((0xFF >> (i)) << LP_SHIFT)
|
||||
|
||||
static void hpte_decode(hpte_t *hpte, unsigned long slot,
|
||||
int *psize, unsigned long *va)
|
||||
{
|
||||
unsigned long avpn = HPTE_V_AVPN_VAL(hpte_v);
|
||||
unsigned long va;
|
||||
unsigned long hpte_r = hpte->r;
|
||||
unsigned long hpte_v = hpte->v;
|
||||
unsigned long avpn;
|
||||
int i, size, shift, penc, avpnm_bits;
|
||||
|
||||
va = avpn << 23;
|
||||
if (!(hpte_v & HPTE_V_LARGE))
|
||||
size = MMU_PAGE_4K;
|
||||
else {
|
||||
for (i = 0; i < LP_BITS; i++) {
|
||||
if ((hpte_r & LP_MASK(i+1)) == LP_MASK(i+1))
|
||||
break;
|
||||
}
|
||||
penc = LP_MASK(i+1) >> LP_SHIFT;
|
||||
for (size = 0; size < MMU_PAGE_COUNT; size++) {
|
||||
|
||||
if (! (hpte_v & HPTE_V_LARGE)) {
|
||||
unsigned long vpi, pteg;
|
||||
/* 4K pages are not represented by LP */
|
||||
if (size == MMU_PAGE_4K)
|
||||
continue;
|
||||
|
||||
pteg = slot / HPTES_PER_GROUP;
|
||||
if (hpte_v & HPTE_V_SECONDARY)
|
||||
pteg = ~pteg;
|
||||
/* valid entries have a shift value */
|
||||
if (!mmu_psize_defs[size].shift)
|
||||
continue;
|
||||
|
||||
vpi = ((va >> 28) ^ pteg) & htab_hash_mask;
|
||||
|
||||
va |= vpi << PAGE_SHIFT;
|
||||
if (penc == mmu_psize_defs[size].penc)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return va;
|
||||
/*
|
||||
* FIXME, the code below works for 16M, 64K, and 4K pages as these
|
||||
* fall under the p<=23 rules for calculating the virtual address.
|
||||
* In the case of 16M pages, an extra bit is stolen from the AVPN
|
||||
* field to achieve the requisite 24 bits.
|
||||
*
|
||||
* Does not work for 16G pages or 1 TB segments.
|
||||
*/
|
||||
shift = mmu_psize_defs[size].shift;
|
||||
if (mmu_psize_defs[size].avpnm)
|
||||
avpnm_bits = __ilog2_u64(mmu_psize_defs[size].avpnm) + 1;
|
||||
else
|
||||
avpnm_bits = 0;
|
||||
if (shift - avpnm_bits <= 23) {
|
||||
avpn = HPTE_V_AVPN_VAL(hpte_v) << 23;
|
||||
|
||||
if (shift < 23) {
|
||||
unsigned long vpi, pteg;
|
||||
|
||||
pteg = slot / HPTES_PER_GROUP;
|
||||
if (hpte_v & HPTE_V_SECONDARY)
|
||||
pteg = ~pteg;
|
||||
vpi = ((avpn >> 28) ^ pteg) & htab_hash_mask;
|
||||
avpn |= (vpi << mmu_psize_defs[size].shift);
|
||||
}
|
||||
}
|
||||
|
||||
*va = avpn;
|
||||
*psize = size;
|
||||
}
|
||||
|
||||
/*
|
||||
@ -374,15 +414,14 @@ static unsigned long slot2va(unsigned long hpte_v, unsigned long slot)
|
||||
*
|
||||
* TODO: add batching support when enabled. remember, no dynamic memory here,
|
||||
* athough there is the control page available...
|
||||
*
|
||||
* XXX FIXME: 4k only for now !
|
||||
*/
|
||||
static void native_hpte_clear(void)
|
||||
{
|
||||
unsigned long slot, slots, flags;
|
||||
hpte_t *hptep = htab_address;
|
||||
unsigned long hpte_v;
|
||||
unsigned long hpte_v, va;
|
||||
unsigned long pteg_count;
|
||||
int psize;
|
||||
|
||||
pteg_count = htab_hash_mask + 1;
|
||||
|
||||
@ -408,8 +447,9 @@ static void native_hpte_clear(void)
|
||||
* already hold the native_tlbie_lock.
|
||||
*/
|
||||
if (hpte_v & HPTE_V_VALID) {
|
||||
hpte_decode(hptep, slot, &psize, &va);
|
||||
hptep->v = 0;
|
||||
__tlbie(slot2va(hpte_v, slot), MMU_PAGE_4K);
|
||||
__tlbie(va, psize);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -103,7 +103,7 @@ int mmu_ci_restrictions;
|
||||
#ifdef CONFIG_DEBUG_PAGEALLOC
|
||||
static u8 *linear_map_hash_slots;
|
||||
static unsigned long linear_map_hash_count;
|
||||
static spinlock_t linear_map_hash_lock;
|
||||
static DEFINE_SPINLOCK(linear_map_hash_lock);
|
||||
#endif /* CONFIG_DEBUG_PAGEALLOC */
|
||||
|
||||
/* There are definitions of page sizes arrays to be used when none
|
||||
|
@ -80,7 +80,6 @@ int page_is_ram(unsigned long pfn)
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
EXPORT_SYMBOL(page_is_ram);
|
||||
|
||||
pgprot_t phys_mem_access_prot(struct file *file, unsigned long pfn,
|
||||
unsigned long size, pgprot_t vma_prot)
|
||||
|
@ -40,7 +40,8 @@ extern int __map_without_bats;
|
||||
extern unsigned long ioremap_base;
|
||||
extern unsigned int rtas_data, rtas_size;
|
||||
|
||||
extern PTE *Hash, *Hash_end;
|
||||
struct _PTE;
|
||||
extern struct _PTE *Hash, *Hash_end;
|
||||
extern unsigned long Hash_size, Hash_mask;
|
||||
|
||||
extern unsigned int num_tlbcam_entries;
|
||||
|
@ -261,7 +261,7 @@ int map_page(unsigned long va, phys_addr_t pa, int flags)
|
||||
int err = -ENOMEM;
|
||||
|
||||
/* Use upper 10 bits of VA to index the first level map */
|
||||
pd = pmd_offset(pgd_offset_k(va), va);
|
||||
pd = pmd_offset(pud_offset(pgd_offset_k(va), va), va);
|
||||
/* Use middle 10 bits of VA to index the second-level map */
|
||||
pg = pte_alloc_kernel(pd, va);
|
||||
if (pg != 0) {
|
||||
@ -354,23 +354,27 @@ int
|
||||
get_pteptr(struct mm_struct *mm, unsigned long addr, pte_t **ptep, pmd_t **pmdp)
|
||||
{
|
||||
pgd_t *pgd;
|
||||
pud_t *pud;
|
||||
pmd_t *pmd;
|
||||
pte_t *pte;
|
||||
int retval = 0;
|
||||
|
||||
pgd = pgd_offset(mm, addr & PAGE_MASK);
|
||||
if (pgd) {
|
||||
pmd = pmd_offset(pgd, addr & PAGE_MASK);
|
||||
if (pmd_present(*pmd)) {
|
||||
pte = pte_offset_map(pmd, addr & PAGE_MASK);
|
||||
if (pte) {
|
||||
retval = 1;
|
||||
*ptep = pte;
|
||||
if (pmdp)
|
||||
*pmdp = pmd;
|
||||
/* XXX caller needs to do pte_unmap, yuck */
|
||||
}
|
||||
}
|
||||
pud = pud_offset(pgd, addr & PAGE_MASK);
|
||||
if (pud && pud_present(*pud)) {
|
||||
pmd = pmd_offset(pud, addr & PAGE_MASK);
|
||||
if (pmd_present(*pmd)) {
|
||||
pte = pte_offset_map(pmd, addr & PAGE_MASK);
|
||||
if (pte) {
|
||||
retval = 1;
|
||||
*ptep = pte;
|
||||
if (pmdp)
|
||||
*pmdp = pmd;
|
||||
/* XXX caller needs to do pte_unmap, yuck */
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return(retval);
|
||||
}
|
||||
|
@ -227,7 +227,7 @@ void switch_stab(struct task_struct *tsk, struct mm_struct *mm)
|
||||
* the first (bolted) segment, so that do_stab_bolted won't get a
|
||||
* recursive segment miss on the segment table itself.
|
||||
*/
|
||||
void stabs_alloc(void)
|
||||
void __init stabs_alloc(void)
|
||||
{
|
||||
int cpu;
|
||||
|
||||
|
8
arch/powerpc/platforms/44x/44x.h
Normal file
8
arch/powerpc/platforms/44x/44x.h
Normal file
@ -0,0 +1,8 @@
|
||||
#ifndef __POWERPC_PLATFORMS_44X_44X_H
|
||||
#define __POWERPC_PLATFORMS_44X_44X_H
|
||||
|
||||
extern u8 as1_readb(volatile u8 __iomem *addr);
|
||||
extern void as1_writeb(u8 data, volatile u8 __iomem *addr);
|
||||
extern void ppc44x_reset_system(char *cmd);
|
||||
|
||||
#endif /* __POWERPC_PLATFORMS_44X_44X_H */
|
56
arch/powerpc/platforms/44x/Kconfig
Normal file
56
arch/powerpc/platforms/44x/Kconfig
Normal file
@ -0,0 +1,56 @@
|
||||
#config BAMBOO
|
||||
# bool "Bamboo"
|
||||
# depends on 44x
|
||||
# default n
|
||||
# select 440EP
|
||||
# help
|
||||
# This option enables support for the IBM PPC440EP evaluation board.
|
||||
|
||||
config EBONY
|
||||
bool "Ebony"
|
||||
depends on 44x
|
||||
default y
|
||||
select 440GP
|
||||
help
|
||||
This option enables support for the IBM PPC440GP evaluation board.
|
||||
|
||||
#config LUAN
|
||||
# bool "Luan"
|
||||
# depends on 44x
|
||||
# default n
|
||||
# select 440SP
|
||||
# help
|
||||
# This option enables support for the IBM PPC440SP evaluation board.
|
||||
|
||||
#config OCOTEA
|
||||
# bool "Ocotea"
|
||||
# depends on 44x
|
||||
# default n
|
||||
# select 440GX
|
||||
# help
|
||||
# This option enables support for the IBM PPC440GX evaluation board.
|
||||
|
||||
# 44x specific CPU modules, selected based on the board above.
|
||||
config 440EP
|
||||
bool
|
||||
select PPC_FPU
|
||||
select IBM440EP_ERR42
|
||||
|
||||
config 440GP
|
||||
bool
|
||||
select IBM_NEW_EMAC_ZMII
|
||||
|
||||
config 440GX
|
||||
bool
|
||||
|
||||
config 440SP
|
||||
bool
|
||||
|
||||
config 440A
|
||||
bool
|
||||
depends on 440GX
|
||||
default y
|
||||
|
||||
# 44x errata/workaround config symbols, selected by the CPU models above
|
||||
config IBM440EP_ERR42
|
||||
bool
|
2
arch/powerpc/platforms/44x/Makefile
Normal file
2
arch/powerpc/platforms/44x/Makefile
Normal file
@ -0,0 +1,2 @@
|
||||
obj-$(CONFIG_44x) := misc_44x.o
|
||||
obj-$(CONFIG_EBONY) += ebony.o
|
73
arch/powerpc/platforms/44x/ebony.c
Normal file
73
arch/powerpc/platforms/44x/ebony.c
Normal file
@ -0,0 +1,73 @@
|
||||
/*
|
||||
* Ebony board specific routines
|
||||
*
|
||||
* Matt Porter <mporter@kernel.crashing.org>
|
||||
* Copyright 2002-2005 MontaVista Software Inc.
|
||||
*
|
||||
* Eugene Surovegin <eugene.surovegin@zultys.com> or <ebs@ebshome.net>
|
||||
* Copyright (c) 2003-2005 Zultys Technologies
|
||||
*
|
||||
* Rewritten and ported to the merged powerpc tree:
|
||||
* Copyright 2007 David Gibson <dwg@au1.ibm.com>, IBM Corporation.
|
||||
*
|
||||
* 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 <asm/machdep.h>
|
||||
#include <asm/prom.h>
|
||||
#include <asm/udbg.h>
|
||||
#include <asm/time.h>
|
||||
#include <asm/uic.h>
|
||||
#include <asm/of_platform.h>
|
||||
|
||||
#include "44x.h"
|
||||
|
||||
static struct of_device_id ebony_of_bus[] = {
|
||||
{ .type = "ibm,plb", },
|
||||
{ .type = "ibm,opb", },
|
||||
{ .type = "ibm,ebc", },
|
||||
{},
|
||||
};
|
||||
|
||||
static int __init ebony_device_probe(void)
|
||||
{
|
||||
if (!machine_is(ebony))
|
||||
return 0;
|
||||
|
||||
of_platform_bus_probe(NULL, ebony_of_bus, NULL);
|
||||
|
||||
return 0;
|
||||
}
|
||||
device_initcall(ebony_device_probe);
|
||||
|
||||
/*
|
||||
* Called very early, MMU is off, device-tree isn't unflattened
|
||||
*/
|
||||
static int __init ebony_probe(void)
|
||||
{
|
||||
unsigned long root = of_get_flat_dt_root();
|
||||
|
||||
if (!of_flat_dt_is_compatible(root, "ibm,ebony"))
|
||||
return 0;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
static void __init ebony_setup_arch(void)
|
||||
{
|
||||
}
|
||||
|
||||
define_machine(ebony) {
|
||||
.name = "Ebony",
|
||||
.probe = ebony_probe,
|
||||
.setup_arch = ebony_setup_arch,
|
||||
.progress = udbg_progress,
|
||||
.init_IRQ = uic_init_tree,
|
||||
.get_irq = uic_get_irq,
|
||||
.restart = ppc44x_reset_system,
|
||||
.calibrate_decr = generic_calibrate_decr,
|
||||
};
|
57
arch/powerpc/platforms/44x/misc_44x.S
Normal file
57
arch/powerpc/platforms/44x/misc_44x.S
Normal file
@ -0,0 +1,57 @@
|
||||
/*
|
||||
* This file contains miscellaneous low-level functions for PPC 44x.
|
||||
* Copyright 2007 David Gibson <dwg@au1.ibm.com>, IBM Corporation.
|
||||
*
|
||||
* 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 <asm/reg.h>
|
||||
#include <asm/ppc_asm.h>
|
||||
|
||||
.text
|
||||
|
||||
/*
|
||||
* Do an IO access in AS1
|
||||
*/
|
||||
_GLOBAL(as1_readb)
|
||||
mfmsr r7
|
||||
ori r0,r7,MSR_DS
|
||||
sync
|
||||
mtmsr r0
|
||||
sync
|
||||
isync
|
||||
lbz r3,0(r3)
|
||||
sync
|
||||
mtmsr r7
|
||||
sync
|
||||
isync
|
||||
blr
|
||||
|
||||
_GLOBAL(as1_writeb)
|
||||
mfmsr r7
|
||||
ori r0,r7,MSR_DS
|
||||
sync
|
||||
mtmsr r0
|
||||
sync
|
||||
isync
|
||||
stb r3,0(r4)
|
||||
sync
|
||||
mtmsr r7
|
||||
sync
|
||||
isync
|
||||
blr
|
||||
|
||||
/*
|
||||
* void ppc44x_reset_system(char *cmd)
|
||||
*
|
||||
* At present, this routine just applies a system reset.
|
||||
*/
|
||||
_GLOBAL(ppc44x_reset_system)
|
||||
mfspr r13,SPRN_DBCR0
|
||||
oris r13,r13,DBCR0_RST_SYSTEM@h
|
||||
mtspr SPRN_DBCR0,r13
|
||||
b . /* Just in case the reset doesn't work */
|
@ -1,5 +1,6 @@
|
||||
config PPC_MPC52xx
|
||||
bool
|
||||
select FSL_SOC
|
||||
default n
|
||||
|
||||
config PPC_MPC5200
|
||||
|
@ -8,3 +8,5 @@ endif
|
||||
|
||||
obj-$(CONFIG_PPC_EFIKA) += efika.o
|
||||
obj-$(CONFIG_PPC_LITE5200) += lite5200.o
|
||||
|
||||
obj-$(CONFIG_PM) += mpc52xx_sleep.o mpc52xx_pm.o
|
||||
|
@ -184,6 +184,16 @@ static void efika_show_cpuinfo(struct seq_file *m)
|
||||
of_node_put(root);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_PM
|
||||
static void efika_suspend_prepare(void __iomem *mbar)
|
||||
{
|
||||
u8 pin = 4; /* GPIO_WKUP_4 (GPIO_PSC6_0 - IRDA_RX) */
|
||||
u8 level = 1; /* wakeup on high level */
|
||||
/* IOW. to wake it up, short pins 1 and 3 on IRDA connector */
|
||||
mpc52xx_set_wakeup_gpio(pin, level);
|
||||
}
|
||||
#endif
|
||||
|
||||
static void __init efika_setup_arch(void)
|
||||
{
|
||||
rtas_initialize();
|
||||
@ -199,6 +209,11 @@ static void __init efika_setup_arch(void)
|
||||
|
||||
efika_pcisetup();
|
||||
|
||||
#ifdef CONFIG_PM
|
||||
mpc52xx_suspend.board_suspend_prepare = efika_suspend_prepare;
|
||||
mpc52xx_pm_init();
|
||||
#endif
|
||||
|
||||
if (ppc_md.progress)
|
||||
ppc_md.progress("Linux/PPC " UTS_RELEASE " running on Efika ;-)\n", 0x0);
|
||||
}
|
||||
|
@ -85,6 +85,28 @@ error:
|
||||
iounmap(gpio);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_PM
|
||||
static u32 descr_a;
|
||||
static void lite5200_suspend_prepare(void __iomem *mbar)
|
||||
{
|
||||
u8 pin = 1; /* GPIO_WKUP_1 (GPIO_PSC2_4) */
|
||||
u8 level = 0; /* wakeup on low level */
|
||||
mpc52xx_set_wakeup_gpio(pin, level);
|
||||
|
||||
/*
|
||||
* power down usb port
|
||||
* this needs to be called before of-ohci suspend code
|
||||
*/
|
||||
descr_a = in_be32(mbar + 0x1048);
|
||||
out_be32(mbar + 0x1048, (descr_a & ~0x200) | 0x100);
|
||||
}
|
||||
|
||||
static void lite5200_resume_finish(void __iomem *mbar)
|
||||
{
|
||||
out_be32(mbar + 0x1048, descr_a);
|
||||
}
|
||||
#endif
|
||||
|
||||
static void __init lite5200_setup_arch(void)
|
||||
{
|
||||
struct device_node *np;
|
||||
@ -107,6 +129,12 @@ static void __init lite5200_setup_arch(void)
|
||||
mpc52xx_setup_cpu(); /* Generic */
|
||||
lite5200_setup_cpu(); /* Platorm specific */
|
||||
|
||||
#ifdef CONFIG_PM
|
||||
mpc52xx_suspend.board_suspend_prepare = lite5200_suspend_prepare;
|
||||
mpc52xx_suspend.board_resume_finish = lite5200_resume_finish;
|
||||
mpc52xx_pm_init();
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_PCI
|
||||
np = of_find_node_by_type(NULL, "pci");
|
||||
if (np) {
|
||||
|
191
arch/powerpc/platforms/52xx/mpc52xx_pm.c
Normal file
191
arch/powerpc/platforms/52xx/mpc52xx_pm.c
Normal file
@ -0,0 +1,191 @@
|
||||
#include <linux/init.h>
|
||||
#include <linux/pm.h>
|
||||
#include <linux/io.h>
|
||||
#include <asm/time.h>
|
||||
#include <asm/cacheflush.h>
|
||||
#include <asm/mpc52xx.h>
|
||||
|
||||
#include "mpc52xx_pic.h"
|
||||
|
||||
|
||||
/* these are defined in mpc52xx_sleep.S, and only used here */
|
||||
extern void mpc52xx_deep_sleep(void *sram, void *sdram_regs,
|
||||
struct mpc52xx_cdm *, struct mpc52xx_intr *);
|
||||
extern void mpc52xx_ds_sram(void);
|
||||
extern const long mpc52xx_ds_sram_size;
|
||||
extern void mpc52xx_ds_cached(void);
|
||||
extern const long mpc52xx_ds_cached_size;
|
||||
|
||||
static void __iomem *mbar;
|
||||
static void __iomem *sdram;
|
||||
static struct mpc52xx_cdm __iomem *cdm;
|
||||
static struct mpc52xx_intr __iomem *intr;
|
||||
static struct mpc52xx_gpio_wkup __iomem *gpiow;
|
||||
static void *sram;
|
||||
static int sram_size;
|
||||
|
||||
struct mpc52xx_suspend mpc52xx_suspend;
|
||||
|
||||
static int mpc52xx_pm_valid(suspend_state_t state)
|
||||
{
|
||||
switch (state) {
|
||||
case PM_SUSPEND_STANDBY:
|
||||
return 1;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
int mpc52xx_set_wakeup_gpio(u8 pin, u8 level)
|
||||
{
|
||||
u16 tmp;
|
||||
|
||||
/* enable gpio */
|
||||
out_8(&gpiow->wkup_gpioe, in_8(&gpiow->wkup_gpioe) | (1 << pin));
|
||||
/* set as input */
|
||||
out_8(&gpiow->wkup_ddr, in_8(&gpiow->wkup_ddr) & ~(1 << pin));
|
||||
/* enable deep sleep interrupt */
|
||||
out_8(&gpiow->wkup_inten, in_8(&gpiow->wkup_inten) | (1 << pin));
|
||||
/* low/high level creates wakeup interrupt */
|
||||
tmp = in_be16(&gpiow->wkup_itype);
|
||||
tmp &= ~(0x3 << (pin * 2));
|
||||
tmp |= (!level + 1) << (pin * 2);
|
||||
out_be16(&gpiow->wkup_itype, tmp);
|
||||
/* master enable */
|
||||
out_8(&gpiow->wkup_maste, 1);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int mpc52xx_pm_prepare(suspend_state_t state)
|
||||
{
|
||||
if (state != PM_SUSPEND_STANDBY)
|
||||
return -EINVAL;
|
||||
|
||||
/* map the whole register space */
|
||||
mbar = mpc52xx_find_and_map("mpc5200");
|
||||
if (!mbar) {
|
||||
printk(KERN_ERR "%s:%i Error mapping registers\n", __func__, __LINE__);
|
||||
return -ENOSYS;
|
||||
}
|
||||
/* these offsets are from mpc5200 users manual */
|
||||
sdram = mbar + 0x100;
|
||||
cdm = mbar + 0x200;
|
||||
intr = mbar + 0x500;
|
||||
gpiow = mbar + 0xc00;
|
||||
sram = mbar + 0x8000; /* Those will be handled by the */
|
||||
sram_size = 0x4000; /* bestcomm driver soon */
|
||||
|
||||
/* call board suspend code, if applicable */
|
||||
if (mpc52xx_suspend.board_suspend_prepare)
|
||||
mpc52xx_suspend.board_suspend_prepare(mbar);
|
||||
else {
|
||||
printk(KERN_ALERT "%s: %i don't know how to wake up the board\n",
|
||||
__func__, __LINE__);
|
||||
goto out_unmap;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
out_unmap:
|
||||
iounmap(mbar);
|
||||
return -ENOSYS;
|
||||
}
|
||||
|
||||
|
||||
char saved_sram[0x4000];
|
||||
|
||||
int mpc52xx_pm_enter(suspend_state_t state)
|
||||
{
|
||||
u32 clk_enables;
|
||||
u32 msr, hid0;
|
||||
u32 intr_main_mask;
|
||||
void __iomem * irq_0x500 = (void *)CONFIG_KERNEL_START + 0x500;
|
||||
unsigned long irq_0x500_stop = (unsigned long)irq_0x500 + mpc52xx_ds_cached_size;
|
||||
char saved_0x500[mpc52xx_ds_cached_size];
|
||||
|
||||
/* disable all interrupts in PIC */
|
||||
intr_main_mask = in_be32(&intr->main_mask);
|
||||
out_be32(&intr->main_mask, intr_main_mask | 0x1ffff);
|
||||
|
||||
/* don't let DEC expire any time soon */
|
||||
mtspr(SPRN_DEC, 0x7fffffff);
|
||||
|
||||
/* save SRAM */
|
||||
memcpy(saved_sram, sram, sram_size);
|
||||
|
||||
/* copy low level suspend code to sram */
|
||||
memcpy(sram, mpc52xx_ds_sram, mpc52xx_ds_sram_size);
|
||||
|
||||
out_8(&cdm->ccs_sleep_enable, 1);
|
||||
out_8(&cdm->osc_sleep_enable, 1);
|
||||
out_8(&cdm->ccs_qreq_test, 1);
|
||||
|
||||
/* disable all but SDRAM and bestcomm (SRAM) clocks */
|
||||
clk_enables = in_be32(&cdm->clk_enables);
|
||||
out_be32(&cdm->clk_enables, clk_enables & 0x00088000);
|
||||
|
||||
/* disable power management */
|
||||
msr = mfmsr();
|
||||
mtmsr(msr & ~MSR_POW);
|
||||
|
||||
/* enable sleep mode, disable others */
|
||||
hid0 = mfspr(SPRN_HID0);
|
||||
mtspr(SPRN_HID0, (hid0 & ~(HID0_DOZE | HID0_NAP | HID0_DPM)) | HID0_SLEEP);
|
||||
|
||||
/* save original, copy our irq handler, flush from dcache and invalidate icache */
|
||||
memcpy(saved_0x500, irq_0x500, mpc52xx_ds_cached_size);
|
||||
memcpy(irq_0x500, mpc52xx_ds_cached, mpc52xx_ds_cached_size);
|
||||
flush_icache_range((unsigned long)irq_0x500, irq_0x500_stop);
|
||||
|
||||
/* call low-level sleep code */
|
||||
mpc52xx_deep_sleep(sram, sdram, cdm, intr);
|
||||
|
||||
/* restore original irq handler */
|
||||
memcpy(irq_0x500, saved_0x500, mpc52xx_ds_cached_size);
|
||||
flush_icache_range((unsigned long)irq_0x500, irq_0x500_stop);
|
||||
|
||||
/* restore old power mode */
|
||||
mtmsr(msr & ~MSR_POW);
|
||||
mtspr(SPRN_HID0, hid0);
|
||||
mtmsr(msr);
|
||||
|
||||
out_be32(&cdm->clk_enables, clk_enables);
|
||||
out_8(&cdm->ccs_sleep_enable, 0);
|
||||
out_8(&cdm->osc_sleep_enable, 0);
|
||||
|
||||
/* restore SRAM */
|
||||
memcpy(sram, saved_sram, sram_size);
|
||||
|
||||
/* restart jiffies */
|
||||
wakeup_decrementer();
|
||||
|
||||
/* reenable interrupts in PIC */
|
||||
out_be32(&intr->main_mask, intr_main_mask);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int mpc52xx_pm_finish(suspend_state_t state)
|
||||
{
|
||||
/* call board resume code */
|
||||
if (mpc52xx_suspend.board_resume_finish)
|
||||
mpc52xx_suspend.board_resume_finish(mbar);
|
||||
|
||||
iounmap(mbar);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct pm_ops mpc52xx_pm_ops = {
|
||||
.valid = mpc52xx_pm_valid,
|
||||
.prepare = mpc52xx_pm_prepare,
|
||||
.enter = mpc52xx_pm_enter,
|
||||
.finish = mpc52xx_pm_finish,
|
||||
};
|
||||
|
||||
int __init mpc52xx_pm_init(void)
|
||||
{
|
||||
pm_set_ops(&mpc52xx_pm_ops);
|
||||
return 0;
|
||||
}
|
154
arch/powerpc/platforms/52xx/mpc52xx_sleep.S
Normal file
154
arch/powerpc/platforms/52xx/mpc52xx_sleep.S
Normal file
@ -0,0 +1,154 @@
|
||||
#include <asm/reg.h>
|
||||
#include <asm/ppc_asm.h>
|
||||
#include <asm/processor.h>
|
||||
|
||||
|
||||
.text
|
||||
|
||||
_GLOBAL(mpc52xx_deep_sleep)
|
||||
mpc52xx_deep_sleep: /* args r3-r6: SRAM, SDRAM regs, CDM regs, INTR regs */
|
||||
|
||||
/* enable interrupts */
|
||||
mfmsr r7
|
||||
ori r7, r7, 0x8000 /* EE */
|
||||
mtmsr r7
|
||||
sync; isync;
|
||||
|
||||
li r10, 0 /* flag that irq handler sets */
|
||||
|
||||
/* enable tmr7 (or any other) interrupt */
|
||||
lwz r8, 0x14(r6) /* intr->main_mask */
|
||||
ori r8, r8, 0x1
|
||||
xori r8, r8, 0x1
|
||||
stw r8, 0x14(r6)
|
||||
sync
|
||||
|
||||
/* emulate tmr7 interrupt */
|
||||
li r8, 0x1
|
||||
stw r8, 0x40(r6) /* intr->main_emulate */
|
||||
sync
|
||||
|
||||
/* wait for it to happen */
|
||||
1:
|
||||
cmpi cr0, r10, 1
|
||||
bne cr0, 1b
|
||||
|
||||
/* lock icache */
|
||||
mfspr r10, SPRN_HID0
|
||||
ori r10, r10, 0x2000
|
||||
sync; isync;
|
||||
mtspr SPRN_HID0, r10
|
||||
sync; isync;
|
||||
|
||||
|
||||
mflr r9 /* save LR */
|
||||
|
||||
/* jump to sram */
|
||||
mtlr r3
|
||||
blrl
|
||||
|
||||
mtlr r9 /* restore LR */
|
||||
|
||||
/* unlock icache */
|
||||
mfspr r10, SPRN_HID0
|
||||
ori r10, r10, 0x2000
|
||||
xori r10, r10, 0x2000
|
||||
sync; isync;
|
||||
mtspr SPRN_HID0, r10
|
||||
sync; isync;
|
||||
|
||||
|
||||
/* return to C code */
|
||||
blr
|
||||
|
||||
|
||||
_GLOBAL(mpc52xx_ds_sram)
|
||||
mpc52xx_ds_sram:
|
||||
/* put SDRAM into self-refresh */
|
||||
lwz r8, 0x4(r4) /* sdram->ctrl */
|
||||
|
||||
oris r8, r8, 0x8000 /* mode_en */
|
||||
stw r8, 0x4(r4)
|
||||
sync
|
||||
|
||||
ori r8, r8, 0x0002 /* soft_pre */
|
||||
stw r8, 0x4(r4)
|
||||
sync
|
||||
xori r8, r8, 0x0002
|
||||
|
||||
xoris r8, r8, 0x8000 /* !mode_en */
|
||||
stw r8, 0x4(r4)
|
||||
sync
|
||||
|
||||
oris r8, r8, 0x5000
|
||||
xoris r8, r8, 0x4000 /* ref_en !cke */
|
||||
stw r8, 0x4(r4)
|
||||
sync
|
||||
|
||||
/* disable SDRAM clock */
|
||||
lwz r8, 0x14(r5) /* cdm->clkenable */
|
||||
ori r8, r8, 0x0008
|
||||
xori r8, r8, 0x0008
|
||||
stw r8, 0x14(r5)
|
||||
sync
|
||||
|
||||
|
||||
/* put mpc5200 to sleep */
|
||||
mfmsr r10
|
||||
oris r10, r10, 0x0004 /* POW = 1 */
|
||||
sync; isync;
|
||||
mtmsr r10
|
||||
sync; isync;
|
||||
|
||||
|
||||
/* enable clock */
|
||||
lwz r8, 0x14(r5)
|
||||
ori r8, r8, 0x0008
|
||||
stw r8, 0x14(r5)
|
||||
sync
|
||||
|
||||
/* get ram out of self-refresh */
|
||||
lwz r8, 0x4(r4)
|
||||
oris r8, r8, 0x5000 /* cke ref_en */
|
||||
stw r8, 0x4(r4)
|
||||
sync
|
||||
|
||||
blr
|
||||
_GLOBAL(mpc52xx_ds_sram_size)
|
||||
mpc52xx_ds_sram_size:
|
||||
.long $-mpc52xx_ds_sram
|
||||
|
||||
|
||||
/* ### interrupt handler for wakeup from deep-sleep ### */
|
||||
_GLOBAL(mpc52xx_ds_cached)
|
||||
mpc52xx_ds_cached:
|
||||
mtspr SPRN_SPRG0, r7
|
||||
mtspr SPRN_SPRG1, r8
|
||||
|
||||
/* disable emulated interrupt */
|
||||
mfspr r7, 311 /* MBAR */
|
||||
addi r7, r7, 0x540 /* intr->main_emul */
|
||||
li r8, 0
|
||||
stw r8, 0(r7)
|
||||
sync
|
||||
dcbf 0, r7
|
||||
|
||||
/* acknowledge wakeup, so CCS releases power pown */
|
||||
mfspr r7, 311 /* MBAR */
|
||||
addi r7, r7, 0x524 /* intr->enc_status */
|
||||
lwz r8, 0(r7)
|
||||
ori r8, r8, 0x0400
|
||||
stw r8, 0(r7)
|
||||
sync
|
||||
dcbf 0, r7
|
||||
|
||||
/* flag - we handled the interrupt */
|
||||
li r10, 1
|
||||
|
||||
mfspr r8, SPRN_SPRG1
|
||||
mfspr r7, SPRN_SPRG0
|
||||
|
||||
rfi
|
||||
_GLOBAL(mpc52xx_ds_cached_size)
|
||||
mpc52xx_ds_cached_size:
|
||||
.long $-mpc52xx_ds_cached
|
@ -111,6 +111,7 @@ static struct of_device_id mpc832x_ids[] = {
|
||||
{ .type = "soc", },
|
||||
{ .compatible = "soc", },
|
||||
{ .type = "qe", },
|
||||
{ .type = "mdio", },
|
||||
{},
|
||||
};
|
||||
|
||||
|
@ -73,6 +73,7 @@ static struct of_device_id mpc832x_ids[] = {
|
||||
{ .type = "soc", },
|
||||
{ .compatible = "soc", },
|
||||
{ .type = "qe", },
|
||||
{ .type = "mdio", },
|
||||
{},
|
||||
};
|
||||
|
||||
|
@ -118,6 +118,7 @@ static struct of_device_id mpc836x_ids[] = {
|
||||
{ .type = "soc", },
|
||||
{ .compatible = "soc", },
|
||||
{ .type = "qe", },
|
||||
{ .type = "mdio", },
|
||||
{},
|
||||
};
|
||||
|
||||
|
@ -84,7 +84,7 @@ void __init mpc8544_ds_pic_init(void)
|
||||
#ifdef CONFIG_PPC_I8259
|
||||
/* Initialize the i8259 controller */
|
||||
for_each_node_by_type(np, "interrupt-controller")
|
||||
if (device_is_compatible(np, "chrp,iic")) {
|
||||
if (of_device_is_compatible(np, "chrp,iic")) {
|
||||
cascade_node = np;
|
||||
break;
|
||||
}
|
||||
|
@ -197,7 +197,7 @@ static void __init mpc85xx_cds_pic_init(void)
|
||||
#ifdef CONFIG_PPC_I8259
|
||||
/* Initialize the i8259 controller */
|
||||
for_each_node_by_type(np, "interrupt-controller")
|
||||
if (device_is_compatible(np, "chrp,iic")) {
|
||||
if (of_device_is_compatible(np, "chrp,iic")) {
|
||||
cascade_node = np;
|
||||
break;
|
||||
}
|
||||
|
@ -147,6 +147,7 @@ static struct of_device_id mpc85xx_ids[] = {
|
||||
{ .type = "soc", },
|
||||
{ .compatible = "soc", },
|
||||
{ .type = "qe", },
|
||||
{ .type = "mdio", },
|
||||
{},
|
||||
};
|
||||
|
||||
|
@ -102,7 +102,7 @@ mpc86xx_hpcn_init_irq(void)
|
||||
#ifdef CONFIG_PCI
|
||||
/* Initialize i8259 controller */
|
||||
for_each_node_by_type(np, "interrupt-controller")
|
||||
if (device_is_compatible(np, "chrp,iic")) {
|
||||
if (of_device_is_compatible(np, "chrp,iic")) {
|
||||
cascade_node = np;
|
||||
break;
|
||||
}
|
||||
|
@ -42,6 +42,7 @@ source "arch/powerpc/platforms/83xx/Kconfig"
|
||||
source "arch/powerpc/platforms/85xx/Kconfig"
|
||||
source "arch/powerpc/platforms/86xx/Kconfig"
|
||||
source "arch/powerpc/platforms/embedded6xx/Kconfig"
|
||||
source "arch/powerpc/platforms/44x/Kconfig"
|
||||
#source "arch/powerpc/platforms/4xx/Kconfig
|
||||
|
||||
config PPC_NATIVE
|
||||
|
@ -6,7 +6,8 @@ obj-$(CONFIG_PPC_PMAC) += powermac/
|
||||
endif
|
||||
endif
|
||||
obj-$(CONFIG_PPC_CHRP) += chrp/
|
||||
obj-$(CONFIG_4xx) += 4xx/
|
||||
#obj-$(CONFIG_4xx) += 4xx/
|
||||
obj-$(CONFIG_44x) += 44x/
|
||||
obj-$(CONFIG_PPC_MPC52xx) += 52xx/
|
||||
obj-$(CONFIG_PPC_8xx) += 8xx/
|
||||
obj-$(CONFIG_PPC_82xx) += 82xx/
|
||||
|
@ -227,7 +227,7 @@ void iic_request_IPIs(void)
|
||||
|
||||
static int iic_host_match(struct irq_host *h, struct device_node *node)
|
||||
{
|
||||
return device_is_compatible(node,
|
||||
return of_device_is_compatible(node,
|
||||
"IBM,CBEA-Internal-Interrupt-Controller");
|
||||
}
|
||||
|
||||
@ -256,7 +256,7 @@ static int iic_host_xlate(struct irq_host *h, struct device_node *ct,
|
||||
unsigned int node, ext, unit, class;
|
||||
const u32 *val;
|
||||
|
||||
if (!device_is_compatible(ct,
|
||||
if (!of_device_is_compatible(ct,
|
||||
"IBM,CBEA-Internal-Interrupt-Controller"))
|
||||
return -ENODEV;
|
||||
if (intsize != 1)
|
||||
@ -324,7 +324,7 @@ static int __init setup_iic(void)
|
||||
|
||||
for (dn = NULL;
|
||||
(dn = of_find_node_by_name(dn,"interrupt-controller")) != NULL;) {
|
||||
if (!device_is_compatible(dn,
|
||||
if (!of_device_is_compatible(dn,
|
||||
"IBM,CBEA-Internal-Interrupt-Controller"))
|
||||
continue;
|
||||
np = of_get_property(dn, "ibm,interrupt-server-ranges", NULL);
|
||||
|
@ -112,7 +112,7 @@ static void __init mpic_init_IRQ(void)
|
||||
|
||||
for (dn = NULL;
|
||||
(dn = of_find_node_by_name(dn, "interrupt-controller"));) {
|
||||
if (!device_is_compatible(dn, "CBEA,platform-open-pic"))
|
||||
if (!of_device_is_compatible(dn, "CBEA,platform-open-pic"))
|
||||
continue;
|
||||
|
||||
/* The MPIC driver will get everything it needs from the
|
||||
|
@ -358,12 +358,12 @@ void __init spider_init_IRQ(void)
|
||||
*/
|
||||
for (dn = NULL;
|
||||
(dn = of_find_node_by_name(dn, "interrupt-controller"));) {
|
||||
if (device_is_compatible(dn, "CBEA,platform-spider-pic")) {
|
||||
if (of_device_is_compatible(dn, "CBEA,platform-spider-pic")) {
|
||||
if (of_address_to_resource(dn, 0, &r)) {
|
||||
printk(KERN_WARNING "spider-pic: Failed\n");
|
||||
continue;
|
||||
}
|
||||
} else if (device_is_compatible(dn, "sti,platform-spider-pic")
|
||||
} else if (of_device_is_compatible(dn, "sti,platform-spider-pic")
|
||||
&& (chip < 2)) {
|
||||
static long hard_coded_pics[] =
|
||||
{ 0x24000008000ul, 0x34000008000ul};
|
||||
|
@ -267,7 +267,7 @@ chrp_find_bridges(void)
|
||||
model = of_get_property(dev, "model", NULL);
|
||||
if (model == NULL)
|
||||
model = "<none>";
|
||||
if (device_is_compatible(dev, "IBM,python")) {
|
||||
if (of_device_is_compatible(dev, "IBM,python")) {
|
||||
setup_python(hose, dev);
|
||||
} else if (is_mot
|
||||
|| strncmp(model, "Motorola, Grackle", 17) == 0) {
|
||||
|
@ -448,7 +448,7 @@ static void __init chrp_find_8259(void)
|
||||
|
||||
/* Look for cascade */
|
||||
for_each_node_by_type(np, "interrupt-controller")
|
||||
if (device_is_compatible(np, "chrp,iic")) {
|
||||
if (of_device_is_compatible(np, "chrp,iic")) {
|
||||
pic = np;
|
||||
break;
|
||||
}
|
||||
|
@ -20,16 +20,24 @@ config MPC7448HPC2
|
||||
select TSI108_BRIDGE
|
||||
select DEFAULT_UIMAGE
|
||||
select PPC_UDBG_16550
|
||||
select MPIC
|
||||
select MPIC_WEIRD
|
||||
help
|
||||
Select MPC7448HPC2 if configuring for Freescale MPC7448HPC2 (Taiga)
|
||||
platform
|
||||
|
||||
config PPC_HOLLY
|
||||
bool "PPC750GX/CL with TSI10x bridge (Hickory/Holly)"
|
||||
select TSI108_BRIDGE
|
||||
select PPC_UDBG_16550
|
||||
help
|
||||
Select PPC_HOLLY if configuring for an IBM 750GX/CL Eval
|
||||
Board with TSI108/9 bridge (Hickory/Holly)
|
||||
endchoice
|
||||
|
||||
config TSI108_BRIDGE
|
||||
bool
|
||||
depends on MPC7448HPC2
|
||||
depends on MPC7448HPC2 || PPC_HOLLY
|
||||
select MPIC
|
||||
select MPIC_WEIRD
|
||||
default y
|
||||
|
||||
config MPC10X_BRIDGE
|
||||
|
@ -3,3 +3,4 @@
|
||||
#
|
||||
obj-$(CONFIG_MPC7448HPC2) += mpc7448_hpc2.o
|
||||
obj-$(CONFIG_LINKSTATION) += linkstation.o ls_uart.o
|
||||
obj-$(CONFIG_PPC_HOLLY) += holly.o
|
||||
|
317
arch/powerpc/platforms/embedded6xx/holly.c
Normal file
317
arch/powerpc/platforms/embedded6xx/holly.c
Normal file
@ -0,0 +1,317 @@
|
||||
/*
|
||||
* Board setup routines for the IBM 750GX/CL platform w/ TSI10x bridge
|
||||
*
|
||||
* Copyright 2007 IBM Corporation
|
||||
*
|
||||
* Stephen Winiecki <stevewin@us.ibm.com>
|
||||
* Josh Boyer <jwboyer@linux.vnet.ibm.com>
|
||||
*
|
||||
* Based on code from mpc7448_hpc2.c
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* version 2 as published by the Free Software Foundation.
|
||||
*/
|
||||
|
||||
#include <linux/stddef.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/pci.h>
|
||||
#include <linux/kdev_t.h>
|
||||
#include <linux/console.h>
|
||||
#include <linux/delay.h>
|
||||
#include <linux/irq.h>
|
||||
#include <linux/ide.h>
|
||||
#include <linux/seq_file.h>
|
||||
#include <linux/root_dev.h>
|
||||
#include <linux/serial.h>
|
||||
#include <linux/tty.h>
|
||||
#include <linux/serial_core.h>
|
||||
|
||||
#include <asm/system.h>
|
||||
#include <asm/time.h>
|
||||
#include <asm/machdep.h>
|
||||
#include <asm/prom.h>
|
||||
#include <asm/udbg.h>
|
||||
#include <asm/tsi108.h>
|
||||
#include <asm/pci-bridge.h>
|
||||
#include <asm/reg.h>
|
||||
#include <mm/mmu_decl.h>
|
||||
#include <asm/tsi108_irq.h>
|
||||
#include <asm/tsi108_pci.h>
|
||||
#include <asm/mpic.h>
|
||||
#include <asm/of_platform.h>
|
||||
|
||||
#undef DEBUG
|
||||
|
||||
#define HOLLY_PCI_CFG_PHYS 0x7c000000
|
||||
|
||||
int holly_exclude_device(u_char bus, u_char devfn)
|
||||
{
|
||||
if (bus == 0 && PCI_SLOT(devfn) == 0)
|
||||
return PCIBIOS_DEVICE_NOT_FOUND;
|
||||
else
|
||||
return PCIBIOS_SUCCESSFUL;
|
||||
}
|
||||
|
||||
static void holly_remap_bridge(void)
|
||||
{
|
||||
u32 lut_val, lut_addr;
|
||||
int i;
|
||||
|
||||
printk(KERN_INFO "Remapping PCI bridge\n");
|
||||
|
||||
/* Re-init the PCI bridge and LUT registers to have mappings that don't
|
||||
* rely on PIBS
|
||||
*/
|
||||
lut_addr = 0x900;
|
||||
for (i = 0; i < 31; i++) {
|
||||
tsi108_write_reg(TSI108_PB_OFFSET + lut_addr, 0x00000201);
|
||||
lut_addr += 4;
|
||||
tsi108_write_reg(TSI108_PB_OFFSET + lut_addr, 0x0);
|
||||
lut_addr += 4;
|
||||
}
|
||||
|
||||
/* Reserve the last LUT entry for PCI I/O space */
|
||||
tsi108_write_reg(TSI108_PB_OFFSET + lut_addr, 0x00000241);
|
||||
lut_addr += 4;
|
||||
tsi108_write_reg(TSI108_PB_OFFSET + lut_addr, 0x0);
|
||||
|
||||
/* Map PCI I/O space */
|
||||
tsi108_write_reg(TSI108_PCI_PFAB_IO_UPPER, 0x0);
|
||||
tsi108_write_reg(TSI108_PCI_PFAB_IO, 0x1);
|
||||
|
||||
/* Map PCI CFG space */
|
||||
tsi108_write_reg(TSI108_PCI_PFAB_BAR0_UPPER, 0x0);
|
||||
tsi108_write_reg(TSI108_PCI_PFAB_BAR0, 0x7c000000 | 0x01);
|
||||
|
||||
/* We don't need MEM32 and PRM remapping so disable them */
|
||||
tsi108_write_reg(TSI108_PCI_PFAB_MEM32, 0x0);
|
||||
tsi108_write_reg(TSI108_PCI_PFAB_PFM3, 0x0);
|
||||
tsi108_write_reg(TSI108_PCI_PFAB_PFM4, 0x0);
|
||||
|
||||
/* Set P2O_BAR0 */
|
||||
tsi108_write_reg(TSI108_PCI_P2O_BAR0_UPPER, 0x0);
|
||||
tsi108_write_reg(TSI108_PCI_P2O_BAR0, 0xc0000000);
|
||||
|
||||
/* Init the PCI LUTs to do no remapping */
|
||||
lut_addr = 0x500;
|
||||
lut_val = 0x00000002;
|
||||
|
||||
for (i = 0; i < 32; i++) {
|
||||
tsi108_write_reg(TSI108_PCI_OFFSET + lut_addr, lut_val);
|
||||
lut_addr += 4;
|
||||
tsi108_write_reg(TSI108_PCI_OFFSET + lut_addr, 0x40000000);
|
||||
lut_addr += 4;
|
||||
lut_val += 0x02000000;
|
||||
}
|
||||
tsi108_write_reg(TSI108_PCI_P2O_PAGE_SIZES, 0x00007900);
|
||||
|
||||
/* Set 64-bit PCI bus address for system memory */
|
||||
tsi108_write_reg(TSI108_PCI_P2O_BAR2_UPPER, 0x0);
|
||||
tsi108_write_reg(TSI108_PCI_P2O_BAR2, 0x0);
|
||||
}
|
||||
|
||||
static void __init holly_setup_arch(void)
|
||||
{
|
||||
struct device_node *cpu;
|
||||
struct device_node *np;
|
||||
|
||||
if (ppc_md.progress)
|
||||
ppc_md.progress("holly_setup_arch():set_bridge", 0);
|
||||
|
||||
cpu = of_find_node_by_type(NULL, "cpu");
|
||||
if (cpu) {
|
||||
const unsigned int *fp;
|
||||
|
||||
fp = of_get_property(cpu, "clock-frequency", NULL);
|
||||
if (fp)
|
||||
loops_per_jiffy = *fp / HZ;
|
||||
else
|
||||
loops_per_jiffy = 50000000 / HZ;
|
||||
of_node_put(cpu);
|
||||
}
|
||||
tsi108_csr_vir_base = get_vir_csrbase();
|
||||
|
||||
/* setup PCI host bridge */
|
||||
holly_remap_bridge();
|
||||
|
||||
np = of_find_node_by_type(NULL, "pci");
|
||||
if (np)
|
||||
tsi108_setup_pci(np, HOLLY_PCI_CFG_PHYS, 1);
|
||||
|
||||
ppc_md.pci_exclude_device = holly_exclude_device;
|
||||
if (ppc_md.progress)
|
||||
ppc_md.progress("tsi108: resources set", 0x100);
|
||||
|
||||
printk(KERN_INFO "PPC750GX/CL Platform\n");
|
||||
}
|
||||
|
||||
/*
|
||||
* Interrupt setup and service. Interrrupts on the holly come
|
||||
* from the four external INT pins, PCI interrupts are routed via
|
||||
* PCI interrupt control registers, it generates internal IRQ23
|
||||
*
|
||||
* Interrupt routing on the Holly Board:
|
||||
* TSI108:PB_INT[0] -> CPU0:INT#
|
||||
* TSI108:PB_INT[1] -> CPU0:MCP#
|
||||
* TSI108:PB_INT[2] -> N/C
|
||||
* TSI108:PB_INT[3] -> N/C
|
||||
*/
|
||||
static void __init holly_init_IRQ(void)
|
||||
{
|
||||
struct mpic *mpic;
|
||||
phys_addr_t mpic_paddr = 0;
|
||||
struct device_node *tsi_pic;
|
||||
#ifdef CONFIG_PCI
|
||||
unsigned int cascade_pci_irq;
|
||||
struct device_node *tsi_pci;
|
||||
struct device_node *cascade_node = NULL;
|
||||
#endif
|
||||
|
||||
tsi_pic = of_find_node_by_type(NULL, "open-pic");
|
||||
if (tsi_pic) {
|
||||
unsigned int size;
|
||||
const void *prop = of_get_property(tsi_pic, "reg", &size);
|
||||
mpic_paddr = of_translate_address(tsi_pic, prop);
|
||||
}
|
||||
|
||||
if (mpic_paddr == 0) {
|
||||
printk(KERN_ERR "%s: No tsi108 PIC found !\n", __func__);
|
||||
return;
|
||||
}
|
||||
|
||||
pr_debug("%s: tsi108 pic phys_addr = 0x%x\n", __func__, (u32) mpic_paddr);
|
||||
|
||||
mpic = mpic_alloc(tsi_pic, mpic_paddr,
|
||||
MPIC_PRIMARY | MPIC_BIG_ENDIAN | MPIC_WANTS_RESET |
|
||||
MPIC_SPV_EOI | MPIC_NO_PTHROU_DIS | MPIC_REGSET_TSI108,
|
||||
24,
|
||||
NR_IRQS-4, /* num_sources used */
|
||||
"Tsi108_PIC");
|
||||
|
||||
BUG_ON(mpic == NULL);
|
||||
|
||||
mpic_assign_isu(mpic, 0, mpic_paddr + 0x100);
|
||||
|
||||
mpic_init(mpic);
|
||||
|
||||
#ifdef CONFIG_PCI
|
||||
tsi_pci = of_find_node_by_type(NULL, "pci");
|
||||
if (tsi_pci == NULL) {
|
||||
printk(KERN_ERR "%s: No tsi108 pci node found !\n", __func__);
|
||||
return;
|
||||
}
|
||||
|
||||
cascade_node = of_find_node_by_type(NULL, "pic-router");
|
||||
if (cascade_node == NULL) {
|
||||
printk(KERN_ERR "%s: No tsi108 pci cascade node found !\n", __func__);
|
||||
return;
|
||||
}
|
||||
|
||||
cascade_pci_irq = irq_of_parse_and_map(tsi_pci, 0);
|
||||
pr_debug("%s: tsi108 cascade_pci_irq = 0x%x\n", __func__, (u32) cascade_pci_irq);
|
||||
tsi108_pci_int_init(cascade_node);
|
||||
set_irq_data(cascade_pci_irq, mpic);
|
||||
set_irq_chained_handler(cascade_pci_irq, tsi108_irq_cascade);
|
||||
#endif
|
||||
/* Configure MPIC outputs to CPU0 */
|
||||
tsi108_write_reg(TSI108_MPIC_OFFSET + 0x30c, 0);
|
||||
of_node_put(tsi_pic);
|
||||
}
|
||||
|
||||
void holly_show_cpuinfo(struct seq_file *m)
|
||||
{
|
||||
seq_printf(m, "vendor\t\t: IBM\n");
|
||||
seq_printf(m, "machine\t\t: PPC750 GX/CL\n");
|
||||
}
|
||||
|
||||
void holly_restart(char *cmd)
|
||||
{
|
||||
__be32 __iomem *ocn_bar1 = NULL;
|
||||
unsigned long bar;
|
||||
struct device_node *bridge = NULL;
|
||||
const void *prop;
|
||||
int size;
|
||||
phys_addr_t addr = 0xc0000000;
|
||||
|
||||
local_irq_disable();
|
||||
|
||||
bridge = of_find_node_by_type(NULL, "tsi-bridge");
|
||||
if (bridge) {
|
||||
prop = of_get_property(bridge, "reg", &size);
|
||||
addr = of_translate_address(bridge, prop);
|
||||
}
|
||||
addr += (TSI108_PB_OFFSET + 0x414);
|
||||
|
||||
ocn_bar1 = ioremap(addr, 0x4);
|
||||
|
||||
/* Turn on the BOOT bit so the addresses are correctly
|
||||
* routed to the HLP interface */
|
||||
bar = ioread32be(ocn_bar1);
|
||||
bar |= 2;
|
||||
iowrite32be(bar, ocn_bar1);
|
||||
iosync();
|
||||
|
||||
/* Set SRR0 to the reset vector and turn on MSR_IP */
|
||||
mtspr(SPRN_SRR0, 0xfff00100);
|
||||
mtspr(SPRN_SRR1, MSR_IP);
|
||||
|
||||
/* Do an rfi to jump back to firmware. Somewhat evil,
|
||||
* but it works
|
||||
*/
|
||||
__asm__ __volatile__("rfi" : : : "memory");
|
||||
|
||||
/* Spin until reset happens. Shouldn't really get here */
|
||||
for (;;) ;
|
||||
}
|
||||
|
||||
void holly_power_off(void)
|
||||
{
|
||||
local_irq_disable();
|
||||
/* No way to shut power off with software */
|
||||
for (;;) ;
|
||||
}
|
||||
|
||||
void holly_halt(void)
|
||||
{
|
||||
holly_power_off();
|
||||
}
|
||||
|
||||
/*
|
||||
* Called very early, device-tree isn't unflattened
|
||||
*/
|
||||
static int __init holly_probe(void)
|
||||
{
|
||||
unsigned long root = of_get_flat_dt_root();
|
||||
|
||||
if (!of_flat_dt_is_compatible(root, "ibm,holly"))
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int ppc750_machine_check_exception(struct pt_regs *regs)
|
||||
{
|
||||
const struct exception_table_entry *entry;
|
||||
|
||||
/* Are we prepared to handle this fault */
|
||||
if ((entry = search_exception_tables(regs->nip)) != NULL) {
|
||||
tsi108_clear_pci_cfg_error();
|
||||
regs->msr |= MSR_RI;
|
||||
regs->nip = entry->fixup;
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
define_machine(holly){
|
||||
.name = "PPC750 GX/CL TSI",
|
||||
.probe = holly_probe,
|
||||
.setup_arch = holly_setup_arch,
|
||||
.init_IRQ = holly_init_IRQ,
|
||||
.show_cpuinfo = holly_show_cpuinfo,
|
||||
.get_irq = mpic_get_irq,
|
||||
.restart = holly_restart,
|
||||
.calibrate_decr = generic_calibrate_decr,
|
||||
.machine_check_exception = ppc750_machine_check_exception,
|
||||
.progress = udbg_progress,
|
||||
};
|
@ -41,6 +41,7 @@
|
||||
#include <asm/reg.h>
|
||||
#include <mm/mmu_decl.h>
|
||||
#include "mpc7448_hpc2.h"
|
||||
#include <asm/tsi108_pci.h>
|
||||
#include <asm/tsi108_irq.h>
|
||||
#include <asm/mpic.h>
|
||||
|
||||
@ -51,16 +52,15 @@
|
||||
#define DBG(fmt...) do { } while(0)
|
||||
#endif
|
||||
|
||||
#define MPC7448HPC2_PCI_CFG_PHYS 0xfb000000
|
||||
|
||||
#ifndef CONFIG_PCI
|
||||
isa_io_base = MPC7448_HPC2_ISA_IO_BASE;
|
||||
isa_mem_base = MPC7448_HPC2_ISA_MEM_BASE;
|
||||
pci_dram_offset = MPC7448_HPC2_PCI_MEM_OFFSET;
|
||||
#endif
|
||||
|
||||
extern int tsi108_setup_pci(struct device_node *dev);
|
||||
extern void _nmask_and_or_msr(unsigned long nmask, unsigned long or_val);
|
||||
extern void tsi108_pci_int_init(struct device_node *node);
|
||||
extern void tsi108_irq_cascade(unsigned int irq, struct irq_desc *desc);
|
||||
|
||||
int mpc7448_hpc2_exclude_device(u_char bus, u_char devfn)
|
||||
{
|
||||
@ -72,28 +72,16 @@ int mpc7448_hpc2_exclude_device(u_char bus, u_char devfn)
|
||||
|
||||
static void __init mpc7448_hpc2_setup_arch(void)
|
||||
{
|
||||
struct device_node *cpu;
|
||||
struct device_node *np;
|
||||
if (ppc_md.progress)
|
||||
ppc_md.progress("mpc7448_hpc2_setup_arch():set_bridge", 0);
|
||||
|
||||
cpu = of_find_node_by_type(NULL, "cpu");
|
||||
if (cpu != 0) {
|
||||
const unsigned int *fp;
|
||||
|
||||
fp = of_get_property(cpu, "clock-frequency", NULL);
|
||||
if (fp != 0)
|
||||
loops_per_jiffy = *fp / HZ;
|
||||
else
|
||||
loops_per_jiffy = 50000000 / HZ;
|
||||
of_node_put(cpu);
|
||||
}
|
||||
tsi108_csr_vir_base = get_vir_csrbase();
|
||||
|
||||
/* setup PCI host bridge */
|
||||
#ifdef CONFIG_PCI
|
||||
for (np = NULL; (np = of_find_node_by_type(np, "pci")) != NULL;)
|
||||
tsi108_setup_pci(np);
|
||||
tsi108_setup_pci(np, MPC7448HPC2_PCI_CFG_PHYS, 0);
|
||||
|
||||
ppc_md.pci_exclude_device = mpc7448_hpc2_exclude_device;
|
||||
if (ppc_md.progress)
|
||||
@ -222,7 +210,6 @@ static int __init mpc7448_hpc2_probe(void)
|
||||
|
||||
static int mpc7448_machine_check_exception(struct pt_regs *regs)
|
||||
{
|
||||
extern void tsi108_clear_pci_cfg_error(void);
|
||||
const struct exception_table_entry *entry;
|
||||
|
||||
/* Are we prepared to handle this fault */
|
||||
|
@ -467,15 +467,15 @@ static int __init add_bridge(struct device_node *dev)
|
||||
hose->last_busno = bus_range ? bus_range[1] : 0xff;
|
||||
|
||||
disp_name = NULL;
|
||||
if (device_is_compatible(dev, "u3-agp")) {
|
||||
if (of_device_is_compatible(dev, "u3-agp")) {
|
||||
setup_u3_agp(hose);
|
||||
disp_name = "U3-AGP";
|
||||
primary = 0;
|
||||
} else if (device_is_compatible(dev, "u3-ht")) {
|
||||
} else if (of_device_is_compatible(dev, "u3-ht")) {
|
||||
setup_u3_ht(hose);
|
||||
disp_name = "U3-HT";
|
||||
primary = 1;
|
||||
} else if (device_is_compatible(dev, "u4-pcie")) {
|
||||
} else if (of_device_is_compatible(dev, "u4-pcie")) {
|
||||
setup_u4_pcie(hose);
|
||||
disp_name = "U4-PCIE";
|
||||
primary = 0;
|
||||
@ -556,12 +556,12 @@ void __init maple_pci_init(void)
|
||||
continue;
|
||||
if (strcmp(np->type, "pci") && strcmp(np->type, "ht"))
|
||||
continue;
|
||||
if ((device_is_compatible(np, "u4-pcie") ||
|
||||
device_is_compatible(np, "u3-agp")) &&
|
||||
if ((of_device_is_compatible(np, "u4-pcie") ||
|
||||
of_device_is_compatible(np, "u3-agp")) &&
|
||||
add_bridge(np) == 0)
|
||||
of_node_get(np);
|
||||
|
||||
if (device_is_compatible(np, "u3-ht")) {
|
||||
if (of_device_is_compatible(np, "u3-ht")) {
|
||||
of_node_get(np);
|
||||
ht = np;
|
||||
}
|
||||
|
@ -231,7 +231,7 @@ static void __init maple_init_IRQ(void)
|
||||
*/
|
||||
|
||||
for_each_node_by_type(np, "interrupt-controller")
|
||||
if (device_is_compatible(np, "open-pic")) {
|
||||
if (of_device_is_compatible(np, "open-pic")) {
|
||||
mpic_node = np;
|
||||
break;
|
||||
}
|
||||
|
@ -31,6 +31,7 @@
|
||||
#include <asm/hw_irq.h>
|
||||
#include <asm/io.h>
|
||||
#include <asm/prom.h>
|
||||
#include <asm/time.h>
|
||||
|
||||
#define SDCASR_REG 0x0100
|
||||
#define SDCASR_REG_STRIDE 0x1000
|
||||
@ -204,6 +205,8 @@ static int pas_cpufreq_cpu_init(struct cpufreq_policy *policy)
|
||||
policy->cur = pas_freqs[cur_astate].frequency;
|
||||
policy->cpus = cpu_online_map;
|
||||
|
||||
ppc_proc_freq = policy->cur * 1000ul;
|
||||
|
||||
cpufreq_frequency_table_get_attr(pas_freqs, policy->cpu);
|
||||
|
||||
/* this ensures that policy->cpuinfo_min and policy->cpuinfo_max
|
||||
@ -270,6 +273,7 @@ static int pas_cpufreq_target(struct cpufreq_policy *policy,
|
||||
cpufreq_notify_transition(&freqs, CPUFREQ_POSTCHANGE);
|
||||
mutex_unlock(&pas_switch_mutex);
|
||||
|
||||
ppc_proc_freq = freqs.new * 1000ul;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -114,7 +114,7 @@ static __init void pas_init_IRQ(void)
|
||||
mpic_node = NULL;
|
||||
|
||||
for_each_node_by_type(np, "interrupt-controller")
|
||||
if (device_is_compatible(np, "open-pic")) {
|
||||
if (of_device_is_compatible(np, "open-pic")) {
|
||||
mpic_node = np;
|
||||
break;
|
||||
}
|
||||
@ -211,7 +211,10 @@ static struct of_device_id pasemi_bus_ids[] = {
|
||||
|
||||
static int __init pasemi_publish_devices(void)
|
||||
{
|
||||
/* Publish OF platform devices for southbridge IOs */
|
||||
if (!machine_is(pasemi))
|
||||
return 0;
|
||||
|
||||
/* Publish OF platform devices for SDC and other non-PCI devices */
|
||||
of_platform_bus_probe(NULL, pasemi_bus_ids, NULL);
|
||||
|
||||
return 0;
|
||||
|
@ -357,13 +357,13 @@ static unsigned int g5_cpufreq_get_speed(unsigned int cpu)
|
||||
|
||||
static int g5_cpufreq_cpu_init(struct cpufreq_policy *policy)
|
||||
{
|
||||
if (policy->cpu != 0)
|
||||
return -ENODEV;
|
||||
|
||||
policy->governor = CPUFREQ_DEFAULT_GOVERNOR;
|
||||
policy->cpuinfo.transition_latency = CPUFREQ_ETERNAL;
|
||||
policy->cur = g5_cpu_freqs[g5_query_freq()].frequency;
|
||||
policy->cpus = cpu_possible_map;
|
||||
/* secondary CPUs are tied to the primary one by the
|
||||
* cpufreq core if in the secondary policy we tell it that
|
||||
* it actually must be one policy together with all others. */
|
||||
policy->cpus = cpu_online_map;
|
||||
cpufreq_frequency_table_get_attr(g5_cpu_freqs, policy->cpu);
|
||||
|
||||
return cpufreq_frequency_table_cpuinfo(policy,
|
||||
|
@ -1418,7 +1418,7 @@ static long g5_eth_phy_reset(struct device_node *node, long param, long value)
|
||||
phy = of_get_next_child(node, NULL);
|
||||
if (!phy)
|
||||
return -ENODEV;
|
||||
need_reset = device_is_compatible(phy, "B5221");
|
||||
need_reset = of_device_is_compatible(phy, "B5221");
|
||||
of_node_put(phy);
|
||||
if (!need_reset)
|
||||
return 0;
|
||||
@ -2624,7 +2624,7 @@ static void __init probe_one_macio(const char *name, const char *compat, int typ
|
||||
for (node = NULL; (node = of_find_node_by_name(node, name)) != NULL;) {
|
||||
if (!compat)
|
||||
break;
|
||||
if (device_is_compatible(node, compat))
|
||||
if (of_device_is_compatible(node, compat))
|
||||
break;
|
||||
}
|
||||
if (!node)
|
||||
@ -2728,7 +2728,7 @@ initial_serial_shutdown(struct device_node *np)
|
||||
conn = of_get_property(np, "AAPL,connector", &len);
|
||||
if (conn && (strcmp(conn, "infrared") == 0))
|
||||
port_type = PMAC_SCC_IRDA;
|
||||
else if (device_is_compatible(np, "cobalt"))
|
||||
else if (of_device_is_compatible(np, "cobalt"))
|
||||
modem = 1;
|
||||
else if (slots && slots->count > 0) {
|
||||
if (strcmp(slots->name, "IrDA") == 0)
|
||||
@ -2787,7 +2787,7 @@ set_initial_features(void)
|
||||
*/
|
||||
np = of_find_node_by_name(NULL, "ethernet");
|
||||
while(np) {
|
||||
if (device_is_compatible(np, "K2-GMAC"))
|
||||
if (of_device_is_compatible(np, "K2-GMAC"))
|
||||
g5_gmac_enable(np, 0, 1);
|
||||
np = of_find_node_by_name(np, "ethernet");
|
||||
}
|
||||
@ -2799,7 +2799,7 @@ set_initial_features(void)
|
||||
*/
|
||||
np = of_find_node_by_name(NULL, "firewire");
|
||||
while(np) {
|
||||
if (device_is_compatible(np, "pci106b,5811")) {
|
||||
if (of_device_is_compatible(np, "pci106b,5811")) {
|
||||
macio_chips[0].flags |= MACIO_FLAG_FW_SUPPORTED;
|
||||
g5_fw_enable(np, 0, 1);
|
||||
}
|
||||
@ -2817,8 +2817,8 @@ set_initial_features(void)
|
||||
np = of_find_node_by_name(NULL, "ethernet");
|
||||
while(np) {
|
||||
if (np->parent
|
||||
&& device_is_compatible(np->parent, "uni-north")
|
||||
&& device_is_compatible(np, "gmac"))
|
||||
&& of_device_is_compatible(np->parent, "uni-north")
|
||||
&& of_device_is_compatible(np, "gmac"))
|
||||
core99_gmac_enable(np, 0, 1);
|
||||
np = of_find_node_by_name(np, "ethernet");
|
||||
}
|
||||
@ -2831,10 +2831,10 @@ set_initial_features(void)
|
||||
np = of_find_node_by_name(NULL, "firewire");
|
||||
while(np) {
|
||||
if (np->parent
|
||||
&& device_is_compatible(np->parent, "uni-north")
|
||||
&& (device_is_compatible(np, "pci106b,18") ||
|
||||
device_is_compatible(np, "pci106b,30") ||
|
||||
device_is_compatible(np, "pci11c1,5811"))) {
|
||||
&& of_device_is_compatible(np->parent, "uni-north")
|
||||
&& (of_device_is_compatible(np, "pci106b,18") ||
|
||||
of_device_is_compatible(np, "pci106b,30") ||
|
||||
of_device_is_compatible(np, "pci11c1,5811"))) {
|
||||
macio_chips[0].flags |= MACIO_FLAG_FW_SUPPORTED;
|
||||
core99_firewire_enable(np, 0, 1);
|
||||
}
|
||||
@ -2845,8 +2845,8 @@ set_initial_features(void)
|
||||
np = of_find_node_by_name(NULL, "ata-6");
|
||||
while(np) {
|
||||
if (np->parent
|
||||
&& device_is_compatible(np->parent, "uni-north")
|
||||
&& device_is_compatible(np, "kauai-ata")) {
|
||||
&& of_device_is_compatible(np->parent, "uni-north")
|
||||
&& of_device_is_compatible(np, "kauai-ata")) {
|
||||
core99_ata100_enable(np, 1);
|
||||
}
|
||||
np = of_find_node_by_name(np, "ata-6");
|
||||
|
@ -1207,7 +1207,7 @@ static void pmac_i2c_devscan(void (*callback)(struct device_node *dev,
|
||||
if (strcmp(np->name, p->name))
|
||||
continue;
|
||||
if (p->compatible &&
|
||||
!device_is_compatible(np, p->compatible))
|
||||
!of_device_is_compatible(np, p->compatible))
|
||||
continue;
|
||||
if (p->quirks & pmac_i2c_quirk_skip)
|
||||
break;
|
||||
|
@ -553,7 +553,7 @@ static int __init core99_nvram_setup(struct device_node *dp, unsigned long addr)
|
||||
* identify the chip using flash id commands and base ourselves on
|
||||
* a list of known chips IDs
|
||||
*/
|
||||
if (device_is_compatible(dp, "amd-0137")) {
|
||||
if (of_device_is_compatible(dp, "amd-0137")) {
|
||||
core99_erase_bank = amd_erase_bank;
|
||||
core99_write_bank = amd_write_bank;
|
||||
} else {
|
||||
@ -588,7 +588,7 @@ int __init pmac_nvram_init(void)
|
||||
}
|
||||
}
|
||||
|
||||
is_core_99 = device_is_compatible(dp, "nvram,flash");
|
||||
is_core_99 = of_device_is_compatible(dp, "nvram,flash");
|
||||
if (is_core_99) {
|
||||
err = core99_nvram_setup(dp, r1.start);
|
||||
goto bail;
|
||||
|
@ -934,15 +934,15 @@ static int __init add_bridge(struct device_node *dev)
|
||||
|
||||
/* 64 bits only bridges */
|
||||
#ifdef CONFIG_PPC64
|
||||
if (device_is_compatible(dev, "u3-agp")) {
|
||||
if (of_device_is_compatible(dev, "u3-agp")) {
|
||||
setup_u3_agp(hose);
|
||||
disp_name = "U3-AGP";
|
||||
primary = 0;
|
||||
} else if (device_is_compatible(dev, "u3-ht")) {
|
||||
} else if (of_device_is_compatible(dev, "u3-ht")) {
|
||||
setup_u3_ht(hose);
|
||||
disp_name = "U3-HT";
|
||||
primary = 1;
|
||||
} else if (device_is_compatible(dev, "u4-pcie")) {
|
||||
} else if (of_device_is_compatible(dev, "u4-pcie")) {
|
||||
setup_u4_pcie(hose);
|
||||
disp_name = "U4-PCIE";
|
||||
primary = 0;
|
||||
@ -953,7 +953,7 @@ static int __init add_bridge(struct device_node *dev)
|
||||
|
||||
/* 32 bits only bridges */
|
||||
#ifdef CONFIG_PPC32
|
||||
if (device_is_compatible(dev, "uni-north")) {
|
||||
if (of_device_is_compatible(dev, "uni-north")) {
|
||||
primary = setup_uninorth(hose, &rsrc);
|
||||
disp_name = "UniNorth";
|
||||
} else if (strcmp(dev->name, "pci") == 0) {
|
||||
@ -1129,21 +1129,21 @@ pmac_pci_enable_device_hook(struct pci_dev *dev, int initial)
|
||||
return 0;
|
||||
|
||||
uninorth_child = node->parent &&
|
||||
device_is_compatible(node->parent, "uni-north");
|
||||
of_device_is_compatible(node->parent, "uni-north");
|
||||
|
||||
/* Firewire & GMAC were disabled after PCI probe, the driver is
|
||||
* claiming them, we must re-enable them now.
|
||||
*/
|
||||
if (uninorth_child && !strcmp(node->name, "firewire") &&
|
||||
(device_is_compatible(node, "pci106b,18") ||
|
||||
device_is_compatible(node, "pci106b,30") ||
|
||||
device_is_compatible(node, "pci11c1,5811"))) {
|
||||
(of_device_is_compatible(node, "pci106b,18") ||
|
||||
of_device_is_compatible(node, "pci106b,30") ||
|
||||
of_device_is_compatible(node, "pci11c1,5811"))) {
|
||||
pmac_call_feature(PMAC_FTR_1394_CABLE_POWER, node, 0, 1);
|
||||
pmac_call_feature(PMAC_FTR_1394_ENABLE, node, 0, 1);
|
||||
updatecfg = 1;
|
||||
}
|
||||
if (uninorth_child && !strcmp(node->name, "ethernet") &&
|
||||
device_is_compatible(node, "gmac")) {
|
||||
of_device_is_compatible(node, "gmac")) {
|
||||
pmac_call_feature(PMAC_FTR_GMAC_ENABLE, node, 0, 1);
|
||||
updatecfg = 1;
|
||||
}
|
||||
@ -1203,18 +1203,18 @@ void __init pmac_pcibios_after_init(void)
|
||||
#endif /* CONFIG_BLK_DEV_IDE */
|
||||
|
||||
for_each_node_by_name(nd, "firewire") {
|
||||
if (nd->parent && (device_is_compatible(nd, "pci106b,18") ||
|
||||
device_is_compatible(nd, "pci106b,30") ||
|
||||
device_is_compatible(nd, "pci11c1,5811"))
|
||||
&& device_is_compatible(nd->parent, "uni-north")) {
|
||||
if (nd->parent && (of_device_is_compatible(nd, "pci106b,18") ||
|
||||
of_device_is_compatible(nd, "pci106b,30") ||
|
||||
of_device_is_compatible(nd, "pci11c1,5811"))
|
||||
&& of_device_is_compatible(nd->parent, "uni-north")) {
|
||||
pmac_call_feature(PMAC_FTR_1394_ENABLE, nd, 0, 0);
|
||||
pmac_call_feature(PMAC_FTR_1394_CABLE_POWER, nd, 0, 0);
|
||||
}
|
||||
}
|
||||
of_node_put(nd);
|
||||
for_each_node_by_name(nd, "ethernet") {
|
||||
if (nd->parent && device_is_compatible(nd, "gmac")
|
||||
&& device_is_compatible(nd->parent, "uni-north"))
|
||||
if (nd->parent && of_device_is_compatible(nd, "gmac")
|
||||
&& of_device_is_compatible(nd->parent, "uni-north"))
|
||||
pmac_call_feature(PMAC_FTR_GMAC_ENABLE, nd, 0, 0);
|
||||
}
|
||||
of_node_put(nd);
|
||||
|
@ -364,7 +364,7 @@ static void __init pmac_pic_probe_oldstyle(void)
|
||||
slave = of_find_node_by_name(master, "mac-io");
|
||||
|
||||
/* Check ordering of master & slave */
|
||||
if (device_is_compatible(master, "gatwick")) {
|
||||
if (of_device_is_compatible(master, "gatwick")) {
|
||||
struct device_node *tmp;
|
||||
BUG_ON(slave == NULL);
|
||||
tmp = master;
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user