]> bbs.cooldavid.org Git - net-next-2.6.git/commitdiff
Merge branch 'merge'
authorPaul Mackerras <paulus@samba.org>
Mon, 9 Jun 2008 02:19:41 +0000 (12:19 +1000)
committerPaul Mackerras <paulus@samba.org>
Mon, 9 Jun 2008 02:19:41 +0000 (12:19 +1000)
Conflicts:

arch/powerpc/sysdev/fsl_soc.c

134 files changed:
Documentation/powerpc/booting-without-of.txt
arch/powerpc/boot/Makefile
arch/powerpc/boot/cuboot-warp.c
arch/powerpc/boot/dts/asp834x-redboot.dts [new file with mode: 0644]
arch/powerpc/boot/dts/bamboo.dts
arch/powerpc/boot/dts/canyonlands.dts
arch/powerpc/boot/dts/ebony.dts
arch/powerpc/boot/dts/ep405.dts
arch/powerpc/boot/dts/glacier.dts
arch/powerpc/boot/dts/haleakala.dts
arch/powerpc/boot/dts/holly.dts
arch/powerpc/boot/dts/katmai.dts
arch/powerpc/boot/dts/kilauea.dts
arch/powerpc/boot/dts/ksi8560.dts
arch/powerpc/boot/dts/makalu.dts
arch/powerpc/boot/dts/mpc7448hpc2.dts
arch/powerpc/boot/dts/mpc8540ads.dts
arch/powerpc/boot/dts/mpc8541cds.dts
arch/powerpc/boot/dts/mpc8544ds.dts
arch/powerpc/boot/dts/mpc8548cds.dts
arch/powerpc/boot/dts/mpc8555cds.dts
arch/powerpc/boot/dts/mpc8560ads.dts
arch/powerpc/boot/dts/mpc8568mds.dts
arch/powerpc/boot/dts/mpc8572ds.dts
arch/powerpc/boot/dts/mpc8610_hpcd.dts
arch/powerpc/boot/dts/mpc8641_hpcn.dts
arch/powerpc/boot/dts/ps3.dts
arch/powerpc/boot/dts/rainier.dts
arch/powerpc/boot/dts/sbc8548.dts
arch/powerpc/boot/dts/sbc8560.dts
arch/powerpc/boot/dts/sequoia.dts
arch/powerpc/boot/dts/storcenter.dts
arch/powerpc/boot/dts/stx_gp3_8560.dts
arch/powerpc/boot/dts/taishan.dts
arch/powerpc/boot/dts/tqm8540.dts
arch/powerpc/boot/dts/tqm8541.dts
arch/powerpc/boot/dts/tqm8555.dts
arch/powerpc/boot/dts/tqm8560.dts
arch/powerpc/boot/dts/walnut.dts
arch/powerpc/boot/dts/warp.dts
arch/powerpc/boot/dts/yosemite.dts
arch/powerpc/boot/redboot-83xx.c [new file with mode: 0644]
arch/powerpc/boot/wrapper
arch/powerpc/configs/asp8347_defconfig [new file with mode: 0644]
arch/powerpc/kernel/asm-offsets.c
arch/powerpc/kernel/entry_32.S
arch/powerpc/kernel/head_40x.S
arch/powerpc/kernel/head_44x.S
arch/powerpc/kernel/head_booke.h
arch/powerpc/kernel/head_fsl_booke.S
arch/powerpc/kernel/irq.c
arch/powerpc/kernel/kprobes.c
arch/powerpc/kernel/lparcfg.c
arch/powerpc/kernel/machine_kexec_64.c
arch/powerpc/kernel/msi.c
arch/powerpc/kernel/of_device.c
arch/powerpc/kernel/rtas-proc.c
arch/powerpc/kernel/rtas.c
arch/powerpc/kernel/rtas_flash.c
arch/powerpc/kernel/rtas_pci.c
arch/powerpc/kernel/setup_32.c
arch/powerpc/kernel/signal.c
arch/powerpc/kernel/signal_32.c
arch/powerpc/kernel/smp.c
arch/powerpc/kernel/time.c
arch/powerpc/kernel/vdso64/vdso64.lds.S
arch/powerpc/mm/hash_utils_64.c
arch/powerpc/mm/init_32.c
arch/powerpc/mm/init_64.c
arch/powerpc/mm/stab.c
arch/powerpc/mm/tlb_64.c
arch/powerpc/platforms/44x/warp-nand.c
arch/powerpc/platforms/44x/warp.c
arch/powerpc/platforms/83xx/Kconfig
arch/powerpc/platforms/83xx/Makefile
arch/powerpc/platforms/83xx/asp834x.c [new file with mode: 0644]
arch/powerpc/platforms/85xx/mpc85xx_ds.c
arch/powerpc/platforms/86xx/mpc8610_hpcd.c
arch/powerpc/platforms/cell/axon_msi.c
arch/powerpc/platforms/chrp/setup.c
arch/powerpc/platforms/maple/time.c
arch/powerpc/platforms/powermac/pic.c
arch/powerpc/platforms/pseries/firmware.c
arch/powerpc/platforms/pseries/iommu.c
arch/powerpc/platforms/pseries/lpar.c
arch/powerpc/platforms/pseries/ras.c
arch/powerpc/platforms/pseries/rtasd.c
arch/powerpc/platforms/pseries/setup.c
arch/powerpc/sysdev/6xx-suspend.S [new file with mode: 0644]
arch/powerpc/sysdev/Makefile
arch/powerpc/sysdev/dcr.c
arch/powerpc/sysdev/fsl_msi.c [new file with mode: 0644]
arch/powerpc/sysdev/fsl_msi.h [new file with mode: 0644]
arch/powerpc/sysdev/fsl_pci.c
arch/powerpc/sysdev/fsl_soc.c
arch/powerpc/sysdev/mpic.c
arch/powerpc/sysdev/mpic_msi.c
arch/powerpc/sysdev/mpic_pasemi_msi.c
arch/powerpc/sysdev/mpic_u3msi.c
arch/powerpc/sysdev/mv64x60_dev.c
arch/powerpc/xmon/xmon.c
arch/ppc/kernel/entry.S
drivers/char/hvc_console.c
drivers/char/hvc_console.h
drivers/macintosh/macio_sysfs.c
drivers/net/Kconfig
drivers/net/Makefile
drivers/net/fec_8xx/Kconfig [deleted file]
drivers/net/fec_8xx/Makefile [deleted file]
drivers/net/fec_8xx/fec_8xx-netta.c [deleted file]
drivers/net/fec_8xx/fec_8xx.h [deleted file]
drivers/net/fec_8xx/fec_main.c [deleted file]
drivers/net/fec_8xx/fec_mii.c [deleted file]
drivers/of/device.c
drivers/of/gpio.c
drivers/of/platform.c
include/asm-powerpc/dcr-generic.h [new file with mode: 0644]
include/asm-powerpc/dcr-mmio.h
include/asm-powerpc/dcr-native.h
include/asm-powerpc/dcr.h
include/asm-powerpc/ioctl.h
include/asm-powerpc/irq.h
include/asm-powerpc/mmu-hash64.h
include/asm-powerpc/mpc6xx.h [new file with mode: 0644]
include/asm-powerpc/mpic.h
include/asm-powerpc/of_device.h
include/asm-powerpc/ppc_asm.h
include/asm-powerpc/ptrace.h
include/asm-powerpc/smp.h
include/asm-powerpc/system.h
include/asm-powerpc/thread_info.h
include/asm-powerpc/time.h
include/asm-powerpc/xmon.h
include/linux/of_device.h

index 1d2a772506cfa46e23acda9c3660369b72e1e85f..948f6417a40bf3cbe5fb956a4e7aa6979cae292c 100644 (file)
@@ -57,7 +57,10 @@ Table of Contents
       n) 4xx/Axon EMAC ethernet nodes
       o) Xilinx IP cores
       p) Freescale Synchronous Serial Interface
-         q) USB EHCI controllers
+      q) USB EHCI controllers
+      r) Freescale Display Interface Unit
+      s) Freescale on board FPGA
+      t) Freescael MSI interrupt controller
 
   VII - Marvell Discovery mv64[345]6x System Controller chips
     1) The /system-controller node
@@ -1360,14 +1363,11 @@ platforms are moved over to use the flattened-device-tree model.
 
        pic@40000 {
                linux,phandle = <40000>;
-               clock-frequency = <0>;
                interrupt-controller;
                #address-cells = <0>;
                reg = <40000 40000>;
-               built-in;
                compatible = "chrp,open-pic";
                device_type = "open-pic";
-               big-endian;
        };
 
 
@@ -2870,6 +2870,44 @@ platforms are moved over to use the flattened-device-tree model.
                reg = <0xe8000000 32>;
        };
 
+    t) Freescale MSI interrupt controller
+
+    Reguired properities:
+    - compatible : compatible list, contains 2 entries,
+      first is "fsl,CHIP-msi", where CHIP is the processor(mpc8610, mpc8572,
+      etc.) and the second is "fsl,mpic-msi" or "fsl,ipic-msi" depending on
+      the parent type.
+    - reg : should contain the address and the length of the shared message
+      interrupt register set.
+    - msi-available-ranges: use <start count> style section to define which
+      msi interrupt can be used in the 256 msi interrupts. This property is
+      optional, without this, all the 256 MSI interrupts can be used.
+    - interrupts : each one of the interrupts here is one entry per 32 MSIs,
+      and routed to the host interrupt controller. the interrupts should
+      be set as edge sensitive.
+    - interrupt-parent: the phandle for the interrupt controller
+      that services interrupts for this device. for 83xx cpu, the interrupts
+      are routed to IPIC, and for 85xx/86xx cpu the interrupts are routed
+      to MPIC.
+
+    Example
+       msi@41600 {
+               compatible = "fsl,mpc8610-msi", "fsl,mpic-msi";
+               reg = <0x41600 0x80>;
+               msi-available-ranges = <0 0x100>;
+               interrupts = <
+                       0xe0 0
+                       0xe1 0
+                       0xe2 0
+                       0xe3 0
+                       0xe4 0
+                       0xe5 0
+                       0xe6 0
+                       0xe7 0>;
+               interrupt-parent = <&mpic>;
+       };
+
+
 VII - Marvell Discovery mv64[345]6x System Controller chips
 ===========================================================
 
@@ -3622,14 +3660,11 @@ not necessary as they are usually the same as the root node.
 
                pic@40000 {
                        linux,phandle = <40000>;
-                       clock-frequency = <0>;
                        interrupt-controller;
                        #address-cells = <0>;
                        reg = <40000 40000>;
-                       built-in;
                        compatible = "chrp,open-pic";
                        device_type = "open-pic";
-                        big-endian;
                };
 
                i2c@3000 {
index d53b84e761a959401e3f587616b7b58264df6e84..c3585bed1970e453803e2b078fd45cace7416a16 100644 (file)
@@ -66,7 +66,7 @@ src-plat := of.c cuboot-52xx.c cuboot-824x.c cuboot-83xx.c cuboot-85xx.c holly.c
                fixed-head.S ep88xc.c ep405.c \
                cuboot-katmai.c cuboot-rainier.c redboot-8xx.c ep8248e.c \
                cuboot-warp.c cuboot-85xx-cpm2.c cuboot-yosemite.c simpleboot.c \
-               virtex405-head.S
+               virtex405-head.S redboot-83xx.c
 src-boot := $(src-wlib) $(src-plat) empty.c
 
 src-boot := $(addprefix $(obj)/, $(src-boot))
@@ -242,6 +242,7 @@ image-$(CONFIG_MPC834x_ITX)         += cuImage.mpc8349emitx \
                                           cuImage.mpc8349emitxgp
 image-$(CONFIG_MPC834x_MDS)            += cuImage.mpc834x_mds
 image-$(CONFIG_MPC836x_MDS)            += cuImage.mpc836x_mds
+image-$(CONFIG_ASP834x)                        += dtbImage.asp834x-redboot
 
 # Board ports in arch/powerpc/platform/85xx/Kconfig
 image-$(CONFIG_MPC8540_ADS)            += cuImage.mpc8540ads
index eb108a877492adad8771416e749655999111f7f4..21780210057d287ef9a46cc9e32fc5511074b2b4 100644 (file)
@@ -10,6 +10,7 @@
 #include "ops.h"
 #include "4xx.h"
 #include "cuboot.h"
+#include "stdio.h"
 
 #define TARGET_4xx
 #define TARGET_44x
 
 static bd_t bd;
 
-static void warp_fixups(void)
+static void warp_fixup_one_nor(u32 from, u32 to)
 {
-       unsigned long sysclk = 66000000;
+       void *devp;
+       char name[50];
+       u32 v[2];
+
+       sprintf(name, "/plb/opb/ebc/nor_flash@0,0/partition@%x", from);
+
+       devp = finddevice(name);
+       if (!devp)
+               return;
+
+       if (getprop(devp, "reg", v, sizeof(v)) == sizeof(v)) {
+               v[0] = to;
+               setprop(devp, "reg", v, sizeof(v));
+
+               printf("NOR 64M fixup %x -> %x\r\n", from, to);
+       }
+}
+
 
-       ibm440ep_fixup_clocks(sysclk, 11059200, 50000000);
+static void warp_fixups(void)
+{
+       ibm440ep_fixup_clocks(66000000, 11059200, 50000000);
        ibm4xx_sdram_fixup_memsize();
        ibm4xx_fixup_ebc_ranges("/plb/opb/ebc");
        dt_fixup_mac_address_by_alias("ethernet0", bd.bi_enetaddr);
+
+       /* Fixup for 64M flash on Rev A boards. */
+       if (bd.bi_flashsize == 0x4000000) {
+               void *devp;
+               u32 v[3];
+
+               devp = finddevice("/plb/opb/ebc/nor_flash@0,0");
+               if (!devp)
+                       return;
+
+               /* Fixup the size */
+               if (getprop(devp, "reg", v, sizeof(v)) == sizeof(v)) {
+                       v[2] = bd.bi_flashsize;
+                       setprop(devp, "reg", v, sizeof(v));
+               }
+
+               /* Fixup parition offsets */
+               warp_fixup_one_nor(0x300000, 0x3f00000);
+               warp_fixup_one_nor(0x340000, 0x3f40000);
+               warp_fixup_one_nor(0x380000, 0x3f80000);
+       }
 }
 
 
diff --git a/arch/powerpc/boot/dts/asp834x-redboot.dts b/arch/powerpc/boot/dts/asp834x-redboot.dts
new file mode 100644 (file)
index 0000000..972cf78
--- /dev/null
@@ -0,0 +1,247 @@
+/*
+ * Analogue & Micro ASP8347 Device Tree Source
+ *
+ * Copyright 2008 Codehermit
+ *
+ * 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.
+ */
+
+/dts-v1/;
+
+/ {
+       model = "Analogue & Micro ASP8347E";
+       compatible = "analogue-and-micro,asp8347e";
+       #address-cells = <1>;
+       #size-cells = <1>;
+
+       aliases {
+               ethernet0 = &enet0;
+               ethernet1 = &enet1;
+               serial0 = &serial0;
+               serial1 = &serial1;
+       };
+
+       cpus {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               PowerPC,8347@0 {
+                       device_type = "cpu";
+                       reg = <0x0>;
+                       d-cache-line-size = <32>;
+                       i-cache-line-size = <32>;
+                       d-cache-size = <32768>;
+                       i-cache-size = <32768>;
+                       timebase-frequency = <0>;       // from bootloader
+                       bus-frequency = <0>;            // from bootloader
+                       clock-frequency = <0>;          // from bootloader
+               };
+       };
+
+       memory {
+               device_type = "memory";
+               reg = <0x00000000 0x8000000>;   // 128MB at 0
+       };
+
+       localbus@ff005000 {
+               #address-cells = <2>;
+               #size-cells = <1>;
+               compatible = "fsl,mpc8347e-localbus",
+                            "fsl,pq2pro-localbus",
+                            "simple-bus";
+               reg = <0xff005000 0x1000>;
+               interrupts = <77 0x8>;
+               interrupt-parent = <&ipic>;
+
+               ranges = <
+                       0 0 0xf0000000 0x02000000
+               >;
+
+               flash@0,0 {
+                       compatible = "cfi-flash";
+                       reg = <0 0 0x02000000>;
+                       bank-width = <2>;
+                       device-width = <2>;
+               };
+       };
+
+       soc8349@ff000000 {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               device_type = "soc";
+               ranges = <0x0 0xff000000 0x00100000>;
+               reg = <0xff000000 0x00000200>;
+               bus-frequency = <0>;
+
+               wdt@200 {
+                       device_type = "watchdog";
+                       compatible = "mpc83xx_wdt";
+                       reg = <0x200 0x100>;
+               };
+
+               i2c@3000 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       cell-index = <0>;
+                       compatible = "fsl-i2c";
+                       reg = <0x3000 0x100>;
+                       interrupts = <14 0x8>;
+                       interrupt-parent = <&ipic>;
+                       dfsrr;
+
+                       rtc@68 {
+                               compatible = "dallas,ds1374";
+                               reg = <0x68>;
+                       };
+               };
+
+               i2c@3100 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       cell-index = <1>;
+                       compatible = "fsl-i2c";
+                       reg = <0x3100 0x100>;
+                       interrupts = <15 0x8>;
+                       interrupt-parent = <&ipic>;
+                       dfsrr;
+               };
+
+               spi@7000 {
+                       cell-index = <0>;
+                       compatible = "fsl,spi";
+                       reg = <0x7000 0x1000>;
+                       interrupts = <16 0x8>;
+                       interrupt-parent = <&ipic>;
+                       mode = "cpu";
+               };
+
+               /* phy type (ULPI or SERIAL) are only types supported for MPH */
+               /* port = 0 or 1 */
+               usb@22000 {
+                       compatible = "fsl-usb2-mph";
+                       reg = <0x22000 0x1000>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       interrupt-parent = <&ipic>;
+                       interrupts = <39 0x8>;
+                       phy_type = "ulpi";
+                       port1;
+               };
+               /* phy type (ULPI, UTMI, UTMI_WIDE, SERIAL) */
+               usb@23000 {
+                       compatible = "fsl-usb2-dr";
+                       reg = <0x23000 0x1000>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       interrupt-parent = <&ipic>;
+                       interrupts = <38 0x8>;
+                       dr_mode = "otg";
+                       phy_type = "ulpi";
+               };
+
+               mdio@24520 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       compatible = "fsl,gianfar-mdio";
+                       reg = <0x24520 0x20>;
+
+                       phy0: ethernet-phy@0 {
+                               interrupt-parent = <&ipic>;
+                               interrupts = <17 0x8>;
+                               reg = <0x1>;
+                               device_type = "ethernet-phy";
+                       };
+                       phy1: ethernet-phy@1 {
+                               interrupt-parent = <&ipic>;
+                               interrupts = <18 0x8>;
+                               reg = <0x2>;
+                               device_type = "ethernet-phy";
+                       };
+               };
+
+               enet0: ethernet@24000 {
+                       cell-index = <0>;
+                       device_type = "network";
+                       model = "TSEC";
+                       compatible = "gianfar";
+                       reg = <0x24000 0x1000>;
+                       local-mac-address = [ 00 08 e5 11 32 33 ];
+                       interrupts = <32 0x8 33 0x8 34 0x8>;
+                       interrupt-parent = <&ipic>;
+                       phy-handle = <&phy0>;
+                       linux,network-index = <0>;
+               };
+
+               enet1: ethernet@25000 {
+                       cell-index = <1>;
+                       device_type = "network";
+                       model = "TSEC";
+                       compatible = "gianfar";
+                       reg = <0x25000 0x1000>;
+                       local-mac-address = [ 00 08 e5 11 32 34 ];
+                       interrupts = <35 0x8 36 0x8 37 0x8>;
+                       interrupt-parent = <&ipic>;
+                       phy-handle = <&phy1>;
+                       linux,network-index = <1>;
+               };
+
+               serial0: serial@4500 {
+                       cell-index = <0>;
+                       device_type = "serial";
+                       compatible = "ns16550";
+                       reg = <0x4500 0x100>;
+                       clock-frequency = <400000000>;
+                       interrupts = <9 0x8>;
+                       interrupt-parent = <&ipic>;
+               };
+
+               serial1: serial@4600 {
+                       cell-index = <1>;
+                       device_type = "serial";
+                       compatible = "ns16550";
+                       reg = <0x4600 0x100>;
+                       clock-frequency = <400000000>;
+                       interrupts = <10 0x8>;
+                       interrupt-parent = <&ipic>;
+               };
+
+               /* May need to remove if on a part without crypto engine */
+               crypto@30000 {
+                       device_type = "crypto";
+                       model = "SEC2";
+                       compatible = "talitos";
+                       reg = <0x30000 0x10000>;
+                       interrupts = <11 0x8>;
+                       interrupt-parent = <&ipic>;
+                       num-channels = <4>;
+                       channel-fifo-len = <24>;
+                       exec-units-mask = <0x0000007e>;
+                       /* desc mask is for rev2.0,
+                        * we need runtime fixup for >2.0 */
+                       descriptor-types-mask = <0x01010ebf>;
+               };
+
+               /* IPIC
+                * interrupts cell = <intr #, sense>
+                * sense values match linux IORESOURCE_IRQ_* defines:
+                * sense == 8: Level, low assertion
+                * sense == 2: Edge, high-to-low change
+                */
+               ipic: pic@700 {
+                       interrupt-controller;
+                       #address-cells = <0>;
+                       #interrupt-cells = <2>;
+                       reg = <0x700 0x100>;
+                       device_type = "ipic";
+               };
+       };
+
+       chosen {
+               bootargs = "console=ttyS0,38400 root=/dev/mtdblock3 rootfstype=jffs2";
+               linux,stdout-path = &serial0;
+       };
+
+};
index ba2521bdaab1ccdb7423acaa97ec9ea47985934d..6ce0cc2c0208e311e7924903d511f1c998a9ce4c 100644 (file)
  * any warranty of any kind, whether express or implied.
  */
 
+/dts-v1/;
+
 / {
        #address-cells = <2>;
        #size-cells = <1>;
        model = "amcc,bamboo";
        compatible = "amcc,bamboo";
-       dcr-parent = <&/cpus/cpu@0>;
+       dcr-parent = <&{/cpus/cpu@0}>;
 
        aliases {
                ethernet0 = &EMAC0;
                cpu@0 {
                        device_type = "cpu";
                        model = "PowerPC,440EP";
-                       reg = <0>;
+                       reg = <0x00000000>;
                        clock-frequency = <0>; /* Filled in by zImage */
                        timebase-frequency = <0>; /* Filled in by zImage */
-                       i-cache-line-size = <20>;
-                       d-cache-line-size = <20>;
-                       i-cache-size = <8000>;
-                       d-cache-size = <8000>;
+                       i-cache-line-size = <32>;
+                       d-cache-line-size = <32>;
+                       i-cache-size = <32768>;
+                       d-cache-size = <32768>;
                        dcr-controller;
                        dcr-access-method = "native";
                };
 
        memory {
                device_type = "memory";
-               reg = <0 0 0>; /* Filled in by zImage */
+               reg = <0x00000000 0x00000000 0x00000000>; /* Filled in by zImage */
        };
 
        UIC0: interrupt-controller0 {
                compatible = "ibm,uic-440ep","ibm,uic";
                interrupt-controller;
                cell-index = <0>;
-               dcr-reg = <0c0 009>;
+               dcr-reg = <0x0c0 0x009>;
                #address-cells = <0>;
                #size-cells = <0>;
                #interrupt-cells = <2>;
                compatible = "ibm,uic-440ep","ibm,uic";
                interrupt-controller;
                cell-index = <1>;
-               dcr-reg = <0d0 009>;
+               dcr-reg = <0x0d0 0x009>;
                #address-cells = <0>;
                #size-cells = <0>;
                #interrupt-cells = <2>;
-               interrupts = <1e 4 1f 4>; /* cascade */
+               interrupts = <0x1e 0x4 0x1f 0x4>; /* cascade */
                interrupt-parent = <&UIC0>;
        };
 
        SDR0: sdr {
                compatible = "ibm,sdr-440ep";
-               dcr-reg = <00e 002>;
+               dcr-reg = <0x00e 0x002>;
        };
 
        CPR0: cpr {
                compatible = "ibm,cpr-440ep";
-               dcr-reg = <00c 002>;
+               dcr-reg = <0x00c 0x002>;
        };
 
        plb {
 
                SDRAM0: sdram {
                        compatible = "ibm,sdram-440ep", "ibm,sdram-405gp";
-                       dcr-reg = <010 2>;
+                       dcr-reg = <0x010 0x002>;
                };
 
                DMA0: dma {
                        compatible = "ibm,dma-440ep", "ibm,dma-440gp";
-                       dcr-reg = <100 027>;
+                       dcr-reg = <0x100 0x027>;
                };
 
                MAL0: mcmal {
                        compatible = "ibm,mcmal-440ep", "ibm,mcmal-440gp", "ibm,mcmal";
-                       dcr-reg = <180 62>;
+                       dcr-reg = <0x180 0x062>;
                        num-tx-chans = <4>;
                        num-rx-chans = <2>;
                        interrupt-parent = <&MAL0>;
-                       interrupts = <0 1 2 3 4>;
+                       interrupts = <0x0 0x1 0x2 0x3 0x4>;
                        #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 = </*TXEOB*/ 0x0 &UIC0 0xa 0x4
+                                       /*RXEOB*/ 0x1 &UIC0 0xb 0x4
+                                       /*SERR*/  0x2 &UIC1 0x0 0x4
+                                       /*TXDE*/  0x3 &UIC1 0x1 0x4
+                                       /*RXDE*/  0x4 &UIC1 0x2 0x4>;
                };
 
                POB0: opb {
                        /* Bamboo is oddball in the 44x world and doesn't use the ERPN
                         * bits.
                         */
-                       ranges = <00000000 0 00000000 80000000
-                                 80000000 0 80000000 80000000>;
+                       ranges = <0x00000000 0x00000000 0x00000000 0x80000000
+                                 0x80000000 0x00000000 0x80000000 0x80000000>;
                        interrupt-parent = <&UIC1>;
-                       interrupts = <4>;
+                       interrupts = <0x7 0x4>;
                        clock-frequency = <0>; /* Filled in by zImage */
 
                        EBC0: ebc {
                                compatible = "ibm,ebc-440ep", "ibm,ebc-440gp", "ibm,ebc";
-                               dcr-reg = <012 2>;
+                               dcr-reg = <0x012 0x002>;
                                #address-cells = <2>;
                                #size-cells = <1>;
                                clock-frequency = <0>; /* Filled in by zImage */
-                               interrupts = <1>;
+                               interrupts = <0x5 0x1>;
                                interrupt-parent = <&UIC1>;
                        };
 
                        UART0: serial@ef600300 {
                                device_type = "serial";
                                compatible = "ns16550";
-                               reg = <ef600300 8>;
-                               virtual-reg = <ef600300>;
+                               reg = <0xef600300 0x00000008>;
+                               virtual-reg = <0xef600300>;
                                clock-frequency = <0>; /* Filled in by zImage */
-                               current-speed = <1c200>;
+                               current-speed = <115200>;
                                interrupt-parent = <&UIC0>;
-                               interrupts = <0 4>;
+                               interrupts = <0x0 0x4>;
                        };
 
                        UART1: serial@ef600400 {
                                device_type = "serial";
                                compatible = "ns16550";
-                               reg = <ef600400 8>;
-                               virtual-reg = <ef600400>;
+                               reg = <0xef600400 0x00000008>;
+                               virtual-reg = <0xef600400>;
                                clock-frequency = <0>;
                                current-speed = <0>;
                                interrupt-parent = <&UIC0>;
-                               interrupts = <4>;
+                               interrupts = <0x1 0x4>;
                        };
 
                        UART2: serial@ef600500 {
                                device_type = "serial";
                                compatible = "ns16550";
-                               reg = <ef600500 8>;
-                               virtual-reg = <ef600500>;
+                               reg = <0xef600500 0x00000008>;
+                               virtual-reg = <0xef600500>;
                                clock-frequency = <0>;
                                current-speed = <0>;
                                interrupt-parent = <&UIC0>;
-                               interrupts = <4>;
+                               interrupts = <0x3 0x4>;
                        };
 
                        UART3: serial@ef600600 {
                                device_type = "serial";
                                compatible = "ns16550";
-                               reg = <ef600600 8>;
-                               virtual-reg = <ef600600>;
+                               reg = <0xef600600 0x00000008>;
+                               virtual-reg = <0xef600600>;
                                clock-frequency = <0>;
                                current-speed = <0>;
                                interrupt-parent = <&UIC0>;
-                               interrupts = <4>;
+                               interrupts = <0x4 0x4>;
                        };
 
                        IIC0: i2c@ef600700 {
                                compatible = "ibm,iic-440ep", "ibm,iic-440gp", "ibm,iic";
-                               reg = <ef600700 14>;
+                               reg = <0xef600700 0x00000014>;
                                interrupt-parent = <&UIC0>;
-                               interrupts = <4>;
+                               interrupts = <0x2 0x4>;
                        };
 
                        IIC1: i2c@ef600800 {
                                compatible = "ibm,iic-440ep", "ibm,iic-440gp", "ibm,iic";
-                               reg = <ef600800 14>;
+                               reg = <0xef600800 0x00000014>;
                                interrupt-parent = <&UIC0>;
-                               interrupts = <4>;
+                               interrupts = <0x7 0x4>;
                        };
 
                        ZMII0: emac-zmii@ef600d00 {
                                compatible = "ibm,zmii-440ep", "ibm,zmii-440gp", "ibm,zmii";
-                               reg = <ef600d00 c>;
+                               reg = <0xef600d00 0x0000000c>;
                        };
 
                        EMAC0: ethernet@ef600e00 {
                                device_type = "network";
                                compatible = "ibm,emac-440ep", "ibm,emac-440gp", "ibm,emac";
                                interrupt-parent = <&UIC1>;
-                               interrupts = <1c 4 1d 4>;
-                               reg = <ef600e00 70>;
+                               interrupts = <0x1c 0x4 0x1d 0x4>;
+                               reg = <0xef600e00 0x00000070>;
                                local-mac-address = [000000000000];
                                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>;
+                               max-frame-size = <1500>;
+                               rx-fifo-size = <4096>;
+                               tx-fifo-size = <2048>;
                                phy-mode = "rmii";
-                               phy-map = <00000000>;
+                               phy-map = <0x00000000>;
                                zmii-device = <&ZMII0>;
                                zmii-channel = <0>;
                        };
                                device_type = "network";
                                compatible = "ibm,emac-440ep", "ibm,emac-440gp", "ibm,emac";
                                interrupt-parent = <&UIC1>;
-                               interrupts = <1e 4 1f 4>;
-                               reg = <ef600f00 70>;
+                               interrupts = <0x1e 0x4 0x1f 0x4>;
+                               reg = <0xef600f00 0x00000070>;
                                local-mac-address = [000000000000];
                                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>;
+                               max-frame-size = <1500>;
+                               rx-fifo-size = <4096>;
+                               tx-fifo-size = <2048>;
                                phy-mode = "rmii";
-                               phy-map = <00000000>;
+                               phy-map = <0x00000000>;
                                zmii-device = <&ZMII0>;
                                zmii-channel = <1>;
                        };
 
                        usb@ef601000 {
                                compatible = "ohci-be";
-                               reg = <ef601000 80>;
-                               interrupts = <8 1 9 1>;
+                               reg = <0xef601000 0x00000080>;
+                               interrupts = <0x8 0x1 0x9 0x1>;
                                interrupt-parent = < &UIC1 >;
                        };
                };
                        #address-cells = <3>;
                        compatible = "ibm,plb440ep-pci", "ibm,plb-pci";
                        primary;
-                       reg = <0 eec00000 8     /* Config space access */
-                              0 eed00000 4     /* IACK */
-                              0 eed00000 4     /* Special cycle */
-                              0 ef400000 40>;  /* Internal registers */
+                       reg = <0x00000000 0xeec00000 0x00000008 /* Config space access */
+                              0x00000000 0xeed00000 0x00000004 /* IACK */
+                              0x00000000 0xeed00000 0x00000004 /* Special cycle */
+                              0x00000000 0xef400000 0x00000040>;       /* Internal registers */
 
                        /* Outbound ranges, one memory and one IO,
                         * later cannot be changed. Chip supports a second
                         * IO range but we don't use it for now
                         */
-                       ranges = <02000000 0 a0000000 0 a0000000 0 20000000
-                                 01000000 0 00000000 0 e8000000 0 00010000>;
+                       ranges = <0x02000000 0x00000000 0xa0000000 0x00000000 0xa0000000 0x00000000 0x20000000
+                                 0x01000000 0x00000000 0x00000000 0x00000000 0xe8000000 0x00000000 0x00010000>;
 
                        /* Inbound 2GB range starting at 0 */
-                       dma-ranges = <42000000 0 0 0 0 0 80000000>;
+                       dma-ranges = <0x42000000 0x0 0x0 0x0 0x0 0x0 0x80000000>;
 
                        /* Bamboo has all 4 IRQ pins tied together per slot */
-                       interrupt-map-mask = <f800 0 0 0>;
+                       interrupt-map-mask = <0xf800 0x0 0x0 0x0>;
                        interrupt-map = <
                                /* IDSEL 1 */
-                               0800 0 0 0 &UIC0 1c 8
+                               0x800 0x0 0x0 0x0 &UIC0 0x1c 0x8
 
                                /* IDSEL 2 */
-                               1000 0 0 0 &UIC0 1b 8
+                               0x1000 0x0 0x0 0x0 &UIC0 0x1b 0x8
 
                                /* IDSEL 3 */
-                               1800 0 0 0 &UIC0 1a 8
+                               0x1800 0x0 0x0 0x0 &UIC0 0x1a 0x8
 
                                /* IDSEL 4 */
-                               2000 0 0 0 &UIC0 19 8
+                               0x2000 0x0 0x0 0x0 &UIC0 0x19 0x8
                        >;
                };
        };
index 39634124929b263aaa682ccfccb1d94739115038..f9fe0325215019b335307d5ef35cc5bb729656ac 100644 (file)
@@ -8,12 +8,14 @@
  * any warranty of any kind, whether express or implied.
  */
 
+/dts-v1/;
+
 / {
        #address-cells = <2>;
        #size-cells = <1>;
        model = "amcc,canyonlands";
        compatible = "amcc,canyonlands";
-       dcr-parent = <&/cpus/cpu@0>;
+       dcr-parent = <&{/cpus/cpu@0}>;
 
        aliases {
                ethernet0 = &EMAC0;
                cpu@0 {
                        device_type = "cpu";
                        model = "PowerPC,460EX";
-                       reg = <0>;
+                       reg = <0x00000000>;
                        clock-frequency = <0>; /* Filled in by U-Boot */
                        timebase-frequency = <0>; /* Filled in by U-Boot */
-                       i-cache-line-size = <20>;
-                       d-cache-line-size = <20>;
-                       i-cache-size = <8000>;
-                       d-cache-size = <8000>;
+                       i-cache-line-size = <32>;
+                       d-cache-line-size = <32>;
+                       i-cache-size = <32768>;
+                       d-cache-size = <32768>;
                        dcr-controller;
                        dcr-access-method = "native";
                };
 
        memory {
                device_type = "memory";
-               reg = <0 0 0>; /* Filled in by U-Boot */
+               reg = <0x00000000 0x00000000 0x00000000>; /* Filled in by U-Boot */
        };
 
        UIC0: interrupt-controller0 {
                compatible = "ibm,uic-460ex","ibm,uic";
                interrupt-controller;
                cell-index = <0>;
-               dcr-reg = <0c0 009>;
+               dcr-reg = <0x0c0 0x009>;
                #address-cells = <0>;
                #size-cells = <0>;
                #interrupt-cells = <2>;
                compatible = "ibm,uic-460ex","ibm,uic";
                interrupt-controller;
                cell-index = <1>;
-               dcr-reg = <0d0 009>;
+               dcr-reg = <0x0d0 0x009>;
                #address-cells = <0>;
                #size-cells = <0>;
                #interrupt-cells = <2>;
-               interrupts = <1e 4 1f 4>; /* cascade */
+               interrupts = <0x1e 0x4 0x1f 0x4>; /* cascade */
                interrupt-parent = <&UIC0>;
        };
 
                compatible = "ibm,uic-460ex","ibm,uic";
                interrupt-controller;
                cell-index = <2>;
-               dcr-reg = <0e0 009>;
+               dcr-reg = <0x0e0 0x009>;
                #address-cells = <0>;
                #size-cells = <0>;
                #interrupt-cells = <2>;
-               interrupts = <a 4 b 4>; /* cascade */
+               interrupts = <0xa 0x4 0xb 0x4>; /* cascade */
                interrupt-parent = <&UIC0>;
        };
 
                compatible = "ibm,uic-460ex","ibm,uic";
                interrupt-controller;
                cell-index = <3>;
-               dcr-reg = <0f0 009>;
+               dcr-reg = <0x0f0 0x009>;
                #address-cells = <0>;
                #size-cells = <0>;
                #interrupt-cells = <2>;
-               interrupts = <10 4 11 4>; /* cascade */
+               interrupts = <0x10 0x4 0x11 0x4>; /* cascade */
                interrupt-parent = <&UIC0>;
        };
 
        SDR0: sdr {
                compatible = "ibm,sdr-460ex";
-               dcr-reg = <00e 002>;
+               dcr-reg = <0x00e 0x002>;
        };
 
        CPR0: cpr {
                compatible = "ibm,cpr-460ex";
-               dcr-reg = <00c 002>;
+               dcr-reg = <0x00c 0x002>;
        };
 
        plb {
 
                SDRAM0: sdram {
                        compatible = "ibm,sdram-460ex", "ibm,sdram-405gp";
-                       dcr-reg = <010 2>;
+                       dcr-reg = <0x010 0x002>;
                };
 
                MAL0: mcmal {
                        compatible = "ibm,mcmal-460ex", "ibm,mcmal2";
-                       dcr-reg = <180 62>;
+                       dcr-reg = <0x180 0x062>;
                        num-tx-chans = <2>;
-                       num-rx-chans = <10>;
+                       num-rx-chans = <16>;
                        #address-cells = <0>;
                        #size-cells = <0>;
                        interrupt-parent = <&UIC2>;
-                       interrupts = <  /*TXEOB*/ 4
-                                       /*RXEOB*/ 4
-                                       /*SERR*/  4
-                                       /*TXDE*/  4
-                                       /*RXDE*/  4>;
+                       interrupts = <  /*TXEOB*/ 0x6 0x4
+                                       /*RXEOB*/ 0x7 0x4
+                                       /*SERR*/  0x3 0x4
+                                       /*TXDE*/  0x4 0x4
+                                       /*RXDE*/  0x5 0x4>;
                };
 
                POB0: opb {
                        compatible = "ibm,opb-460ex", "ibm,opb";
                        #address-cells = <1>;
                        #size-cells = <1>;
-                       ranges = <b0000000 4 b0000000 50000000>;
+                       ranges = <0xb0000000 0x00000004 0xb0000000 0x50000000>;
                        clock-frequency = <0>; /* Filled in by U-Boot */
 
                        EBC0: ebc {
                                compatible = "ibm,ebc-460ex", "ibm,ebc";
-                               dcr-reg = <012 2>;
+                               dcr-reg = <0x012 0x002>;
                                #address-cells = <2>;
                                #size-cells = <1>;
                                clock-frequency = <0>; /* Filled in by U-Boot */
                                /* ranges property is supplied by U-Boot */
-                               interrupts = <4>;
+                               interrupts = <0x6 0x4>;
                                interrupt-parent = <&UIC1>;
 
                                nor_flash@0,0 {
                                        compatible = "amd,s29gl512n", "cfi-flash";
                                        bank-width = <2>;
-                                       reg = <0 000000 4000000>;
+                                       reg = <0x00000000 0x00000000 0x04000000>;
                                        #address-cells = <1>;
                                        #size-cells = <1>;
                                        partition@0 {
                                                label = "kernel";
-                                               reg = <0 1e0000>;
+                                               reg = <0x00000000 0x001e0000>;
                                        };
                                        partition@1e0000 {
                                                label = "dtb";
-                                               reg = <1e0000 20000>;
+                                               reg = <0x001e0000 0x00020000>;
                                        };
                                        partition@200000 {
                                                label = "ramdisk";
-                                               reg = <200000 1400000>;
+                                               reg = <0x00200000 0x01400000>;
                                        };
                                        partition@1600000 {
                                                label = "jffs2";
-                                               reg = <1600000 400000>;
+                                               reg = <0x01600000 0x00400000>;
                                        };
                                        partition@1a00000 {
                                                label = "user";
-                                               reg = <1a00000 2560000>;
+                                               reg = <0x01a00000 0x02560000>;
                                        };
                                        partition@3f60000 {
                                                label = "env";
-                                               reg = <3f60000 40000>;
+                                               reg = <0x03f60000 0x00040000>;
                                        };
                                        partition@3fa0000 {
                                                label = "u-boot";
-                                               reg = <3fa0000 60000>;
+                                               reg = <0x03fa0000 0x00060000>;
                                        };
                                };
                        };
                        UART0: serial@ef600300 {
                                device_type = "serial";
                                compatible = "ns16550";
-                               reg = <ef600300 8>;
-                               virtual-reg = <ef600300>;
+                               reg = <0xef600300 0x00000008>;
+                               virtual-reg = <0xef600300>;
                                clock-frequency = <0>; /* Filled in by U-Boot */
                                current-speed = <0>; /* Filled in by U-Boot */
                                interrupt-parent = <&UIC1>;
-                               interrupts = <4>;
+                               interrupts = <0x1 0x4>;
                        };
 
                        UART1: serial@ef600400 {
                                device_type = "serial";
                                compatible = "ns16550";
-                               reg = <ef600400 8>;
-                               virtual-reg = <ef600400>;
+                               reg = <0xef600400 0x00000008>;
+                               virtual-reg = <0xef600400>;
                                clock-frequency = <0>; /* Filled in by U-Boot */
                                current-speed = <0>; /* Filled in by U-Boot */
                                interrupt-parent = <&UIC0>;
-                               interrupts = <4>;
+                               interrupts = <0x1 0x4>;
                        };
 
                        UART2: serial@ef600500 {
                                device_type = "serial";
                                compatible = "ns16550";
-                               reg = <ef600500 8>;
-                               virtual-reg = <ef600500>;
+                               reg = <0xef600500 0x00000008>;
+                               virtual-reg = <0xef600500>;
                                clock-frequency = <0>; /* Filled in by U-Boot */
                                current-speed = <0>; /* Filled in by U-Boot */
                                interrupt-parent = <&UIC1>;
-                               interrupts = <1d 4>;
+                               interrupts = <0x1d 0x4>;
                        };
 
                        UART3: serial@ef600600 {
                                device_type = "serial";
                                compatible = "ns16550";
-                               reg = <ef600600 8>;
-                               virtual-reg = <ef600600>;
+                               reg = <0xef600600 0x00000008>;
+                               virtual-reg = <0xef600600>;
                                clock-frequency = <0>; /* Filled in by U-Boot */
                                current-speed = <0>; /* Filled in by U-Boot */
                                interrupt-parent = <&UIC1>;
-                               interrupts = <1e 4>;
+                               interrupts = <0x1e 0x4>;
                        };
 
                        IIC0: i2c@ef600700 {
                                compatible = "ibm,iic-460ex", "ibm,iic";
-                               reg = <ef600700 14>;
+                               reg = <0xef600700 0x00000014>;
                                interrupt-parent = <&UIC0>;
-                               interrupts = <4>;
+                               interrupts = <0x2 0x4>;
                        };
 
                        IIC1: i2c@ef600800 {
                                compatible = "ibm,iic-460ex", "ibm,iic";
-                               reg = <ef600800 14>;
+                               reg = <0xef600800 0x00000014>;
                                interrupt-parent = <&UIC0>;
-                               interrupts = <4>;
+                               interrupts = <0x3 0x4>;
                        };
 
                        ZMII0: emac-zmii@ef600d00 {
                                compatible = "ibm,zmii-460ex", "ibm,zmii";
-                               reg = <ef600d00 c>;
+                               reg = <0xef600d00 0x0000000c>;
                        };
 
                        RGMII0: emac-rgmii@ef601500 {
                                compatible = "ibm,rgmii-460ex", "ibm,rgmii";
-                               reg = <ef601500 8>;
+                               reg = <0xef601500 0x00000008>;
                                has-mdio;
                        };
 
                        TAH0: emac-tah@ef601350 {
                                compatible = "ibm,tah-460ex", "ibm,tah";
-                               reg = <ef601350 30>;
+                               reg = <0xef601350 0x00000030>;
                        };
 
                        TAH1: emac-tah@ef601450 {
                                compatible = "ibm,tah-460ex", "ibm,tah";
-                               reg = <ef601450 30>;
+                               reg = <0xef601450 0x00000030>;
                        };
 
                        EMAC0: ethernet@ef600e00 {
                                device_type = "network";
                                compatible = "ibm,emac-460ex", "ibm,emac4";
                                interrupt-parent = <&EMAC0>;
-                               interrupts = <0 1>;
+                               interrupts = <0x0 0x1>;
                                #interrupt-cells = <1>;
                                #address-cells = <0>;
                                #size-cells = <0>;
-                               interrupt-map = </*Status*/ 0 &UIC2 10 4
-                                                /*Wake*/   1 &UIC2 14 4>;
-                               reg = <ef600e00 70>;
+                               interrupt-map = </*Status*/ 0x0 &UIC2 0x10 0x4
+                                                /*Wake*/   0x1 &UIC2 0x14 0x4>;
+                               reg = <0xef600e00 0x00000070>;
                                local-mac-address = [000000000000]; /* Filled in by U-Boot */
                                mal-device = <&MAL0>;
                                mal-tx-channel = <0>;
                                mal-rx-channel = <0>;
                                cell-index = <0>;
-                               max-frame-size = <2328>;
-                               rx-fifo-size = <1000>;
-                               tx-fifo-size = <800>;
+                               max-frame-size = <9000>;
+                               rx-fifo-size = <4096>;
+                               tx-fifo-size = <2048>;
                                phy-mode = "rgmii";
-                               phy-map = <00000000>;
+                               phy-map = <0x00000000>;
                                rgmii-device = <&RGMII0>;
                                rgmii-channel = <0>;
                                tah-device = <&TAH0>;
                                device_type = "network";
                                compatible = "ibm,emac-460ex", "ibm,emac4";
                                interrupt-parent = <&EMAC1>;
-                               interrupts = <0 1>;
+                               interrupts = <0x0 0x1>;
                                #interrupt-cells = <1>;
                                #address-cells = <0>;
                                #size-cells = <0>;
-                               interrupt-map = </*Status*/ 0 &UIC2 11 4
-                                                /*Wake*/   1 &UIC2 15 4>;
-                               reg = <ef600f00 70>;
+                               interrupt-map = </*Status*/ 0x0 &UIC2 0x11 0x4
+                                                /*Wake*/   0x1 &UIC2 0x15 0x4>;
+                               reg = <0xef600f00 0x00000070>;
                                local-mac-address = [000000000000]; /* Filled in by U-Boot */
                                mal-device = <&MAL0>;
                                mal-tx-channel = <1>;
                                mal-rx-channel = <8>;
                                cell-index = <1>;
-                               max-frame-size = <2328>;
-                               rx-fifo-size = <1000>;
-                               tx-fifo-size = <800>;
+                               max-frame-size = <9000>;
+                               rx-fifo-size = <4096>;
+                               tx-fifo-size = <2048>;
                                phy-mode = "rgmii";
-                               phy-map = <00000000>;
+                               phy-map = <0x00000000>;
                                rgmii-device = <&RGMII0>;
                                rgmii-channel = <1>;
                                tah-device = <&TAH1>;
                        primary;
                        large-inbound-windows;
                        enable-msi-hole;
-                       reg = <c 0ec00000   8   /* Config space access */
-                              0 0 0            /* no IACK cycles */
-                              c 0ed00000   4   /* Special cycles */
-                              c 0ec80000 100   /* Internal registers */
-                              c 0ec80100  fc>; /* Internal messaging registers */
+                       reg = <0x0000000c 0x0ec00000   0x00000008       /* Config space access */
+                              0x00000000 0x00000000 0x00000000         /* no IACK cycles */
+                              0x0000000c 0x0ed00000   0x00000004   /* Special cycles */
+                              0x0000000c 0x0ec80000 0x00000100 /* Internal registers */
+                              0x0000000c 0x0ec80100  0x000000fc>;      /* Internal messaging registers */
 
                        /* Outbound ranges, one memory and one IO,
                         * later cannot be changed
                         */
-                       ranges = <02000000 0 80000000 0000000d 80000000 0 80000000
-                                 01000000 0 00000000 0000000c 08000000 0 00010000>;
+                       ranges = <0x02000000 0x00000000 0x80000000 0x0000000d 0x80000000 0x00000000 0x80000000
+                                 0x01000000 0x00000000 0x00000000 0x0000000c 0x08000000 0x00000000 0x00010000>;
 
                        /* Inbound 2GB range starting at 0 */
-                       dma-ranges = <42000000 0 0 0 0 0 80000000>;
+                       dma-ranges = <0x42000000 0x0 0x0 0x0 0x0 0x0 0x80000000>;
 
                        /* This drives busses 0 to 0x3f */
-                       bus-range = <0 3f>;
+                       bus-range = <0x0 0x3f>;
 
                        /* All PCI interrupts are routed to ext IRQ 2 -> UIC1-0 */
-                       interrupt-map-mask = <0000 0 0 0>;
-                       interrupt-map = < 0000 0 0 0 &UIC1 0 8 >;
+                       interrupt-map-mask = <0x0 0x0 0x0 0x0>;
+                       interrupt-map = < 0x0 0x0 0x0 0x0 &UIC1 0x0 0x8 >;
                };
 
                PCIE0: pciex@d00000000 {
                        #address-cells = <3>;
                        compatible = "ibm,plb-pciex-460ex", "ibm,plb-pciex";
                        primary;
-                       port = <0>; /* port number */
-                       reg = <d 00000000 20000000      /* Config space access */
-                              c 08010000 00001000>;    /* Registers */
-                       dcr-reg = <100 020>;
-                       sdr-base = <300>;
+                       port = <0x0>; /* port number */
+                       reg = <0x0000000d 0x00000000 0x20000000 /* Config space access */
+                              0x0000000c 0x08010000 0x00001000>;       /* Registers */
+                       dcr-reg = <0x100 0x020>;
+                       sdr-base = <0x300>;
 
                        /* Outbound ranges, one memory and one IO,
                         * later cannot be changed
                         */
-                       ranges = <02000000 0 80000000 0000000e 00000000 0 80000000
-                                 01000000 0 00000000 0000000f 80000000 0 00010000>;
+                       ranges = <0x02000000 0x00000000 0x80000000 0x0000000e 0x00000000 0x00000000 0x80000000
+                                 0x01000000 0x00000000 0x00000000 0x0000000f 0x80000000 0x00000000 0x00010000>;
 
                        /* Inbound 2GB range starting at 0 */
-                       dma-ranges = <42000000 0 0 0 0 0 80000000>;
+                       dma-ranges = <0x42000000 0x0 0x0 0x0 0x0 0x0 0x80000000>;
 
                        /* This drives busses 40 to 0x7f */
-                       bus-range = <40 7f>;
+                       bus-range = <0x40 0x7f>;
 
                        /* Legacy interrupts (note the weird polarity, the bridge seems
                         * to invert PCIe legacy interrupts).
                         * below are basically de-swizzled numbers.
                         * The real slot is on idsel 0, so the swizzling is 1:1
                         */
-                       interrupt-map-mask = <0000 0 0 7>;
+                       interrupt-map-mask = <0x0 0x0 0x0 0x7>;
                        interrupt-map = <
-                               0000 0 0 1 &UIC3 c 4 /* swizzled int A */
-                               0000 0 0 2 &UIC3 d 4 /* swizzled int B */
-                               0000 0 0 3 &UIC3 e 4 /* swizzled int C */
-                               0000 0 0 4 &UIC3 f 4 /* swizzled int D */>;
+                               0x0 0x0 0x0 0x1 &UIC3 0xc 0x4 /* swizzled int A */
+                               0x0 0x0 0x0 0x2 &UIC3 0xd 0x4 /* swizzled int B */
+                               0x0 0x0 0x0 0x3 &UIC3 0xe 0x4 /* swizzled int C */
+                               0x0 0x0 0x0 0x4 &UIC3 0xf 0x4 /* swizzled int D */>;
                };
 
                PCIE1: pciex@d20000000 {
                        #address-cells = <3>;
                        compatible = "ibm,plb-pciex-460ex", "ibm,plb-pciex";
                        primary;
-                       port = <1>; /* port number */
-                       reg = <d 20000000 20000000      /* Config space access */
-                              c 08011000 00001000>;    /* Registers */
-                       dcr-reg = <120 020>;
-                       sdr-base = <340>;
+                       port = <0x1>; /* port number */
+                       reg = <0x0000000d 0x20000000 0x20000000 /* Config space access */
+                              0x0000000c 0x08011000 0x00001000>;       /* Registers */
+                       dcr-reg = <0x120 0x020>;
+                       sdr-base = <0x340>;
 
                        /* Outbound ranges, one memory and one IO,
                         * later cannot be changed
                         */
-                       ranges = <02000000 0 80000000 0000000e 80000000 0 80000000
-                                 01000000 0 00000000 0000000f 80010000 0 00010000>;
+                       ranges = <0x02000000 0x00000000 0x80000000 0x0000000e 0x80000000 0x00000000 0x80000000
+                                 0x01000000 0x00000000 0x00000000 0x0000000f 0x80010000 0x00000000 0x00010000>;
 
                        /* Inbound 2GB range starting at 0 */
-                       dma-ranges = <42000000 0 0 0 0 0 80000000>;
+                       dma-ranges = <0x42000000 0x0 0x0 0x0 0x0 0x0 0x80000000>;
 
                        /* This drives busses 80 to 0xbf */
-                       bus-range = <80 bf>;
+                       bus-range = <0x80 0xbf>;
 
                        /* Legacy interrupts (note the weird polarity, the bridge seems
                         * to invert PCIe legacy interrupts).
                         * below are basically de-swizzled numbers.
                         * The real slot is on idsel 0, so the swizzling is 1:1
                         */
-                       interrupt-map-mask = <0000 0 0 7>;
+                       interrupt-map-mask = <0x0 0x0 0x0 0x7>;
                        interrupt-map = <
-                               0000 0 0 1 &UIC3 10 4 /* swizzled int A */
-                               0000 0 0 2 &UIC3 11 4 /* swizzled int B */
-                               0000 0 0 3 &UIC3 12 4 /* swizzled int C */
-                               0000 0 0 4 &UIC3 13 4 /* swizzled int D */>;
+                               0x0 0x0 0x0 0x1 &UIC3 0x10 0x4 /* swizzled int A */
+                               0x0 0x0 0x0 0x2 &UIC3 0x11 0x4 /* swizzled int B */
+                               0x0 0x0 0x0 0x3 &UIC3 0x12 0x4 /* swizzled int C */
+                               0x0 0x0 0x0 0x4 &UIC3 0x13 0x4 /* swizzled int D */>;
                };
        };
 };
index 5079dc890e0e47915f9c5dfce531093f0f26e618..ec2d142291b4981028f7af4bcfa23cb1cdeef3b7 100644 (file)
  * any warranty of any kind, whether express or implied.
  */
 
+/dts-v1/;
+
 / {
        #address-cells = <2>;
        #size-cells = <1>;
        model = "ibm,ebony";
        compatible = "ibm,ebony";
-       dcr-parent = <&/cpus/cpu@0>;
+       dcr-parent = <&{/cpus/cpu@0}>;
 
        aliases {
                ethernet0 = &EMAC0;
                cpu@0 {
                        device_type = "cpu";
                        model = "PowerPC,440GP";
-                       reg = <0>;
+                       reg = <0x00000000>;
                        clock-frequency = <0>; // Filled in by zImage
                        timebase-frequency = <0>; // Filled in by zImage
-                       i-cache-line-size = <20>;
-                       d-cache-line-size = <20>;
-                       i-cache-size = <8000>; /* 32 kB */
-                       d-cache-size = <8000>; /* 32 kB */
+                       i-cache-line-size = <32>;
+                       d-cache-line-size = <32>;
+                       i-cache-size = <32768>; /* 32 kB */
+                       d-cache-size = <32768>; /* 32 kB */
                        dcr-controller;
                        dcr-access-method = "native";
                };
 
        memory {
                device_type = "memory";
-               reg = <0 0 0>; // Filled in by zImage
+               reg = <0x00000000 0x00000000 0x00000000>; // Filled in by zImage
        };
 
        UIC0: interrupt-controller0 {
                compatible = "ibm,uic-440gp", "ibm,uic";
                interrupt-controller;
                cell-index = <0>;
-               dcr-reg = <0c0 009>;
+               dcr-reg = <0x0c0 0x009>;
                #address-cells = <0>;
                #size-cells = <0>;
                #interrupt-cells = <2>;
                compatible = "ibm,uic-440gp", "ibm,uic";
                interrupt-controller;
                cell-index = <1>;
-               dcr-reg = <0d0 009>;
+               dcr-reg = <0x0d0 0x009>;
                #address-cells = <0>;
                #size-cells = <0>;
                #interrupt-cells = <2>;
-               interrupts = <1e 4 1f 4>; /* cascade */
+               interrupts = <0x1e 0x4 0x1f 0x4>; /* cascade */
                interrupt-parent = <&UIC0>;
        };
 
        CPC0: cpc {
                compatible = "ibm,cpc-440gp";
-               dcr-reg = <0b0 003 0e0 010>;
+               dcr-reg = <0x0b0 0x003 0x0e0 0x010>;
                // FIXME: anything else?
        };
 
 
                SDRAM0: memory-controller {
                        compatible = "ibm,sdram-440gp";
-                       dcr-reg = <010 2>;
+                       dcr-reg = <0x010 0x002>;
                        // FIXME: anything else?
                };
 
                SRAM0: sram {
                        compatible = "ibm,sram-440gp";
-                       dcr-reg = <020 8 00a 1>;
+                       dcr-reg = <0x020 0x008 0x00a 0x001>;
                };
 
                DMA0: dma {
                        // FIXME: ???
                        compatible = "ibm,dma-440gp";
-                       dcr-reg = <100 027>;
+                       dcr-reg = <0x100 0x027>;
                };
 
                MAL0: mcmal {
                        compatible = "ibm,mcmal-440gp", "ibm,mcmal";
-                       dcr-reg = <180 62>;
+                       dcr-reg = <0x180 0x062>;
                        num-tx-chans = <4>;
                        num-rx-chans = <4>;
                        interrupt-parent = <&MAL0>;
-                       interrupts = <0 1 2 3 4>;
+                       interrupts = <0x0 0x1 0x2 0x3 0x4>;
                        #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>;
+                       interrupt-map = </*TXEOB*/ 0x0 &UIC0 0xa 0x4
+                                        /*RXEOB*/ 0x1 &UIC0 0xb 0x4
+                                        /*SERR*/  0x2 &UIC1 0x0 0x4
+                                        /*TXDE*/  0x3 &UIC1 0x1 0x4
+                                        /*RXDE*/  0x4 &UIC1 0x2 0x4>;
+                       interrupt-map-mask = <0xffffffff>;
                };
 
                POB0: opb {
                        #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>;
+                       ranges = <0x00000000 0x00000001 0x00000000 0x80000000
+                                 0x80000000 0x00000001 0x80000000 0x80000000>;
+                       dcr-reg = <0x090 0x00b>;
                        interrupt-parent = <&UIC1>;
-                       interrupts = <4>;
+                       interrupts = <0x7 0x4>;
                        clock-frequency = <0>; // Filled in by zImage
 
                        EBC0: ebc {
                                compatible = "ibm,ebc-440gp", "ibm,ebc";
-                               dcr-reg = <012 2>;
+                               dcr-reg = <0x012 0x002>;
                                #address-cells = <2>;
                                #size-cells = <1>;
                                clock-frequency = <0>; // Filled in by zImage
                                // ranges property is supplied by zImage
                                // based on firmware's configuration of the
                                // EBC bridge
-                               interrupts = <4>;
+                               interrupts = <0x5 0x4>;
                                interrupt-parent = <&UIC1>;
 
                                small-flash@0,80000 {
                                        compatible = "jedec-flash";
                                        bank-width = <1>;
-                                       reg = <0 80000 80000>;
+                                       reg = <0x00000000 0x00080000 0x00080000>;
                                        #address-cells = <1>;
                                        #size-cells = <1>;
                                        partition@0 {
                                                label = "OpenBIOS";
-                                               reg = <0 80000>;
+                                               reg = <0x00000000 0x00080000>;
                                                read-only;
                                        };
                                };
                                nvram@1,0 {
                                        /* NVRAM & RTC */
                                        compatible = "ds1743-nvram";
-                                       #bytes = <2000>;
-                                       reg = <1 0 2000>;
+                                       #bytes = <0x2000>;
+                                       reg = <0x00000001 0x00000000 0x00002000>;
                                };
 
                                large-flash@2,0 {
                                        compatible = "jedec-flash";
                                        bank-width = <1>;
-                                       reg = <2 0 400000>;
+                                       reg = <0x00000002 0x00000000 0x00400000>;
                                        #address-cells = <1>;
                                        #size-cells = <1>;
                                        partition@0 {
                                                label = "fs";
-                                               reg = <0 380000>;
+                                               reg = <0x00000000 0x00380000>;
                                        };
                                        partition@380000 {
                                                label = "firmware";
-                                               reg = <380000 80000>;
+                                               reg = <0x00380000 0x00080000>;
                                        };
                                };
 
                                ir@3,0 {
-                                       reg = <3 0 10>;
+                                       reg = <0x00000003 0x00000000 0x00000010>;
                                };
 
                                fpga@7,0 {
                                        compatible = "Ebony-FPGA";
-                                       reg = <7 0 10>;
-                                       virtual-reg = <e8300000>;
+                                       reg = <0x00000007 0x00000000 0x00000010>;
+                                       virtual-reg = <0xe8300000>;
                                };
                        };
 
                        UART0: serial@40000200 {
                                device_type = "serial";
                                compatible = "ns16550";
-                               reg = <40000200 8>;
-                               virtual-reg = <e0000200>;
-                               clock-frequency = <A8C000>;
-                               current-speed = <2580>;
+                               reg = <0x40000200 0x00000008>;
+                               virtual-reg = <0xe0000200>;
+                               clock-frequency = <11059200>;
+                               current-speed = <9600>;
                                interrupt-parent = <&UIC0>;
-                               interrupts = <0 4>;
+                               interrupts = <0x0 0x4>;
                        };
 
                        UART1: serial@40000300 {
                                device_type = "serial";
                                compatible = "ns16550";
-                               reg = <40000300 8>;
-                               virtual-reg = <e0000300>;
-                               clock-frequency = <A8C000>;
-                               current-speed = <2580>;
+                               reg = <0x40000300 0x00000008>;
+                               virtual-reg = <0xe0000300>;
+                               clock-frequency = <11059200>;
+                               current-speed = <9600>;
                                interrupt-parent = <&UIC0>;
-                               interrupts = <4>;
+                               interrupts = <0x1 0x4>;
                        };
 
                        IIC0: i2c@40000400 {
                                /* FIXME */
                                compatible = "ibm,iic-440gp", "ibm,iic";
-                               reg = <40000400 14>;
+                               reg = <0x40000400 0x00000014>;
                                interrupt-parent = <&UIC0>;
-                               interrupts = <4>;
+                               interrupts = <0x2 0x4>;
                        };
                        IIC1: i2c@40000500 {
                                /* FIXME */
                                compatible = "ibm,iic-440gp", "ibm,iic";
-                               reg = <40000500 14>;
+                               reg = <0x40000500 0x00000014>;
                                interrupt-parent = <&UIC0>;
-                               interrupts = <4>;
+                               interrupts = <0x3 0x4>;
                        };
 
                        GPIO0: gpio@40000700 {
                                /* FIXME */
                                compatible = "ibm,gpio-440gp";
-                               reg = <40000700 20>;
+                               reg = <0x40000700 0x00000020>;
                        };
 
                        ZMII0: emac-zmii@40000780 {
                                compatible = "ibm,zmii-440gp", "ibm,zmii";
-                               reg = <40000780 c>;
+                               reg = <0x40000780 0x0000000c>;
                        };
 
                        EMAC0: ethernet@40000800 {
                                device_type = "network";
                                compatible = "ibm,emac-440gp", "ibm,emac";
                                interrupt-parent = <&UIC1>;
-                               interrupts = <1c 4 1d 4>;
-                               reg = <40000800 70>;
+                               interrupts = <0x1c 0x4 0x1d 0x4>;
+                               reg = <0x40000800 0x00000070>;
                                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>;
+                               max-frame-size = <1500>;
+                               rx-fifo-size = <4096>;
+                               tx-fifo-size = <2048>;
                                phy-mode = "rmii";
-                               phy-map = <00000001>;
+                               phy-map = <0x00000001>;
                                zmii-device = <&ZMII0>;
                                zmii-channel = <0>;
                        };
                                device_type = "network";
                                compatible = "ibm,emac-440gp", "ibm,emac";
                                interrupt-parent = <&UIC1>;
-                               interrupts = <1e 4 1f 4>;
-                               reg = <40000900 70>;
+                               interrupts = <0x1e 0x4 0x1f 0x4>;
+                               reg = <0x40000900 0x00000070>;
                                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>;
+                               max-frame-size = <1500>;
+                               rx-fifo-size = <4096>;
+                               tx-fifo-size = <2048>;
                                phy-mode = "rmii";
-                               phy-map = <00000001>;
+                               phy-map = <0x00000001>;
                                zmii-device = <&ZMII0>;
                                zmii-channel = <1>;
                        };
 
                        GPT0: gpt@40000a00 {
                                /* FIXME */
-                               reg = <40000a00 d4>;
+                               reg = <0x40000a00 0x000000d4>;
                                interrupt-parent = <&UIC0>;
-                               interrupts = <12 4 13 4 14 4 15 4 16 4>;
+                               interrupts = <0x12 0x4 0x13 0x4 0x14 0x4 0x15 0x4 0x16 0x4>;
                        };
 
                };
                        #address-cells = <3>;
                        compatible = "ibm,plb440gp-pcix", "ibm,plb-pcix";
                        primary;
-                       reg = <2 0ec00000 8     /* Config space access */
-                              0 0 0            /* no IACK cycles */
-                              2 0ed00000 4     /* Special cycles */
-                              2 0ec80000 f0    /* Internal registers */
-                              2 0ec80100 fc>;  /* Internal messaging registers */
+                       reg = <0x00000002 0x0ec00000 0x00000008 /* Config space access */
+                              0x00000000 0x00000000 0x00000000         /* no IACK cycles */
+                              0x00000002 0x0ed00000 0x00000004     /* Special cycles */
+                              0x00000002 0x0ec80000 0x000000f0 /* Internal registers */
+                              0x00000002 0x0ec80100 0x000000fc>;       /* Internal messaging registers */
 
                        /* Outbound ranges, one memory and one IO,
                         * later cannot be changed
                         */
-                       ranges = <02000000 0 80000000 00000003 80000000 0 80000000
-                                 01000000 0 00000000 00000002 08000000 0 00010000>;
+                       ranges = <0x02000000 0x00000000 0x80000000 0x00000003 0x80000000 0x00000000 0x80000000
+                                 0x01000000 0x00000000 0x00000000 0x00000002 0x08000000 0x00000000 0x00010000>;
 
                        /* Inbound 2GB range starting at 0 */
-                       dma-ranges = <42000000 0 0 0 0 0 80000000>;
+                       dma-ranges = <0x42000000 0x0 0x0 0x0 0x0 0x0 0x80000000>;
 
                        /* Ebony has all 4 IRQ pins tied together per slot */
-                       interrupt-map-mask = <f800 0 0 0>;
+                       interrupt-map-mask = <0xf800 0x0 0x0 0x0>;
                        interrupt-map = <
                                /* IDSEL 1 */
-                               0800 0 0 0 &UIC0 17 8
+                               0x800 0x0 0x0 0x0 &UIC0 0x17 0x8
 
                                /* IDSEL 2 */
-                               1000 0 0 0 &UIC0 18 8
+                               0x1000 0x0 0x0 0x0 &UIC0 0x18 0x8
 
                                /* IDSEL 3 */
-                               1800 0 0 0 &UIC0 19 8
+                               0x1800 0x0 0x0 0x0 &UIC0 0x19 0x8
 
                                /* IDSEL 4 */
-                               2000 0 0 0 &UIC0 1a 8
+                               0x2000 0x0 0x0 0x0 &UIC0 0x1a 0x8
                        >;
                };
        };
index 92938557ac8a576d9fd8d27e6412beb65d17d8e3..53ef06cc213401680a4c9fe5c814b9a2cc411172 100644 (file)
@@ -9,12 +9,14 @@
  * any warranty of any kind, whether express or implied.
  */
 
+/dts-v1/;
+
 / {
        #address-cells = <1>;
        #size-cells = <1>;
        model = "ep405";
        compatible = "ep405";
-       dcr-parent = <&/cpus/cpu@0>;
+       dcr-parent = <&{/cpus/cpu@0}>;
 
        aliases {
                ethernet0 = &EMAC;
                cpu@0 {
                        device_type = "cpu";
                        model = "PowerPC,405GP";
-                       reg = <0>;
-                       clock-frequency = <bebc200>; /* Filled in by zImage */
+                       reg = <0x00000000>;
+                       clock-frequency = <200000000>; /* Filled in by zImage */
                        timebase-frequency = <0>; /* Filled in by zImage */
-                       i-cache-line-size = <20>;
-                       d-cache-line-size = <20>;
-                       i-cache-size = <4000>;
-                       d-cache-size = <4000>;
+                       i-cache-line-size = <32>;
+                       d-cache-line-size = <32>;
+                       i-cache-size = <16384>;
+                       d-cache-size = <16384>;
                        dcr-controller;
                        dcr-access-method = "native";
                };
 
        memory {
                device_type = "memory";
-               reg = <0 0>; /* Filled in by zImage */
+               reg = <0x00000000 0x00000000>; /* Filled in by zImage */
        };
 
        UIC0: interrupt-controller {
                compatible = "ibm,uic";
                interrupt-controller;
                cell-index = <0>;
-               dcr-reg = <0c0 9>;
+               dcr-reg = <0x0c0 0x009>;
                #address-cells = <0>;
                #size-cells = <0>;
                #interrupt-cells = <2>;
 
                SDRAM0: memory-controller {
                        compatible = "ibm,sdram-405gp";
-                       dcr-reg = <010 2>;
+                       dcr-reg = <0x010 0x002>;
                };
 
                MAL: mcmal {
                        compatible = "ibm,mcmal-405gp", "ibm,mcmal";
-                       dcr-reg = <180 62>;
+                       dcr-reg = <0x180 0x062>;
                        num-tx-chans = <1>;
                        num-rx-chans = <1>;
                        interrupt-parent = <&UIC0>;
                        interrupts = <
-                               4 /* TXEOB */
-                               4 /* RXEOB */
-                               4 /* SERR */
-                               4 /* TXDE */
-                               4 /* RXDE */>;
+                               0xb 0x4 /* TXEOB */
+                               0xc 0x4 /* RXEOB */
+                               0xa 0x4 /* SERR */
+                               0xd 0x4 /* TXDE */
+                               0xe 0x4 /* RXDE */>;
                };
 
                POB0: opb {
                        compatible = "ibm,opb-405gp", "ibm,opb";
                        #address-cells = <1>;
                        #size-cells = <1>;
-                       ranges = <ef600000 ef600000 a00000>;
-                       dcr-reg = <0a0 5>;
+                       ranges = <0xef600000 0xef600000 0x00a00000>;
+                       dcr-reg = <0x0a0 0x005>;
                        clock-frequency = <0>; /* Filled in by zImage */
 
                        UART0: serial@ef600300 {
                                device_type = "serial";
                                compatible = "ns16550";
-                               reg = <ef600300 8>;
-                               virtual-reg = <ef600300>;
+                               reg = <0xef600300 0x00000008>;
+                               virtual-reg = <0xef600300>;
                                clock-frequency = <0>; /* Filled in by zImage */
-                               current-speed = <2580>;
+                               current-speed = <9600>;
                                interrupt-parent = <&UIC0>;
-                               interrupts = <0 4>;
+                               interrupts = <0x0 0x4>;
                        };
 
                        UART1: serial@ef600400 {
                                device_type = "serial";
                                compatible = "ns16550";
-                               reg = <ef600400 8>;
-                               virtual-reg = <ef600400>;
+                               reg = <0xef600400 0x00000008>;
+                               virtual-reg = <0xef600400>;
                                clock-frequency = <0>; /* Filled in by zImage */
-                               current-speed = <2580>;
+                               current-speed = <9600>;
                                interrupt-parent = <&UIC0>;
-                               interrupts = <4>;
+                               interrupts = <0x1 0x4>;
                        };
 
                        IIC: i2c@ef600500 {
                                compatible = "ibm,iic-405gp", "ibm,iic";
-                               reg = <ef600500 11>;
+                               reg = <0xef600500 0x00000011>;
                                interrupt-parent = <&UIC0>;
-                               interrupts = <4>;
+                               interrupts = <0x2 0x4>;
                        };
 
                        GPIO: gpio@ef600700 {
                                compatible = "ibm,gpio-405gp";
-                               reg = <ef600700 20>;
+                               reg = <0xef600700 0x00000020>;
                        };
 
                        EMAC: ethernet@ef600800 {
-                               linux,network-index = <0>;
+                               linux,network-index = <0x0>;
                                device_type = "network";
                                compatible = "ibm,emac-405gp", "ibm,emac";
                                interrupt-parent = <&UIC0>;
                                interrupts = <
-                                       4 /* Ethernet */
-                                       4 /* Ethernet Wake Up */>;
+                                       0xf 0x4 /* Ethernet */
+                                       0x9 0x4 /* Ethernet Wake Up */>;
                                local-mac-address = [000000000000]; /* Filled in by zImage */
-                               reg = <ef600800 70>;
+                               reg = <0xef600800 0x00000070>;
                                mal-device = <&MAL>;
                                mal-tx-channel = <0>;
                                mal-rx-channel = <0>;
                                cell-index = <0>;
-                               max-frame-size = <5dc>;
-                               rx-fifo-size = <1000>;
-                               tx-fifo-size = <800>;
+                               max-frame-size = <1500>;
+                               rx-fifo-size = <4096>;
+                               tx-fifo-size = <2048>;
                                phy-mode = "rmii";
-                               phy-map = <00000000>;
+                               phy-map = <0x00000000>;
                        };
 
                };
 
                EBC0: ebc {
                        compatible = "ibm,ebc-405gp", "ibm,ebc";
-                       dcr-reg = <012 2>;
+                       dcr-reg = <0x012 0x002>;
                        #address-cells = <2>;
                        #size-cells = <1>;
 
                        /* NVRAM and RTC */
                        nvrtc@4,200000 {
                                compatible = "ds1742";
-                               reg = <4 200000 0>; /* size fixed up by zImage */
+                               reg = <0x00000004 0x00200000 0x00000000>; /* size fixed up by zImage */
                        };
 
                        /* "BCSR" CPLD contains a PCI irq controller */
                        bcsr@4,0 {
                                compatible = "ep405-bcsr";
-                               reg = <4 0 10>;
+                               reg = <0x00000004 0x00000000 0x00000010>;
                                interrupt-controller;
                                /* Routing table */
                                irq-routing = [ 00      /* SYSERR */
                        #address-cells = <3>;
                        compatible = "ibm,plb405gp-pci", "ibm,plb-pci";
                        primary;
-                       reg = <eec00000 8       /* Config space access */
-                              eed80000 4       /* IACK */
-                              eed80000 4       /* Special cycle */
-                              ef480000 40>;    /* Internal registers */
+                       reg = <0xeec00000 0x00000008    /* Config space access */
+                              0xeed80000 0x00000004    /* IACK */
+                              0xeed80000 0x00000004    /* Special cycle */
+                              0xef480000 0x00000040>;  /* Internal registers */
 
                        /* Outbound ranges, one memory and one IO,
                         * later cannot be changed. Chip supports a second
                         * IO range but we don't use it for now
                         */
-                       ranges = <02000000 0 80000000 80000000 0 20000000
-                                 01000000 0 00000000 e8000000 0 00010000>;
+                       ranges = <0x02000000 0x00000000 0x80000000 0x80000000 0x00000000 0x20000000
+                                 0x01000000 0x00000000 0x00000000 0xe8000000 0x00000000 0x00010000>;
 
                        /* Inbound 2GB range starting at 0 */
-                       dma-ranges = <42000000 0 0 0 0 80000000>;
+                       dma-ranges = <0x42000000 0x0 0x0 0x0 0x0 0x80000000>;
 
                        /* That's all I know about IRQs on that thing ... */
-                       interrupt-map-mask = <f800 0 0 0>;
+                       interrupt-map-mask = <0xf800 0x0 0x0 0x0>;
                        interrupt-map = <
                                /* USB */
-                               7000 0 0 0 &UIC0 1e 8 /* IRQ5 */
+                               0x7000 0x0 0x0 0x0 &UIC0 0x1e 0x8 /* IRQ5 */
                        >;
                };
        };
index 0f2fc077d8db4c181593e7bc836e60c647d18c3b..463650c5f61d9918c7053713aedc8939b507f3d6 100644 (file)
@@ -8,12 +8,14 @@
  * any warranty of any kind, whether express or implied.
  */
 
+/dts-v1/;
+
 / {
        #address-cells = <2>;
        #size-cells = <1>;
        model = "amcc,glacier";
        compatible = "amcc,glacier", "amcc,canyonlands";
-       dcr-parent = <&/cpus/cpu@0>;
+       dcr-parent = <&{/cpus/cpu@0}>;
 
        aliases {
                ethernet0 = &EMAC0;
                cpu@0 {
                        device_type = "cpu";
                        model = "PowerPC,460GT";
-                       reg = <0>;
+                       reg = <0x00000000>;
                        clock-frequency = <0>; /* Filled in by U-Boot */
                        timebase-frequency = <0>; /* Filled in by U-Boot */
-                       i-cache-line-size = <20>;
-                       d-cache-line-size = <20>;
-                       i-cache-size = <8000>;
-                       d-cache-size = <8000>;
+                       i-cache-line-size = <32>;
+                       d-cache-line-size = <32>;
+                       i-cache-size = <32768>;
+                       d-cache-size = <32768>;
                        dcr-controller;
                        dcr-access-method = "native";
                };
 
        memory {
                device_type = "memory";
-               reg = <0 0 0>; /* Filled in by U-Boot */
+               reg = <0x00000000 0x00000000 0x00000000>; /* Filled in by U-Boot */
        };
 
        UIC0: interrupt-controller0 {
                compatible = "ibm,uic-460gt","ibm,uic";
                interrupt-controller;
                cell-index = <0>;
-               dcr-reg = <0c0 009>;
+               dcr-reg = <0x0c0 0x009>;
                #address-cells = <0>;
                #size-cells = <0>;
                #interrupt-cells = <2>;
                compatible = "ibm,uic-460gt","ibm,uic";
                interrupt-controller;
                cell-index = <1>;
-               dcr-reg = <0d0 009>;
+               dcr-reg = <0x0d0 0x009>;
                #address-cells = <0>;
                #size-cells = <0>;
                #interrupt-cells = <2>;
-               interrupts = <1e 4 1f 4>; /* cascade */
+               interrupts = <0x1e 0x4 0x1f 0x4>; /* cascade */
                interrupt-parent = <&UIC0>;
        };
 
                compatible = "ibm,uic-460gt","ibm,uic";
                interrupt-controller;
                cell-index = <2>;
-               dcr-reg = <0e0 009>;
+               dcr-reg = <0x0e0 0x009>;
                #address-cells = <0>;
                #size-cells = <0>;
                #interrupt-cells = <2>;
-               interrupts = <a 4 b 4>; /* cascade */
+               interrupts = <0xa 0x4 0xb 0x4>; /* cascade */
                interrupt-parent = <&UIC0>;
        };
 
                compatible = "ibm,uic-460gt","ibm,uic";
                interrupt-controller;
                cell-index = <3>;
-               dcr-reg = <0f0 009>;
+               dcr-reg = <0x0f0 0x009>;
                #address-cells = <0>;
                #size-cells = <0>;
                #interrupt-cells = <2>;
-               interrupts = <10 4 11 4>; /* cascade */
+               interrupts = <0x10 0x4 0x11 0x4>; /* cascade */
                interrupt-parent = <&UIC0>;
        };
 
        SDR0: sdr {
                compatible = "ibm,sdr-460gt";
-               dcr-reg = <00e 002>;
+               dcr-reg = <0x00e 0x002>;
        };
 
        CPR0: cpr {
                compatible = "ibm,cpr-460gt";
-               dcr-reg = <00c 002>;
+               dcr-reg = <0x00c 0x002>;
        };
 
        plb {
 
                SDRAM0: sdram {
                        compatible = "ibm,sdram-460gt", "ibm,sdram-405gp";
-                       dcr-reg = <010 2>;
+                       dcr-reg = <0x010 0x002>;
                };
 
                MAL0: mcmal {
                        compatible = "ibm,mcmal-460gt", "ibm,mcmal2";
-                       dcr-reg = <180 62>;
+                       dcr-reg = <0x180 0x062>;
                        num-tx-chans = <4>;
-                       num-rx-chans = <20>;
+                       num-rx-chans = <32>;
                        #address-cells = <0>;
                        #size-cells = <0>;
                        interrupt-parent = <&UIC2>;
-                       interrupts = <  /*TXEOB*/ 4
-                                       /*RXEOB*/ 4
-                                       /*SERR*/  4
-                                       /*TXDE*/  4
-                                       /*RXDE*/  4>;
-                       desc-base-addr-high = <8>;
+                       interrupts = <  /*TXEOB*/ 0x6 0x4
+                                       /*RXEOB*/ 0x7 0x4
+                                       /*SERR*/  0x3 0x4
+                                       /*TXDE*/  0x4 0x4
+                                       /*RXDE*/  0x5 0x4>;
+                       desc-base-addr-high = <0x8>;
                };
 
                POB0: opb {
                        compatible = "ibm,opb-460gt", "ibm,opb";
                        #address-cells = <1>;
                        #size-cells = <1>;
-                       ranges = <b0000000 4 b0000000 50000000>;
+                       ranges = <0xb0000000 0x00000004 0xb0000000 0x50000000>;
                        clock-frequency = <0>; /* Filled in by U-Boot */
 
                        EBC0: ebc {
                                compatible = "ibm,ebc-460gt", "ibm,ebc";
-                               dcr-reg = <012 2>;
+                               dcr-reg = <0x012 0x002>;
                                #address-cells = <2>;
                                #size-cells = <1>;
                                clock-frequency = <0>; /* Filled in by U-Boot */
                                /* ranges property is supplied by U-Boot */
-                               interrupts = <4>;
+                               interrupts = <0x6 0x4>;
                                interrupt-parent = <&UIC1>;
 
                                nor_flash@0,0 {
                                        compatible = "amd,s29gl512n", "cfi-flash";
                                        bank-width = <2>;
-                                       reg = <0 000000 4000000>;
+                                       reg = <0x00000000 0x00000000 0x04000000>;
                                        #address-cells = <1>;
                                        #size-cells = <1>;
                                        partition@0 {
                                                label = "kernel";
-                                               reg = <0 1e0000>;
+                                               reg = <0x00000000 0x001e0000>;
                                        };
                                        partition@1e0000 {
                                                label = "dtb";
-                                               reg = <1e0000 20000>;
+                                               reg = <0x001e0000 0x00020000>;
                                        };
                                        partition@200000 {
                                                label = "ramdisk";
-                                               reg = <200000 1400000>;
+                                               reg = <0x00200000 0x01400000>;
                                        };
                                        partition@1600000 {
                                                label = "jffs2";
-                                               reg = <1600000 400000>;
+                                               reg = <0x01600000 0x00400000>;
                                        };
                                        partition@1a00000 {
                                                label = "user";
-                                               reg = <1a00000 2560000>;
+                                               reg = <0x01a00000 0x02560000>;
                                        };
                                        partition@3f60000 {
                                                label = "env";
-                                               reg = <3f60000 40000>;
+                                               reg = <0x03f60000 0x00040000>;
                                        };
                                        partition@3fa0000 {
                                                label = "u-boot";
-                                               reg = <3fa0000 60000>;
+                                               reg = <0x03fa0000 0x00060000>;
                                        };
                                };
                        };
                        UART0: serial@ef600300 {
                                device_type = "serial";
                                compatible = "ns16550";
-                               reg = <ef600300 8>;
-                               virtual-reg = <ef600300>;
+                               reg = <0xef600300 0x00000008>;
+                               virtual-reg = <0xef600300>;
                                clock-frequency = <0>; /* Filled in by U-Boot */
                                current-speed = <0>; /* Filled in by U-Boot */
                                interrupt-parent = <&UIC1>;
-                               interrupts = <4>;
+                               interrupts = <0x1 0x4>;
                        };
 
                        UART1: serial@ef600400 {
                                device_type = "serial";
                                compatible = "ns16550";
-                               reg = <ef600400 8>;
-                               virtual-reg = <ef600400>;
+                               reg = <0xef600400 0x00000008>;
+                               virtual-reg = <0xef600400>;
                                clock-frequency = <0>; /* Filled in by U-Boot */
                                current-speed = <0>; /* Filled in by U-Boot */
                                interrupt-parent = <&UIC0>;
-                               interrupts = <4>;
+                               interrupts = <0x1 0x4>;
                        };
 
                        UART2: serial@ef600500 {
                                device_type = "serial";
                                compatible = "ns16550";
-                               reg = <ef600500 8>;
-                               virtual-reg = <ef600500>;
+                               reg = <0xef600500 0x00000008>;
+                               virtual-reg = <0xef600500>;
                                clock-frequency = <0>; /* Filled in by U-Boot */
                                current-speed = <0>; /* Filled in by U-Boot */
                                interrupt-parent = <&UIC1>;
-                               interrupts = <1d 4>;
+                               interrupts = <0x1d 0x4>;
                        };
 
                        UART3: serial@ef600600 {
                                device_type = "serial";
                                compatible = "ns16550";
-                               reg = <ef600600 8>;
-                               virtual-reg = <ef600600>;
+                               reg = <0xef600600 0x00000008>;
+                               virtual-reg = <0xef600600>;
                                clock-frequency = <0>; /* Filled in by U-Boot */
                                current-speed = <0>; /* Filled in by U-Boot */
                                interrupt-parent = <&UIC1>;
-                               interrupts = <1e 4>;
+                               interrupts = <0x1e 0x4>;
                        };
 
                        IIC0: i2c@ef600700 {
                                compatible = "ibm,iic-460gt", "ibm,iic";
-                               reg = <ef600700 14>;
+                               reg = <0xef600700 0x00000014>;
                                interrupt-parent = <&UIC0>;
-                               interrupts = <4>;
+                               interrupts = <0x2 0x4>;
                        };
 
                        IIC1: i2c@ef600800 {
                                compatible = "ibm,iic-460gt", "ibm,iic";
-                               reg = <ef600800 14>;
+                               reg = <0xef600800 0x00000014>;
                                interrupt-parent = <&UIC0>;
-                               interrupts = <4>;
+                               interrupts = <0x3 0x4>;
                        };
 
                        ZMII0: emac-zmii@ef600d00 {
                                compatible = "ibm,zmii-460gt", "ibm,zmii";
-                               reg = <ef600d00 c>;
+                               reg = <0xef600d00 0x0000000c>;
                        };
 
                        RGMII0: emac-rgmii@ef601500 {
                                compatible = "ibm,rgmii-460gt", "ibm,rgmii";
-                               reg = <ef601500 8>;
+                               reg = <0xef601500 0x00000008>;
                                has-mdio;
                        };
 
                        RGMII1: emac-rgmii@ef601600 {
                                compatible = "ibm,rgmii-460gt", "ibm,rgmii";
-                               reg = <ef601600 8>;
+                               reg = <0xef601600 0x00000008>;
                                has-mdio;
                        };
 
                        TAH0: emac-tah@ef601350 {
                                compatible = "ibm,tah-460gt", "ibm,tah";
-                               reg = <ef601350 30>;
+                               reg = <0xef601350 0x00000030>;
                        };
 
                        TAH1: emac-tah@ef601450 {
                                compatible = "ibm,tah-460gt", "ibm,tah";
-                               reg = <ef601450 30>;
+                               reg = <0xef601450 0x00000030>;
                        };
 
                        EMAC0: ethernet@ef600e00 {
                                device_type = "network";
                                compatible = "ibm,emac-460gt", "ibm,emac4";
                                interrupt-parent = <&EMAC0>;
-                               interrupts = <0 1>;
+                               interrupts = <0x0 0x1>;
                                #interrupt-cells = <1>;
                                #address-cells = <0>;
                                #size-cells = <0>;
-                               interrupt-map = </*Status*/ 0 &UIC2 10 4
-                                                /*Wake*/   1 &UIC2 14 4>;
-                               reg = <ef600e00 70>;
+                               interrupt-map = </*Status*/ 0x0 &UIC2 0x10 0x4
+                                                /*Wake*/   0x1 &UIC2 0x14 0x4>;
+                               reg = <0xef600e00 0x00000070>;
                                local-mac-address = [000000000000]; /* Filled in by U-Boot */
                                mal-device = <&MAL0>;
                                mal-tx-channel = <0>;
                                mal-rx-channel = <0>;
                                cell-index = <0>;
-                               max-frame-size = <2328>;
-                               rx-fifo-size = <1000>;
-                               tx-fifo-size = <800>;
+                               max-frame-size = <9000>;
+                               rx-fifo-size = <4096>;
+                               tx-fifo-size = <2048>;
                                phy-mode = "rgmii";
-                               phy-map = <00000000>;
+                               phy-map = <0x00000000>;
                                rgmii-device = <&RGMII0>;
                                rgmii-channel = <0>;
                                tah-device = <&TAH0>;
                                device_type = "network";
                                compatible = "ibm,emac-460gt", "ibm,emac4";
                                interrupt-parent = <&EMAC1>;
-                               interrupts = <0 1>;
+                               interrupts = <0x0 0x1>;
                                #interrupt-cells = <1>;
                                #address-cells = <0>;
                                #size-cells = <0>;
-                               interrupt-map = </*Status*/ 0 &UIC2 11 4
-                                                /*Wake*/   1 &UIC2 15 4>;
-                               reg = <ef600f00 70>;
+                               interrupt-map = </*Status*/ 0x0 &UIC2 0x11 0x4
+                                                /*Wake*/   0x1 &UIC2 0x15 0x4>;
+                               reg = <0xef600f00 0x00000070>;
                                local-mac-address = [000000000000]; /* Filled in by U-Boot */
                                mal-device = <&MAL0>;
                                mal-tx-channel = <1>;
                                mal-rx-channel = <8>;
                                cell-index = <1>;
-                               max-frame-size = <2328>;
-                               rx-fifo-size = <1000>;
-                               tx-fifo-size = <800>;
+                               max-frame-size = <9000>;
+                               rx-fifo-size = <4096>;
+                               tx-fifo-size = <2048>;
                                phy-mode = "rgmii";
-                               phy-map = <00000000>;
+                               phy-map = <0x00000000>;
                                rgmii-device = <&RGMII0>;
                                rgmii-channel = <1>;
                                tah-device = <&TAH1>;
                                device_type = "network";
                                compatible = "ibm,emac-460gt", "ibm,emac4";
                                interrupt-parent = <&EMAC2>;
-                               interrupts = <0 1>;
+                               interrupts = <0x0 0x1>;
                                #interrupt-cells = <1>;
                                #address-cells = <0>;
                                #size-cells = <0>;
-                               interrupt-map = </*Status*/ 0 &UIC2 12 4
-                                                /*Wake*/   1 &UIC2 16 4>;
-                               reg = <ef601100 70>;
+                               interrupt-map = </*Status*/ 0x0 &UIC2 0x12 0x4
+                                                /*Wake*/   0x1 &UIC2 0x16 0x4>;
+                               reg = <0xef601100 0x00000070>;
                                local-mac-address = [000000000000]; /* Filled in by U-Boot */
                                mal-device = <&MAL0>;
                                mal-tx-channel = <2>;
-                               mal-rx-channel = <10>;
+                               mal-rx-channel = <16>;
                                cell-index = <2>;
-                               max-frame-size = <2328>;
-                               rx-fifo-size = <1000>;
-                               tx-fifo-size = <800>;
+                               max-frame-size = <9000>;
+                               rx-fifo-size = <4096>;
+                               tx-fifo-size = <2048>;
                                phy-mode = "rgmii";
-                               phy-map = <00000000>;
+                               phy-map = <0x00000000>;
                                rgmii-device = <&RGMII1>;
                                rgmii-channel = <0>;
                                has-inverted-stacr-oc;
                                device_type = "network";
                                compatible = "ibm,emac-460gt", "ibm,emac4";
                                interrupt-parent = <&EMAC3>;
-                               interrupts = <0 1>;
+                               interrupts = <0x0 0x1>;
                                #interrupt-cells = <1>;
                                #address-cells = <0>;
                                #size-cells = <0>;
-                               interrupt-map = </*Status*/ 0 &UIC2 13 4
-                                                /*Wake*/   1 &UIC2 17 4>;
-                               reg = <ef601200 70>;
+                               interrupt-map = </*Status*/ 0x0 &UIC2 0x13 0x4
+                                                /*Wake*/   0x1 &UIC2 0x17 0x4>;
+                               reg = <0xef601200 0x00000070>;
                                local-mac-address = [000000000000]; /* Filled in by U-Boot */
                                mal-device = <&MAL0>;
                                mal-tx-channel = <3>;
-                               mal-rx-channel = <18>;
+                               mal-rx-channel = <24>;
                                cell-index = <3>;
-                               max-frame-size = <2328>;
-                               rx-fifo-size = <1000>;
-                               tx-fifo-size = <800>;
+                               max-frame-size = <9000>;
+                               rx-fifo-size = <4096>;
+                               tx-fifo-size = <2048>;
                                phy-mode = "rgmii";
-                               phy-map = <00000000>;
+                               phy-map = <0x00000000>;
                                rgmii-device = <&RGMII1>;
                                rgmii-channel = <1>;
                                has-inverted-stacr-oc;
                        primary;
                        large-inbound-windows;
                        enable-msi-hole;
-                       reg = <c 0ec00000   8   /* Config space access */
-                              0 0 0            /* no IACK cycles */
-                              c 0ed00000   4   /* Special cycles */
-                              c 0ec80000 100   /* Internal registers */
-                              c 0ec80100  fc>; /* Internal messaging registers */
+                       reg = <0x0000000c 0x0ec00000   0x00000008       /* Config space access */
+                              0x00000000 0x00000000 0x00000000         /* no IACK cycles */
+                              0x0000000c 0x0ed00000   0x00000004   /* Special cycles */
+                              0x0000000c 0x0ec80000 0x00000100 /* Internal registers */
+                              0x0000000c 0x0ec80100  0x000000fc>;      /* Internal messaging registers */
 
                        /* Outbound ranges, one memory and one IO,
                         * later cannot be changed
                         */
-                       ranges = <02000000 0 80000000 0000000d 80000000 0 80000000
-                                 01000000 0 00000000 0000000c 08000000 0 00010000>;
+                       ranges = <0x02000000 0x00000000 0x80000000 0x0000000d 0x80000000 0x00000000 0x80000000
+                                 0x01000000 0x00000000 0x00000000 0x0000000c 0x08000000 0x00000000 0x00010000>;
 
                        /* Inbound 2GB range starting at 0 */
-                       dma-ranges = <42000000 0 0 0 0 0 80000000>;
+                       dma-ranges = <0x42000000 0x0 0x0 0x0 0x0 0x0 0x80000000>;
 
                        /* This drives busses 0 to 0x3f */
-                       bus-range = <0 3f>;
+                       bus-range = <0x0 0x3f>;
 
                        /* All PCI interrupts are routed to ext IRQ 2 -> UIC1-0 */
-                       interrupt-map-mask = <0000 0 0 0>;
-                       interrupt-map = < 0000 0 0 0 &UIC1 0 8 >;
+                       interrupt-map-mask = <0x0 0x0 0x0 0x0>;
+                       interrupt-map = < 0x0 0x0 0x0 0x0 &UIC1 0x0 0x8 >;
                };
 
                PCIE0: pciex@d00000000 {
                        #address-cells = <3>;
                        compatible = "ibm,plb-pciex-460ex", "ibm,plb-pciex";
                        primary;
-                       port = <0>; /* port number */
-                       reg = <d 00000000 20000000      /* Config space access */
-                              c 08010000 00001000>;    /* Registers */
-                       dcr-reg = <100 020>;
-                       sdr-base = <300>;
+                       port = <0x0>; /* port number */
+                       reg = <0x0000000d 0x00000000 0x20000000 /* Config space access */
+                              0x0000000c 0x08010000 0x00001000>;       /* Registers */
+                       dcr-reg = <0x100 0x020>;
+                       sdr-base = <0x300>;
 
                        /* Outbound ranges, one memory and one IO,
                         * later cannot be changed
                         */
-                       ranges = <02000000 0 80000000 0000000e 00000000 0 80000000
-                                 01000000 0 00000000 0000000f 80000000 0 00010000>;
+                       ranges = <0x02000000 0x00000000 0x80000000 0x0000000e 0x00000000 0x00000000 0x80000000
+                                 0x01000000 0x00000000 0x00000000 0x0000000f 0x80000000 0x00000000 0x00010000>;
 
                        /* Inbound 2GB range starting at 0 */
-                       dma-ranges = <42000000 0 0 0 0 0 80000000>;
+                       dma-ranges = <0x42000000 0x0 0x0 0x0 0x0 0x0 0x80000000>;
 
                        /* This drives busses 40 to 0x7f */
-                       bus-range = <40 7f>;
+                       bus-range = <0x40 0x7f>;
 
                        /* Legacy interrupts (note the weird polarity, the bridge seems
                         * to invert PCIe legacy interrupts).
                         * below are basically de-swizzled numbers.
                         * The real slot is on idsel 0, so the swizzling is 1:1
                         */
-                       interrupt-map-mask = <0000 0 0 7>;
+                       interrupt-map-mask = <0x0 0x0 0x0 0x7>;
                        interrupt-map = <
-                               0000 0 0 1 &UIC3 c 4 /* swizzled int A */
-                               0000 0 0 2 &UIC3 d 4 /* swizzled int B */
-                               0000 0 0 3 &UIC3 e 4 /* swizzled int C */
-                               0000 0 0 4 &UIC3 f 4 /* swizzled int D */>;
+                               0x0 0x0 0x0 0x1 &UIC3 0xc 0x4 /* swizzled int A */
+                               0x0 0x0 0x0 0x2 &UIC3 0xd 0x4 /* swizzled int B */
+                               0x0 0x0 0x0 0x3 &UIC3 0xe 0x4 /* swizzled int C */
+                               0x0 0x0 0x0 0x4 &UIC3 0xf 0x4 /* swizzled int D */>;
                };
 
                PCIE1: pciex@d20000000 {
                        #address-cells = <3>;
                        compatible = "ibm,plb-pciex-460ex", "ibm,plb-pciex";
                        primary;
-                       port = <1>; /* port number */
-                       reg = <d 20000000 20000000      /* Config space access */
-                              c 08011000 00001000>;    /* Registers */
-                       dcr-reg = <120 020>;
-                       sdr-base = <340>;
+                       port = <0x1>; /* port number */
+                       reg = <0x0000000d 0x20000000 0x20000000 /* Config space access */
+                              0x0000000c 0x08011000 0x00001000>;       /* Registers */
+                       dcr-reg = <0x120 0x020>;
+                       sdr-base = <0x340>;
 
                        /* Outbound ranges, one memory and one IO,
                         * later cannot be changed
                         */
-                       ranges = <02000000 0 80000000 0000000e 80000000 0 80000000
-                                 01000000 0 00000000 0000000f 80010000 0 00010000>;
+                       ranges = <0x02000000 0x00000000 0x80000000 0x0000000e 0x80000000 0x00000000 0x80000000
+                                 0x01000000 0x00000000 0x00000000 0x0000000f 0x80010000 0x00000000 0x00010000>;
 
                        /* Inbound 2GB range starting at 0 */
-                       dma-ranges = <42000000 0 0 0 0 0 80000000>;
+                       dma-ranges = <0x42000000 0x0 0x0 0x0 0x0 0x0 0x80000000>;
 
                        /* This drives busses 80 to 0xbf */
-                       bus-range = <80 bf>;
+                       bus-range = <0x80 0xbf>;
 
                        /* Legacy interrupts (note the weird polarity, the bridge seems
                         * to invert PCIe legacy interrupts).
                         * below are basically de-swizzled numbers.
                         * The real slot is on idsel 0, so the swizzling is 1:1
                         */
-                       interrupt-map-mask = <0000 0 0 7>;
+                       interrupt-map-mask = <0x0 0x0 0x0 0x7>;
                        interrupt-map = <
-                               0000 0 0 1 &UIC3 10 4 /* swizzled int A */
-                               0000 0 0 2 &UIC3 11 4 /* swizzled int B */
-                               0000 0 0 3 &UIC3 12 4 /* swizzled int C */
-                               0000 0 0 4 &UIC3 13 4 /* swizzled int D */>;
+                               0x0 0x0 0x0 0x1 &UIC3 0x10 0x4 /* swizzled int A */
+                               0x0 0x0 0x0 0x2 &UIC3 0x11 0x4 /* swizzled int B */
+                               0x0 0x0 0x0 0x3 &UIC3 0x12 0x4 /* swizzled int C */
+                               0x0 0x0 0x0 0x4 &UIC3 0x13 0x4 /* swizzled int D */>;
                };
        };
 };
index b5d95ac24dbf1bd1cb6d589aed908f31f3b152de..2c2fceaabbcd8ce5464d1db28c55ab2bd4b2e22f 100644 (file)
@@ -8,12 +8,14 @@
  * any warranty of any kind, whether express or implied.
  */
 
+/dts-v1/;
+
 / {
        #address-cells = <1>;
        #size-cells = <1>;
        model = "amcc,haleakala";
        compatible = "amcc,haleakala", "amcc,kilauea";
-       dcr-parent = <&/cpus/cpu@0>;
+       dcr-parent = <&{/cpus/cpu@0}>;
 
        aliases {
                ethernet0 = &EMAC0;
                cpu@0 {
                        device_type = "cpu";
                        model = "PowerPC,405EXr";
-                       reg = <0>;
+                       reg = <0x00000000>;
                        clock-frequency = <0>; /* Filled in by U-Boot */
                        timebase-frequency = <0>; /* Filled in by U-Boot */
-                       i-cache-line-size = <20>;
-                       d-cache-line-size = <20>;
-                       i-cache-size = <4000>; /* 16 kB */
-                       d-cache-size = <4000>; /* 16 kB */
+                       i-cache-line-size = <32>;
+                       d-cache-line-size = <32>;
+                       i-cache-size = <16384>; /* 16 kB */
+                       d-cache-size = <16384>; /* 16 kB */
                        dcr-controller;
                        dcr-access-method = "native";
                };
 
        memory {
                device_type = "memory";
-               reg = <0 0>; /* Filled in by U-Boot */
+               reg = <0x00000000 0x00000000>; /* Filled in by U-Boot */
        };
 
        UIC0: interrupt-controller {
                compatible = "ibm,uic-405exr", "ibm,uic";
                interrupt-controller;
                cell-index = <0>;
-               dcr-reg = <0c0 009>;
+               dcr-reg = <0x0c0 0x009>;
                #address-cells = <0>;
                #size-cells = <0>;
                #interrupt-cells = <2>;
                compatible = "ibm,uic-405exr","ibm,uic";
                interrupt-controller;
                cell-index = <1>;
-               dcr-reg = <0d0 009>;
+               dcr-reg = <0x0d0 0x009>;
                #address-cells = <0>;
                #size-cells = <0>;
                #interrupt-cells = <2>;
-               interrupts = <1e 4 1f 4>; /* cascade */
+               interrupts = <0x1e 0x4 0x1f 0x4>; /* cascade */
                interrupt-parent = <&UIC0>;
        };
 
                compatible = "ibm,uic-405exr","ibm,uic";
                interrupt-controller;
                cell-index = <2>;
-               dcr-reg = <0e0 009>;
+               dcr-reg = <0x0e0 0x009>;
                #address-cells = <0>;
                #size-cells = <0>;
                #interrupt-cells = <2>;
-               interrupts = <1c 4 1d 4>; /* cascade */
+               interrupts = <0x1c 0x4 0x1d 0x4>; /* cascade */
                interrupt-parent = <&UIC0>;
        };
 
 
                SDRAM0: memory-controller {
                        compatible = "ibm,sdram-405exr";
-                       dcr-reg = <010 2>;
+                       dcr-reg = <0x010 0x002>;
                };
 
                MAL0: mcmal {
                        compatible = "ibm,mcmal-405exr", "ibm,mcmal2";
-                       dcr-reg = <180 62>;
+                       dcr-reg = <0x180 0x062>;
                        num-tx-chans = <2>;
                        num-rx-chans = <2>;
                        interrupt-parent = <&MAL0>;
-                       interrupts = <0 1 2 3 4>;
+                       interrupts = <0x0 0x1 0x2 0x3 0x4>;
                        #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>;
+                       interrupt-map = </*TXEOB*/ 0x0 &UIC0 0xa 0x4
+                                       /*RXEOB*/ 0x1 &UIC0 0xb 0x4
+                                       /*SERR*/  0x2 &UIC1 0x0 0x4
+                                       /*TXDE*/  0x3 &UIC1 0x1 0x4
+                                       /*RXDE*/  0x4 &UIC1 0x2 0x4>;
+                       interrupt-map-mask = <0xffffffff>;
                };
 
                POB0: opb {
                        compatible = "ibm,opb-405exr", "ibm,opb";
                        #address-cells = <1>;
                        #size-cells = <1>;
-                       ranges = <80000000 80000000 10000000
-                                 ef600000 ef600000 a00000
-                                 f0000000 f0000000 10000000>;
-                       dcr-reg = <0a0 5>;
+                       ranges = <0x80000000 0x80000000 0x10000000
+                                 0xef600000 0xef600000 0x00a00000
+                                 0xf0000000 0xf0000000 0x10000000>;
+                       dcr-reg = <0x0a0 0x005>;
                        clock-frequency = <0>; /* Filled in by U-Boot */
 
                        EBC0: ebc {
                                compatible = "ibm,ebc-405exr", "ibm,ebc";
-                               dcr-reg = <012 2>;
+                               dcr-reg = <0x012 0x002>;
                                #address-cells = <2>;
                                #size-cells = <1>;
                                clock-frequency = <0>; /* Filled in by U-Boot */
                                /* ranges property is supplied by U-Boot */
-                               interrupts = <1>;
+                               interrupts = <0x5 0x1>;
                                interrupt-parent = <&UIC1>;
 
                                nor_flash@0,0 {
                                        compatible = "amd,s29gl512n", "cfi-flash";
                                        bank-width = <2>;
-                                       reg = <0 000000 4000000>;
+                                       reg = <0x00000000 0x00000000 0x04000000>;
                                        #address-cells = <1>;
                                        #size-cells = <1>;
                                        partition@0 {
                                                label = "kernel";
-                                               reg = <0 200000>;
+                                               reg = <0x00000000 0x00200000>;
                                        };
                                        partition@200000 {
                                                label = "root";
-                                               reg = <200000 200000>;
+                                               reg = <0x00200000 0x00200000>;
                                        };
                                        partition@400000 {
                                                label = "user";
-                                               reg = <400000 3b60000>;
+                                               reg = <0x00400000 0x03b60000>;
                                        };
                                        partition@3f60000 {
                                                label = "env";
-                                               reg = <3f60000 40000>;
+                                               reg = <0x03f60000 0x00040000>;
                                        };
                                        partition@3fa0000 {
                                                label = "u-boot";
-                                               reg = <3fa0000 60000>;
+                                               reg = <0x03fa0000 0x00060000>;
                                        };
                                };
                        };
                        UART0: serial@ef600200 {
                                device_type = "serial";
                                compatible = "ns16550";
-                               reg = <ef600200 8>;
-                               virtual-reg = <ef600200>;
+                               reg = <0xef600200 0x00000008>;
+                               virtual-reg = <0xef600200>;
                                clock-frequency = <0>; /* Filled in by U-Boot */
                                current-speed = <0>;
                                interrupt-parent = <&UIC0>;
-                               interrupts = <1a 4>;
+                               interrupts = <0x1a 0x4>;
                        };
 
                        UART1: serial@ef600300 {
                                device_type = "serial";
                                compatible = "ns16550";
-                               reg = <ef600300 8>;
-                               virtual-reg = <ef600300>;
+                               reg = <0xef600300 0x00000008>;
+                               virtual-reg = <0xef600300>;
                                clock-frequency = <0>; /* Filled in by U-Boot */
                                current-speed = <0>;
                                interrupt-parent = <&UIC0>;
-                               interrupts = <4>;
+                               interrupts = <0x1 0x4>;
                        };
 
                        IIC0: i2c@ef600400 {
                                compatible = "ibm,iic-405exr", "ibm,iic";
-                               reg = <ef600400 14>;
+                               reg = <0xef600400 0x00000014>;
                                interrupt-parent = <&UIC0>;
-                               interrupts = <4>;
+                               interrupts = <0x2 0x4>;
                        };
 
                        IIC1: i2c@ef600500 {
                                compatible = "ibm,iic-405exr", "ibm,iic";
-                               reg = <ef600500 14>;
+                               reg = <0xef600500 0x00000014>;
                                interrupt-parent = <&UIC0>;
-                               interrupts = <4>;
+                               interrupts = <0x7 0x4>;
                        };
 
 
                        RGMII0: emac-rgmii@ef600b00 {
                                compatible = "ibm,rgmii-405exr", "ibm,rgmii";
-                               reg = <ef600b00 104>;
+                               reg = <0xef600b00 0x00000104>;
                                has-mdio;
                        };
 
                        EMAC0: ethernet@ef600900 {
-                               linux,network-index = <0>;
+                               linux,network-index = <0x0>;
                                device_type = "network";
                                compatible = "ibm,emac-405exr", "ibm,emac4";
                                interrupt-parent = <&EMAC0>;
-                               interrupts = <0 1>;
+                               interrupts = <0x0 0x1>;
                                #interrupt-cells = <1>;
                                #address-cells = <0>;
                                #size-cells = <0>;
-                               interrupt-map = </*Status*/ 0 &UIC0 18 4
-                                               /*Wake*/  1 &UIC1 1d 4>;
-                               reg = <ef600900 70>;
+                               interrupt-map = </*Status*/ 0x0 &UIC0 0x18 0x4
+                                               /*Wake*/  0x1 &UIC1 0x1d 0x4>;
+                               reg = <0xef600900 0x00000070>;
                                local-mac-address = [000000000000]; /* Filled in by U-Boot */
                                mal-device = <&MAL0>;
                                mal-tx-channel = <0>;
                                mal-rx-channel = <0>;
                                cell-index = <0>;
-                               max-frame-size = <2328>;
-                               rx-fifo-size = <1000>;
-                               tx-fifo-size = <800>;
+                               max-frame-size = <9000>;
+                               rx-fifo-size = <4096>;
+                               tx-fifo-size = <2048>;
                                phy-mode = "rgmii";
-                               phy-map = <00000000>;
+                               phy-map = <0x00000000>;
                                rgmii-device = <&RGMII0>;
                                rgmii-channel = <0>;
                                has-inverted-stacr-oc;
                        #address-cells = <3>;
                        compatible = "ibm,plb-pciex-405ex", "ibm,plb-pciex";
                        primary;
-                       port = <0>; /* port number */
-                       reg = <a0000000 20000000        /* Config space access */
-                              ef000000 00001000>;      /* Registers */
-                       dcr-reg = <040 020>;
-                       sdr-base = <400>;
+                       port = <0x0>; /* port number */
+                       reg = <0xa0000000 0x20000000    /* Config space access */
+                              0xef000000 0x00001000>;  /* Registers */
+                       dcr-reg = <0x040 0x020>;
+                       sdr-base = <0x400>;
 
                        /* Outbound ranges, one memory and one IO,
                         * later cannot be changed
                         */
-                       ranges = <02000000 0 80000000 90000000 0 08000000
-                                 01000000 0 00000000 e0000000 0 00010000>;
+                       ranges = <0x02000000 0x00000000 0x80000000 0x90000000 0x00000000 0x08000000
+                                 0x01000000 0x00000000 0x00000000 0xe0000000 0x00000000 0x00010000>;
 
                        /* Inbound 2GB range starting at 0 */
-                       dma-ranges = <42000000 0 0 0 0 80000000>;
+                       dma-ranges = <0x42000000 0x0 0x0 0x0 0x0 0x80000000>;
 
                        /* This drives busses 0x00 to 0x3f */
-                       bus-range = <03f>;
+                       bus-range = <0x0 0x3f>;
 
                        /* Legacy interrupts (note the weird polarity, the bridge seems
                         * to invert PCIe legacy interrupts).
                         * below are basically de-swizzled numbers.
                         * The real slot is on idsel 0, so the swizzling is 1:1
                         */
-                       interrupt-map-mask = <0000 0 0 7>;
+                       interrupt-map-mask = <0x0 0x0 0x0 0x7>;
                        interrupt-map = <
-                               0000 0 0 1 &UIC2 0 4 /* swizzled int A */
-                               0000 0 0 2 &UIC2 1 4 /* swizzled int B */
-                               0000 0 0 3 &UIC2 2 4 /* swizzled int C */
-                               0000 0 0 4 &UIC2 3 4 /* swizzled int D */>;
+                               0x0 0x0 0x0 0x1 &UIC2 0x0 0x4 /* swizzled int A */
+                               0x0 0x0 0x0 0x2 &UIC2 0x1 0x4 /* swizzled int B */
+                               0x0 0x0 0x0 0x3 &UIC2 0x2 0x4 /* swizzled int C */
+                               0x0 0x0 0x0 0x4 &UIC2 0x3 0x4 /* swizzled int D */>;
                };
        };
 };
index b5d87895fe060977fe8f9ff6e05c4ee726bcb9ed..f87fe7b9ced946e6e5a1ac699d97af48404397cb 100644 (file)
@@ -10,6 +10,8 @@
  * any warranty of any kind, whether express or implied.
  */
 
+/dts-v1/;
+
 / {
        model = "41K7339";
        compatible = "ibm,holly";
                #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>;
+                       reg = <0x00000000>;
+                       d-cache-line-size = <32>;
+                       i-cache-line-size = <32>;
+                       d-cache-size = <32768>;
+                       i-cache-size = <32768>;
+                       d-cache-sets = <128>;
+                       i-cache-sets = <128>;
+                       timebase-frequency = <50000000>;
+                       clock-frequency = <600000000>;
+                       bus-frequency = <200000000>;
                };
        };
 
        memory@0 {
                device_type = "memory";
-               reg = <00000000 20000000>;
+               reg = <0x00000000 0x20000000>;
        };
 
        tsi109@c0000000 {
                compatible = "tsi109-bridge", "tsi108-bridge";
                #address-cells = <1>;
                #size-cells = <1>;
-               ranges = <00000000 c0000000 00010000>;
-               reg = <c0000000 00010000>;
+               ranges = <0x00000000 0xc0000000 0x00010000>;
+               reg = <0xc0000000 0x00010000>;
 
                i2c@7000 {
                        device_type = "i2c";
                        compatible  = "tsi109-i2c", "tsi108-i2c";
                        interrupt-parent = <&MPIC>;
-                       interrupts = <2>;
-                       reg = <7000 400>;
+                       interrupts = <0xe 0x2>;
+                       reg = <0x00007000 0x00000400>;
                };
 
                MDIO: mdio@6000 {
                        device_type = "mdio";
                        compatible = "tsi109-mdio", "tsi108-mdio";
-                       reg = <6000 50>;
+                       reg = <0x00006000 0x00000050>;
                        #address-cells = <1>;
                        #size-cells = <0>;
 
                        PHY1: ethernet-phy@1 {
                                compatible = "bcm5461a";
-                               reg = <1>;
+                               reg = <0x00000001>;
                                txc-rxc-delay-disable;
                        };
 
                        PHY2: ethernet-phy@2 {
                                compatible = "bcm5461a";
-                               reg = <2>;
+                               reg = <0x00000002>;
                                txc-rxc-delay-disable;
                        };
                };
                        compatible = "tsi109-ethernet", "tsi108-ethernet";
                        #address-cells = <1>;
                        #size-cells = <0>;
-                       reg = <6000 200>;
+                       reg = <0x00006000 0x00000200>;
                        local-mac-address = [ 00 00 00 00 00 00 ];
                        interrupt-parent = <&MPIC>;
-                       interrupts = <10 2>;
+                       interrupts = <0x10 0x2>;
                        mdio-handle = <&MDIO>;
                        phy-handle = <&PHY1>;
                };
                        compatible = "tsi109-ethernet", "tsi108-ethernet";
                        #address-cells = <1>;
                        #size-cells = <0>;
-                       reg = <6400 200>;
+                       reg = <0x00006400 0x00000200>;
                        local-mac-address = [ 00 00 00 00 00 00 ];
                        interrupt-parent = <&MPIC>;
-                       interrupts = <11 2>;
+                       interrupts = <0x11 0x2>;
                        mdio-handle = <&MDIO>;
                        phy-handle = <&PHY2>;
                };
                serial@7808 {
                        device_type = "serial";
                        compatible = "ns16550";
-                       reg = <7808 200>;
-                       virtual-reg = <c0007808>;
-                       clock-frequency = <3F9C6000>;
-                       current-speed = <1c200>;
+                       reg = <0x00007808 0x00000200>;
+                       virtual-reg = <0xc0007808>;
+                       clock-frequency = <1067212800>;
+                       current-speed = <115200>;
                        interrupt-parent = <&MPIC>;
-                       interrupts = <2>;
+                       interrupts = <0xc 0x2>;
                };
 
                serial@7c08 {
                        device_type = "serial";
                        compatible = "ns16550";
-                       reg = <7c08 200>;
-                       virtual-reg = <c0007c08>;
-                       clock-frequency = <3F9C6000>;
-                       current-speed = <1c200>;
+                       reg = <0x00007c08 0x00000200>;
+                       virtual-reg = <0xc0007c08>;
+                       clock-frequency = <1067212800>;
+                       current-speed = <115200>;
                        interrupt-parent = <&MPIC>;
-                       interrupts = <2>;
+                       interrupts = <0xd 0x2>;
                };
 
                MPIC: pic@7400 {
                        compatible = "chrp,open-pic";
                        interrupt-controller;
                        #interrupt-cells = <2>;
-                       reg = <7400 400>;
+                       reg = <0x00007400 0x00000400>;
                        big-endian;
                };
 
                        #interrupt-cells = <1>;
                        #size-cells = <2>;
                        #address-cells = <3>;
-                       reg = <1000 1000>;
-                       bus-range = <0 0>;
+                       reg = <0x00001000 0x00001000>;
+                       bus-range = <0x0 0x0>;
                        /*----------------------------------------------------+
                        | 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>;
+                       ranges = <0x02000000 0x00000000 0x40000000 0x40000000 0x00000000 0x10000000
+                                 0x01000000 0x00000000 0x00000000 0x7e000000 0x00000000 0x00010000>;
+                       clock-frequency = <133333332>;
                        interrupt-parent = <&MPIC>;
-                       interrupts = <17 2>;
-                       interrupt-map-mask = <f800 0 0 7>;
+                       interrupts = <0x17 0x2>;
+                       interrupt-map-mask = <0xf800 0x0 0x0 0x7>;
                        /*----------------------------------------------------+
                        | 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
+                               0x800 0x0 0x0 0x1 &RT0 0x24 0x0
+                               0x800 0x0 0x0 0x2 &RT0 0x25 0x0
+                               0x800 0x0 0x0 0x3 &RT0 0x26 0x0
+                               0x800 0x0 0x0 0x4 &RT0 0x27 0x0
+
+                               0x1000 0x0 0x0 0x1 &RT0 0x25 0x0
+                               0x1000 0x0 0x0 0x2 &RT0 0x26 0x0
+                               0x1000 0x0 0x0 0x3 &RT0 0x27 0x0
+                               0x1000 0x0 0x0 0x4 &RT0 0x24 0x0
+
+                               0x1800 0x0 0x0 0x1 &RT0 0x26 0x0
+                               0x1800 0x0 0x0 0x2 &RT0 0x27 0x0
+                               0x1800 0x0 0x0 0x3 &RT0 0x24 0x0
+                               0x1800 0x0 0x0 0x4 &RT0 0x25 0x0
+
+                               0x2000 0x0 0x0 0x1 &RT0 0x27 0x0
+                               0x2000 0x0 0x0 0x2 &RT0 0x24 0x0
+                               0x2000 0x0 0x0 0x3 &RT0 0x25 0x0
+                               0x2000 0x0 0x0 0x4 &RT0 0x26 0x0
                                >;
 
                        RT0: router@1180 {
                                clock-frequency = <0>;
                                #address-cells = <0>;
                                #interrupt-cells = <2>;
-                               interrupts = <17 2>;
+                               interrupts = <0x17 0x2>;
                                interrupt-parent = <&MPIC>;
                        };
                };
index cc2873a531d27727219fa20210d075b1ccdd3995..b94bf61b9bccbeb720d06cda88430dc868f62589 100644 (file)
  * any warranty of any kind, whether express or implied.
  */
 
+/dts-v1/;
+
 / {
        #address-cells = <2>;
        #size-cells = <1>;
        model = "amcc,katmai";
        compatible = "amcc,katmai";
-       dcr-parent = <&/cpus/cpu@0>;
+       dcr-parent = <&{/cpus/cpu@0}>;
 
        aliases {
                ethernet0 = &EMAC0;
                cpu@0 {
                        device_type = "cpu";
                        model = "PowerPC,440SPe";
-                       reg = <0>;
+                       reg = <0x00000000>;
                        clock-frequency = <0>; /* Filled in by zImage */
                        timebase-frequency = <0>; /* Filled in by zImage */
-                       i-cache-line-size = <20>;
-                       d-cache-line-size = <20>;
-                       i-cache-size = <8000>;
-                       d-cache-size = <8000>;
+                       i-cache-line-size = <32>;
+                       d-cache-line-size = <32>;
+                       i-cache-size = <32768>;
+                       d-cache-size = <32768>;
                        dcr-controller;
                        dcr-access-method = "native";
                };
 
        memory {
                device_type = "memory";
-               reg = <0 0 0>; /* Filled in by zImage */
+               reg = <0x00000000 0x00000000 0x00000000>; /* Filled in by zImage */
        };
 
        UIC0: interrupt-controller0 {
                compatible = "ibm,uic-440spe","ibm,uic";
                interrupt-controller;
                cell-index = <0>;
-               dcr-reg = <0c0 009>;
+               dcr-reg = <0x0c0 0x009>;
                #address-cells = <0>;
                #size-cells = <0>;
                #interrupt-cells = <2>;
                compatible = "ibm,uic-440spe","ibm,uic";
                interrupt-controller;
                cell-index = <1>;
-               dcr-reg = <0d0 009>;
+               dcr-reg = <0x0d0 0x009>;
                #address-cells = <0>;
                #size-cells = <0>;
                #interrupt-cells = <2>;
-               interrupts = <1e 4 1f 4>; /* cascade */
+               interrupts = <0x1e 0x4 0x1f 0x4>; /* cascade */
                interrupt-parent = <&UIC0>;
        };
 
                compatible = "ibm,uic-440spe","ibm,uic";
                interrupt-controller;
                cell-index = <2>;
-               dcr-reg = <0e0 009>;
+               dcr-reg = <0x0e0 0x009>;
                #address-cells = <0>;
                #size-cells = <0>;
                #interrupt-cells = <2>;
-               interrupts = <a 4 b 4>; /* cascade */
+               interrupts = <0xa 0x4 0xb 0x4>; /* cascade */
                interrupt-parent = <&UIC0>;
        };
 
                compatible = "ibm,uic-440spe","ibm,uic";
                interrupt-controller;
                cell-index = <3>;
-               dcr-reg = <0f0 009>;
+               dcr-reg = <0x0f0 0x009>;
                #address-cells = <0>;
                #size-cells = <0>;
                #interrupt-cells = <2>;
-               interrupts = <10 4 11 4>; /* cascade */
+               interrupts = <0x10 0x4 0x11 0x4>; /* cascade */
                interrupt-parent = <&UIC0>;
        };
 
        SDR0: sdr {
                compatible = "ibm,sdr-440spe";
-               dcr-reg = <00e 002>;
+               dcr-reg = <0x00e 0x002>;
        };
 
        CPR0: cpr {
                compatible = "ibm,cpr-440spe";
-               dcr-reg = <00c 002>;
+               dcr-reg = <0x00c 0x002>;
        };
 
        plb {
 
                SDRAM0: sdram {
                        compatible = "ibm,sdram-440spe", "ibm,sdram-405gp";
-                       dcr-reg = <010 2>;
+                       dcr-reg = <0x010 0x002>;
                };
 
                MAL0: mcmal {
                        compatible = "ibm,mcmal-440spe", "ibm,mcmal2";
-                       dcr-reg = <180 62>;
+                       dcr-reg = <0x180 0x062>;
                        num-tx-chans = <2>;
                        num-rx-chans = <1>;
                        interrupt-parent = <&MAL0>;
-                       interrupts = <0 1 2 3 4>;
+                       interrupts = <0x0 0x1 0x2 0x3 0x4>;
                        #interrupt-cells = <1>;
                        #address-cells = <0>;
                        #size-cells = <0>;
-                       interrupt-map = </*TXEOB*/ 0 &UIC1 6 4
-                                        /*RXEOB*/ 1 &UIC1 7 4
-                                        /*SERR*/  2 &UIC1 1 4
-                                        /*TXDE*/  3 &UIC1 2 4
-                                        /*RXDE*/  4 &UIC1 3 4>;
+                       interrupt-map = </*TXEOB*/ 0x0 &UIC1 0x6 0x4
+                                        /*RXEOB*/ 0x1 &UIC1 0x7 0x4
+                                        /*SERR*/  0x2 &UIC1 0x1 0x4
+                                        /*TXDE*/  0x3 &UIC1 0x2 0x4
+                                        /*RXDE*/  0x4 &UIC1 0x3 0x4>;
                };
 
                POB0: opb {
                        compatible = "ibm,opb-440spe", "ibm,opb-440gp", "ibm,opb";
                        #address-cells = <1>;
                        #size-cells = <1>;
-                       ranges = <00000000 4 e0000000 20000000>;
+                       ranges = <0x00000000 0x00000004 0xe0000000 0x20000000>;
                        clock-frequency = <0>; /* Filled in by zImage */
 
                        EBC0: ebc {
                                compatible = "ibm,ebc-440spe", "ibm,ebc-440gp", "ibm,ebc";
-                               dcr-reg = <012 2>;
+                               dcr-reg = <0x012 0x002>;
                                #address-cells = <2>;
                                #size-cells = <1>;
                                clock-frequency = <0>; /* Filled in by zImage */
-                               interrupts = <1>;
+                               interrupts = <0x5 0x1>;
                                interrupt-parent = <&UIC1>;
                        };
 
                        UART0: serial@10000200 {
                                device_type = "serial";
                                compatible = "ns16550";
-                               reg = <10000200 8>;
-                               virtual-reg = <a0000200>;
+                               reg = <0x10000200 0x00000008>;
+                               virtual-reg = <0xa0000200>;
                                clock-frequency = <0>; /* Filled in by zImage */
-                               current-speed = <1c200>;
+                               current-speed = <115200>;
                                interrupt-parent = <&UIC0>;
-                               interrupts = <0 4>;
+                               interrupts = <0x0 0x4>;
                        };
 
                        UART1: serial@10000300 {
                                device_type = "serial";
                                compatible = "ns16550";
-                               reg = <10000300 8>;
-                               virtual-reg = <a0000300>;
+                               reg = <0x10000300 0x00000008>;
+                               virtual-reg = <0xa0000300>;
                                clock-frequency = <0>;
                                current-speed = <0>;
                                interrupt-parent = <&UIC0>;
-                               interrupts = <4>;
+                               interrupts = <0x1 0x4>;
                        };
 
 
                        UART2: serial@10000600 {
                                device_type = "serial";
                                compatible = "ns16550";
-                               reg = <10000600 8>;
-                               virtual-reg = <a0000600>;
+                               reg = <0x10000600 0x00000008>;
+                               virtual-reg = <0xa0000600>;
                                clock-frequency = <0>;
                                current-speed = <0>;
                                interrupt-parent = <&UIC1>;
-                               interrupts = <4>;
+                               interrupts = <0x5 0x4>;
                        };
 
                        IIC0: i2c@10000400 {
                                compatible = "ibm,iic-440spe", "ibm,iic-440gp", "ibm,iic";
-                               reg = <10000400 14>;
+                               reg = <0x10000400 0x00000014>;
                                interrupt-parent = <&UIC0>;
-                               interrupts = <4>;
+                               interrupts = <0x2 0x4>;
                        };
 
                        IIC1: i2c@10000500 {
                                compatible = "ibm,iic-440spe", "ibm,iic-440gp", "ibm,iic";
-                               reg = <10000500 14>;
+                               reg = <0x10000500 0x00000014>;
                                interrupt-parent = <&UIC0>;
-                               interrupts = <4>;
+                               interrupts = <0x3 0x4>;
                        };
 
                        EMAC0: ethernet@10000800 {
-                               linux,network-index = <0>;
+                               linux,network-index = <0x0>;
                                device_type = "network";
                                compatible = "ibm,emac-440spe", "ibm,emac4";
                                interrupt-parent = <&UIC1>;
-                               interrupts = <1c 4 1d 4>;
-                               reg = <10000800 70>;
+                               interrupts = <0x1c 0x4 0x1d 0x4>;
+                               reg = <0x10000800 0x00000070>;
                                local-mac-address = [000000000000];
                                mal-device = <&MAL0>;
                                mal-tx-channel = <0>;
                                mal-rx-channel = <0>;
                                cell-index = <0>;
-                               max-frame-size = <2328>;
-                               rx-fifo-size = <1000>;
-                               tx-fifo-size = <800>;
+                               max-frame-size = <9000>;
+                               rx-fifo-size = <4096>;
+                               tx-fifo-size = <2048>;
                                phy-mode = "gmii";
-                               phy-map = <00000000>;
+                               phy-map = <0x00000000>;
                                has-inverted-stacr-oc;
                                has-new-stacr-staopc;
                        };
                        primary;
                        large-inbound-windows;
                        enable-msi-hole;
-                       reg = <c 0ec00000   8   /* Config space access */
-                              0 0 0            /* no IACK cycles */
-                              c 0ed00000   4   /* Special cycles */
-                              c 0ec80000 100   /* Internal registers */
-                              c 0ec80100  fc>; /* Internal messaging registers */
+                       reg = <0x0000000c 0x0ec00000   0x00000008       /* Config space access */
+                              0x00000000 0x00000000 0x00000000         /* no IACK cycles */
+                              0x0000000c 0x0ed00000   0x00000004   /* Special cycles */
+                              0x0000000c 0x0ec80000 0x00000100 /* Internal registers */
+                              0x0000000c 0x0ec80100  0x000000fc>;      /* Internal messaging registers */
 
                        /* Outbound ranges, one memory and one IO,
                         * later cannot be changed
                         */
-                       ranges = <02000000 0 80000000 0000000d 80000000 0 80000000
-                                 01000000 0 00000000 0000000c 08000000 0 00010000>;
+                       ranges = <0x02000000 0x00000000 0x80000000 0x0000000d 0x80000000 0x00000000 0x80000000
+                                 0x01000000 0x00000000 0x00000000 0x0000000c 0x08000000 0x00000000 0x00010000>;
 
                        /* Inbound 2GB range starting at 0 */
-                       dma-ranges = <42000000 0 0 0 0 0 80000000>;
+                       dma-ranges = <0x42000000 0x0 0x0 0x0 0x0 0x0 0x80000000>;
 
                        /* This drives busses 0 to 0xf */
-                       bus-range = <0 f>;
+                       bus-range = <0x0 0xf>;
 
                        /*
                         * On Katmai, the following PCI-X interrupts signals
                         * INTC: J2: 1-2
                         * INTD: J1: 1-2
                         */
-                       interrupt-map-mask = <f800 0 0 7>;
+                       interrupt-map-mask = <0xf800 0x0 0x0 0x7>;
                        interrupt-map = <
                                /* IDSEL 1 */
-                               0800 0 0 1 &UIC1 14 8
-                               0800 0 0 2 &UIC1 13 8
-                               0800 0 0 3 &UIC1 12 8
-                               0800 0 0 4 &UIC1 11 8
+                               0x800 0x0 0x0 0x1 &UIC1 0x14 0x8
+                               0x800 0x0 0x0 0x2 &UIC1 0x13 0x8
+                               0x800 0x0 0x0 0x3 &UIC1 0x12 0x8
+                               0x800 0x0 0x0 0x4 &UIC1 0x11 0x8
                        >;
                };
 
                        #address-cells = <3>;
                        compatible = "ibm,plb-pciex-440spe", "ibm,plb-pciex";
                        primary;
-                       port = <0>; /* port number */
-                       reg = <d 00000000 20000000      /* Config space access */
-                              c 10000000 00001000>;    /* Registers */
-                       dcr-reg = <100 020>;
-                       sdr-base = <300>;
+                       port = <0x0>; /* port number */
+                       reg = <0x0000000d 0x00000000 0x20000000 /* Config space access */
+                              0x0000000c 0x10000000 0x00001000>;       /* Registers */
+                       dcr-reg = <0x100 0x020>;
+                       sdr-base = <0x300>;
 
                        /* Outbound ranges, one memory and one IO,
                         * later cannot be changed
                         */
-                       ranges = <02000000 0 80000000 0000000e 00000000 0 80000000
-                                 01000000 0 00000000 0000000f 80000000 0 00010000>;
+                       ranges = <0x02000000 0x00000000 0x80000000 0x0000000e 0x00000000 0x00000000 0x80000000
+                                 0x01000000 0x00000000 0x00000000 0x0000000f 0x80000000 0x00000000 0x00010000>;
 
                        /* Inbound 2GB range starting at 0 */
-                       dma-ranges = <42000000 0 0 0 0 0 80000000>;
+                       dma-ranges = <0x42000000 0x0 0x0 0x0 0x0 0x0 0x80000000>;
 
                        /* This drives busses 10 to 0x1f */
-                       bus-range = <10 1f>;
+                       bus-range = <0x10 0x1f>;
 
                        /* Legacy interrupts (note the weird polarity, the bridge seems
                         * to invert PCIe legacy interrupts).
                         * below are basically de-swizzled numbers.
                         * The real slot is on idsel 0, so the swizzling is 1:1
                         */
-                       interrupt-map-mask = <0000 0 0 7>;
+                       interrupt-map-mask = <0x0 0x0 0x0 0x7>;
                        interrupt-map = <
-                               0000 0 0 1 &UIC3 0 4 /* swizzled int A */
-                               0000 0 0 2 &UIC3 1 4 /* swizzled int B */
-                               0000 0 0 3 &UIC3 2 4 /* swizzled int C */
-                               0000 0 0 4 &UIC3 3 4 /* swizzled int D */>;
+                               0x0 0x0 0x0 0x1 &UIC3 0x0 0x4 /* swizzled int A */
+                               0x0 0x0 0x0 0x2 &UIC3 0x1 0x4 /* swizzled int B */
+                               0x0 0x0 0x0 0x3 &UIC3 0x2 0x4 /* swizzled int C */
+                               0x0 0x0 0x0 0x4 &UIC3 0x3 0x4 /* swizzled int D */>;
                };
 
                PCIE1: pciex@d20000000 {
                        #address-cells = <3>;
                        compatible = "ibm,plb-pciex-440spe", "ibm,plb-pciex";
                        primary;
-                       port = <1>; /* port number */
-                       reg = <d 20000000 20000000      /* Config space access */
-                              c 10001000 00001000>;    /* Registers */
-                       dcr-reg = <120 020>;
-                       sdr-base = <340>;
+                       port = <0x1>; /* port number */
+                       reg = <0x0000000d 0x20000000 0x20000000 /* Config space access */
+                              0x0000000c 0x10001000 0x00001000>;       /* Registers */
+                       dcr-reg = <0x120 0x020>;
+                       sdr-base = <0x340>;
 
                        /* Outbound ranges, one memory and one IO,
                         * later cannot be changed
                         */
-                       ranges = <02000000 0 80000000 0000000e 80000000 0 80000000
-                                 01000000 0 00000000 0000000f 80010000 0 00010000>;
+                       ranges = <0x02000000 0x00000000 0x80000000 0x0000000e 0x80000000 0x00000000 0x80000000
+                                 0x01000000 0x00000000 0x00000000 0x0000000f 0x80010000 0x00000000 0x00010000>;
 
                        /* Inbound 2GB range starting at 0 */
-                       dma-ranges = <42000000 0 0 0 0 0 80000000>;
+                       dma-ranges = <0x42000000 0x0 0x0 0x0 0x0 0x0 0x80000000>;
 
                        /* This drives busses 10 to 0x1f */
-                       bus-range = <20 2f>;
+                       bus-range = <0x20 0x2f>;
 
                        /* Legacy interrupts (note the weird polarity, the bridge seems
                         * to invert PCIe legacy interrupts).
                         * below are basically de-swizzled numbers.
                         * The real slot is on idsel 0, so the swizzling is 1:1
                         */
-                       interrupt-map-mask = <0000 0 0 7>;
+                       interrupt-map-mask = <0x0 0x0 0x0 0x7>;
                        interrupt-map = <
-                               0000 0 0 1 &UIC3 4 4 /* swizzled int A */
-                               0000 0 0 2 &UIC3 5 4 /* swizzled int B */
-                               0000 0 0 3 &UIC3 6 4 /* swizzled int C */
-                               0000 0 0 4 &UIC3 7 4 /* swizzled int D */>;
+                               0x0 0x0 0x0 0x1 &UIC3 0x4 0x4 /* swizzled int A */
+                               0x0 0x0 0x0 0x2 &UIC3 0x5 0x4 /* swizzled int B */
+                               0x0 0x0 0x0 0x3 &UIC3 0x6 0x4 /* swizzled int C */
+                               0x0 0x0 0x0 0x4 &UIC3 0x7 0x4 /* swizzled int D */>;
                };
 
                PCIE2: pciex@d40000000 {
                        #address-cells = <3>;
                        compatible = "ibm,plb-pciex-440spe", "ibm,plb-pciex";
                        primary;
-                       port = <2>; /* port number */
-                       reg = <d 40000000 20000000      /* Config space access */
-                              c 10002000 00001000>;    /* Registers */
-                       dcr-reg = <140 020>;
-                       sdr-base = <370>;
+                       port = <0x2>; /* port number */
+                       reg = <0x0000000d 0x40000000 0x20000000 /* Config space access */
+                              0x0000000c 0x10002000 0x00001000>;       /* Registers */
+                       dcr-reg = <0x140 0x020>;
+                       sdr-base = <0x370>;
 
                        /* Outbound ranges, one memory and one IO,
                         * later cannot be changed
                         */
-                       ranges = <02000000 0 80000000 0000000f 00000000 0 80000000
-                                 01000000 0 00000000 0000000f 80020000 0 00010000>;
+                       ranges = <0x02000000 0x00000000 0x80000000 0x0000000f 0x00000000 0x00000000 0x80000000
+                                 0x01000000 0x00000000 0x00000000 0x0000000f 0x80020000 0x00000000 0x00010000>;
 
                        /* Inbound 2GB range starting at 0 */
-                       dma-ranges = <42000000 0 0 0 0 0 80000000>;
+                       dma-ranges = <0x42000000 0x0 0x0 0x0 0x0 0x0 0x80000000>;
 
                        /* This drives busses 10 to 0x1f */
-                       bus-range = <30 3f>;
+                       bus-range = <0x30 0x3f>;
 
                        /* Legacy interrupts (note the weird polarity, the bridge seems
                         * to invert PCIe legacy interrupts).
                         * below are basically de-swizzled numbers.
                         * The real slot is on idsel 0, so the swizzling is 1:1
                         */
-                       interrupt-map-mask = <0000 0 0 7>;
+                       interrupt-map-mask = <0x0 0x0 0x0 0x7>;
                        interrupt-map = <
-                               0000 0 0 1 &UIC3 8 4 /* swizzled int A */
-                               0000 0 0 2 &UIC3 9 4 /* swizzled int B */
-                               0000 0 0 3 &UIC3 a 4 /* swizzled int C */
-                               0000 0 0 4 &UIC3 b 4 /* swizzled int D */>;
+                               0x0 0x0 0x0 0x1 &UIC3 0x8 0x4 /* swizzled int A */
+                               0x0 0x0 0x0 0x2 &UIC3 0x9 0x4 /* swizzled int B */
+                               0x0 0x0 0x0 0x3 &UIC3 0xa 0x4 /* swizzled int C */
+                               0x0 0x0 0x0 0x4 &UIC3 0xb 0x4 /* swizzled int D */>;
                };
        };
 
index 48c9a6e71f1a6eebd65a65879cb2b333ab1a062d..3ed6a8fee1d5147a85b333829537fee1029c2b63 100644 (file)
@@ -8,12 +8,14 @@
  * any warranty of any kind, whether express or implied.
  */
 
+/dts-v1/;
+
 / {
        #address-cells = <1>;
        #size-cells = <1>;
        model = "amcc,kilauea";
        compatible = "amcc,kilauea";
-       dcr-parent = <&/cpus/cpu@0>;
+       dcr-parent = <&{/cpus/cpu@0}>;
 
        aliases {
                ethernet0 = &EMAC0;
                cpu@0 {
                        device_type = "cpu";
                        model = "PowerPC,405EX";
-                       reg = <0>;
+                       reg = <0x00000000>;
                        clock-frequency = <0>; /* Filled in by U-Boot */
                        timebase-frequency = <0>; /* Filled in by U-Boot */
-                       i-cache-line-size = <20>;
-                       d-cache-line-size = <20>;
-                       i-cache-size = <4000>; /* 16 kB */
-                       d-cache-size = <4000>; /* 16 kB */
+                       i-cache-line-size = <32>;
+                       d-cache-line-size = <32>;
+                       i-cache-size = <16384>; /* 16 kB */
+                       d-cache-size = <16384>; /* 16 kB */
                        dcr-controller;
                        dcr-access-method = "native";
                };
 
        memory {
                device_type = "memory";
-               reg = <0 0>; /* Filled in by U-Boot */
+               reg = <0x00000000 0x00000000>; /* Filled in by U-Boot */
        };
 
        UIC0: interrupt-controller {
                compatible = "ibm,uic-405ex", "ibm,uic";
                interrupt-controller;
                cell-index = <0>;
-               dcr-reg = <0c0 009>;
+               dcr-reg = <0x0c0 0x009>;
                #address-cells = <0>;
                #size-cells = <0>;
                #interrupt-cells = <2>;
                compatible = "ibm,uic-405ex","ibm,uic";
                interrupt-controller;
                cell-index = <1>;
-               dcr-reg = <0d0 009>;
+               dcr-reg = <0x0d0 0x009>;
                #address-cells = <0>;
                #size-cells = <0>;
                #interrupt-cells = <2>;
-               interrupts = <1e 4 1f 4>; /* cascade */
+               interrupts = <0x1e 0x4 0x1f 0x4>; /* cascade */
                interrupt-parent = <&UIC0>;
        };
 
                compatible = "ibm,uic-405ex","ibm,uic";
                interrupt-controller;
                cell-index = <2>;
-               dcr-reg = <0e0 009>;
+               dcr-reg = <0x0e0 0x009>;
                #address-cells = <0>;
                #size-cells = <0>;
                #interrupt-cells = <2>;
-               interrupts = <1c 4 1d 4>; /* cascade */
+               interrupts = <0x1c 0x4 0x1d 0x4>; /* cascade */
                interrupt-parent = <&UIC0>;
        };
 
 
                SDRAM0: memory-controller {
                        compatible = "ibm,sdram-405ex";
-                       dcr-reg = <010 2>;
+                       dcr-reg = <0x010 0x002>;
                };
 
                MAL0: mcmal {
                        compatible = "ibm,mcmal-405ex", "ibm,mcmal2";
-                       dcr-reg = <180 62>;
+                       dcr-reg = <0x180 0x062>;
                        num-tx-chans = <2>;
                        num-rx-chans = <2>;
                        interrupt-parent = <&MAL0>;
-                       interrupts = <0 1 2 3 4>;
+                       interrupts = <0x0 0x1 0x2 0x3 0x4>;
                        #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>;
+                       interrupt-map = </*TXEOB*/ 0x0 &UIC0 0xa 0x4
+                                       /*RXEOB*/ 0x1 &UIC0 0xb 0x4
+                                       /*SERR*/  0x2 &UIC1 0x0 0x4
+                                       /*TXDE*/  0x3 &UIC1 0x1 0x4
+                                       /*RXDE*/  0x4 &UIC1 0x2 0x4>;
+                       interrupt-map-mask = <0xffffffff>;
                };
 
                POB0: opb {
                        compatible = "ibm,opb-405ex", "ibm,opb";
                        #address-cells = <1>;
                        #size-cells = <1>;
-                       ranges = <80000000 80000000 10000000
-                                 ef600000 ef600000 a00000
-                                 f0000000 f0000000 10000000>;
-                       dcr-reg = <0a0 5>;
+                       ranges = <0x80000000 0x80000000 0x10000000
+                                 0xef600000 0xef600000 0x00a00000
+                                 0xf0000000 0xf0000000 0x10000000>;
+                       dcr-reg = <0x0a0 0x005>;
                        clock-frequency = <0>; /* Filled in by U-Boot */
 
                        EBC0: ebc {
                                compatible = "ibm,ebc-405ex", "ibm,ebc";
-                               dcr-reg = <012 2>;
+                               dcr-reg = <0x012 0x002>;
                                #address-cells = <2>;
                                #size-cells = <1>;
                                clock-frequency = <0>; /* Filled in by U-Boot */
                                /* ranges property is supplied by U-Boot */
-                               interrupts = <1>;
+                               interrupts = <0x5 0x1>;
                                interrupt-parent = <&UIC1>;
 
                                nor_flash@0,0 {
                                        compatible = "amd,s29gl512n", "cfi-flash";
                                        bank-width = <2>;
-                                       reg = <0 000000 4000000>;
+                                       reg = <0x00000000 0x00000000 0x04000000>;
                                        #address-cells = <1>;
                                        #size-cells = <1>;
                                        partition@0 {
                                                label = "kernel";
-                                               reg = <0 200000>;
+                                               reg = <0x00000000 0x00200000>;
                                        };
                                        partition@200000 {
                                                label = "root";
-                                               reg = <200000 200000>;
+                                               reg = <0x00200000 0x00200000>;
                                        };
                                        partition@400000 {
                                                label = "user";
-                                               reg = <400000 3b60000>;
+                                               reg = <0x00400000 0x03b60000>;
                                        };
                                        partition@3f60000 {
                                                label = "env";
-                                               reg = <3f60000 40000>;
+                                               reg = <0x03f60000 0x00040000>;
                                        };
                                        partition@3fa0000 {
                                                label = "u-boot";
-                                               reg = <3fa0000 60000>;
+                                               reg = <0x03fa0000 0x00060000>;
                                        };
                                };
                        };
                        UART0: serial@ef600200 {
                                device_type = "serial";
                                compatible = "ns16550";
-                               reg = <ef600200 8>;
-                               virtual-reg = <ef600200>;
+                               reg = <0xef600200 0x00000008>;
+                               virtual-reg = <0xef600200>;
                                clock-frequency = <0>; /* Filled in by U-Boot */
                                current-speed = <0>;
                                interrupt-parent = <&UIC0>;
-                               interrupts = <1a 4>;
+                               interrupts = <0x1a 0x4>;
                        };
 
                        UART1: serial@ef600300 {
                                device_type = "serial";
                                compatible = "ns16550";
-                               reg = <ef600300 8>;
-                               virtual-reg = <ef600300>;
+                               reg = <0xef600300 0x00000008>;
+                               virtual-reg = <0xef600300>;
                                clock-frequency = <0>; /* Filled in by U-Boot */
                                current-speed = <0>;
                                interrupt-parent = <&UIC0>;
-                               interrupts = <4>;
+                               interrupts = <0x1 0x4>;
                        };
 
                        IIC0: i2c@ef600400 {
                                compatible = "ibm,iic-405ex", "ibm,iic";
-                               reg = <ef600400 14>;
+                               reg = <0xef600400 0x00000014>;
                                interrupt-parent = <&UIC0>;
-                               interrupts = <4>;
+                               interrupts = <0x2 0x4>;
                        };
 
                        IIC1: i2c@ef600500 {
                                compatible = "ibm,iic-405ex", "ibm,iic";
-                               reg = <ef600500 14>;
+                               reg = <0xef600500 0x00000014>;
                                interrupt-parent = <&UIC0>;
-                               interrupts = <4>;
+                               interrupts = <0x7 0x4>;
                        };
 
 
                        RGMII0: emac-rgmii@ef600b00 {
                                compatible = "ibm,rgmii-405ex", "ibm,rgmii";
-                               reg = <ef600b00 104>;
+                               reg = <0xef600b00 0x00000104>;
                                has-mdio;
                        };
 
                        EMAC0: ethernet@ef600900 {
-                               linux,network-index = <0>;
+                               linux,network-index = <0x0>;
                                device_type = "network";
                                compatible = "ibm,emac-405ex", "ibm,emac4";
                                interrupt-parent = <&EMAC0>;
-                               interrupts = <0 1>;
+                               interrupts = <0x0 0x1>;
                                #interrupt-cells = <1>;
                                #address-cells = <0>;
                                #size-cells = <0>;
-                               interrupt-map = </*Status*/ 0 &UIC0 18 4
-                                               /*Wake*/  1 &UIC1 1d 4>;
-                               reg = <ef600900 70>;
+                               interrupt-map = </*Status*/ 0x0 &UIC0 0x18 0x4
+                                               /*Wake*/  0x1 &UIC1 0x1d 0x4>;
+                               reg = <0xef600900 0x00000070>;
                                local-mac-address = [000000000000]; /* Filled in by U-Boot */
                                mal-device = <&MAL0>;
                                mal-tx-channel = <0>;
                                mal-rx-channel = <0>;
                                cell-index = <0>;
-                               max-frame-size = <2328>;
-                               rx-fifo-size = <1000>;
-                               tx-fifo-size = <800>;
+                               max-frame-size = <9000>;
+                               rx-fifo-size = <4096>;
+                               tx-fifo-size = <2048>;
                                phy-mode = "rgmii";
-                               phy-map = <00000000>;
+                               phy-map = <0x00000000>;
                                rgmii-device = <&RGMII0>;
                                rgmii-channel = <0>;
                                has-inverted-stacr-oc;
                        };
 
                        EMAC1: ethernet@ef600a00 {
-                               linux,network-index = <1>;
+                               linux,network-index = <0x1>;
                                device_type = "network";
                                compatible = "ibm,emac-405ex", "ibm,emac4";
                                interrupt-parent = <&EMAC1>;
-                               interrupts = <0 1>;
+                               interrupts = <0x0 0x1>;
                                #interrupt-cells = <1>;
                                #address-cells = <0>;
                                #size-cells = <0>;
-                               interrupt-map = </*Status*/ 0 &UIC0 19 4
-                                               /*Wake*/  1 &UIC1 1f 4>;
-                               reg = <ef600a00 70>;
+                               interrupt-map = </*Status*/ 0x0 &UIC0 0x19 0x4
+                                               /*Wake*/  0x1 &UIC1 0x1f 0x4>;
+                               reg = <0xef600a00 0x00000070>;
                                local-mac-address = [000000000000]; /* Filled in by U-Boot */
                                mal-device = <&MAL0>;
                                mal-tx-channel = <1>;
                                mal-rx-channel = <1>;
                                cell-index = <1>;
-                               max-frame-size = <2328>;
-                               rx-fifo-size = <1000>;
-                               tx-fifo-size = <800>;
+                               max-frame-size = <9000>;
+                               rx-fifo-size = <4096>;
+                               tx-fifo-size = <2048>;
                                phy-mode = "rgmii";
-                               phy-map = <00000000>;
+                               phy-map = <0x00000000>;
                                rgmii-device = <&RGMII0>;
                                rgmii-channel = <1>;
                                has-inverted-stacr-oc;
                        #address-cells = <3>;
                        compatible = "ibm,plb-pciex-405ex", "ibm,plb-pciex";
                        primary;
-                       port = <0>; /* port number */
-                       reg = <a0000000 20000000        /* Config space access */
-                              ef000000 00001000>;      /* Registers */
-                       dcr-reg = <040 020>;
-                       sdr-base = <400>;
+                       port = <0x0>; /* port number */
+                       reg = <0xa0000000 0x20000000    /* Config space access */
+                              0xef000000 0x00001000>;  /* Registers */
+                       dcr-reg = <0x040 0x020>;
+                       sdr-base = <0x400>;
 
                        /* Outbound ranges, one memory and one IO,
                         * later cannot be changed
                         */
-                       ranges = <02000000 0 80000000 90000000 0 08000000
-                                 01000000 0 00000000 e0000000 0 00010000>;
+                       ranges = <0x02000000 0x00000000 0x80000000 0x90000000 0x00000000 0x08000000
+                                 0x01000000 0x00000000 0x00000000 0xe0000000 0x00000000 0x00010000>;
 
                        /* Inbound 2GB range starting at 0 */
-                       dma-ranges = <42000000 0 0 0 0 80000000>;
+                       dma-ranges = <0x42000000 0x0 0x0 0x0 0x0 0x80000000>;
 
                        /* This drives busses 0x00 to 0x3f */
-                       bus-range = <03f>;
+                       bus-range = <0x0 0x3f>;
 
                        /* Legacy interrupts (note the weird polarity, the bridge seems
                         * to invert PCIe legacy interrupts).
                         * below are basically de-swizzled numbers.
                         * The real slot is on idsel 0, so the swizzling is 1:1
                         */
-                       interrupt-map-mask = <0000 0 0 7>;
+                       interrupt-map-mask = <0x0 0x0 0x0 0x7>;
                        interrupt-map = <
-                               0000 0 0 1 &UIC2 0 4 /* swizzled int A */
-                               0000 0 0 2 &UIC2 1 4 /* swizzled int B */
-                               0000 0 0 3 &UIC2 2 4 /* swizzled int C */
-                               0000 0 0 4 &UIC2 3 4 /* swizzled int D */>;
+                               0x0 0x0 0x0 0x1 &UIC2 0x0 0x4 /* swizzled int A */
+                               0x0 0x0 0x0 0x2 &UIC2 0x1 0x4 /* swizzled int B */
+                               0x0 0x0 0x0 0x3 &UIC2 0x2 0x4 /* swizzled int C */
+                               0x0 0x0 0x0 0x4 &UIC2 0x3 0x4 /* swizzled int D */>;
                };
 
                PCIE1: pciex@0c0000000 {
                        #address-cells = <3>;
                        compatible = "ibm,plb-pciex-405ex", "ibm,plb-pciex";
                        primary;
-                       port = <1>; /* port number */
-                       reg = <c0000000 20000000        /* Config space access */
-                              ef001000 00001000>;      /* Registers */
-                       dcr-reg = <060 020>;
-                       sdr-base = <440>;
+                       port = <0x1>; /* port number */
+                       reg = <0xc0000000 0x20000000    /* Config space access */
+                              0xef001000 0x00001000>;  /* Registers */
+                       dcr-reg = <0x060 0x020>;
+                       sdr-base = <0x440>;
 
                        /* Outbound ranges, one memory and one IO,
                         * later cannot be changed
                         */
-                       ranges = <02000000 0 80000000 98000000 0 08000000
-                                 01000000 0 00000000 e0010000 0 00010000>;
+                       ranges = <0x02000000 0x00000000 0x80000000 0x98000000 0x00000000 0x08000000
+                                 0x01000000 0x00000000 0x00000000 0xe0010000 0x00000000 0x00010000>;
 
                        /* Inbound 2GB range starting at 0 */
-                       dma-ranges = <42000000 0 0 0 0 80000000>;
+                       dma-ranges = <0x42000000 0x0 0x0 0x0 0x0 0x80000000>;
 
                        /* This drives busses 0x40 to 0x7f */
-                       bus-range = <40 7f>;
+                       bus-range = <0x40 0x7f>;
 
                        /* Legacy interrupts (note the weird polarity, the bridge seems
                         * to invert PCIe legacy interrupts).
                         * below are basically de-swizzled numbers.
                         * The real slot is on idsel 0, so the swizzling is 1:1
                         */
-                       interrupt-map-mask = <0000 0 0 7>;
+                       interrupt-map-mask = <0x0 0x0 0x0 0x7>;
                        interrupt-map = <
-                               0000 0 0 1 &UIC2 b 4 /* swizzled int A */
-                               0000 0 0 2 &UIC2 c 4 /* swizzled int B */
-                               0000 0 0 3 &UIC2 d 4 /* swizzled int C */
-                               0000 0 0 4 &UIC2 e 4 /* swizzled int D */>;
+                               0x0 0x0 0x0 0x1 &UIC2 0xb 0x4 /* swizzled int A */
+                               0x0 0x0 0x0 0x2 &UIC2 0xc 0x4 /* swizzled int B */
+                               0x0 0x0 0x0 0x3 &UIC2 0xd 0x4 /* swizzled int C */
+                               0x0 0x0 0x0 0x4 &UIC2 0xe 0x4 /* swizzled int D */>;
                };
        };
 };
index f869ce3ca0b74193792acbaca1ec848c3cb28e4a..6eb7c771f6a456654f7e25b288edb7299cca1d60 100644 (file)
@@ -40,6 +40,7 @@
                        timebase-frequency = <0>;               /* From U-boot */
                        bus-frequency = <0>;                    /* From U-boot */
                        clock-frequency = <0>;                  /* From U-boot */
+                       next-level-cache = <&L2>;
                };
        };
 
@@ -62,7 +63,7 @@
                        interrupts = <0x12 0x2>;
                };
 
-               l2-cache-controller@20000 {
+               L2: l2-cache-controller@20000 {
                        compatible = "fsl,8540-l2-cache-controller";
                        reg = <0x20000 0x1000>;
                        cache-line-size = <0x20>;               /* 32 bytes */
index 84cc5e72ddd845afd9348d614b7dd1c37b15443d..1dfcd7ed199c118ffd39a37c668a593f8c0e91a6 100644 (file)
@@ -8,12 +8,14 @@
  * any warranty of any kind, whether express or implied.
  */
 
+/dts-v1/;
+
 / {
        #address-cells = <1>;
        #size-cells = <1>;
        model = "amcc,makalu";
        compatible = "amcc,makalu";
-       dcr-parent = <&/cpus/cpu@0>;
+       dcr-parent = <&{/cpus/cpu@0}>;
 
        aliases {
                ethernet0 = &EMAC0;
                cpu@0 {
                        device_type = "cpu";
                        model = "PowerPC,405EX";
-                       reg = <0>;
+                       reg = <0x00000000>;
                        clock-frequency = <0>; /* Filled in by U-Boot */
                        timebase-frequency = <0>; /* Filled in by U-Boot */
-                       i-cache-line-size = <20>;
-                       d-cache-line-size = <20>;
-                       i-cache-size = <4000>; /* 16 kB */
-                       d-cache-size = <4000>; /* 16 kB */
+                       i-cache-line-size = <32>;
+                       d-cache-line-size = <32>;
+                       i-cache-size = <16384>; /* 16 kB */
+                       d-cache-size = <16384>; /* 16 kB */
                        dcr-controller;
                        dcr-access-method = "native";
                };
 
        memory {
                device_type = "memory";
-               reg = <0 0>; /* Filled in by U-Boot */
+               reg = <0x00000000 0x00000000>; /* Filled in by U-Boot */
        };
 
        UIC0: interrupt-controller {
                compatible = "ibm,uic-405ex", "ibm,uic";
                interrupt-controller;
                cell-index = <0>;
-               dcr-reg = <0c0 009>;
+               dcr-reg = <0x0c0 0x009>;
                #address-cells = <0>;
                #size-cells = <0>;
                #interrupt-cells = <2>;
                compatible = "ibm,uic-405ex","ibm,uic";
                interrupt-controller;
                cell-index = <1>;
-               dcr-reg = <0d0 009>;
+               dcr-reg = <0x0d0 0x009>;
                #address-cells = <0>;
                #size-cells = <0>;
                #interrupt-cells = <2>;
-               interrupts = <1e 4 1f 4>; /* cascade */
+               interrupts = <0x1e 0x4 0x1f 0x4>; /* cascade */
                interrupt-parent = <&UIC0>;
        };
 
                compatible = "ibm,uic-405ex","ibm,uic";
                interrupt-controller;
                cell-index = <2>;
-               dcr-reg = <0e0 009>;
+               dcr-reg = <0x0e0 0x009>;
                #address-cells = <0>;
                #size-cells = <0>;
                #interrupt-cells = <2>;
-               interrupts = <1c 4 1d 4>; /* cascade */
+               interrupts = <0x1c 0x4 0x1d 0x4>; /* cascade */
                interrupt-parent = <&UIC0>;
        };
 
 
                SDRAM0: memory-controller {
                        compatible = "ibm,sdram-405ex";
-                       dcr-reg = <010 2>;
+                       dcr-reg = <0x010 0x002>;
                };
 
                MAL0: mcmal {
                        compatible = "ibm,mcmal-405ex", "ibm,mcmal2";
-                       dcr-reg = <180 62>;
+                       dcr-reg = <0x180 0x062>;
                        num-tx-chans = <2>;
                        num-rx-chans = <2>;
                        interrupt-parent = <&MAL0>;
-                       interrupts = <0 1 2 3 4>;
+                       interrupts = <0x0 0x1 0x2 0x3 0x4>;
                        #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>;
+                       interrupt-map = </*TXEOB*/ 0x0 &UIC0 0xa 0x4
+                                       /*RXEOB*/ 0x1 &UIC0 0xb 0x4
+                                       /*SERR*/  0x2 &UIC1 0x0 0x4
+                                       /*TXDE*/  0x3 &UIC1 0x1 0x4
+                                       /*RXDE*/  0x4 &UIC1 0x2 0x4>;
+                       interrupt-map-mask = <0xffffffff>;
                };
 
                POB0: opb {
                        compatible = "ibm,opb-405ex", "ibm,opb";
                        #address-cells = <1>;
                        #size-cells = <1>;
-                       ranges = <80000000 80000000 10000000
-                                 ef600000 ef600000 a00000
-                                 f0000000 f0000000 10000000>;
-                       dcr-reg = <0a0 5>;
+                       ranges = <0x80000000 0x80000000 0x10000000
+                                 0xef600000 0xef600000 0x00a00000
+                                 0xf0000000 0xf0000000 0x10000000>;
+                       dcr-reg = <0x0a0 0x005>;
                        clock-frequency = <0>; /* Filled in by U-Boot */
 
                        EBC0: ebc {
                                compatible = "ibm,ebc-405ex", "ibm,ebc";
-                               dcr-reg = <012 2>;
+                               dcr-reg = <0x012 0x002>;
                                #address-cells = <2>;
                                #size-cells = <1>;
                                clock-frequency = <0>; /* Filled in by U-Boot */
                                /* ranges property is supplied by U-Boot */
-                               interrupts = <1>;
+                               interrupts = <0x5 0x1>;
                                interrupt-parent = <&UIC1>;
 
                                nor_flash@0,0 {
                                        compatible = "amd,s29gl512n", "cfi-flash";
                                        bank-width = <2>;
-                                       reg = <0 000000 4000000>;
+                                       reg = <0x00000000 0x00000000 0x04000000>;
                                        #address-cells = <1>;
                                        #size-cells = <1>;
                                        partition@0 {
                                                label = "kernel";
-                                               reg = <0 200000>;
+                                               reg = <0x00000000 0x00200000>;
                                        };
                                        partition@200000 {
                                                label = "root";
-                                               reg = <200000 200000>;
+                                               reg = <0x00200000 0x00200000>;
                                        };
                                        partition@400000 {
                                                label = "user";
-                                               reg = <400000 3b60000>;
+                                               reg = <0x00400000 0x03b60000>;
                                        };
                                        partition@3f60000 {
                                                label = "env";
-                                               reg = <3f60000 40000>;
+                                               reg = <0x03f60000 0x00040000>;
                                        };
                                        partition@3fa0000 {
                                                label = "u-boot";
-                                               reg = <3fa0000 60000>;
+                                               reg = <0x03fa0000 0x00060000>;
                                        };
                                };
                        };
                        UART0: serial@ef600200 {
                                device_type = "serial";
                                compatible = "ns16550";
-                               reg = <ef600200 8>;
-                               virtual-reg = <ef600200>;
+                               reg = <0xef600200 0x00000008>;
+                               virtual-reg = <0xef600200>;
                                clock-frequency = <0>; /* Filled in by U-Boot */
                                current-speed = <0>;
                                interrupt-parent = <&UIC0>;
-                               interrupts = <1a 4>;
+                               interrupts = <0x1a 0x4>;
                        };
 
                        UART1: serial@ef600300 {
                                device_type = "serial";
                                compatible = "ns16550";
-                               reg = <ef600300 8>;
-                               virtual-reg = <ef600300>;
+                               reg = <0xef600300 0x00000008>;
+                               virtual-reg = <0xef600300>;
                                clock-frequency = <0>; /* Filled in by U-Boot */
                                current-speed = <0>;
                                interrupt-parent = <&UIC0>;
-                               interrupts = <4>;
+                               interrupts = <0x1 0x4>;
                        };
 
                        IIC0: i2c@ef600400 {
                                compatible = "ibm,iic-405ex", "ibm,iic";
-                               reg = <ef600400 14>;
+                               reg = <0xef600400 0x00000014>;
                                interrupt-parent = <&UIC0>;
-                               interrupts = <4>;
+                               interrupts = <0x2 0x4>;
                        };
 
                        IIC1: i2c@ef600500 {
                                compatible = "ibm,iic-405ex", "ibm,iic";
-                               reg = <ef600500 14>;
+                               reg = <0xef600500 0x00000014>;
                                interrupt-parent = <&UIC0>;
-                               interrupts = <4>;
+                               interrupts = <0x7 0x4>;
                        };
 
 
                        RGMII0: emac-rgmii@ef600b00 {
                                compatible = "ibm,rgmii-405ex", "ibm,rgmii";
-                               reg = <ef600b00 104>;
+                               reg = <0xef600b00 0x00000104>;
                                has-mdio;
                        };
 
                        EMAC0: ethernet@ef600900 {
-                               linux,network-index = <0>;
+                               linux,network-index = <0x0>;
                                device_type = "network";
                                compatible = "ibm,emac-405ex", "ibm,emac4";
                                interrupt-parent = <&EMAC0>;
-                               interrupts = <0 1>;
+                               interrupts = <0x0 0x1>;
                                #interrupt-cells = <1>;
                                #address-cells = <0>;
                                #size-cells = <0>;
-                               interrupt-map = </*Status*/ 0 &UIC0 18 4
-                                               /*Wake*/  1 &UIC1 1d 4>;
-                               reg = <ef600900 70>;
+                               interrupt-map = </*Status*/ 0x0 &UIC0 0x18 0x4
+                                               /*Wake*/  0x1 &UIC1 0x1d 0x4>;
+                               reg = <0xef600900 0x00000070>;
                                local-mac-address = [000000000000]; /* Filled in by U-Boot */
                                mal-device = <&MAL0>;
                                mal-tx-channel = <0>;
                                mal-rx-channel = <0>;
                                cell-index = <0>;
-                               max-frame-size = <2328>;
-                               rx-fifo-size = <1000>;
-                               tx-fifo-size = <800>;
+                               max-frame-size = <9000>;
+                               rx-fifo-size = <4096>;
+                               tx-fifo-size = <2048>;
                                phy-mode = "rgmii";
-                               phy-map = <0000003f>;   /* Start at 6 */
+                               phy-map = <0x0000003f>; /* Start at 6 */
                                rgmii-device = <&RGMII0>;
                                rgmii-channel = <0>;
                                has-inverted-stacr-oc;
                        };
 
                        EMAC1: ethernet@ef600a00 {
-                               linux,network-index = <1>;
+                               linux,network-index = <0x1>;
                                device_type = "network";
                                compatible = "ibm,emac-405ex", "ibm,emac4";
                                interrupt-parent = <&EMAC1>;
-                               interrupts = <0 1>;
+                               interrupts = <0x0 0x1>;
                                #interrupt-cells = <1>;
                                #address-cells = <0>;
                                #size-cells = <0>;
-                               interrupt-map = </*Status*/ 0 &UIC0 19 4
-                                               /*Wake*/  1 &UIC1 1f 4>;
-                               reg = <ef600a00 70>;
+                               interrupt-map = </*Status*/ 0x0 &UIC0 0x19 0x4
+                                               /*Wake*/  0x1 &UIC1 0x1f 0x4>;
+                               reg = <0xef600a00 0x00000070>;
                                local-mac-address = [000000000000]; /* Filled in by U-Boot */
                                mal-device = <&MAL0>;
                                mal-tx-channel = <1>;
                                mal-rx-channel = <1>;
                                cell-index = <1>;
-                               max-frame-size = <2328>;
-                               rx-fifo-size = <1000>;
-                               tx-fifo-size = <800>;
+                               max-frame-size = <9000>;
+                               rx-fifo-size = <4096>;
+                               tx-fifo-size = <2048>;
                                phy-mode = "rgmii";
-                               phy-map = <00000000>;
+                               phy-map = <0x00000000>;
                                rgmii-device = <&RGMII0>;
                                rgmii-channel = <1>;
                                has-inverted-stacr-oc;
                        #address-cells = <3>;
                        compatible = "ibm,plb-pciex-405ex", "ibm,plb-pciex";
                        primary;
-                       port = <0>; /* port number */
-                       reg = <a0000000 20000000        /* Config space access */
-                              ef000000 00001000>;      /* Registers */
-                       dcr-reg = <040 020>;
-                       sdr-base = <400>;
+                       port = <0x0>; /* port number */
+                       reg = <0xa0000000 0x20000000    /* Config space access */
+                              0xef000000 0x00001000>;  /* Registers */
+                       dcr-reg = <0x040 0x020>;
+                       sdr-base = <0x400>;
 
                        /* Outbound ranges, one memory and one IO,
                         * later cannot be changed
                         */
-                       ranges = <02000000 0 80000000 90000000 0 08000000
-                                 01000000 0 00000000 e0000000 0 00010000>;
+                       ranges = <0x02000000 0x00000000 0x80000000 0x90000000 0x00000000 0x08000000
+                                 0x01000000 0x00000000 0x00000000 0xe0000000 0x00000000 0x00010000>;
 
                        /* Inbound 2GB range starting at 0 */
-                       dma-ranges = <42000000 0 0 0 0 80000000>;
+                       dma-ranges = <0x42000000 0x0 0x0 0x0 0x0 0x80000000>;
 
                        /* This drives busses 0x00 to 0x3f */
-                       bus-range = <03f>;
+                       bus-range = <0x0 0x3f>;
 
                        /* Legacy interrupts (note the weird polarity, the bridge seems
                         * to invert PCIe legacy interrupts).
                         * below are basically de-swizzled numbers.
                         * The real slot is on idsel 0, so the swizzling is 1:1
                         */
-                       interrupt-map-mask = <0000 0 0 7>;
+                       interrupt-map-mask = <0x0 0x0 0x0 0x7>;
                        interrupt-map = <
-                               0000 0 0 1 &UIC2 0 4 /* swizzled int A */
-                               0000 0 0 2 &UIC2 1 4 /* swizzled int B */
-                               0000 0 0 3 &UIC2 2 4 /* swizzled int C */
-                               0000 0 0 4 &UIC2 3 4 /* swizzled int D */>;
+                               0x0 0x0 0x0 0x1 &UIC2 0x0 0x4 /* swizzled int A */
+                               0x0 0x0 0x0 0x2 &UIC2 0x1 0x4 /* swizzled int B */
+                               0x0 0x0 0x0 0x3 &UIC2 0x2 0x4 /* swizzled int C */
+                               0x0 0x0 0x0 0x4 &UIC2 0x3 0x4 /* swizzled int D */>;
                };
 
                PCIE1: pciex@0c0000000 {
                        #address-cells = <3>;
                        compatible = "ibm,plb-pciex-405ex", "ibm,plb-pciex";
                        primary;
-                       port = <1>; /* port number */
-                       reg = <c0000000 20000000        /* Config space access */
-                              ef001000 00001000>;      /* Registers */
-                       dcr-reg = <060 020>;
-                       sdr-base = <440>;
+                       port = <0x1>; /* port number */
+                       reg = <0xc0000000 0x20000000    /* Config space access */
+                              0xef001000 0x00001000>;  /* Registers */
+                       dcr-reg = <0x060 0x020>;
+                       sdr-base = <0x440>;
 
                        /* Outbound ranges, one memory and one IO,
                         * later cannot be changed
                         */
-                       ranges = <02000000 0 80000000 98000000 0 08000000
-                                 01000000 0 00000000 e0010000 0 00010000>;
+                       ranges = <0x02000000 0x00000000 0x80000000 0x98000000 0x00000000 0x08000000
+                                 0x01000000 0x00000000 0x00000000 0xe0010000 0x00000000 0x00010000>;
 
                        /* Inbound 2GB range starting at 0 */
-                       dma-ranges = <42000000 0 0 0 0 80000000>;
+                       dma-ranges = <0x42000000 0x0 0x0 0x0 0x0 0x80000000>;
 
                        /* This drives busses 0x40 to 0x7f */
-                       bus-range = <40 7f>;
+                       bus-range = <0x40 0x7f>;
 
                        /* Legacy interrupts (note the weird polarity, the bridge seems
                         * to invert PCIe legacy interrupts).
                         * below are basically de-swizzled numbers.
                         * The real slot is on idsel 0, so the swizzling is 1:1
                         */
-                       interrupt-map-mask = <0000 0 0 7>;
+                       interrupt-map-mask = <0x0 0x0 0x0 0x7>;
                        interrupt-map = <
-                               0000 0 0 1 &UIC2 b 4 /* swizzled int A */
-                               0000 0 0 2 &UIC2 c 4 /* swizzled int B */
-                               0000 0 0 3 &UIC2 d 4 /* swizzled int C */
-                               0000 0 0 4 &UIC2 e 4 /* swizzled int D */>;
+                               0x0 0x0 0x0 0x1 &UIC2 0xb 0x4 /* swizzled int A */
+                               0x0 0x0 0x0 0x2 &UIC2 0xc 0x4 /* swizzled int B */
+                               0x0 0x0 0x0 0x3 &UIC2 0xd 0x4 /* swizzled int C */
+                               0x0 0x0 0x0 0x4 &UIC2 0xe 0x4 /* swizzled int D */>;
                };
        };
 };
index 4936349b87cd6eabb8a1649642d7ed7a4829be8a..705c23c14f321d8b813d11bae54aa2963491074d 100644 (file)
                };
 
                mpic: pic@7400 {
-                       clock-frequency = <0>;
                        interrupt-controller;
                        #address-cells = <0>;
                        #interrupt-cells = <2>;
                        reg = <0x7400 0x400>;
                        compatible = "chrp,open-pic";
                        device_type = "open-pic";
-                               big-endian;
                };
                pci@1000 {
                        compatible = "tsi108-pci";
index 18033ed0b5356319332b71b035fbda62d87b25c5..79881a1fb8aa94e6053cd132c21eb80797092143 100644 (file)
@@ -40,6 +40,7 @@
                        timebase-frequency = <0>;       //  33 MHz, from uboot
                        bus-frequency = <0>;    // 166 MHz
                        clock-frequency = <0>;  // 825 MHz, from uboot
+                       next-level-cache = <&L2>;
                };
        };
 
@@ -63,7 +64,7 @@
                        interrupts = <18 2>;
                };
 
-               l2-cache-controller@20000 {
+               L2: l2-cache-controller@20000 {
                        compatible = "fsl,8540-l2-cache-controller";
                        reg = <0x20000 0x1000>;
                        cache-line-size = <32>; // 32 bytes
                        interrupt-parent = <&mpic>;
                };
                mpic: pic@40000 {
-                       clock-frequency = <0>;
                        interrupt-controller;
                        #address-cells = <0>;
                        #interrupt-cells = <2>;
                        reg = <0x40000 0x40000>;
                        compatible = "chrp,open-pic";
                        device_type = "open-pic";
-                       big-endian;
                };
        };
 
index 663c7c50ca4552c90a9362e933305cd83e5ccda9..66192aa0f311afaf71b9286f5d21a2c8b99677f1 100644 (file)
@@ -40,6 +40,7 @@
                        timebase-frequency = <0>;       //  33 MHz, from uboot
                        bus-frequency = <0>;    // 166 MHz
                        clock-frequency = <0>;  // 825 MHz, from uboot
+                       next-level-cache = <&L2>;
                };
        };
 
@@ -63,7 +64,7 @@
                        interrupts = <18 2>;
                };
 
-               l2-cache-controller@20000 {
+               L2: l2-cache-controller@20000 {
                        compatible = "fsl,8541-l2-cache-controller";
                        reg = <0x20000 0x1000>;
                        cache-line-size = <32>; // 32 bytes
                };
 
                mpic: pic@40000 {
-                       clock-frequency = <0>;
                        interrupt-controller;
                        #address-cells = <0>;
                        #interrupt-cells = <2>;
                        reg = <0x40000 0x40000>;
                        compatible = "chrp,open-pic";
                        device_type = "open-pic";
-                        big-endian;
                };
 
                cpm@919c0 {
index 6a0d8db96d97c8935838e6978ec88a3583deca42..6cf533f4b5fb94390d22c74454e868f19ff8991c 100644 (file)
@@ -41,6 +41,7 @@
                        timebase-frequency = <0>;
                        bus-frequency = <0>;
                        clock-frequency = <0>;
+                       next-level-cache = <&L2>;
                };
        };
 
@@ -65,7 +66,7 @@
                        interrupts = <18 2>;
                };
 
-               l2-cache-controller@20000 {
+               L2: l2-cache-controller@20000 {
                        compatible = "fsl,8544-l2-cache-controller";
                        reg = <0x20000 0x1000>;
                        cache-line-size = <32>; // 32 bytes
                };
 
                mpic: pic@40000 {
-                       clock-frequency = <0>;
                        interrupt-controller;
                        #address-cells = <0>;
                        #interrupt-cells = <2>;
                        reg = <0x40000 0x40000>;
                        compatible = "chrp,open-pic";
                        device_type = "open-pic";
-                       big-endian;
+               };
+
+               msi@41600 {
+                       compatible = "fsl,mpc8544-msi", "fsl,mpic-msi";
+                       reg = <0x41600 0x80>;
+                       msi-available-ranges = <0 0x100>;
+                       interrupts = <
+                               0xe0 0
+                               0xe1 0
+                               0xe2 0
+                               0xe3 0
+                               0xe4 0
+                               0xe5 0
+                               0xe6 0
+                               0xe7 0>;
+                       interrupt-parent = <&mpic>;
                };
        };
 
index fa298a8c81cc11c12d753375d467276f554a5754..205598d51f2560134f9d5939f171dc731c2cc410 100644 (file)
@@ -45,6 +45,7 @@
                        timebase-frequency = <0>;       //  33 MHz, from uboot
                        bus-frequency = <0>;    // 166 MHz
                        clock-frequency = <0>;  // 825 MHz, from uboot
+                       next-level-cache = <&L2>;
                };
        };
 
@@ -68,7 +69,7 @@
                        interrupts = <18 2>;
                };
 
-               l2-cache-controller@20000 {
+               L2: l2-cache-controller@20000 {
                        compatible = "fsl,8548-l2-cache-controller";
                        reg = <0x20000 0x1000>;
                        cache-line-size = <32>; // 32 bytes
                };
 
                mpic: pic@40000 {
-                       clock-frequency = <0>;
                        interrupt-controller;
                        #address-cells = <0>;
                        #interrupt-cells = <2>;
                        reg = <0x40000 0x40000>;
                        compatible = "chrp,open-pic";
                        device_type = "open-pic";
-                        big-endian;
                };
        };
 
index b025c566c10d1cf725a3675d113f0efb6c73c940..7c9d0b16d7e567468a572380762ed1da4c3b011d 100644 (file)
@@ -40,6 +40,7 @@
                        timebase-frequency = <0>;       //  33 MHz, from uboot
                        bus-frequency = <0>;    // 166 MHz
                        clock-frequency = <0>;  // 825 MHz, from uboot
+                       next-level-cache = <&L2>;
                };
        };
 
@@ -63,7 +64,7 @@
                        interrupts = <18 2>;
                };
 
-               l2-cache-controller@20000 {
+               L2: l2-cache-controller@20000 {
                        compatible = "fsl,8555-l2-cache-controller";
                        reg = <0x20000 0x1000>;
                        cache-line-size = <32>; // 32 bytes
                };
 
                mpic: pic@40000 {
-                       clock-frequency = <0>;
                        interrupt-controller;
                        #address-cells = <0>;
                        #interrupt-cells = <2>;
                        reg = <0x40000 0x40000>;
                        compatible = "chrp,open-pic";
                        device_type = "open-pic";
-                        big-endian;
                };
 
                cpm@919c0 {
index 0cc16ab305d118879ad59dba5a144bc21a6af1c6..5d9f3c4b5b7147aaf6ef144ac8a01983ff4f5b96 100644 (file)
@@ -64,7 +64,7 @@
                        interrupts = <18 2>;
                };
 
-               l2-cache-controller@20000 {
+               L2: l2-cache-controller@20000 {
                        compatible = "fsl,8540-l2-cache-controller";
                        reg = <0x20000 0x1000>;
                        cache-line-size = <32>; // 32 bytes
                        #address-cells = <0>;
                        #interrupt-cells = <2>;
                        reg = <0x40000 0x40000>;
+                       compatible = "chrp,open-pic";
                        device_type = "open-pic";
                };
 
index a025a8ededc5706277795ca44d7997aa722e1187..d7af8db1a22f1db51c4d47dc6a97961f05b0da3a 100644 (file)
@@ -42,6 +42,7 @@
                        timebase-frequency = <0>;
                        bus-frequency = <0>;
                        clock-frequency = <0>;
+                       next-level-cache = <&L2>;
                };
        };
 
@@ -70,7 +71,7 @@
                        interrupts = <18 2>;
                };
 
-               l2-cache-controller@20000 {
+               L2: l2-cache-controller@20000 {
                        compatible = "fsl,8568-l2-cache-controller";
                        reg = <0x20000 0x1000>;
                        cache-line-size = <32>; // 32 bytes
                };
 
                mpic: pic@40000 {
-                       clock-frequency = <0>;
                        interrupt-controller;
                        #address-cells = <0>;
                        #interrupt-cells = <2>;
                        reg = <0x40000 0x40000>;
                        compatible = "chrp,open-pic";
                        device_type = "open-pic";
-                        big-endian;
                };
 
                par_io@e0100 {
index 66f27ab613a28eb89f893c98283af7aef9ad2c25..a444e6a2387d381b2a174c5cd03bf959fd62615f 100644 (file)
@@ -42,6 +42,7 @@
                        timebase-frequency = <0>;
                        bus-frequency = <0>;
                        clock-frequency = <0>;
+                       next-level-cache = <&L2>;
                };
 
                PowerPC,8572@1 {
@@ -54,6 +55,7 @@
                        timebase-frequency = <0>;
                        bus-frequency = <0>;
                        clock-frequency = <0>;
+                       next-level-cache = <&L2>;
                };
        };
 
@@ -84,7 +86,7 @@
                        interrupts = <18 2>;
                };
 
-               l2-cache-controller@20000 {
+               L2: l2-cache-controller@20000 {
                        compatible = "fsl,mpc8572-l2-cache-controller";
                        reg = <0x20000 0x1000>;
                        cache-line-size = <32>; // 32 bytes
                        fsl,has-rstcr;
                };
 
+               msi@41600 {
+                       compatible = "fsl,mpc8572-msi", "fsl,mpic-msi";
+                       reg = <0x41600 0x80>;
+                       msi-available-ranges = <0 0x100>;
+                       interrupts = <
+                               0xe0 0
+                               0xe1 0
+                               0xe2 0
+                               0xe3 0
+                               0xe4 0
+                               0xe5 0
+                               0xe6 0
+                               0xe7 0>;
+                       interrupt-parent = <&mpic>;
+               };
+
                mpic: pic@40000 {
-                       clock-frequency = <0>;
                        interrupt-controller;
                        #address-cells = <0>;
                        #interrupt-cells = <2>;
                        reg = <0x40000 0x40000>;
                        compatible = "chrp,open-pic";
                        device_type = "open-pic";
-                       big-endian;
                };
        };
 
index fa9b6bbeb5afdd5d87018d13e3f2736881615a62..65a5f64b2339d21dcf3b7f08f6e8a3d13cd74fb1 100644 (file)
                };
 
                mpic: interrupt-controller@40000 {
-                       clock-frequency = <0>;
                        interrupt-controller;
                        #address-cells = <0>;
                        #interrupt-cells = <2>;
                        reg = <0x40000 0x40000>;
                        compatible = "chrp,open-pic";
                        device_type = "open-pic";
-                       big-endian;
+               };
+
+               msi@41600 {
+                       compatible = "fsl,mpc8610-msi", "fsl,mpic-msi";
+                       reg = <0x41600 0x80>;
+                       msi-available-ranges = <0 0x100>;
+                       interrupts = <
+                               0xe0 0
+                               0xe1 0
+                               0xe2 0
+                               0xe3 0
+                               0xe4 0
+                               0xe5 0
+                               0xe6 0
+                               0xe7 0>;
+                       interrupt-parent = <&mpic>;
                };
 
                global-utilities@e0000 {
index 1e4bfe9cadb99093f58532aed1eea73a4cdf3c3e..14f718d5e50b5039c2c1fcb8c61b29ac410c2dd0 100644 (file)
                };
 
                mpic: pic@40000 {
-                       clock-frequency = <0>;
                        interrupt-controller;
                        #address-cells = <0>;
                        #interrupt-cells = <2>;
                        reg = <0x40000 0x40000>;
                        compatible = "chrp,open-pic";
                        device_type = "open-pic";
-                       big-endian;
                };
 
                global-utilities@e0000 {
index 379ded282d5e03c32e7a02c39a3616fa28e665c8..96ba5b512afe88a7c955eaaca963619edf20cb37 100644 (file)
@@ -18,6 +18,8 @@
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
+/dts-v1/;
+
 / {
        model = "SonyPS3";
        compatible = "sony,ps3";
@@ -34,7 +36,7 @@
 
        memory {
                device_type = "memory";
-               reg = <0 0 0 0>;
+               reg = <0x00000000 0x00000000 0x00000000 0x00000000>;
        };
 
        /*
 
                cpu@0 {
                        device_type = "cpu";
-                       reg = <0>;
-                       ibm,ppc-interrupt-server#s = <0 1>;
+                       reg = <0x00000000>;
+                       ibm,ppc-interrupt-server#s = <0x0 0x1>;
                        clock-frequency = <0>;
                        timebase-frequency = <0>;
-                       i-cache-size = <8000>;
-                       d-cache-size = <8000>;
-                       i-cache-line-size = <80>;
-                       d-cache-line-size = <80>;
+                       i-cache-size = <32768>;
+                       d-cache-size = <32768>;
+                       i-cache-line-size = <128>;
+                       d-cache-line-size = <128>;
                };
        };
 };
index 6a8fa7089ea2a456bf73f84cb805fec262dcf62b..2afb63a42ea9a9648549d974c8c35d8ad656eb32 100644 (file)
  *
  */
 
+/dts-v1/;
+
 / {
        #address-cells = <2>;
        #size-cells = <1>;
        model = "amcc,rainier";
        compatible = "amcc,rainier";
-       dcr-parent = <&/cpus/cpu@0>;
+       dcr-parent = <&{/cpus/cpu@0}>;
 
        aliases {
                ethernet0 = &EMAC0;
                cpu@0 {
                        device_type = "cpu";
                        model = "PowerPC,440GRx";
-                       reg = <0>;
+                       reg = <0x00000000>;
                        clock-frequency = <0>; /* Filled in by zImage */
                        timebase-frequency = <0>; /* Filled in by zImage */
-                       i-cache-line-size = <20>;
-                       d-cache-line-size = <20>;
-                       i-cache-size = <8000>;
-                       d-cache-size = <8000>;
+                       i-cache-line-size = <32>;
+                       d-cache-line-size = <32>;
+                       i-cache-size = <32768>;
+                       d-cache-size = <32768>;
                        dcr-controller;
                        dcr-access-method = "native";
                };
 
        memory {
                device_type = "memory";
-               reg = <0 0 0>; /* Filled in by zImage */
+               reg = <0x00000000 0x00000000 0x00000000>; /* Filled in by zImage */
        };
 
        UIC0: interrupt-controller0 {
                compatible = "ibm,uic-440grx","ibm,uic";
                interrupt-controller;
                cell-index = <0>;
-               dcr-reg = <0c0 009>;
+               dcr-reg = <0x0c0 0x009>;
                #address-cells = <0>;
                #size-cells = <0>;
                #interrupt-cells = <2>;
                compatible = "ibm,uic-440grx","ibm,uic";
                interrupt-controller;
                cell-index = <1>;
-               dcr-reg = <0d0 009>;
+               dcr-reg = <0x0d0 0x009>;
                #address-cells = <0>;
                #size-cells = <0>;
                #interrupt-cells = <2>;
-               interrupts = <1e 4 1f 4>; /* cascade */
+               interrupts = <0x1e 0x4 0x1f 0x4>; /* cascade */
                interrupt-parent = <&UIC0>;
        };
 
                compatible = "ibm,uic-440grx","ibm,uic";
                interrupt-controller;
                cell-index = <2>;
-               dcr-reg = <0e0 009>;
+               dcr-reg = <0x0e0 0x009>;
                #address-cells = <0>;
                #size-cells = <0>;
                #interrupt-cells = <2>;
-               interrupts = <1c 4 1d 4>; /* cascade */
+               interrupts = <0x1c 0x4 0x1d 0x4>; /* cascade */
                interrupt-parent = <&UIC0>;
        };
 
        SDR0: sdr {
                compatible = "ibm,sdr-440grx", "ibm,sdr-440ep";
-               dcr-reg = <00e 002>;
+               dcr-reg = <0x00e 0x002>;
        };
 
        CPR0: cpr {
                compatible = "ibm,cpr-440grx", "ibm,cpr-440ep";
-               dcr-reg = <00c 002>;
+               dcr-reg = <0x00c 0x002>;
        };
 
        plb {
 
                SDRAM0: sdram {
                        compatible = "ibm,sdram-440grx", "ibm,sdram-44x-ddr2denali";
-                       dcr-reg = <010 2>;
+                       dcr-reg = <0x010 0x002>;
                };
 
                DMA0: dma {
                        compatible = "ibm,dma-440grx", "ibm,dma-4xx";
-                       dcr-reg = <100 027>;
+                       dcr-reg = <0x100 0x027>;
                };
 
                MAL0: mcmal {
                        compatible = "ibm,mcmal-440grx", "ibm,mcmal2";
-                       dcr-reg = <180 62>;
+                       dcr-reg = <0x180 0x062>;
                        num-tx-chans = <2>;
                        num-rx-chans = <2>;
                        interrupt-parent = <&MAL0>;
-                       interrupts = <0 1 2 3 4>;
+                       interrupts = <0x0 0x1 0x2 0x3 0x4>;
                        #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>;
+                       interrupt-map = </*TXEOB*/ 0x0 &UIC0 0xa 0x4
+                                       /*RXEOB*/ 0x1 &UIC0 0xb 0x4
+                                       /*SERR*/  0x2 &UIC1 0x0 0x4
+                                       /*TXDE*/  0x3 &UIC1 0x1 0x4
+                                       /*RXDE*/  0x4 &UIC1 0x2 0x4>;
+                       interrupt-map-mask = <0xffffffff>;
                };
 
                POB0: opb {
                        compatible = "ibm,opb-440grx", "ibm,opb";
                        #address-cells = <1>;
                        #size-cells = <1>;
-                       ranges = <00000000 1 00000000 80000000
-                                 80000000 1 80000000 80000000>;
+                       ranges = <0x00000000 0x00000001 0x00000000 0x80000000
+                                 0x80000000 0x00000001 0x80000000 0x80000000>;
                        interrupt-parent = <&UIC1>;
-                       interrupts = <4>;
+                       interrupts = <0x7 0x4>;
                        clock-frequency = <0>; /* Filled in by zImage */
 
                        EBC0: ebc {
                                compatible = "ibm,ebc-440grx", "ibm,ebc";
-                               dcr-reg = <012 2>;
+                               dcr-reg = <0x012 0x002>;
                                #address-cells = <2>;
                                #size-cells = <1>;
                                clock-frequency = <0>; /* Filled in by zImage */
-                               interrupts = <1>;
+                               interrupts = <0x5 0x1>;
                                interrupt-parent = <&UIC1>;
 
                                nor_flash@0,0 {
                                        compatible = "amd,s29gl256n", "cfi-flash";
                                        bank-width = <2>;
-                                       reg = <0 000000 4000000>;
+                                       reg = <0x00000000 0x00000000 0x04000000>;
                                        #address-cells = <1>;
                                        #size-cells = <1>;
                                        partition@0 {
                                                label = "Kernel";
-                                               reg = <0 180000>;
+                                               reg = <0x00000000 0x00180000>;
                                        };
                                        partition@180000 {
                                                label = "ramdisk";
-                                               reg = <180000 200000>;
+                                               reg = <0x00180000 0x00200000>;
                                        };
                                        partition@380000 {
                                                label = "file system";
-                                               reg = <380000 3aa0000>;
+                                               reg = <0x00380000 0x03aa0000>;
                                        };
                                        partition@3e20000 {
                                                label = "kozio";
-                                               reg = <3e20000 140000>;
+                                               reg = <0x03e20000 0x00140000>;
                                        };
                                        partition@3f60000 {
                                                label = "env";
-                                               reg = <3f60000 40000>;
+                                               reg = <0x03f60000 0x00040000>;
                                        };
                                        partition@3fa0000 {
                                                label = "u-boot";
-                                               reg = <3fa0000 60000>;
+                                               reg = <0x03fa0000 0x00060000>;
                                        };
                                };
 
                        UART0: serial@ef600300 {
                                device_type = "serial";
                                compatible = "ns16550";
-                               reg = <ef600300 8>;
-                               virtual-reg = <ef600300>;
+                               reg = <0xef600300 0x00000008>;
+                               virtual-reg = <0xef600300>;
                                clock-frequency = <0>; /* Filled in by zImage */
-                               current-speed = <1c200>;
+                               current-speed = <115200>;
                                interrupt-parent = <&UIC0>;
-                               interrupts = <0 4>;
+                               interrupts = <0x0 0x4>;
                        };
 
                        UART1: serial@ef600400 {
                                device_type = "serial";
                                compatible = "ns16550";
-                               reg = <ef600400 8>;
-                               virtual-reg = <ef600400>;
+                               reg = <0xef600400 0x00000008>;
+                               virtual-reg = <0xef600400>;
                                clock-frequency = <0>;
                                current-speed = <0>;
                                interrupt-parent = <&UIC0>;
-                               interrupts = <4>;
+                               interrupts = <0x1 0x4>;
                        };
 
                        UART2: serial@ef600500 {
                                device_type = "serial";
                                compatible = "ns16550";
-                               reg = <ef600500 8>;
-                               virtual-reg = <ef600500>;
+                               reg = <0xef600500 0x00000008>;
+                               virtual-reg = <0xef600500>;
                                clock-frequency = <0>;
                                current-speed = <0>;
                                interrupt-parent = <&UIC1>;
-                               interrupts = <4>;
+                               interrupts = <0x3 0x4>;
                        };
 
                        UART3: serial@ef600600 {
                                device_type = "serial";
                                compatible = "ns16550";
-                               reg = <ef600600 8>;
-                               virtual-reg = <ef600600>;
+                               reg = <0xef600600 0x00000008>;
+                               virtual-reg = <0xef600600>;
                                clock-frequency = <0>;
                                current-speed = <0>;
                                interrupt-parent = <&UIC1>;
-                               interrupts = <4>;
+                               interrupts = <0x4 0x4>;
                        };
 
                        IIC0: i2c@ef600700 {
                                compatible = "ibm,iic-440grx", "ibm,iic";
-                               reg = <ef600700 14>;
+                               reg = <0xef600700 0x00000014>;
                                interrupt-parent = <&UIC0>;
-                               interrupts = <4>;
+                               interrupts = <0x2 0x4>;
                        };
 
                        IIC1: i2c@ef600800 {
                                compatible = "ibm,iic-440grx", "ibm,iic";
-                               reg = <ef600800 14>;
+                               reg = <0xef600800 0x00000014>;
                                interrupt-parent = <&UIC0>;
-                               interrupts = <4>;
+                               interrupts = <0x7 0x4>;
                        };
 
                        ZMII0: emac-zmii@ef600d00 {
                                compatible = "ibm,zmii-440grx", "ibm,zmii";
-                               reg = <ef600d00 c>;
+                               reg = <0xef600d00 0x0000000c>;
                        };
 
                        RGMII0: emac-rgmii@ef601000 {
                                compatible = "ibm,rgmii-440grx", "ibm,rgmii";
-                               reg = <ef601000 8>;
+                               reg = <0xef601000 0x00000008>;
                                has-mdio;
                        };
 
                                device_type = "network";
                                compatible = "ibm,emac-440grx", "ibm,emac-440epx", "ibm,emac4";
                                interrupt-parent = <&EMAC0>;
-                               interrupts = <0 1>;
+                               interrupts = <0x0 0x1>;
                                #interrupt-cells = <1>;
                                #address-cells = <0>;
                                #size-cells = <0>;
-                               interrupt-map = </*Status*/ 0 &UIC0 18 4
-                                               /*Wake*/  1 &UIC1 1d 4>;
-                               reg = <ef600e00 70>;
+                               interrupt-map = </*Status*/ 0x0 &UIC0 0x18 0x4
+                                               /*Wake*/  0x1 &UIC1 0x1d 0x4>;
+                               reg = <0xef600e00 0x00000070>;
                                local-mac-address = [000000000000];
                                mal-device = <&MAL0>;
                                mal-tx-channel = <0>;
                                mal-rx-channel = <0>;
                                cell-index = <0>;
-                               max-frame-size = <2328>;
-                               rx-fifo-size = <1000>;
-                               tx-fifo-size = <800>;
+                               max-frame-size = <9000>;
+                               rx-fifo-size = <4096>;
+                               tx-fifo-size = <2048>;
                                phy-mode = "rgmii";
-                               phy-map = <00000000>;
+                               phy-map = <0x00000000>;
                                zmii-device = <&ZMII0>;
                                zmii-channel = <0>;
                                rgmii-device = <&RGMII0>;
                                device_type = "network";
                                compatible = "ibm,emac-440grx", "ibm,emac-440epx", "ibm,emac4";
                                interrupt-parent = <&EMAC1>;
-                               interrupts = <0 1>;
+                               interrupts = <0x0 0x1>;
                                #interrupt-cells = <1>;
                                #address-cells = <0>;
                                #size-cells = <0>;
-                               interrupt-map = </*Status*/ 0 &UIC0 19 4
-                                               /*Wake*/  1 &UIC1 1f 4>;
-                               reg = <ef600f00 70>;
+                               interrupt-map = </*Status*/ 0x0 &UIC0 0x19 0x4
+                                               /*Wake*/  0x1 &UIC1 0x1f 0x4>;
+                               reg = <0xef600f00 0x00000070>;
                                local-mac-address = [000000000000];
                                mal-device = <&MAL0>;
                                mal-tx-channel = <1>;
                                mal-rx-channel = <1>;
                                cell-index = <1>;
-                               max-frame-size = <2328>;
-                               rx-fifo-size = <1000>;
-                               tx-fifo-size = <800>;
+                               max-frame-size = <9000>;
+                               rx-fifo-size = <4096>;
+                               tx-fifo-size = <2048>;
                                phy-mode = "rgmii";
-                               phy-map = <00000000>;
+                               phy-map = <0x00000000>;
                                zmii-device = <&ZMII0>;
                                zmii-channel = <1>;
                                rgmii-device = <&RGMII0>;
                        #address-cells = <3>;
                        compatible = "ibm,plb440grx-pci", "ibm,plb-pci";
                        primary;
-                       reg = <1 eec00000 8     /* Config space access */
-                              1 eed00000 4     /* IACK */
-                              1 eed00000 4     /* Special cycle */
-                              1 ef400000 40>;  /* Internal registers */
+                       reg = <0x00000001 0xeec00000 0x00000008 /* Config space access */
+                              0x00000001 0xeed00000 0x00000004 /* IACK */
+                              0x00000001 0xeed00000 0x00000004 /* Special cycle */
+                              0x00000001 0xef400000 0x00000040>;       /* Internal registers */
 
                        /* Outbound ranges, one memory and one IO,
                         * later cannot be changed. Chip supports a second
                         * IO range but we don't use it for now
                         */
-                       ranges = <02000000 0 80000000 1 80000000 0 10000000
-                               01000000 0 00000000 1 e8000000 0 00100000>;
+                       ranges = <0x02000000 0x0 0x80000000 0x1 0x80000000 0x0 0x40000000
+                               0x01000000 0x0 0x00000000 0x1 0xe8000000 0x0 0x00010000
+                               0x01000000 0x0 0x00000000 0x1 0xe8800000 0x0 0x03800000>;
 
                        /* Inbound 2GB range starting at 0 */
-                       dma-ranges = <42000000 0 0 0 0 0 80000000>;
+                       dma-ranges = <0x42000000 0x0 0x0 0x0 0x0 0x0 0x80000000>;
 
                        /* All PCI interrupts are routed to IRQ 67 */
-                       interrupt-map-mask = <0000 0 0 0>;
-                       interrupt-map = < 0000 0 0 0 &UIC2 3 8 >;
+                       interrupt-map-mask = <0x0 0x0 0x0 0x0>;
+                       interrupt-map = < 0x0 0x0 0x0 0x0 &UIC2 0x3 0x8 >;
                };
        };
 
index 22d967178fe9c4e00ab99dae429ddaa96255eadc..d252e38283e78652872cca0897adffba3d79577a 100644 (file)
@@ -44,6 +44,7 @@
                        timebase-frequency = <0>;       // From uboot
                        bus-frequency = <0>;
                        clock-frequency = <0>;
+                       next-level-cache = <&L2>;
                };
        };
 
                        interrupts = <0x12 0x2>;
                };
 
-               l2-cache-controller@20000 {
+               L2: l2-cache-controller@20000 {
                        compatible = "fsl,8548-l2-cache-controller";
                        reg = <0x20000 0x1000>;
                        cache-line-size = <0x20>;       // 32 bytes
                mpic: pic@40000 {
                        interrupt-controller;
                        #address-cells = <0>;
-                       #size-cells = <0>;
                        #interrupt-cells = <2>;
                        reg = <0x40000 0x40000>;
                        compatible = "chrp,open-pic";
                        device_type = "open-pic";
-                        big-endian;
                };
        };
 
index 0476802fba6003370b71be5654595939865e28e5..e556c5a4cf954746a933eef68276ba1d7240e77c 100644 (file)
@@ -43,6 +43,7 @@
                        timebase-frequency = <0>;       // From uboot
                        bus-frequency = <0>;
                        clock-frequency = <0>;
+                       next-level-cache = <&L2>;
                };
        };
 
@@ -66,7 +67,7 @@
                        interrupts = <0x12 0x2>;
                };
 
-               l2-cache-controller@20000 {
+               L2: l2-cache-controller@20000 {
                        compatible = "fsl,8560-l2-cache-controller";
                        reg = <0x20000 0x1000>;
                        cache-line-size = <0x20>;       // 32 bytes
                mpic: pic@40000 {
                        interrupt-controller;
                        #address-cells = <0>;
-                       #size-cells = <0>;
                        #interrupt-cells = <2>;
+                       compatible = "chrp,open-pic";
                        reg = <0x40000 0x40000>;
                        device_type = "open-pic";
                };
index 72d67564bdfc6302a3d48185761aa5abeadd67ce..149dabc5521772d964dd51eda2be7864255ac96e 100644 (file)
  *
  */
 
+/dts-v1/;
+
 / {
        #address-cells = <2>;
        #size-cells = <1>;
        model = "amcc,sequoia";
        compatible = "amcc,sequoia";
-       dcr-parent = <&/cpus/cpu@0>;
+       dcr-parent = <&{/cpus/cpu@0}>;
 
        aliases {
                ethernet0 = &EMAC0;
                cpu@0 {
                        device_type = "cpu";
                        model = "PowerPC,440EPx";
-                       reg = <0>;
+                       reg = <0x00000000>;
                        clock-frequency = <0>; /* Filled in by zImage */
                        timebase-frequency = <0>; /* Filled in by zImage */
-                       i-cache-line-size = <20>;
-                       d-cache-line-size = <20>;
-                       i-cache-size = <8000>;
-                       d-cache-size = <8000>;
+                       i-cache-line-size = <32>;
+                       d-cache-line-size = <32>;
+                       i-cache-size = <32768>;
+                       d-cache-size = <32768>;
                        dcr-controller;
                        dcr-access-method = "native";
                };
 
        memory {
                device_type = "memory";
-               reg = <0 0 0>; /* Filled in by zImage */
+               reg = <0x00000000 0x00000000 0x00000000>; /* Filled in by zImage */
        };
 
        UIC0: interrupt-controller0 {
                compatible = "ibm,uic-440epx","ibm,uic";
                interrupt-controller;
                cell-index = <0>;
-               dcr-reg = <0c0 009>;
+               dcr-reg = <0x0c0 0x009>;
                #address-cells = <0>;
                #size-cells = <0>;
                #interrupt-cells = <2>;
                compatible = "ibm,uic-440epx","ibm,uic";
                interrupt-controller;
                cell-index = <1>;
-               dcr-reg = <0d0 009>;
+               dcr-reg = <0x0d0 0x009>;
                #address-cells = <0>;
                #size-cells = <0>;
                #interrupt-cells = <2>;
-               interrupts = <1e 4 1f 4>; /* cascade */
+               interrupts = <0x1e 0x4 0x1f 0x4>; /* cascade */
                interrupt-parent = <&UIC0>;
        };
 
                compatible = "ibm,uic-440epx","ibm,uic";
                interrupt-controller;
                cell-index = <2>;
-               dcr-reg = <0e0 009>;
+               dcr-reg = <0x0e0 0x009>;
                #address-cells = <0>;
                #size-cells = <0>;
                #interrupt-cells = <2>;
-               interrupts = <1c 4 1d 4>; /* cascade */
+               interrupts = <0x1c 0x4 0x1d 0x4>; /* cascade */
                interrupt-parent = <&UIC0>;
        };
 
        SDR0: sdr {
                compatible = "ibm,sdr-440epx", "ibm,sdr-440ep";
-               dcr-reg = <00e 002>;
+               dcr-reg = <0x00e 0x002>;
        };
 
        CPR0: cpr {
                compatible = "ibm,cpr-440epx", "ibm,cpr-440ep";
-               dcr-reg = <00c 002>;
+               dcr-reg = <0x00c 0x002>;
        };
 
        plb {
 
                SDRAM0: sdram {
                        compatible = "ibm,sdram-440epx", "ibm,sdram-44x-ddr2denali";
-                       dcr-reg = <010 2>;
+                       dcr-reg = <0x010 0x002>;
                };
 
                DMA0: dma {
                        compatible = "ibm,dma-440epx", "ibm,dma-4xx";
-                       dcr-reg = <100 027>;
+                       dcr-reg = <0x100 0x027>;
                };
 
                MAL0: mcmal {
                        compatible = "ibm,mcmal-440epx", "ibm,mcmal2";
-                       dcr-reg = <180 62>;
+                       dcr-reg = <0x180 0x062>;
                        num-tx-chans = <2>;
                        num-rx-chans = <2>;
                        interrupt-parent = <&MAL0>;
-                       interrupts = <0 1 2 3 4>;
+                       interrupts = <0x0 0x1 0x2 0x3 0x4>;
                        #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>;
+                       interrupt-map = </*TXEOB*/ 0x0 &UIC0 0xa 0x4
+                                       /*RXEOB*/ 0x1 &UIC0 0xb 0x4
+                                       /*SERR*/  0x2 &UIC1 0x0 0x4
+                                       /*TXDE*/  0x3 &UIC1 0x1 0x4
+                                       /*RXDE*/  0x4 &UIC1 0x2 0x4>;
+                       interrupt-map-mask = <0xffffffff>;
                };
 
                USB1: usb@e0000400 {
                        compatible = "ohci-be";
-                       reg = <0 e0000400 60>;
+                       reg = <0x00000000 0xe0000400 0x00000060>;
                        interrupt-parent = <&UIC0>;
-                       interrupts = <15 8>;
+                       interrupts = <0x15 0x8>;
                };
 
                USB0: ehci@e0000300 {
                        compatible = "ibm,usb-ehci-440epx", "usb-ehci";
                        interrupt-parent = <&UIC0>;
-                       interrupts = <1a 4>;
-                       reg = <0 e0000300 90 0 e0000390 70>;
+                       interrupts = <0x1a 0x4>;
+                       reg = <0x00000000 0xe0000300 0x00000090 0x00000000 0xe0000390 0x00000070>;
                        big-endian;
                };
 
                        compatible = "ibm,opb-440epx", "ibm,opb";
                        #address-cells = <1>;
                        #size-cells = <1>;
-                       ranges = <00000000 1 00000000 80000000
-                                 80000000 1 80000000 80000000>;
+                       ranges = <0x00000000 0x00000001 0x00000000 0x80000000
+                                 0x80000000 0x00000001 0x80000000 0x80000000>;
                        interrupt-parent = <&UIC1>;
-                       interrupts = <4>;
+                       interrupts = <0x7 0x4>;
                        clock-frequency = <0>; /* Filled in by zImage */
 
                        EBC0: ebc {
                                compatible = "ibm,ebc-440epx", "ibm,ebc";
-                               dcr-reg = <012 2>;
+                               dcr-reg = <0x012 0x002>;
                                #address-cells = <2>;
                                #size-cells = <1>;
                                clock-frequency = <0>; /* Filled in by zImage */
-                               interrupts = <1>;
+                               interrupts = <0x5 0x1>;
                                interrupt-parent = <&UIC1>;
 
                                nor_flash@0,0 {
                                        compatible = "amd,s29gl256n", "cfi-flash";
                                        bank-width = <2>;
-                                       reg = <0 000000 4000000>;
+                                       reg = <0x00000000 0x00000000 0x04000000>;
                                        #address-cells = <1>;
                                        #size-cells = <1>;
                                        partition@0 {
                                                label = "Kernel";
-                                               reg = <0 180000>;
+                                               reg = <0x00000000 0x00180000>;
                                        };
                                        partition@180000 {
                                                label = "ramdisk";
-                                               reg = <180000 200000>;
+                                               reg = <0x00180000 0x00200000>;
                                        };
                                        partition@380000 {
                                                label = "file system";
-                                               reg = <380000 3aa0000>;
+                                               reg = <0x00380000 0x03aa0000>;
                                        };
                                        partition@3e20000 {
                                                label = "kozio";
-                                               reg = <3e20000 140000>;
+                                               reg = <0x03e20000 0x00140000>;
                                        };
                                        partition@3f60000 {
                                                label = "env";
-                                               reg = <3f60000 40000>;
+                                               reg = <0x03f60000 0x00040000>;
                                        };
                                        partition@3fa0000 {
                                                label = "u-boot";
-                                               reg = <3fa0000 60000>;
+                                               reg = <0x03fa0000 0x00060000>;
                                        };
                                };
 
                        UART0: serial@ef600300 {
                                device_type = "serial";
                                compatible = "ns16550";
-                               reg = <ef600300 8>;
-                               virtual-reg = <ef600300>;
+                               reg = <0xef600300 0x00000008>;
+                               virtual-reg = <0xef600300>;
                                clock-frequency = <0>; /* Filled in by zImage */
-                               current-speed = <1c200>;
+                               current-speed = <115200>;
                                interrupt-parent = <&UIC0>;
-                               interrupts = <0 4>;
+                               interrupts = <0x0 0x4>;
                        };
 
                        UART1: serial@ef600400 {
                                device_type = "serial";
                                compatible = "ns16550";
-                               reg = <ef600400 8>;
-                               virtual-reg = <ef600400>;
+                               reg = <0xef600400 0x00000008>;
+                               virtual-reg = <0xef600400>;
                                clock-frequency = <0>;
                                current-speed = <0>;
                                interrupt-parent = <&UIC0>;
-                               interrupts = <4>;
+                               interrupts = <0x1 0x4>;
                        };
 
                        UART2: serial@ef600500 {
                                device_type = "serial";
                                compatible = "ns16550";
-                               reg = <ef600500 8>;
-                               virtual-reg = <ef600500>;
+                               reg = <0xef600500 0x00000008>;
+                               virtual-reg = <0xef600500>;
                                clock-frequency = <0>;
                                current-speed = <0>;
                                interrupt-parent = <&UIC1>;
-                               interrupts = <4>;
+                               interrupts = <0x3 0x4>;
                        };
 
                        UART3: serial@ef600600 {
                                device_type = "serial";
                                compatible = "ns16550";
-                               reg = <ef600600 8>;
-                               virtual-reg = <ef600600>;
+                               reg = <0xef600600 0x00000008>;
+                               virtual-reg = <0xef600600>;
                                clock-frequency = <0>;
                                current-speed = <0>;
                                interrupt-parent = <&UIC1>;
-                               interrupts = <4>;
+                               interrupts = <0x4 0x4>;
                        };
 
                        IIC0: i2c@ef600700 {
                                compatible = "ibm,iic-440epx", "ibm,iic";
-                               reg = <ef600700 14>;
+                               reg = <0xef600700 0x00000014>;
                                interrupt-parent = <&UIC0>;
-                               interrupts = <4>;
+                               interrupts = <0x2 0x4>;
                        };
 
                        IIC1: i2c@ef600800 {
                                compatible = "ibm,iic-440epx", "ibm,iic";
-                               reg = <ef600800 14>;
+                               reg = <0xef600800 0x00000014>;
                                interrupt-parent = <&UIC0>;
-                               interrupts = <4>;
+                               interrupts = <0x7 0x4>;
                        };
 
                        ZMII0: emac-zmii@ef600d00 {
                                compatible = "ibm,zmii-440epx", "ibm,zmii";
-                               reg = <ef600d00 c>;
+                               reg = <0xef600d00 0x0000000c>;
                        };
 
                        RGMII0: emac-rgmii@ef601000 {
                                compatible = "ibm,rgmii-440epx", "ibm,rgmii";
-                               reg = <ef601000 8>;
+                               reg = <0xef601000 0x00000008>;
                                has-mdio;
                        };
 
                                device_type = "network";
                                compatible = "ibm,emac-440epx", "ibm,emac4";
                                interrupt-parent = <&EMAC0>;
-                               interrupts = <0 1>;
+                               interrupts = <0x0 0x1>;
                                #interrupt-cells = <1>;
                                #address-cells = <0>;
                                #size-cells = <0>;
-                               interrupt-map = </*Status*/ 0 &UIC0 18 4
-                                               /*Wake*/  1 &UIC1 1d 4>;
-                               reg = <ef600e00 70>;
+                               interrupt-map = </*Status*/ 0x0 &UIC0 0x18 0x4
+                                               /*Wake*/  0x1 &UIC1 0x1d 0x4>;
+                               reg = <0xef600e00 0x00000070>;
                                local-mac-address = [000000000000];
                                mal-device = <&MAL0>;
                                mal-tx-channel = <0>;
                                mal-rx-channel = <0>;
                                cell-index = <0>;
-                               max-frame-size = <2328>;
-                               rx-fifo-size = <1000>;
-                               tx-fifo-size = <800>;
+                               max-frame-size = <9000>;
+                               rx-fifo-size = <4096>;
+                               tx-fifo-size = <2048>;
                                phy-mode = "rgmii";
-                               phy-map = <00000000>;
+                               phy-map = <0x00000000>;
                                zmii-device = <&ZMII0>;
                                zmii-channel = <0>;
                                rgmii-device = <&RGMII0>;
                                device_type = "network";
                                compatible = "ibm,emac-440epx", "ibm,emac4";
                                interrupt-parent = <&EMAC1>;
-                               interrupts = <0 1>;
+                               interrupts = <0x0 0x1>;
                                #interrupt-cells = <1>;
                                #address-cells = <0>;
                                #size-cells = <0>;
-                               interrupt-map = </*Status*/ 0 &UIC0 19 4
-                                               /*Wake*/  1 &UIC1 1f 4>;
-                               reg = <ef600f00 70>;
+                               interrupt-map = </*Status*/ 0x0 &UIC0 0x19 0x4
+                                               /*Wake*/  0x1 &UIC1 0x1f 0x4>;
+                               reg = <0xef600f00 0x00000070>;
                                local-mac-address = [000000000000];
                                mal-device = <&MAL0>;
                                mal-tx-channel = <1>;
                                mal-rx-channel = <1>;
                                cell-index = <1>;
-                               max-frame-size = <2328>;
-                               rx-fifo-size = <1000>;
-                               tx-fifo-size = <800>;
+                               max-frame-size = <9000>;
+                               rx-fifo-size = <4096>;
+                               tx-fifo-size = <2048>;
                                phy-mode = "rgmii";
-                               phy-map = <00000000>;
+                               phy-map = <0x00000000>;
                                zmii-device = <&ZMII0>;
                                zmii-channel = <1>;
                                rgmii-device = <&RGMII0>;
                        #address-cells = <3>;
                        compatible = "ibm,plb440epx-pci", "ibm,plb-pci";
                        primary;
-                       reg = <1 eec00000 8     /* Config space access */
-                              1 eed00000 4     /* IACK */
-                              1 eed00000 4     /* Special cycle */
-                              1 ef400000 40>;  /* Internal registers */
+                       reg = <0x00000001 0xeec00000 0x00000008 /* Config space access */
+                              0x00000001 0xeed00000 0x00000004 /* IACK */
+                              0x00000001 0xeed00000 0x00000004 /* Special cycle */
+                              0x00000001 0xef400000 0x00000040>;       /* Internal registers */
 
                        /* Outbound ranges, one memory and one IO,
                         * later cannot be changed. Chip supports a second
                         * I/O              1 E800 0000     1 E800 FFFF     64KB
                         * I/O              1 E880 0000     1 EBFF FFFF     56MB
                         */
-                       ranges = <02000000 0 80000000 1 80000000 0 40000000
-                               01000000 0 00000000 1 e8000000 0 00010000
-                               01000000 0 00000000 1 e8800000 0 03800000>;
+                       ranges = <0x02000000 0x00000000 0x80000000 0x00000001 0x80000000 0x00000000 0x40000000
+                               0x01000000 0x00000000 0x00000000 0x00000001 0xe8000000 0x00000000 0x00010000
+                               0x01000000 0x00000000 0x00000000 0x00000001 0xe8800000 0x00000000 0x03800000>;
 
                        /* Inbound 2GB range starting at 0 */
-                       dma-ranges = <42000000 0 0 0 0 0 80000000>;
+                       dma-ranges = <0x42000000 0x0 0x0 0x0 0x0 0x0 0x80000000>;
 
                        /* All PCI interrupts are routed to IRQ 67 */
-                       interrupt-map-mask = <0000 0 0 0>;
-                       interrupt-map = < 0000 0 0 0 &UIC2 3 8 >;
+                       interrupt-map-mask = <0x0 0x0 0x0 0x0>;
+                       interrupt-map = < 0x0 0x0 0x0 0x0 &UIC2 0x3 0x8 >;
                };
        };
 
index 5893816c0bcecc5b18ec1653c1cbb2e5c3cc8c1c..eab680ce10da035003ca19670553e5a1ab900ece 100644 (file)
@@ -95,6 +95,7 @@
 
                mpic: interrupt-controller@40000 {
                        #interrupt-cells = <2>;
+                       #address-cells = <0>;
                        device_type = "open-pic";
                        compatible = "chrp,open-pic";
                        interrupt-controller;
index f81fd7fdb29e1ef58f424404904bfddfcd4126ab..1e612836b248063cfc2035f07724421d05576df9 100644 (file)
@@ -38,6 +38,7 @@
                        timebase-frequency = <0>;
                        bus-frequency = <0>;
                        clock-frequency = <0>;
+                       next-level-cache = <&L2>;
                };
        };
 
@@ -62,7 +63,7 @@
                        interrupts = <18 2>;
                };
 
-               l2-cache-controller@20000 {
+               L2: l2-cache-controller@20000 {
                        compatible = "fsl,8540-l2-cache-controller";
                        reg = <0x20000 0x1000>;
                        cache-line-size = <32>;
                        #address-cells = <0>;
                        #interrupt-cells = <2>;
                        reg = <0x40000 0x40000>;
+                       compatible = "chrp,open-pic";
                        device_type = "open-pic";
                };
 
index e808e1c5593a924c24bb8d11f9f2e636da6ee903..dcb749884b6df8dbadef2176983e18c4ef4d36d2 100644 (file)
  * any warranty of any kind, whether express or implied.
  */
 
+/dts-v1/;
+
 / {
        #address-cells = <2>;
        #size-cells = <1>;
        model = "amcc,taishan";
        compatible = "amcc,taishan";
-       dcr-parent = <&/cpus/cpu@0>;
+       dcr-parent = <&{/cpus/cpu@0}>;
 
        aliases {
                ethernet0 = &EMAC2;
                cpu@0 {
                        device_type = "cpu";
                        model = "PowerPC,440GX";
-                       reg = <0>;
-                       clock-frequency = <2FAF0800>; // 800MHz
+                       reg = <0x00000000>;
+                       clock-frequency = <800000000>; // 800MHz
                        timebase-frequency = <0>; // Filled in by zImage
-                       i-cache-line-size = <32>;
-                       d-cache-line-size = <32>;
-                       i-cache-size = <8000>; /* 32 kB */
-                       d-cache-size = <8000>; /* 32 kB */
+                       i-cache-line-size = <50>;
+                       d-cache-line-size = <50>;
+                       i-cache-size = <32768>; /* 32 kB */
+                       d-cache-size = <32768>; /* 32 kB */
                        dcr-controller;
                        dcr-access-method = "native";
                };
@@ -45,7 +47,7 @@
 
        memory {
                device_type = "memory";
-               reg = <0 0 0>; // Filled in by zImage
+               reg = <0x00000000 0x00000000 0x00000000>; // Filled in by zImage
        };
 
 
@@ -53,7 +55,7 @@
                compatible = "ibm,uic-440gx", "ibm,uic";
                interrupt-controller;
                cell-index = <3>;
-               dcr-reg = <200 009>;
+               dcr-reg = <0x200 0x009>;
                #address-cells = <0>;
                #size-cells = <0>;
                #interrupt-cells = <2>;
                compatible = "ibm,uic-440gx", "ibm,uic";
                interrupt-controller;
                cell-index = <0>;
-               dcr-reg = <0c0 009>;
+               dcr-reg = <0x0c0 0x009>;
                #address-cells = <0>;
                #size-cells = <0>;
                #interrupt-cells = <2>;
-               interrupts = <01 4 00 4>; /* cascade - first non-critical */
+               interrupts = <0x1 0x4 0x0 0x4>; /* cascade - first non-critical */
                interrupt-parent = <&UICB0>;
 
        };
                compatible = "ibm,uic-440gx", "ibm,uic";
                interrupt-controller;
                cell-index = <1>;
-               dcr-reg = <0d0 009>;
+               dcr-reg = <0x0d0 0x009>;
                #address-cells = <0>;
                #size-cells = <0>;
                #interrupt-cells = <2>;
-               interrupts = <03 4 02 4>; /* cascade */
+               interrupts = <0x3 0x4 0x2 0x4>; /* cascade */
                interrupt-parent = <&UICB0>;
        };
 
                compatible = "ibm,uic-440gx", "ibm,uic";
                interrupt-controller;
                cell-index = <2>; /* was 1 */
-               dcr-reg = <210 009>;
+               dcr-reg = <0x210 0x009>;
                #address-cells = <0>;
                #size-cells = <0>;
                #interrupt-cells = <2>;
-               interrupts = <05 4 04 4>; /* cascade */
+               interrupts = <0x5 0x4 0x4 0x4>; /* cascade */
                interrupt-parent = <&UICB0>;
        };
 
 
        CPC0: cpc {
                compatible = "ibm,cpc-440gp";
-               dcr-reg = <0b0 003 0e0 010>;
+               dcr-reg = <0x0b0 0x003 0x0e0 0x010>;
                // FIXME: anything else?
        };
 
        L2C0: l2c {
                compatible = "ibm,l2-cache-440gx", "ibm,l2-cache";
-               dcr-reg = <20 8                 /* Internal SRAM DCR's */
-                          30 8>;               /* L2 cache DCR's */
-               cache-line-size = <20>;         /* 32 bytes */
-               cache-size = <40000>;           /* L2, 256K */
+               dcr-reg = <0x020 0x008                  /* Internal SRAM DCR's */
+                          0x030 0x008>;                /* L2 cache DCR's */
+               cache-line-size = <32>;         /* 32 bytes */
+               cache-size = <262144>;          /* L2, 256K */
                interrupt-parent = <&UIC2>;
-               interrupts = <17 1>;
+               interrupts = <0x17 0x1>;
        };
 
        plb {
                #address-cells = <2>;
                #size-cells = <1>;
                ranges;
-               clock-frequency = <9896800>; // 160MHz
+               clock-frequency = <160000000>; // 160MHz
 
                SDRAM0: memory-controller {
                        compatible = "ibm,sdram-440gp";
-                       dcr-reg = <010 2>;
+                       dcr-reg = <0x010 0x002>;
                        // FIXME: anything else?
                };
 
                SRAM0: sram {
                        compatible = "ibm,sram-440gp";
-                       dcr-reg = <020 8 00a 1>;
+                       dcr-reg = <0x020 0x008 0x00a 0x001>;
                };
 
                DMA0: dma {
                        // FIXME: ???
                        compatible = "ibm,dma-440gp";
-                       dcr-reg = <100 027>;
+                       dcr-reg = <0x100 0x027>;
                };
 
                MAL0: mcmal {
                        compatible = "ibm,mcmal-440gx", "ibm,mcmal2";
-                       dcr-reg = <180 62>;
+                       dcr-reg = <0x180 0x062>;
                        num-tx-chans = <4>;
                        num-rx-chans = <4>;
                        interrupt-parent = <&MAL0>;
-                       interrupts = <0 1 2 3 4>;
+                       interrupts = <0x0 0x1 0x2 0x3 0x4>;
                        #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>;
+                       interrupt-map = </*TXEOB*/ 0x0 &UIC0 0xa 0x4
+                                        /*RXEOB*/ 0x1 &UIC0 0xb 0x4
+                                        /*SERR*/  0x2 &UIC1 0x0 0x4
+                                        /*TXDE*/  0x3 &UIC1 0x1 0x4
+                                        /*RXDE*/  0x4 &UIC1 0x2 0x4>;
+                       interrupt-map-mask = <0xffffffff>;
                };
 
                POB0: opb {
                        #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>;
+                       ranges = <0x00000000 0x00000001 0x00000000 0x80000000
+                                 0x80000000 0x00000001 0x80000000 0x80000000>;
+                       dcr-reg = <0x090 0x00b>;
                        interrupt-parent = <&UIC1>;
-                       interrupts = <4>;
-                       clock-frequency = <4C4B400>; // 80MHz
+                       interrupts = <0x7 0x4>;
+                       clock-frequency = <80000000>; // 80MHz
 
 
                        EBC0: ebc {
                                compatible = "ibm,ebc-440gx", "ibm,ebc";
-                               dcr-reg = <012 2>;
+                               dcr-reg = <0x012 0x002>;
                                #address-cells = <2>;
                                #size-cells = <1>;
-                               clock-frequency = <4C4B400>; // 80MHz
+                               clock-frequency = <80000000>; // 80MHz
 
                                /* ranges property is supplied by zImage
                                 * based on firmware's configuration of the
                                 * EBC bridge */
 
-                               interrupts = <4>;
+                               interrupts = <0x5 0x4>;
                                interrupt-parent = <&UIC1>;
 
                                /* TODO: Add other EBC devices */
                        UART0: serial@40000200 {
                                device_type = "serial";
                                compatible = "ns16550";
-                               reg = <40000200 8>;
-                               virtual-reg = <e0000200>;
-                               clock-frequency = <A8C000>;
-                               current-speed = <1C200>; /* 115200 */
+                               reg = <0x40000200 0x00000008>;
+                               virtual-reg = <0xe0000200>;
+                               clock-frequency = <11059200>;
+                               current-speed = <115200>; /* 115200 */
                                interrupt-parent = <&UIC0>;
-                               interrupts = <0 4>;
+                               interrupts = <0x0 0x4>;
                        };
 
                        UART1: serial@40000300 {
                                device_type = "serial";
                                compatible = "ns16550";
-                               reg = <40000300 8>;
-                               virtual-reg = <e0000300>;
-                               clock-frequency = <A8C000>;
-                               current-speed = <1C200>; /* 115200 */
+                               reg = <0x40000300 0x00000008>;
+                               virtual-reg = <0xe0000300>;
+                               clock-frequency = <11059200>;
+                               current-speed = <115200>; /* 115200 */
                                interrupt-parent = <&UIC0>;
-                               interrupts = <4>;
+                               interrupts = <0x1 0x4>;
                        };
 
                        IIC0: i2c@40000400 {
                                /* FIXME */
                                compatible = "ibm,iic-440gp", "ibm,iic";
-                               reg = <40000400 14>;
+                               reg = <0x40000400 0x00000014>;
                                interrupt-parent = <&UIC0>;
-                               interrupts = <4>;
+                               interrupts = <0x2 0x4>;
                        };
                        IIC1: i2c@40000500 {
                                /* FIXME */
                                compatible = "ibm,iic-440gp", "ibm,iic";
-                               reg = <40000500 14>;
+                               reg = <0x40000500 0x00000014>;
                                interrupt-parent = <&UIC0>;
-                               interrupts = <4>;
+                               interrupts = <0x3 0x4>;
                        };
 
                        GPIO0: gpio@40000700 {
                                /* FIXME */
                                compatible = "ibm,gpio-440gp";
-                               reg = <40000700 20>;
+                               reg = <0x40000700 0x00000020>;
                        };
 
                        ZMII0: emac-zmii@40000780 {
                                compatible = "ibm,zmii-440gx", "ibm,zmii";
-                               reg = <40000780 c>;
+                               reg = <0x40000780 0x0000000c>;
                        };
 
                        RGMII0: emac-rgmii@40000790 {
                                compatible = "ibm,rgmii";
-                               reg = <40000790 8>;
+                               reg = <0x40000790 0x00000008>;
                        };
 
                        TAH0: emac-tah@40000b50 {
                                compatible = "ibm,tah-440gx", "ibm,tah";
-                               reg = <40000b50 30>;
+                               reg = <0x40000b50 0x00000030>;
                        };
 
                        TAH1: emac-tah@40000d50 {
                                compatible = "ibm,tah-440gx", "ibm,tah";
-                               reg = <40000d50 30>;
+                               reg = <0x40000d50 0x00000030>;
                        };
 
                        EMAC0: ethernet@40000800 {
-                               unused = <1>;
+                               unused = <0x1>;
                                device_type = "network";
                                compatible = "ibm,emac-440gx", "ibm,emac4";
                                interrupt-parent = <&UIC1>;
-                               interrupts = <1c 4 1d 4>;
-                               reg = <40000800 70>;
+                               interrupts = <0x1c 0x4 0x1d 0x4>;
+                               reg = <0x40000800 0x00000070>;
                                local-mac-address = [000000000000]; // Filled in by zImage
                                mal-device = <&MAL0>;
                                mal-tx-channel = <0>;
                                mal-rx-channel = <0>;
                                cell-index = <0>;
-                               max-frame-size = <5dc>;
-                               rx-fifo-size = <1000>;
-                               tx-fifo-size = <800>;
+                               max-frame-size = <1500>;
+                               rx-fifo-size = <4096>;
+                               tx-fifo-size = <2048>;
                                phy-mode = "rmii";
-                               phy-map = <00000001>;
+                               phy-map = <0x00000001>;
                                zmii-device = <&ZMII0>;
                                zmii-channel = <0>;
                        };
                        EMAC1: ethernet@40000900 {
-                               unused = <1>;
+                               unused = <0x1>;
                                device_type = "network";
                                compatible = "ibm,emac-440gx", "ibm,emac4";
                                interrupt-parent = <&UIC1>;
-                               interrupts = <1e 4 1f 4>;
-                               reg = <40000900 70>;
+                               interrupts = <0x1e 0x4 0x1f 0x4>;
+                               reg = <0x40000900 0x00000070>;
                                local-mac-address = [000000000000]; // Filled in by zImage
                                mal-device = <&MAL0>;
                                mal-tx-channel = <1>;
                                mal-rx-channel = <1>;
                                cell-index = <1>;
-                               max-frame-size = <5dc>;
-                               rx-fifo-size = <1000>;
-                               tx-fifo-size = <800>;
+                               max-frame-size = <1500>;
+                               rx-fifo-size = <4096>;
+                               tx-fifo-size = <2048>;
                                phy-mode = "rmii";
-                               phy-map = <00000001>;
+                               phy-map = <0x00000001>;
                                zmii-device = <&ZMII0>;
                                zmii-channel = <1>;
                        };
                                device_type = "network";
                                compatible = "ibm,emac-440gx", "ibm,emac4";
                                interrupt-parent = <&UIC2>;
-                               interrupts = <0 4 1 4>;
-                               reg = <40000c00 70>;
+                               interrupts = <0x0 0x4 0x1 0x4>;
+                               reg = <0x40000c00 0x00000070>;
                                local-mac-address = [000000000000]; // Filled in by zImage
                                mal-device = <&MAL0>;
                                mal-tx-channel = <2>;
                                mal-rx-channel = <2>;
                                cell-index = <2>;
-                               max-frame-size = <2328>;
-                               rx-fifo-size = <1000>;
-                               tx-fifo-size = <800>;
+                               max-frame-size = <9000>;
+                               rx-fifo-size = <4096>;
+                               tx-fifo-size = <2048>;
                                phy-mode = "rgmii";
-                               phy-map = <00000001>;
+                               phy-map = <0x00000001>;
                                rgmii-device = <&RGMII0>;
                                rgmii-channel = <0>;
                                zmii-device = <&ZMII0>;
                                device_type = "network";
                                compatible = "ibm,emac-440gx", "ibm,emac4";
                                interrupt-parent = <&UIC2>;
-                               interrupts = <2 4 3 4>;
-                               reg = <40000e00 70>;
+                               interrupts = <0x2 0x4 0x3 0x4>;
+                               reg = <0x40000e00 0x00000070>;
                                local-mac-address = [000000000000]; // Filled in by zImage
                                mal-device = <&MAL0>;
                                mal-tx-channel = <3>;
                                mal-rx-channel = <3>;
                                cell-index = <3>;
-                               max-frame-size = <2328>;
-                               rx-fifo-size = <1000>;
-                               tx-fifo-size = <800>;
+                               max-frame-size = <9000>;
+                               rx-fifo-size = <4096>;
+                               tx-fifo-size = <2048>;
                                phy-mode = "rgmii";
-                               phy-map = <00000003>;
+                               phy-map = <0x00000003>;
                                rgmii-device = <&RGMII0>;
                                rgmii-channel = <1>;
                                zmii-device = <&ZMII0>;
 
                        GPT0: gpt@40000a00 {
                                /* FIXME */
-                               reg = <40000a00 d4>;
+                               reg = <0x40000a00 0x000000d4>;
                                interrupt-parent = <&UIC0>;
-                               interrupts = <12 4 13 4 14 4 15 4 16 4>;
+                               interrupts = <0x12 0x4 0x13 0x4 0x14 0x4 0x15 0x4 0x16 0x4>;
                        };
 
                };
                        primary;
                        large-inbound-windows;
                        enable-msi-hole;
-                       reg = <2 0ec00000   8   /* Config space access */
-                              0 0 0            /* no IACK cycles */
-                              2 0ed00000   4   /* Special cycles */
-                              2 0ec80000 100   /* Internal registers */
-                              2 0ec80100  fc>; /* Internal messaging registers */
+                       reg = <0x00000002 0x0ec00000   0x00000008       /* Config space access */
+                              0x00000000 0x00000000 0x00000000         /* no IACK cycles */
+                              0x00000002 0x0ed00000   0x00000004   /* Special cycles */
+                              0x00000002 0x0ec80000 0x00000100 /* Internal registers */
+                              0x00000002 0x0ec80100  0x000000fc>;      /* Internal messaging registers */
 
                        /* Outbound ranges, one memory and one IO,
                         * later cannot be changed
                         */
-                       ranges = <02000000 0 80000000 00000003 80000000 0 80000000
-                                 01000000 0 00000000 00000002 08000000 0 00010000>;
+                       ranges = <0x02000000 0x00000000 0x80000000 0x00000003 0x80000000 0x00000000 0x80000000
+                                 0x01000000 0x00000000 0x00000000 0x00000002 0x08000000 0x00000000 0x00010000>;
 
                        /* Inbound 2GB range starting at 0 */
-                       dma-ranges = <42000000 0 0 0 0 0 80000000>;
+                       dma-ranges = <0x42000000 0x0 0x0 0x0 0x0 0x0 0x80000000>;
 
-                       interrupt-map-mask = <f800 0 0 7>;
+                       interrupt-map-mask = <0xf800 0x0 0x0 0x7>;
                        interrupt-map = <
                                /* IDSEL 1 */
-                               0800 0 0 1 &UIC0 17 8
-                               0800 0 0 2 &UIC0 18 8
-                               0800 0 0 3 &UIC0 19 8
-                               0800 0 0 4 &UIC0 1a 8
+                               0x800 0x0 0x0 0x1 &UIC0 0x17 0x8
+                               0x800 0x0 0x0 0x2 &UIC0 0x18 0x8
+                               0x800 0x0 0x0 0x3 &UIC0 0x19 0x8
+                               0x800 0x0 0x0 0x4 &UIC0 0x1a 0x8
 
                                /* IDSEL 2 */
-                               1000 0 0 1 &UIC0 18 8
-                               1000 0 0 2 &UIC0 19 8
-                               1000 0 0 3 &UIC0 1a 8
-                               1000 0 0 4 &UIC0 17 8
+                               0x1000 0x0 0x0 0x1 &UIC0 0x18 0x8
+                               0x1000 0x0 0x0 0x2 &UIC0 0x19 0x8
+                               0x1000 0x0 0x0 0x3 &UIC0 0x1a 0x8
+                               0x1000 0x0 0x0 0x4 &UIC0 0x17 0x8
                        >;
                };
        };
index 1addb3ae719ed56303a2233e5e57e9eae18a6ece..7b653a583a2d02dbb204c982a46c9a3183684270 100644 (file)
@@ -40,6 +40,7 @@
                        timebase-frequency = <0>;
                        bus-frequency = <0>;
                        clock-frequency = <0>;
+                       next-level-cache = <&L2>;
                };
        };
 
@@ -64,7 +65,7 @@
                        interrupts = <18 2>;
                };
 
-               l2-cache-controller@20000 {
+               L2: l2-cache-controller@20000 {
                        compatible = "fsl,8540-l2-cache-controller";
                        reg = <0x20000 0x1000>;
                        cache-line-size = <32>;
                        #interrupt-cells = <2>;
                        reg = <0x40000 0x40000>;
                        device_type = "open-pic";
+                       compatible = "chrp,open-pic";
                };
        };
 
index 9e01093f496ef597a88f0fa586b0e07a2bb2fac2..8fe73ef34195b76601c99484dd7dc828e964136d 100644 (file)
@@ -39,6 +39,7 @@
                        timebase-frequency = <0>;
                        bus-frequency = <0>;
                        clock-frequency = <0>;
+                       next-level-cache = <&L2>;
                };
        };
 
@@ -63,7 +64,7 @@
                        interrupts = <18 2>;
                };
 
-               l2-cache-controller@20000 {
+               L2: l2-cache-controller@20000 {
                        compatible = "fsl,8540-l2-cache-controller";
                        reg = <0x20000 0x1000>;
                        cache-line-size = <32>;
                        #interrupt-cells = <2>;
                        reg = <0x40000 0x40000>;
                        device_type = "open-pic";
+                       compatible = "chrp,open-pic";
                };
 
                cpm@919c0 {
index a20eb06c482f87e262860d5b6ca9f36f1a295a06..0a53bb9ce76ff8e348eedf2a373bcb5cec2d6295 100644 (file)
@@ -39,6 +39,7 @@
                        timebase-frequency = <0>;
                        bus-frequency = <0>;
                        clock-frequency = <0>;
+                       next-level-cache = <&L2>;
                };
        };
 
@@ -63,7 +64,7 @@
                        interrupts = <18 2>;
                };
 
-               l2-cache-controller@20000 {
+               L2: l2-cache-controller@20000 {
                        compatible = "fsl,8540-l2-cache-controller";
                        reg = <0x20000 0x1000>;
                        cache-line-size = <32>;
                        #interrupt-cells = <2>;
                        reg = <0x40000 0x40000>;
                        device_type = "open-pic";
+                       compatible = "chrp,open-pic";
                };
 
                cpm@919c0 {
index b9ac6c943b890919b0f1d87cda369f53db9c569a..a4ee596e97bc6bcaf85d0f335e69d7ac39b28ec5 100644 (file)
@@ -40,6 +40,7 @@
                        timebase-frequency = <0>;
                        bus-frequency = <0>;
                        clock-frequency = <0>;
+                       next-level-cache = <&L2>;
                };
        };
 
@@ -64,7 +65,7 @@
                        interrupts = <18 2>;
                };
 
-               l2-cache-controller@20000 {
+               L2: l2-cache-controller@20000 {
                        compatible = "fsl,8540-l2-cache-controller";
                        reg = <0x20000 0x1000>;
                        cache-line-size = <32>;
                        #interrupt-cells = <2>;
                        reg = <0x40000 0x40000>;
                        device_type = "open-pic";
+                       compatible = "chrp,open-pic";
                };
 
                cpm@919c0 {
index a328607c8f84d40389776088bc830a27d933498e..4a9f726ada139b47d4c45edff3b71b04cbd5f024 100644 (file)
@@ -9,12 +9,14 @@
  * any warranty of any kind, whether express or implied.
  */
 
+/dts-v1/;
+
 / {
        #address-cells = <1>;
        #size-cells = <1>;
        model = "ibm,walnut";
        compatible = "ibm,walnut";
-       dcr-parent = <&/cpus/cpu@0>;
+       dcr-parent = <&{/cpus/cpu@0}>;
 
        aliases {
                ethernet0 = &EMAC;
                cpu@0 {
                        device_type = "cpu";
                        model = "PowerPC,405GP";
-                       reg = <0>;
-                       clock-frequency = <bebc200>; /* Filled in by zImage */
+                       reg = <0x00000000>;
+                       clock-frequency = <200000000>; /* Filled in by zImage */
                        timebase-frequency = <0>; /* Filled in by zImage */
-                       i-cache-line-size = <20>;
-                       d-cache-line-size = <20>;
-                       i-cache-size = <4000>;
-                       d-cache-size = <4000>;
+                       i-cache-line-size = <32>;
+                       d-cache-line-size = <32>;
+                       i-cache-size = <16384>;
+                       d-cache-size = <16384>;
                        dcr-controller;
                        dcr-access-method = "native";
                };
 
        memory {
                device_type = "memory";
-               reg = <0 0>; /* Filled in by zImage */
+               reg = <0x00000000 0x00000000>; /* Filled in by zImage */
        };
 
        UIC0: interrupt-controller {
                compatible = "ibm,uic";
                interrupt-controller;
                cell-index = <0>;
-               dcr-reg = <0c0 9>;
+               dcr-reg = <0x0c0 0x009>;
                #address-cells = <0>;
                #size-cells = <0>;
                #interrupt-cells = <2>;
 
                SDRAM0: memory-controller {
                        compatible = "ibm,sdram-405gp";
-                       dcr-reg = <010 2>;
+                       dcr-reg = <0x010 0x002>;
                };
 
                MAL: mcmal {
                        compatible = "ibm,mcmal-405gp", "ibm,mcmal";
-                       dcr-reg = <180 62>;
+                       dcr-reg = <0x180 0x062>;
                        num-tx-chans = <1>;
                        num-rx-chans = <1>;
                        interrupt-parent = <&UIC0>;
                        interrupts = <
-                               4 /* TXEOB */
-                               4 /* RXEOB */
-                               4 /* SERR */
-                               4 /* TXDE */
-                               4 /* RXDE */>;
+                               0xb 0x4 /* TXEOB */
+                               0xc 0x4 /* RXEOB */
+                               0xa 0x4 /* SERR */
+                               0xd 0x4 /* TXDE */
+                               0xe 0x4 /* RXDE */>;
                };
 
                POB0: opb {
                        compatible = "ibm,opb-405gp", "ibm,opb";
                        #address-cells = <1>;
                        #size-cells = <1>;
-                       ranges = <ef600000 ef600000 a00000>;
-                       dcr-reg = <0a0 5>;
+                       ranges = <0xef600000 0xef600000 0x00a00000>;
+                       dcr-reg = <0x0a0 0x005>;
                        clock-frequency = <0>; /* Filled in by zImage */
 
                        UART0: serial@ef600300 {
                                device_type = "serial";
                                compatible = "ns16550";
-                               reg = <ef600300 8>;
-                               virtual-reg = <ef600300>;
+                               reg = <0xef600300 0x00000008>;
+                               virtual-reg = <0xef600300>;
                                clock-frequency = <0>; /* Filled in by zImage */
-                               current-speed = <2580>;
+                               current-speed = <9600>;
                                interrupt-parent = <&UIC0>;
-                               interrupts = <0 4>;
+                               interrupts = <0x0 0x4>;
                        };
 
                        UART1: serial@ef600400 {
                                device_type = "serial";
                                compatible = "ns16550";
-                               reg = <ef600400 8>;
-                               virtual-reg = <ef600400>;
+                               reg = <0xef600400 0x00000008>;
+                               virtual-reg = <0xef600400>;
                                clock-frequency = <0>; /* Filled in by zImage */
-                               current-speed = <2580>;
+                               current-speed = <9600>;
                                interrupt-parent = <&UIC0>;
-                               interrupts = <4>;
+                               interrupts = <0x1 0x4>;
                        };
 
                        IIC: i2c@ef600500 {
                                compatible = "ibm,iic-405gp", "ibm,iic";
-                               reg = <ef600500 11>;
+                               reg = <0xef600500 0x00000011>;
                                interrupt-parent = <&UIC0>;
-                               interrupts = <4>;
+                               interrupts = <0x2 0x4>;
                        };
 
                        GPIO: gpio@ef600700 {
                                compatible = "ibm,gpio-405gp";
-                               reg = <ef600700 20>;
+                               reg = <0xef600700 0x00000020>;
                        };
 
                        EMAC: ethernet@ef600800 {
                                compatible = "ibm,emac-405gp", "ibm,emac";
                                interrupt-parent = <&UIC0>;
                                interrupts = <
-                                       4 /* Ethernet */
-                                       4 /* Ethernet Wake Up */>;
+                                       0xf 0x4 /* Ethernet */
+                                       0x9 0x4 /* Ethernet Wake Up */>;
                                local-mac-address = [000000000000]; /* Filled in by zImage */
-                               reg = <ef600800 70>;
+                               reg = <0xef600800 0x00000070>;
                                mal-device = <&MAL>;
                                mal-tx-channel = <0>;
                                mal-rx-channel = <0>;
                                cell-index = <0>;
-                               max-frame-size = <5dc>;
-                               rx-fifo-size = <1000>;
-                               tx-fifo-size = <800>;
+                               max-frame-size = <1500>;
+                               rx-fifo-size = <4096>;
+                               tx-fifo-size = <2048>;
                                phy-mode = "rmii";
-                               phy-map = <00000001>;
+                               phy-map = <0x00000001>;
                        };
 
                };
 
                EBC0: ebc {
                        compatible = "ibm,ebc-405gp", "ibm,ebc";
-                       dcr-reg = <012 2>;
+                       dcr-reg = <0x012 0x002>;
                        #address-cells = <2>;
                        #size-cells = <1>;
                        /* The ranges property is supplied by the bootwrapper
                        clock-frequency = <0>; /* Filled in by zImage */
 
                        sram@0,0 {
-                               reg = <0 0 80000>;
+                               reg = <0x00000000 0x00000000 0x00080000>;
                        };
 
                        flash@0,80000 {
                                compatible = "jedec-flash";
                                bank-width = <1>;
-                               reg = <0 80000 80000>;
+                               reg = <0x00000000 0x00080000 0x00080000>;
                                #address-cells = <1>;
                                #size-cells = <1>;
                                partition@0 {
                                        label = "OpenBIOS";
-                                       reg = <0 80000>;
+                                       reg = <0x00000000 0x00080000>;
                                        read-only;
                                };
                        };
                        nvram@1,0 {
                                /* NVRAM and RTC */
                                compatible = "ds1743-nvram";
-                               #bytes = <2000>;
-                               reg = <1 0 2000>;
+                               #bytes = <0x2000>;
+                               reg = <0x00000001 0x00000000 0x00002000>;
                        };
 
                        keyboard@2,0 {
                                compatible = "intel,82C42PC";
-                               reg = <2 0 2>;
+                               reg = <0x00000002 0x00000000 0x00000002>;
                        };
 
                        ir@3,0 {
                                compatible = "ti,TIR2000PAG";
-                               reg = <3 0 10>;
+                               reg = <0x00000003 0x00000000 0x00000010>;
                        };
 
                        fpga@7,0 {
                                compatible = "Walnut-FPGA";
-                               reg = <7 0 10>;
-                               virtual-reg = <f0300005>;
+                               reg = <0x00000007 0x00000000 0x00000010>;
+                               virtual-reg = <0xf0300005>;
                        };
                };
 
                        #address-cells = <3>;
                        compatible = "ibm,plb405gp-pci", "ibm,plb-pci";
                        primary;
-                       reg = <eec00000 8       /* Config space access */
-                              eed80000 4       /* IACK */
-                              eed80000 4       /* Special cycle */
-                              ef480000 40>;    /* Internal registers */
+                       reg = <0xeec00000 0x00000008    /* Config space access */
+                              0xeed80000 0x00000004    /* IACK */
+                              0xeed80000 0x00000004    /* Special cycle */
+                              0xef480000 0x00000040>;  /* Internal registers */
 
                        /* Outbound ranges, one memory and one IO,
                         * later cannot be changed. Chip supports a second
                         * IO range but we don't use it for now
                         */
-                       ranges = <02000000 0 80000000 80000000 0 20000000
-                                 01000000 0 00000000 e8000000 0 00010000>;
+                       ranges = <0x02000000 0x00000000 0x80000000 0x80000000 0x00000000 0x20000000
+                                 0x01000000 0x00000000 0x00000000 0xe8000000 0x00000000 0x00010000>;
 
                        /* Inbound 2GB range starting at 0 */
-                       dma-ranges = <42000000 0 0 0 0 80000000>;
+                       dma-ranges = <0x42000000 0x0 0x0 0x0 0x0 0x80000000>;
 
                        /* Walnut has all 4 IRQ pins tied together per slot */
-                       interrupt-map-mask = <f800 0 0 0>;
+                       interrupt-map-mask = <0xf800 0x0 0x0 0x0>;
                        interrupt-map = <
                                /* IDSEL 1 */
-                               0800 0 0 0 &UIC0 1c 8
+                               0x800 0x0 0x0 0x0 &UIC0 0x1c 0x8
 
                                /* IDSEL 2 */
-                               1000 0 0 0 &UIC0 1d 8
+                               0x1000 0x0 0x0 0x0 &UIC0 0x1d 0x8
 
                                /* IDSEL 3 */
-                               1800 0 0 0 &UIC0 1e 8
+                               0x1800 0x0 0x0 0x0 &UIC0 0x1e 0x8
 
                                /* IDSEL 4 */
-                               2000 0 0 0 &UIC0 1f 8
+                               0x2000 0x0 0x0 0x0 &UIC0 0x1f 0x8
                        >;
                };
        };
index b04a52e22bf5b3b6607fbe274fe05b19c044d4cc..340018cf16b777245cf45970d4b94d11f8c2437f 100644 (file)
@@ -9,12 +9,14 @@
  * any warranty of any kind, whether express or implied.
  */
 
+/dts-v1/;
+
 / {
        #address-cells = <2>;
        #size-cells = <1>;
        model = "pika,warp";
        compatible = "pika,warp";
-       dcr-parent = <&/cpus/cpu@0>;
+       dcr-parent = <&{/cpus/cpu@0}>;
 
        aliases {
                ethernet0 = &EMAC0;
                cpu@0 {
                        device_type = "cpu";
                        model = "PowerPC,440EP";
-                       reg = <0>;
+                       reg = <0x00000000>;
                        clock-frequency = <0>; /* Filled in by zImage */
                        timebase-frequency = <0>; /* Filled in by zImage */
-                       i-cache-line-size = <20>;
-                       d-cache-line-size = <20>;
-                       i-cache-size = <8000>;
-                       d-cache-size = <8000>;
+                       i-cache-line-size = <32>;
+                       d-cache-line-size = <32>;
+                       i-cache-size = <32768>;
+                       d-cache-size = <32768>;
                        dcr-controller;
                        dcr-access-method = "native";
                };
 
        memory {
                device_type = "memory";
-               reg = <0 0 0>; /* Filled in by zImage */
+               reg = <0x00000000 0x00000000 0x00000000>; /* Filled in by zImage */
        };
 
        UIC0: interrupt-controller0 {
                compatible = "ibm,uic-440ep","ibm,uic";
                interrupt-controller;
                cell-index = <0>;
-               dcr-reg = <0c0 009>;
+               dcr-reg = <0x0c0 0x009>;
                #address-cells = <0>;
                #size-cells = <0>;
                #interrupt-cells = <2>;
                compatible = "ibm,uic-440ep","ibm,uic";
                interrupt-controller;
                cell-index = <1>;
-               dcr-reg = <0d0 009>;
+               dcr-reg = <0x0d0 0x009>;
                #address-cells = <0>;
                #size-cells = <0>;
                #interrupt-cells = <2>;
-               interrupts = <1e 4 1f 4>; /* cascade */
+               interrupts = <0x1e 0x4 0x1f 0x4>; /* cascade */
                interrupt-parent = <&UIC0>;
        };
 
        SDR0: sdr {
                compatible = "ibm,sdr-440ep";
-               dcr-reg = <00e 002>;
+               dcr-reg = <0x00e 0x002>;
        };
 
        CPR0: cpr {
                compatible = "ibm,cpr-440ep";
-               dcr-reg = <00c 002>;
+               dcr-reg = <0x00c 0x002>;
        };
 
        plb {
 
                SDRAM0: sdram {
                        compatible = "ibm,sdram-440ep", "ibm,sdram-405gp";
-                       dcr-reg = <010 2>;
+                       dcr-reg = <0x010 0x002>;
                };
 
                DMA0: dma {
                        compatible = "ibm,dma-440ep", "ibm,dma-440gp";
-                       dcr-reg = <100 027>;
+                       dcr-reg = <0x100 0x027>;
                };
 
                MAL0: mcmal {
                        compatible = "ibm,mcmal-440ep", "ibm,mcmal-440gp", "ibm,mcmal";
-                       dcr-reg = <180 62>;
+                       dcr-reg = <0x180 0x062>;
                        num-tx-chans = <4>;
                        num-rx-chans = <2>;
                        interrupt-parent = <&MAL0>;
-                       interrupts = <0 1 2 3 4>;
+                       interrupts = <0x0 0x1 0x2 0x3 0x4>;
                        #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 = </*TXEOB*/ 0x0 &UIC0 0xa 0x4
+                                       /*RXEOB*/ 0x1 &UIC0 0xb 0x4
+                                       /*SERR*/  0x2 &UIC1 0x0 0x4
+                                       /*TXDE*/  0x3 &UIC1 0x1 0x4
+                                       /*RXDE*/  0x4 &UIC1 0x2 0x4>;
                };
 
                POB0: opb {
                        compatible = "ibm,opb-440ep", "ibm,opb-440gp", "ibm,opb";
                        #address-cells = <1>;
                        #size-cells = <1>;
-                       ranges = <00000000 0 00000000 80000000
-                                 80000000 0 80000000 80000000>;
+                       ranges = <0x00000000 0x00000000 0x00000000 0x80000000
+                                 0x80000000 0x00000000 0x80000000 0x80000000>;
                        interrupt-parent = <&UIC1>;
-                       interrupts = <4>;
+                       interrupts = <0x7 0x4>;
                        clock-frequency = <0>; /* Filled in by zImage */
 
                        EBC0: ebc {
                                compatible = "ibm,ebc-440ep", "ibm,ebc-440gp", "ibm,ebc";
-                               dcr-reg = <012 2>;
+                               dcr-reg = <0x012 0x002>;
                                #address-cells = <2>;
                                #size-cells = <1>;
                                clock-frequency = <0>; /* Filled in by zImage */
-                               interrupts = <1>;
+                               interrupts = <0x5 0x1>;
                                interrupt-parent = <&UIC1>;
 
                                fpga@2,0 {
                                        compatible = "pika,fpga";
-                                       reg = <2 0 2200>;
-                                       interrupts = <18 8>;
+                                       reg = <0x00000002 0x00000000 0x00001000>;
+                                       interrupts = <0x18 0x8>;
                                        interrupt-parent = <&UIC0>;
                                };
 
+                               fpga@2,4000 {
+                                       compatible = "pika,fpga-sd";
+                                       reg = <0x00000002 0x00004000 0x00000A00>;
+                               };
+
                                nor_flash@0,0 {
-                                       compatible = "amd,s29gl512n", "cfi-flash";
+                                       compatible = "amd,s29gl032a", "cfi-flash";
                                        bank-width = <2>;
-                                       reg = <0 0 4000000>;
+                                       reg = <0x00000000 0x00000000 0x00400000>;
                                        #address-cells = <1>;
                                        #size-cells = <1>;
-                                       partition@0 {
-                                               label = "kernel";
-                                               reg = <0 180000>;
-                                       };
-                                       partition@180000 {
-                                               label = "root";
-                                               reg = <180000 3480000>;
-                                       };
-                                       partition@3600000 {
-                                               label = "user";
-                                               reg = <3600000 900000>;
-                                       };
-                                       partition@3f00000 {
+                                       partition@300000 {
                                                label = "fpga";
-                                               reg = <3f00000 40000>;
+                                               reg = <0x0030000 0x00040000>;
                                        };
-                                       partition@3f40000 {
+                                       partition@340000 {
                                                label = "env";
-                                               reg = <3f40000 40000>;
+                                               reg = <0x0340000 0x00040000>;
                                        };
-                                       partition@3f80000 {
+                                       partition@380000 {
                                                label = "u-boot";
-                                               reg = <3f80000 80000>;
+                                               reg = <0x0380000 0x00080000>;
                                        };
                                };
                        };
                        UART0: serial@ef600300 {
                                device_type = "serial";
                                compatible = "ns16550";
-                               reg = <ef600300 8>;
-                               virtual-reg = <ef600300>;
+                               reg = <0xef600300 0x00000008>;
+                               virtual-reg = <0xef600300>;
                                clock-frequency = <0>; /* Filled in by zImage */
-                               current-speed = <1c200>;
+                               current-speed = <115200>;
                                interrupt-parent = <&UIC0>;
-                               interrupts = <0 4>;
+                               interrupts = <0x0 0x4>;
                        };
 
                        IIC0: i2c@ef600700 {
                                compatible = "ibm,iic-440ep", "ibm,iic-440gp", "ibm,iic";
-                               reg = <ef600700 14>;
+                               reg = <0xef600700 0x00000014>;
                                interrupt-parent = <&UIC0>;
-                               interrupts = <2 4>;
+                               interrupts = <0x2 0x4>;
+                               index = <0x0>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               ad7414@4a {
+                                       compatible = "adi,ad7414";
+                                       reg = <0x4a>;
+                                       interrupts = <0x19 0x8>;
+                                       interrupt-parent = <&UIC0>;
+                               };
                        };
 
                        GPIO0: gpio@ef600b00 {
                                compatible = "ibm,gpio-440ep";
-                               reg = <ef600b00 48>;
+                               reg = <0xef600b00 0x00000048>;
+                               #gpio-cells = <2>;
+                               gpio-controller;
                        };
 
                        GPIO1: gpio@ef600c00 {
                                compatible = "ibm,gpio-440ep";
-                               reg = <ef600c00 48>;
+                               reg = <0xef600c00 0x00000048>;
+                               #gpio-cells = <2>;
+                               gpio-controller;
+
+                               led@31 {
+                                       compatible = "linux,gpio-led";
+                                       linux,name = ":green:";
+                                       gpios = <&GPIO1 0x30 0>;
+                               };
                        };
 
                        ZMII0: emac-zmii@ef600d00 {
                                compatible = "ibm,zmii-440ep", "ibm,zmii-440gp", "ibm,zmii";
-                               reg = <ef600d00 c>;
+                               reg = <0xef600d00 0x0000000c>;
                        };
 
                        EMAC0: ethernet@ef600e00 {
                                device_type = "network";
                                compatible = "ibm,emac-440ep", "ibm,emac-440gp", "ibm,emac";
                                interrupt-parent = <&UIC1>;
-                               interrupts = <1c 4 1d 4>;
-                               reg = <ef600e00 70>;
+                               interrupts = <0x1c 0x4 0x1d 0x4>;
+                               reg = <0xef600e00 0x00000070>;
                                local-mac-address = [000000000000];
                                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>;
+                               max-frame-size = <1500>;
+                               rx-fifo-size = <4096>;
+                               tx-fifo-size = <2048>;
                                phy-mode = "rmii";
-                               phy-map = <00000000>;
+                               phy-map = <0x00000000>;
                                zmii-device = <&ZMII0>;
                                zmii-channel = <0>;
                        };
 
                        usb@ef601000 {
                                compatible = "ohci-be";
-                               reg = <ef601000 80>;
-                               interrupts = <8 1 9 1>;
+                               reg = <0xef601000 0x00000080>;
+                               interrupts = <0x8 0x1 0x9 0x1>;
                                interrupt-parent = < &UIC1 >;
                        };
                };
index 0d6d332814e0f061349360b399ae09b2d9d5ec7d..e39422aa0d855e794658c65a79bdab132ecdc3f1 100644 (file)
@@ -9,12 +9,14 @@
  * any warranty of any kind, whether express or implied.
  */
 
+/dts-v1/;
+
 / {
        #address-cells = <2>;
        #size-cells = <1>;
        model = "amcc,yosemite";
        compatible = "amcc,yosemite","amcc,bamboo";
-       dcr-parent = <&/cpus/cpu@0>;
+       dcr-parent = <&{/cpus/cpu@0}>;
 
        aliases {
                ethernet0 = &EMAC0;
                cpu@0 {
                        device_type = "cpu";
                        model = "PowerPC,440EP";
-                       reg = <0>;
+                       reg = <0x00000000>;
                        clock-frequency = <0>; /* Filled in by zImage */
                        timebase-frequency = <0>; /* Filled in by zImage */
-                       i-cache-line-size = <20>;
-                       d-cache-line-size = <20>;
-                       i-cache-size = <8000>;
-                       d-cache-size = <8000>;
+                       i-cache-line-size = <32>;
+                       d-cache-line-size = <32>;
+                       i-cache-size = <32768>;
+                       d-cache-size = <32768>;
                        dcr-controller;
                        dcr-access-method = "native";
                };
 
        memory {
                device_type = "memory";
-               reg = <0 0 0>; /* Filled in by zImage */
+               reg = <0x00000000 0x00000000 0x00000000>; /* Filled in by zImage */
        };
 
        UIC0: interrupt-controller0 {
                compatible = "ibm,uic-440ep","ibm,uic";
                interrupt-controller;
                cell-index = <0>;
-               dcr-reg = <0c0 009>;
+               dcr-reg = <0x0c0 0x009>;
                #address-cells = <0>;
                #size-cells = <0>;
                #interrupt-cells = <2>;
                compatible = "ibm,uic-440ep","ibm,uic";
                interrupt-controller;
                cell-index = <1>;
-               dcr-reg = <0d0 009>;
+               dcr-reg = <0x0d0 0x009>;
                #address-cells = <0>;
                #size-cells = <0>;
                #interrupt-cells = <2>;
-               interrupts = <1e 4 1f 4>; /* cascade */
+               interrupts = <0x1e 0x4 0x1f 0x4>; /* cascade */
                interrupt-parent = <&UIC0>;
        };
 
        SDR0: sdr {
                compatible = "ibm,sdr-440ep";
-               dcr-reg = <00e 002>;
+               dcr-reg = <0x00e 0x002>;
        };
 
        CPR0: cpr {
                compatible = "ibm,cpr-440ep";
-               dcr-reg = <00c 002>;
+               dcr-reg = <0x00c 0x002>;
        };
 
        plb {
 
                SDRAM0: sdram {
                        compatible = "ibm,sdram-440ep", "ibm,sdram-405gp";
-                       dcr-reg = <010 2>;
+                       dcr-reg = <0x010 0x002>;
                };
 
                DMA0: dma {
                        compatible = "ibm,dma-440ep", "ibm,dma-440gp";
-                       dcr-reg = <100 027>;
+                       dcr-reg = <0x100 0x027>;
                };
 
                MAL0: mcmal {
                        compatible = "ibm,mcmal-440ep", "ibm,mcmal-440gp", "ibm,mcmal";
-                       dcr-reg = <180 62>;
+                       dcr-reg = <0x180 0x062>;
                        num-tx-chans = <4>;
                        num-rx-chans = <2>;
                        interrupt-parent = <&MAL0>;
-                       interrupts = <0 1 2 3 4>;
+                       interrupts = <0x0 0x1 0x2 0x3 0x4>;
                        #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 = </*TXEOB*/ 0x0 &UIC0 0xa 0x4
+                                       /*RXEOB*/ 0x1 &UIC0 0xb 0x4
+                                       /*SERR*/  0x2 &UIC1 0x0 0x4
+                                       /*TXDE*/  0x3 &UIC1 0x1 0x4
+                                       /*RXDE*/  0x4 &UIC1 0x2 0x4>;
                };
 
                POB0: opb {
                        /* Bamboo is oddball in the 44x world and doesn't use the ERPN
                         * bits.
                         */
-                       ranges = <00000000 0 00000000 80000000
-                                 80000000 0 80000000 80000000>;
+                       ranges = <0x00000000 0x00000000 0x00000000 0x80000000
+                                 0x80000000 0x00000000 0x80000000 0x80000000>;
                        interrupt-parent = <&UIC1>;
-                       interrupts = <4>;
+                       interrupts = <0x7 0x4>;
                        clock-frequency = <0>; /* Filled in by zImage */
 
                        EBC0: ebc {
                                compatible = "ibm,ebc-440ep", "ibm,ebc-440gp", "ibm,ebc";
-                               dcr-reg = <012 2>;
+                               dcr-reg = <0x012 0x002>;
                                #address-cells = <2>;
                                #size-cells = <1>;
                                clock-frequency = <0>; /* Filled in by zImage */
-                               interrupts = <1>;
+                               interrupts = <0x5 0x1>;
                                interrupt-parent = <&UIC1>;
                        };
 
                        UART0: serial@ef600300 {
                                device_type = "serial";
                                compatible = "ns16550";
-                               reg = <ef600300 8>;
-                               virtual-reg = <ef600300>;
+                               reg = <0xef600300 0x00000008>;
+                               virtual-reg = <0xef600300>;
                                clock-frequency = <0>; /* Filled in by zImage */
-                               current-speed = <1c200>;
+                               current-speed = <115200>;
                                interrupt-parent = <&UIC0>;
-                               interrupts = <0 4>;
+                               interrupts = <0x0 0x4>;
                        };
 
                        UART1: serial@ef600400 {
                                device_type = "serial";
                                compatible = "ns16550";
-                               reg = <ef600400 8>;
-                               virtual-reg = <ef600400>;
+                               reg = <0xef600400 0x00000008>;
+                               virtual-reg = <0xef600400>;
                                clock-frequency = <0>;
                                current-speed = <0>;
                                interrupt-parent = <&UIC0>;
-                               interrupts = <4>;
+                               interrupts = <0x1 0x4>;
                        };
 
                        UART2: serial@ef600500 {
                                device_type = "serial";
                                compatible = "ns16550";
-                               reg = <ef600500 8>;
-                               virtual-reg = <ef600500>;
+                               reg = <0xef600500 0x00000008>;
+                               virtual-reg = <0xef600500>;
                                clock-frequency = <0>;
                                current-speed = <0>;
                                interrupt-parent = <&UIC0>;
-                               interrupts = <4>;
+                               interrupts = <0x3 0x4>;
                                status = "disabled";
                        };
 
                        UART3: serial@ef600600 {
                                device_type = "serial";
                                compatible = "ns16550";
-                               reg = <ef600600 8>;
-                               virtual-reg = <ef600600>;
+                               reg = <0xef600600 0x00000008>;
+                               virtual-reg = <0xef600600>;
                                clock-frequency = <0>;
                                current-speed = <0>;
                                interrupt-parent = <&UIC0>;
-                               interrupts = <4>;
+                               interrupts = <0x4 0x4>;
                                status = "disabled";
                        };
 
                        IIC0: i2c@ef600700 {
                                compatible = "ibm,iic-440ep", "ibm,iic-440gp", "ibm,iic";
-                               reg = <ef600700 14>;
+                               reg = <0xef600700 0x00000014>;
                                interrupt-parent = <&UIC0>;
-                               interrupts = <4>;
+                               interrupts = <0x2 0x4>;
                        };
 
                        IIC1: i2c@ef600800 {
                                compatible = "ibm,iic-440ep", "ibm,iic-440gp", "ibm,iic";
-                               reg = <ef600800 14>;
+                               reg = <0xef600800 0x00000014>;
                                interrupt-parent = <&UIC0>;
-                               interrupts = <4>;
+                               interrupts = <0x7 0x4>;
                        };
 
                        spi@ef600900 {
                                compatible = "amcc,spi-440ep";
-                               reg = <ef600900 6>;
-                               interrupts = <4>;
+                               reg = <0xef600900 0x00000006>;
+                               interrupts = <0x8 0x4>;
                                interrupt-parent = <&UIC0>;
                        };
 
                        ZMII0: emac-zmii@ef600d00 {
                                compatible = "ibm,zmii-440ep", "ibm,zmii-440gp", "ibm,zmii";
-                               reg = <ef600d00 c>;
+                               reg = <0xef600d00 0x0000000c>;
                        };
 
                        EMAC0: ethernet@ef600e00 {
                                device_type = "network";
                                compatible = "ibm,emac-440ep", "ibm,emac-440gp", "ibm,emac";
                                interrupt-parent = <&UIC1>;
-                               interrupts = <1c 4 1d 4>;
-                               reg = <ef600e00 70>;
+                               interrupts = <0x1c 0x4 0x1d 0x4>;
+                               reg = <0xef600e00 0x00000070>;
                                local-mac-address = [000000000000];
                                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>;
+                               max-frame-size = <1500>;
+                               rx-fifo-size = <4096>;
+                               tx-fifo-size = <2048>;
                                phy-mode = "rmii";
-                               phy-map = <00000000>;
+                               phy-map = <0x00000000>;
                                zmii-device = <&ZMII0>;
                                zmii-channel = <0>;
                        };
                                device_type = "network";
                                compatible = "ibm,emac-440ep", "ibm,emac-440gp", "ibm,emac";
                                interrupt-parent = <&UIC1>;
-                               interrupts = <1e 4 1f 4>;
-                               reg = <ef600f00 70>;
+                               interrupts = <0x1e 0x4 0x1f 0x4>;
+                               reg = <0xef600f00 0x00000070>;
                                local-mac-address = [000000000000];
                                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>;
+                               max-frame-size = <1500>;
+                               rx-fifo-size = <4096>;
+                               tx-fifo-size = <2048>;
                                phy-mode = "rmii";
-                               phy-map = <00000000>;
+                               phy-map = <0x00000000>;
                                zmii-device = <&ZMII0>;
                                zmii-channel = <1>;
                        };
 
                        usb@ef601000 {
                                compatible = "ohci-be";
-                               reg = <ef601000 80>;
-                               interrupts = <8 4 9 4>;
+                               reg = <0xef601000 0x00000080>;
+                               interrupts = <0x8 0x4 0x9 0x4>;
                                interrupt-parent = < &UIC1 >;
                        };
                };
                        #address-cells = <3>;
                        compatible = "ibm,plb440ep-pci", "ibm,plb-pci";
                        primary;
-                       reg = <0 eec00000 8     /* Config space access */
-                              0 eed00000 4     /* IACK */
-                              0 eed00000 4     /* Special cycle */
-                              0 ef400000 40>;  /* Internal registers */
+                       reg = <0x00000000 0xeec00000 0x00000008 /* Config space access */
+                              0x00000000 0xeed00000 0x00000004 /* IACK */
+                              0x00000000 0xeed00000 0x00000004 /* Special cycle */
+                              0x00000000 0xef400000 0x00000040>;       /* Internal registers */
 
                        /* Outbound ranges, one memory and one IO,
                         * later cannot be changed. Chip supports a second
                         * IO range but we don't use it for now
                         */
-                       ranges = <02000000 0 a0000000 0 a0000000 0 20000000
-                                 01000000 0 00000000 0 e8000000 0 00010000>;
+                       ranges = <0x02000000 0x00000000 0xa0000000 0x00000000 0xa0000000 0x00000000 0x20000000
+                                 0x01000000 0x00000000 0x00000000 0x00000000 0xe8000000 0x00000000 0x00010000>;
 
                        /* Inbound 2GB range starting at 0 */
-                       dma-ranges = <42000000 0 0 0 0 0 80000000>;
+                       dma-ranges = <0x42000000 0x0 0x0 0x0 0x0 0x0 0x80000000>;
 
                        /* Bamboo has all 4 IRQ pins tied together per slot */
-                       interrupt-map-mask = <f800 0 0 0>;
+                       interrupt-map-mask = <0xf800 0x0 0x0 0x0>;
                        interrupt-map = <
                                /* IDSEL 1 */
-                               0800 0 0 0 &UIC0 1c 8
+                               0x800 0x0 0x0 0x0 &UIC0 0x1c 0x8
 
                                /* IDSEL 2 */
-                               1000 0 0 0 &UIC0 1b 8
+                               0x1000 0x0 0x0 0x0 &UIC0 0x1b 0x8
 
                                /* IDSEL 3 */
-                               1800 0 0 0 &UIC0 1a 8
+                               0x1800 0x0 0x0 0x0 &UIC0 0x1a 0x8
 
                                /* IDSEL 4 */
-                               2000 0 0 0 &UIC0 19 8
+                               0x2000 0x0 0x0 0x0 &UIC0 0x19 0x8
                        >;
                };
        };
diff --git a/arch/powerpc/boot/redboot-83xx.c b/arch/powerpc/boot/redboot-83xx.c
new file mode 100644 (file)
index 0000000..79aa9e1
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ * RedBoot firmware support
+ *
+ * Author: Scott Wood <scottwood@freescale.com>
+ *
+ * Copyright (c) 2007 Freescale Semiconductor, Inc.
+ * Copyright (c) 2008 Codehermit
+ *
+ * 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 "redboot.h"
+#include "fsl-soc.h"
+#include "io.h"
+
+static bd_t bd;
+BSS_STACK(4096);
+
+#define MHZ(x) ((x + 500000) / 1000000)
+
+static void platform_fixups(void)
+{
+       void *node;
+
+       dt_fixup_memory(bd.bi_memstart, bd.bi_memsize);
+       dt_fixup_mac_addresses(bd.bi_enetaddr);
+       dt_fixup_cpu_clocks(bd.bi_intfreq, bd.bi_busfreq / 16, bd.bi_busfreq);
+
+       node = finddevice("/soc/cpm/brg");
+       if (node) {
+               printf("BRG clock-frequency <- 0x%x (%dMHz)\r\n",
+                      bd.bi_busfreq, MHZ(bd.bi_busfreq));
+               setprop(node, "clock-frequency",  &bd.bi_busfreq, 4);
+       }
+
+}
+
+void platform_init(unsigned long r3, unsigned long r4, unsigned long r5,
+                  unsigned long r6, unsigned long r7)
+{
+       memcpy(&bd, (char *)r3, sizeof(bd));
+
+       if (bd.bi_tag != 0x42444944)
+               return;
+
+       simple_alloc_init(_end,
+                         bd.bi_memstart + bd.bi_memsize - (unsigned long)_end,
+                         32, 64);
+
+       fdt_init(_dtb_start);
+       serial_console_init();
+       platform_ops.fixups = platform_fixups;
+
+       loader_info.cmdline = (char *)bd.bi_cmdline;
+       loader_info.cmdline_len = strlen((char *)bd.bi_cmdline);
+}
index d6c96d9ab29177513788e06ead0dddc45e8f3501..4832be880998af00c6a0d1f6c5493393c8e52d6f 100755 (executable)
@@ -171,7 +171,7 @@ cuboot*)
     *-mpc824*)
         platformo=$object/cuboot-824x.o
         ;;
-    *-mpc83*)
+    *-mpc83*|*-asp834x*)
         platformo=$object/cuboot-83xx.o
         ;;
     *-tqm8541|*-mpc8560*|*-tqm8560|*-tqm8555|*-ksi8560*)
@@ -203,6 +203,10 @@ simpleboot-virtex405-*)
     platformo="$object/virtex405-head.o $object/simpleboot.o"
     binary=y
     ;;
+asp834x-redboot)
+    platformo="$object/fixed-head.o $object/redboot-83xx.o"
+    binary=y
+    ;;
 esac
 
 vmz="$tmpdir/`basename \"$kernel\"`.$ext"
diff --git a/arch/powerpc/configs/asp8347_defconfig b/arch/powerpc/configs/asp8347_defconfig
new file mode 100644 (file)
index 0000000..60bb4d1
--- /dev/null
@@ -0,0 +1,1214 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.25-rc6
+# Tue May  6 02:21:00 2008
+#
+# CONFIG_PPC64 is not set
+
+#
+# Processor support
+#
+CONFIG_6xx=y
+# CONFIG_PPC_85xx is not set
+# CONFIG_PPC_8xx is not set
+# CONFIG_40x is not set
+# CONFIG_44x is not set
+# CONFIG_E200 is not set
+CONFIG_PPC_FPU=y
+CONFIG_FSL_EMB_PERFMON=y
+CONFIG_PPC_STD_MMU=y
+CONFIG_PPC_STD_MMU_32=y
+# CONFIG_PPC_MM_SLICES is not set
+# CONFIG_SMP is not set
+CONFIG_PPC32=y
+CONFIG_WORD_SIZE=32
+CONFIG_PPC_MERGE=y
+CONFIG_MMU=y
+CONFIG_GENERIC_CMOS_UPDATE=y
+CONFIG_GENERIC_TIME=y
+CONFIG_GENERIC_TIME_VSYSCALL=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_GENERIC_HARDIRQS=y
+# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
+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_ARCH_NO_VIRT_TO_BUS is not set
+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_OF=y
+CONFIG_PPC_UDBG_16550=y
+# CONFIG_GENERIC_TBSYNC is not set
+CONFIG_AUDIT_ARCH=y
+CONFIG_GENERIC_BUG=y
+# CONFIG_DEFAULT_UIMAGE is not set
+CONFIG_REDBOOT=y
+# CONFIG_PPC_DCR_NATIVE is not set
+# CONFIG_PPC_DCR_MMIO is not set
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# General setup
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+CONFIG_LOCALVERSION=""
+CONFIG_LOCALVERSION_AUTO=y
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+CONFIG_SYSVIPC_SYSCTL=y
+# CONFIG_POSIX_MQUEUE is not set
+# CONFIG_BSD_PROCESS_ACCT is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_AUDIT is not set
+# CONFIG_IKCONFIG is not set
+CONFIG_LOG_BUF_SHIFT=14
+# CONFIG_CGROUPS is not set
+CONFIG_GROUP_SCHED=y
+# CONFIG_FAIR_GROUP_SCHED is not set
+# CONFIG_RT_GROUP_SCHED is not set
+CONFIG_USER_SCHED=y
+# CONFIG_CGROUP_SCHED is not set
+CONFIG_SYSFS_DEPRECATED=y
+CONFIG_SYSFS_DEPRECATED_V2=y
+# CONFIG_RELAY is not set
+# CONFIG_NAMESPACES 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 is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_COMPAT_BRK=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_ANON_INODES=y
+# CONFIG_EPOLL is not set
+CONFIG_SIGNALFD=y
+CONFIG_TIMERFD=y
+CONFIG_EVENTFD=y
+CONFIG_SHMEM=y
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_SLUB_DEBUG=y
+# CONFIG_SLAB is not set
+CONFIG_SLUB=y
+# CONFIG_SLOB is not set
+# CONFIG_PROFILING is not set
+# CONFIG_MARKERS is not set
+CONFIG_HAVE_OPROFILE=y
+CONFIG_HAVE_KPROBES=y
+CONFIG_HAVE_KRETPROBES=y
+CONFIG_PROC_PAGE_MONITOR=y
+CONFIG_SLABINFO=y
+CONFIG_RT_MUTEXES=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+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 is not set
+CONFIG_BLOCK=y
+# CONFIG_LBD is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_LSF is not set
+# CONFIG_BLK_DEV_BSG 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"
+CONFIG_CLASSIC_RCU=y
+
+#
+# Platform support
+#
+# CONFIG_PPC_MULTIPLATFORM is not set
+# CONFIG_PPC_82xx is not set
+CONFIG_PPC_83xx=y
+# CONFIG_PPC_86xx is not set
+# CONFIG_PPC_MPC512x is not set
+# CONFIG_PPC_MPC5121 is not set
+# CONFIG_PPC_CELL is not set
+# CONFIG_PPC_CELL_NATIVE is not set
+# CONFIG_PQ2ADS is not set
+CONFIG_MPC83xx=y
+# CONFIG_MPC831x_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 is not set
+# CONFIG_MPC837x_MDS is not set
+# CONFIG_MPC837x_RDB is not set
+# CONFIG_SBC834x is not set
+CONFIG_ASP834x=y
+CONFIG_PPC_MPC834x=y
+CONFIG_IPIC=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_FSL_ULI1575 is not set
+
+#
+# Kernel options
+#
+# CONFIG_HIGHMEM is not set
+CONFIG_TICK_ONESHOT=y
+CONFIG_NO_HZ=y
+CONFIG_HIGH_RES_TIMERS=y
+CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
+# 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_SCHED_HRTICK is not set
+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_IOMMU_HELPER is not set
+CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
+CONFIG_ARCH_HAS_WALK_MEMORY=y
+CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=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_SPARSEMEM_VMEMMAP_ENABLE is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4
+# CONFIG_RESOURCES_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=1
+CONFIG_BOUNCE=y
+CONFIG_VIRT_TO_BUS=y
+CONFIG_PROC_DEVICETREE=y
+# CONFIG_CMDLINE_BOOL is not set
+# CONFIG_PM is not set
+CONFIG_SECCOMP=y
+CONFIG_ISA_DMA_API=y
+
+#
+# Bus options
+#
+CONFIG_ZONE_DMA=y
+CONFIG_GENERIC_ISA_DMA=y
+CONFIG_PPC_INDIRECT_PCI=y
+CONFIG_FSL_SOC=y
+CONFIG_PCI=y
+CONFIG_PCI_DOMAINS=y
+CONFIG_PCI_SYSCALL=y
+# CONFIG_PCIEPORTBUS is not set
+CONFIG_ARCH_SUPPORTS_MSI=y
+# CONFIG_PCI_MSI is not set
+CONFIG_PCI_LEGACY=y
+# CONFIG_PCCARD is not set
+# 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=0xc0000000
+CONFIG_BOOT_LOAD=0x00800000
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+# CONFIG_PACKET_MMAP is not set
+CONFIG_UNIX=y
+CONFIG_XFRM=y
+CONFIG_XFRM_USER=m
+# CONFIG_XFRM_SUB_POLICY is not set
+# CONFIG_XFRM_MIGRATE is not set
+# CONFIG_XFRM_STATISTICS is not set
+# CONFIG_NET_KEY is not set
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+# 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_IP_MROUTE is not set
+# CONFIG_ARPD is not set
+CONFIG_SYN_COOKIES=y
+# 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=y
+CONFIG_INET_XFRM_MODE_TUNNEL=y
+CONFIG_INET_XFRM_MODE_BEET=y
+# CONFIG_INET_LRO 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
+# CONFIG_IP_DCCP is not set
+# CONFIG_IP_SCTP is not set
+# 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
+# CONFIG_NET_SCHED is not set
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+# CONFIG_CAN 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_MAC80211 is not set
+# CONFIG_IEEE80211 is not set
+# CONFIG_RFKILL is not set
+# CONFIG_NET_9P is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+# CONFIG_FW_LOADER is not set
+# CONFIG_SYS_HYPERVISOR is not set
+# CONFIG_CONNECTOR is not set
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+# CONFIG_MTD_CONCAT is not set
+CONFIG_MTD_PARTITIONS=y
+CONFIG_MTD_REDBOOT_PARTS=y
+CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1
+CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED=y
+# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set
+# CONFIG_MTD_CMDLINE_PARTS is not set
+CONFIG_MTD_OF_PARTS=y
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=y
+CONFIG_MTD_BLKDEVS=y
+CONFIG_MTD_BLOCK=y
+# CONFIG_FTL is not set
+# CONFIG_NFTL is not set
+# CONFIG_INFTL is not set
+# CONFIG_RFD_FTL is not set
+# CONFIG_SSFDC is not set
+# CONFIG_MTD_OOPS is not set
+
+#
+# RAM/ROM/Flash chip drivers
+#
+CONFIG_MTD_CFI=y
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_GEN_PROBE=y
+# CONFIG_MTD_CFI_ADV_OPTIONS is not set
+CONFIG_MTD_MAP_BANK_WIDTH_1=y
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+CONFIG_MTD_MAP_BANK_WIDTH_4=y
+# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+CONFIG_MTD_CFI_INTELEXT=y
+CONFIG_MTD_CFI_AMDSTD=y
+# CONFIG_MTD_CFI_STAA is not set
+CONFIG_MTD_CFI_UTIL=y
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+# CONFIG_MTD_PHYSMAP is not set
+CONFIG_MTD_PHYSMAP_OF=y
+# CONFIG_MTD_INTEL_VR_NOR is not set
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_PMC551 is not set
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_PHRAM is not set
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_BLOCK2MTD is not set
+
+#
+# Disk-On-Chip Device Drivers
+#
+# CONFIG_MTD_DOC2000 is not set
+# CONFIG_MTD_DOC2001 is not set
+# CONFIG_MTD_DOC2001PLUS is not set
+# CONFIG_MTD_NAND is not set
+# CONFIG_MTD_ONENAND is not set
+
+#
+# UBI - Unsorted block images
+#
+# CONFIG_MTD_UBI is not set
+CONFIG_OF_DEVICE=y
+# CONFIG_PARPORT is not set
+CONFIG_BLK_DEV=y
+# 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=y
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_SX8 is not set
+# CONFIG_BLK_DEV_UB is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=32768
+# CONFIG_BLK_DEV_XIP is not set
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+CONFIG_MISC_DEVICES=y
+# CONFIG_PHANTOM is not set
+# CONFIG_EEPROM_93CX6 is not set
+# CONFIG_SGI_IOC4 is not set
+# CONFIG_TIFM_CORE is not set
+# CONFIG_ENCLOSURE_SERVICES is not set
+CONFIG_HAVE_IDE=y
+# CONFIG_IDE is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+# CONFIG_SCSI is not set
+# CONFIG_SCSI_DMA is not set
+# CONFIG_SCSI_NETLINK is not set
+# CONFIG_ATA is not set
+# CONFIG_MD is not set
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+# CONFIG_FIREWIRE is not set
+# CONFIG_IEEE1394 is not set
+# CONFIG_I2O is not set
+# CONFIG_MACINTOSH_DRIVERS is not set
+CONFIG_NETDEVICES=y
+# CONFIG_NETDEVICES_MULTIQUEUE is not set
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_MACVLAN is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_TUN is not set
+# CONFIG_VETH is not set
+# CONFIG_ARCNET 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 is not set
+# CONFIG_REALTEK_PHY is not set
+# CONFIG_FIXED_PHY is not set
+# CONFIG_MDIO_BITBANG is not set
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=y
+# CONFIG_HAPPYMEAL is not set
+# CONFIG_SUNGEM is not set
+# CONFIG_CASSINI is not set
+# CONFIG_NET_VENDOR_3COM is not set
+# CONFIG_NET_TULIP is not set
+# CONFIG_HP100 is not set
+# CONFIG_IBM_NEW_EMAC_ZMII is not set
+# CONFIG_IBM_NEW_EMAC_RGMII is not set
+# CONFIG_IBM_NEW_EMAC_TAH is not set
+# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
+# CONFIG_NET_PCI is not set
+# CONFIG_B44 is not set
+CONFIG_NETDEV_1000=y
+# CONFIG_ACENIC is not set
+# CONFIG_DL2K is not set
+# CONFIG_E1000 is not set
+# CONFIG_E1000E is not set
+# CONFIG_E1000E_ENABLED is not set
+# CONFIG_IP1000 is not set
+# CONFIG_IGB 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_VIA_VELOCITY is not set
+# CONFIG_TIGON3 is not set
+# CONFIG_BNX2 is not set
+CONFIG_GIANFAR=y
+# CONFIG_GFAR_NAPI is not set
+# CONFIG_QLA3XXX is not set
+# CONFIG_ATL1 is not set
+# CONFIG_NETDEV_10000 is not set
+# CONFIG_TR is not set
+
+#
+# Wireless LAN
+#
+# CONFIG_WLAN_PRE80211 is not set
+# CONFIG_WLAN_80211 is not set
+
+#
+# USB Network Adapters
+#
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_RTL8150 is not set
+# CONFIG_USB_USBNET is not set
+# 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_NETCONSOLE is not set
+# CONFIG_NETPOLL is not set
+# CONFIG_NET_POLL_CONTROLLER is not set
+# CONFIG_ISDN is not set
+# CONFIG_PHONE is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+# CONFIG_INPUT_POLLDEV is not set
+
+#
+# Userland interfaces
+#
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_EVDEV is not set
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+# CONFIG_INPUT_KEYBOARD is not set
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TABLET is not set
+# CONFIG_INPUT_TOUCHSCREEN is not set
+# CONFIG_INPUT_MISC 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
+# CONFIG_NOZOMI is not set
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_8250=y
+CONFIG_SERIAL_8250_CONSOLE=y
+CONFIG_SERIAL_8250_PCI=y
+CONFIG_SERIAL_8250_NR_UARTS=4
+CONFIG_SERIAL_8250_RUNTIME_UARTS=4
+# CONFIG_SERIAL_8250_EXTENDED 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 is not set
+CONFIG_UNIX98_PTYS=y
+CONFIG_LEGACY_PTYS=y
+CONFIG_LEGACY_PTY_COUNT=256
+# CONFIG_IPMI_HANDLER is not set
+# CONFIG_HW_RANDOM is not set
+# CONFIG_NVRAM is not set
+CONFIG_GEN_RTC=y
+# CONFIG_GEN_RTC_X is not set
+# CONFIG_R3964 is not set
+# CONFIG_APPLICOM is not set
+# CONFIG_RAW_DRIVER is not set
+# CONFIG_TCG_TPM is not set
+CONFIG_DEVPORT=y
+CONFIG_I2C=y
+CONFIG_I2C_BOARDINFO=y
+CONFIG_I2C_CHARDEV=y
+
+#
+# I2C Algorithms
+#
+# CONFIG_I2C_ALGOBIT is not set
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
+
+#
+# I2C Hardware Bus support
+#
+# CONFIG_I2C_ALI1535 is not set
+# CONFIG_I2C_ALI1563 is not set
+# CONFIG_I2C_ALI15X3 is not set
+# CONFIG_I2C_AMD756 is not set
+# CONFIG_I2C_AMD8111 is not set
+# CONFIG_I2C_I801 is not set
+# CONFIG_I2C_I810 is not set
+# CONFIG_I2C_PIIX4 is not set
+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_PROSAVAGE is not set
+# CONFIG_I2C_SAVAGE4 is not set
+# CONFIG_I2C_SIMTEC is not set
+# CONFIG_I2C_SIS5595 is not set
+# CONFIG_I2C_SIS630 is not set
+# CONFIG_I2C_SIS96X is not set
+# CONFIG_I2C_TAOS_EVM is not set
+# CONFIG_I2C_STUB is not set
+# CONFIG_I2C_TINY_USB is not set
+# CONFIG_I2C_VIA is not set
+# CONFIG_I2C_VIAPRO is not set
+# CONFIG_I2C_VOODOO3 is not set
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_DS1682 is not set
+# CONFIG_SENSORS_EEPROM is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_PCF8575 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_TPS65010 is not set
+# CONFIG_SENSORS_MAX6875 is not set
+# CONFIG_SENSORS_TSL2550 is not set
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+
+#
+# SPI support
+#
+# CONFIG_SPI is not set
+# CONFIG_SPI_MASTER is not set
+# CONFIG_W1 is not set
+# CONFIG_POWER_SUPPLY is not set
+CONFIG_HWMON=y
+# CONFIG_HWMON_VID is not set
+# CONFIG_SENSORS_AD7418 is not set
+# 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_ADT7470 is not set
+# CONFIG_SENSORS_ADT7473 is not set
+# CONFIG_SENSORS_ATXP1 is not set
+# CONFIG_SENSORS_DS1621 is not set
+# CONFIG_SENSORS_I5K_AMB is not set
+# CONFIG_SENSORS_F71805F is not set
+# CONFIG_SENSORS_F71882FG is not set
+# CONFIG_SENSORS_F75375S is not set
+# CONFIG_SENSORS_GL518SM is not set
+# CONFIG_SENSORS_GL520SM is not set
+# CONFIG_SENSORS_IT87 is not set
+# CONFIG_SENSORS_LM63 is not set
+# CONFIG_SENSORS_LM75 is not set
+# CONFIG_SENSORS_LM77 is not set
+# CONFIG_SENSORS_LM78 is not set
+# CONFIG_SENSORS_LM80 is not set
+# CONFIG_SENSORS_LM83 is not set
+# CONFIG_SENSORS_LM85 is not set
+# CONFIG_SENSORS_LM87 is not set
+# CONFIG_SENSORS_LM90 is not set
+# CONFIG_SENSORS_LM92 is not set
+# CONFIG_SENSORS_LM93 is not set
+# CONFIG_SENSORS_MAX1619 is not set
+# CONFIG_SENSORS_MAX6650 is not set
+# CONFIG_SENSORS_PC87360 is not set
+# CONFIG_SENSORS_PC87427 is not set
+# CONFIG_SENSORS_SIS5595 is not set
+# CONFIG_SENSORS_DME1737 is not set
+# CONFIG_SENSORS_SMSC47M1 is not set
+# CONFIG_SENSORS_SMSC47M192 is not set
+# CONFIG_SENSORS_SMSC47B397 is not set
+# CONFIG_SENSORS_ADS7828 is not set
+# CONFIG_SENSORS_THMC50 is not set
+# CONFIG_SENSORS_VIA686A is not set
+# CONFIG_SENSORS_VT1211 is not set
+# CONFIG_SENSORS_VT8231 is not set
+# CONFIG_SENSORS_W83781D is not set
+# CONFIG_SENSORS_W83791D is not set
+# CONFIG_SENSORS_W83792D is not set
+# CONFIG_SENSORS_W83793 is not set
+# CONFIG_SENSORS_W83L785TS is not set
+# CONFIG_SENSORS_W83L786NG is not set
+# CONFIG_SENSORS_W83627HF is not set
+# CONFIG_SENSORS_W83627EHF is not set
+# CONFIG_HWMON_DEBUG_CHIP is not set
+CONFIG_THERMAL=y
+CONFIG_WATCHDOG=y
+# CONFIG_WATCHDOG_NOWAYOUT is not set
+
+#
+# Watchdog Device Drivers
+#
+# CONFIG_SOFT_WATCHDOG is not set
+CONFIG_83xx_WDT=y
+
+#
+# PCI-based Watchdog Cards
+#
+# CONFIG_PCIPCWATCHDOG is not set
+# CONFIG_WDTPCI is not set
+
+#
+# USB-based Watchdog Cards
+#
+# CONFIG_USBPCWATCHDOG is not set
+
+#
+# Sonics Silicon Backplane
+#
+CONFIG_SSB_POSSIBLE=y
+# CONFIG_SSB is not set
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_SM501 is not set
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+# CONFIG_DVB_CORE is not set
+CONFIG_DAB=y
+# CONFIG_USB_DABUSB is not set
+
+#
+# Graphics support
+#
+# CONFIG_AGP is not set
+# CONFIG_DRM is not set
+# CONFIG_VGASTATE is not set
+CONFIG_VIDEO_OUTPUT_CONTROL=m
+# CONFIG_FB is not set
+# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
+
+#
+# Display device support
+#
+# CONFIG_DISPLAY_SUPPORT is not set
+
+#
+# Sound
+#
+# CONFIG_SOUND is not set
+# CONFIG_HID_SUPPORT is not set
+CONFIG_USB_SUPPORT=y
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+CONFIG_USB_ARCH_HAS_EHCI=y
+CONFIG_USB=y
+# CONFIG_USB_DEBUG is not set
+# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
+
+#
+# Miscellaneous USB options
+#
+# CONFIG_USB_DEVICEFS is not set
+CONFIG_USB_DEVICE_CLASS=y
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_OTG is not set
+
+#
+# USB Host Controller Drivers
+#
+CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_EHCI_ROOT_HUB_TT=y
+# CONFIG_USB_EHCI_TT_NEWSCHED is not set
+CONFIG_USB_EHCI_FSL=y
+CONFIG_USB_EHCI_HCD_PPC_OF=y
+# CONFIG_USB_ISP116X_HCD is not set
+# CONFIG_USB_OHCI_HCD is not set
+# CONFIG_USB_UHCI_HCD is not set
+# CONFIG_USB_SL811_HCD is not set
+# CONFIG_USB_R8A66597_HCD is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# may also be needed; see USB_STORAGE Help for more information
+#
+# CONFIG_USB_LIBUSUAL is not set
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_MDC800 is not set
+CONFIG_USB_MON=y
+
+#
+# USB port drivers
+#
+# CONFIG_USB_SERIAL is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_EMI62 is not set
+# CONFIG_USB_EMI26 is not set
+# CONFIG_USB_ADUTUX is not set
+# CONFIG_USB_AUERSWALD is not set
+# 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
+# CONFIG_USB_PHIDGET is not set
+# CONFIG_USB_IDMOUSE is not set
+# CONFIG_USB_FTDI_ELAN is not set
+# CONFIG_USB_APPLEDISPLAY is not set
+# 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_GADGET is not set
+# CONFIG_MMC is not set
+# CONFIG_MEMSTICK is not set
+# CONFIG_NEW_LEDS is not set
+# CONFIG_INFINIBAND is not set
+# CONFIG_EDAC is not set
+CONFIG_RTC_LIB=y
+CONFIG_RTC_CLASS=y
+
+#
+# Conflicting RTC option has been selected, check GEN_RTC and RTC
+#
+CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+# CONFIG_RTC_DEBUG is not set
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=y
+CONFIG_RTC_INTF_PROC=y
+CONFIG_RTC_INTF_DEV=y
+# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
+# CONFIG_RTC_DRV_TEST is not set
+
+#
+# I2C RTC drivers
+#
+# CONFIG_RTC_DRV_DS1307 is not set
+CONFIG_RTC_DRV_DS1374=y
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_MAX6900 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+# CONFIG_RTC_DRV_ISL1208 is not set
+# CONFIG_RTC_DRV_X1205 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_PCF8583 is not set
+# CONFIG_RTC_DRV_M41T80 is not set
+# CONFIG_RTC_DRV_S35390A is not set
+
+#
+# SPI RTC drivers
+#
+
+#
+# Platform RTC drivers
+#
+# CONFIG_RTC_DRV_CMOS is not set
+# CONFIG_RTC_DRV_DS1511 is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_STK17TA8 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+# CONFIG_RTC_DRV_M48T59 is not set
+# CONFIG_RTC_DRV_V3020 is not set
+
+#
+# on-CPU RTC drivers
+#
+# CONFIG_DMADEVICES is not set
+
+#
+# Userspace I/O
+#
+# CONFIG_UIO is not set
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+# 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
+# CONFIG_EXT3_FS_SECURITY is not set
+# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=y
+CONFIG_FS_MBCACHE=y
+# 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_DNOTIFY=y
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+# 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_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_JFFS2_FS=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
+# CONFIG_JFFS2_SUMMARY is not set
+# CONFIG_JFFS2_FS_XATTR is not set
+# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
+CONFIG_JFFS2_ZLIB=y
+# CONFIG_JFFS2_LZO is not set
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
+# CONFIG_CRAMFS is not set
+# CONFIG_VXFS_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_ROMFS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+CONFIG_NETWORK_FILESYSTEMS=y
+CONFIG_NFS_FS=y
+CONFIG_NFS_V3=y
+# CONFIG_NFS_V3_ACL is not set
+CONFIG_NFS_V4=y
+# 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_SUNRPC_GSS=y
+# CONFIG_SUNRPC_BIND34 is not set
+CONFIG_RPCSEC_GSS_KRB5=y
+# 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
+
+#
+# Partition Types
+#
+CONFIG_PARTITION_ADVANCED=y
+# CONFIG_ACORN_PARTITION is not set
+# CONFIG_OSF_PARTITION is not set
+# CONFIG_AMIGA_PARTITION is not set
+# CONFIG_ATARI_PARTITION is not set
+# CONFIG_MAC_PARTITION is not set
+# CONFIG_MSDOS_PARTITION is not set
+# CONFIG_LDM_PARTITION is not set
+# CONFIG_SGI_PARTITION is not set
+# CONFIG_ULTRIX_PARTITION is not set
+# CONFIG_SUN_PARTITION is not set
+# CONFIG_KARMA_PARTITION is not set
+# CONFIG_EFI_PARTITION is not set
+# CONFIG_SYSV68_PARTITION is not set
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="iso8859-1"
+# CONFIG_NLS_CODEPAGE_437 is not set
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+# CONFIG_NLS_CODEPAGE_850 is not set
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_CODEPAGE_1250 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+# CONFIG_NLS_ASCII is not set
+# CONFIG_NLS_ISO8859_1 is not set
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+# CONFIG_NLS_ISO8859_15 is not set
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+# CONFIG_NLS_UTF8 is not set
+# CONFIG_DLM is not set
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+# CONFIG_CRC_CCITT is not set
+# CONFIG_CRC16 is not set
+# CONFIG_CRC_ITU_T is not set
+CONFIG_CRC32=y
+# CONFIG_CRC7 is not set
+# CONFIG_LIBCRC32C is not set
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
+CONFIG_HAS_DMA=y
+CONFIG_HAVE_LMB=y
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_WARN_DEPRECATED=y
+CONFIG_ENABLE_MUST_CHECK=y
+# CONFIG_MAGIC_SYSRQ is not set
+# CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_HEADERS_CHECK is not set
+# CONFIG_DEBUG_KERNEL is not set
+# CONFIG_SLUB_DEBUG_ON is not set
+# CONFIG_SLUB_STATS is not set
+# CONFIG_DEBUG_BUGVERBOSE is not set
+# CONFIG_SAMPLES is not set
+# CONFIG_PPC_EARLY_DEBUG is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+# CONFIG_SECURITY_FILE_CAPABILITIES is not set
+CONFIG_CRYPTO=y
+CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_BLKCIPHER=y
+# CONFIG_CRYPTO_SEQIV is not set
+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_XTS is not set
+# CONFIG_CRYPTO_CTR is not set
+# CONFIG_CRYPTO_GCM is not set
+# CONFIG_CRYPTO_CCM is not set
+# CONFIG_CRYPTO_CRYPTD 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_SEED is not set
+# CONFIG_CRYPTO_SALSA20 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
+# CONFIG_CRYPTO_AUTHENC is not set
+# CONFIG_CRYPTO_LZO is not set
+CONFIG_CRYPTO_HW=y
+# CONFIG_CRYPTO_DEV_HIFN_795X is not set
+# CONFIG_PPC_CLOCK is not set
index ec9228d687b08515319694001c6c1feffb577944..8655c7670350a22c46fc92d2552edff67d2230a2 100644 (file)
 #include <asm/iseries/alpaca.h>
 #endif
 
+#if defined(CONFIG_BOOKE) || defined(CONFIG_40x)
+#include "head_booke.h"
+#endif
+
 int main(void)
 {
        DEFINE(THREAD, offsetof(struct task_struct, thread));
@@ -242,6 +246,25 @@ int main(void)
        DEFINE(_SRR1, STACK_FRAME_OVERHEAD+sizeof(struct pt_regs)+8);
 #endif /* CONFIG_PPC64 */
 
+#if defined(CONFIG_BOOKE) || defined(CONFIG_40x)
+       DEFINE(EXC_LVL_SIZE, STACK_EXC_LVL_FRAME_SIZE);
+       DEFINE(MAS0, STACK_INT_FRAME_SIZE+offsetof(struct exception_regs, mas0));
+       /* we overload MMUCR for 44x on MAS0 since they are mutually exclusive */
+       DEFINE(MMUCR, STACK_INT_FRAME_SIZE+offsetof(struct exception_regs, mas0));
+       DEFINE(MAS1, STACK_INT_FRAME_SIZE+offsetof(struct exception_regs, mas1));
+       DEFINE(MAS2, STACK_INT_FRAME_SIZE+offsetof(struct exception_regs, mas2));
+       DEFINE(MAS3, STACK_INT_FRAME_SIZE+offsetof(struct exception_regs, mas3));
+       DEFINE(MAS6, STACK_INT_FRAME_SIZE+offsetof(struct exception_regs, mas6));
+       DEFINE(MAS7, STACK_INT_FRAME_SIZE+offsetof(struct exception_regs, mas7));
+       DEFINE(_SRR0, STACK_INT_FRAME_SIZE+offsetof(struct exception_regs, srr0));
+       DEFINE(_SRR1, STACK_INT_FRAME_SIZE+offsetof(struct exception_regs, srr1));
+       DEFINE(_CSRR0, STACK_INT_FRAME_SIZE+offsetof(struct exception_regs, csrr0));
+       DEFINE(_CSRR1, STACK_INT_FRAME_SIZE+offsetof(struct exception_regs, csrr1));
+       DEFINE(_DSRR0, STACK_INT_FRAME_SIZE+offsetof(struct exception_regs, dsrr0));
+       DEFINE(_DSRR1, STACK_INT_FRAME_SIZE+offsetof(struct exception_regs, dsrr1));
+       DEFINE(SAVED_KSP_LIMIT, STACK_INT_FRAME_SIZE+offsetof(struct exception_regs, saved_ksp_limit));
+#endif
+
        DEFINE(CLONE_VM, CLONE_VM);
        DEFINE(CLONE_UNTRACED, CLONE_UNTRACED);
 
index 0c8614d9875ca8b5966c148c7ad447bbcf3a987d..fe21674d4f0687557e349af5512a97eb961b1dba 100644 (file)
 #endif
 
 #ifdef CONFIG_BOOKE
-#include "head_booke.h"
-#define TRANSFER_TO_HANDLER_EXC_LEVEL(exc_level)       \
-       mtspr   exc_level##_SPRG,r8;                    \
-       BOOKE_LOAD_EXC_LEVEL_STACK(exc_level);          \
-       lwz     r0,GPR10-INT_FRAME_SIZE(r8);            \
-       stw     r0,GPR10(r11);                          \
-       lwz     r0,GPR11-INT_FRAME_SIZE(r8);            \
-       stw     r0,GPR11(r11);                          \
-       mfspr   r8,exc_level##_SPRG
-
        .globl  mcheck_transfer_to_handler
 mcheck_transfer_to_handler:
-       TRANSFER_TO_HANDLER_EXC_LEVEL(MCHECK)
-       b       transfer_to_handler_full
+       mfspr   r0,SPRN_DSRR0
+       stw     r0,_DSRR0(r11)
+       mfspr   r0,SPRN_DSRR1
+       stw     r0,_DSRR1(r11)
+       /* fall through */
 
        .globl  debug_transfer_to_handler
 debug_transfer_to_handler:
-       TRANSFER_TO_HANDLER_EXC_LEVEL(DEBUG)
-       b       transfer_to_handler_full
+       mfspr   r0,SPRN_CSRR0
+       stw     r0,_CSRR0(r11)
+       mfspr   r0,SPRN_CSRR1
+       stw     r0,_CSRR1(r11)
+       /* fall through */
 
        .globl  crit_transfer_to_handler
 crit_transfer_to_handler:
-       TRANSFER_TO_HANDLER_EXC_LEVEL(CRIT)
+#ifdef CONFIG_FSL_BOOKE
+       mfspr   r0,SPRN_MAS0
+       stw     r0,MAS0(r11)
+       mfspr   r0,SPRN_MAS1
+       stw     r0,MAS1(r11)
+       mfspr   r0,SPRN_MAS2
+       stw     r0,MAS2(r11)
+       mfspr   r0,SPRN_MAS3
+       stw     r0,MAS3(r11)
+       mfspr   r0,SPRN_MAS6
+       stw     r0,MAS6(r11)
+#ifdef CONFIG_PHYS_64BIT
+       mfspr   r0,SPRN_MAS7
+       stw     r0,MAS7(r11)
+#endif /* CONFIG_PHYS_64BIT */
+#endif /* CONFIG_FSL_BOOKE */
+#ifdef CONFIG_44x
+       mfspr   r0,SPRN_MMUCR
+       stw     r0,MMUCR(r11)
+#endif
+       mfspr   r0,SPRN_SRR0
+       stw     r0,_SRR0(r11)
+       mfspr   r0,SPRN_SRR1
+       stw     r0,_SRR1(r11)
+
+       mfspr   r8,SPRN_SPRG3
+       lwz     r0,KSP_LIMIT(r8)
+       stw     r0,SAVED_KSP_LIMIT(r11)
+       rlwimi  r0,r1,0,0,(31-THREAD_SHIFT)
+       stw     r0,KSP_LIMIT(r8)
        /* fall through */
 #endif
 
@@ -77,6 +102,16 @@ crit_transfer_to_handler:
        stw     r0,GPR10(r11)
        lwz     r0,crit_r11@l(0)
        stw     r0,GPR11(r11)
+       mfspr   r0,SPRN_SRR0
+       stw     r0,crit_srr0@l(0)
+       mfspr   r0,SPRN_SRR1
+       stw     r0,crit_srr1@l(0)
+
+       mfspr   r8,SPRN_SPRG3
+       lwz     r0,KSP_LIMIT(r8)
+       stw     r0,saved_ksp_limit@l(0)
+       rlwimi  r0,r1,0,0,(31-THREAD_SHIFT)
+       stw     r0,KSP_LIMIT(r8)
        /* fall through */
 #endif
 
@@ -147,6 +182,7 @@ transfer_to_handler:
        lwz     r12,TI_LOCAL_FLAGS(r9)
        mtcrf   0x01,r12
        bt-     31-TLF_NAPPING,4f
+       bt-     31-TLF_SLEEPING,7f
 #endif /* CONFIG_6xx */
        .globl transfer_to_handler_cont
 transfer_to_handler_cont:
@@ -164,6 +200,13 @@ transfer_to_handler_cont:
 4:     rlwinm  r12,r12,0,~_TLF_NAPPING
        stw     r12,TI_LOCAL_FLAGS(r9)
        b       power_save_6xx_restore
+
+7:     rlwinm  r12,r12,0,~_TLF_SLEEPING
+       stw     r12,TI_LOCAL_FLAGS(r9)
+       lwz     r9,_MSR(r11)            /* if sleeping, clear MSR.EE */
+       rlwinm  r9,r9,0,~MSR_EE
+       lwz     r12,_LINK(r11)          /* and return to address in LR */
+       b       fast_exception_return
 #endif
 
 /*
@@ -668,7 +711,7 @@ user_exc_return:            /* r10 contains MSR_KERNEL here */
        /* Check current_thread_info()->flags */
        rlwinm  r9,r1,0,0,(31-THREAD_SHIFT)
        lwz     r9,TI_FLAGS(r9)
-       andi.   r0,r9,(_TIF_SIGPENDING|_TIF_RESTORE_SIGMASK|_TIF_NEED_RESCHED)
+       andi.   r0,r9,_TIF_USER_WORK_MASK
        bne     do_work
 
 restore_user:
@@ -859,17 +902,90 @@ exc_exit_restart_end:
        exc_lvl_rfi;                                                    \
        b       .;              /* prevent prefetch past exc_lvl_rfi */
 
+#define        RESTORE_xSRR(exc_lvl_srr0, exc_lvl_srr1)                        \
+       lwz     r9,_##exc_lvl_srr0(r1);                                 \
+       lwz     r10,_##exc_lvl_srr1(r1);                                \
+       mtspr   SPRN_##exc_lvl_srr0,r9;                                 \
+       mtspr   SPRN_##exc_lvl_srr1,r10;
+
+#if defined(CONFIG_FSL_BOOKE)
+#ifdef CONFIG_PHYS_64BIT
+#define        RESTORE_MAS7                                                    \
+       lwz     r11,MAS7(r1);                                           \
+       mtspr   SPRN_MAS7,r11;
+#else
+#define        RESTORE_MAS7
+#endif /* CONFIG_PHYS_64BIT */
+#define RESTORE_MMU_REGS                                               \
+       lwz     r9,MAS0(r1);                                            \
+       lwz     r10,MAS1(r1);                                           \
+       lwz     r11,MAS2(r1);                                           \
+       mtspr   SPRN_MAS0,r9;                                           \
+       lwz     r9,MAS3(r1);                                            \
+       mtspr   SPRN_MAS1,r10;                                          \
+       lwz     r10,MAS6(r1);                                           \
+       mtspr   SPRN_MAS2,r11;                                          \
+       mtspr   SPRN_MAS3,r9;                                           \
+       mtspr   SPRN_MAS6,r10;                                          \
+       RESTORE_MAS7;
+#elif defined(CONFIG_44x)
+#define RESTORE_MMU_REGS                                               \
+       lwz     r9,MMUCR(r1);                                           \
+       mtspr   SPRN_MMUCR,r9;
+#else
+#define RESTORE_MMU_REGS
+#endif
+
+#ifdef CONFIG_40x
        .globl  ret_from_crit_exc
 ret_from_crit_exc:
+       mfspr   r9,SPRN_SPRG3
+       lis     r10,saved_ksp_limit@ha;
+       lwz     r10,saved_ksp_limit@l(r10);
+       tovirt(r9,r9);
+       stw     r10,KSP_LIMIT(r9)
+       lis     r9,crit_srr0@ha;
+       lwz     r9,crit_srr0@l(r9);
+       lis     r10,crit_srr1@ha;
+       lwz     r10,crit_srr1@l(r10);
+       mtspr   SPRN_SRR0,r9;
+       mtspr   SPRN_SRR1,r10;
        RET_FROM_EXC_LEVEL(SPRN_CSRR0, SPRN_CSRR1, RFCI)
+#endif /* CONFIG_40x */
 
 #ifdef CONFIG_BOOKE
+       .globl  ret_from_crit_exc
+ret_from_crit_exc:
+       mfspr   r9,SPRN_SPRG3
+       lwz     r10,SAVED_KSP_LIMIT(r1)
+       stw     r10,KSP_LIMIT(r9)
+       RESTORE_xSRR(SRR0,SRR1);
+       RESTORE_MMU_REGS;
+       RET_FROM_EXC_LEVEL(SPRN_CSRR0, SPRN_CSRR1, RFCI)
+
        .globl  ret_from_debug_exc
 ret_from_debug_exc:
+       mfspr   r9,SPRN_SPRG3
+       lwz     r10,SAVED_KSP_LIMIT(r1)
+       stw     r10,KSP_LIMIT(r9)
+       lwz     r9,THREAD_INFO-THREAD(r9)
+       rlwinm  r10,r1,0,0,(31-THREAD_SHIFT)
+       lwz     r10,TI_PREEMPT(r10)
+       stw     r10,TI_PREEMPT(r9)
+       RESTORE_xSRR(SRR0,SRR1);
+       RESTORE_xSRR(CSRR0,CSRR1);
+       RESTORE_MMU_REGS;
        RET_FROM_EXC_LEVEL(SPRN_DSRR0, SPRN_DSRR1, RFDI)
 
        .globl  ret_from_mcheck_exc
 ret_from_mcheck_exc:
+       mfspr   r9,SPRN_SPRG3
+       lwz     r10,SAVED_KSP_LIMIT(r1)
+       stw     r10,KSP_LIMIT(r9)
+       RESTORE_xSRR(SRR0,SRR1);
+       RESTORE_xSRR(CSRR0,CSRR1);
+       RESTORE_xSRR(DSRR0,DSRR1);
+       RESTORE_MMU_REGS;
        RET_FROM_EXC_LEVEL(SPRN_MCSRR0, SPRN_MCSRR1, RFMCI)
 #endif /* CONFIG_BOOKE */
 
@@ -925,7 +1041,7 @@ recheck:
        lwz     r9,TI_FLAGS(r9)
        andi.   r0,r9,_TIF_NEED_RESCHED
        bne-    do_resched
-       andi.   r0,r9,_TIF_SIGPENDING|_TIF_RESTORE_SIGMASK
+       andi.   r0,r9,_TIF_USER_WORK_MASK
        beq     restore_user
 do_user_signal:                        /* r10 contains MSR_KERNEL here */
        ori     r10,r10,MSR_EE
index 8552e67e3a8bebc9da26b01840dd996e1b2f6d0f..56d8e5d90c5be0b0518dcefaf2262a8ae97bd5da 100644 (file)
@@ -93,6 +93,12 @@ _ENTRY(crit_r10)
        .space  4
 _ENTRY(crit_r11)
        .space  4
+_ENTRY(crit_srr0)
+       .space  4
+_ENTRY(crit_srr1)
+       .space  4
+_ENTRY(saved_ksp_limit)
+       .space  4
 
 /*
  * Exception vector entry code. This code runs with address translation
@@ -148,14 +154,14 @@ _ENTRY(crit_r11)
        mfcr    r10;                    /* save CR in r10 for now          */\
        mfspr   r11,SPRN_SRR3;          /* check whether user or kernel    */\
        andi.   r11,r11,MSR_PR;                                              \
-       lis     r11,critical_stack_top@h;                                    \
-       ori     r11,r11,critical_stack_top@l;                                \
+       lis     r11,critirq_ctx@ha;                                          \
+       tophys(r11,r11);                                                     \
+       lwz     r11,critirq_ctx@l(r11);                                      \
        beq     1f;                                                          \
        /* COMING FROM USER MODE */                                          \
        mfspr   r11,SPRN_SPRG3;         /* if from user, start at top of   */\
        lwz     r11,THREAD_INFO-THREAD(r11); /* this thread's kernel stack */\
-       addi    r11,r11,THREAD_SIZE;                                         \
-1:     subi    r11,r11,INT_FRAME_SIZE; /* Allocate an exception frame     */\
+1:     addi    r11,r11,THREAD_SIZE-INT_FRAME_SIZE; /* Alloc an excpt frm  */\
        tophys(r11,r11);                                                     \
        stw     r10,_CCR(r11);          /* save various registers          */\
        stw     r12,GPR12(r11);                                              \
@@ -996,16 +1002,6 @@ empty_zero_page:
 swapper_pg_dir:
        .space  PGD_TABLE_SIZE
 
-
-/* Stack for handling critical exceptions from kernel mode */
-       .section .bss
-        .align 12
-exception_stack_bottom:
-       .space  4096
-critical_stack_top:
-       .globl  exception_stack_top
-exception_stack_top:
-
 /* Room for two PTE pointers, usually the kernel and current user pointers
  * to their respective root page table.
  */
index c2b9dc4fce5d24a4021972f5337d66828faca918..47ea8affad232e08f880a69490841069e4133fe8 100644 (file)
@@ -737,15 +737,6 @@ empty_zero_page:
 swapper_pg_dir:
        .space  PGD_TABLE_SIZE
 
-/* Reserved 4k for the critical exception stack & 4k for the machine
- * check stack per CPU for kernel mode exceptions */
-       .section .bss
-        .align 12
-exception_stack_bottom:
-       .space  BOOKE_EXCEPTION_STACK_SIZE
-       .globl  exception_stack_top
-exception_stack_top:
-
 /*
  * Room for two PTE pointers, usually the kernel and current user pointers
  * to their respective root page table.
index aefafc6330c9497be4d7c8c8b2cf9f5e63b51749..f277fade19328e015149e950978f035eea1fac72 100644 (file)
@@ -43,9 +43,7 @@
        SAVE_2GPRS(7, r11)
 
 /* To handle the additional exception priority levels on 40x and Book-E
- * processors we allocate a 4k stack per additional priority level. The various
- * head_xxx.S files allocate space (exception_stack_top) for each priority's
- * stack times the number of CPUs
+ * processors we allocate a stack per additional priority level.
  *
  * On 40x critical is the only additional level
  * On 44x/e500 we have critical and machine check
  * going to critical or their own debug level we aren't currently
  * providing configurations that micro-optimize space usage.
  */
-#ifdef CONFIG_44x
-#define NUM_EXCEPTION_LVLS     2
-#else
-#define NUM_EXCEPTION_LVLS     3
-#endif
-#define BOOKE_EXCEPTION_STACK_SIZE     (4096 * NUM_EXCEPTION_LVLS)
 
 /* CRIT_SPRG only used in critical exception handling */
 #define CRIT_SPRG      SPRN_SPRG2
 /* MCHECK_SPRG only used in machine check exception handling */
 #define MCHECK_SPRG    SPRN_SPRG6W
 
-#define MCHECK_STACK_TOP       (exception_stack_top - 4096)
-#define CRIT_STACK_TOP         (exception_stack_top)
+#define MCHECK_STACK_BASE      mcheckirq_ctx
+#define CRIT_STACK_BASE                critirq_ctx
 
 /* only on e200 for now */
-#define DEBUG_STACK_TOP                (exception_stack_top - 8192)
+#define DEBUG_STACK_BASE       dbgirq_ctx
 #define DEBUG_SPRG             SPRN_SPRG6W
 
+#define EXC_LVL_FRAME_OVERHEAD (THREAD_SIZE - INT_FRAME_SIZE - EXC_LVL_SIZE)
+
 #ifdef CONFIG_SMP
 #define BOOKE_LOAD_EXC_LEVEL_STACK(level)              \
        mfspr   r8,SPRN_PIR;                            \
-       mulli   r8,r8,BOOKE_EXCEPTION_STACK_SIZE;       \
-       neg     r8,r8;                                  \
-       addis   r8,r8,level##_STACK_TOP@ha;             \
-       addi    r8,r8,level##_STACK_TOP@l
+       slwi    r8,r8,2;                                \
+       addis   r8,r8,level##_STACK_BASE@ha;            \
+       lwz     r8,level##_STACK_BASE@l(r8);            \
+       addi    r8,r8,EXC_LVL_FRAME_OVERHEAD;
 #else
 #define BOOKE_LOAD_EXC_LEVEL_STACK(level)              \
-       lis     r8,level##_STACK_TOP@h;                 \
-       ori     r8,r8,level##_STACK_TOP@l
+       lis     r8,level##_STACK_BASE@ha;               \
+       lwz     r8,level##_STACK_BASE@l(r8);            \
+       addi    r8,r8,EXC_LVL_FRAME_OVERHEAD;
 #endif
 
 /*
 #define EXC_LEVEL_EXCEPTION_PROLOG(exc_level, exc_level_srr0, exc_level_srr1) \
        mtspr   exc_level##_SPRG,r8;                                         \
        BOOKE_LOAD_EXC_LEVEL_STACK(exc_level);/* r8 points to the exc_level stack*/ \
-       stw     r10,GPR10-INT_FRAME_SIZE(r8);                                \
-       stw     r11,GPR11-INT_FRAME_SIZE(r8);                                \
-       mfcr    r10;                    /* save CR in r10 for now          */\
-       mfspr   r11,exc_level_srr1;     /* check whether user or kernel    */\
-       andi.   r11,r11,MSR_PR;                                              \
-       mr      r11,r8;                                                      \
-       mfspr   r8,exc_level##_SPRG;                                         \
-       beq     1f;                                                          \
-       /* COMING FROM USER MODE */                                          \
+       stw     r9,GPR9(r8);            /* save various registers          */\
+       mfcr    r9;                     /* save CR in r9 for now           */\
+       stw     r10,GPR10(r8);                                               \
+       stw     r11,GPR11(r8);                                               \
+       stw     r9,_CCR(r8);            /* save CR on stack                */\
+       mfspr   r10,exc_level_srr1;     /* check whether user or kernel    */\
+       andi.   r10,r10,MSR_PR;                                              \
        mfspr   r11,SPRN_SPRG3;         /* if from user, start at top of   */\
        lwz     r11,THREAD_INFO-THREAD(r11); /* this thread's kernel stack */\
-       addi    r11,r11,THREAD_SIZE;                                         \
-1:     subi    r11,r11,INT_FRAME_SIZE; /* Allocate an exception frame     */\
-       stw     r10,_CCR(r11);          /* save various registers          */\
-       stw     r12,GPR12(r11);                                              \
+       addi    r11,r11,EXC_LVL_FRAME_OVERHEAD; /* allocate stack frame    */\
+       beq     1f;                                                          \
+       /* COMING FROM USER MODE */                                          \
+       stw     r9,_CCR(r11);           /* save CR                         */\
+       lwz     r10,GPR10(r8);          /* copy regs from exception stack  */\
+       lwz     r9,GPR9(r8);                                                 \
+       stw     r10,GPR10(r11);                                              \
+       lwz     r10,GPR11(r8);                                               \
        stw     r9,GPR9(r11);                                                \
+       stw     r10,GPR11(r11);                                              \
+       b       2f;                                                          \
+       /* COMING FROM PRIV MODE */                                          \
+1:     lwz     r9,TI_FLAGS-EXC_LVL_FRAME_OVERHEAD(r11);                     \
+       lwz     r10,TI_PREEMPT-EXC_LVL_FRAME_OVERHEAD(r11);                  \
+       stw     r9,TI_FLAGS-EXC_LVL_FRAME_OVERHEAD(r8);                      \
+       stw     r10,TI_PREEMPT-EXC_LVL_FRAME_OVERHEAD(r8);                   \
+       lwz     r9,TI_TASK-EXC_LVL_FRAME_OVERHEAD(r11);                      \
+       stw     r9,TI_TASK-EXC_LVL_FRAME_OVERHEAD(r8);                       \
+       mr      r11,r8;                                                      \
+2:     mfspr   r8,exc_level##_SPRG;                                         \
+       stw     r12,GPR12(r11);         /* save various registers          */\
        mflr    r10;                                                         \
        stw     r10,_LINK(r11);                                              \
        mfspr   r12,SPRN_DEAR;          /* save DEAR and ESR in the frame  */\
@@ -262,8 +271,8 @@ label:
        lwz     r12,GPR12(r11);                                               \
        mtspr   DEBUG_SPRG,r8;                                                \
        BOOKE_LOAD_EXC_LEVEL_STACK(DEBUG); /* r8 points to the debug stack */ \
-       lwz     r10,GPR10-INT_FRAME_SIZE(r8);                                 \
-       lwz     r11,GPR11-INT_FRAME_SIZE(r8);                                 \
+       lwz     r10,GPR10(r8);                                                \
+       lwz     r11,GPR11(r8);                                                \
        mfspr   r8,DEBUG_SPRG;                                                \
                                                                              \
        RFDI;                                                                 \
@@ -272,7 +281,7 @@ label:
        /* continue normal handling for a critical exception... */            \
 2:     mfspr   r4,SPRN_DBSR;                                                 \
        addi    r3,r1,STACK_FRAME_OVERHEAD;                                   \
-       EXC_XFER_TEMPLATE(DebugException, 0x2002, (MSR_KERNEL & ~(MSR_ME|MSR_DE|MSR_CE)), NOCOPY, debug_transfer_to_handler, ret_from_debug_exc)
+       EXC_XFER_TEMPLATE(DebugException, 0x2008, (MSR_KERNEL & ~(MSR_ME|MSR_DE|MSR_CE)), NOCOPY, debug_transfer_to_handler, ret_from_debug_exc)
 
 #define DEBUG_CRIT_EXCEPTION                                                 \
        START_EXCEPTION(DebugCrit);                                           \
@@ -315,8 +324,8 @@ label:
        lwz     r12,GPR12(r11);                                               \
        mtspr   CRIT_SPRG,r8;                                                 \
        BOOKE_LOAD_EXC_LEVEL_STACK(CRIT); /* r8 points to the debug stack */  \
-       lwz     r10,GPR10-INT_FRAME_SIZE(r8);                                 \
-       lwz     r11,GPR11-INT_FRAME_SIZE(r8);                                 \
+       lwz     r10,GPR10(r8);                                                \
+       lwz     r11,GPR11(r8);                                                \
        mfspr   r8,CRIT_SPRG;                                                 \
                                                                              \
        rfci;                                                                 \
@@ -367,4 +376,25 @@ label:
        addi    r3,r1,STACK_FRAME_OVERHEAD;                                   \
        EXC_XFER_EE_LITE(0x800, kernel_fp_unavailable_exception)
 
+#ifndef __ASSEMBLY__
+struct exception_regs {
+       unsigned long mas0;
+       unsigned long mas1;
+       unsigned long mas2;
+       unsigned long mas3;
+       unsigned long mas6;
+       unsigned long mas7;
+       unsigned long srr0;
+       unsigned long srr1;
+       unsigned long csrr0;
+       unsigned long csrr1;
+       unsigned long dsrr0;
+       unsigned long dsrr1;
+       unsigned long saved_ksp_limit;
+};
+
+/* ensure this structure is always sized to a multiple of the stack alignment */
+#define STACK_EXC_LVL_FRAME_SIZE       _ALIGN_UP(sizeof (struct exception_regs), 16)
+
+#endif /* __ASSEMBLY__ */
 #endif /* __HEAD_BOOKE_H__ */
index e581524d85bc9ee040bef175426d85c4a03b0cc6..503f86030b6eff6243dac7fbc3c0914960a2cda6 100644 (file)
@@ -1080,15 +1080,6 @@ empty_zero_page:
 swapper_pg_dir:
        .space  PGD_TABLE_SIZE
 
-/* Reserved 4k for the critical exception stack & 4k for the machine
- * check stack per CPU for kernel mode exceptions */
-       .section .bss
-       .align 12
-exception_stack_bottom:
-       .space  BOOKE_EXCEPTION_STACK_SIZE * NR_CPUS
-       .globl  exception_stack_top
-exception_stack_top:
-
 /*
  * Room for two PTE pointers, usually the kernel and current user pointers
  * to their respective root page table.
index 2f73f705d56449a3c4416f14180264f0e981d0ca..b5199752ac60369b28a948f4fb2d55ba76fb8919 100644 (file)
@@ -356,9 +356,42 @@ void __init init_IRQ(void)
 {
        if (ppc_md.init_IRQ)
                ppc_md.init_IRQ();
+
+       exc_lvl_ctx_init();
+
        irq_ctx_init();
 }
 
+#if defined(CONFIG_BOOKE) || defined(CONFIG_40x)
+struct thread_info   *critirq_ctx[NR_CPUS] __read_mostly;
+struct thread_info    *dbgirq_ctx[NR_CPUS] __read_mostly;
+struct thread_info *mcheckirq_ctx[NR_CPUS] __read_mostly;
+
+void exc_lvl_ctx_init(void)
+{
+       struct thread_info *tp;
+       int i;
+
+       for_each_possible_cpu(i) {
+               memset((void *)critirq_ctx[i], 0, THREAD_SIZE);
+               tp = critirq_ctx[i];
+               tp->cpu = i;
+               tp->preempt_count = 0;
+
+#ifdef CONFIG_BOOKE
+               memset((void *)dbgirq_ctx[i], 0, THREAD_SIZE);
+               tp = dbgirq_ctx[i];
+               tp->cpu = i;
+               tp->preempt_count = 0;
+
+               memset((void *)mcheckirq_ctx[i], 0, THREAD_SIZE);
+               tp = mcheckirq_ctx[i];
+               tp->cpu = i;
+               tp->preempt_count = HARDIRQ_OFFSET;
+#endif
+       }
+}
+#endif
 
 #ifdef CONFIG_IRQSTACKS
 struct thread_info *softirq_ctx[NR_CPUS] __read_mostly;
index c176c513566b3c1a179661bae346142fa5cd4bd0..23545a2f51f34d40c02f44840eb607985c5ddc4c 100644 (file)
@@ -498,7 +498,7 @@ int __kprobes kprobe_exceptions_notify(struct notifier_block *self,
 #ifdef CONFIG_PPC64
 unsigned long arch_deref_entry_point(void *entry)
 {
-       return (unsigned long)(((func_descr_t *)entry)->entry);
+       return ((func_descr_t *)entry)->entry;
 }
 #endif
 
index 1e656b43ad7fb87f45a71c393e9f96ea5e18a504..827a5726a035c9a11d5a182b59b5c2c33f2ab618 100644 (file)
@@ -573,7 +573,7 @@ static int lparcfg_open(struct inode *inode, struct file *file)
        return single_open(file, lparcfg_data, NULL);
 }
 
-const struct file_operations lparcfg_fops = {
+static const struct file_operations lparcfg_fops = {
        .owner          = THIS_MODULE,
        .read           = seq_read,
        .write          = lparcfg_write,
@@ -581,7 +581,7 @@ const struct file_operations lparcfg_fops = {
        .release        = single_release,
 };
 
-int __init lparcfg_init(void)
+static int __init lparcfg_init(void)
 {
        struct proc_dir_entry *ent;
        mode_t mode = S_IRUSR | S_IRGRP | S_IROTH;
@@ -601,7 +601,7 @@ int __init lparcfg_init(void)
        return 0;
 }
 
-void __exit lparcfg_cleanup(void)
+static void __exit lparcfg_cleanup(void)
 {
        if (proc_ppc64_lparcfg)
                remove_proc_entry("lparcfg", proc_ppc64_lparcfg->parent);
index 704375bda73a928446bb87ba68e492659be093a0..631dfd614b218e95798ae035698bfd7d21744ced 100644 (file)
@@ -158,7 +158,7 @@ void kexec_copy_flush(struct kimage *image)
  * on calling the interrupts, but we would like to call it off irq level
  * so that the interrupt controller is clean.
  */
-void kexec_smp_down(void *arg)
+static void kexec_smp_down(void *arg)
 {
        if (ppc_md.kexec_cpu_down)
                ppc_md.kexec_cpu_down(0, 1);
@@ -249,7 +249,7 @@ static void kexec_prepare_cpus(void)
  * We could use a smaller stack if we don't care about anything using
  * current, but that audit has not been performed.
  */
-union thread_union kexec_stack
+static union thread_union kexec_stack
        __attribute__((__section__(".data.init_task"))) = { };
 
 /* Our assembly helper, in kexec_stub.S */
index c62d1012c01322354309aaaf7b78a0d689070c54..3bb7d3dd28be9e20d6e013127426e8c9c96e4861 100644 (file)
@@ -34,5 +34,5 @@ int arch_setup_msi_irqs(struct pci_dev *dev, int nvec, int type)
 
 void arch_teardown_msi_irqs(struct pci_dev *dev)
 {
-       return ppc_md.teardown_msi_irqs(dev);
+       ppc_md.teardown_msi_irqs(dev);
 }
index 5748ddb47d9f82fc332b844e56613d3a6e84a07b..e9be908f199b6fa46ee4ec2226316db2ad1702c6 100644 (file)
@@ -89,54 +89,6 @@ struct of_device *of_device_alloc(struct device_node *np,
 }
 EXPORT_SYMBOL(of_device_alloc);
 
-ssize_t of_device_get_modalias(struct of_device *ofdev,
-                               char *str, ssize_t len)
-{
-       const char *compat;
-       int cplen, i;
-       ssize_t tsize, csize, repend;
-
-       /* Name & Type */
-       csize = snprintf(str, len, "of:N%sT%s",
-                               ofdev->node->name, ofdev->node->type);
-
-       /* Get compatible property if any */
-       compat = of_get_property(ofdev->node, "compatible", &cplen);
-       if (!compat)
-               return csize;
-
-       /* Find true end (we tolerate multiple \0 at the end */
-       for (i=(cplen-1); i>=0 && !compat[i]; i--)
-               cplen--;
-       if (!cplen)
-               return csize;
-       cplen++;
-
-       /* Check space (need cplen+1 chars including final \0) */
-       tsize = csize + cplen;
-       repend = tsize;
-
-       if (csize>=len)         /* @ the limit, all is already filled */
-               return tsize;
-
-       if (tsize>=len) {               /* limit compat list */
-               cplen = len-csize-1;
-               repend = len;
-       }
-
-       /* Copy and do char replacement */
-       memcpy(&str[csize+1], compat, cplen);
-       for (i=csize; i<repend; i++) {
-               char c = str[i];
-               if (c=='\0')
-                       str[i] = 'C';
-               else if (c==' ')
-                       str[i] = '_';
-       }
-
-       return tsize;
-}
-
 int of_device_uevent(struct device *dev, struct kobj_uevent_env *env)
 {
        struct of_device *ofdev;
index f9c6abc84a9483a9fce2fb496642ec863f369fa3..1be9fe38bcb570f990f5b5f462913c3c75929ef1 100644 (file)
@@ -160,7 +160,7 @@ static int sensors_open(struct inode *inode, struct file *file)
        return single_open(file, ppc_rtas_sensors_show, NULL);
 }
 
-const struct file_operations ppc_rtas_sensors_operations = {
+static const struct file_operations ppc_rtas_sensors_operations = {
        .open           = sensors_open,
        .read           = seq_read,
        .llseek         = seq_lseek,
@@ -172,7 +172,7 @@ static int poweron_open(struct inode *inode, struct file *file)
        return single_open(file, ppc_rtas_poweron_show, NULL);
 }
 
-const struct file_operations ppc_rtas_poweron_operations = {
+static const struct file_operations ppc_rtas_poweron_operations = {
        .open           = poweron_open,
        .read           = seq_read,
        .llseek         = seq_lseek,
@@ -185,7 +185,7 @@ static int progress_open(struct inode *inode, struct file *file)
        return single_open(file, ppc_rtas_progress_show, NULL);
 }
 
-const struct file_operations ppc_rtas_progress_operations = {
+static const struct file_operations ppc_rtas_progress_operations = {
        .open           = progress_open,
        .read           = seq_read,
        .llseek         = seq_lseek,
@@ -198,7 +198,7 @@ static int clock_open(struct inode *inode, struct file *file)
        return single_open(file, ppc_rtas_clock_show, NULL);
 }
 
-const struct file_operations ppc_rtas_clock_operations = {
+static const struct file_operations ppc_rtas_clock_operations = {
        .open           = clock_open,
        .read           = seq_read,
        .llseek         = seq_lseek,
@@ -211,7 +211,7 @@ static int tone_freq_open(struct inode *inode, struct file *file)
        return single_open(file, ppc_rtas_tone_freq_show, NULL);
 }
 
-const struct file_operations ppc_rtas_tone_freq_operations = {
+static const struct file_operations ppc_rtas_tone_freq_operations = {
        .open           = tone_freq_open,
        .read           = seq_read,
        .llseek         = seq_lseek,
@@ -224,7 +224,7 @@ static int tone_volume_open(struct inode *inode, struct file *file)
        return single_open(file, ppc_rtas_tone_volume_show, NULL);
 }
 
-const struct file_operations ppc_rtas_tone_volume_operations = {
+static const struct file_operations ppc_rtas_tone_volume_operations = {
        .open           = tone_volume_open,
        .read           = seq_read,
        .llseek         = seq_lseek,
@@ -237,7 +237,7 @@ static int rmo_buf_open(struct inode *inode, struct file *file)
        return single_open(file, ppc_rtas_rmo_buf_show, NULL);
 }
 
-const struct file_operations ppc_rtas_rmo_buf_ops = {
+static const struct file_operations ppc_rtas_rmo_buf_ops = {
        .open           = rmo_buf_open,
        .read           = seq_read,
        .llseek         = seq_lseek,
index 34843c318419012e73195b8837345b232e4dca85..2a60bd3e3afa326e166dd03994d5439243b6a119 100644 (file)
@@ -340,8 +340,8 @@ int rtas_get_error_log_max(void)
 EXPORT_SYMBOL(rtas_get_error_log_max);
 
 
-char rtas_err_buf[RTAS_ERROR_LOG_MAX];
-int rtas_last_error_token;
+static char rtas_err_buf[RTAS_ERROR_LOG_MAX];
+static int rtas_last_error_token;
 
 /** Return a copy of the detailed error text associated with the
  *  most recent failed call to rtas.  Because the error text
@@ -484,7 +484,7 @@ unsigned int rtas_busy_delay(int status)
 }
 EXPORT_SYMBOL(rtas_busy_delay);
 
-int rtas_error_rc(int rtas_rc)
+static int rtas_error_rc(int rtas_rc)
 {
        int rc;
 
index 0a5e22b22729f6b70443c1b0c9fb622aca4ea26e..09ded5c424a967cdaa0c1f5817bd7e301b971f60 100644 (file)
@@ -731,7 +731,7 @@ static const struct file_operations validate_flash_operations = {
        .release        = validate_flash_release,
 };
 
-int __init rtas_flash_init(void)
+static int __init rtas_flash_init(void)
 {
        int rc;
 
@@ -817,7 +817,7 @@ cleanup:
        return rc;
 }
 
-void __exit rtas_flash_cleanup(void)
+static void __exit rtas_flash_cleanup(void)
 {
        rtas_flash_term_hook = NULL;
 
index 3ab88a9dc70dd0686c3d7c29d125fb42b753f6f7..589a2797eac2006075af50ee60e6bff836f3882c 100644 (file)
@@ -155,12 +155,12 @@ static int rtas_pci_write_config(struct pci_bus *bus,
        return PCIBIOS_DEVICE_NOT_FOUND;
 }
 
-struct pci_ops rtas_pci_ops = {
+static struct pci_ops rtas_pci_ops = {
        .read = rtas_pci_read_config,
        .write = rtas_pci_write_config,
 };
 
-int is_python(struct device_node *dev)
+static int is_python(struct device_node *dev)
 {
        const char *model = of_get_property(dev, "model", NULL);
 
index 5112a4aa801d7d6843c2202c7815147831a74d2e..bef0be3fd98be8f81d237c00b2d4a84f5abc76fc 100644 (file)
@@ -248,6 +248,28 @@ static void __init irqstack_early_init(void)
 #define irqstack_early_init()
 #endif
 
+#if defined(CONFIG_BOOKE) || defined(CONFIG_40x)
+static void __init exc_lvl_early_init(void)
+{
+       unsigned int i;
+
+       /* interrupt stacks must be in lowmem, we get that for free on ppc32
+        * as the lmb is limited to lowmem by LMB_REAL_LIMIT */
+       for_each_possible_cpu(i) {
+               critirq_ctx[i] = (struct thread_info *)
+                       __va(lmb_alloc(THREAD_SIZE, THREAD_SIZE));
+#ifdef CONFIG_BOOKE
+               dbgirq_ctx[i] = (struct thread_info *)
+                       __va(lmb_alloc(THREAD_SIZE, THREAD_SIZE));
+               mcheckirq_ctx[i] = (struct thread_info *)
+                       __va(lmb_alloc(THREAD_SIZE, THREAD_SIZE));
+#endif
+       }
+}
+#else
+#define exc_lvl_early_init()
+#endif
+
 /* Warning, IO base is not yet inited */
 void __init setup_arch(char **cmdline_p)
 {
@@ -305,6 +327,8 @@ void __init setup_arch(char **cmdline_p)
        init_mm.end_data = (unsigned long) _edata;
        init_mm.brk = klimit;
 
+       exc_lvl_early_init();
+
        irqstack_early_init();
 
        /* set up the bootmem stuff with available memory */
index a65a44fbe52375c5b1b5ca7a8deb33305ab11536..ad55488939c376f7073b0770ca79ad1f5954ca1e 100644 (file)
@@ -120,7 +120,7 @@ int do_signal(sigset_t *oldset, struct pt_regs *regs)
        int ret;
        int is32 = is_32bit_task();
 
-       if (test_thread_flag(TIF_RESTORE_SIGMASK))
+       if (current_thread_info()->local_flags & _TLF_RESTORE_SIGMASK)
                oldset = &current->saved_sigmask;
        else if (!oldset)
                oldset = &current->blocked;
@@ -131,9 +131,10 @@ int do_signal(sigset_t *oldset, struct pt_regs *regs)
        check_syscall_restart(regs, &ka, signr > 0);
 
        if (signr <= 0) {
+               struct thread_info *ti = current_thread_info();
                /* No signal to deliver -- put the saved sigmask back */
-               if (test_thread_flag(TIF_RESTORE_SIGMASK)) {
-                       clear_thread_flag(TIF_RESTORE_SIGMASK);
+               if (ti->local_flags & _TLF_RESTORE_SIGMASK) {
+                       ti->local_flags &= ~_TLF_RESTORE_SIGMASK;
                        sigprocmask(SIG_SETMASK, &current->saved_sigmask, NULL);
                }
                return 0;               /* no signals delivered */
@@ -169,10 +170,9 @@ int do_signal(sigset_t *oldset, struct pt_regs *regs)
 
                /*
                 * A signal was successfully delivered; the saved sigmask is in
-                * its frame, and we can clear the TIF_RESTORE_SIGMASK flag.
+                * its frame, and we can clear the TLF_RESTORE_SIGMASK flag.
                 */
-               if (test_thread_flag(TIF_RESTORE_SIGMASK))
-                       clear_thread_flag(TIF_RESTORE_SIGMASK);
+               current_thread_info()->local_flags &= ~_TLF_RESTORE_SIGMASK;
        }
 
        return ret;
index ad6943468ee9f25aee853a3ded8f99271f1c3d72..4ae16d179803ef6071cd07909b86dd91ad032b62 100644 (file)
@@ -243,7 +243,7 @@ long sys_sigsuspend(old_sigset_t mask)
 
        current->state = TASK_INTERRUPTIBLE;
        schedule();
-       set_thread_flag(TIF_RESTORE_SIGMASK);
+       set_restore_sigmask();
        return -ERESTARTNOHAND;
 }
 
index 1457aa0a08f136355347adcbe122a3d2c1692ba2..ba7989ffaeeed50245562c429af4871abaca3f4c 100644 (file)
@@ -365,12 +365,8 @@ void smp_call_function_interrupt(void)
        }
 }
 
-extern struct gettimeofday_struct do_gtod;
-
 struct thread_info *current_set[NR_CPUS];
 
-DECLARE_PER_CPU(unsigned int, pvr);
-
 static void __devinit smp_store_cpu_info(int id)
 {
        per_cpu(pvr, id) = mfspr(SPRN_PVR);
index 73401e83739a09b4dcefdaecc84451c018607ca5..c73fc33aa817a93f49b682fcb999f1f5c5fe61e0 100644 (file)
@@ -129,7 +129,7 @@ static unsigned long __initdata iSeries_recal_titan;
 static signed long __initdata iSeries_recal_tb;
 
 /* Forward declaration is only needed for iSereis compiles */
-void __init clocksource_init(void);
+static void __init clocksource_init(void);
 #endif
 
 #define XSEC_PER_SEC (1024*1024)
@@ -150,8 +150,8 @@ u64 tb_to_xs;
 unsigned tb_to_us;
 
 #define TICKLEN_SCALE  NTP_SCALE_SHIFT
-u64 last_tick_len;     /* units are ns / 2^TICKLEN_SCALE */
-u64 ticklen_to_xs;     /* 0.64 fraction */
+static u64 last_tick_len;      /* units are ns / 2^TICKLEN_SCALE */
+static u64 ticklen_to_xs;      /* 0.64 fraction */
 
 /* If last_tick_len corresponds to about 1/HZ seconds, then
    last_tick_len << TICKLEN_SHIFT will be about 2^63. */
@@ -164,7 +164,7 @@ static u64 tb_to_ns_scale __read_mostly;
 static unsigned tb_to_ns_shift __read_mostly;
 static unsigned long boot_tb __read_mostly;
 
-struct gettimeofday_struct do_gtod;
+static struct gettimeofday_struct do_gtod;
 
 extern struct timezone sys_tz;
 static long timezone_offset;
@@ -832,7 +832,7 @@ void update_vsyscall_tz(void)
        ++vdso_data->tb_update_count;
 }
 
-void __init clocksource_init(void)
+static void __init clocksource_init(void)
 {
        struct clocksource *clock;
 
index 932b3fdb34b93ced7bd2c10da184f67ff906a66b..7d6585f902776dce82bebe7c018d46409101259c 100644 (file)
@@ -43,15 +43,15 @@ SECTIONS
        .rodata         : { *(.rodata .rodata.* .gnu.linkonce.r.*) }
        .rodata1        : { *(.rodata1) }
 
+       .dynamic        : { *(.dynamic) }               :text   :dynamic
+
        .eh_frame_hdr   : { *(.eh_frame_hdr) }          :text   :eh_frame_hdr
        .eh_frame       : { KEEP (*(.eh_frame)) }       :text
        .gcc_except_table : { *(.gcc_except_table) }
+       .rela.dyn ALIGN(8) : { *(.rela.dyn) }
 
        .opd ALIGN(8)   : { KEEP (*(.opd)) }
        .got ALIGN(8)   : { *(.got .toc) }
-       .rela.dyn ALIGN(8) : { *(.rela.dyn) }
-
-       .dynamic        : { *(.dynamic) }               :text   :dynamic
 
        _end = .;
        PROVIDE(end = .);
index 0f2d239d94c440608dadf79671b4b95f6cf4e0e9..bf5b6d7ed30f02de3507f62e1f586d8a4cf8bd93 100644 (file)
@@ -120,7 +120,7 @@ static DEFINE_SPINLOCK(linear_map_hash_lock);
 
 /* Pre-POWER4 CPUs (4k pages only)
  */
-struct mmu_psize_def mmu_psize_defaults_old[] = {
+static struct mmu_psize_def mmu_psize_defaults_old[] = {
        [MMU_PAGE_4K] = {
                .shift  = 12,
                .sllp   = 0,
@@ -134,7 +134,7 @@ struct mmu_psize_def mmu_psize_defaults_old[] = {
  *
  * Support for 16Mb large pages
  */
-struct mmu_psize_def mmu_psize_defaults_gp[] = {
+static struct mmu_psize_def mmu_psize_defaults_gp[] = {
        [MMU_PAGE_4K] = {
                .shift  = 12,
                .sllp   = 0,
@@ -533,8 +533,6 @@ void __init htab_initialize(void)
        unsigned long base = 0, size = 0, limit;
        int i;
 
-       extern unsigned long tce_alloc_start, tce_alloc_end;
-
        DBG(" -> htab_initialize()\n");
 
        /* Initialize segment sizes */
index 1952b4d3fa7f562eeec7d272205e4393870ab4c5..45418590b6a925587aa9bfb16c3e0c6eb9691524 100644 (file)
@@ -43,6 +43,7 @@
 #include <asm/btext.h>
 #include <asm/tlb.h>
 #include <asm/sections.h>
+#include <asm/system.h>
 
 #include "mmu_decl.h"
 
@@ -76,8 +77,6 @@ void MMU_init(void);
 /* XXX should be in current.h  -- paulus */
 extern struct task_struct *current_set[NR_CPUS];
 
-extern int init_bootmem_done;
-
 /*
  * this tells the system to map all of ram with the segregs
  * (i.e. page tables) instead of the bats.
index 6aa65375abf5919ce2b02c0efe309dd8d39c893c..6ef63caca6822bdfaa29b8884c8b06873acd33a7 100644 (file)
@@ -185,7 +185,7 @@ void pgtable_cache_init(void)
  * do this by hand as the proffered address may not be correctly aligned.
  * Subtraction of non-aligned pointers produces undefined results.
  */
-unsigned long __meminit vmemmap_section_start(unsigned long page)
+static unsigned long __meminit vmemmap_section_start(unsigned long page)
 {
        unsigned long offset = page - ((unsigned long)(vmemmap));
 
@@ -198,7 +198,7 @@ unsigned long __meminit vmemmap_section_start(unsigned long page)
  * which overlaps this vmemmap page is initialised then this page is
  * initialised already.
  */
-int __meminit vmemmap_populated(unsigned long start, int page_size)
+static int __meminit vmemmap_populated(unsigned long start, int page_size)
 {
        unsigned long end = start + page_size;
 
index efbbd13d93e519bcfd30ebb5da48f0f87b2672f0..60e6032a8088eb8197eab6c0505ec18bb5cd4e20 100644 (file)
@@ -30,8 +30,8 @@ struct stab_entry {
 };
 
 #define NR_STAB_CACHE_ENTRIES 8
-DEFINE_PER_CPU(long, stab_cache_ptr);
-DEFINE_PER_CPU(long, stab_cache[NR_STAB_CACHE_ENTRIES]);
+static DEFINE_PER_CPU(long, stab_cache_ptr);
+static DEFINE_PER_CPU(long, stab_cache[NR_STAB_CACHE_ENTRIES]);
 
 /*
  * Create a segment table entry for the given esid/vsid pair.
index e2d867ce1c7eb46fb259993ebf8f99c0a177bca9..509bc560159b6d3d395e362e2a91563d35b7cf42 100644 (file)
@@ -37,8 +37,8 @@ DEFINE_PER_CPU(struct ppc64_tlb_batch, ppc64_tlb_batch);
  * include/asm-powerpc/tlb.h file -- tgall
  */
 DEFINE_PER_CPU(struct mmu_gather, mmu_gathers);
-DEFINE_PER_CPU(struct pte_freelist_batch *, pte_freelist_cur);
-unsigned long pte_freelist_forced_free;
+static DEFINE_PER_CPU(struct pte_freelist_batch *, pte_freelist_cur);
+static unsigned long pte_freelist_forced_free;
 
 struct pte_freelist_batch
 {
@@ -47,9 +47,6 @@ struct pte_freelist_batch
        pgtable_free_t  tables[0];
 };
 
-DEFINE_PER_CPU(struct pte_freelist_batch *, pte_freelist_cur);
-unsigned long pte_freelist_forced_free;
-
 #define PTE_FREELIST_SIZE \
        ((PAGE_SIZE - sizeof(struct pte_freelist_batch)) \
          / sizeof(pgtable_free_t))
index 9150318cfc5668fa4cd7c8597bb699389065d777..d293c702e7347df2e4d99f9c14136d02d467a61b 100644 (file)
 #include <linux/mtd/partitions.h>
 #include <linux/mtd/nand.h>
 #include <linux/mtd/ndfc.h>
+#include <linux/of.h>
 #include <asm/machdep.h>
 
+
 #ifdef CONFIG_MTD_NAND_NDFC
 
 #define CS_NAND_0      1       /* use chip select 1 for NAND device 0 */
@@ -35,13 +37,23 @@ static struct mtd_partition nand_parts[] = {
        {
                .name   = "root",
                .offset = 0x0200000,
-               .size   = 0x3400000
+               .size   = 0x3E00000
+       },
+       {
+               .name   = "persistent",
+               .offset = 0x4000000,
+               .size   = 0x4000000
        },
        {
-               .name   = "user",
-               .offset = 0x3600000,
-               .size   = 0x0A00000
+               .name   = "persistent1",
+               .offset = 0x8000000,
+               .size   = 0x4000000
        },
+       {
+               .name   = "persistent2",
+               .offset = 0xC000000,
+               .size   = 0x4000000
+       }
 };
 
 struct ndfc_controller_settings warp_ndfc_settings = {
@@ -67,19 +79,15 @@ static struct platform_device warp_ndfc_device = {
        .resource = &warp_ndfc,
 };
 
-static struct nand_ecclayout nand_oob_16 = {
-       .eccbytes = 3,
-       .eccpos = { 0, 1, 2, 3, 6, 7 },
-       .oobfree = { {.offset = 8, .length = 16} }
-};
-
+/* Do NOT set the ecclayout: let it default so it is correct for both
+ * 64M and 256M flash chips.
+ */
 static struct platform_nand_chip warp_nand_chip0 = {
        .nr_chips = 1,
        .chip_offset = CS_NAND_0,
        .nr_partitions = ARRAY_SIZE(nand_parts),
        .partitions = nand_parts,
-       .chip_delay = 50,
-       .ecclayout = &nand_oob_16,
+       .chip_delay = 20,
        .priv = &warp_chip0_settings,
 };
 
@@ -96,6 +104,23 @@ static struct platform_device warp_nand_device = {
 
 static int warp_setup_nand_flash(void)
 {
+       struct device_node *np;
+
+       /* Try to detect a rev A based on NOR size. */
+       np = of_find_compatible_node(NULL, NULL, "cfi-flash");
+       if (np) {
+               struct property *pp;
+
+               pp = of_find_property(np, "reg", NULL);
+               if (pp && (pp->length == 12)) {
+                       u32 *v = pp->value;
+                       if (v[2] == 0x4000000)
+                               /* Rev A = 64M NAND */
+                               warp_nand_chip0.nr_partitions = 2;
+               }
+               of_node_put(np);
+       }
+
        platform_device_register(&warp_ndfc_device);
        platform_device_register(&warp_nand_device);
 
index 39cf6150a72b2701af6eb62348ce364b3d88ce26..9565995cba7f8226f14f388a7bcee2dec06c247b 100644 (file)
@@ -12,6 +12,9 @@
 #include <linux/init.h>
 #include <linux/of_platform.h>
 #include <linux/kthread.h>
+#include <linux/i2c.h>
+#include <linux/interrupt.h>
+#include <linux/delay.h>
 
 #include <asm/machdep.h>
 #include <asm/prom.h>
@@ -27,6 +30,18 @@ static __initdata struct of_device_id warp_of_bus[] = {
        {},
 };
 
+static __initdata struct i2c_board_info warp_i2c_info[] = {
+       { I2C_BOARD_INFO("ad7414", 0x4a) }
+};
+
+static int __init warp_arch_init(void)
+{
+       /* This should go away once support is moved to the dts. */
+       i2c_register_board_info(0, warp_i2c_info, ARRAY_SIZE(warp_i2c_info));
+       return 0;
+}
+machine_arch_initcall(warp, warp_arch_init);
+
 static int __init warp_device_probe(void)
 {
        of_platform_bus_probe(NULL, warp_of_bus, NULL);
@@ -52,61 +67,232 @@ define_machine(warp) {
 };
 
 
-#define LED_GREEN (0x80000000 >> 0)
-#define LED_RED   (0x80000000 >> 1)
+/* I am not sure this is the best place for this... */
+static int __init warp_post_info(void)
+{
+       struct device_node *np;
+       void __iomem *fpga;
+       u32 post1, post2;
+
+       /* Sighhhh... POST information is in the sd area. */
+       np = of_find_compatible_node(NULL, NULL, "pika,fpga-sd");
+       if (np == NULL)
+               return -ENOENT;
+
+       fpga = of_iomap(np, 0);
+       of_node_put(np);
+       if (fpga == NULL)
+               return -ENOENT;
+
+       post1 = in_be32(fpga + 0x40);
+       post2 = in_be32(fpga + 0x44);
+
+       iounmap(fpga);
+
+       if (post1 || post2)
+               printk(KERN_INFO "Warp POST %08x %08x\n", post1, post2);
+       else
+               printk(KERN_INFO "Warp POST OK\n");
+
+       return 0;
+}
+machine_late_initcall(warp, warp_post_info);
+
+
+#ifdef CONFIG_SENSORS_AD7414
+
+static LIST_HEAD(dtm_shutdown_list);
+static void __iomem *dtm_fpga;
+static void __iomem *gpio_base;
+
+
+struct dtm_shutdown {
+       struct list_head list;
+       void (*func)(void *arg);
+       void *arg;
+};
 
 
-/* This is for the power LEDs 1 = on, 0 = off, -1 = leave alone */
-void warp_set_power_leds(int green, int red)
+int pika_dtm_register_shutdown(void (*func)(void *arg), void *arg)
 {
-       static void __iomem *gpio_base = NULL;
-       unsigned leds;
-
-       if (gpio_base == NULL) {
-               struct device_node *np;
-
-               /* Power LEDS are on the second GPIO controller */
-               np = of_find_compatible_node(NULL, NULL, "ibm,gpio-440EP");
-               if (np)
-                       np = of_find_compatible_node(np, NULL, "ibm,gpio-440EP");
-               if (np == NULL) {
-                       printk(KERN_ERR __FILE__ ": Unable to find gpio\n");
-                       return;
+       struct dtm_shutdown *shutdown;
+
+       shutdown = kmalloc(sizeof(struct dtm_shutdown), GFP_KERNEL);
+       if (shutdown == NULL)
+               return -ENOMEM;
+
+       shutdown->func = func;
+       shutdown->arg = arg;
+
+       list_add(&shutdown->list, &dtm_shutdown_list);
+
+       return 0;
+}
+
+int pika_dtm_unregister_shutdown(void (*func)(void *arg), void *arg)
+{
+       struct dtm_shutdown *shutdown;
+
+       list_for_each_entry(shutdown, &dtm_shutdown_list, list)
+               if (shutdown->func == func && shutdown->arg == arg) {
+                       list_del(&shutdown->list);
+                       kfree(shutdown);
+                       return 0;
+               }
+
+       return -EINVAL;
+}
+
+static irqreturn_t temp_isr(int irq, void *context)
+{
+       struct dtm_shutdown *shutdown;
+
+       local_irq_disable();
+
+       /* Run through the shutdown list. */
+       list_for_each_entry(shutdown, &dtm_shutdown_list, list)
+               shutdown->func(shutdown->arg);
+
+       printk(KERN_EMERG "\n\nCritical Temperature Shutdown\n");
+
+       while (1) {
+               if (dtm_fpga) {
+                       unsigned reset = in_be32(dtm_fpga + 0x14);
+                       out_be32(dtm_fpga + 0x14, reset);
                }
 
-               gpio_base = of_iomap(np, 0);
-               of_node_put(np);
-               if (gpio_base == NULL) {
-                       printk(KERN_ERR __FILE__ ": Unable to map gpio");
-                       return;
+               if (gpio_base) {
+                       unsigned leds = in_be32(gpio_base);
+
+                       /* green off, red toggle */
+                       leds &= ~0x80000000;
+                       leds ^=  0x40000000;
+
+                       out_be32(gpio_base, leds);
                }
+
+               mdelay(500);
+       }
+}
+
+static int pika_setup_leds(void)
+{
+       struct device_node *np;
+       const u32 *gpios;
+       int len;
+
+       np = of_find_compatible_node(NULL, NULL, "linux,gpio-led");
+       if (!np) {
+               printk(KERN_ERR __FILE__ ": Unable to find gpio-led\n");
+               return -ENOENT;
        }
 
-       leds = in_be32(gpio_base);
+       gpios = of_get_property(np, "gpios", &len);
+       of_node_put(np);
+       if (!gpios || len < 4) {
+               printk(KERN_ERR __FILE__
+                      ": Unable to get gpios property (%d)\n", len);
+               return -ENOENT;
+       }
 
-       switch (green) {
-       case 0: leds &= ~LED_GREEN; break;
-       case 1: leds |=  LED_GREEN; break;
+       np = of_find_node_by_phandle(gpios[0]);
+       if (!np) {
+               printk(KERN_ERR __FILE__ ": Unable to find gpio\n");
+               return -ENOENT;
        }
-       switch (red) {
-       case 0: leds &= ~LED_RED; break;
-       case 1: leds |=  LED_RED; break;
+
+       gpio_base = of_iomap(np, 0);
+       of_node_put(np);
+       if (!gpio_base) {
+               printk(KERN_ERR __FILE__ ": Unable to map gpio");
+               return -ENOMEM;
        }
 
-       out_be32(gpio_base, leds);
+       return 0;
 }
-EXPORT_SYMBOL(warp_set_power_leds);
 
+static void pika_setup_critical_temp(struct i2c_client *client)
+{
+       struct device_node *np;
+       int irq, rc;
+
+       /* Do this before enabling critical temp interrupt since we
+        * may immediately interrupt.
+        */
+       pika_setup_leds();
+
+       /* These registers are in 1 degree increments. */
+       i2c_smbus_write_byte_data(client, 2, 65); /* Thigh */
+       i2c_smbus_write_byte_data(client, 3, 55); /* Tlow */
+
+       np = of_find_compatible_node(NULL, NULL, "adi,ad7414");
+       if (np == NULL) {
+               printk(KERN_ERR __FILE__ ": Unable to find ad7414\n");
+               return;
+       }
+
+       irq = irq_of_parse_and_map(np, 0);
+       of_node_put(np);
+       if (irq  == NO_IRQ) {
+               printk(KERN_ERR __FILE__ ": Unable to get ad7414 irq\n");
+               return;
+       }
+
+       rc = request_irq(irq, temp_isr, 0, "ad7414", NULL);
+       if (rc) {
+               printk(KERN_ERR __FILE__
+                      ": Unable to request ad7414 irq %d = %d\n", irq, rc);
+               return;
+       }
+}
+
+static inline void pika_dtm_check_fan(void __iomem *fpga)
+{
+       static int fan_state;
+       u32 fan = in_be32(fpga + 0x34) & (1 << 14);
+
+       if (fan_state != fan) {
+               fan_state = fan;
+               if (fan)
+                       printk(KERN_WARNING "Fan rotation error detected."
+                                  " Please check hardware.\n");
+       }
+}
 
-#ifdef CONFIG_SENSORS_AD7414
 static int pika_dtm_thread(void __iomem *fpga)
 {
-       extern int ad7414_get_temp(int index);
+       struct i2c_adapter *adap;
+       struct i2c_client *client;
+
+       /* We loop in case either driver was compiled as a module and
+        * has not been insmoded yet.
+        */
+       while (!(adap = i2c_get_adapter(0))) {
+               set_current_state(TASK_INTERRUPTIBLE);
+               schedule_timeout(HZ);
+       }
+
+       while (1) {
+               list_for_each_entry(client, &adap->clients, list)
+                       if (client->addr == 0x4a)
+                               goto found_it;
+
+               set_current_state(TASK_INTERRUPTIBLE);
+               schedule_timeout(HZ);
+       }
+
+found_it:
+       i2c_put_adapter(adap);
+
+       pika_setup_critical_temp(client);
+
+       printk(KERN_INFO "PIKA DTM thread running.\n");
 
        while (!kthread_should_stop()) {
-               int temp = ad7414_get_temp(0);
+               u16 temp = swab16(i2c_smbus_read_word_data(client, 0));
+               out_be32(fpga + 0x20, temp);
 
-               out_be32(fpga, temp);
+               pika_dtm_check_fan(fpga);
 
                set_current_state(TASK_INTERRUPTIBLE);
                schedule_timeout(HZ);
@@ -115,37 +301,44 @@ static int pika_dtm_thread(void __iomem *fpga)
        return 0;
 }
 
+
 static int __init pika_dtm_start(void)
 {
        struct task_struct *dtm_thread;
        struct device_node *np;
-       struct resource res;
-       void __iomem *fpga;
 
        np = of_find_compatible_node(NULL, NULL, "pika,fpga");
        if (np == NULL)
                return -ENOENT;
 
-       /* We do not call of_iomap here since it would map in the entire
-        * fpga space, which is over 8k.
-        */
-       if (of_address_to_resource(np, 0, &res)) {
-               of_node_put(np);
-               return -ENOENT;
-       }
+       dtm_fpga = of_iomap(np, 0);
        of_node_put(np);
-
-       fpga = ioremap(res.start, 0x24);
-       if (fpga == NULL)
+       if (dtm_fpga == NULL)
                return -ENOENT;
 
-       dtm_thread = kthread_run(pika_dtm_thread, fpga + 0x20, "pika-dtm");
+       dtm_thread = kthread_run(pika_dtm_thread, dtm_fpga, "pika-dtm");
        if (IS_ERR(dtm_thread)) {
-               iounmap(fpga);
+               iounmap(dtm_fpga);
                return PTR_ERR(dtm_thread);
        }
 
        return 0;
 }
-device_initcall(pika_dtm_start);
+machine_late_initcall(warp, pika_dtm_start);
+
+#else /* !CONFIG_SENSORS_AD7414 */
+
+int pika_dtm_register_shutdown(void (*func)(void *arg), void *arg)
+{
+       return 0;
+}
+
+int pika_dtm_unregister_shutdown(void (*func)(void *arg), void *arg)
+{
+       return 0;
+}
+
 #endif
+
+EXPORT_SYMBOL(pika_dtm_register_shutdown);
+EXPORT_SYMBOL(pika_dtm_unregister_shutdown);
index 13587e2e8680cc29263bf10d485b5b034270ffc7..583b0c7409c99a6137227e68daacd80959e38338 100644 (file)
@@ -79,6 +79,15 @@ config SBC834x
        help
          This option enables support for the Wind River SBC834x board.
 
+config ASP834x
+       bool "Analogue & Micro ASP 834x"
+       select PPC_MPC834x
+       select REDBOOT
+       help
+         This enables support for the Analogue & Micro ASP 83xx
+         board.
+
+
 endif
 
 # used for usb
index 7e6dd3e259d83c5f5edb7a218c3dfdbb82f9b6c4..76494bed69ae27bd13e1c5d25dc62c43b42c8feb 100644 (file)
@@ -12,3 +12,4 @@ obj-$(CONFIG_MPC832x_MDS)     += mpc832x_mds.o
 obj-$(CONFIG_MPC837x_MDS)      += mpc837x_mds.o
 obj-$(CONFIG_SBC834x)          += sbc834x.o
 obj-$(CONFIG_MPC837x_RDB)      += mpc837x_rdb.o
+obj-$(CONFIG_ASP834x)          += asp834x.o
diff --git a/arch/powerpc/platforms/83xx/asp834x.c b/arch/powerpc/platforms/83xx/asp834x.c
new file mode 100644 (file)
index 0000000..bb30d67
--- /dev/null
@@ -0,0 +1,90 @@
+/*
+ * arch/powerpc/platforms/83xx/asp834x.c
+ *
+ * Analogue & Micro ASP8347 board specific routines
+ * clone of mpc834x_itx
+ *
+ * Copyright 2008 Codehermit
+ *
+ * Maintainer: Bryan O'Donoghue <bodonoghue@codhermit.ie>
+ *
+ * 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/pci.h>
+#include <linux/of_platform.h>
+
+#include <asm/time.h>
+#include <asm/ipic.h>
+#include <asm/udbg.h>
+
+#include "mpc83xx.h"
+
+/* ************************************************************************
+ *
+ * Setup the architecture
+ *
+ */
+static void __init asp834x_setup_arch(void)
+{
+       if (ppc_md.progress)
+               ppc_md.progress("asp834x_setup_arch()", 0);
+
+       mpc834x_usb_cfg();
+}
+
+static void __init asp834x_init_IRQ(void)
+{
+       struct device_node *np;
+
+       np = of_find_node_by_type(NULL, "ipic");
+       if (!np)
+               return;
+
+       ipic_init(np, 0);
+
+       of_node_put(np);
+
+       /* Initialize the default interrupt mapping priorities,
+        * in case the boot rom changed something on us.
+        */
+       ipic_set_default_priority();
+}
+
+static struct __initdata of_device_id asp8347_ids[] = {
+       { .type = "soc", },
+       { .compatible = "soc", },
+       { .compatible = "simple-bus", },
+       {},
+};
+
+static int __init asp8347_declare_of_platform_devices(void)
+{
+       of_platform_bus_probe(NULL, asp8347_ids, NULL);
+       return 0;
+}
+machine_device_initcall(asp834x, asp8347_declare_of_platform_devices);
+
+/*
+ * Called very early, MMU is off, device-tree isn't unflattened
+ */
+static int __init asp834x_probe(void)
+{
+       unsigned long root = of_get_flat_dt_root();
+       return of_flat_dt_is_compatible(root, "analogue-and-micro,asp8347e");
+}
+
+define_machine(asp834x) {
+       .name                   = "ASP8347E",
+       .probe                  = asp834x_probe,
+       .setup_arch             = asp834x_setup_arch,
+       .init_IRQ               = asp834x_init_IRQ,
+       .get_irq                = ipic_get_irq,
+       .restart                = mpc83xx_restart,
+       .time_init              = mpc83xx_time_init,
+       .calibrate_decr         = generic_calibrate_decr,
+       .progress               = udbg_progress,
+};
index dfd8b4ad9b2854835ad27b9fe794a60b20537a81..b010dc9dec65cf5bd455291c55007cac33d23673 100644 (file)
@@ -78,7 +78,8 @@ void __init mpc85xx_ds_pic_init(void)
        }
 
        mpic = mpic_alloc(np, r.start,
-                         MPIC_PRIMARY | MPIC_WANTS_RESET | MPIC_BIG_ENDIAN,
+                         MPIC_PRIMARY | MPIC_WANTS_RESET |
+                         MPIC_BIG_ENDIAN | MPIC_BROKEN_FRR_NIRQS,
                        0, 256, " OpenPIC  ");
        BUG_ON(mpic == NULL);
 
@@ -195,6 +196,7 @@ static int __init mpc85xxds_publish_devices(void)
        return of_platform_bus_probe(NULL, mpc85xxds_ids, NULL);
 }
 machine_device_initcall(mpc8544_ds, mpc85xxds_publish_devices);
+machine_device_initcall(mpc8572_ds, mpc85xxds_publish_devices);
 
 /*
  * Called very early, device-tree isn't unflattened
index dea13208bf64d618f787ad748115814995dcad4a..eb16208b29d99a68280e71be70e46b57b5057bae 100644 (file)
@@ -70,7 +70,8 @@ static void __init mpc86xx_hpcd_init_irq(void)
 
        /* Alloc mpic structure and per isu has 16 INT entries. */
        mpic1 = mpic_alloc(np, res.start,
-                       MPIC_PRIMARY | MPIC_WANTS_RESET | MPIC_BIG_ENDIAN,
+                       MPIC_PRIMARY | MPIC_WANTS_RESET |
+                       MPIC_BIG_ENDIAN | MPIC_BROKEN_FRR_NIRQS,
                        0, 256, " MPIC     ");
        BUG_ON(mpic1 == NULL);
 
index c39f5c225f2e6420b45fc8afd1bbc2a0c379fa8b..8b055bce27fe5d1f09ecb82a5d6a5ba011f18c67 100644 (file)
@@ -14,6 +14,7 @@
 #include <linux/pci.h>
 #include <linux/msi.h>
 #include <linux/of_platform.h>
+#include <linux/debugfs.h>
 
 #include <asm/dcr.h>
 #include <asm/machdep.h>
@@ -69,8 +70,19 @@ struct axon_msic {
        dma_addr_t fifo_phys;
        dcr_host_t dcr_host;
        u32 read_offset;
+#ifdef DEBUG
+       u32 __iomem *trigger;
+#endif
 };
 
+#ifdef DEBUG
+void axon_msi_debug_setup(struct device_node *dn, struct axon_msic *msic);
+#else
+static inline void axon_msi_debug_setup(struct device_node *dn,
+                                       struct axon_msic *msic) { }
+#endif
+
+
 static void msic_dcr_write(struct axon_msic *msic, unsigned int dcr_n, u32 val)
 {
        pr_debug("axon_msi: dcr_write(0x%x, 0x%x)\n", val, dcr_n);
@@ -381,6 +393,8 @@ static int axon_msi_probe(struct of_device *device,
        ppc_md.teardown_msi_irqs = axon_msi_teardown_msi_irqs;
        ppc_md.msi_check_device = axon_msi_check_device;
 
+       axon_msi_debug_setup(dn, msic);
+
        printk(KERN_DEBUG "axon_msi: setup MSIC on %s\n", dn->full_name);
 
        return 0;
@@ -418,3 +432,47 @@ static int __init axon_msi_init(void)
        return of_register_platform_driver(&axon_msi_driver);
 }
 subsys_initcall(axon_msi_init);
+
+
+#ifdef DEBUG
+static int msic_set(void *data, u64 val)
+{
+       struct axon_msic *msic = data;
+       out_le32(msic->trigger, val);
+       return 0;
+}
+
+static int msic_get(void *data, u64 *val)
+{
+       *val = 0;
+       return 0;
+}
+
+DEFINE_SIMPLE_ATTRIBUTE(fops_msic, msic_get, msic_set, "%llu\n");
+
+void axon_msi_debug_setup(struct device_node *dn, struct axon_msic *msic)
+{
+       char name[8];
+       u64 addr;
+
+       addr = of_translate_address(dn, of_get_property(dn, "reg", NULL));
+       if (addr == OF_BAD_ADDR) {
+               pr_debug("axon_msi: couldn't translate reg property\n");
+               return;
+       }
+
+       msic->trigger = ioremap(addr, 0x4);
+       if (!msic->trigger) {
+               pr_debug("axon_msi: ioremap failed\n");
+               return;
+       }
+
+       snprintf(name, sizeof(name), "msic_%d", of_node_to_nid(dn));
+
+       if (!debugfs_create_file(name, 0600, powerpc_debugfs_root,
+                                msic, &fops_msic)) {
+               pr_debug("axon_msi: debugfs_create_file failed!\n");
+               return;
+       }
+}
+#endif /* DEBUG */
index 116babbaaf81f6ea77c6e405da8b71699f187bfd..1ba7ce5aafaed24ef6cae57e36dcd21d454c1d94 100644 (file)
@@ -63,13 +63,6 @@ static struct mpic *chrp_mpic;
 DEFINE_PER_CPU(struct timer_list, heartbeat_timer);
 unsigned long event_scan_interval;
 
-/*
- * XXX this should be in xmon.h, but putting it there means xmon.h
- * has to include <linux/interrupt.h> (to get irqreturn_t), which
- * causes all sorts of problems.  -- paulus
- */
-extern irqreturn_t xmon_irq(int, void *);
-
 extern unsigned long loops_per_jiffy;
 
 /* To be replaced by RTAS when available */
index 9f7579b38c72db2f5df5d80af6a493bbba80371e..53bca132fb484d413aa27020a8596f58a9409cf6 100644 (file)
@@ -41,8 +41,6 @@
 #define DBG(x...)
 #endif
 
-extern void GregorianDay(struct rtc_time * tm);
-
 static int maple_rtc_addr;
 
 static int maple_clock_read(int addr)
index 829b8b02527bfb4f5d2a388256687ee10a2847a0..6d149ae8ffa71c02928e3bdf52d9b6573e65283b 100644 (file)
 #include <asm/time.h>
 #include <asm/pmac_feature.h>
 #include <asm/mpic.h>
+#include <asm/xmon.h>
 
 #include "pmac.h"
 
-/*
- * XXX this should be in xmon.h, but putting it there means xmon.h
- * has to include <linux/interrupt.h> (to get irqreturn_t), which
- * causes all sorts of problems.  -- paulus
- */
-extern irqreturn_t xmon_irq(int, void *);
-
 #ifdef CONFIG_PPC32
 struct pmac_irq_hw {
         unsigned int    event;
index 9d3a40f459747c2ab8077a21a23cb794893f9652..5a707da3f5c2b037aec5654133c90dd82dba4e30 100644 (file)
@@ -26,6 +26,7 @@
 #include <asm/prom.h>
 #include <asm/udbg.h>
 
+#include "pseries.h"
 
 typedef struct {
     unsigned long val;
index 176f1f39d2d5c2f25416a651c58f2d82e267d19a..9a12908510fbaaefbb92ab2e73489b9b49f86376 100644 (file)
@@ -135,9 +135,10 @@ static void tce_buildmulti_pSeriesLP(struct iommu_table *tbl, long tcenum,
        u64 rpn;
        long l, limit;
 
-       if (npages == 1)
-               return tce_build_pSeriesLP(tbl, tcenum, npages, uaddr,
-                                          direction);
+       if (npages == 1) {
+               tce_build_pSeriesLP(tbl, tcenum, npages, uaddr, direction);
+               return;
+       }
 
        tcep = __get_cpu_var(tce_page);
 
@@ -147,9 +148,11 @@ static void tce_buildmulti_pSeriesLP(struct iommu_table *tbl, long tcenum,
        if (!tcep) {
                tcep = (u64 *)__get_free_page(GFP_ATOMIC);
                /* If allocation fails, fall back to the loop implementation */
-               if (!tcep)
-                       return tce_build_pSeriesLP(tbl, tcenum, npages,
-                                                  uaddr, direction);
+               if (!tcep) {
+                       tce_build_pSeriesLP(tbl, tcenum, npages, uaddr,
+                                           direction);
+                       return;
+               }
                __get_cpu_var(tce_page) = tcep;
        }
 
index 2cbaedb17f3ebc2396c23154153d4abf8c8badc1..3b4651b6ee0559c9d15f54cb86a816801aa8486f 100644 (file)
@@ -52,7 +52,7 @@ EXPORT_SYMBOL(plpar_hcall_norets);
 extern void pSeries_find_serial_port(void);
 
 
-int vtermno;   /* virtual terminal# for udbg  */
+static int vtermno;    /* virtual terminal# for udbg  */
 
 #define __ALIGNED__ __attribute__((__aligned__(sizeof(long))))
 static void udbg_hvsi_putc(char c)
index 2b548afd10031166166d77f58ae9939be0a6ae1a..d20b96e22c2ed763aa583cd2e387b29b1927f146 100644 (file)
@@ -55,7 +55,7 @@
 static unsigned char ras_log_buf[RTAS_ERROR_LOG_MAX];
 static DEFINE_SPINLOCK(ras_log_buf_lock);
 
-char mce_data_buf[RTAS_ERROR_LOG_MAX];
+static char mce_data_buf[RTAS_ERROR_LOG_MAX];
 
 static int ras_get_sensor_state_token;
 static int ras_check_exception_token;
index 7d3e2b0bd4d299d5f467fde2a014dec0fb835fdb..c9ffd8c225f1a7b1b2e852bf86899bd8d785e3b4 100644 (file)
@@ -32,7 +32,7 @@
 
 static DEFINE_SPINLOCK(rtasd_log_lock);
 
-DECLARE_WAIT_QUEUE_HEAD(rtas_log_wait);
+static DECLARE_WAIT_QUEUE_HEAD(rtas_log_wait);
 
 static char *rtas_log_buf;
 static unsigned long rtas_log_start;
@@ -329,7 +329,7 @@ static unsigned int rtas_log_poll(struct file *file, poll_table * wait)
        return 0;
 }
 
-const struct file_operations proc_rtas_log_operations = {
+static const struct file_operations proc_rtas_log_operations = {
        .read =         rtas_log_read,
        .poll =         rtas_log_poll,
        .open =         rtas_log_open,
index f5d29f5b13c1b0afb1ec3f67e3fb9eabd6c4a2f2..90beb444e1dd670f64836fdceff20c247b79ed07 100644 (file)
@@ -109,7 +109,7 @@ static void __init fwnmi_init(void)
                fwnmi_active = 1;
 }
 
-void pseries_8259_cascade(unsigned int irq, struct irq_desc *desc)
+static void pseries_8259_cascade(unsigned int irq, struct irq_desc *desc)
 {
        unsigned int cascade_irq = i8259_irq();
        if (cascade_irq != NO_IRQ)
@@ -482,7 +482,7 @@ static int pSeries_pci_probe_mode(struct pci_bus *bus)
  * possible with power button press. If ibm,power-off-ups token is used
  * it will allow auto poweron after power is restored.
  */
-void pSeries_power_off(void)
+static void pSeries_power_off(void)
 {
        int rc;
        int rtas_poweroff_ups_token = rtas_token("ibm,power-off-ups");
diff --git a/arch/powerpc/sysdev/6xx-suspend.S b/arch/powerpc/sysdev/6xx-suspend.S
new file mode 100644 (file)
index 0000000..21cda08
--- /dev/null
@@ -0,0 +1,52 @@
+/*
+ * Enter and leave sleep state on chips with 6xx-style HID0
+ * power management bits, which don't leave sleep state via reset.
+ *
+ * Author: Scott Wood <scottwood@freescale.com>
+ *
+ * Copyright (c) 2006-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 <asm/ppc_asm.h>
+#include <asm/reg.h>
+#include <asm/thread_info.h>
+#include <asm/asm-offsets.h>
+
+_GLOBAL(mpc6xx_enter_standby)
+       mflr    r4
+
+       mfspr   r5, SPRN_HID0
+       rlwinm  r5, r5, 0, ~(HID0_DOZE | HID0_NAP)
+       oris    r5, r5, HID0_SLEEP@h
+       mtspr   SPRN_HID0, r5
+       isync
+
+       lis     r5, ret_from_standby@h
+       ori     r5, r5, ret_from_standby@l
+       mtlr    r5
+
+       rlwinm  r5, r1, 0, 0, 31-THREAD_SHIFT
+       lwz     r6, TI_LOCAL_FLAGS(r5)
+       ori     r6, r6, _TLF_SLEEPING
+       stw     r6, TI_LOCAL_FLAGS(r5)
+
+       mfmsr   r5
+       ori     r5, r5, MSR_EE
+       oris    r5, r5, MSR_POW@h
+       sync
+       mtmsr   r5
+       isync
+
+1:     b       1b
+
+ret_from_standby:
+       mfspr   r5, SPRN_HID0
+       rlwinm  r5, r5, 0, ~HID0_SLEEP
+       mtspr   SPRN_HID0, r5
+
+       mtlr    r4
+       blr
index 6d386d0071a07e5bb59571d57b8a46e9793ae3ed..dd6dff3ffb0fc2a3d1dbfae00f9afed7dd25b91b 100644 (file)
@@ -4,6 +4,7 @@ endif
 
 mpic-msi-obj-$(CONFIG_PCI_MSI) += mpic_msi.o mpic_u3msi.o mpic_pasemi_msi.o
 obj-$(CONFIG_MPIC)             += mpic.o $(mpic-msi-obj-y)
+fsl-msi-obj-$(CONFIG_PCI_MSI)  += fsl_msi.o
 
 obj-$(CONFIG_PPC_MPC106)       += grackle.o
 obj-$(CONFIG_PPC_DCR_NATIVE)   += dcr-low.o
@@ -11,7 +12,7 @@ obj-$(CONFIG_PPC_PMI)         += pmi.o
 obj-$(CONFIG_U3_DART)          += dart_iommu.o
 obj-$(CONFIG_MMIO_NVRAM)       += mmio_nvram.o
 obj-$(CONFIG_FSL_SOC)          += fsl_soc.o
-obj-$(CONFIG_FSL_PCI)          += fsl_pci.o
+obj-$(CONFIG_FSL_PCI)          += fsl_pci.o $(fsl-msi-obj-y)
 obj-$(CONFIG_FSL_LBC)          += fsl_lbc.o
 obj-$(CONFIG_RAPIDIO)          += fsl_rio.o
 obj-$(CONFIG_TSI108_BRIDGE)    += tsi108_pci.o tsi108_dev.o
@@ -44,3 +45,7 @@ obj-$(CONFIG_PPC_DCR)         += dcr.o
 obj-$(CONFIG_8xx)              += mpc8xx_pic.o cpm1.o
 obj-$(CONFIG_UCODE_PATCH)      += micropatch.o
 endif
+
+ifeq ($(CONFIG_SUSPEND),y)
+obj-$(CONFIG_6xx)              += 6xx-suspend.o
+endif
index 437e48d3ae3340d5817c10f20d2a6dfc8276daeb..a8ba9983dd5a8ab0ccc8e04bd82816796e02282b 100644 (file)
 #include <asm/prom.h>
 #include <asm/dcr.h>
 
+#ifdef CONFIG_PPC_DCR_MMIO
+static struct device_node *find_dcr_parent(struct device_node *node)
+{
+       struct device_node *par, *tmp;
+       const u32 *p;
+
+       for (par = of_node_get(node); par;) {
+               if (of_get_property(par, "dcr-controller", NULL))
+                       break;
+               p = of_get_property(par, "dcr-parent", NULL);
+               tmp = par;
+               if (p == NULL)
+                       par = of_get_parent(par);
+               else
+                       par = of_find_node_by_phandle(*p);
+               of_node_put(tmp);
+       }
+       return par;
+}
+#endif
+
+#if defined(CONFIG_PPC_DCR_NATIVE) && defined(CONFIG_PPC_DCR_MMIO)
+
+bool dcr_map_ok_generic(dcr_host_t host)
+{
+       if (host.type == DCR_HOST_NATIVE)
+               return dcr_map_ok_native(host.host.native);
+       else if (host.type == DCR_HOST_MMIO)
+               return dcr_map_ok_mmio(host.host.mmio);
+       else
+               return 0;
+}
+EXPORT_SYMBOL_GPL(dcr_map_ok_generic);
+
+dcr_host_t dcr_map_generic(struct device_node *dev,
+                          unsigned int dcr_n,
+                          unsigned int dcr_c)
+{
+       dcr_host_t host;
+       struct device_node *dp;
+       const char *prop;
+
+       host.type = DCR_HOST_INVALID;
+
+       dp = find_dcr_parent(dev);
+       if (dp == NULL)
+               return host;
+
+       prop = of_get_property(dp, "dcr-access-method", NULL);
+
+       pr_debug("dcr_map_generic(dcr-access-method = %s)\n", prop);
+
+       if (!strcmp(prop, "native")) {
+               host.type = DCR_HOST_NATIVE;
+               host.host.native = dcr_map_native(dev, dcr_n, dcr_c);
+       } else if (!strcmp(prop, "mmio")) {
+               host.type = DCR_HOST_MMIO;
+               host.host.mmio = dcr_map_mmio(dev, dcr_n, dcr_c);
+       }
+
+       of_node_put(dp);
+       return host;
+}
+EXPORT_SYMBOL_GPL(dcr_map_generic);
+
+void dcr_unmap_generic(dcr_host_t host, unsigned int dcr_c)
+{
+       if (host.type == DCR_HOST_NATIVE)
+               dcr_unmap_native(host.host.native, dcr_c);
+       else if (host.type == DCR_HOST_MMIO)
+               dcr_unmap_mmio(host.host.mmio, dcr_c);
+       else /* host.type == DCR_HOST_INVALID */
+               WARN_ON(true);
+}
+EXPORT_SYMBOL_GPL(dcr_unmap_generic);
+
+u32 dcr_read_generic(dcr_host_t host, unsigned int dcr_n)
+{
+       if (host.type == DCR_HOST_NATIVE)
+               return dcr_read_native(host.host.native, dcr_n);
+       else if (host.type == DCR_HOST_MMIO)
+               return dcr_read_mmio(host.host.mmio, dcr_n);
+       else /* host.type == DCR_HOST_INVALID */
+               WARN_ON(true);
+       return 0;
+}
+EXPORT_SYMBOL_GPL(dcr_read_generic);
+
+void dcr_write_generic(dcr_host_t host, unsigned int dcr_n, u32 value)
+{
+       if (host.type == DCR_HOST_NATIVE)
+               dcr_write_native(host.host.native, dcr_n, value);
+       else if (host.type == DCR_HOST_MMIO)
+               dcr_write_mmio(host.host.mmio, dcr_n, value);
+       else /* host.type == DCR_HOST_INVALID */
+               WARN_ON(true);
+}
+EXPORT_SYMBOL_GPL(dcr_write_generic);
+
+#endif /* defined(CONFIG_PPC_DCR_NATIVE) && defined(CONFIG_PPC_DCR_MMIO) */
+
 unsigned int dcr_resource_start(struct device_node *np, unsigned int index)
 {
        unsigned int ds;
@@ -47,26 +148,7 @@ unsigned int dcr_resource_len(struct device_node *np, unsigned int index)
 }
 EXPORT_SYMBOL_GPL(dcr_resource_len);
 
-#ifndef CONFIG_PPC_DCR_NATIVE
-
-static struct device_node * find_dcr_parent(struct device_node * node)
-{
-       struct device_node *par, *tmp;
-       const u32 *p;
-
-       for (par = of_node_get(node); par;) {
-               if (of_get_property(par, "dcr-controller", NULL))
-                       break;
-               p = of_get_property(par, "dcr-parent", NULL);
-               tmp = par;
-               if (p == NULL)
-                       par = of_get_parent(par);
-               else
-                       par = of_find_node_by_phandle(*p);
-               of_node_put(tmp);
-       }
-       return par;
-}
+#ifdef CONFIG_PPC_DCR_MMIO
 
 u64 of_translate_dcr_address(struct device_node *dev,
                             unsigned int dcr_n,
@@ -75,7 +157,7 @@ u64 of_translate_dcr_address(struct device_node *dev,
        struct device_node *dp;
        const u32 *p;
        unsigned int stride;
-       u64 ret;
+       u64 ret = OF_BAD_ADDR;
 
        dp = find_dcr_parent(dev);
        if (dp == NULL)
@@ -90,7 +172,7 @@ u64 of_translate_dcr_address(struct device_node *dev,
        if (p == NULL)
                p = of_get_property(dp, "dcr-mmio-space", NULL);
        if (p == NULL)
-               return OF_BAD_ADDR;
+               goto done;
 
        /* Maybe could do some better range checking here */
        ret = of_translate_address(dp, p);
@@ -98,21 +180,25 @@ u64 of_translate_dcr_address(struct device_node *dev,
                ret += (u64)(stride) * (u64)dcr_n;
        if (out_stride)
                *out_stride = stride;
+
+ done:
+       of_node_put(dp);
        return ret;
 }
 
-dcr_host_t dcr_map(struct device_node *dev, unsigned int dcr_n,
-                  unsigned int dcr_c)
+dcr_host_mmio_t dcr_map_mmio(struct device_node *dev,
+                            unsigned int dcr_n,
+                            unsigned int dcr_c)
 {
-       dcr_host_t ret = { .token = NULL, .stride = 0, .base = dcr_n };
+       dcr_host_mmio_t ret = { .token = NULL, .stride = 0, .base = dcr_n };
        u64 addr;
 
        pr_debug("dcr_map(%s, 0x%x, 0x%x)\n",
                 dev->full_name, dcr_n, dcr_c);
 
        addr = of_translate_dcr_address(dev, dcr_n, &ret.stride);
-       pr_debug("translates to addr: 0x%lx, stride: 0x%x\n",
-                addr, ret.stride);
+       pr_debug("translates to addr: 0x%llx, stride: 0x%x\n",
+                (unsigned long long) addr, ret.stride);
        if (addr == OF_BAD_ADDR)
                return ret;
        pr_debug("mapping 0x%x bytes\n", dcr_c * ret.stride);
@@ -124,11 +210,11 @@ dcr_host_t dcr_map(struct device_node *dev, unsigned int dcr_n,
        ret.token -= dcr_n * ret.stride;
        return ret;
 }
-EXPORT_SYMBOL_GPL(dcr_map);
+EXPORT_SYMBOL_GPL(dcr_map_mmio);
 
-void dcr_unmap(dcr_host_t host, unsigned int dcr_c)
+void dcr_unmap_mmio(dcr_host_mmio_t host, unsigned int dcr_c)
 {
-       dcr_host_t h = host;
+       dcr_host_mmio_t h = host;
 
        if (h.token == NULL)
                return;
@@ -136,7 +222,11 @@ void dcr_unmap(dcr_host_t host, unsigned int dcr_c)
        iounmap(h.token);
        h.token = NULL;
 }
-EXPORT_SYMBOL_GPL(dcr_unmap);
-#else  /* defined(CONFIG_PPC_DCR_NATIVE) */
+EXPORT_SYMBOL_GPL(dcr_unmap_mmio);
+
+#endif /* defined(CONFIG_PPC_DCR_MMIO) */
+
+#ifdef CONFIG_PPC_DCR_NATIVE
 DEFINE_SPINLOCK(dcr_ind_lock);
-#endif /* !defined(CONFIG_PPC_DCR_NATIVE) */
+#endif /* defined(CONFIG_PPC_DCR_NATIVE) */
+
diff --git a/arch/powerpc/sysdev/fsl_msi.c b/arch/powerpc/sysdev/fsl_msi.c
new file mode 100644 (file)
index 0000000..2c5187c
--- /dev/null
@@ -0,0 +1,429 @@
+/*
+ * Copyright (C) 2007-2008 Freescale Semiconductor, Inc. All rights reserved.
+ *
+ * Author: Tony Li <tony.li@freescale.com>
+ *        Jason Jin <Jason.jin@freescale.com>
+ *
+ * The hwirq alloc and free code reuse from sysdev/mpic_msi.c
+ *
+ * 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; version 2 of the
+ * License.
+ *
+ */
+#include <linux/irq.h>
+#include <linux/bootmem.h>
+#include <linux/bitmap.h>
+#include <linux/msi.h>
+#include <linux/pci.h>
+#include <linux/of_platform.h>
+#include <sysdev/fsl_soc.h>
+#include <asm/prom.h>
+#include <asm/hw_irq.h>
+#include <asm/ppc-pci.h>
+#include "fsl_msi.h"
+
+struct fsl_msi_feature {
+       u32 fsl_pic_ip;
+       u32 msiir_offset;
+};
+
+static struct fsl_msi *fsl_msi;
+
+static inline u32 fsl_msi_read(u32 __iomem *base, unsigned int reg)
+{
+       return in_be32(base + (reg >> 2));
+}
+
+/*
+ * We do not need this actually. The MSIR register has been read once
+ * in the cascade interrupt. So, this MSI interrupt has been acked
+*/
+static void fsl_msi_end_irq(unsigned int virq)
+{
+}
+
+static struct irq_chip fsl_msi_chip = {
+       .mask           = mask_msi_irq,
+       .unmask         = unmask_msi_irq,
+       .ack            = fsl_msi_end_irq,
+       .typename       = " FSL-MSI  ",
+};
+
+static int fsl_msi_host_map(struct irq_host *h, unsigned int virq,
+                               irq_hw_number_t hw)
+{
+       struct irq_chip *chip = &fsl_msi_chip;
+
+       get_irq_desc(virq)->status |= IRQ_TYPE_EDGE_FALLING;
+
+       set_irq_chip_and_handler(virq, chip, handle_edge_irq);
+
+       return 0;
+}
+
+static struct irq_host_ops fsl_msi_host_ops = {
+       .map = fsl_msi_host_map,
+};
+
+static irq_hw_number_t fsl_msi_alloc_hwirqs(struct fsl_msi *msi, int num)
+{
+       unsigned long flags;
+       int order = get_count_order(num);
+       int offset;
+
+       spin_lock_irqsave(&msi->bitmap_lock, flags);
+
+       offset = bitmap_find_free_region(msi->fsl_msi_bitmap,
+                                       NR_MSI_IRQS, order);
+
+       spin_unlock_irqrestore(&msi->bitmap_lock, flags);
+
+       pr_debug("%s: allocated 0x%x (2^%d) at offset 0x%x\n",
+               __func__, num, order, offset);
+
+       return offset;
+}
+
+static void fsl_msi_free_hwirqs(struct fsl_msi *msi, int offset, int num)
+{
+       unsigned long flags;
+       int order = get_count_order(num);
+
+       pr_debug("%s: freeing 0x%x (2^%d) at offset 0x%x\n",
+               __func__, num, order, offset);
+
+       spin_lock_irqsave(&msi->bitmap_lock, flags);
+       bitmap_release_region(msi->fsl_msi_bitmap, offset, order);
+       spin_unlock_irqrestore(&msi->bitmap_lock, flags);
+}
+
+static int fsl_msi_free_dt_hwirqs(struct fsl_msi *msi)
+{
+       int i;
+       int len;
+       const u32 *p;
+
+       bitmap_allocate_region(msi->fsl_msi_bitmap, 0,
+                      get_count_order(NR_MSI_IRQS));
+
+       p = of_get_property(msi->of_node, "msi-available-ranges", &len);
+
+       if (!p) {
+               /* No msi-available-ranges property,
+                * All the 256 MSI interrupts can be used
+                */
+               fsl_msi_free_hwirqs(msi, 0, 0x100);
+               return 0;
+       }
+
+       if ((len % (2 * sizeof(u32))) != 0) {
+               printk(KERN_WARNING "fsl_msi: Malformed msi-available-ranges "
+                      "property on %s\n", msi->of_node->full_name);
+               return -EINVAL;
+       }
+
+       /* Format is: (<u32 start> <u32 count>)+ */
+       len /= 2 * sizeof(u32);
+       for (i = 0; i < len; i++, p += 2)
+               fsl_msi_free_hwirqs(msi, *p, *(p + 1));
+
+       return 0;
+}
+
+static int fsl_msi_init_allocator(struct fsl_msi *msi_data)
+{
+       int rc;
+       int size = BITS_TO_LONGS(NR_MSI_IRQS) * sizeof(u32);
+
+       msi_data->fsl_msi_bitmap = kzalloc(size, GFP_KERNEL);
+
+       if (msi_data->fsl_msi_bitmap == NULL) {
+               pr_debug("%s: ENOMEM allocating allocator bitmap!\n",
+                               __func__);
+               return -ENOMEM;
+       }
+
+       rc = fsl_msi_free_dt_hwirqs(msi_data);
+       if (rc)
+               goto out_free;
+
+       return 0;
+out_free:
+       kfree(msi_data->fsl_msi_bitmap);
+
+       msi_data->fsl_msi_bitmap = NULL;
+       return rc;
+
+}
+
+static int fsl_msi_check_device(struct pci_dev *pdev, int nvec, int type)
+{
+       if (type == PCI_CAP_ID_MSIX)
+               pr_debug("fslmsi: MSI-X untested, trying anyway.\n");
+
+       return 0;
+}
+
+static void fsl_teardown_msi_irqs(struct pci_dev *pdev)
+{
+       struct msi_desc *entry;
+       struct fsl_msi *msi_data = fsl_msi;
+
+       list_for_each_entry(entry, &pdev->msi_list, list) {
+               if (entry->irq == NO_IRQ)
+                       continue;
+               set_irq_msi(entry->irq, NULL);
+               fsl_msi_free_hwirqs(msi_data, virq_to_hw(entry->irq), 1);
+               irq_dispose_mapping(entry->irq);
+       }
+
+       return;
+}
+
+static void fsl_compose_msi_msg(struct pci_dev *pdev, int hwirq,
+                                 struct msi_msg *msg)
+{
+       struct fsl_msi *msi_data = fsl_msi;
+
+       msg->address_lo = msi_data->msi_addr_lo;
+       msg->address_hi = msi_data->msi_addr_hi;
+       msg->data = hwirq;
+
+       pr_debug("%s: allocated srs: %d, ibs: %d\n",
+               __func__, hwirq / IRQS_PER_MSI_REG, hwirq % IRQS_PER_MSI_REG);
+}
+
+static int fsl_setup_msi_irqs(struct pci_dev *pdev, int nvec, int type)
+{
+       irq_hw_number_t hwirq;
+       int rc;
+       unsigned int virq;
+       struct msi_desc *entry;
+       struct msi_msg msg;
+       struct fsl_msi *msi_data = fsl_msi;
+
+       list_for_each_entry(entry, &pdev->msi_list, list) {
+               hwirq = fsl_msi_alloc_hwirqs(msi_data, 1);
+               if (hwirq < 0) {
+                       rc = hwirq;
+                       pr_debug("%s: fail allocating msi interrupt\n",
+                                       __func__);
+                       goto out_free;
+               }
+
+               virq = irq_create_mapping(msi_data->irqhost, hwirq);
+
+               if (virq == NO_IRQ) {
+                       pr_debug("%s: fail mapping hwirq 0x%lx\n",
+                                       __func__, hwirq);
+                       fsl_msi_free_hwirqs(msi_data, hwirq, 1);
+                       rc = -ENOSPC;
+                       goto out_free;
+               }
+               set_irq_msi(virq, entry);
+
+               fsl_compose_msi_msg(pdev, hwirq, &msg);
+               write_msi_msg(virq, &msg);
+       }
+       return 0;
+
+out_free:
+       return rc;
+}
+
+static void fsl_msi_cascade(unsigned int irq, struct irq_desc *desc)
+{
+       unsigned int cascade_irq;
+       struct fsl_msi *msi_data = fsl_msi;
+       int msir_index = -1;
+       u32 msir_value = 0;
+       u32 intr_index;
+       u32 have_shift = 0;
+
+       spin_lock(&desc->lock);
+       if ((msi_data->feature &  FSL_PIC_IP_MASK) == FSL_PIC_IP_IPIC) {
+               if (desc->chip->mask_ack)
+                       desc->chip->mask_ack(irq);
+               else {
+                       desc->chip->mask(irq);
+                       desc->chip->ack(irq);
+               }
+       }
+
+       if (unlikely(desc->status & IRQ_INPROGRESS))
+               goto unlock;
+
+       msir_index = (int)desc->handler_data;
+
+       if (msir_index >= NR_MSI_REG)
+               cascade_irq = NO_IRQ;
+
+       desc->status |= IRQ_INPROGRESS;
+       switch (fsl_msi->feature & FSL_PIC_IP_MASK) {
+       case FSL_PIC_IP_MPIC:
+               msir_value = fsl_msi_read(msi_data->msi_regs,
+                       msir_index * 0x10);
+               break;
+       case FSL_PIC_IP_IPIC:
+               msir_value = fsl_msi_read(msi_data->msi_regs, msir_index * 0x4);
+               break;
+       }
+
+       while (msir_value) {
+               intr_index = ffs(msir_value) - 1;
+
+               cascade_irq = irq_linear_revmap(msi_data->irqhost,
+                               msir_index * IRQS_PER_MSI_REG +
+                                       intr_index + have_shift);
+               if (cascade_irq != NO_IRQ)
+                       generic_handle_irq(cascade_irq);
+               have_shift += intr_index + 1;
+               msir_value = msir_value >> (intr_index + 1);
+       }
+       desc->status &= ~IRQ_INPROGRESS;
+
+       switch (msi_data->feature & FSL_PIC_IP_MASK) {
+       case FSL_PIC_IP_MPIC:
+               desc->chip->eoi(irq);
+               break;
+       case FSL_PIC_IP_IPIC:
+               if (!(desc->status & IRQ_DISABLED) && desc->chip->unmask)
+                       desc->chip->unmask(irq);
+               break;
+       }
+unlock:
+       spin_unlock(&desc->lock);
+}
+
+static int __devinit fsl_of_msi_probe(struct of_device *dev,
+                               const struct of_device_id *match)
+{
+       struct fsl_msi *msi;
+       struct resource res;
+       int err, i, count;
+       int rc;
+       int virt_msir;
+       const u32 *p;
+       struct fsl_msi_feature *features = match->data;
+
+       printk(KERN_DEBUG "Setting up Freescale MSI support\n");
+
+       msi = kzalloc(sizeof(struct fsl_msi), GFP_KERNEL);
+       if (!msi) {
+               dev_err(&dev->dev, "No memory for MSI structure\n");
+               err = -ENOMEM;
+               goto error_out;
+       }
+
+       msi->of_node = of_node_get(dev->node);
+
+       msi->irqhost = irq_alloc_host(of_node_get(dev->node),
+                               IRQ_HOST_MAP_LINEAR,
+                               NR_MSI_IRQS, &fsl_msi_host_ops, 0);
+       if (msi->irqhost == NULL) {
+               dev_err(&dev->dev, "No memory for MSI irqhost\n");
+               of_node_put(dev->node);
+               err = -ENOMEM;
+               goto error_out;
+       }
+
+       /* Get the MSI reg base */
+       err = of_address_to_resource(dev->node, 0, &res);
+       if (err) {
+               dev_err(&dev->dev, "%s resource error!\n",
+                               dev->node->full_name);
+               goto error_out;
+       }
+
+       msi->msi_regs = ioremap(res.start, res.end - res.start + 1);
+       if (!msi->msi_regs) {
+               dev_err(&dev->dev, "ioremap problem failed\n");
+               goto error_out;
+       }
+
+       msi->feature = features->fsl_pic_ip;
+
+       msi->irqhost->host_data = msi;
+
+       msi->msi_addr_hi = 0x0;
+       msi->msi_addr_lo = res.start + features->msiir_offset;
+
+       rc = fsl_msi_init_allocator(msi);
+       if (rc) {
+               dev_err(&dev->dev, "Error allocating MSI bitmap\n");
+               goto error_out;
+       }
+
+       p = of_get_property(dev->node, "interrupts", &count);
+       if (!p) {
+               dev_err(&dev->dev, "no interrupts property found on %s\n",
+                               dev->node->full_name);
+               err = -ENODEV;
+               goto error_out;
+       }
+       if (count % 8 != 0) {
+               dev_err(&dev->dev, "Malformed interrupts property on %s\n",
+                               dev->node->full_name);
+               err = -EINVAL;
+               goto error_out;
+       }
+
+       count /= sizeof(u32);
+       for (i = 0; i < count / 2; i++) {
+               if (i > NR_MSI_REG)
+                       break;
+               virt_msir = irq_of_parse_and_map(dev->node, i);
+               if (virt_msir != NO_IRQ) {
+                       set_irq_data(virt_msir, (void *)i);
+                       set_irq_chained_handler(virt_msir, fsl_msi_cascade);
+               }
+       }
+
+       fsl_msi = msi;
+
+       WARN_ON(ppc_md.setup_msi_irqs);
+       ppc_md.setup_msi_irqs = fsl_setup_msi_irqs;
+       ppc_md.teardown_msi_irqs = fsl_teardown_msi_irqs;
+       ppc_md.msi_check_device = fsl_msi_check_device;
+       return 0;
+error_out:
+       kfree(msi);
+       return err;
+}
+
+static const struct fsl_msi_feature mpic_msi_feature = {
+       .fsl_pic_ip = FSL_PIC_IP_MPIC,
+       .msiir_offset = 0x140,
+};
+
+static const struct fsl_msi_feature ipic_msi_feature = {
+       .fsl_pic_ip = FSL_PIC_IP_IPIC,
+       .msiir_offset = 0x38,
+};
+
+static const struct of_device_id fsl_of_msi_ids[] = {
+       {
+               .compatible = "fsl,mpic-msi",
+               .data = (void *)&mpic_msi_feature,
+       },
+       {
+               .compatible = "fsl,ipic-msi",
+               .data = (void *)&ipic_msi_feature,
+       },
+       {}
+};
+
+static struct of_platform_driver fsl_of_msi_driver = {
+       .name = "fsl-msi",
+       .match_table = fsl_of_msi_ids,
+       .probe = fsl_of_msi_probe,
+};
+
+static __init int fsl_of_msi_init(void)
+{
+       return of_register_platform_driver(&fsl_of_msi_driver);
+}
+
+subsys_initcall(fsl_of_msi_init);
diff --git a/arch/powerpc/sysdev/fsl_msi.h b/arch/powerpc/sysdev/fsl_msi.h
new file mode 100644 (file)
index 0000000..a653468
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2007-2008 Freescale Semiconductor, Inc. All rights reserved.
+ *
+ * Author: Tony Li <tony.li@freescale.com>
+ *        Jason Jin <Jason.jin@freescale.com>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; version 2 of the
+ * License.
+ *
+ */
+#ifndef _POWERPC_SYSDEV_FSL_MSI_H
+#define _POWERPC_SYSDEV_FSL_MSI_H
+
+#define NR_MSI_REG             8
+#define IRQS_PER_MSI_REG       32
+#define NR_MSI_IRQS    (NR_MSI_REG * IRQS_PER_MSI_REG)
+
+#define FSL_PIC_IP_MASK        0x0000000F
+#define FSL_PIC_IP_MPIC        0x00000001
+#define FSL_PIC_IP_IPIC        0x00000002
+
+struct fsl_msi {
+       /* Device node of the MSI interrupt*/
+       struct device_node *of_node;
+
+       struct irq_host *irqhost;
+
+       unsigned long cascade_irq;
+
+       u32 msi_addr_lo;
+       u32 msi_addr_hi;
+       void __iomem *msi_regs;
+       u32 feature;
+
+       unsigned long *fsl_msi_bitmap;
+       spinlock_t bitmap_lock;
+};
+
+#endif /* _POWERPC_SYSDEV_FSL_MSI_H */
+
index bf13c2174a4eb306024246f6c33f5ed764c91e3c..489ca5a397b15237944cb868cc63fc8e9b4a205d 100644 (file)
@@ -106,6 +106,16 @@ void __init setup_pci_cmd(struct pci_controller *hose)
        }
 }
 
+static void __init setup_pci_pcsrbar(struct pci_controller *hose)
+{
+#ifdef CONFIG_PCI_MSI
+       phys_addr_t immr_base;
+
+       immr_base = get_immrbase();
+       early_write_config_dword(hose, 0, 0, PCI_BASE_ADDRESS_0, immr_base);
+#endif
+}
+
 static int fsl_pcie_bus_fixup;
 
 static void __init quirk_fsl_pcie_header(struct pci_dev *dev)
@@ -211,6 +221,8 @@ int __init fsl_add_bridge(struct device_node *dev, int is_primary)
        /* Setup PEX window registers */
        setup_pci_atmu(hose, &rsrc);
 
+       /* Setup PEXCSRBAR */
+       setup_pci_pcsrbar(hose);
        return 0;
 }
 
index 019657c110b6feb2745750827904189181ee6f46..ca54563d5c7ecc2bd769c8f30aab4760f5e273f5 100644 (file)
@@ -433,6 +433,7 @@ static struct i2c_driver_device i2c_devices[] __initdata = {
        {"dallas,ds1340",  "ds1340"},
        {"stm,m41t00",     "m41t00"},
        {"dallas,ds1374",  "ds1374"},
+       {"cirrus,cs4270",  "cs4270"},
 };
 
 static int __init of_find_i2c_driver(struct device_node *node,
@@ -448,6 +449,10 @@ static int __init of_find_i2c_driver(struct device_node *node,
                        return -ENOMEM;
                return 0;
        }
+
+       pr_warning("fsl_soc.c: unrecognized i2c node %s\n",
+               (const char *) of_get_property(node, "compatible", NULL));
+
        return -ENODEV;
 }
 
@@ -491,6 +496,8 @@ static int __init fsl_i2c_of_init(void)
                struct resource r[2];
                struct fsl_i2c_platform_data i2c_data;
                const unsigned char *flags = NULL;
+               int idx;
+               const u32 *iprop;
 
                memset(&r, 0, sizeof(r));
                memset(&i2c_data, 0, sizeof(i2c_data));
@@ -501,7 +508,10 @@ static int __init fsl_i2c_of_init(void)
 
                of_irq_to_resource(np, 0, &r[1]);
 
-               i2c_dev = platform_device_register_simple("fsl-i2c", i, r, 2);
+               iprop = of_get_property(np, "cell-index", NULL);
+               idx = iprop ? *iprop : i;
+
+               i2c_dev = platform_device_register_simple("fsl-i2c", idx, r, 2);
                if (IS_ERR(i2c_dev)) {
                        ret = PTR_ERR(i2c_dev);
                        goto err;
@@ -523,7 +533,8 @@ static int __init fsl_i2c_of_init(void)
                if (ret)
                        goto unreg;
 
-               of_register_i2c_devices(np, i++);
+               of_register_i2c_devices(np, idx);
+               i++;
        }
 
        return 0;
index 7680001676a6ee076627fbc214528750c098efc6..f99f81abbd5c7f4b1a0eafc6d0a99835ff2b8f20 100644 (file)
@@ -1144,9 +1144,12 @@ struct mpic * __init mpic_alloc(struct device_node *node,
        mpic->num_cpus = ((greg_feature & MPIC_GREG_FEATURE_LAST_CPU_MASK)
                          >> MPIC_GREG_FEATURE_LAST_CPU_SHIFT) + 1;
        if (isu_size == 0)
-               mpic->num_sources =
-                       ((greg_feature & MPIC_GREG_FEATURE_LAST_SRC_MASK)
-                        >> MPIC_GREG_FEATURE_LAST_SRC_SHIFT) + 1;
+               if (flags & MPIC_BROKEN_FRR_NIRQS)
+                       mpic->num_sources = mpic->irq_count;
+               else
+                       mpic->num_sources =
+                               ((greg_feature & MPIC_GREG_FEATURE_LAST_SRC_MASK)
+                                >> MPIC_GREG_FEATURE_LAST_SRC_SHIFT) + 1;
 
        /* Map the per-CPU registers */
        for (i = 0; i < mpic->num_cpus; i++) {
index d272a52ecd24ace9af35e8f3758e60165fed9c49..de3e5e8bc3241e297ed321b240fb95edaa4350e2 100644 (file)
@@ -16,6 +16,7 @@
 #include <asm/hw_irq.h>
 #include <asm/ppc-pci.h>
 
+#include <sysdev/mpic.h>
 
 static void __mpic_msi_reserve_hwirq(struct mpic *mpic, irq_hw_number_t hwirq)
 {
index 33cbfb22ce3e3d32abf75fe8241fe05862f418fe..68aff6076675a433fe1144c20eff86e85e4c37c1 100644 (file)
@@ -95,6 +95,7 @@ static int pasemi_msi_setup_msi_irqs(struct pci_dev *pdev, int nvec, int type)
        unsigned int virq;
        struct msi_desc *entry;
        struct msi_msg msg;
+       int ret;
 
        pr_debug("pasemi_msi_setup_msi_irqs, pdev %p nvec %d type %d\n",
                 pdev, nvec, type);
@@ -108,8 +109,9 @@ static int pasemi_msi_setup_msi_irqs(struct pci_dev *pdev, int nvec, int type)
                 * few MSIs for someone, but restrictions will apply to how the
                 * sources can be changed independently.
                 */
-               hwirq = mpic_msi_alloc_hwirqs(msi_mpic, ALLOC_CHUNK);
-               if (hwirq < 0) {
+               ret = mpic_msi_alloc_hwirqs(msi_mpic, ALLOC_CHUNK);
+               hwirq = ret;
+               if (ret < 0) {
                        pr_debug("pasemi_msi: failed allocating hwirq\n");
                        return hwirq;
                }
index 1d5a40899b74fac796ac814aad3d1a1c2c805a89..6e2f8686fdfc0471946b8344f75ed70c042150e3 100644 (file)
@@ -115,17 +115,19 @@ static int u3msi_setup_msi_irqs(struct pci_dev *pdev, int nvec, int type)
        struct msi_desc *entry;
        struct msi_msg msg;
        u64 addr;
+       int ret;
 
        addr = find_ht_magic_addr(pdev);
        msg.address_lo = addr & 0xFFFFFFFF;
        msg.address_hi = addr >> 32;
 
        list_for_each_entry(entry, &pdev->msi_list, list) {
-               hwirq = mpic_msi_alloc_hwirqs(msi_mpic, 1);
-               if (hwirq < 0) {
+               ret = mpic_msi_alloc_hwirqs(msi_mpic, 1);
+               if (ret < 0) {
                        pr_debug("u3msi: failed allocating hwirq\n");
-                       return hwirq;
+                       return ret;
                }
+               hwirq = ret;
 
                virq = irq_create_mapping(msi_mpic->irqhost, hwirq);
                if (virq == NO_IRQ) {
index a132e0de8ca5a056ac1f7803c7fe5925a037cf31..32e0ad0ebea8286af9b5b3b8cc1bd18ac1a42ed0 100644 (file)
@@ -15,6 +15,7 @@
 #include <linux/console.h>
 #include <linux/mv643xx.h>
 #include <linux/platform_device.h>
+#include <linux/of_platform.h>
 
 #include <asm/prom.h>
 
  * PowerPC of_platform_bus_type.  They support platform_bus_type instead.
  */
 
+static struct of_device_id __initdata of_mv64x60_devices[] = {
+       { .compatible = "marvell,mv64306-devctrl", },
+       {}
+};
+
 /*
  * Create MPSC platform devices
  */
@@ -484,6 +490,10 @@ static int __init mv64x60_device_setup(void)
                of_node_put(np);
        }
 
+       /* Now add every node that is on the device bus */
+       for_each_compatible_node(np, NULL, "marvell,mv64360")
+               of_platform_bus_probe(np, of_mv64x60_devices, NULL);
+
        return 0;
 }
 arch_initcall(mv64x60_device_setup);
index 1702de9395eeee96b02d686e20550dbc98b8d63d..6726da07c0650eb9ac1df0f4e96840466eba7915 100644 (file)
@@ -54,7 +54,7 @@
 #define skipbl xmon_skipbl
 
 #ifdef CONFIG_SMP
-cpumask_t cpus_in_xmon = CPU_MASK_NONE;
+static cpumask_t cpus_in_xmon = CPU_MASK_NONE;
 static unsigned long xmon_taken = 1;
 static int xmon_owner;
 static int xmon_gate;
@@ -154,7 +154,7 @@ static int do_spu_cmd(void);
 static void dump_tlb_44x(void);
 #endif
 
-int xmon_no_auto_backtrace;
+static int xmon_no_auto_backtrace;
 
 extern void xmon_enter(void);
 extern void xmon_leave(void);
@@ -327,6 +327,11 @@ static void release_output_lock(void)
 {
        xmon_speaker = 0;
 }
+
+int cpus_are_in_xmon(void)
+{
+       return !cpus_empty(cpus_in_xmon);
+}
 #endif
 
 static int xmon_core(struct pt_regs *regs, int fromipi)
@@ -593,7 +598,7 @@ static int xmon_iabr_match(struct pt_regs *regs)
 {
        if ((regs->msr & (MSR_IR|MSR_PR|MSR_SF)) != (MSR_IR|MSR_SF))
                return 0;
-       if (iabr == 0)
+       if (iabr == NULL)
                return 0;
        xmon_core(regs, 0);
        return 1;
@@ -1142,7 +1147,7 @@ bpt_cmds(void)
                } else {
                        /* assume a breakpoint address */
                        bp = at_breakpoint(a);
-                       if (bp == 0) {
+                       if (bp == NULL) {
                                printf("No breakpoint at %x\n", a);
                                break;
                        }
@@ -1370,7 +1375,7 @@ static void print_bug_trap(struct pt_regs *regs)
 #endif
 }
 
-void excprint(struct pt_regs *fp)
+static void excprint(struct pt_regs *fp)
 {
        unsigned long trap;
 
@@ -1408,7 +1413,7 @@ void excprint(struct pt_regs *fp)
                print_bug_trap(fp);
 }
 
-void prregs(struct pt_regs *fp)
+static void prregs(struct pt_regs *fp)
 {
        int n, trap;
        unsigned long base;
@@ -1463,7 +1468,7 @@ void prregs(struct pt_regs *fp)
                printf("dar = "REG"   dsisr = %.8lx\n", fp->dar, fp->dsisr);
 }
 
-void cacheflush(void)
+static void cacheflush(void)
 {
        int cmd;
        unsigned long nflush;
@@ -1495,7 +1500,7 @@ void cacheflush(void)
        catch_memory_errors = 0;
 }
 
-unsigned long
+static unsigned long
 read_spr(int n)
 {
        unsigned int instrs[2];
@@ -1533,7 +1538,7 @@ read_spr(int n)
        return ret;
 }
 
-void
+static void
 write_spr(int n, unsigned long val)
 {
        unsigned int instrs[2];
@@ -1571,7 +1576,7 @@ static unsigned long regno;
 extern char exc_prolog;
 extern char dec_exc;
 
-void super_regs(void)
+static void super_regs(void)
 {
        int cmd;
        unsigned long val;
@@ -1629,7 +1634,7 @@ void super_regs(void)
 /*
  * Stuff for reading and writing memory safely
  */
-int
+static int
 mread(unsigned long adrs, void *buf, int size)
 {
        volatile int n;
@@ -1666,7 +1671,7 @@ mread(unsigned long adrs, void *buf, int size)
        return n;
 }
 
-int
+static int
 mwrite(unsigned long adrs, void *buf, int size)
 {
        volatile int n;
@@ -1731,7 +1736,7 @@ static int handle_fault(struct pt_regs *regs)
 
 #define SWAP(a, b, t)  ((t) = (a), (a) = (b), (b) = (t))
 
-void
+static void
 byterev(unsigned char *val, int size)
 {
        int t;
@@ -1793,7 +1798,7 @@ static char *memex_subcmd_help_string =
     "  x        exit this mode\n"
     "";
 
-void
+static void
 memex(void)
 {
        int cmd, inc, i, nslash;
@@ -1944,7 +1949,7 @@ memex(void)
        }
 }
 
-int
+static int
 bsesc(void)
 {
        int c;
@@ -1984,7 +1989,7 @@ static void xmon_rawdump (unsigned long adrs, long ndump)
 #define isxdigit(c)    (('0' <= (c) && (c) <= '9') \
                         || ('a' <= (c) && (c) <= 'f') \
                         || ('A' <= (c) && (c) <= 'F'))
-void
+static void
 dump(void)
 {
        int c;
@@ -2022,7 +2027,7 @@ dump(void)
        }
 }
 
-void
+static void
 prdump(unsigned long adrs, long ndump)
 {
        long n, m, c, r, nr;
@@ -2066,7 +2071,7 @@ prdump(unsigned long adrs, long ndump)
 
 typedef int (*instruction_dump_func)(unsigned long inst, unsigned long addr);
 
-int
+static int
 generic_inst_dump(unsigned long adr, long count, int praddr,
                        instruction_dump_func dump_func)
 {
@@ -2104,7 +2109,7 @@ generic_inst_dump(unsigned long adr, long count, int praddr,
        return adr - first_adr;
 }
 
-int
+static int
 ppc_inst_dump(unsigned long adr, long count, int praddr)
 {
        return generic_inst_dump(adr, count, praddr, print_insn_powerpc);
@@ -2126,7 +2131,7 @@ static unsigned long mval;                /* byte value to set memory to */
 static unsigned long mcount;           /* # bytes to affect */
 static unsigned long mdiffs;           /* max # differences to print */
 
-void
+static void
 memops(int cmd)
 {
        scanhex((void *)&mdest);
@@ -2152,7 +2157,7 @@ memops(int cmd)
        }
 }
 
-void
+static void
 memdiffs(unsigned char *p1, unsigned char *p2, unsigned nb, unsigned maxpr)
 {
        unsigned n, prt;
@@ -2170,7 +2175,7 @@ memdiffs(unsigned char *p1, unsigned char *p2, unsigned nb, unsigned maxpr)
 static unsigned mend;
 static unsigned mask;
 
-void
+static void
 memlocate(void)
 {
        unsigned a, n;
@@ -2203,7 +2208,7 @@ memlocate(void)
 static unsigned long mskip = 0x1000;
 static unsigned long mlim = 0xffffffff;
 
-void
+static void
 memzcan(void)
 {
        unsigned char v;
@@ -2230,7 +2235,7 @@ memzcan(void)
                printf("%.8x\n", a - mskip);
 }
 
-void proccall(void)
+static void proccall(void)
 {
        unsigned long args[8];
        unsigned long ret;
@@ -2388,7 +2393,7 @@ scanhex(unsigned long *vp)
        return 1;
 }
 
-void
+static void
 scannl(void)
 {
        int c;
@@ -2399,7 +2404,7 @@ scannl(void)
                c = inchar();
 }
 
-int hexdigit(int c)
+static int hexdigit(int c)
 {
        if( '0' <= c && c <= '9' )
                return c - '0';
@@ -2430,13 +2435,13 @@ getstring(char *s, int size)
 static char line[256];
 static char *lineptr;
 
-void
+static void
 flush_input(void)
 {
        lineptr = NULL;
 }
 
-int
+static int
 inchar(void)
 {
        if (lineptr == NULL || *lineptr == 0) {
@@ -2449,7 +2454,7 @@ inchar(void)
        return *lineptr++;
 }
 
-void
+static void
 take_input(char *str)
 {
        lineptr = str;
@@ -2618,7 +2623,8 @@ static void dump_tlb_44x(void)
        }
 }
 #endif /* CONFIG_44x */
-void xmon_init(int enable)
+
+static void xmon_init(int enable)
 {
 #ifdef CONFIG_PPC_ISERIES
        if (firmware_has_feature(FW_FEATURE_ISERIES))
index 5f3a5d068a5c6af9475babc8828d0e87f4290245..fcd830a292e24186ede36195ba4558d0312e2aa3 100644 (file)
@@ -647,7 +647,7 @@ user_exc_return:            /* r10 contains MSR_KERNEL here */
        /* Check current_thread_info()->flags */
        rlwinm  r9,r1,0,0,18
        lwz     r9,TI_FLAGS(r9)
-       andi.   r0,r9,(_TIF_SIGPENDING|_TIF_RESTORE_SIGMASK|_TIF_NEED_RESCHED)
+       andi.   r0,r9,_TIF_USER_WORK_MASK
        bne     do_work
 
 restore_user:
@@ -898,7 +898,7 @@ recheck:
        lwz     r9,TI_FLAGS(r9)
        andi.   r0,r9,_TIF_NEED_RESCHED
        bne-    do_resched
-       andi.   r0,r9,_TIF_SIGPENDING
+       andi.   r0,r9,_TIF_USER_WORK_MASK
        beq     restore_user
 do_user_signal:                        /* r10 contains MSR_KERNEL here */
        ori     r10,r10,MSR_EE
index 44160d5ebca06dbcd7e300c9835cbeb1763c1a4c..2f9759d625cc520b02c78d4605bbb594c4765f7e 100644 (file)
@@ -675,12 +675,6 @@ static int hvc_poll(struct hvc_struct *hp)
        return poll_mask;
 }
 
-#if defined(CONFIG_XMON) && defined(CONFIG_SMP)
-extern cpumask_t cpus_in_xmon;
-#else
-static const cpumask_t cpus_in_xmon = CPU_MASK_NONE;
-#endif
-
 /*
  * This kthread is either polling or interrupt driven.  This is determined by
  * calling hvc_poll() who determines whether a console adapter support
@@ -698,7 +692,7 @@ static int khvcd(void *unused)
                hvc_kicked = 0;
                try_to_freeze();
                wmb();
-               if (cpus_empty(cpus_in_xmon)) {
+               if (!cpus_are_in_xmon()) {
                        spin_lock(&hvc_structs_lock);
                        list_for_each_entry(hp, &hvc_structs, next) {
                                poll_mask |= hvc_poll(hp);
index 8c59818050e66d0c6c97aa8bb22351bf7bd70e5b..42ffb17e15df7d4f038f483cc16da4b1a42baf3f 100644 (file)
@@ -60,4 +60,14 @@ extern struct hvc_struct * __devinit hvc_alloc(uint32_t vtermno, int irq,
 /* remove a vterm from hvc tty operation (modele_exit or hotplug remove) */
 extern int __devexit hvc_remove(struct hvc_struct *hp);
 
+
+#if defined(CONFIG_XMON) && defined(CONFIG_SMP)
+#include <asm/xmon.h>
+#else
+static inline int cpus_are_in_xmon(void)
+{
+       return 0;
+}
+#endif
+
 #endif // HVC_CONSOLE_H
index 112e5ef728f14c9c939afdc95ca5ce604e273f4f..9e9453b584250f61b6a741861df2608e27cfb63e 100644 (file)
@@ -44,7 +44,7 @@ static ssize_t modalias_show (struct device *dev, struct device_attribute *attr,
        struct of_device *ofdev = to_of_device(dev);
        int len;
 
-       len = of_device_get_modalias(ofdev, buf, PAGE_SIZE);
+       len = of_device_get_modalias(ofdev, buf, PAGE_SIZE - 2);
 
        buf[len] = '\n';
        buf[len+1] = 0;
@@ -52,6 +52,15 @@ static ssize_t modalias_show (struct device *dev, struct device_attribute *attr,
        return len+1;
 }
 
+static ssize_t devspec_show(struct device *dev,
+                               struct device_attribute *attr, char *buf)
+{
+       struct of_device *ofdev;
+
+       ofdev = to_of_device(dev);
+       return sprintf(buf, "%s\n", ofdev->node->full_name);
+}
+
 macio_config_of_attr (name, "%s\n");
 macio_config_of_attr (type, "%s\n");
 
@@ -60,5 +69,6 @@ struct device_attribute macio_dev_attrs[] = {
        __ATTR_RO(type),
        __ATTR_RO(compatible),
        __ATTR_RO(modalias),
+       __ATTR_RO(devspec),
        __ATTR_NULL
 };
index f4182cfffe9d4c62c02b64b14d17d252a87dc6d7..8e3e968b2957dd3d9f5f02772583b9714c4ad34a 100644 (file)
@@ -1884,7 +1884,6 @@ config NE_H8300
          Say Y here if you want to use the NE2000 compatible
          controller on the Renesas H8/300 processor.
 
-source "drivers/net/fec_8xx/Kconfig"
 source "drivers/net/fs_enet/Kconfig"
 
 endif # NET_ETHERNET
index dcbfe8421154b25a83fd50ab7bf946da955eb65a..9010e58da0f2ffeccddc157082d55f631e82aac3 100644 (file)
@@ -217,7 +217,6 @@ obj-$(CONFIG_SMC91X) += smc91x.o
 obj-$(CONFIG_SMC911X) += smc911x.o
 obj-$(CONFIG_BFIN_MAC) += bfin_mac.o
 obj-$(CONFIG_DM9000) += dm9000.o
-obj-$(CONFIG_FEC_8XX) += fec_8xx/
 obj-$(CONFIG_PASEMI_MAC) += pasemi_mac_driver.o
 pasemi_mac_driver-objs := pasemi_mac.o pasemi_mac_ethtool.o
 obj-$(CONFIG_MLX4_CORE) += mlx4/
diff --git a/drivers/net/fec_8xx/Kconfig b/drivers/net/fec_8xx/Kconfig
deleted file mode 100644 (file)
index afb34de..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-config FEC_8XX
-       tristate "Motorola 8xx FEC driver"
-       depends on 8XX
-       select MII
-
-config FEC_8XX_GENERIC_PHY
-       bool "Support any generic PHY"
-       depends on FEC_8XX
-       default y
-
-config FEC_8XX_DM9161_PHY
-       bool "Support DM9161 PHY"
-       depends on FEC_8XX
-       default n
-
-config FEC_8XX_LXT971_PHY
-       bool "Support LXT971/LXT972 PHY"
-       depends on FEC_8XX
-       default n
-
diff --git a/drivers/net/fec_8xx/Makefile b/drivers/net/fec_8xx/Makefile
deleted file mode 100644 (file)
index 70c54f8..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-#
-# Makefile for the Motorola 8xx FEC ethernet controller
-#
-
-obj-$(CONFIG_FEC_8XX) += fec_8xx.o
-
-fec_8xx-objs := fec_main.o fec_mii.o
-
-# the platform instantatiation objects
-ifeq ($(CONFIG_NETTA),y)
-fec_8xx-objs   += fec_8xx-netta.o
-endif
diff --git a/drivers/net/fec_8xx/fec_8xx-netta.c b/drivers/net/fec_8xx/fec_8xx-netta.c
deleted file mode 100644 (file)
index 79deee2..0000000
+++ /dev/null
@@ -1,151 +0,0 @@
-/*
- * FEC instantatiation file for NETTA
- */
-
-#include <linux/kernel.h>
-#include <linux/types.h>
-#include <linux/string.h>
-#include <linux/ptrace.h>
-#include <linux/errno.h>
-#include <linux/ioport.h>
-#include <linux/slab.h>
-#include <linux/interrupt.h>
-#include <linux/pci.h>
-#include <linux/init.h>
-#include <linux/delay.h>
-#include <linux/netdevice.h>
-#include <linux/etherdevice.h>
-#include <linux/skbuff.h>
-#include <linux/spinlock.h>
-#include <linux/mii.h>
-#include <linux/ethtool.h>
-#include <linux/bitops.h>
-
-#include <asm/8xx_immap.h>
-#include <asm/pgtable.h>
-#include <asm/mpc8xx.h>
-#include <asm/irq.h>
-#include <asm/uaccess.h>
-#include <asm/cpm1.h>
-
-#include "fec_8xx.h"
-
-/*************************************************/
-
-static struct fec_platform_info fec1_info = {
-       .fec_no = 0,
-       .use_mdio = 1,
-       .phy_addr = 8,
-       .fec_irq = SIU_LEVEL1,
-       .phy_irq = CPM_IRQ_OFFSET + CPMVEC_PIO_PC6,
-       .rx_ring = 128,
-       .tx_ring = 16,
-       .rx_copybreak = 240,
-       .use_napi = 1,
-       .napi_weight = 17,
-};
-
-static struct fec_platform_info fec2_info = {
-       .fec_no = 1,
-       .use_mdio = 1,
-       .phy_addr = 2,
-       .fec_irq = SIU_LEVEL3,
-       .phy_irq = CPM_IRQ_OFFSET + CPMVEC_PIO_PC7,
-       .rx_ring = 128,
-       .tx_ring = 16,
-       .rx_copybreak = 240,
-       .use_napi = 1,
-       .napi_weight = 17,
-};
-
-static struct net_device *fec1_dev;
-static struct net_device *fec2_dev;
-
-/* XXX custom u-boot & Linux startup needed */
-extern const char *__fw_getenv(const char *var);
-
-/* access ports */
-#define setbits32(_addr, _v) __fec_out32(&(_addr), __fec_in32(&(_addr)) |  (_v))
-#define clrbits32(_addr, _v) __fec_out32(&(_addr), __fec_in32(&(_addr)) & ~(_v))
-
-#define setbits16(_addr, _v) __fec_out16(&(_addr), __fec_in16(&(_addr)) |  (_v))
-#define clrbits16(_addr, _v) __fec_out16(&(_addr), __fec_in16(&(_addr)) & ~(_v))
-
-int fec_8xx_platform_init(void)
-{
-       immap_t *immap = (immap_t *)IMAP_ADDR;
-       bd_t *bd = (bd_t *) __res;
-       const char *s;
-       char *e;
-       int i;
-
-       /* use MDC for MII */
-       setbits16(immap->im_ioport.iop_pdpar, 0x0080);
-       clrbits16(immap->im_ioport.iop_pddir, 0x0080);
-
-       /* configure FEC1 pins */
-       setbits16(immap->im_ioport.iop_papar, 0xe810);
-       setbits16(immap->im_ioport.iop_padir, 0x0810);
-       clrbits16(immap->im_ioport.iop_padir, 0xe000);
-
-       setbits32(immap->im_cpm.cp_pbpar, 0x00000001);
-       clrbits32(immap->im_cpm.cp_pbdir, 0x00000001);
-
-       setbits32(immap->im_cpm.cp_cptr, 0x00000100);
-       clrbits32(immap->im_cpm.cp_cptr, 0x00000050);
-
-       clrbits16(immap->im_ioport.iop_pcpar, 0x0200);
-       clrbits16(immap->im_ioport.iop_pcdir, 0x0200);
-       clrbits16(immap->im_ioport.iop_pcso, 0x0200);
-       setbits16(immap->im_ioport.iop_pcint, 0x0200);
-
-       /* configure FEC2 pins */
-       setbits32(immap->im_cpm.cp_pepar, 0x00039620);
-       setbits32(immap->im_cpm.cp_pedir, 0x00039620);
-       setbits32(immap->im_cpm.cp_peso, 0x00031000);
-       clrbits32(immap->im_cpm.cp_peso, 0x00008620);
-
-       setbits32(immap->im_cpm.cp_cptr, 0x00000080);
-       clrbits32(immap->im_cpm.cp_cptr, 0x00000028);
-
-       clrbits16(immap->im_ioport.iop_pcpar, 0x0200);
-       clrbits16(immap->im_ioport.iop_pcdir, 0x0200);
-       clrbits16(immap->im_ioport.iop_pcso, 0x0200);
-       setbits16(immap->im_ioport.iop_pcint, 0x0200);
-
-       /* fill up */
-       fec1_info.sys_clk = bd->bi_intfreq;
-       fec2_info.sys_clk = bd->bi_intfreq;
-
-       s = __fw_getenv("ethaddr");
-       if (s != NULL) {
-               for (i = 0; i < 6; i++) {
-                       fec1_info.macaddr[i] = simple_strtoul(s, &e, 16);
-                       if (*e)
-                               s = e + 1;
-               }
-       }
-
-       s = __fw_getenv("eth1addr");
-       if (s != NULL) {
-               for (i = 0; i < 6; i++) {
-                       fec2_info.macaddr[i] = simple_strtoul(s, &e, 16);
-                       if (*e)
-                               s = e + 1;
-               }
-       }
-
-       fec_8xx_init_one(&fec1_info, &fec1_dev);
-       fec_8xx_init_one(&fec2_info, &fec2_dev);
-
-       return fec1_dev != NULL && fec2_dev != NULL ? 0 : -1;
-}
-
-void fec_8xx_platform_cleanup(void)
-{
-       if (fec2_dev != NULL)
-               fec_8xx_cleanup_one(fec2_dev);
-
-       if (fec1_dev != NULL)
-               fec_8xx_cleanup_one(fec1_dev);
-}
diff --git a/drivers/net/fec_8xx/fec_8xx.h b/drivers/net/fec_8xx/fec_8xx.h
deleted file mode 100644 (file)
index f3b1c6f..0000000
+++ /dev/null
@@ -1,220 +0,0 @@
-#ifndef FEC_8XX_H
-#define FEC_8XX_H
-
-#include <linux/mii.h>
-#include <linux/netdevice.h>
-
-#include <linux/types.h>
-
-/* HW info */
-
-/* CRC polynomium used by the FEC for the multicast group filtering */
-#define FEC_CRC_POLY   0x04C11DB7
-
-#define MII_ADVERTISE_HALF     (ADVERTISE_100HALF | \
-                                ADVERTISE_10HALF | ADVERTISE_CSMA)
-#define MII_ADVERTISE_ALL      (ADVERTISE_100FULL | \
-                                ADVERTISE_10FULL | MII_ADVERTISE_HALF)
-
-/* Interrupt events/masks.
-*/
-#define FEC_ENET_HBERR 0x80000000U     /* Heartbeat error          */
-#define FEC_ENET_BABR  0x40000000U     /* Babbling receiver        */
-#define FEC_ENET_BABT  0x20000000U     /* Babbling transmitter     */
-#define FEC_ENET_GRA   0x10000000U     /* Graceful stop complete   */
-#define FEC_ENET_TXF   0x08000000U     /* Full frame transmitted   */
-#define FEC_ENET_TXB   0x04000000U     /* A buffer was transmitted */
-#define FEC_ENET_RXF   0x02000000U     /* Full frame received      */
-#define FEC_ENET_RXB   0x01000000U     /* A buffer was received    */
-#define FEC_ENET_MII   0x00800000U     /* MII interrupt            */
-#define FEC_ENET_EBERR 0x00400000U     /* SDMA bus error           */
-
-#define FEC_ECNTRL_PINMUX      0x00000004
-#define FEC_ECNTRL_ETHER_EN    0x00000002
-#define FEC_ECNTRL_RESET       0x00000001
-
-#define FEC_RCNTRL_BC_REJ      0x00000010
-#define FEC_RCNTRL_PROM                0x00000008
-#define FEC_RCNTRL_MII_MODE    0x00000004
-#define FEC_RCNTRL_DRT         0x00000002
-#define FEC_RCNTRL_LOOP                0x00000001
-
-#define FEC_TCNTRL_FDEN                0x00000004
-#define FEC_TCNTRL_HBC         0x00000002
-#define FEC_TCNTRL_GTS         0x00000001
-
-/* values for MII phy_status */
-
-#define PHY_CONF_ANE   0x0001  /* 1 auto-negotiation enabled     */
-#define PHY_CONF_LOOP  0x0002  /* 1 loopback mode enabled        */
-#define PHY_CONF_SPMASK        0x00f0  /* mask for speed                 */
-#define PHY_CONF_10HDX 0x0010  /* 10 Mbit half duplex supported  */
-#define PHY_CONF_10FDX 0x0020  /* 10 Mbit full duplex supported  */
-#define PHY_CONF_100HDX        0x0040  /* 100 Mbit half duplex supported */
-#define PHY_CONF_100FDX        0x0080  /* 100 Mbit full duplex supported */
-
-#define PHY_STAT_LINK  0x0100  /* 1 up - 0 down                  */
-#define PHY_STAT_FAULT 0x0200  /* 1 remote fault                 */
-#define PHY_STAT_ANC   0x0400  /* 1 auto-negotiation complete    */
-#define PHY_STAT_SPMASK        0xf000  /* mask for speed                 */
-#define PHY_STAT_10HDX 0x1000  /* 10 Mbit half duplex selected   */
-#define PHY_STAT_10FDX 0x2000  /* 10 Mbit full duplex selected   */
-#define PHY_STAT_100HDX        0x4000  /* 100 Mbit half duplex selected  */
-#define PHY_STAT_100FDX        0x8000  /* 100 Mbit full duplex selected  */
-
-typedef struct phy_info {
-       unsigned int id;
-       const char *name;
-       void (*startup) (struct net_device * dev);
-       void (*shutdown) (struct net_device * dev);
-       void (*ack_int) (struct net_device * dev);
-} phy_info_t;
-
-/* The FEC stores dest/src/type, data, and checksum for receive packets.
- */
-#define MAX_MTU 1508           /* Allow fullsized pppoe packets over VLAN */
-#define MIN_MTU 46             /* this is data size */
-#define CRC_LEN 4
-
-#define PKT_MAXBUF_SIZE                (MAX_MTU+ETH_HLEN+CRC_LEN)
-#define PKT_MINBUF_SIZE                (MIN_MTU+ETH_HLEN+CRC_LEN)
-
-/* Must be a multiple of 4 */
-#define PKT_MAXBLR_SIZE                ((PKT_MAXBUF_SIZE+3) & ~3)
-/* This is needed so that invalidate_xxx wont invalidate too much */
-#define ENET_RX_FRSIZE         L1_CACHE_ALIGN(PKT_MAXBUF_SIZE)
-
-/* platform interface */
-
-struct fec_platform_info {
-       int fec_no;             /* FEC index                  */
-       int use_mdio;           /* use external MII           */
-       int phy_addr;           /* the phy address            */
-       int fec_irq, phy_irq;   /* the irq for the controller */
-       int rx_ring, tx_ring;   /* number of buffers on rx    */
-       int sys_clk;            /* system clock               */
-       __u8 macaddr[6];        /* mac address                */
-       int rx_copybreak;       /* limit we copy small frames */
-       int use_napi;           /* use NAPI                   */
-       int napi_weight;        /* NAPI weight                */
-};
-
-/* forward declaration */
-struct fec;
-
-struct fec_enet_private {
-       spinlock_t lock;        /* during all ops except TX pckt processing */
-       spinlock_t tx_lock;     /* during fec_start_xmit and fec_tx         */
-       struct net_device *dev;
-       struct napi_struct napi;
-       int fecno;
-       struct fec *fecp;
-       const struct fec_platform_info *fpi;
-       int rx_ring, tx_ring;
-       dma_addr_t ring_mem_addr;
-       void *ring_base;
-       struct sk_buff **rx_skbuff;
-       struct sk_buff **tx_skbuff;
-       cbd_t *rx_bd_base;      /* Address of Rx and Tx buffers.    */
-       cbd_t *tx_bd_base;
-       cbd_t *dirty_tx;        /* ring entries to be free()ed.     */
-       cbd_t *cur_rx;
-       cbd_t *cur_tx;
-       int tx_free;
-       struct net_device_stats stats;
-       struct timer_list phy_timer_list;
-       const struct phy_info *phy;
-       unsigned int fec_phy_speed;
-       __u32 msg_enable;
-       struct mii_if_info mii_if;
-};
-
-/***************************************************************************/
-
-void fec_restart(struct net_device *dev, int duplex, int speed);
-void fec_stop(struct net_device *dev);
-
-/***************************************************************************/
-
-int fec_mii_read(struct net_device *dev, int phy_id, int location);
-void fec_mii_write(struct net_device *dev, int phy_id, int location, int value);
-
-int fec_mii_phy_id_detect(struct net_device *dev);
-void fec_mii_startup(struct net_device *dev);
-void fec_mii_shutdown(struct net_device *dev);
-void fec_mii_ack_int(struct net_device *dev);
-
-void fec_mii_link_status_change_check(struct net_device *dev, int init_media);
-
-/***************************************************************************/
-
-#define FEC1_NO        0x00
-#define FEC2_NO        0x01
-#define FEC3_NO        0x02
-
-int fec_8xx_init_one(const struct fec_platform_info *fpi,
-                    struct net_device **devp);
-int fec_8xx_cleanup_one(struct net_device *dev);
-
-/***************************************************************************/
-
-#define DRV_MODULE_NAME                "fec_8xx"
-#define PFX DRV_MODULE_NAME    ": "
-#define DRV_MODULE_VERSION     "0.1"
-#define DRV_MODULE_RELDATE     "May 6, 2004"
-
-/***************************************************************************/
-
-int fec_8xx_platform_init(void);
-void fec_8xx_platform_cleanup(void);
-
-/***************************************************************************/
-
-/* FEC access macros */
-#if defined(CONFIG_8xx)
-/* for a 8xx __raw_xxx's are sufficient */
-#define __fec_out32(addr, x)   __raw_writel(x, addr)
-#define __fec_out16(addr, x)   __raw_writew(x, addr)
-#define __fec_in32(addr)       __raw_readl(addr)
-#define __fec_in16(addr)       __raw_readw(addr)
-#else
-/* for others play it safe */
-#define __fec_out32(addr, x)   out_be32(addr, x)
-#define __fec_out16(addr, x)   out_be16(addr, x)
-#define __fec_in32(addr)       in_be32(addr)
-#define __fec_in16(addr)       in_be16(addr)
-#endif
-
-/* write */
-#define FW(_fecp, _reg, _v) __fec_out32(&(_fecp)->fec_ ## _reg, (_v))
-
-/* read */
-#define FR(_fecp, _reg)        __fec_in32(&(_fecp)->fec_ ## _reg)
-
-/* set bits */
-#define FS(_fecp, _reg, _v) FW(_fecp, _reg, FR(_fecp, _reg) | (_v))
-
-/* clear bits */
-#define FC(_fecp, _reg, _v) FW(_fecp, _reg, FR(_fecp, _reg) & ~(_v))
-
-/* buffer descriptor access macros */
-
-/* write */
-#define CBDW_SC(_cbd, _sc)             __fec_out16(&(_cbd)->cbd_sc, (_sc))
-#define CBDW_DATLEN(_cbd, _datlen)     __fec_out16(&(_cbd)->cbd_datlen, (_datlen))
-#define CBDW_BUFADDR(_cbd, _bufaddr)   __fec_out32(&(_cbd)->cbd_bufaddr, (_bufaddr))
-
-/* read */
-#define CBDR_SC(_cbd)                  __fec_in16(&(_cbd)->cbd_sc)
-#define CBDR_DATLEN(_cbd)              __fec_in16(&(_cbd)->cbd_datlen)
-#define CBDR_BUFADDR(_cbd)             __fec_in32(&(_cbd)->cbd_bufaddr)
-
-/* set bits */
-#define CBDS_SC(_cbd, _sc)             CBDW_SC(_cbd, CBDR_SC(_cbd) | (_sc))
-
-/* clear bits */
-#define CBDC_SC(_cbd, _sc)             CBDW_SC(_cbd, CBDR_SC(_cbd) & ~(_sc))
-
-/***************************************************************************/
-
-#endif
diff --git a/drivers/net/fec_8xx/fec_main.c b/drivers/net/fec_8xx/fec_main.c
deleted file mode 100644 (file)
index ca8d2e8..0000000
+++ /dev/null
@@ -1,1264 +0,0 @@
-/*
- * Fast Ethernet Controller (FEC) driver for Motorola MPC8xx.
- *
- * Copyright (c) 2003 Intracom S.A. 
- *  by Pantelis Antoniou <panto@intracom.gr>
- *
- * Heavily based on original FEC driver by Dan Malek <dan@embeddededge.com>
- * and modifications by Joakim Tjernlund <joakim.tjernlund@lumentis.se>
- *
- * Released under the GPL
- */
-
-#include <linux/module.h>
-#include <linux/kernel.h>
-#include <linux/types.h>
-#include <linux/string.h>
-#include <linux/ptrace.h>
-#include <linux/errno.h>
-#include <linux/ioport.h>
-#include <linux/slab.h>
-#include <linux/interrupt.h>
-#include <linux/init.h>
-#include <linux/delay.h>
-#include <linux/netdevice.h>
-#include <linux/etherdevice.h>
-#include <linux/skbuff.h>
-#include <linux/spinlock.h>
-#include <linux/mii.h>
-#include <linux/ethtool.h>
-#include <linux/bitops.h>
-#include <linux/dma-mapping.h>
-
-#include <asm/8xx_immap.h>
-#include <asm/pgtable.h>
-#include <asm/mpc8xx.h>
-#include <asm/irq.h>
-#include <asm/uaccess.h>
-#include <asm/cpm1.h>
-
-#include "fec_8xx.h"
-
-/*************************************************/
-
-#define FEC_MAX_MULTICAST_ADDRS        64
-
-/*************************************************/
-
-static char version[] __devinitdata =
-    DRV_MODULE_NAME ".c:v" DRV_MODULE_VERSION " (" DRV_MODULE_RELDATE ")" "\n";
-
-MODULE_AUTHOR("Pantelis Antoniou <panto@intracom.gr>");
-MODULE_DESCRIPTION("Motorola 8xx FEC ethernet driver");
-MODULE_LICENSE("GPL");
-
-int fec_8xx_debug = -1;                /* -1 == use FEC_8XX_DEF_MSG_ENABLE as value */
-module_param(fec_8xx_debug, int, 0);
-MODULE_PARM_DESC(fec_8xx_debug,
-                "FEC 8xx bitmapped debugging message enable value");
-
-
-/*************************************************/
-
-/*
- * Delay to wait for FEC reset command to complete (in us) 
- */
-#define FEC_RESET_DELAY                50
-
-/*****************************************************************************************/
-
-static void fec_whack_reset(fec_t * fecp)
-{
-       int i;
-
-       /*
-        * Whack a reset.  We should wait for this.  
-        */
-       FW(fecp, ecntrl, FEC_ECNTRL_PINMUX | FEC_ECNTRL_RESET);
-       for (i = 0;
-            (FR(fecp, ecntrl) & FEC_ECNTRL_RESET) != 0 && i < FEC_RESET_DELAY;
-            i++)
-               udelay(1);
-
-       if (i == FEC_RESET_DELAY)
-               printk(KERN_WARNING "FEC Reset timeout!\n");
-
-}
-
-/****************************************************************************/
-
-/*
- * Transmitter timeout.  
- */
-#define TX_TIMEOUT (2*HZ)
-
-/****************************************************************************/
-
-/*
- * Returns the CRC needed when filling in the hash table for
- * multicast group filtering
- * pAddr must point to a MAC address (6 bytes)
- */
-static __u32 fec_mulicast_calc_crc(char *pAddr)
-{
-       u8 byte;
-       int byte_count;
-       int bit_count;
-       __u32 crc = 0xffffffff;
-       u8 msb;
-
-       for (byte_count = 0; byte_count < 6; byte_count++) {
-               byte = pAddr[byte_count];
-               for (bit_count = 0; bit_count < 8; bit_count++) {
-                       msb = crc >> 31;
-                       crc <<= 1;
-                       if (msb ^ (byte & 0x1)) {
-                               crc ^= FEC_CRC_POLY;
-                       }
-                       byte >>= 1;
-               }
-       }
-       return (crc);
-}
-
-/*
- * Set or clear the multicast filter for this adaptor.
- * Skeleton taken from sunlance driver.
- * The CPM Ethernet implementation allows Multicast as well as individual
- * MAC address filtering.  Some of the drivers check to make sure it is
- * a group multicast address, and discard those that are not.  I guess I
- * will do the same for now, but just remove the test if you want
- * individual filtering as well (do the upper net layers want or support
- * this kind of feature?).
- */
-static void fec_set_multicast_list(struct net_device *dev)
-{
-       struct fec_enet_private *fep = netdev_priv(dev);
-       fec_t *fecp = fep->fecp;
-       struct dev_mc_list *pmc;
-       __u32 crc;
-       int temp;
-       __u32 csrVal;
-       int hash_index;
-       __u32 hthi, htlo;
-       unsigned long flags;
-
-
-       if ((dev->flags & IFF_PROMISC) != 0) {
-
-               spin_lock_irqsave(&fep->lock, flags);
-               FS(fecp, r_cntrl, FEC_RCNTRL_PROM);
-               spin_unlock_irqrestore(&fep->lock, flags);
-
-               /*
-                * Log any net taps. 
-                */
-               printk(KERN_WARNING DRV_MODULE_NAME
-                      ": %s: Promiscuous mode enabled.\n", dev->name);
-               return;
-
-       }
-
-       if ((dev->flags & IFF_ALLMULTI) != 0 ||
-           dev->mc_count > FEC_MAX_MULTICAST_ADDRS) {
-               /*
-                * Catch all multicast addresses, set the filter to all 1's.
-                */
-               hthi = 0xffffffffU;
-               htlo = 0xffffffffU;
-       } else {
-               hthi = 0;
-               htlo = 0;
-
-               /*
-                * Now populate the hash table 
-                */
-               for (pmc = dev->mc_list; pmc != NULL; pmc = pmc->next) {
-                       crc = fec_mulicast_calc_crc(pmc->dmi_addr);
-                       temp = (crc & 0x3f) >> 1;
-                       hash_index = ((temp & 0x01) << 4) |
-                                    ((temp & 0x02) << 2) |
-                                    ((temp & 0x04)) |
-                                    ((temp & 0x08) >> 2) |
-                                    ((temp & 0x10) >> 4);
-                       csrVal = (1 << hash_index);
-                       if (crc & 1)
-                               hthi |= csrVal;
-                       else
-                               htlo |= csrVal;
-               }
-       }
-
-       spin_lock_irqsave(&fep->lock, flags);
-       FC(fecp, r_cntrl, FEC_RCNTRL_PROM);
-       FW(fecp, hash_table_high, hthi);
-       FW(fecp, hash_table_low, htlo);
-       spin_unlock_irqrestore(&fep->lock, flags);
-}
-
-static int fec_set_mac_address(struct net_device *dev, void *addr)
-{
-       struct sockaddr *mac = addr;
-       struct fec_enet_private *fep = netdev_priv(dev);
-       struct fec *fecp = fep->fecp;
-       int i;
-       __u32 addrhi, addrlo;
-       unsigned long flags;
-
-       /* Get pointer to SCC area in parameter RAM. */
-       for (i = 0; i < 6; i++)
-               dev->dev_addr[i] = mac->sa_data[i];
-
-       /*
-        * Set station address. 
-        */
-       addrhi = ((__u32) dev->dev_addr[0] << 24) |
-                ((__u32) dev->dev_addr[1] << 16) |
-                ((__u32) dev->dev_addr[2] <<  8) |
-                 (__u32) dev->dev_addr[3];
-       addrlo = ((__u32) dev->dev_addr[4] << 24) |
-                ((__u32) dev->dev_addr[5] << 16);
-
-       spin_lock_irqsave(&fep->lock, flags);
-       FW(fecp, addr_low, addrhi);
-       FW(fecp, addr_high, addrlo);
-       spin_unlock_irqrestore(&fep->lock, flags);
-
-       return 0;
-}
-
-/*
- * This function is called to start or restart the FEC during a link
- * change.  This only happens when switching between half and full
- * duplex.
- */
-void fec_restart(struct net_device *dev, int duplex, int speed)
-{
-#ifdef CONFIG_DUET
-       immap_t *immap = (immap_t *) IMAP_ADDR;
-       __u32 cptr;
-#endif
-       struct fec_enet_private *fep = netdev_priv(dev);
-       struct fec *fecp = fep->fecp;
-       const struct fec_platform_info *fpi = fep->fpi;
-       cbd_t *bdp;
-       struct sk_buff *skb;
-       int i;
-       __u32 addrhi, addrlo;
-
-       fec_whack_reset(fep->fecp);
-
-       /*
-        * Set station address. 
-        */
-       addrhi = ((__u32) dev->dev_addr[0] << 24) |
-                ((__u32) dev->dev_addr[1] << 16) |
-                ((__u32) dev->dev_addr[2] <<  8) |
-                (__u32) dev->dev_addr[3];
-       addrlo = ((__u32) dev->dev_addr[4] << 24) |
-                ((__u32) dev->dev_addr[5] << 16);
-       FW(fecp, addr_low, addrhi);
-       FW(fecp, addr_high, addrlo);
-
-       /*
-        * Reset all multicast. 
-        */
-       FW(fecp, hash_table_high, 0);
-       FW(fecp, hash_table_low, 0);
-
-       /*
-        * Set maximum receive buffer size. 
-        */
-       FW(fecp, r_buff_size, PKT_MAXBLR_SIZE);
-       FW(fecp, r_hash, PKT_MAXBUF_SIZE);
-
-       /*
-        * Set receive and transmit descriptor base. 
-        */
-       FW(fecp, r_des_start, iopa((__u32) (fep->rx_bd_base)));
-       FW(fecp, x_des_start, iopa((__u32) (fep->tx_bd_base)));
-
-       fep->dirty_tx = fep->cur_tx = fep->tx_bd_base;
-       fep->tx_free = fep->tx_ring;
-       fep->cur_rx = fep->rx_bd_base;
-
-       /*
-        * Reset SKB receive buffers 
-        */
-       for (i = 0; i < fep->rx_ring; i++) {
-               if ((skb = fep->rx_skbuff[i]) == NULL)
-                       continue;
-               fep->rx_skbuff[i] = NULL;
-               dev_kfree_skb(skb);
-       }
-
-       /*
-        * Initialize the receive buffer descriptors. 
-        */
-       for (i = 0, bdp = fep->rx_bd_base; i < fep->rx_ring; i++, bdp++) {
-               skb = dev_alloc_skb(ENET_RX_FRSIZE);
-               if (skb == NULL) {
-                       printk(KERN_WARNING DRV_MODULE_NAME
-                              ": %s Memory squeeze, unable to allocate skb\n",
-                              dev->name);
-                       fep->stats.rx_dropped++;
-                       break;
-               }
-               fep->rx_skbuff[i] = skb;
-               skb->dev = dev;
-               CBDW_BUFADDR(bdp, dma_map_single(NULL, skb->data,
-                                        L1_CACHE_ALIGN(PKT_MAXBUF_SIZE),
-                                        DMA_FROM_DEVICE));
-               CBDW_DATLEN(bdp, 0);    /* zero */
-               CBDW_SC(bdp, BD_ENET_RX_EMPTY |
-                       ((i < fep->rx_ring - 1) ? 0 : BD_SC_WRAP));
-       }
-       /*
-        * if we failed, fillup remainder 
-        */
-       for (; i < fep->rx_ring; i++, bdp++) {
-               fep->rx_skbuff[i] = NULL;
-               CBDW_SC(bdp, (i < fep->rx_ring - 1) ? 0 : BD_SC_WRAP);
-       }
-
-       /*
-        * Reset SKB transmit buffers.  
-        */
-       for (i = 0; i < fep->tx_ring; i++) {
-               if ((skb = fep->tx_skbuff[i]) == NULL)
-                       continue;
-               fep->tx_skbuff[i] = NULL;
-               dev_kfree_skb(skb);
-       }
-
-       /*
-        * ...and the same for transmit.  
-        */
-       for (i = 0, bdp = fep->tx_bd_base; i < fep->tx_ring; i++, bdp++) {
-               fep->tx_skbuff[i] = NULL;
-               CBDW_BUFADDR(bdp, virt_to_bus(NULL));
-               CBDW_DATLEN(bdp, 0);
-               CBDW_SC(bdp, (i < fep->tx_ring - 1) ? 0 : BD_SC_WRAP);
-       }
-
-       /*
-        * Enable big endian and don't care about SDMA FC. 
-        */
-       FW(fecp, fun_code, 0x78000000);
-
-       /*
-        * Set MII speed. 
-        */
-       FW(fecp, mii_speed, fep->fec_phy_speed);
-
-       /*
-        * Clear any outstanding interrupt. 
-        */
-       FW(fecp, ievent, 0xffc0);
-       FW(fecp, ivec, (fpi->fec_irq / 2) << 29);
-
-       /*
-        * adjust to speed (only for DUET & RMII) 
-        */
-#ifdef CONFIG_DUET
-       cptr = in_be32(&immap->im_cpm.cp_cptr);
-       switch (fpi->fec_no) {
-       case 0:
-               /*
-                * check if in RMII mode 
-                */
-               if ((cptr & 0x100) == 0)
-                       break;
-
-               if (speed == 10)
-                       cptr |= 0x0000010;
-               else if (speed == 100)
-                       cptr &= ~0x0000010;
-               break;
-       case 1:
-               /*
-                * check if in RMII mode 
-                */
-               if ((cptr & 0x80) == 0)
-                       break;
-
-               if (speed == 10)
-                       cptr |= 0x0000008;
-               else if (speed == 100)
-                       cptr &= ~0x0000008;
-               break;
-       default:
-               break;
-       }
-       out_be32(&immap->im_cpm.cp_cptr, cptr);
-#endif
-
-       FW(fecp, r_cntrl, FEC_RCNTRL_MII_MODE); /* MII enable */
-       /*
-        * adjust to duplex mode 
-        */
-       if (duplex) {
-               FC(fecp, r_cntrl, FEC_RCNTRL_DRT);
-               FS(fecp, x_cntrl, FEC_TCNTRL_FDEN);     /* FD enable */
-       } else {
-               FS(fecp, r_cntrl, FEC_RCNTRL_DRT);
-               FC(fecp, x_cntrl, FEC_TCNTRL_FDEN);     /* FD disable */
-       }
-
-       /*
-        * Enable interrupts we wish to service. 
-        */
-       FW(fecp, imask, FEC_ENET_TXF | FEC_ENET_TXB |
-          FEC_ENET_RXF | FEC_ENET_RXB);
-
-       /*
-        * And last, enable the transmit and receive processing. 
-        */
-       FW(fecp, ecntrl, FEC_ECNTRL_PINMUX | FEC_ECNTRL_ETHER_EN);
-       FW(fecp, r_des_active, 0x01000000);
-}
-
-void fec_stop(struct net_device *dev)
-{
-       struct fec_enet_private *fep = netdev_priv(dev);
-       fec_t *fecp = fep->fecp;
-       struct sk_buff *skb;
-       int i;
-
-       if ((FR(fecp, ecntrl) & FEC_ECNTRL_ETHER_EN) == 0)
-               return;         /* already down */
-
-       FW(fecp, x_cntrl, 0x01);        /* Graceful transmit stop */
-       for (i = 0; ((FR(fecp, ievent) & 0x10000000) == 0) &&
-            i < FEC_RESET_DELAY; i++)
-               udelay(1);
-
-       if (i == FEC_RESET_DELAY)
-               printk(KERN_WARNING DRV_MODULE_NAME
-                      ": %s FEC timeout on graceful transmit stop\n",
-                      dev->name);
-       /*
-        * Disable FEC. Let only MII interrupts. 
-        */
-       FW(fecp, imask, 0);
-       FW(fecp, ecntrl, ~FEC_ECNTRL_ETHER_EN);
-
-       /*
-        * Reset SKB transmit buffers.  
-        */
-       for (i = 0; i < fep->tx_ring; i++) {
-               if ((skb = fep->tx_skbuff[i]) == NULL)
-                       continue;
-               fep->tx_skbuff[i] = NULL;
-               dev_kfree_skb(skb);
-       }
-
-       /*
-        * Reset SKB receive buffers 
-        */
-       for (i = 0; i < fep->rx_ring; i++) {
-               if ((skb = fep->rx_skbuff[i]) == NULL)
-                       continue;
-               fep->rx_skbuff[i] = NULL;
-               dev_kfree_skb(skb);
-       }
-}
-
-/* common receive function */
-static int fec_enet_rx_common(struct fec_enet_private *ep,
-                             struct net_device *dev, int budget)
-{
-       fec_t *fecp = fep->fecp;
-       const struct fec_platform_info *fpi = fep->fpi;
-       cbd_t *bdp;
-       struct sk_buff *skb, *skbn, *skbt;
-       int received = 0;
-       __u16 pkt_len, sc;
-       int curidx;
-
-       /*
-        * First, grab all of the stats for the incoming packet.
-        * These get messed up if we get called due to a busy condition.
-        */
-       bdp = fep->cur_rx;
-
-       /* clear RX status bits for napi*/
-       if (fpi->use_napi)
-               FW(fecp, ievent, FEC_ENET_RXF | FEC_ENET_RXB);
-
-       while (((sc = CBDR_SC(bdp)) & BD_ENET_RX_EMPTY) == 0) {
-
-               curidx = bdp - fep->rx_bd_base;
-
-               /*
-                * Since we have allocated space to hold a complete frame,
-                * the last indicator should be set.
-                */
-               if ((sc & BD_ENET_RX_LAST) == 0)
-                       printk(KERN_WARNING DRV_MODULE_NAME
-                              ": %s rcv is not +last\n",
-                              dev->name);
-
-               /*
-                * Check for errors. 
-                */
-               if (sc & (BD_ENET_RX_LG | BD_ENET_RX_SH | BD_ENET_RX_CL |
-                         BD_ENET_RX_NO | BD_ENET_RX_CR | BD_ENET_RX_OV)) {
-                       fep->stats.rx_errors++;
-                       /* Frame too long or too short. */
-                       if (sc & (BD_ENET_RX_LG | BD_ENET_RX_SH))
-                               fep->stats.rx_length_errors++;
-                       /* Frame alignment */
-                       if (sc & (BD_ENET_RX_NO | BD_ENET_RX_CL))
-                               fep->stats.rx_frame_errors++;
-                       /* CRC Error */
-                       if (sc & BD_ENET_RX_CR)
-                               fep->stats.rx_crc_errors++;
-                       /* FIFO overrun */
-                       if (sc & BD_ENET_RX_OV)
-                               fep->stats.rx_crc_errors++;
-
-                       skbn = fep->rx_skbuff[curidx];
-                       BUG_ON(skbn == NULL);
-
-               } else {
-                       skb = fep->rx_skbuff[curidx];
-                       BUG_ON(skb == NULL);
-
-                       /*
-                        * Process the incoming frame.
-                        */
-                       fep->stats.rx_packets++;
-                       pkt_len = CBDR_DATLEN(bdp) - 4; /* remove CRC */
-                       fep->stats.rx_bytes += pkt_len + 4;
-
-                       if (pkt_len <= fpi->rx_copybreak) {
-                               /* +2 to make IP header L1 cache aligned */
-                               skbn = dev_alloc_skb(pkt_len + 2);
-                               if (skbn != NULL) {
-                                       skb_reserve(skbn, 2);   /* align IP header */
-                                       skb_copy_from_linear_data(skb,
-                                                                 skbn->data,
-                                                                 pkt_len);
-                                       /* swap */
-                                       skbt = skb;
-                                       skb = skbn;
-                                       skbn = skbt;
-                               }
-                       } else
-                               skbn = dev_alloc_skb(ENET_RX_FRSIZE);
-
-                       if (skbn != NULL) {
-                               skb_put(skb, pkt_len);  /* Make room */
-                               skb->protocol = eth_type_trans(skb, dev);
-                               received++;
-                               if (!fpi->use_napi)
-                                       netif_rx(skb);
-                               else
-                                       netif_receive_skb(skb);
-                       } else {
-                               printk(KERN_WARNING DRV_MODULE_NAME
-                                      ": %s Memory squeeze, dropping packet.\n",
-                                      dev->name);
-                               fep->stats.rx_dropped++;
-                               skbn = skb;
-                       }
-               }
-
-               fep->rx_skbuff[curidx] = skbn;
-               CBDW_BUFADDR(bdp, dma_map_single(NULL, skbn->data,
-                                                L1_CACHE_ALIGN(PKT_MAXBUF_SIZE),
-                                                DMA_FROM_DEVICE));
-               CBDW_DATLEN(bdp, 0);
-               CBDW_SC(bdp, (sc & ~BD_ENET_RX_STATS) | BD_ENET_RX_EMPTY);
-
-               /*
-                * Update BD pointer to next entry. 
-                */
-               if ((sc & BD_ENET_RX_WRAP) == 0)
-                       bdp++;
-               else
-                       bdp = fep->rx_bd_base;
-
-               /*
-                * Doing this here will keep the FEC running while we process
-                * incoming frames.  On a heavily loaded network, we should be
-                * able to keep up at the expense of system resources.
-                */
-               FW(fecp, r_des_active, 0x01000000);
-
-               if (received >= budget)
-                       break;
-
-       }
-
-       fep->cur_rx = bdp;
-
-       if (fpi->use_napi) {
-               if (received < budget) {
-                       netif_rx_complete(dev, &fep->napi);
-
-                       /* enable RX interrupt bits */
-                       FS(fecp, imask, FEC_ENET_RXF | FEC_ENET_RXB);
-               }
-       }
-
-       return received;
-}
-
-static void fec_enet_tx(struct net_device *dev)
-{
-       struct fec_enet_private *fep = netdev_priv(dev);
-       cbd_t *bdp;
-       struct sk_buff *skb;
-       int dirtyidx, do_wake;
-       __u16 sc;
-
-       spin_lock(&fep->lock);
-       bdp = fep->dirty_tx;
-
-       do_wake = 0;
-       while (((sc = CBDR_SC(bdp)) & BD_ENET_TX_READY) == 0) {
-
-               dirtyidx = bdp - fep->tx_bd_base;
-
-               if (fep->tx_free == fep->tx_ring)
-                       break;
-
-               skb = fep->tx_skbuff[dirtyidx];
-
-               /*
-                * Check for errors. 
-                */
-               if (sc & (BD_ENET_TX_HB | BD_ENET_TX_LC |
-                         BD_ENET_TX_RL | BD_ENET_TX_UN | BD_ENET_TX_CSL)) {
-                       fep->stats.tx_errors++;
-                       if (sc & BD_ENET_TX_HB) /* No heartbeat */
-                               fep->stats.tx_heartbeat_errors++;
-                       if (sc & BD_ENET_TX_LC) /* Late collision */
-                               fep->stats.tx_window_errors++;
-                       if (sc & BD_ENET_TX_RL) /* Retrans limit */
-                               fep->stats.tx_aborted_errors++;
-                       if (sc & BD_ENET_TX_UN) /* Underrun */
-                               fep->stats.tx_fifo_errors++;
-                       if (sc & BD_ENET_TX_CSL)        /* Carrier lost */
-                               fep->stats.tx_carrier_errors++;
-               } else
-                       fep->stats.tx_packets++;
-
-               if (sc & BD_ENET_TX_READY)
-                       printk(KERN_WARNING DRV_MODULE_NAME
-                              ": %s HEY! Enet xmit interrupt and TX_READY.\n",
-                              dev->name);
-
-               /*
-                * Deferred means some collisions occurred during transmit,
-                * but we eventually sent the packet OK.
-                */
-               if (sc & BD_ENET_TX_DEF)
-                       fep->stats.collisions++;
-
-               /*
-                * Free the sk buffer associated with this last transmit. 
-                */
-               dev_kfree_skb_irq(skb);
-               fep->tx_skbuff[dirtyidx] = NULL;
-
-               /*
-                * Update pointer to next buffer descriptor to be transmitted. 
-                */
-               if ((sc & BD_ENET_TX_WRAP) == 0)
-                       bdp++;
-               else
-                       bdp = fep->tx_bd_base;
-
-               /*
-                * Since we have freed up a buffer, the ring is no longer
-                * full.
-                */
-               if (!fep->tx_free++)
-                       do_wake = 1;
-       }
-
-       fep->dirty_tx = bdp;
-
-       spin_unlock(&fep->lock);
-
-       if (do_wake && netif_queue_stopped(dev))
-               netif_wake_queue(dev);
-}
-
-/*
- * The interrupt handler.
- * This is called from the MPC core interrupt.
- */
-static irqreturn_t
-fec_enet_interrupt(int irq, void *dev_id)
-{
-       struct net_device *dev = dev_id;
-       struct fec_enet_private *fep;
-       const struct fec_platform_info *fpi;
-       fec_t *fecp;
-       __u32 int_events;
-       __u32 int_events_napi;
-
-       if (unlikely(dev == NULL))
-               return IRQ_NONE;
-
-       fep = netdev_priv(dev);
-       fecp = fep->fecp;
-       fpi = fep->fpi;
-
-       /*
-        * Get the interrupt events that caused us to be here.
-        */
-       while ((int_events = FR(fecp, ievent) & FR(fecp, imask)) != 0) {
-
-               if (!fpi->use_napi)
-                       FW(fecp, ievent, int_events);
-               else {
-                       int_events_napi = int_events & ~(FEC_ENET_RXF | FEC_ENET_RXB);
-                       FW(fecp, ievent, int_events_napi);
-               }
-
-               if ((int_events & (FEC_ENET_HBERR | FEC_ENET_BABR |
-                                  FEC_ENET_BABT | FEC_ENET_EBERR)) != 0)
-                       printk(KERN_WARNING DRV_MODULE_NAME
-                              ": %s FEC ERROR(s) 0x%x\n",
-                              dev->name, int_events);
-
-               if ((int_events & FEC_ENET_RXF) != 0) {
-                       if (!fpi->use_napi)
-                               fec_enet_rx_common(fep, dev, ~0);
-                       else {
-                               if (netif_rx_schedule_prep(dev, &fep->napi)) {
-                                       /* disable rx interrupts */
-                                       FC(fecp, imask, FEC_ENET_RXF | FEC_ENET_RXB);
-                                       __netif_rx_schedule(dev, &fep->napi);
-                               } else {
-                                       printk(KERN_ERR DRV_MODULE_NAME
-                                              ": %s driver bug! interrupt while in poll!\n",
-                                              dev->name);
-                                       FC(fecp, imask, FEC_ENET_RXF | FEC_ENET_RXB);
-                               }
-                       }
-               }
-
-               if ((int_events & FEC_ENET_TXF) != 0)
-                       fec_enet_tx(dev);
-       }
-
-       return IRQ_HANDLED;
-}
-
-/* This interrupt occurs when the PHY detects a link change. */
-static irqreturn_t
-fec_mii_link_interrupt(int irq, void *dev_id)
-{
-       struct net_device *dev = dev_id;
-       struct fec_enet_private *fep;
-       const struct fec_platform_info *fpi;
-
-       if (unlikely(dev == NULL))
-               return IRQ_NONE;
-
-       fep = netdev_priv(dev);
-       fpi = fep->fpi;
-
-       if (!fpi->use_mdio)
-               return IRQ_NONE;
-
-       /*
-        * Acknowledge the interrupt if possible. If we have not
-        * found the PHY yet we can't process or acknowledge the
-        * interrupt now. Instead we ignore this interrupt for now,
-        * which we can do since it is edge triggered. It will be
-        * acknowledged later by fec_enet_open().
-        */
-       if (!fep->phy)
-               return IRQ_NONE;
-
-       fec_mii_ack_int(dev);
-       fec_mii_link_status_change_check(dev, 0);
-
-       return IRQ_HANDLED;
-}
-
-
-/**********************************************************************************/
-
-static int fec_enet_start_xmit(struct sk_buff *skb, struct net_device *dev)
-{
-       struct fec_enet_private *fep = netdev_priv(dev);
-       fec_t *fecp = fep->fecp;
-       cbd_t *bdp;
-       int curidx;
-       unsigned long flags;
-
-       spin_lock_irqsave(&fep->tx_lock, flags);
-
-       /*
-        * Fill in a Tx ring entry 
-        */
-       bdp = fep->cur_tx;
-
-       if (!fep->tx_free || (CBDR_SC(bdp) & BD_ENET_TX_READY)) {
-               netif_stop_queue(dev);
-               spin_unlock_irqrestore(&fep->tx_lock, flags);
-
-               /*
-                * Ooops.  All transmit buffers are full.  Bail out.
-                * This should not happen, since the tx queue should be stopped.
-                */
-               printk(KERN_WARNING DRV_MODULE_NAME
-                      ": %s tx queue full!.\n", dev->name);
-               return 1;
-       }
-
-       curidx = bdp - fep->tx_bd_base;
-       /*
-        * Clear all of the status flags. 
-        */
-       CBDC_SC(bdp, BD_ENET_TX_STATS);
-
-       /*
-        * Save skb pointer. 
-        */
-       fep->tx_skbuff[curidx] = skb;
-
-       fep->stats.tx_bytes += skb->len;
-
-       /*
-        * Push the data cache so the CPM does not get stale memory data. 
-        */
-       CBDW_BUFADDR(bdp, dma_map_single(NULL, skb->data,
-                                        skb->len, DMA_TO_DEVICE));
-       CBDW_DATLEN(bdp, skb->len);
-
-       dev->trans_start = jiffies;
-
-       /*
-        * If this was the last BD in the ring, start at the beginning again. 
-        */
-       if ((CBDR_SC(bdp) & BD_ENET_TX_WRAP) == 0)
-               fep->cur_tx++;
-       else
-               fep->cur_tx = fep->tx_bd_base;
-
-       if (!--fep->tx_free)
-               netif_stop_queue(dev);
-
-       /*
-        * Trigger transmission start 
-        */
-       CBDS_SC(bdp, BD_ENET_TX_READY | BD_ENET_TX_INTR |
-               BD_ENET_TX_LAST | BD_ENET_TX_TC);
-       FW(fecp, x_des_active, 0x01000000);
-
-       spin_unlock_irqrestore(&fep->tx_lock, flags);
-
-       return 0;
-}
-
-static void fec_timeout(struct net_device *dev)
-{
-       struct fec_enet_private *fep = netdev_priv(dev);
-
-       fep->stats.tx_errors++;
-
-       if (fep->tx_free)
-               netif_wake_queue(dev);
-
-       /* check link status again */
-       fec_mii_link_status_change_check(dev, 0);
-}
-
-static int fec_enet_open(struct net_device *dev)
-{
-       struct fec_enet_private *fep = netdev_priv(dev);
-       const struct fec_platform_info *fpi = fep->fpi;
-       unsigned long flags;
-
-       napi_enable(&fep->napi);
-
-       /* Install our interrupt handler. */
-       if (request_irq(fpi->fec_irq, fec_enet_interrupt, 0, "fec", dev) != 0) {
-               printk(KERN_ERR DRV_MODULE_NAME
-                      ": %s Could not allocate FEC IRQ!", dev->name);
-               napi_disable(&fep->napi);
-               return -EINVAL;
-       }
-
-       /* Install our phy interrupt handler */
-       if (fpi->phy_irq != -1 && 
-               request_irq(fpi->phy_irq, fec_mii_link_interrupt, 0, "fec-phy",
-                               dev) != 0) {
-               printk(KERN_ERR DRV_MODULE_NAME
-                      ": %s Could not allocate PHY IRQ!", dev->name);
-               free_irq(fpi->fec_irq, dev);
-               napi_disable(&fep->napi);
-               return -EINVAL;
-       }
-
-       if (fpi->use_mdio) {
-               fec_mii_startup(dev);
-               netif_carrier_off(dev);
-               fec_mii_link_status_change_check(dev, 1);
-       } else {
-               spin_lock_irqsave(&fep->lock, flags);
-               fec_restart(dev, 1, 100);       /* XXX this sucks */
-               spin_unlock_irqrestore(&fep->lock, flags);
-
-               netif_carrier_on(dev);
-               netif_start_queue(dev);
-       }
-       return 0;
-}
-
-static int fec_enet_close(struct net_device *dev)
-{
-       struct fec_enet_private *fep = netdev_priv(dev);
-       const struct fec_platform_info *fpi = fep->fpi;
-       unsigned long flags;
-
-       netif_stop_queue(dev);
-       napi_disable(&fep->napi);
-       netif_carrier_off(dev);
-
-       if (fpi->use_mdio)
-               fec_mii_shutdown(dev);
-
-       spin_lock_irqsave(&fep->lock, flags);
-       fec_stop(dev);
-       spin_unlock_irqrestore(&fep->lock, flags);
-
-       /* release any irqs */
-       if (fpi->phy_irq != -1)
-               free_irq(fpi->phy_irq, dev);
-       free_irq(fpi->fec_irq, dev);
-
-       return 0;
-}
-
-static struct net_device_stats *fec_enet_get_stats(struct net_device *dev)
-{
-       struct fec_enet_private *fep = netdev_priv(dev);
-       return &fep->stats;
-}
-
-static int fec_enet_poll(struct napi_struct *napi, int budget)
-{
-       struct fec_enet_private *fep = container_of(napi, struct fec_enet_private, napi);
-       struct net_device *dev = fep->dev;
-
-       return fec_enet_rx_common(fep, dev, budget);
-}
-
-/*************************************************************************/
-
-static void fec_get_drvinfo(struct net_device *dev,
-                           struct ethtool_drvinfo *info)
-{
-       strcpy(info->driver, DRV_MODULE_NAME);
-       strcpy(info->version, DRV_MODULE_VERSION);
-}
-
-static int fec_get_regs_len(struct net_device *dev)
-{
-       return sizeof(fec_t);
-}
-
-static void fec_get_regs(struct net_device *dev, struct ethtool_regs *regs,
-                        void *p)
-{
-       struct fec_enet_private *fep = netdev_priv(dev);
-       unsigned long flags;
-
-       if (regs->len < sizeof(fec_t))
-               return;
-
-       regs->version = 0;
-       spin_lock_irqsave(&fep->lock, flags);
-       memcpy_fromio(p, fep->fecp, sizeof(fec_t));
-       spin_unlock_irqrestore(&fep->lock, flags);
-}
-
-static int fec_get_settings(struct net_device *dev, struct ethtool_cmd *cmd)
-{
-       struct fec_enet_private *fep = netdev_priv(dev);
-       unsigned long flags;
-       int rc;
-
-       spin_lock_irqsave(&fep->lock, flags);
-       rc = mii_ethtool_gset(&fep->mii_if, cmd);
-       spin_unlock_irqrestore(&fep->lock, flags);
-
-       return rc;
-}
-
-static int fec_set_settings(struct net_device *dev, struct ethtool_cmd *cmd)
-{
-       struct fec_enet_private *fep = netdev_priv(dev);
-       unsigned long flags;
-       int rc;
-
-       spin_lock_irqsave(&fep->lock, flags);
-       rc = mii_ethtool_sset(&fep->mii_if, cmd);
-       spin_unlock_irqrestore(&fep->lock, flags);
-
-       return rc;
-}
-
-static int fec_nway_reset(struct net_device *dev)
-{
-       struct fec_enet_private *fep = netdev_priv(dev);
-       return mii_nway_restart(&fep->mii_if);
-}
-
-static __u32 fec_get_msglevel(struct net_device *dev)
-{
-       struct fec_enet_private *fep = netdev_priv(dev);
-       return fep->msg_enable;
-}
-
-static void fec_set_msglevel(struct net_device *dev, __u32 value)
-{
-       struct fec_enet_private *fep = netdev_priv(dev);
-       fep->msg_enable = value;
-}
-
-static const struct ethtool_ops fec_ethtool_ops = {
-       .get_drvinfo    = fec_get_drvinfo,
-       .get_regs_len   = fec_get_regs_len,
-       .get_settings   = fec_get_settings,
-       .set_settings   = fec_set_settings,
-       .nway_reset     = fec_nway_reset,
-       .get_link       = ethtool_op_get_link,
-       .get_msglevel   = fec_get_msglevel,
-       .set_msglevel   = fec_set_msglevel,
-       .set_tx_csum    = ethtool_op_set_tx_csum,       /* local! */
-       .set_sg         = ethtool_op_set_sg,
-       .get_regs       = fec_get_regs,
-};
-
-static int fec_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
-{
-       struct fec_enet_private *fep = netdev_priv(dev);
-       struct mii_ioctl_data *mii = (struct mii_ioctl_data *)&rq->ifr_data;
-       unsigned long flags;
-       int rc;
-
-       if (!netif_running(dev))
-               return -EINVAL;
-
-       spin_lock_irqsave(&fep->lock, flags);
-       rc = generic_mii_ioctl(&fep->mii_if, mii, cmd, NULL);
-       spin_unlock_irqrestore(&fep->lock, flags);
-       return rc;
-}
-
-int fec_8xx_init_one(const struct fec_platform_info *fpi,
-                    struct net_device **devp)
-{
-       immap_t *immap = (immap_t *) IMAP_ADDR;
-       static int fec_8xx_version_printed = 0;
-       struct net_device *dev = NULL;
-       struct fec_enet_private *fep = NULL;
-       fec_t *fecp = NULL;
-       int i;
-       int err = 0;
-       int registered = 0;
-       __u32 siel;
-
-       *devp = NULL;
-
-       switch (fpi->fec_no) {
-       case 0:
-               fecp = &((immap_t *) IMAP_ADDR)->im_cpm.cp_fec;
-               break;
-#ifdef CONFIG_DUET
-       case 1:
-               fecp = &((immap_t *) IMAP_ADDR)->im_cpm.cp_fec2;
-               break;
-#endif
-       default:
-               return -EINVAL;
-       }
-
-       if (fec_8xx_version_printed++ == 0)
-               printk(KERN_INFO "%s", version);
-
-       i = sizeof(*fep) + (sizeof(struct sk_buff **) *
-                           (fpi->rx_ring + fpi->tx_ring));
-
-       dev = alloc_etherdev(i);
-       if (!dev) {
-               err = -ENOMEM;
-               goto err;
-       }
-
-       fep = netdev_priv(dev);
-       fep->dev = dev;
-
-       /* partial reset of FEC */
-       fec_whack_reset(fecp);
-
-       /* point rx_skbuff, tx_skbuff */
-       fep->rx_skbuff = (struct sk_buff **)&fep[1];
-       fep->tx_skbuff = fep->rx_skbuff + fpi->rx_ring;
-
-       fep->fecp = fecp;
-       fep->fpi = fpi;
-
-       /* init locks */
-       spin_lock_init(&fep->lock);
-       spin_lock_init(&fep->tx_lock);
-
-       /*
-        * Set the Ethernet address. 
-        */
-       for (i = 0; i < 6; i++)
-               dev->dev_addr[i] = fpi->macaddr[i];
-
-       fep->ring_base = dma_alloc_coherent(NULL,
-                                           (fpi->tx_ring + fpi->rx_ring) *
-                                           sizeof(cbd_t), &fep->ring_mem_addr,
-                                           GFP_KERNEL);
-       if (fep->ring_base == NULL) {
-               printk(KERN_ERR DRV_MODULE_NAME
-                      ": %s dma alloc failed.\n", dev->name);
-               err = -ENOMEM;
-               goto err;
-       }
-
-       /*
-        * Set receive and transmit descriptor base.
-        */
-       fep->rx_bd_base = fep->ring_base;
-       fep->tx_bd_base = fep->rx_bd_base + fpi->rx_ring;
-
-       /* initialize ring size variables */
-       fep->tx_ring = fpi->tx_ring;
-       fep->rx_ring = fpi->rx_ring;
-
-       /* SIU interrupt */
-       if (fpi->phy_irq != -1 &&
-               (fpi->phy_irq >= SIU_IRQ0 && fpi->phy_irq < SIU_LEVEL7)) {
-
-               siel = in_be32(&immap->im_siu_conf.sc_siel);
-               if ((fpi->phy_irq & 1) == 0)
-                       siel |= (0x80000000 >> fpi->phy_irq);
-               else
-                       siel &= ~(0x80000000 >> (fpi->phy_irq & ~1));
-               out_be32(&immap->im_siu_conf.sc_siel, siel);
-       }
-
-       /*
-        * The FEC Ethernet specific entries in the device structure. 
-        */
-       dev->open = fec_enet_open;
-       dev->hard_start_xmit = fec_enet_start_xmit;
-       dev->tx_timeout = fec_timeout;
-       dev->watchdog_timeo = TX_TIMEOUT;
-       dev->stop = fec_enet_close;
-       dev->get_stats = fec_enet_get_stats;
-       dev->set_multicast_list = fec_set_multicast_list;
-       dev->set_mac_address = fec_set_mac_address;
-       netif_napi_add(dev, &fec->napi,
-                      fec_enet_poll, fpi->napi_weight);
-
-       dev->ethtool_ops = &fec_ethtool_ops;
-       dev->do_ioctl = fec_ioctl;
-
-       fep->fec_phy_speed =
-           ((((fpi->sys_clk + 4999999) / 2500000) / 2) & 0x3F) << 1;
-
-       init_timer(&fep->phy_timer_list);
-
-       /* partial reset of FEC so that only MII works */
-       FW(fecp, mii_speed, fep->fec_phy_speed);
-       FW(fecp, ievent, 0xffc0);
-       FW(fecp, ivec, (fpi->fec_irq / 2) << 29);
-       FW(fecp, imask, 0);
-       FW(fecp, r_cntrl, FEC_RCNTRL_MII_MODE); /* MII enable */
-       FW(fecp, ecntrl, FEC_ECNTRL_PINMUX | FEC_ECNTRL_ETHER_EN);
-
-       netif_carrier_off(dev);
-
-       err = register_netdev(dev);
-       if (err != 0)
-               goto err;
-       registered = 1;
-
-       if (fpi->use_mdio) {
-               fep->mii_if.dev = dev;
-               fep->mii_if.mdio_read = fec_mii_read;
-               fep->mii_if.mdio_write = fec_mii_write;
-               fep->mii_if.phy_id_mask = 0x1f;
-               fep->mii_if.reg_num_mask = 0x1f;
-               fep->mii_if.phy_id = fec_mii_phy_id_detect(dev);
-       }
-
-       *devp = dev;
-
-       return 0;
-
-      err:
-       if (dev != NULL) {
-               if (fecp != NULL)
-                       fec_whack_reset(fecp);
-
-               if (registered)
-                       unregister_netdev(dev);
-
-               if (fep != NULL) {
-                       if (fep->ring_base)
-                               dma_free_coherent(NULL,
-                                                 (fpi->tx_ring +
-                                                  fpi->rx_ring) *
-                                                 sizeof(cbd_t), fep->ring_base,
-                                                 fep->ring_mem_addr);
-               }
-               free_netdev(dev);
-       }
-       return err;
-}
-
-int fec_8xx_cleanup_one(struct net_device *dev)
-{
-       struct fec_enet_private *fep = netdev_priv(dev);
-       fec_t *fecp = fep->fecp;
-       const struct fec_platform_info *fpi = fep->fpi;
-
-       fec_whack_reset(fecp);
-
-       unregister_netdev(dev);
-
-       dma_free_coherent(NULL, (fpi->tx_ring + fpi->rx_ring) * sizeof(cbd_t),
-                         fep->ring_base, fep->ring_mem_addr);
-
-       free_netdev(dev);
-
-       return 0;
-}
-
-/**************************************************************************************/
-/**************************************************************************************/
-/**************************************************************************************/
-
-static int __init fec_8xx_init(void)
-{
-       return fec_8xx_platform_init();
-}
-
-static void __exit fec_8xx_cleanup(void)
-{
-       fec_8xx_platform_cleanup();
-}
-
-/**************************************************************************************/
-/**************************************************************************************/
-/**************************************************************************************/
-
-module_init(fec_8xx_init);
-module_exit(fec_8xx_cleanup);
diff --git a/drivers/net/fec_8xx/fec_mii.c b/drivers/net/fec_8xx/fec_mii.c
deleted file mode 100644 (file)
index 3b6ca29..0000000
+++ /dev/null
@@ -1,418 +0,0 @@
-/*
- * Fast Ethernet Controller (FEC) driver for Motorola MPC8xx.
- *
- * Copyright (c) 2003 Intracom S.A. 
- *  by Pantelis Antoniou <panto@intracom.gr>
- *
- * Heavily based on original FEC driver by Dan Malek <dan@embeddededge.com>
- * and modifications by Joakim Tjernlund <joakim.tjernlund@lumentis.se>
- *
- * Released under the GPL
- */
-
-#include <linux/module.h>
-#include <linux/types.h>
-#include <linux/kernel.h>
-#include <linux/string.h>
-#include <linux/ptrace.h>
-#include <linux/errno.h>
-#include <linux/ioport.h>
-#include <linux/slab.h>
-#include <linux/interrupt.h>
-#include <linux/init.h>
-#include <linux/delay.h>
-#include <linux/netdevice.h>
-#include <linux/etherdevice.h>
-#include <linux/skbuff.h>
-#include <linux/spinlock.h>
-#include <linux/mii.h>
-#include <linux/ethtool.h>
-#include <linux/bitops.h>
-
-#include <asm/8xx_immap.h>
-#include <asm/pgtable.h>
-#include <asm/mpc8xx.h>
-#include <asm/irq.h>
-#include <asm/uaccess.h>
-#include <asm/cpm1.h>
-
-/*************************************************/
-
-#include "fec_8xx.h"
-
-/*************************************************/
-
-/* Make MII read/write commands for the FEC.
-*/
-#define mk_mii_read(REG)       (0x60020000 | ((REG & 0x1f) << 18))
-#define mk_mii_write(REG, VAL) (0x50020000 | ((REG & 0x1f) << 18) | (VAL & 0xffff))
-#define mk_mii_end             0
-
-/*************************************************/
-
-/* XXX both FECs use the MII interface of FEC1 */
-static DEFINE_SPINLOCK(fec_mii_lock);
-
-#define FEC_MII_LOOPS  10000
-
-int fec_mii_read(struct net_device *dev, int phy_id, int location)
-{
-       struct fec_enet_private *fep = netdev_priv(dev);
-       fec_t *fecp;
-       int i, ret = -1;
-       unsigned long flags;
-
-       /* XXX MII interface is only connected to FEC1 */
-       fecp = &((immap_t *) IMAP_ADDR)->im_cpm.cp_fec;
-
-       spin_lock_irqsave(&fec_mii_lock, flags);
-
-       if ((FR(fecp, r_cntrl) & FEC_RCNTRL_MII_MODE) == 0) {
-               FS(fecp, r_cntrl, FEC_RCNTRL_MII_MODE); /* MII enable */
-               FS(fecp, ecntrl, FEC_ECNTRL_PINMUX | FEC_ECNTRL_ETHER_EN);
-               FW(fecp, ievent, FEC_ENET_MII);
-       }
-
-       /* Add PHY address to register command.  */
-       FW(fecp, mii_speed, fep->fec_phy_speed);
-       FW(fecp, mii_data, (phy_id << 23) | mk_mii_read(location));
-
-       for (i = 0; i < FEC_MII_LOOPS; i++)
-               if ((FR(fecp, ievent) & FEC_ENET_MII) != 0)
-                       break;
-
-       if (i < FEC_MII_LOOPS) {
-               FW(fecp, ievent, FEC_ENET_MII);
-               ret = FR(fecp, mii_data) & 0xffff;
-       }
-
-       spin_unlock_irqrestore(&fec_mii_lock, flags);
-
-       return ret;
-}
-
-void fec_mii_write(struct net_device *dev, int phy_id, int location, int value)
-{
-       struct fec_enet_private *fep = netdev_priv(dev);
-       fec_t *fecp;
-       unsigned long flags;
-       int i;
-
-       /* XXX MII interface is only connected to FEC1 */
-       fecp = &((immap_t *) IMAP_ADDR)->im_cpm.cp_fec;
-
-       spin_lock_irqsave(&fec_mii_lock, flags);
-
-       if ((FR(fecp, r_cntrl) & FEC_RCNTRL_MII_MODE) == 0) {
-               FS(fecp, r_cntrl, FEC_RCNTRL_MII_MODE); /* MII enable */
-               FS(fecp, ecntrl, FEC_ECNTRL_PINMUX | FEC_ECNTRL_ETHER_EN);
-               FW(fecp, ievent, FEC_ENET_MII);
-       }
-
-       /* Add PHY address to register command.  */
-       FW(fecp, mii_speed, fep->fec_phy_speed);        /* always adapt mii speed */
-       FW(fecp, mii_data, (phy_id << 23) | mk_mii_write(location, value));
-
-       for (i = 0; i < FEC_MII_LOOPS; i++)
-               if ((FR(fecp, ievent) & FEC_ENET_MII) != 0)
-                       break;
-
-       if (i < FEC_MII_LOOPS)
-               FW(fecp, ievent, FEC_ENET_MII);
-
-       spin_unlock_irqrestore(&fec_mii_lock, flags);
-}
-
-/*************************************************/
-
-#ifdef CONFIG_FEC_8XX_GENERIC_PHY
-
-/*
- * Generic PHY support.
- * Should work for all PHYs, but link change is detected by polling
- */
-
-static void generic_timer_callback(unsigned long data)
-{
-       struct net_device *dev = (struct net_device *)data;
-       struct fec_enet_private *fep = netdev_priv(dev);
-
-       fep->phy_timer_list.expires = jiffies + HZ / 2;
-
-       add_timer(&fep->phy_timer_list);
-
-       fec_mii_link_status_change_check(dev, 0);
-}
-
-static void generic_startup(struct net_device *dev)
-{
-       struct fec_enet_private *fep = netdev_priv(dev);
-
-       fep->phy_timer_list.expires = jiffies + HZ / 2; /* every 500ms */
-       fep->phy_timer_list.data = (unsigned long)dev;
-       fep->phy_timer_list.function = generic_timer_callback;
-       add_timer(&fep->phy_timer_list);
-}
-
-static void generic_shutdown(struct net_device *dev)
-{
-       struct fec_enet_private *fep = netdev_priv(dev);
-
-       del_timer_sync(&fep->phy_timer_list);
-}
-
-#endif
-
-#ifdef CONFIG_FEC_8XX_DM9161_PHY
-
-/* ------------------------------------------------------------------------- */
-/* The Davicom DM9161 is used on the NETTA board                            */
-
-/* register definitions */
-
-#define MII_DM9161_ACR         16      /* Aux. Config Register         */
-#define MII_DM9161_ACSR                17      /* Aux. Config/Status Register  */
-#define MII_DM9161_10TCSR      18      /* 10BaseT Config/Status Reg.   */
-#define MII_DM9161_INTR                21      /* Interrupt Register           */
-#define MII_DM9161_RECR                22      /* Receive Error Counter Reg.   */
-#define MII_DM9161_DISCR       23      /* Disconnect Counter Register  */
-
-static void dm9161_startup(struct net_device *dev)
-{
-       struct fec_enet_private *fep = netdev_priv(dev);
-
-       fec_mii_write(dev, fep->mii_if.phy_id, MII_DM9161_INTR, 0x0000);
-}
-
-static void dm9161_ack_int(struct net_device *dev)
-{
-       struct fec_enet_private *fep = netdev_priv(dev);
-
-       fec_mii_read(dev, fep->mii_if.phy_id, MII_DM9161_INTR);
-}
-
-static void dm9161_shutdown(struct net_device *dev)
-{
-       struct fec_enet_private *fep = netdev_priv(dev);
-
-       fec_mii_write(dev, fep->mii_if.phy_id, MII_DM9161_INTR, 0x0f00);
-}
-
-#endif
-
-#ifdef CONFIG_FEC_8XX_LXT971_PHY
-
-/* Support for LXT971/972 PHY */
-
-#define MII_LXT971_PCR         16 /* Port Control Register */
-#define MII_LXT971_SR2         17 /* Status Register 2 */
-#define MII_LXT971_IER         18 /* Interrupt Enable Register */
-#define MII_LXT971_ISR         19 /* Interrupt Status Register */
-#define MII_LXT971_LCR         20 /* LED Control Register */
-#define MII_LXT971_TCR         30 /* Transmit Control Register */
-
-static void lxt971_startup(struct net_device *dev)
-{
-       struct fec_enet_private *fep = netdev_priv(dev);
-
-       fec_mii_write(dev, fep->mii_if.phy_id, MII_LXT971_IER, 0x00F2);
-}
-
-static void lxt971_ack_int(struct net_device *dev)
-{
-       struct fec_enet_private *fep = netdev_priv(dev);
-
-       fec_mii_read(dev, fep->mii_if.phy_id, MII_LXT971_ISR);
-}
-
-static void lxt971_shutdown(struct net_device *dev)
-{
-       struct fec_enet_private *fep = netdev_priv(dev);
-
-       fec_mii_write(dev, fep->mii_if.phy_id, MII_LXT971_IER, 0x0000);
-}
-#endif
-
-/**********************************************************************************/
-
-static const struct phy_info phy_info[] = {
-#ifdef CONFIG_FEC_8XX_DM9161_PHY
-       {
-        .id = 0x00181b88,
-        .name = "DM9161",
-        .startup = dm9161_startup,
-        .ack_int = dm9161_ack_int,
-        .shutdown = dm9161_shutdown,
-        },
-#endif
-#ifdef CONFIG_FEC_8XX_LXT971_PHY
-       {
-        .id = 0x0001378e,
-        .name = "LXT971/972",
-        .startup = lxt971_startup,
-        .ack_int = lxt971_ack_int,
-        .shutdown = lxt971_shutdown,
-       },
-#endif
-#ifdef CONFIG_FEC_8XX_GENERIC_PHY
-       {
-        .id = 0,
-        .name = "GENERIC",
-        .startup = generic_startup,
-        .shutdown = generic_shutdown,
-        },
-#endif
-};
-
-/**********************************************************************************/
-
-int fec_mii_phy_id_detect(struct net_device *dev)
-{
-       struct fec_enet_private *fep = netdev_priv(dev);
-       const struct fec_platform_info *fpi = fep->fpi;
-       int i, r, start, end, phytype, physubtype;
-       const struct phy_info *phy;
-       int phy_hwid, phy_id;
-
-       /* if no MDIO */
-       if (fpi->use_mdio == 0)
-               return -1;
-
-       phy_hwid = -1;
-       fep->phy = NULL;
-
-       /* auto-detect? */
-       if (fpi->phy_addr == -1) {
-               start = 0;
-               end = 32;
-       } else {                /* direct */
-               start = fpi->phy_addr;
-               end = start + 1;
-       }
-
-       for (phy_id = start; phy_id < end; phy_id++) {
-               r = fec_mii_read(dev, phy_id, MII_PHYSID1);
-               if (r == -1 || (phytype = (r & 0xffff)) == 0xffff)
-                       continue;
-               r = fec_mii_read(dev, phy_id, MII_PHYSID2);
-               if (r == -1 || (physubtype = (r & 0xffff)) == 0xffff)
-                       continue;
-               phy_hwid = (phytype << 16) | physubtype;
-               if (phy_hwid != -1)
-                       break;
-       }
-
-       if (phy_hwid == -1) {
-               printk(KERN_ERR DRV_MODULE_NAME
-                      ": %s No PHY detected!\n", dev->name);
-               return -1;
-       }
-
-       for (i = 0, phy = phy_info; i < ARRAY_SIZE(phy_info); i++, phy++)
-               if (phy->id == (phy_hwid >> 4) || phy->id == 0)
-                       break;
-
-       if (i >= ARRAY_SIZE(phy_info)) {
-               printk(KERN_ERR DRV_MODULE_NAME
-                      ": %s PHY id 0x%08x is not supported!\n",
-                      dev->name, phy_hwid);
-               return -1;
-       }
-
-       fep->phy = phy;
-
-       printk(KERN_INFO DRV_MODULE_NAME
-              ": %s Phy @ 0x%x, type %s (0x%08x)\n",
-              dev->name, phy_id, fep->phy->name, phy_hwid);
-
-       return phy_id;
-}
-
-void fec_mii_startup(struct net_device *dev)
-{
-       struct fec_enet_private *fep = netdev_priv(dev);
-       const struct fec_platform_info *fpi = fep->fpi;
-
-       if (!fpi->use_mdio || fep->phy == NULL)
-               return;
-
-       if (fep->phy->startup == NULL)
-               return;
-
-       (*fep->phy->startup) (dev);
-}
-
-void fec_mii_shutdown(struct net_device *dev)
-{
-       struct fec_enet_private *fep = netdev_priv(dev);
-       const struct fec_platform_info *fpi = fep->fpi;
-
-       if (!fpi->use_mdio || fep->phy == NULL)
-               return;
-
-       if (fep->phy->shutdown == NULL)
-               return;
-
-       (*fep->phy->shutdown) (dev);
-}
-
-void fec_mii_ack_int(struct net_device *dev)
-{
-       struct fec_enet_private *fep = netdev_priv(dev);
-       const struct fec_platform_info *fpi = fep->fpi;
-
-       if (!fpi->use_mdio || fep->phy == NULL)
-               return;
-
-       if (fep->phy->ack_int == NULL)
-               return;
-
-       (*fep->phy->ack_int) (dev);
-}
-
-/* helper function */
-static int mii_negotiated(struct mii_if_info *mii)
-{
-       int advert, lpa, val;
-
-       if (!mii_link_ok(mii))
-               return 0;
-
-       val = (*mii->mdio_read) (mii->dev, mii->phy_id, MII_BMSR);
-       if ((val & BMSR_ANEGCOMPLETE) == 0)
-               return 0;
-
-       advert = (*mii->mdio_read) (mii->dev, mii->phy_id, MII_ADVERTISE);
-       lpa = (*mii->mdio_read) (mii->dev, mii->phy_id, MII_LPA);
-
-       return mii_nway_result(advert & lpa);
-}
-
-void fec_mii_link_status_change_check(struct net_device *dev, int init_media)
-{
-       struct fec_enet_private *fep = netdev_priv(dev);
-       unsigned int media;
-       unsigned long flags;
-
-       if (mii_check_media(&fep->mii_if, netif_msg_link(fep), init_media) == 0)
-               return;
-
-       media = mii_negotiated(&fep->mii_if);
-
-       if (netif_carrier_ok(dev)) {
-               spin_lock_irqsave(&fep->lock, flags);
-               fec_restart(dev, !!(media & ADVERTISE_FULL),
-                           (media & (ADVERTISE_100FULL | ADVERTISE_100HALF)) ?
-                           100 : 10);
-               spin_unlock_irqrestore(&fep->lock, flags);
-
-               netif_start_queue(dev);
-       } else {
-               netif_stop_queue(dev);
-
-               spin_lock_irqsave(&fep->lock, flags);
-               fec_stop(dev);
-               spin_unlock_irqrestore(&fep->lock, flags);
-
-       }
-}
index 29681c4b700b13d2fa8b4f106b40faceec403716..8a1d93a2bb815c380bb18710369912834c2d2f06 100644 (file)
@@ -48,16 +48,32 @@ void of_dev_put(struct of_device *dev)
 }
 EXPORT_SYMBOL(of_dev_put);
 
-static ssize_t dev_show_devspec(struct device *dev,
+static ssize_t devspec_show(struct device *dev,
                                struct device_attribute *attr, char *buf)
 {
        struct of_device *ofdev;
 
        ofdev = to_of_device(dev);
-       return sprintf(buf, "%s", ofdev->node->full_name);
+       return sprintf(buf, "%s\n", ofdev->node->full_name);
 }
 
-static DEVICE_ATTR(devspec, S_IRUGO, dev_show_devspec, NULL);
+static ssize_t modalias_show(struct device *dev,
+                               struct device_attribute *attr, char *buf)
+{
+       struct of_device *ofdev = to_of_device(dev);
+       ssize_t len = 0;
+
+       len = of_device_get_modalias(ofdev, buf, PAGE_SIZE - 2);
+       buf[len] = '\n';
+       buf[len+1] = 0;
+       return len+1;
+}
+
+struct device_attribute of_platform_device_attrs[] = {
+       __ATTR_RO(devspec),
+       __ATTR_RO(modalias),
+       __ATTR_NULL
+};
 
 /**
  * of_release_dev - free an of device structure when all users of it are finished.
@@ -78,25 +94,61 @@ EXPORT_SYMBOL(of_release_dev);
 
 int of_device_register(struct of_device *ofdev)
 {
-       int rc;
-
        BUG_ON(ofdev->node == NULL);
-
-       rc = device_register(&ofdev->dev);
-       if (rc)
-               return rc;
-
-       rc = device_create_file(&ofdev->dev, &dev_attr_devspec);
-       if (rc)
-               device_unregister(&ofdev->dev);
-
-       return rc;
+       return device_register(&ofdev->dev);
 }
 EXPORT_SYMBOL(of_device_register);
 
 void of_device_unregister(struct of_device *ofdev)
 {
-       device_remove_file(&ofdev->dev, &dev_attr_devspec);
        device_unregister(&ofdev->dev);
 }
 EXPORT_SYMBOL(of_device_unregister);
+
+ssize_t of_device_get_modalias(struct of_device *ofdev,
+                               char *str, ssize_t len)
+{
+       const char *compat;
+       int cplen, i;
+       ssize_t tsize, csize, repend;
+
+       /* Name & Type */
+       csize = snprintf(str, len, "of:N%sT%s",
+                               ofdev->node->name, ofdev->node->type);
+
+       /* Get compatible property if any */
+       compat = of_get_property(ofdev->node, "compatible", &cplen);
+       if (!compat)
+               return csize;
+
+       /* Find true end (we tolerate multiple \0 at the end */
+       for (i = (cplen - 1); i >= 0 && !compat[i]; i--)
+               cplen--;
+       if (!cplen)
+               return csize;
+       cplen++;
+
+       /* Check space (need cplen+1 chars including final \0) */
+       tsize = csize + cplen;
+       repend = tsize;
+
+       if (csize >= len)               /* @ the limit, all is already filled */
+               return tsize;
+
+       if (tsize >= len) {             /* limit compat list */
+               cplen = len - csize - 1;
+               repend = len;
+       }
+
+       /* Copy and do char replacement */
+       memcpy(&str[csize + 1], compat, cplen);
+       for (i = csize; i < repend; i++) {
+               char c = str[i];
+               if (c == '\0')
+                       str[i] = 'C';
+               else if (c == ' ')
+                       str[i] = '_';
+       }
+
+       return tsize;
+}
index 000681e98f2c2d8ef6df123ab8026cc0caca751f..1c9cab844f10aaa60cf80d9996b4782d0c1256e6 100644 (file)
@@ -137,38 +137,6 @@ int of_gpio_simple_xlate(struct of_gpio_chip *of_gc, struct device_node *np,
 }
 EXPORT_SYMBOL(of_gpio_simple_xlate);
 
-/* Should be sufficient for now, later we'll use dynamic bases. */
-#if defined(CONFIG_PPC32) || defined(CONFIG_SPARC32)
-#define GPIOS_PER_CHIP 32
-#else
-#define GPIOS_PER_CHIP 64
-#endif
-
-static int of_get_gpiochip_base(struct device_node *np)
-{
-       struct device_node *gc = NULL;
-       int gpiochip_base = 0;
-
-       while ((gc = of_find_all_nodes(gc))) {
-               if (!of_get_property(gc, "gpio-controller", NULL))
-                       continue;
-
-               if (gc != np) {
-                       gpiochip_base += GPIOS_PER_CHIP;
-                       continue;
-               }
-
-               of_node_put(gc);
-
-               if (gpiochip_base >= ARCH_NR_GPIOS)
-                       return -ENOSPC;
-
-               return gpiochip_base;
-       }
-
-       return -ENOENT;
-}
-
 /**
  * of_mm_gpiochip_add - Add memory mapped GPIO chip (bank)
  * @np:                device node of the GPIO chip
@@ -205,11 +173,7 @@ int of_mm_gpiochip_add(struct device_node *np,
        if (!mm_gc->regs)
                goto err1;
 
-       gc->base = of_get_gpiochip_base(np);
-       if (gc->base < 0) {
-               ret = gc->base;
-               goto err1;
-       }
+       gc->base = -1;
 
        if (!of_gc->xlate)
                of_gc->xlate = of_gpio_simple_xlate;
index ca09a63a64db7bdf66a03f0da0069518615e3d6f..298de0f95d70d24d15727ab7b54a28d438854ec2 100644 (file)
@@ -17,6 +17,8 @@
 #include <linux/of_device.h>
 #include <linux/of_platform.h>
 
+extern struct device_attribute of_platform_device_attrs[];
+
 static int of_platform_bus_match(struct device *dev, struct device_driver *drv)
 {
        struct of_device *of_dev = to_of_device(dev);
@@ -103,6 +105,7 @@ int of_bus_type_init(struct bus_type *bus, const char *name)
        bus->suspend = of_platform_device_suspend;
        bus->resume = of_platform_device_resume;
        bus->shutdown = of_platform_device_shutdown;
+       bus->dev_attrs = of_platform_device_attrs;
        return bus_register(bus);
 }
 
diff --git a/include/asm-powerpc/dcr-generic.h b/include/asm-powerpc/dcr-generic.h
new file mode 100644 (file)
index 0000000..35b7159
--- /dev/null
@@ -0,0 +1,49 @@
+/*
+ * (c) Copyright 2006 Benjamin Herrenschmidt, IBM Corp.
+ *                    <benh@kernel.crashing.org>
+ *
+ *   This program is free software;  you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY;  without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See
+ *   the GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program;  if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifndef _ASM_POWERPC_DCR_GENERIC_H
+#define _ASM_POWERPC_DCR_GENERIC_H
+#ifdef __KERNEL__
+#ifndef __ASSEMBLY__
+
+enum host_type_t {DCR_HOST_MMIO, DCR_HOST_NATIVE, DCR_HOST_INVALID};
+
+typedef struct {
+       enum host_type_t type;
+       union {
+               dcr_host_mmio_t mmio;
+               dcr_host_native_t native;
+       } host;
+} dcr_host_t;
+
+extern bool dcr_map_ok_generic(dcr_host_t host);
+
+extern dcr_host_t dcr_map_generic(struct device_node *dev, unsigned int dcr_n,
+                         unsigned int dcr_c);
+extern void dcr_unmap_generic(dcr_host_t host, unsigned int dcr_c);
+
+extern u32 dcr_read_generic(dcr_host_t host, unsigned int dcr_n);
+
+extern void dcr_write_generic(dcr_host_t host, unsigned int dcr_n, u32 value);
+
+#endif /* __ASSEMBLY__ */
+#endif /* __KERNEL__ */
+#endif /* _ASM_POWERPC_DCR_GENERIC_H */
+
+
index 08532ff1899ca8947f44243ad1e7792bb6d2c3f9..acd491dbd45a8a7c8e34d98bddbb6201df1dde65 100644 (file)
@@ -27,20 +27,26 @@ typedef struct {
        void __iomem *token;
        unsigned int stride;
        unsigned int base;
-} dcr_host_t;
+} dcr_host_mmio_t;
 
-#define DCR_MAP_OK(host)       ((host).token != NULL)
+static inline bool dcr_map_ok_mmio(dcr_host_mmio_t host)
+{
+       return host.token != NULL;
+}
 
-extern dcr_host_t dcr_map(struct device_node *dev, unsigned int dcr_n,
-                         unsigned int dcr_c);
-extern void dcr_unmap(dcr_host_t host, unsigned int dcr_c);
+extern dcr_host_mmio_t dcr_map_mmio(struct device_node *dev,
+                                   unsigned int dcr_n,
+                                   unsigned int dcr_c);
+extern void dcr_unmap_mmio(dcr_host_mmio_t host, unsigned int dcr_c);
 
-static inline u32 dcr_read(dcr_host_t host, unsigned int dcr_n)
+static inline u32 dcr_read_mmio(dcr_host_mmio_t host, unsigned int dcr_n)
 {
        return in_be32(host.token + ((host.base + dcr_n) * host.stride));
 }
 
-static inline void dcr_write(dcr_host_t host, unsigned int dcr_n, u32 value)
+static inline void dcr_write_mmio(dcr_host_mmio_t host,
+                                 unsigned int dcr_n,
+                                 u32 value)
 {
        out_be32(host.token + ((host.base + dcr_n) * host.stride), value);
 }
index f8398ce80372ebabaad97f58e5f10caa7dd3bad4..72d2b72c739007c447f25272bc0f30515cd08f76 100644 (file)
 
 typedef struct {
        unsigned int base;
-} dcr_host_t;
+} dcr_host_native_t;
 
-#define DCR_MAP_OK(host)       (1)
+static inline bool dcr_map_ok_native(dcr_host_native_t host)
+{
+       return 1;
+}
 
-#define dcr_map(dev, dcr_n, dcr_c)     ((dcr_host_t){ .base = (dcr_n) })
-#define dcr_unmap(host, dcr_c)         do {} while (0)
-#define dcr_read(host, dcr_n)          mfdcr(dcr_n + host.base)
-#define dcr_write(host, dcr_n, value)  mtdcr(dcr_n + host.base, value)
+#define dcr_map_native(dev, dcr_n, dcr_c) \
+       ((dcr_host_native_t){ .base = (dcr_n) })
+#define dcr_unmap_native(host, dcr_c)          do {} while (0)
+#define dcr_read_native(host, dcr_n)           mfdcr(dcr_n + host.base)
+#define dcr_write_native(host, dcr_n, value)   mtdcr(dcr_n + host.base, value)
 
 /* Device Control Registers */
 void __mtdcr(int reg, unsigned int val);
index 9338d50538f1bddf6d904e4e5e8023eea835fdc8..53b283050ab3456fa676efb4c42fa0407cadb155 100644 (file)
 #ifndef _ASM_POWERPC_DCR_H
 #define _ASM_POWERPC_DCR_H
 #ifdef __KERNEL__
+#ifndef __ASSEMBLY__
 #ifdef CONFIG_PPC_DCR
 
 #ifdef CONFIG_PPC_DCR_NATIVE
 #include <asm/dcr-native.h>
-#else
+#endif
+
+#ifdef CONFIG_PPC_DCR_MMIO
 #include <asm/dcr-mmio.h>
 #endif
 
+
+/* Indirection layer for providing both NATIVE and MMIO support. */
+
+#if defined(CONFIG_PPC_DCR_NATIVE) && defined(CONFIG_PPC_DCR_MMIO)
+
+#include <asm/dcr-generic.h>
+
+#define DCR_MAP_OK(host)       dcr_map_ok_generic(host)
+#define dcr_map(dev, dcr_n, dcr_c) dcr_map_generic(dev, dcr_n, dcr_c)
+#define dcr_unmap(host, dcr_c) dcr_unmap_generic(host, dcr_c)
+#define dcr_read(host, dcr_n) dcr_read_generic(host, dcr_n)
+#define dcr_write(host, dcr_n, value) dcr_write_generic(host, dcr_n, value)
+
+#else
+
+#ifdef CONFIG_PPC_DCR_NATIVE
+typedef dcr_host_native_t dcr_host_t;
+#define DCR_MAP_OK(host)       dcr_map_ok_native(host)
+#define dcr_map(dev, dcr_n, dcr_c) dcr_map_native(dev, dcr_n, dcr_c)
+#define dcr_unmap(host, dcr_c) dcr_unmap_native(host, dcr_c)
+#define dcr_read(host, dcr_n) dcr_read_native(host, dcr_n)
+#define dcr_write(host, dcr_n, value) dcr_write_native(host, dcr_n, value)
+#else
+typedef dcr_host_mmio_t dcr_host_t;
+#define DCR_MAP_OK(host)       dcr_map_ok_mmio(host)
+#define dcr_map(dev, dcr_n, dcr_c) dcr_map_mmio(dev, dcr_n, dcr_c)
+#define dcr_unmap(host, dcr_c) dcr_unmap_mmio(host, dcr_c)
+#define dcr_read(host, dcr_n) dcr_read_mmio(host, dcr_n)
+#define dcr_write(host, dcr_n, value) dcr_write_mmio(host, dcr_n, value)
+#endif
+
+#endif /* defined(CONFIG_PPC_DCR_NATIVE) && defined(CONFIG_PPC_DCR_MMIO) */
+
 /*
  * On CONFIG_PPC_MERGE, we have additional helpers to read the DCR
  * base from the device-tree
@@ -41,5 +77,6 @@ extern unsigned int dcr_resource_len(struct device_node *np,
 #endif /* CONFIG_PPC_MERGE */
 
 #endif /* CONFIG_PPC_DCR */
+#endif /* __ASSEMBLY__ */
 #endif /* __KERNEL__ */
 #endif /* _ASM_POWERPC_DCR_H */
index 8eb99848c40247b3d86a9012b3e13de9fdff652e..57d68304218b68485da2c534ea110b571c1de631 100644 (file)
@@ -1,69 +1,13 @@
 #ifndef _ASM_POWERPC_IOCTL_H
 #define _ASM_POWERPC_IOCTL_H
 
-
-/*
- * this was copied from the alpha as it's a bit cleaner there.
- *                         -- Cort
- */
-
-#define _IOC_NRBITS    8
-#define _IOC_TYPEBITS  8
 #define _IOC_SIZEBITS  13
 #define _IOC_DIRBITS   3
 
-#define _IOC_NRMASK    ((1 << _IOC_NRBITS)-1)
-#define _IOC_TYPEMASK  ((1 << _IOC_TYPEBITS)-1)
-#define _IOC_SIZEMASK  ((1 << _IOC_SIZEBITS)-1)
-#define _IOC_DIRMASK   ((1 << _IOC_DIRBITS)-1)
-
-#define _IOC_NRSHIFT   0
-#define _IOC_TYPESHIFT (_IOC_NRSHIFT+_IOC_NRBITS)
-#define _IOC_SIZESHIFT (_IOC_TYPESHIFT+_IOC_TYPEBITS)
-#define _IOC_DIRSHIFT  (_IOC_SIZESHIFT+_IOC_SIZEBITS)
-
-/*
- * Direction bits _IOC_NONE could be 0, but OSF/1 gives it a bit.
- * And this turns out useful to catch old ioctl numbers in header
- * files for us.
- */
 #define _IOC_NONE      1U
 #define _IOC_READ      2U
 #define _IOC_WRITE     4U
 
-#define _IOC(dir,type,nr,size) \
-       (((dir)  << _IOC_DIRSHIFT) | \
-        ((type) << _IOC_TYPESHIFT) | \
-        ((nr)   << _IOC_NRSHIFT) | \
-        ((size) << _IOC_SIZESHIFT))
-
-/* provoke compile error for invalid uses of size argument */
-extern unsigned int __invalid_size_argument_for_IOC;
-#define _IOC_TYPECHECK(t) \
-       ((sizeof(t) == sizeof(t[1]) && \
-         sizeof(t) < (1 << _IOC_SIZEBITS)) ? \
-         sizeof(t) : __invalid_size_argument_for_IOC)
-
-/* used to create numbers */
-#define _IO(type,nr)           _IOC(_IOC_NONE,(type),(nr),0)
-#define _IOR(type,nr,size)     _IOC(_IOC_READ,(type),(nr),(_IOC_TYPECHECK(size)))
-#define _IOW(type,nr,size)     _IOC(_IOC_WRITE,(type),(nr),(_IOC_TYPECHECK(size)))
-#define _IOWR(type,nr,size)    _IOC(_IOC_READ|_IOC_WRITE,(type),(nr),(_IOC_TYPECHECK(size)))
-#define _IOR_BAD(type,nr,size) _IOC(_IOC_READ,(type),(nr),sizeof(size))
-#define _IOW_BAD(type,nr,size) _IOC(_IOC_WRITE,(type),(nr),sizeof(size))
-#define _IOWR_BAD(type,nr,size)        _IOC(_IOC_READ|_IOC_WRITE,(type),(nr),sizeof(size))
-
-/* used to decode them.. */
-#define _IOC_DIR(nr)           (((nr) >> _IOC_DIRSHIFT) & _IOC_DIRMASK)
-#define _IOC_TYPE(nr)          (((nr) >> _IOC_TYPESHIFT) & _IOC_TYPEMASK)
-#define _IOC_NR(nr)            (((nr) >> _IOC_NRSHIFT) & _IOC_NRMASK)
-#define _IOC_SIZE(nr)          (((nr) >> _IOC_SIZESHIFT) & _IOC_SIZEMASK)
-
-/* various drivers, such as the pcmcia stuff, need these... */
-#define IOC_IN         (_IOC_WRITE << _IOC_DIRSHIFT)
-#define IOC_OUT                (_IOC_READ << _IOC_DIRSHIFT)
-#define IOC_INOUT      ((_IOC_WRITE|_IOC_READ) << _IOC_DIRSHIFT)
-#define IOCSIZE_MASK   (_IOC_SIZEMASK << _IOC_SIZESHIFT)
-#define IOCSIZE_SHIFT  (_IOC_SIZESHIFT)
+#include <asm-generic/ioctl.h>
 
 #endif /* _ASM_POWERPC_IOCTL_H */
index 5089deb8fec3f0fcf744d1647eea5475202555a1..1ef8e304e0eac06cbc4561fdab63800a291cb7cd 100644 (file)
@@ -619,6 +619,19 @@ struct pt_regs;
 
 #define __ARCH_HAS_DO_SOFTIRQ
 
+#if defined(CONFIG_BOOKE) || defined(CONFIG_40x)
+/*
+ * Per-cpu stacks for handling critical, debug and machine check
+ * level interrupts.
+ */
+extern struct thread_info *critirq_ctx[NR_CPUS];
+extern struct thread_info *dbgirq_ctx[NR_CPUS];
+extern struct thread_info *mcheckirq_ctx[NR_CPUS];
+extern void exc_lvl_ctx_init(void);
+#else
+#define exc_lvl_ctx_init()
+#endif
+
 #ifdef CONFIG_IRQSTACKS
 /*
  * Per-cpu stacks for handling hard and soft interrupts.
index 39c5c5f62bf5bd740fd92568aa030c4afaff84f3..d1dc16afb1186c4a40f374a0e2f5ba3d89ffff2f 100644 (file)
@@ -182,6 +182,7 @@ extern int mmu_io_psize;
 extern int mmu_kernel_ssize;
 extern int mmu_highuser_ssize;
 extern u16 mmu_slb_size;
+extern unsigned long tce_alloc_start, tce_alloc_end;
 
 /*
  * If the processor supports 64k normal pages but not 64k cache
diff --git a/include/asm-powerpc/mpc6xx.h b/include/asm-powerpc/mpc6xx.h
new file mode 100644 (file)
index 0000000..effc229
--- /dev/null
@@ -0,0 +1,6 @@
+#ifndef __ASM_POWERPC_MPC6xx_H
+#define __ASM_POWERPC_MPC6xx_H
+
+void mpc6xx_enter_standby(void);
+
+#endif
index a4d0f876b427d9540c4821a12fce209a8df12bd9..fe566a348a86e7e770ab014b11d96b380563183f 100644 (file)
@@ -353,6 +353,8 @@ struct mpic
 #define MPIC_ENABLE_MCK                        0x00000200
 /* Disable bias among target selection, spread interrupts evenly */
 #define MPIC_NO_BIAS                   0x00000400
+/* Ignore NIRQS as reported by FRR */
+#define MPIC_BROKEN_FRR_NIRQS          0x00000800
 
 /* MPIC HW modification ID */
 #define MPIC_REGSET_MASK               0xf0000000
index 6526e139a4636783959ee2820c078881c57b33c8..3c123990ca2e0f3db95b03c939e62a6e6050df30 100644 (file)
@@ -21,8 +21,6 @@ extern struct of_device *of_device_alloc(struct device_node *np,
                                         const char *bus_id,
                                         struct device *parent);
 
-extern ssize_t of_device_get_modalias(struct of_device *ofdev,
-                                       char *str, ssize_t len);
 extern int of_device_uevent(struct device *dev,
                            struct kobj_uevent_env *env);
 
index 2dbd4e7884faee59e96e53b391e1495bee1307e2..ef96bfd4ef4cbda90bb6827a75e6911ff7386ad0 100644 (file)
@@ -356,6 +356,12 @@ END_FTR_SECTION_IFCLR(CPU_FTR_601)
 #define toreal(rd)
 #define fromreal(rd)
 
+/*
+ * We use addis to ensure compatibility with the "classic" ppc versions of
+ * these macros, which use rs = 0 to get the tophys offset in rd, rather than
+ * converting the address in r0, and so this version has to do that too
+ * (i.e. set register rd to 0 when rs == 0).
+ */
 #define tophys(rd,rs)                          \
        addis   rd,rs,0
 
index 39023dde1cc4c869ed9d7f4ed9b8baa623206ad7..38d87e5e569d5edb79d384e6916e833e936a69eb 100644 (file)
@@ -119,6 +119,7 @@ extern int ptrace_put_reg(struct task_struct *task, int regno,
 #ifndef __powerpc64__
 #define IS_CRITICAL_EXC(regs)  (((regs)->trap & 2) != 0)
 #define IS_MCHECK_EXC(regs)    (((regs)->trap & 4) != 0)
+#define IS_DEBUG_EXC(regs)     (((regs)->trap & 8) != 0)
 #endif /* ! __powerpc64__ */
 #define TRAP(regs)             ((regs)->trap & ~0xF)
 #ifdef __powerpc64__
index 505f35bacaa913a1d339406f0be1f1599389572f..1cd43e3d94fb71f8736d31a2f4e51f2176faf7cf 100644 (file)
@@ -37,6 +37,8 @@ extern void cpu_die(void);
 extern void smp_send_debugger_break(int cpu);
 extern void smp_message_recv(int);
 
+DECLARE_PER_CPU(unsigned int, pvr);
+
 #ifdef CONFIG_HOTPLUG_CPU
 extern void fixup_irqs(cpumask_t map);
 int generic_cpu_disable(void);
index 2b6559a6d113d6e883887ff6766be4989ed54dcb..df781adac6dd02125ed0404ac941c75f6eaebac6 100644 (file)
@@ -190,6 +190,7 @@ extern struct task_struct *_switch(struct thread_struct *prev,
 
 extern unsigned int rtas_data;
 extern int mem_init_done;      /* set on boot once kmalloc can be called */
+extern int init_bootmem_done;  /* set on !NUMA once bootmem is available */
 extern unsigned long memory_limit;
 extern unsigned long klimit;
 
index d030f5ce39adafdac57aa0fd93d88bc8f985b2ea..b705c2a7651a929a42780163d6bd303a412f998b 100644 (file)
@@ -116,7 +116,6 @@ static inline struct thread_info *current_thread_info(void)
 #define TIF_SECCOMP            10      /* secure computing */
 #define TIF_RESTOREALL         11      /* Restore all regs (implies NOERROR) */
 #define TIF_NOERROR            12      /* Force successful syscall return */
-#define TIF_RESTORE_SIGMASK    13      /* Restore signal mask in do_signal */
 #define TIF_FREEZE             14      /* Freezing for suspend */
 #define TIF_RUNLATCH           15      /* Is the runlatch enabled? */
 #define TIF_ABI_PENDING                16      /* 32/64 bit switch needed */
@@ -134,21 +133,33 @@ static inline struct thread_info *current_thread_info(void)
 #define _TIF_SECCOMP           (1<<TIF_SECCOMP)
 #define _TIF_RESTOREALL                (1<<TIF_RESTOREALL)
 #define _TIF_NOERROR           (1<<TIF_NOERROR)
-#define _TIF_RESTORE_SIGMASK   (1<<TIF_RESTORE_SIGMASK)
 #define _TIF_FREEZE            (1<<TIF_FREEZE)
 #define _TIF_RUNLATCH          (1<<TIF_RUNLATCH)
 #define _TIF_ABI_PENDING       (1<<TIF_ABI_PENDING)
 #define _TIF_SYSCALL_T_OR_A    (_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT|_TIF_SECCOMP)
 
-#define _TIF_USER_WORK_MASK    ( _TIF_SIGPENDING | \
-                                _TIF_NEED_RESCHED | _TIF_RESTORE_SIGMASK)
+#define _TIF_USER_WORK_MASK    (_TIF_SIGPENDING | _TIF_NEED_RESCHED)
 #define _TIF_PERSYSCALL_MASK   (_TIF_RESTOREALL|_TIF_NOERROR)
 
 /* Bits in local_flags */
 /* Don't move TLF_NAPPING without adjusting the code in entry_32.S */
 #define TLF_NAPPING            0       /* idle thread enabled NAP mode */
+#define TLF_SLEEPING           1       /* suspend code enabled SLEEP mode */
+#define TLF_RESTORE_SIGMASK    2       /* Restore signal mask in do_signal */
 
 #define _TLF_NAPPING           (1 << TLF_NAPPING)
+#define _TLF_SLEEPING          (1 << TLF_SLEEPING)
+#define _TLF_RESTORE_SIGMASK   (1 << TLF_RESTORE_SIGMASK)
+
+#ifndef __ASSEMBLY__
+#define HAVE_SET_RESTORE_SIGMASK       1
+static inline void set_restore_sigmask(void)
+{
+       struct thread_info *ti = current_thread_info();
+       ti->local_flags |= _TLF_RESTORE_SIGMASK;
+       set_bit(TIF_SIGPENDING, &ti->flags);
+}
+#endif /* !__ASSEMBLY__ */
 
 #endif /* __KERNEL__ */
 
index ce5de6e0e6907915f0982da71afbcc8d9d6590dd..febd581ec9b047a01b1ff67425fef02375e34b50 100644 (file)
@@ -33,6 +33,7 @@ extern unsigned      tb_to_us;
 
 struct rtc_time;
 extern void to_tm(int tim, struct rtc_time * tm);
+extern void GregorianDay(struct rtc_time *tm);
 extern time_t last_rtc_update;
 
 extern void generic_calibrate_decr(void);
index 88320a05f0a8738615bc8ea62c5cc606edf9ff15..5eb8e599e5cc37413dcf1dadd076edd984135f73 100644 (file)
 
 #ifdef __KERNEL__
 
+#include <linux/irqreturn.h>
+
 #ifdef CONFIG_XMON
 extern void xmon_setup(void);
 extern void xmon_register_spus(struct list_head *list);
+struct pt_regs;
+extern int xmon(struct pt_regs *excp);
+extern irqreturn_t xmon_irq(int, void *);
 #else
 static inline void xmon_setup(void) { };
 static inline void xmon_register_spus(struct list_head *list) { };
 #endif
 
+#if defined(CONFIG_XMON) && defined(CONFIG_SMP)
+extern int cpus_are_in_xmon(void);
+#endif
+
 #endif /* __KERNEL __ */
 #endif /* __ASM_POWERPC_XMON_H */
index afe338217d91cc0b3e0166c0d9511970f4401871..d3a74e00a3e13455b7ad7f6eec81d58727e40386 100644 (file)
@@ -24,4 +24,7 @@ static inline void of_device_free(struct of_device *dev)
        of_release_dev(&dev->dev);
 }
 
+extern ssize_t of_device_get_modalias(struct of_device *ofdev,
+                                       char *str, ssize_t len);
+
 #endif /* _LINUX_OF_DEVICE_H */