]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/commitdiff
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc
authorLinus Torvalds <torvalds@woody.linux-foundation.org>
Fri, 12 Oct 2007 04:55:47 +0000 (21:55 -0700)
committerLinus Torvalds <torvalds@woody.linux-foundation.org>
Fri, 12 Oct 2007 04:55:47 +0000 (21:55 -0700)
* 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc: (408 commits)
  [POWERPC] Add memchr() to the bootwrapper
  [POWERPC] Implement logging of unhandled signals
  [POWERPC] Add legacy serial support for OPB with flattened device tree
  [POWERPC] Use 1TB segments
  [POWERPC] XilinxFB: Allow fixed framebuffer base address
  [POWERPC] XilinxFB: Add support for custom screen resolution
  [POWERPC] XilinxFB: Use pdata to pass around framebuffer parameters
  [POWERPC] PCI: Add 64-bit physical address support to setup_indirect_pci
  [POWERPC] 4xx: Kilauea defconfig file
  [POWERPC] 4xx: Kilauea DTS
  [POWERPC] 4xx: Add AMCC Kilauea eval board support to platforms/40x
  [POWERPC] 4xx: Add AMCC 405EX support to cputable.c
  [POWERPC] Adjust TASK_SIZE on ppc32 systems to 3GB that are capable
  [POWERPC] Use PAGE_OFFSET to tell if an address is user/kernel in SW TLB handlers
  [POWERPC] 85xx: Enable FP emulation in MPC8560 ADS defconfig
  [POWERPC] 85xx: Killed <asm/mpc85xx.h>
  [POWERPC] 85xx: Add cpm nodes for 8541/8555 CDS
  [POWERPC] 85xx: Convert mpc8560ads to the new CPM binding.
  [POWERPC] mpc8272ads: Remove muram from the CPM reg property.
  [POWERPC] Make clockevents work on PPC601 processors
  ...

Fixed up conflict in Documentation/powerpc/booting-without-of.txt manually.

1  2 
Documentation/powerpc/booting-without-of.txt
MAINTAINERS
arch/powerpc/kernel/irq.c
arch/powerpc/platforms/44x/Kconfig
arch/powerpc/platforms/pasemi/Kconfig
arch/powerpc/platforms/pasemi/iommu.c
drivers/char/ipmi/ipmi_si_intf.c
drivers/net/ucc_geth.c
drivers/net/ucc_geth.h
include/linux/pci_ids.h
lib/Kconfig.debug

index 838fd323e79762f6d910a630a29970713c371fbe,7a6c5f2f3b00db65503a6813567dc9a8c4601060..a96e85397eb792cb10e5e5cc066664846a1b289e
@@@ -50,7 -50,7 +50,7 @@@ Table of Content
        g) Freescale SOC SEC Security Engines
        h) Board Control and Status (BCSR)
        i) Freescale QUICC Engine module (QE)
-       j) Flash chip nodes
+       j) CFI or JEDEC memory-mapped NOR flash
        k) Global Utilities Block
  
    VII - Specifying interrupt information for devices
@@@ -1510,7 -1510,10 +1510,10 @@@ platforms are moved over to use the fla
  
     i) Freescale QUICC Engine module (QE)
     This represents qe module that is installed on PowerQUICC II Pro.
-    Hopefully it will merge backward compatibility with CPM/CPM2.
+    NOTE:  This is an interim binding; it should be updated to fit
+    in with the CPM binding later in this document.
     Basically, it is a bus of devices, that could act more or less
     as a complete entity (UCC, USB etc ). All of them should be siblings on
     the "root" qe node, using the common properties from there.
     Required properties:
     - device_type : should be "spi".
     - compatible : should be "fsl_spi".
-    - mode : the SPI operation mode, it can be "cpu" or "qe".
+    - mode : the SPI operation mode, it can be "cpu" or "cpu-qe".
     - reg : Offset and length of the register set for the device
     - interrupts : <a b> where a is the interrupt number and b is a
       field that represents an encoding of the sense and level
                };
        };
  
-     j) Flash chip nodes
+    j) CFI or JEDEC memory-mapped NOR flash
  
      Flash chips (Memory Technology Devices) are often used for solid state
      file systems on embedded devices.
  
-     Required properties:
-      - device_type : has to be "rom"
-      - compatible : Should specify what this flash device is compatible with.
-        Currently, this is most likely to be "direct-mapped" (which
-        corresponds to the MTD physmap mapping driver).
-      - reg : Offset and length of the register set (or memory mapping) for
-        the device.
-      - bank-width : Width of the flash data bus in bytes. Required
-        for the NOR flashes (compatible == "direct-mapped" and others) ONLY.
+      - compatible : should contain the specific model of flash chip(s)
+        used, if known, followed by either "cfi-flash" or "jedec-flash"
+      - reg : Address range of the flash chip
+      - bank-width : Width (in bytes) of the flash bank.  Equal to the
+        device width times the number of interleaved chips.
+      - device-width : (optional) Width of a single flash chip.  If
+        omitted, assumed to be equal to 'bank-width'.
+      - #address-cells, #size-cells : Must be present if the flash has
+        sub-nodes representing partitions (see below).  In this case
+        both #address-cells and #size-cells must be equal to 1.
+     For JEDEC compatible devices, the following additional properties
+     are defined:
+      - vendor-id : Contains the flash chip's vendor id (1 byte).
+      - device-id : Contains the flash chip's device id (1 byte).
+     In addition to the information on the flash bank itself, the
+     device tree may optionally contain additional information
+     describing partitions of the flash address space.  This can be
+     used on platforms which have strong conventions about which
+     portions of the flash are used for what purposes, but which don't
+     use an on-flash partition table such as RedBoot.
+     Each partition is represented as a sub-node of the flash device.
+     Each node's name represents the name of the corresponding
+     partition of the flash device.
+     Flash partitions
+      - reg : The partition's offset and size within the flash bank.
+      - label : (optional) The label / name for this flash partition.
+        If omitted, the label is taken from the node name (excluding
+        the unit address).
+      - read-only : (optional) This parameter, if present, is a hint to
+        Linux that this flash partition should only be mounted
+        read-only.  This is usually used for flash partitions
+        containing early-boot firmware images or data which should not
+        be clobbered.
  
-     Recommended properties :
-      - partitions : Several pairs of 32-bit values where the first value is
-        partition's offset from the start of the device and the second one is
-        partition size in bytes with LSB used to signify a read only
-        partition (so, the partition size should always be an even number).
-      - partition-names : The list of concatenated zero terminated strings
-        representing the partition names.
-      - probe-type : The type of probe which should be done for the chip
-        (JEDEC vs CFI actually). Valid ONLY for NOR flashes.
-    Example:
+     Example:
  
-       flash@ff000000 {
-               device_type = "rom";
-               compatible = "direct-mapped";
-               probe-type = "CFI";
-               reg = <ff000000 01000000>;
-               bank-width = <4>;
-               partitions = <00000000 00f80000
-                             00f80000 00080001>;
-               partition-names = "fs\0firmware";
-       };
+       flash@ff000000 {
+               compatible = "amd,am29lv128ml", "cfi-flash";
+               reg = <ff000000 01000000>;
+               bank-width = <4>;
+               device-width = <1>;
+               #address-cells = <1>;
+               #size-cells = <1>;
+               fs@0 {
+                       label = "fs";
+                       reg = <0 f80000>;
+               };
+               firmware@f80000 {
+                       label ="firmware";
+                       reg = <f80000 80000>;
+                       read-only;
+               };
+       };
  
     k) Global Utilities Block
  
                fsl,has-rstcr;
        };
  
+    l) Freescale Communications Processor Module
+    NOTE: This is an interim binding, and will likely change slightly,
+    as more devices are supported.  The QE bindings especially are
+    incomplete.
+    i) Root CPM node
+    Properties:
+    - compatible : "fsl,cpm1", "fsl,cpm2", or "fsl,qe".
+    - reg : A 48-byte region beginning with CPCR.
+    Example:
+       cpm@119c0 {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               #interrupt-cells = <2>;
+               compatible = "fsl,mpc8272-cpm", "fsl,cpm2";
+               reg = <119c0 30>;
+       }
+    ii) Properties common to mulitple CPM/QE devices
+    - fsl,cpm-command : This value is ORed with the opcode and command flag
+                        to specify the device on which a CPM command operates.
+    - fsl,cpm-brg : Indicates which baud rate generator the device
+                    is associated with.  If absent, an unused BRG
+                    should be dynamically allocated.  If zero, the
+                    device uses an external clock rather than a BRG.
+    - reg : Unless otherwise specified, the first resource represents the
+            scc/fcc/ucc registers, and the second represents the device's
+            parameter RAM region (if it has one).
+    iii) Serial
+    Currently defined compatibles:
+    - fsl,cpm1-smc-uart
+    - fsl,cpm2-smc-uart
+    - fsl,cpm1-scc-uart
+    - fsl,cpm2-scc-uart
+    - fsl,qe-uart
+    Example:
+       serial@11a00 {
+               device_type = "serial";
+               compatible = "fsl,mpc8272-scc-uart",
+                            "fsl,cpm2-scc-uart";
+               reg = <11a00 20 8000 100>;
+               interrupts = <28 8>;
+               interrupt-parent = <&PIC>;
+               fsl,cpm-brg = <1>;
+               fsl,cpm-command = <00800000>;
+       };
+    iii) Network
+    Currently defined compatibles:
+    - fsl,cpm1-scc-enet
+    - fsl,cpm2-scc-enet
+    - fsl,cpm1-fec-enet
+    - fsl,cpm2-fcc-enet (third resource is GFEMR)
+    - fsl,qe-enet
+    Example:
+       ethernet@11300 {
+               device_type = "network";
+               compatible = "fsl,mpc8272-fcc-enet",
+                            "fsl,cpm2-fcc-enet";
+               reg = <11300 20 8400 100 11390 1>;
+               local-mac-address = [ 00 00 00 00 00 00 ];
+               interrupts = <20 8>;
+               interrupt-parent = <&PIC>;
+               phy-handle = <&PHY0>;
+               linux,network-index = <0>;
+               fsl,cpm-command = <12000300>;
+       };
+    iv) MDIO
+    Currently defined compatibles:
+    fsl,pq1-fec-mdio (reg is same as first resource of FEC device)
+    fsl,cpm2-mdio-bitbang (reg is port C registers)
+    Properties for fsl,cpm2-mdio-bitbang:
+    fsl,mdio-pin : pin of port C controlling mdio data
+    fsl,mdc-pin : pin of port C controlling mdio clock
+    Example:
+       mdio@10d40 {
+               device_type = "mdio";
+               compatible = "fsl,mpc8272ads-mdio-bitbang",
+                            "fsl,mpc8272-mdio-bitbang",
+                            "fsl,cpm2-mdio-bitbang";
+               reg = <10d40 14>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               fsl,mdio-pin = <12>;
+               fsl,mdc-pin = <13>;
+       };
+    v) Baud Rate Generators
+    Currently defined compatibles:
+    fsl,cpm-brg
+    fsl,cpm1-brg
+    fsl,cpm2-brg
+    Properties:
+    - reg : There may be an arbitrary number of reg resources; BRG
+      numbers are assigned to these in order.
+    - clock-frequency : Specifies the base frequency driving
+      the BRG.
+    Example:
+       brg@119f0 {
+               compatible = "fsl,mpc8272-brg",
+                            "fsl,cpm2-brg",
+                            "fsl,cpm-brg";
+               reg = <119f0 10 115f0 10>;
+               clock-frequency = <d#25000000>;
+       };
+    vi) Interrupt Controllers
+    Currently defined compatibles:
+    - fsl,cpm1-pic
+      - only one interrupt cell
+    - fsl,pq1-pic
+    - fsl,cpm2-pic
+      - second interrupt cell is level/sense:
+        - 2 is falling edge
+        - 8 is active low
+    Example:
+       interrupt-controller@10c00 {
+               #interrupt-cells = <2>;
+               interrupt-controller;
+               reg = <10c00 80>;
+               compatible = "mpc8272-pic", "fsl,cpm2-pic";
+       };
+    vii) USB (Universal Serial Bus Controller)
+    Properties:
+    - compatible : "fsl,cpm1-usb", "fsl,cpm2-usb", "fsl,qe-usb"
+    Example:
+       usb@11bc0 {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               compatible = "fsl,cpm2-usb";
+               reg = <11b60 18 8b00 100>;
+               interrupts = <b 8>;
+               interrupt-parent = <&PIC>;
+               fsl,cpm-command = <2e600000>;
+       };
+    viii) Multi-User RAM (MURAM)
+    The multi-user/dual-ported RAM is expressed as a bus under the CPM node.
+    Ranges must be set up subject to the following restrictions:
+    - Children's reg nodes must be offsets from the start of all muram, even
+      if the user-data area does not begin at zero.
+    - If multiple range entries are used, the difference between the parent
+      address and the child address must be the same in all, so that a single
+      mapping can cover them all while maintaining the ability to determine
+      CPM-side offsets with pointer subtraction.  It is recommended that
+      multiple range entries not be used.
+    - A child address of zero must be translatable, even if no reg resources
+      contain it.
+    A child "data" node must exist, compatible with "fsl,cpm-muram-data", to
+    indicate the portion of muram that is usable by the OS for arbitrary
+    purposes.  The data node may have an arbitrary number of reg resources,
+    all of which contribute to the allocatable muram pool.
+    Example, based on mpc8272:
+       muram@0 {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               ranges = <0 0 10000>;
+               data@0 {
+                       compatible = "fsl,cpm-muram-data";
+                       reg = <0 2000 9800 800>;
+               };
+       };
+    m) Chipselect/Local Bus
+    Properties:
+    - name : Should be localbus
+    - #address-cells : Should be either two or three.  The first cell is the
+                       chipselect number, and the remaining cells are the
+                       offset into the chipselect.
+    - #size-cells : Either one or two, depending on how large each chipselect
+                    can be.
+    - ranges : Each range corresponds to a single chipselect, and cover
+               the entire access window as configured.
+    Example:
+       localbus@f0010100 {
+               compatible = "fsl,mpc8272ads-localbus",
+                            "fsl,mpc8272-localbus",
+                            "fsl,pq2-localbus";
+               #address-cells = <2>;
+               #size-cells = <1>;
+               reg = <f0010100 40>;
+               ranges = <0 0 fe000000 02000000
+                         1 0 f4500000 00008000>;
+               flash@0,0 {
+                       compatible = "jedec-flash";
+                       reg = <0 0 2000000>;
+                       bank-width = <4>;
+                       device-width = <1>;
+               };
+               board-control@1,0 {
+                       reg = <1 0 20>;
+                       compatible = "fsl,mpc8272ads-bcsr";
+               };
+       };
  
-     h) 4xx/Axon EMAC ethernet nodes
++    n) 4xx/Axon EMAC ethernet nodes
 +
 +    The EMAC ethernet controller in IBM and AMCC 4xx chips, and also
 +    the Axon bridge.  To operate this needs to interact with a ths
 +    special McMAL DMA controller, and sometimes an RGMII or ZMII
 +    interface.  In addition to the nodes and properties described
 +    below, the node for the OPB bus on which the EMAC sits must have a
 +    correct clock-frequency property.
 +
 +      i) The EMAC node itself
 +
 +    Required properties:
 +    - device_type       : "network"
 +
 +    - compatible        : compatible list, contains 2 entries, first is
 +                        "ibm,emac-CHIP" where CHIP is the host ASIC (440gx,
 +                        405gp, Axon) and second is either "ibm,emac" or
 +                        "ibm,emac4".  For Axon, thus, we have: "ibm,emac-axon",
 +                        "ibm,emac4"
 +    - interrupts        : <interrupt mapping for EMAC IRQ and WOL IRQ>
 +    - interrupt-parent  : optional, if needed for interrupt mapping
 +    - reg               : <registers mapping>
 +    - local-mac-address : 6 bytes, MAC address
 +    - mal-device        : phandle of the associated McMAL node
 +    - mal-tx-channel    : 1 cell, index of the tx channel on McMAL associated
 +                        with this EMAC
 +    - mal-rx-channel    : 1 cell, index of the rx channel on McMAL associated
 +                        with this EMAC
 +    - cell-index        : 1 cell, hardware index of the EMAC cell on a given
 +                        ASIC (typically 0x0 and 0x1 for EMAC0 and EMAC1 on
 +                        each Axon chip)
 +    - max-frame-size    : 1 cell, maximum frame size supported in bytes
 +    - rx-fifo-size      : 1 cell, Rx fifo size in bytes for 10 and 100 Mb/sec
 +                        operations.
 +                        For Axon, 2048
 +    - tx-fifo-size      : 1 cell, Tx fifo size in bytes for 10 and 100 Mb/sec
 +                        operations.
 +                        For Axon, 2048.
 +    - fifo-entry-size   : 1 cell, size of a fifo entry (used to calculate
 +                        thresholds).
 +                        For Axon, 0x00000010
 +    - mal-burst-size    : 1 cell, MAL burst size (used to calculate thresholds)
 +                        in bytes.
 +                        For Axon, 0x00000100 (I think ...)
 +    - phy-mode          : string, mode of operations of the PHY interface.
 +                        Supported values are: "mii", "rmii", "smii", "rgmii",
 +                        "tbi", "gmii", rtbi", "sgmii".
 +                        For Axon on CAB, it is "rgmii"
 +    - mdio-device       : 1 cell, required iff using shared MDIO registers
 +                        (440EP).  phandle of the EMAC to use to drive the
 +                        MDIO lines for the PHY used by this EMAC.
 +    - zmii-device       : 1 cell, required iff connected to a ZMII.  phandle of
 +                        the ZMII device node
 +    - zmii-channel      : 1 cell, required iff connected to a ZMII.  Which ZMII
 +                        channel or 0xffffffff if ZMII is only used for MDIO.
 +    - rgmii-device      : 1 cell, required iff connected to an RGMII. phandle
 +                        of the RGMII device node.
 +                        For Axon: phandle of plb5/plb4/opb/rgmii
 +    - rgmii-channel     : 1 cell, required iff connected to an RGMII.  Which
 +                        RGMII channel is used by this EMAC.
 +                        Fox Axon: present, whatever value is appropriate for each
 +                        EMAC, that is the content of the current (bogus) "phy-port"
 +                        property.
 +
 +    Recommended properties:
 +    - linux,network-index : This is the intended "index" of this
 +      network device.  This is used by the bootwrapper to interpret
 +      MAC addresses passed by the firmware when no information other
 +      than indices is available to associate an address with a device.
 +
 +    Optional properties:
 +    - phy-address       : 1 cell, optional, MDIO address of the PHY. If absent,
 +                        a search is performed.
 +    - phy-map           : 1 cell, optional, bitmap of addresses to probe the PHY
 +                        for, used if phy-address is absent. bit 0x00000001 is
 +                        MDIO address 0.
 +                        For Axon it can be absent, thouugh my current driver
 +                        doesn't handle phy-address yet so for now, keep
 +                        0x00ffffff in it.
 +    - rx-fifo-size-gige : 1 cell, Rx fifo size in bytes for 1000 Mb/sec
 +                        operations (if absent the value is the same as
 +                        rx-fifo-size).  For Axon, either absent or 2048.
 +    - tx-fifo-size-gige : 1 cell, Tx fifo size in bytes for 1000 Mb/sec
 +                        operations (if absent the value is the same as
 +                        tx-fifo-size). For Axon, either absent or 2048.
 +    - tah-device        : 1 cell, optional. If connected to a TAH engine for
 +                        offload, phandle of the TAH device node.
 +    - tah-channel       : 1 cell, optional. If appropriate, channel used on the
 +                        TAH engine.
 +
 +    Example:
 +
 +      EMAC0: ethernet@40000800 {
 +              linux,network-index = <0>;
 +              device_type = "network";
 +              compatible = "ibm,emac-440gp", "ibm,emac";
 +              interrupt-parent = <&UIC1>;
 +              interrupts = <1c 4 1d 4>;
 +              reg = <40000800 70>;
 +              local-mac-address = [00 04 AC E3 1B 1E];
 +              mal-device = <&MAL0>;
 +              mal-tx-channel = <0 1>;
 +              mal-rx-channel = <0>;
 +              cell-index = <0>;
 +              max-frame-size = <5dc>;
 +              rx-fifo-size = <1000>;
 +              tx-fifo-size = <800>;
 +              phy-mode = "rmii";
 +              phy-map = <00000001>;
 +              zmii-device = <&ZMII0>;
 +              zmii-channel = <0>;
 +      };
 +
 +      ii) McMAL node
 +
 +    Required properties:
 +    - device_type        : "dma-controller"
 +    - compatible         : compatible list, containing 2 entries, first is
 +                         "ibm,mcmal-CHIP" where CHIP is the host ASIC (like
 +                         emac) and the second is either "ibm,mcmal" or
 +                         "ibm,mcmal2".
 +                         For Axon, "ibm,mcmal-axon","ibm,mcmal2"
 +    - interrupts         : <interrupt mapping for the MAL interrupts sources:
 +                           5 sources: tx_eob, rx_eob, serr, txde, rxde>.
 +                           For Axon: This is _different_ from the current
 +                         firmware.  We use the "delayed" interrupts for txeob
 +                         and rxeob. Thus we end up with mapping those 5 MPIC
 +                         interrupts, all level positive sensitive: 10, 11, 32,
 +                         33, 34 (in decimal)
 +    - dcr-reg            : < DCR registers range >
 +    - dcr-parent         : if needed for dcr-reg
 +    - num-tx-chans       : 1 cell, number of Tx channels
 +    - num-rx-chans       : 1 cell, number of Rx channels
 +
 +      iii) ZMII node
 +
 +    Required properties:
 +    - compatible         : compatible list, containing 2 entries, first is
 +                         "ibm,zmii-CHIP" where CHIP is the host ASIC (like
 +                         EMAC) and the second is "ibm,zmii".
 +                         For Axon, there is no ZMII node.
 +    - reg                : <registers mapping>
 +
 +      iv) RGMII node
 +
 +    Required properties:
 +    - compatible         : compatible list, containing 2 entries, first is
 +                         "ibm,rgmii-CHIP" where CHIP is the host ASIC (like
 +                         EMAC) and the second is "ibm,rgmii".
 +                           For Axon, "ibm,rgmii-axon","ibm,rgmii"
 +    - reg                : <registers mapping>
 +    - revision           : as provided by the RGMII new version register if
 +                         available.
 +                         For Axon: 0x0000012a
 +
     More devices will be defined as this spec matures.
  
  VII - Specifying interrupt information for devices
diff --combined MAINTAINERS
index 8a1360045c2d65024b5cc5ff14db6ca214148bbe,559c5fc8645c6eaec6c0e68b34dd12fb06adba4f..c4eca56ed5bf75d7ca1626adc247853a75bf6a22
@@@ -284,14 -284,6 +284,14 @@@ M:       corentin.labbe@geomatys.f
  L:    lm-sensors@lm-sensors.org
  S:    Maintained
  
 +ADM8211 WIRELESS DRIVER
 +P:    Michael Wu
 +M:    flamingice@sourmilk.net
 +L:    linux-wireless@vger.kernel.org
 +W:    http://linuxwireless.org/
 +T:    git kernel.org:/pub/scm/linux/kernel/git/mwu/mac80211-drivers.git
 +S:    Maintained
 +
  ADT746X FAN DRIVER
  P:    Colin Leroy
  M:    colin@colino.net
@@@ -726,8 -718,34 +726,8 @@@ M:        rpurdie@rpsys.ne
  S:    Maintained
  
  BLACKFIN ARCHITECTURE
 -P:    Aubrey Li
 -M:    aubrey.li@analog.com
 -P:    Bernd Schmidt
 -M:    bernd.schmidt@analog.com
  P:    Bryan Wu
  M:    bryan.wu@analog.com
 -P:    Grace Pan
 -M:    grace.pan@analog.com
 -P:    Marc Hoffman
 -M:    marc.hoffman@analog.com
 -P:    Michael Hennerich
 -M:    michael.hennerich@analog.com
 -P:    Mike Frysinger
 -M:    michael.frysinger@analog.com
 -P:    Jerry Zeng
 -M:    jerry.zeng@analog.com
 -P:    Jie Zhang
 -M:    jie.zhang@analog.com
 -P:    Robin Getz
 -M:    robin.getz@analog.com
 -P:    Roy Huang
 -M:    roy.huang@analog.com
 -P:    Sonic Zhang
 -M:    sonic.zhang@analog.com
 -P:    Vivi Li
 -M:    vivi.li@analog.com
 -P:    Yi Li
 -M:    yi.li@analog.com
  L:    uclinux-dist-devel@blackfin.uclinux.org (subscribers-only)
  W:    http://blackfin.uclinux.org
  S:    Supported
@@@ -769,22 -787,6 +769,22 @@@ L:       linux-hams@vger.kernel.or
  W:    http://www.baycom.org/~tom/ham/ham.html
  S:    Maintained
  
 +B43 WIRELESS DRIVER
 +P:    Michael Buesch
 +M:    mb@bu3sch.de
 +P:    Stefano Brivio
 +M:    st3@riseup.net
 +L:    linux-wireless@vger.kernel.org
 +W:    http://bcm43xx.berlios.de/
 +S:    Maintained
 +
 +B43LEGACY WIRELESS DRIVER
 +P:    Larry Finger
 +M:    Larry.Finger@lwfinger.net
 +L:    linux-wireless@vger.kernel.org
 +W:    http://bcm43xx.berlios.de/
 +S:    Maintained
 +
  BCM43XX WIRELESS DRIVER (SOFTMAC BASED VERSION)
  P:    Larry Finger
  M:    Larry.Finger@lwfinger.net
@@@ -1248,6 -1250,12 +1248,6 @@@ L:     Eng.Linux@digi.co
  W:    http://www.digi.com
  S:    Orphaned
  
 -DIGI RIGHTSWITCH NETWORK DRIVER
 -P:    Rick Richardson
 -L:    netdev@vger.kernel.org
 -W:    http://www.digi.com
 -S:    Orphaned
 -
  DIRECTORY NOTIFICATION
  P:    Stephen Rothwell
  M:    sfr@canb.auug.org.au
@@@ -1535,7 -1543,7 +1535,7 @@@ P:      Pantelis Antonio
  M:    pantelis.antoniou@gmail.com
  P:    Vitaly Bordug
  M:    vbordug@ru.mvista.com
- L:    linuxppc-embedded@ozlabs.org
+ L:    linuxppc-dev@ozlabs.org
  L:    netdev@vger.kernel.org
  S:    Maintained
  
@@@ -1543,14 -1551,14 +1543,14 @@@ FREESCALE HIGHSPEED USB DEVICE DRIVE
  P:    Li Yang
  M:    leoli@freescale.com
  L:    linux-usb-devel@lists.sourceforge.net
- L:    linuxppc-embedded@ozlabs.org
+ L:    linuxppc-dev@ozlabs.org
  S:    Maintained
  
  FREESCALE QUICC ENGINE UCC ETHERNET DRIVER
  P:    Li Yang
  M:    leoli@freescale.com
  L:    netdev@vger.kernel.org
- L:    linuxppc-embedded@ozlabs.org
+ L:    linuxppc-dev@ozlabs.org
  S:    Maintained
  
  FILE LOCKING (flock() and fcntl()/lockf())
@@@ -2014,14 -2022,16 +2014,14 @@@ W:   http://sourceforge.net/projects/e100
  S:    Supported
  
  INTEL PRO/10GbE SUPPORT
 -P:    Jeff Kirsher
 -M:    jeffrey.t.kirsher@intel.com
  P:    Ayyappan Veeraiyan
  M:    ayyappan.veeraiyan@intel.com
 -P:    John Ronciak
 -M:    john.ronciak@intel.com
 -P:    Jesse Brandeburg
 -M:    jesse.brandeburg@intel.com
  P:    Auke Kok
  M:    auke-jan.h.kok@intel.com
 +P:    Jesse Brandeburg
 +M:    jesse.brandeburg@intel.com
 +P:    John Ronciak
 +M:    john.ronciak@intel.com
  L:    e1000-devel@lists.sourceforge.net
  W:    http://sourceforge.net/projects/e1000/
  S:    Supported
@@@ -2048,15 -2058,6 +2048,15 @@@ L:    http://lists.sourceforge.net/mailman
  W:    http://ipw2200.sourceforge.net
  S:    Supported
  
 +INTEL WIRELESS WIFI LINK (iwlwifi)
 +P:    Zhu Yi
 +M:    yi.zhu@intel.com
 +L:    linux-wireless@vger.kernel.org
 +L:    ipw3945-devel@lists.sourceforge.net
 +W:    http://intellinuxwireless.org
 +T:    git git://intellinuxwireless.org/repos/iwlwifi
 +S:    Supported
 +
  IOC3 ETHERNET DRIVER
  P:    Ralf Baechle
  M:    ralf@linux-mips.org
@@@ -2074,16 -2075,6 +2074,16 @@@ P:    Juanjo Ciarlant
  M:    jjciarla@raiz.uncu.edu.ar
  S:    Maintained
  
 +IP1000A 10/100/1000 GIGABIT ETHERNET DRIVER
 +P:    Francois Romieu
 +M:    romieu@fr.zoreil.com
 +P:    Sorbica Shieh
 +M:    sorbica@icplus.com.tw
 +P:    Jesse Huang
 +M:    jesse@icplus.com.tw
 +L:    netdev@vger.kernel.org
 +S:    Maintained
 +
  IPATH DRIVER:
  P:    Arthur Jones
  M:    infinipath@qlogic.com
@@@ -2297,38 -2288,49 +2297,49 @@@ S:   Maintaine
  LINUX FOR POWERPC EMBEDDED MPC52XX
  P:    Sylvain Munaut
  M:    tnt@246tNt.com
+ P:    Grant Likely
+ M:    grant.likely@secretlab.ca
  W:    http://www.246tNt.com/mpc52xx/
  W:    http://www.penguinppc.org/
  L:    linuxppc-dev@ozlabs.org
- L:    linuxppc-embedded@ozlabs.org
  S:    Maintained
  
  LINUX FOR POWERPC EMBEDDED PPC4XX
+ P:    Josh Boyer
+ M:    jwboyer@linux.vnet.ibm.com
  P:    Matt Porter
  M:    mporter@kernel.crashing.org
  W:    http://www.penguinppc.org/
- L:    linuxppc-embedded@ozlabs.org
+ L:    linuxppc-dev@ozlabs.org
+ T:    git kernel.org:/pub/scm/linux/kernel/git/jwboyer/powerpc.git
+ S:    Maintained
+ LINUX FOR POWERPC EMBEDDED XILINX VIRTEX
+ P:    Grant Likely
+ M:    grant.likely@secretlab.ca
+ W:    http://wiki.secretlab.ca/index.php/Linux_on_Xilinx_Virtex
+ L:    linuxppc-dev@ozlabs.org
  S:    Maintained
  
  LINUX FOR POWERPC BOOT CODE
  P:    Tom Rini
  M:    trini@kernel.crashing.org
  W:    http://www.penguinppc.org/
- L:    linuxppc-embedded@ozlabs.org
+ L:    linuxppc-dev@ozlabs.org
  S:    Maintained
  
  LINUX FOR POWERPC EMBEDDED PPC8XX
  P:    Marcelo Tosatti
  M:    marcelo@kvack.org
  W:    http://www.penguinppc.org/
- L:    linuxppc-embedded@ozlabs.org
+ L:    linuxppc-dev@ozlabs.org
  S:    Maintained
  
  LINUX FOR POWERPC EMBEDDED PPC83XX AND PPC85XX
  P:    Kumar Gala
  M:    galak@kernel.crashing.org
  W:    http://www.penguinppc.org/
- L:    linuxppc-embedded@ozlabs.org
+ L:    linuxppc-dev@ozlabs.org
  S:    Maintained
  
  LINUX FOR POWERPC PA SEMI PWRFICIENT
@@@ -2570,18 -2572,12 +2581,18 @@@ L:   linux-kernel@vger.kernel.or
  W:    http://www.atnf.csiro.au/~rgooch/linux/kernel-patches.html
  S:    Maintained
  
 -MULTIMEDIA CARD (MMC) AND SECURE DIGITAL (SD) SUBSYSTEM
 +MULTIMEDIA CARD (MMC), SECURE DIGITAL (SD) AND SDIO SUBSYSTEM
  P:    Pierre Ossman
  M:    drzeus-mmc@drzeus.cx
  L:    linux-kernel@vger.kernel.org
  S:    Maintained
  
 +MULTIMEDIA CARD (MMC) ETC. OVER SPI
 +P:    David Brownell
 +M:    dbrownell@users.sourceforge.net
 +L:    linux-kernel@vger.kernel.org
 +S:    Odd fixes
 +
  MULTISOUND SOUND DRIVER
  P:    Andrew Veliath
  M:    andrewtv@usa.net
@@@ -2990,7 -2986,7 +3001,7 @@@ POWERPC 4xx EMAC DRIVE
  P:    Eugene Surovegin
  M:    ebs@ebshome.net
  W:    http://kernel.ebshome.net/emac/
- L:    linuxppc-embedded@ozlabs.org
+ L:    linuxppc-dev@ozlabs.org
  L:    netdev@vger.kernel.org
  S:    Maintained
  
@@@ -3034,14 -3030,6 +3045,14 @@@ L:    kpreempt-tech@lists.sourceforge.ne
  W:    ftp://ftp.kernel.org/pub/linux/kernel/people/rml/preempt-kernel
  S:    Supported
  
 +P54 WIRELESS DRIVER
 +P:    Michael Wu
 +M:    flamingice@sourmilk.net
 +L:    linux-wireless@vger.kernel.org
 +W:    http://prism54.org
 +T:    git kernel.org:/pub/scm/linux/kernel/git/mwu/mac80211-drivers.git
 +S:    Maintained
 +
  PRISM54 WIRELESS DRIVER
  P:    Luis R. Rodriguez
  M:    mcgrof@gmail.com
@@@ -3129,14 -3117,6 +3140,14 @@@ M:    corey@world.std.co
  L:    linux-wireless@vger.kernel.org
  S:    Maintained
  
 +RALINK RT2X00 WLAN DRIVER
 +P:    rt2x00 project
 +L:    linux-wireless@vger.kernel.org
 +L:    rt2400-devel@lists.sourceforge.net
 +W:    http://rt2x00.serialmonkey.com/
 +S:    Maintained
 +F:    drivers/net/wireless/rt2x00/
 +
  RANDOM NUMBER DRIVER
  P:    Matt Mackall
  M:    mpm@selenic.com
@@@ -3222,8 -3202,8 +3233,8 @@@ W:      http://www.ibm.com/developerworks/li
  S:    Supported
  
  S390 NETWORK DRIVERS
 -P:    Frank Pavlic
 -M:    fpavlic@de.ibm.com
 +P:    Ursula Braun
 +M:    ubraun@linux.vnet.ibm.com
  M:    linux390@de.ibm.com
  L:    linux-s390@vger.kernel.org
  W:    http://www.ibm.com/developerworks/linux/linux390/
@@@ -3237,14 -3217,6 +3248,14 @@@ L:    linux-s390@vger.kernel.or
  W:    http://www.ibm.com/developerworks/linux/linux390/
  S:    Supported
  
 +S390 IUCV NETWORK LAYER
 +P:    Ursula Braun
 +M:    ubraun@linux.vnet.ibm.com
 +M:    linux390@de.ibm.com
 +L:    linux-s390@vger.kernel.org
 +W:    http://www.ibm.com/developerworks/linux/linux390/
 +S:    Supported
 +
  SAA7146 VIDEO4LINUX-2 DRIVER
  P:    Michael Hunold
  M:    michael@mihu.de
@@@ -3469,12 -3441,6 +3480,12 @@@ M:    tsbogend@alpha.franken.d
  L:    netdev@vger.kernel.org
  S:    Maintained
  
 +SONICS SILICON BACKPLANE DRIVER (SSB)
 +P:    Michael Buesch
 +M:    mb@bu3sch.de
 +L:    netdev@vger.kernel.org
 +S:    Maintained
 +
  SONY VAIO CONTROL DEVICE DRIVER
  P:    Mattia Dongili
  M:    malattia@linux.it
@@@ -3659,14 -3625,6 +3670,14 @@@ M:    hlhung3i@gmail.co
  W:    http://tcp-lp-mod.sourceforge.net/
  S:    Maintained
  
 +TEHUTI ETHERNET DRIVER
 +P:    Alexander Indenbaum
 +M:    baum@tehutinetworks.net
 +P:    Andy Gospodarek
 +M:    andy@greyhouse.net
 +L:    netdev@vger.kernel.org
 +S:    Supported
 +
  TI FLASH MEDIA INTERFACE DRIVER
  P:      Alex Dubov
  M:      oakad@yahoo.com
@@@ -4229,13 -4187,6 +4240,13 @@@ W:    http://oss.sgi.com/projects/xf
  T:    git git://oss.sgi.com:8090/xfs/xfs-2.6.git
  S:    Supported
  
 +XILINX SYSTEMACE DRIVER
 +P:    Grant Likely
 +M:    grant.likely@secretlab.ca
 +W:    http://www.secretlab.ca/
 +L:    linux-kernel@vger.kernel.org
 +S:    Maintained
 +
  XILINX UARTLITE SERIAL DRIVER
  P:    Peter Korsgaard
  M:    jacmet@sunsite.dk
index 9bf63d5256dbeec42f0fc1a610bdac16e0fcdc12,151b1311920834f6a2202d5f5584b9f9ff2b8662..2250f9e6c5ca0ceb517a571bebc8967a9b1dcd4f
@@@ -52,6 -52,7 +52,7 @@@
  #include <linux/mutex.h>
  #include <linux/bootmem.h>
  #include <linux/pci.h>
+ #include <linux/debugfs.h>
  
  #include <asm/uaccess.h>
  #include <asm/system.h>
@@@ -272,7 -273,7 +273,7 @@@ void do_IRQ(struct pt_regs *regs
        struct thread_info *curtp, *irqtp;
  #endif
  
-         irq_enter();
+       irq_enter();
  
  #ifdef CONFIG_DEBUG_STACKOVERFLOW
        /* Debugging check for stack overflow: is there less than 2KB free? */
                /* That's not SMP safe ... but who cares ? */
                ppc_spurious_interrupts++;
  
-         irq_exit();
+       irq_exit();
        set_irq_regs(old_regs);
  
  #ifdef CONFIG_PPC_ISERIES
@@@ -395,6 -396,7 +396,6 @@@ void do_softirq(void
  
        local_irq_restore(flags);
  }
 -EXPORT_SYMBOL(do_softirq);
  
  
  /*
@@@ -417,10 -419,16 +418,16 @@@ irq_hw_number_t virq_to_hw(unsigned in
  }
  EXPORT_SYMBOL_GPL(virq_to_hw);
  
- __init_refok struct irq_host *irq_alloc_host(unsigned int revmap_type,
-                                               unsigned int revmap_arg,
-                                               struct irq_host_ops *ops,
-                                               irq_hw_number_t inval_irq)
+ static int default_irq_host_match(struct irq_host *h, struct device_node *np)
+ {
+       return h->of_node != NULL && h->of_node == np;
+ }
+ struct irq_host *irq_alloc_host(struct device_node *of_node,
+                               unsigned int revmap_type,
+                               unsigned int revmap_arg,
+                               struct irq_host_ops *ops,
+                               irq_hw_number_t inval_irq)
  {
        struct irq_host *host;
        unsigned int size = sizeof(struct irq_host);
        /* Allocate structure and revmap table if using linear mapping */
        if (revmap_type == IRQ_HOST_MAP_LINEAR)
                size += revmap_arg * sizeof(unsigned int);
-       if (mem_init_done)
-               host = kzalloc(size, GFP_KERNEL);
-       else {
-               host = alloc_bootmem(size);
-               if (host)
-                       memset(host, 0, size);
-       }
+       host = zalloc_maybe_bootmem(size, GFP_KERNEL);
        if (host == NULL)
                return NULL;
  
        host->revmap_type = revmap_type;
        host->inval_irq = inval_irq;
        host->ops = ops;
+       host->of_node = of_node;
+       if (host->ops->match == NULL)
+               host->ops->match = default_irq_host_match;
  
        spin_lock_irqsave(&irq_big_lock, flags);
  
                host->inval_irq = 0;
                /* setup us as the host for all legacy interrupts */
                for (i = 1; i < NUM_ISA_INTERRUPTS; i++) {
-                       irq_map[i].hwirq = 0;
+                       irq_map[i].hwirq = i;
                        smp_wmb();
                        irq_map[i].host = host;
                        smp_wmb();
@@@ -520,7 -526,7 +525,7 @@@ struct irq_host *irq_find_host(struct d
         */
        spin_lock_irqsave(&irq_big_lock, flags);
        list_for_each_entry(h, &irq_hosts, link)
-               if (h->ops->match == NULL || h->ops->match(h, node)) {
+               if (h->ops->match(h, node)) {
                        found = h;
                        break;
                }
@@@ -995,6 -1001,68 +1000,68 @@@ static int irq_late_init(void
  }
  arch_initcall(irq_late_init);
  
+ #ifdef CONFIG_VIRQ_DEBUG
+ static int virq_debug_show(struct seq_file *m, void *private)
+ {
+       unsigned long flags;
+       irq_desc_t *desc;
+       const char *p;
+       char none[] = "none";
+       int i;
+       seq_printf(m, "%-5s  %-7s  %-15s  %s\n", "virq", "hwirq",
+                     "chip name", "host name");
+       for (i = 1; i < NR_IRQS; i++) {
+               desc = get_irq_desc(i);
+               spin_lock_irqsave(&desc->lock, flags);
+               if (desc->action && desc->action->handler) {
+                       seq_printf(m, "%5d  ", i);
+                       seq_printf(m, "0x%05lx  ", virq_to_hw(i));
+                       if (desc->chip && desc->chip->typename)
+                               p = desc->chip->typename;
+                       else
+                               p = none;
+                       seq_printf(m, "%-15s  ", p);
+                       if (irq_map[i].host && irq_map[i].host->of_node)
+                               p = irq_map[i].host->of_node->full_name;
+                       else
+                               p = none;
+                       seq_printf(m, "%s\n", p);
+               }
+               spin_unlock_irqrestore(&desc->lock, flags);
+       }
+       return 0;
+ }
+ static int virq_debug_open(struct inode *inode, struct file *file)
+ {
+       return single_open(file, virq_debug_show, inode->i_private);
+ }
+ static const struct file_operations virq_debug_fops = {
+       .open = virq_debug_open,
+       .read = seq_read,
+       .llseek = seq_lseek,
+       .release = single_release,
+ };
+ static int __init irq_debugfs_init(void)
+ {
+       if (debugfs_create_file("virq_mapping", S_IRUGO, powerpc_debugfs_root,
+                                NULL, &virq_debug_fops))
+               return -ENOMEM;
+       return 0;
+ }
+ __initcall(irq_debugfs_init);
+ #endif /* CONFIG_VIRQ_DEBUG */
  #endif /* CONFIG_PPC_MERGE */
  
  #ifdef CONFIG_PPC64
index 8e66949e7c67c0b391b41e1beeafa57f5112de35,f28acdcbd6c9234ef3917dc37256f10f07e5ee11..51f3ea40a285be0c24e3aadd1a24034a34857742
@@@ -1,10 -1,10 +1,10 @@@
#config BAMBOO
#     bool "Bamboo"
#     depends on 44x
#     default n
#     select 440EP
#     help
#       This option enables support for the IBM PPC440EP evaluation board.
+ config BAMBOO
      bool "Bamboo"
      depends on 44x
      default n
      select 440EP
      help
        This option enables support for the IBM PPC440EP evaluation board.
  
  config EBONY
        bool "Ebony"
        help
          This option enables support for the IBM PPC440GP evaluation board.
  
+ config SEQUOIA
+       bool "Sequoia"
+       depends on 44x
+       default n
+       select 440EPX
+       help
+         This option enables support for the AMCC PPC440EPX evaluation board.
  #config LUAN
  #     bool "Luan"
  #     depends on 44x
@@@ -35,10 -43,19 +43,18 @@@ config 440E
        bool
        select PPC_FPU
        select IBM440EP_ERR42
+ #     select IBM_NEW_EMAC_ZMII
+ config 440EPX
+       bool
+       select PPC_FPU
+ # Disabled until the new EMAC Driver is merged.
+ #     select IBM_NEW_EMAC_EMAC4
+ #     select IBM_NEW_EMAC_ZMII
  
  config 440GP
        bool
 -# Disabled until the new EMAC Driver is merged.
 -#     select IBM_NEW_EMAC_ZMII
 +      select IBM_NEW_EMAC_ZMII
  
  config 440GX
        bool
@@@ -48,7 -65,7 +64,7 @@@ config 440S
  
  config 440A
        bool
-       depends on 440GX
+       depends on 440GX || 440EPX
        default y
  
  # 44x errata/workaround config symbols, selected by the CPU models above
index e95261ef6f98e6d0c4edd28e6cc7fb2eab7f05a8,117d90aa500840336f1bca64827b3e3c2049e7e4..735e1536cbfc15dc93a01d517d55245190694ab6
@@@ -5,6 -5,7 +5,7 @@@ config PPC_PASEM
        select MPIC
        select PPC_UDBG_16550
        select PPC_NATIVE
+       select MPIC_BROKEN_REGREAD
        help
          This option enables support for PA Semi's PWRficient line
          of SoC processors, including PA6T-1682M
@@@ -18,16 -19,6 +19,16 @@@ config PPC_PASEMI_IOMM
        help
          IOMMU support for PA6T-1682M
  
 +config PPC_PASEMI_IOMMU_DMA_FORCE
 +      bool "Force DMA engine to use IOMMU"
 +      depends on PPC_PASEMI_IOMMU
 +      help
 +        This option forces the use of the IOMMU also for the
 +        DMA engine. Otherwise the kernel will use it only when
 +        running under a hypervisor.
 +
 +        If in doubt, say "N".
 +
  config PPC_PASEMI_MDIO
        depends on PHYLIB
        tristate "MDIO support via GPIO"
index a1111b5c6cb467fbdabdd03c3f57ed52b9fe9347,6c42787fb38263659c0c43824ee60a5cf374402e..9916a0f3e431955ba78117207e96038841b22ce6
@@@ -25,7 -25,6 +25,7 @@@
  #include <asm/iommu.h>
  #include <asm/machdep.h>
  #include <asm/abs_addr.h>
 +#include <asm/firmware.h>
  
  
  #define IOBMAP_PAGE_SHIFT     12
@@@ -176,23 -175,19 +176,23 @@@ static void pci_dma_dev_setup_pasemi(st
  {
        pr_debug("pci_dma_dev_setup, dev %p (%s)\n", dev, pci_name(dev));
  
 -      /* DMA device is untranslated, but all other PCI-e goes through
 -       * the IOMMU
 +#if !defined(CONFIG_PPC_PASEMI_IOMMU_DMA_FORCE)
 +      /* For non-LPAR environment, don't translate anything for the DMA
 +       * engine. The exception to this is if the user has enabled
 +       * CONFIG_PPC_PASEMI_IOMMU_DMA_FORCE at build time.
         */
 -      if (dev->vendor == 0x1959 && dev->device == 0xa007)
 +      if (dev->vendor == 0x1959 && dev->device == 0xa007 &&
 +          !firmware_has_feature(FW_FEATURE_LPAR))
                dev->dev.archdata.dma_ops = &dma_direct_ops;
 -      else
 -              dev->dev.archdata.dma_data = &iommu_table_iobmap;
 +#endif
 +
 +      dev->dev.archdata.dma_data = &iommu_table_iobmap;
  }
  
  static void pci_dma_bus_setup_null(struct pci_bus *b) { }
  static void pci_dma_dev_setup_null(struct pci_dev *d) { }
  
- int iob_init(struct device_node *dn)
+ int __init iob_init(struct device_node *dn)
  {
        unsigned long tmp;
        u32 regword;
  
  
  /* These are called very early. */
- void iommu_init_early_pasemi(void)
+ void __init iommu_init_early_pasemi(void)
  {
        int iommu_off;
  
index 7901d5f218ec95ab3751ee988a8dc4b54da85642,1dd3a065f57ba50b40bd365aeb35c5d942f00fac..a2894d42515344b5e2951d96d8b0a3849a1b8b37
@@@ -1965,10 -1965,10 +1965,10 @@@ struct dmi_ipmi_dat
        u8              slave_addr;
  };
  
 -static int __devinit decode_dmi(struct dmi_header *dm,
 +static int __devinit decode_dmi(const struct dmi_header *dm,
                                struct dmi_ipmi_data *dmi)
  {
 -      u8              *data = (u8 *)dm;
 +      const u8        *data = (const u8 *)dm;
        unsigned long   base_addr;
        u8              reg_spacing;
        u8              len = dm->length;
@@@ -2091,14 -2091,13 +2091,14 @@@ static __devinit void try_init_dmi(stru
  
  static void __devinit dmi_find_bmc(void)
  {
 -      struct dmi_device    *dev = NULL;
 +      const struct dmi_device *dev = NULL;
        struct dmi_ipmi_data data;
        int                  rv;
  
        while ((dev = dmi_find_device(DMI_DEV_TYPE_IPMI, NULL, dev))) {
                memset(&data, 0, sizeof(data));
 -              rv = decode_dmi((struct dmi_header *) dev->device_data, &data);
 +              rv = decode_dmi((const struct dmi_header *) dev->device_data,
 +                              &data);
                if (!rv)
                        try_init_dmi(&data);
        }
@@@ -2253,19 -2252,19 +2253,19 @@@ static int __devinit ipmi_of_probe(stru
                return ret;
        }
  
-       regsize = get_property(np, "reg-size", &proplen);
+       regsize = of_get_property(np, "reg-size", &proplen);
        if (regsize && proplen != 4) {
                dev_warn(&dev->dev, PFX "invalid regsize from OF\n");
                return -EINVAL;
        }
  
-       regspacing = get_property(np, "reg-spacing", &proplen);
+       regspacing = of_get_property(np, "reg-spacing", &proplen);
        if (regspacing && proplen != 4) {
                dev_warn(&dev->dev, PFX "invalid regspacing from OF\n");
                return -EINVAL;
        }
  
-       regshift = get_property(np, "reg-shift", &proplen);
+       regshift = of_get_property(np, "reg-shift", &proplen);
        if (regshift && proplen != 4) {
                dev_warn(&dev->dev, PFX "invalid regshift from OF\n");
                return -EINVAL;
diff --combined drivers/net/ucc_geth.c
index 9667dac383f04bd6e9e959852c744cac6f0fa720,7dedc9609603848c0908d18c1b3bf739fc71f59c..d00e7d41f6a5ce6d47c694753e198eac329c6167
@@@ -2919,7 -2919,7 +2919,7 @@@ static int ucc_geth_startup(struct ucc_
        test = in_be16(&ugeth->p_tx_glbl_pram->temoder);
  
        /* Function code register value to be used later */
-       function_code = QE_BMR_BYTE_ORDER_BO_MOT | UCC_FAST_FUNCTION_CODE_GBL;
+       function_code = UCC_BMR_BO_BE | UCC_BMR_GBL;
        /* Required for QE */
  
        /* function code register */
        return 0;
  }
  
 -/* returns a net_device_stats structure pointer */
 -static struct net_device_stats *ucc_geth_get_stats(struct net_device *dev)
 -{
 -      struct ucc_geth_private *ugeth = netdev_priv(dev);
 -
 -      return &(ugeth->stats);
 -}
 -
  /* ucc_geth_timeout gets called when a packet has not been
   * transmitted after a set amount of time.
   * For now, assume that clearing out all the structures, and
@@@ -3360,7 -3368,7 +3360,7 @@@ static void ucc_geth_timeout(struct net
  
        ugeth_vdbg("%s: IN", __FUNCTION__);
  
 -      ugeth->stats.tx_errors++;
 +      dev->stats.tx_errors++;
  
        ugeth_dump_regs(ugeth);
  
@@@ -3388,7 -3396,7 +3388,7 @@@ static int ucc_geth_start_xmit(struct s
  
        spin_lock_irq(&ugeth->lock);
  
 -      ugeth->stats.tx_bytes += skb->len;
 +      dev->stats.tx_bytes += skb->len;
  
        /* Start from the next BD that should be filled */
        bd = ugeth->txBd[txQ];
@@@ -3480,9 -3488,9 +3480,9 @@@ static int ucc_geth_rx(struct ucc_geth_
                                dev_kfree_skb_any(skb);
  
                        ugeth->rx_skbuff[rxQ][ugeth->skb_currx[rxQ]] = NULL;
 -                      ugeth->stats.rx_dropped++;
 +                      dev->stats.rx_dropped++;
                } else {
 -                      ugeth->stats.rx_packets++;
 +                      dev->stats.rx_packets++;
                        howmany++;
  
                        /* Prep the skb for the packet */
                        /* Tell the skb what kind of packet this is */
                        skb->protocol = eth_type_trans(skb, ugeth->dev);
  
 -                      ugeth->stats.rx_bytes += length;
 +                      dev->stats.rx_bytes += length;
                        /* Send the packet up the stack */
  #ifdef CONFIG_UGETH_NAPI
                        netif_receive_skb(skb);
                if (!skb) {
                        if (netif_msg_rx_err(ugeth))
                                ugeth_warn("%s: No Rx Data Buffer", __FUNCTION__);
 -                      ugeth->stats.rx_dropped++;
 +                      dev->stats.rx_dropped++;
                        break;
                }
  
@@@ -3548,7 -3556,7 +3548,7 @@@ static int ucc_geth_tx(struct net_devic
                if ((bd == ugeth->txBd[txQ]) && (netif_queue_stopped(dev) == 0))
                        break;
  
 -              ugeth->stats.tx_packets++;
 +              dev->stats.tx_packets++;
  
                /* Free the sk buffer associated with this TxBD */
                dev_kfree_skb_irq(ugeth->
  }
  
  #ifdef CONFIG_UGETH_NAPI
 -static int ucc_geth_poll(struct net_device *dev, int *budget)
 +static int ucc_geth_poll(struct napi_struct *napi, int budget)
  {
 -      struct ucc_geth_private *ugeth = netdev_priv(dev);
 +      struct ucc_geth_private *ugeth = container_of(napi, struct ucc_geth_private, napi);
 +      struct net_device *dev = ugeth->dev;
        struct ucc_geth_info *ug_info;
 -      struct ucc_fast_private *uccf;
 -      int howmany;
 -      u8 i;
 -      int rx_work_limit;
 -      register u32 uccm;
 +      int howmany, i;
  
        ug_info = ugeth->ug_info;
  
 -      rx_work_limit = *budget;
 -      if (rx_work_limit > dev->quota)
 -              rx_work_limit = dev->quota;
 -
        howmany = 0;
 +      for (i = 0; i < ug_info->numQueuesRx; i++)
 +              howmany += ucc_geth_rx(ugeth, i, budget - howmany);
  
 -      for (i = 0; i < ug_info->numQueuesRx; i++) {
 -              howmany += ucc_geth_rx(ugeth, i, rx_work_limit);
 -      }
 -
 -      dev->quota -= howmany;
 -      rx_work_limit -= howmany;
 -      *budget -= howmany;
 +      if (howmany < budget) {
 +              struct ucc_fast_private *uccf;
 +              u32 uccm;
  
 -      if (rx_work_limit > 0) {
 -              netif_rx_complete(dev);
 +              netif_rx_complete(dev, napi);
                uccf = ugeth->uccf;
                uccm = in_be32(uccf->p_uccm);
                uccm |= UCCE_RX_EVENTS;
                out_be32(uccf->p_uccm, uccm);
        }
  
 -      return (rx_work_limit > 0) ? 0 : 1;
 +      return howmany;
  }
  #endif                                /* CONFIG_UGETH_NAPI */
  
@@@ -3633,10 -3651,10 +3633,10 @@@ static irqreturn_t ucc_geth_irq_handler
        /* check for receive events that require processing */
        if (ucce & UCCE_RX_EVENTS) {
  #ifdef CONFIG_UGETH_NAPI
 -              if (netif_rx_schedule_prep(dev)) {
 -              uccm &= ~UCCE_RX_EVENTS;
 +              if (netif_rx_schedule_prep(dev, &ugeth->napi)) {
 +                      uccm &= ~UCCE_RX_EVENTS;
                        out_be32(uccf->p_uccm, uccm);
 -                      __netif_rx_schedule(dev);
 +                      __netif_rx_schedule(dev, &ugeth->napi);
                }
  #else
                rx_mask = UCCE_RXBF_SINGLE_MASK;
        /* Errors and other events */
        if (ucce & UCCE_OTHER) {
                if (ucce & UCCE_BSY) {
 -                      ugeth->stats.rx_errors++;
 +                      dev->stats.rx_errors++;
                }
                if (ucce & UCCE_TXE) {
 -                      ugeth->stats.tx_errors++;
 +                      dev->stats.tx_errors++;
                }
        }
  
@@@ -3699,15 -3717,12 +3699,15 @@@ static int ucc_geth_open(struct net_dev
                return err;
        }
  
 +#ifdef CONFIG_UGETH_NAPI
 +      napi_enable(&ugeth->napi);
 +#endif
        err = ucc_geth_startup(ugeth);
        if (err) {
                if (netif_msg_ifup(ugeth))
                        ugeth_err("%s: Cannot configure net device, aborting.",
                                  dev->name);
 -              return err;
 +              goto out_err;
        }
  
        err = adjust_enet_interface(ugeth);
                if (netif_msg_ifup(ugeth))
                        ugeth_err("%s: Cannot configure net device, aborting.",
                                  dev->name);
 -              return err;
 +              goto out_err;
        }
  
        /*       Set MACSTNADDR1, MACSTNADDR2                */
        if (err) {
                if (netif_msg_ifup(ugeth))
                        ugeth_err("%s: Cannot initialize PHY, aborting.", dev->name);
 -              return err;
 +              goto out_err;
        }
  
        phy_start(ugeth->phydev);
                        ugeth_err("%s: Cannot get IRQ for net device, aborting.",
                                  dev->name);
                ucc_geth_stop(ugeth);
 -              return err;
 +              goto out_err;
        }
  
        err = ugeth_enable(ugeth, COMM_DIR_RX_AND_TX);
                if (netif_msg_ifup(ugeth))
                        ugeth_err("%s: Cannot enable net device, aborting.", dev->name);
                ucc_geth_stop(ugeth);
 -              return err;
 +              goto out_err;
        }
  
        netif_start_queue(dev);
  
        return err;
 +
 +out_err:
 +#ifdef CONFIG_UGETH_NAPI
 +      napi_disable(&ugeth->napi);
 +#endif
 +      return err;
  }
  
  /* Stops the kernel queue, and halts the controller */
@@@ -3775,10 -3784,6 +3775,10 @@@ static int ucc_geth_close(struct net_de
  
        ugeth_vdbg("%s: IN", __FUNCTION__);
  
 +#ifdef CONFIG_UGETH_NAPI
 +      napi_disable(&ugeth->napi);
 +#endif
 +
        ucc_geth_stop(ugeth);
  
        phy_disconnect(ugeth->phydev);
@@@ -3949,6 -3954,7 +3949,6 @@@ static int ucc_geth_probe(struct of_dev
        /* Set the dev->base_addr to the gfar reg region */
        dev->base_addr = (unsigned long)(ug_info->uf_info.regs);
  
 -      SET_MODULE_OWNER(dev);
        SET_NETDEV_DEV(dev, device);
  
        /* Fill in the dev structure */
        dev->tx_timeout = ucc_geth_timeout;
        dev->watchdog_timeo = TX_TIMEOUT;
  #ifdef CONFIG_UGETH_NAPI
 -      dev->poll = ucc_geth_poll;
 -      dev->weight = UCC_GETH_DEV_WEIGHT;
 +      netif_napi_add(dev, &ugeth->napi, ucc_geth_poll, UCC_GETH_DEV_WEIGHT);
  #endif                                /* CONFIG_UGETH_NAPI */
        dev->stop = ucc_geth_close;
 -      dev->get_stats = ucc_geth_get_stats;
  //    dev->change_mtu = ucc_geth_change_mtu;
        dev->mtu = 1500;
        dev->set_multicast_list = ucc_geth_set_multi;
diff --combined drivers/net/ucc_geth.h
index aaeb9487798750469e1ea85271cc025559326d8e,1aa69023cde1fdebd0e92cdece142d35d66cf22f..4fb95b3af948f940026f957a526bfc08cac948dd
@@@ -44,6 -44,7 +44,7 @@@
  
  struct ucc_geth {
        struct ucc_fast uccf;
+       u8 res0[0x100 - sizeof(struct ucc_fast)];
  
        u32 maccfg1;            /* mac configuration reg. 1 */
        u32 maccfg2;            /* mac configuration reg. 2 */
@@@ -1184,7 -1185,7 +1185,7 @@@ struct ucc_geth_private 
        struct ucc_geth_info *ug_info;
        struct ucc_fast_private *uccf;
        struct net_device *dev;
 -      struct net_device_stats stats;  /* linux network statistics */
 +      struct napi_struct napi;
        struct ucc_geth *ug_regs;
        struct ucc_geth_init_pram *p_init_enet_param_shadow;
        struct ucc_geth_exf_global_pram *p_exf_glbl_param;
diff --combined include/linux/pci_ids.h
index 8acae4eeaa763373f6908c52189218c228e5f23d,bb244a42f7a17c45156c3cdf3ff14f53207f5faf..3948708c42ca66156ce733dacf7b263445c094f5
  #define PCI_DEVICE_ID_RICOH_RL5C476   0x0476
  #define PCI_DEVICE_ID_RICOH_RL5C478   0x0478
  #define PCI_DEVICE_ID_RICOH_R5C822    0x0822
 +#define PCI_DEVICE_ID_RICOH_R5C832    0x0832
 +#define PCI_DEVICE_ID_RICOH_R5C843    0x0843
  
  #define PCI_VENDOR_ID_DLINK           0x1186
  #define PCI_DEVICE_ID_DLINK_DGE510T   0x4c00
  
  #define PCI_VENDOR_ID_RADISYS         0x1331
  
 +#define PCI_VENDOR_ID_MICRO_MEMORY            0x1332
 +#define PCI_DEVICE_ID_MICRO_MEMORY_5415CN     0x5415
 +#define PCI_DEVICE_ID_MICRO_MEMORY_5425CN     0x5425
 +#define PCI_DEVICE_ID_MICRO_MEMORY_6155               0x6155
 +
  #define PCI_VENDOR_ID_DOMEX           0x134a
  #define PCI_DEVICE_ID_DOMEX_DMX3191D  0x0001
  
  #define PCI_VENDOR_ID_ABOCOM          0x13D1
  #define PCI_DEVICE_ID_ABOCOM_2BD1       0x2BD1
  
 +#define PCI_VENDOR_ID_SUNDANCE                0x13f0
 +
  #define PCI_VENDOR_ID_CMEDIA          0x13f6
  #define PCI_DEVICE_ID_CMEDIA_CM8338A  0x0100
  #define PCI_DEVICE_ID_CMEDIA_CM8338B  0x0101
  #define PCI_DEVICE_ID_TIGON3_5751M    0x167d
  #define PCI_DEVICE_ID_TIGON3_5751F    0x167e
  #define PCI_DEVICE_ID_TIGON3_5787F    0x167f
 +#define PCI_DEVICE_ID_TIGON3_5761E    0x1680
 +#define PCI_DEVICE_ID_TIGON3_5761     0x1681
 +#define PCI_DEVICE_ID_TIGON3_5764     0x1684
  #define PCI_DEVICE_ID_TIGON3_5787M    0x1693
  #define PCI_DEVICE_ID_TIGON3_5782     0x1696
 +#define PCI_DEVICE_ID_TIGON3_5784     0x1698
  #define PCI_DEVICE_ID_TIGON3_5786     0x169a
  #define PCI_DEVICE_ID_TIGON3_5787     0x169b
  #define PCI_DEVICE_ID_TIGON3_5788     0x169c
  #define PCI_DEVICE_ID_MPC8533         0x0031
  #define PCI_DEVICE_ID_MPC8544E                0x0032
  #define PCI_DEVICE_ID_MPC8544         0x0033
+ #define PCI_DEVICE_ID_MPC8572E                0x0040
+ #define PCI_DEVICE_ID_MPC8572         0x0041
  #define PCI_DEVICE_ID_MPC8641         0x7010
  #define PCI_DEVICE_ID_MPC8641D                0x7011
+ #define PCI_DEVICE_ID_MPC8610         0x7018
  
  #define PCI_VENDOR_ID_PASEMI          0x1959
  
  #define PCI_VENDOR_ID_TEKRAM          0x1de1
  #define PCI_DEVICE_ID_TEKRAM_DC290    0xdc29
  
 +#define PCI_VENDOR_ID_TEHUTI          0x1fc9
 +#define PCI_DEVICE_ID_TEHUTI_3009     0x3009
 +#define PCI_DEVICE_ID_TEHUTI_3010     0x3010
 +#define PCI_DEVICE_ID_TEHUTI_3014     0x3014
 +
  #define PCI_VENDOR_ID_HINT             0x3388
  #define PCI_DEVICE_ID_HINT_VXPROII_IDE 0x8013
  
diff --combined lib/Kconfig.debug
index cdc9b099e620f9fa00398c746e2b4cdd29bce554,39fc6ae173b9a5b3539c8e6ec6872d27815dbbc3..396c38b3cb69f76f90b7882d45c448170eba8044
@@@ -167,7 -167,7 +167,7 @@@ config SLUB_DEBUG_O
  
  config DEBUG_PREEMPT
        bool "Debug preemptible kernel"
-       depends on DEBUG_KERNEL && PREEMPT && TRACE_IRQFLAGS_SUPPORT
+       depends on DEBUG_KERNEL && PREEMPT && (TRACE_IRQFLAGS_SUPPORT || PPC64)
        default y
        help
          If you say Y here then the kernel will use a debug variant of the
@@@ -294,8 -294,6 +294,8 @@@ config LOCK_STA
        help
         This feature enables tracking lock contention points
  
 +       For more details, see Documentation/lockstat.txt
 +
  config DEBUG_LOCKDEP
        bool "Lock dependency engine debugging"
        depends on DEBUG_KERNEL && LOCKDEP