Forráskód Böngészése

Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6

David S. Miller 17 éve
szülő
commit
2f633928cb
100 módosított fájl, 661 hozzáadás és 767 törlés
  1. 2 0
      .gitignore
  2. 0 8
      Documentation/00-INDEX
  3. 2 0
      Documentation/DocBook/kernel-api.tmpl
  4. 2 10
      Documentation/acpi/dsdt-override.txt
  5. 0 43
      Documentation/acpi/initramfs-add-dsdt.sh
  6. 9 9
      Documentation/cdrom/ide-cd
  7. 9 5
      Documentation/controllers/memory.txt
  8. 9 8
      Documentation/debugging-via-ohci1394.txt
  9. 22 0
      Documentation/feature-removal-schedule.txt
  10. 2 2
      Documentation/filesystems/proc.txt
  11. 12 4
      Documentation/gpio.txt
  12. 12 0
      Documentation/ide/00-INDEX
  13. 10 59
      Documentation/ide/ide.txt
  14. 5 8
      Documentation/kernel-parameters.txt
  15. 5 238
      Documentation/kprobes.txt
  16. 2 0
      Documentation/laptops/00-INDEX
  17. 2 2
      Documentation/laptops/acer-wmi.txt
  18. 0 0
      Documentation/laptops/laptop-mode.txt
  19. 5 2
      Documentation/lguest/lguest.c
  20. 4 2
      Documentation/pci.txt
  21. 6 0
      Documentation/power/00-INDEX
  22. 1 1
      Documentation/power/pm.txt
  23. 0 0
      Documentation/power/pm_qos_interface.txt
  24. 0 0
      Documentation/power/power_supply_class.txt
  25. 1 1
      Documentation/scheduler/sched-stats.txt
  26. 6 0
      Documentation/scsi/ChangeLog.arcmsr
  27. 11 11
      Documentation/thermal/sysfs-api.txt
  28. 3 5
      Documentation/usb/usb-help.txt
  29. 2 2
      Documentation/vm/slub.txt
  30. 38 3
      MAINTAINERS
  31. 1 1
      Makefile
  32. 7 0
      arch/Kconfig
  33. 3 0
      arch/alpha/Kconfig
  34. 42 22
      arch/alpha/kernel/pci_iommu.c
  35. 3 1
      arch/arm/Kconfig
  36. 1 0
      arch/arm/Makefile
  37. 3 3
      arch/arm/common/it8152.c
  38. 49 22
      arch/arm/configs/omap_h2_1610_defconfig
  39. 94 29
      arch/arm/configs/omap_osk_5912_defconfig
  40. 3 0
      arch/arm/kernel/head-common.S
  41. 0 3
      arch/arm/kernel/head.S
  42. 5 0
      arch/arm/kernel/kprobes.c
  43. 1 4
      arch/arm/mach-at91/board-sam9263ek.c
  44. 7 0
      arch/arm/mach-at91/gpio.c
  45. 6 6
      arch/arm/mach-h720x/common.c
  46. 6 6
      arch/arm/mach-imx/dma.c
  47. 3 3
      arch/arm/mach-imx/irq.c
  48. 1 1
      arch/arm/mach-iop13xx/iq81340mc.c
  49. 1 1
      arch/arm/mach-iop13xx/iq81340sc.c
  50. 4 4
      arch/arm/mach-iop13xx/pci.c
  51. 1 1
      arch/arm/mach-iop13xx/setup.c
  52. 1 1
      arch/arm/mach-ixp4xx/common-pci.c
  53. 1 1
      arch/arm/mach-ixp4xx/gtwx5715-pci.c
  54. 3 3
      arch/arm/mach-netx/generic.c
  55. 1 1
      arch/arm/mach-ns9xxx/gpio.c
  56. 4 0
      arch/arm/mach-omap1/board-h2.c
  57. 22 0
      arch/arm/mach-omap1/board-h3.c
  58. 1 1
      arch/arm/mach-omap1/pm.c
  59. 6 0
      arch/arm/mach-omap2/io.c
  60. 10 4
      arch/arm/mach-orion/addr-map.c
  61. 22 2
      arch/arm/mach-orion/common.c
  62. 6 0
      arch/arm/mach-orion/common.h
  63. 1 0
      arch/arm/mach-orion/dns323-setup.c
  64. 6 6
      arch/arm/mach-orion/gpio.c
  65. 1 0
      arch/arm/mach-orion/kurobox_pro-setup.c
  66. 1 0
      arch/arm/mach-orion/ts209-setup.c
  67. 1 1
      arch/arm/mach-pnx4008/clock.c
  68. 1 1
      arch/arm/mach-pnx4008/dma.c
  69. 1 1
      arch/arm/mach-pxa/cm-x270-pci.c
  70. 2 2
      arch/arm/mach-pxa/cm-x270.c
  71. 1 1
      arch/arm/mach-pxa/cpu-pxa.c
  72. 1 1
      arch/arm/mach-pxa/dma.c
  73. 1 1
      arch/arm/mach-pxa/em-x270.c
  74. 2 2
      arch/arm/mach-pxa/mainstone.c
  75. 0 8
      arch/arm/mach-pxa/pxa3xx.c
  76. 4 4
      arch/arm/mach-pxa/trizeps4.c
  77. 1 1
      arch/arm/mach-pxa/zylonite.c
  78. 3 3
      arch/arm/mach-sa1100/badge4.c
  79. 1 1
      arch/arm/mach-sa1100/cpu-sa1100.c
  80. 4 4
      arch/arm/mach-sa1100/dma.c
  81. 7 7
      arch/arm/mach-sa1100/h3600.c
  82. 2 0
      arch/arm/mm/mmap.c
  83. 2 4
      arch/arm/mm/pgd.c
  84. 1 1
      arch/arm/plat-iop/pci.c
  85. 10 22
      arch/arm/plat-omap/cpu-omap.c
  86. 0 63
      arch/arm/plat-omap/devices.c
  87. 4 10
      arch/arm/plat-omap/dma.c
  88. 1 1
      arch/arm/plat-omap/dmtimer.c
  89. 41 24
      arch/arm/plat-omap/gpio.c
  90. 32 32
      arch/arm/plat-s3c24xx/dma.c
  91. 1 1
      arch/avr32/boards/atstk1000/atstk1004.c
  92. 4 0
      arch/avr32/kernel/process.c
  93. 2 0
      arch/avr32/mm/fault.c
  94. 4 1
      arch/blackfin/Makefile
  95. 8 10
      arch/blackfin/configs/BF527-EZKIT_defconfig
  96. 2 4
      arch/blackfin/configs/BF533-EZKIT_defconfig
  97. 2 4
      arch/blackfin/configs/BF533-STAMP_defconfig
  98. 3 3
      arch/blackfin/configs/BF537-STAMP_defconfig
  99. 2 0
      arch/blackfin/configs/BF548-EZKIT_defconfig
  100. 1 0
      arch/blackfin/configs/BF561-EZKIT_defconfig

+ 2 - 0
.gitignore

@@ -53,3 +53,5 @@ cscope.*
 
 
 *.orig
 *.orig
 *.rej
 *.rej
+*~
+\#*#

+ 0 - 8
Documentation/00-INDEX

@@ -183,8 +183,6 @@ i386/
 	- directory with info about Linux on Intel 32 bit architecture.
 	- directory with info about Linux on Intel 32 bit architecture.
 ia64/
 ia64/
 	- directory with info about Linux on Intel 64 bit architecture.
 	- directory with info about Linux on Intel 64 bit architecture.
-ide.txt
-	- important info for users of ATA devices (IDE/EIDE disks and CD-ROMS).
 infiniband/
 infiniband/
 	- directory with documents concerning Linux InfiniBand support.
 	- directory with documents concerning Linux InfiniBand support.
 initrd.txt
 initrd.txt
@@ -227,8 +225,6 @@ kprobes.txt
 	- documents the kernel probes debugging feature.
 	- documents the kernel probes debugging feature.
 kref.txt
 kref.txt
 	- docs on adding reference counters (krefs) to kernel objects.
 	- docs on adding reference counters (krefs) to kernel objects.
-laptop-mode.txt
-	- how to conserve battery power using laptop-mode.
 laptops/
 laptops/
 	- directory with laptop related info and laptop driver documentation.
 	- directory with laptop related info and laptop driver documentation.
 ldm.txt
 ldm.txt
@@ -303,12 +299,8 @@ pcmcia/
 	- info on the Linux PCMCIA driver.
 	- info on the Linux PCMCIA driver.
 pi-futex.txt
 pi-futex.txt
 	- documentation on lightweight PI-futexes.
 	- documentation on lightweight PI-futexes.
-pm.txt
-	- info on Linux power management support.
 pnp.txt
 pnp.txt
 	- Linux Plug and Play documentation.
 	- Linux Plug and Play documentation.
-power_supply_class.txt
-	- Tells userspace about battery, UPS, AC or DC power supply properties
 power/
 power/
 	- directory with info on Linux PCI power management.
 	- directory with info on Linux PCI power management.
 powerpc/
 powerpc/

+ 2 - 0
Documentation/DocBook/kernel-api.tmpl

@@ -361,12 +361,14 @@ X!Edrivers/pnp/system.c
   <chapter id="blkdev">
   <chapter id="blkdev">
      <title>Block Devices</title>
      <title>Block Devices</title>
 !Eblock/blk-core.c
 !Eblock/blk-core.c
+!Iblock/blk-core.c
 !Eblock/blk-map.c
 !Eblock/blk-map.c
 !Iblock/blk-sysfs.c
 !Iblock/blk-sysfs.c
 !Eblock/blk-settings.c
 !Eblock/blk-settings.c
 !Eblock/blk-exec.c
 !Eblock/blk-exec.c
 !Eblock/blk-barrier.c
 !Eblock/blk-barrier.c
 !Eblock/blk-tag.c
 !Eblock/blk-tag.c
+!Iblock/blk-tag.c
   </chapter>
   </chapter>
 
 
   <chapter id="chrdev">
   <chapter id="chrdev">

+ 2 - 10
Documentation/acpi/dsdt-override.txt

@@ -1,15 +1,7 @@
-Linux supports two methods of overriding the BIOS DSDT:
+Linux supports a method of overriding the BIOS DSDT:
 
 
 CONFIG_ACPI_CUSTOM_DSDT builds the image into the kernel.
 CONFIG_ACPI_CUSTOM_DSDT builds the image into the kernel.
 
 
-CONFIG_ACPI_CUSTOM_DSDT_INITRD adds the image to the initrd.
-
-When to use these methods is described in detail on the
+When to use this method is described in detail on the
 Linux/ACPI home page:
 Linux/ACPI home page:
 http://www.lesswatts.org/projects/acpi/overridingDSDT.php
 http://www.lesswatts.org/projects/acpi/overridingDSDT.php
-
-Note that if both options are used, the DSDT supplied
-by the INITRD method takes precedence.
-
-Documentation/initramfs-add-dsdt.sh is provided for convenience
-for use with the CONFIG_ACPI_CUSTOM_DSDT_INITRD method.

+ 0 - 43
Documentation/acpi/initramfs-add-dsdt.sh

@@ -1,43 +0,0 @@
-#!/bin/bash
-# Adds a DSDT file to the initrd (if it's an initramfs)
-# first argument is the name of archive
-# second argument is the name of the file to add
-# The file will be copied as /DSDT.aml
-
-# 20060126: fix "Premature end of file" with some old cpio (Roland Robic)
-# 20060205: this time it should really work
-
-# check the arguments
-if [ $# -ne 2 ]; then
-	program_name=$(basename $0)
-	echo "\
-$program_name: too few arguments
-Usage: $program_name initrd-name.img DSDT-to-add.aml
-Adds a DSDT file to an initrd (in initramfs format)
-
-  initrd-name.img: filename of the initrd in initramfs format
-  DSDT-to-add.aml: filename of the DSDT file to add
-  " 1>&2
-    exit 1
-fi
-
-# we should check it's an initramfs
-
-tempcpio=$(mktemp -d)
-# cleanup on exit, hangup, interrupt, quit, termination
-trap 'rm -rf $tempcpio' 0 1 2 3 15
-
-# extract the archive
-gunzip -c "$1" > "$tempcpio"/initramfs.cpio || exit 1
-
-# copy the DSDT file at the root of the directory so that we can call it "/DSDT.aml"
-cp -f "$2" "$tempcpio"/DSDT.aml
-
-# add the file
-cd "$tempcpio"
-(echo DSDT.aml | cpio --quiet -H newc -o -A -O "$tempcpio"/initramfs.cpio) || exit 1
-cd "$OLDPWD"
-
-# re-compress the archive
-gzip -c "$tempcpio"/initramfs.cpio > "$1"
-

+ 9 - 9
Documentation/cdrom/ide-cd

@@ -45,7 +45,7 @@ This driver provides the following features:
 ---------------
 ---------------
 
 
 0. The ide-cd relies on the ide disk driver.  See
 0. The ide-cd relies on the ide disk driver.  See
-   Documentation/ide.txt for up-to-date information on the ide
+   Documentation/ide/ide.txt for up-to-date information on the ide
    driver.
    driver.
 
 
 1. Make sure that the ide and ide-cd drivers are compiled into the
 1. Make sure that the ide and ide-cd drivers are compiled into the
@@ -64,7 +64,7 @@ This driver provides the following features:
 
 
    Depending on what type of IDE interface you have, you may need to
    Depending on what type of IDE interface you have, you may need to
    specify additional configuration options.  See
    specify additional configuration options.  See
-   Documentation/ide.txt.
+   Documentation/ide/ide.txt.
 
 
 2. You should also ensure that the iso9660 filesystem is either
 2. You should also ensure that the iso9660 filesystem is either
    compiled into the kernel or available as a loadable module.  You
    compiled into the kernel or available as a loadable module.  You
@@ -84,7 +84,7 @@ This driver provides the following features:
    on the primary IDE interface are called `hda' and `hdb',
    on the primary IDE interface are called `hda' and `hdb',
    respectively.  The drives on the secondary interface are called
    respectively.  The drives on the secondary interface are called
    `hdc' and `hdd'.  (Interfaces at other locations get other letters
    `hdc' and `hdd'.  (Interfaces at other locations get other letters
-   in the third position; see Documentation/ide.txt.)
+   in the third position; see Documentation/ide/ide.txt.)
 
 
    If you want your CDROM drive to be found automatically by the
    If you want your CDROM drive to be found automatically by the
    driver, you should make sure your IDE interface uses either the
    driver, you should make sure your IDE interface uses either the
@@ -93,7 +93,7 @@ This driver provides the following features:
    be jumpered as `master'.  (If for some reason you cannot configure
    be jumpered as `master'.  (If for some reason you cannot configure
    your system in this manner, you can probably still use the driver.
    your system in this manner, you can probably still use the driver.
    You may have to pass extra configuration information to the kernel
    You may have to pass extra configuration information to the kernel
-   when you boot, however.  See Documentation/ide.txt for more
+   when you boot, however.  See Documentation/ide/ide.txt for more
    information.)
    information.)
 
 
 4. Boot the system.  If the drive is recognized, you should see a
 4. Boot the system.  If the drive is recognized, you should see a
@@ -201,7 +201,7 @@ TEST
 This section discusses some common problems encountered when trying to
 This section discusses some common problems encountered when trying to
 use the driver, and some possible solutions.  Note that if you are
 use the driver, and some possible solutions.  Note that if you are
 experiencing problems, you should probably also review
 experiencing problems, you should probably also review
-Documentation/ide.txt for current information about the underlying
+Documentation/ide/ide.txt for current information about the underlying
 IDE support code.  Some of these items apply only to earlier versions
 IDE support code.  Some of these items apply only to earlier versions
 of the driver, but are mentioned here for completeness.
 of the driver, but are mentioned here for completeness.
 
 
@@ -211,7 +211,7 @@ from the driver.
 a. Drive is not detected during booting.
 a. Drive is not detected during booting.
 
 
    - Review the configuration instructions above and in
    - Review the configuration instructions above and in
-     Documentation/ide.txt, and check how your hardware is
+     Documentation/ide/ide.txt, and check how your hardware is
      configured.
      configured.
 
 
    - If your drive is the only device on an IDE interface, it should
    - If your drive is the only device on an IDE interface, it should
@@ -219,7 +219,7 @@ a. Drive is not detected during booting.
 
 
    - If your IDE interface is not at the standard addresses of 0x170
    - If your IDE interface is not at the standard addresses of 0x170
      or 0x1f0, you'll need to explicitly inform the driver using a
      or 0x1f0, you'll need to explicitly inform the driver using a
-     lilo option.  See Documentation/ide.txt.  (This feature was
+     lilo option.  See Documentation/ide/ide.txt.  (This feature was
      added around kernel version 1.3.30.)
      added around kernel version 1.3.30.)
 
 
    - If the autoprobing is not finding your drive, you can tell the
    - If the autoprobing is not finding your drive, you can tell the
@@ -245,7 +245,7 @@ a. Drive is not detected during booting.
      Support for some interfaces needing extra initialization is
      Support for some interfaces needing extra initialization is
      provided in later 1.3.x kernels.  You may need to turn on
      provided in later 1.3.x kernels.  You may need to turn on
      additional kernel configuration options to get them to work;
      additional kernel configuration options to get them to work;
-     see Documentation/ide.txt.
+     see Documentation/ide/ide.txt.
 
 
      Even if support is not available for your interface, you may be
      Even if support is not available for your interface, you may be
      able to get it to work with the following procedure.  First boot
      able to get it to work with the following procedure.  First boot
@@ -299,7 +299,7 @@ c. System hangups.
     be worked around by specifying the `serialize' option when
     be worked around by specifying the `serialize' option when
     booting.  Recent kernels should be able to detect the need for
     booting.  Recent kernels should be able to detect the need for
     this automatically in most cases, but the detection is not
     this automatically in most cases, but the detection is not
-    foolproof.  See Documentation/ide.txt for more information
+    foolproof.  See Documentation/ide/ide.txt for more information
     about the `serialize' option and the CMD640B.
     about the `serialize' option and the CMD640B.
 
 
   - Note that many MS-DOS CDROM drivers will work with such buggy
   - Note that many MS-DOS CDROM drivers will work with such buggy

+ 9 - 5
Documentation/controllers/memory.txt

@@ -1,4 +1,8 @@
-Memory Controller
+Memory Resource Controller
+
+NOTE: The Memory Resource Controller has been generically been referred
+to as the memory controller in this document. Do not confuse memory controller
+used here with the memory controller that is used in hardware.
 
 
 Salient features
 Salient features
 
 
@@ -152,7 +156,7 @@ The memory controller uses the following hierarchy
 
 
 a. Enable CONFIG_CGROUPS
 a. Enable CONFIG_CGROUPS
 b. Enable CONFIG_RESOURCE_COUNTERS
 b. Enable CONFIG_RESOURCE_COUNTERS
-c. Enable CONFIG_CGROUP_MEM_CONT
+c. Enable CONFIG_CGROUP_MEM_RES_CTLR
 
 
 1. Prepare the cgroups
 1. Prepare the cgroups
 # mkdir -p /cgroups
 # mkdir -p /cgroups
@@ -164,7 +168,7 @@ c. Enable CONFIG_CGROUP_MEM_CONT
 
 
 Since now we're in the 0 cgroup,
 Since now we're in the 0 cgroup,
 We can alter the memory limit:
 We can alter the memory limit:
-# echo -n 4M > /cgroups/0/memory.limit_in_bytes
+# echo 4M > /cgroups/0/memory.limit_in_bytes
 
 
 NOTE: We can use a suffix (k, K, m, M, g or G) to indicate values in kilo,
 NOTE: We can use a suffix (k, K, m, M, g or G) to indicate values in kilo,
 mega or gigabytes.
 mega or gigabytes.
@@ -185,7 +189,7 @@ number of factors, such as rounding up to page boundaries or the total
 availability of memory on the system.  The user is required to re-read
 availability of memory on the system.  The user is required to re-read
 this file after a write to guarantee the value committed by the kernel.
 this file after a write to guarantee the value committed by the kernel.
 
 
-# echo -n 1 > memory.limit_in_bytes
+# echo 1 > memory.limit_in_bytes
 # cat memory.limit_in_bytes
 # cat memory.limit_in_bytes
 4096
 4096
 
 
@@ -197,7 +201,7 @@ caches, RSS and Active pages/Inactive pages are shown.
 
 
 The memory.force_empty gives an interface to drop *all* charges by force.
 The memory.force_empty gives an interface to drop *all* charges by force.
 
 
-# echo -n 1 > memory.force_empty
+# echo 1 > memory.force_empty
 
 
 will drop all charges in cgroup. Currently, this is maintained for test.
 will drop all charges in cgroup. Currently, this is maintained for test.
 
 

+ 9 - 8
Documentation/debugging-via-ohci1394.txt

@@ -36,14 +36,15 @@ available (notebooks) or too slow for extensive debug information (like ACPI).
 Drivers
 Drivers
 -------
 -------
 
 
-The OHCI-1394 drivers in drivers/firewire and drivers/ieee1394 initialize
-the OHCI-1394 controllers to a working state and can be used to enable
-physical DMA. By default you only have to load the driver, and physical
-DMA access will be granted to all remote nodes, but it can be turned off
-when using the ohci1394 driver.
-
-Because these drivers depend on the PCI enumeration to be completed, an
-initialization routine which can runs pretty early (long before console_init(),
+The ohci1394 driver in drivers/ieee1394 initializes the OHCI-1394 controllers
+to a working state and enables physical DMA by default for all remote nodes.
+This can be turned off by ohci1394's module parameter phys_dma=0.
+
+The alternative firewire-ohci driver in drivers/firewire uses filtered physical
+DMA, hence is not yet suitable for remote debugging.
+
+Because ohci1394 depends on the PCI enumeration to be completed, an
+initialization routine which runs pretty early (long before console_init()
 which makes the printk buffer appear on the console can be called) was written.
 which makes the printk buffer appear on the console can be called) was written.
 
 
 To activate it, enable CONFIG_PROVIDE_OHCI1394_DMA_INIT (Kernel hacking menu:
 To activate it, enable CONFIG_PROVIDE_OHCI1394_DMA_INIT (Kernel hacking menu:

+ 22 - 0
Documentation/feature-removal-schedule.txt

@@ -172,6 +172,16 @@ Who:	Len Brown <len.brown@intel.com>
 
 
 ---------------------------
 ---------------------------
 
 
+What:	ide-tape driver
+When:	July 2008
+Files:	drivers/ide/ide-tape.c
+Why:	This driver might not have any users anymore and maintaining it for no
+	reason is an effort no one wants to make.
+Who:	Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>, Borislav Petkov
+	<petkovbb@googlemail.com>
+
+---------------------------
+
 What: libata spindown skipping and warning
 What: libata spindown skipping and warning
 When: Dec 2008
 When: Dec 2008
 Why:  Some halt(8) implementations synchronize caches for and spin
 Why:  Some halt(8) implementations synchronize caches for and spin
@@ -306,3 +316,15 @@ Why:	Largely unmaintained and almost entirely unused.  File system
 	is largely pointless as without a lot of work only the most
 	is largely pointless as without a lot of work only the most
 	trivial of Solaris binaries can work with the emulation code.
 	trivial of Solaris binaries can work with the emulation code.
 Who:	David S. Miller <davem@davemloft.net>
 Who:	David S. Miller <davem@davemloft.net>
+
+---------------------------
+
+What:	init_mm export
+When:	2.6.26
+Why:	Not used in-tree. The current out-of-tree users used it to
+	work around problems in the CPA code which should be resolved
+	by now. One usecase was described to provide verification code
+	of the CPA operation. That's a good idea in general, but such
+	code / infrastructure should be in the kernel and not in some
+	out-of-tree driver.
+Who:	Thomas Gleixner <tglx@linutronix.de>

+ 2 - 2
Documentation/filesystems/proc.txt

@@ -1506,13 +1506,13 @@ laptop_mode
 -----------
 -----------
 
 
 laptop_mode is a knob that controls "laptop mode". All the things that are
 laptop_mode is a knob that controls "laptop mode". All the things that are
-controlled by this knob are discussed in Documentation/laptop-mode.txt.
+controlled by this knob are discussed in Documentation/laptops/laptop-mode.txt.
 
 
 block_dump
 block_dump
 ----------
 ----------
 
 
 block_dump enables block I/O debugging when set to a nonzero value. More
 block_dump enables block I/O debugging when set to a nonzero value. More
-information on block I/O debugging is in Documentation/laptop-mode.txt.
+information on block I/O debugging is in Documentation/laptops/laptop-mode.txt.
 
 
 swap_token_timeout
 swap_token_timeout
 ------------------
 ------------------

+ 12 - 4
Documentation/gpio.txt

@@ -2,6 +2,9 @@ GPIO Interfaces
 
 
 This provides an overview of GPIO access conventions on Linux.
 This provides an overview of GPIO access conventions on Linux.
 
 
+These calls use the gpio_* naming prefix.  No other calls should use that
+prefix, or the related __gpio_* prefix.
+
 
 
 What is a GPIO?
 What is a GPIO?
 ===============
 ===============
@@ -69,11 +72,13 @@ in this document, but drivers acting as clients to the GPIO interface must
 not care how it's implemented.)
 not care how it's implemented.)
 
 
 That said, if the convention is supported on their platform, drivers should
 That said, if the convention is supported on their platform, drivers should
-use it when possible.  Platforms should declare GENERIC_GPIO support in
-Kconfig (boolean true), which multi-platform drivers can depend on when
-using the include file:
+use it when possible.  Platforms must declare GENERIC_GPIO support in their
+Kconfig (boolean true), and provide an <asm/gpio.h> file.  Drivers that can't
+work without standard GPIO calls should have Kconfig entries which depend
+on GENERIC_GPIO.  The GPIO calls are available, either as "real code" or as
+optimized-away stubs, when drivers use the include file:
 
 
-	#include <asm/gpio.h>
+	#include <linux/gpio.h>
 
 
 If you stick to this convention then it'll be easier for other developers to
 If you stick to this convention then it'll be easier for other developers to
 see what your code is doing, and help maintain it.
 see what your code is doing, and help maintain it.
@@ -316,6 +321,9 @@ pulldowns integrated on some platforms.  Not all platforms support them,
 or support them in the same way; and any given board might use external
 or support them in the same way; and any given board might use external
 pullups (or pulldowns) so that the on-chip ones should not be used.
 pullups (or pulldowns) so that the on-chip ones should not be used.
 (When a circuit needs 5 kOhm, on-chip 100 kOhm resistors won't do.)
 (When a circuit needs 5 kOhm, on-chip 100 kOhm resistors won't do.)
+Likewise drive strength (2 mA vs 20 mA) and voltage (1.8V vs 3.3V) is a
+platform-specific issue, as are models like (not) having a one-to-one
+correspondence between configurable pins and GPIOs.
 
 
 There are other system-specific mechanisms that are not specified here,
 There are other system-specific mechanisms that are not specified here,
 like the aforementioned options for input de-glitching and wire-OR output.
 like the aforementioned options for input de-glitching and wire-OR output.

+ 12 - 0
Documentation/ide/00-INDEX

@@ -0,0 +1,12 @@
+00-INDEX
+    	- this file
+ChangeLog.ide-cd.1994-2004
+	- ide-cd changelog
+ChangeLog.ide-floppy.1996-2002
+	- ide-floppy changelog
+ChangeLog.ide-tape.1995-2002
+	- ide-tape changelog
+ide-tape.txt
+	- info on the IDE ATAPI streaming tape driver
+ide.txt
+	- important info for users of ATA devices (IDE/EIDE disks and CD-ROMS).

+ 10 - 59
Documentation/ide.txt → Documentation/ide/ide.txt

@@ -3,11 +3,11 @@
 
 
 ==============================================================================
 ==============================================================================
 
 
-   
+
    The hdparm utility can be used to control various IDE features on a
    The hdparm utility can be used to control various IDE features on a
    running system. It is packaged separately.  Please Look for it on popular
    running system. It is packaged separately.  Please Look for it on popular
    linux FTP sites.
    linux FTP sites.
-   
+
 
 
 
 
 ***  IMPORTANT NOTICES:  BUGGY IDE CHIPSETS CAN CORRUPT DATA!!
 ***  IMPORTANT NOTICES:  BUGGY IDE CHIPSETS CAN CORRUPT DATA!!
@@ -51,7 +51,7 @@ Common pitfalls:
 
 
 ================================================================================
 ================================================================================
 
 
-This is the multiple IDE interface driver, as evolved from hd.c.  
+This is the multiple IDE interface driver, as evolved from hd.c.
 
 
 It supports up to 9 IDE interfaces per default, on one or more IRQs (usually
 It supports up to 9 IDE interfaces per default, on one or more IRQs (usually
 14 & 15).  There can be up to two drives per interface, as per the ATA-6 spec.
 14 & 15).  There can be up to two drives per interface, as per the ATA-6 spec.
@@ -215,17 +215,17 @@ Summary of ide driver parameters for kernel command line
 --------------------------------------------------------
 --------------------------------------------------------
 
 
  "hdx="  is recognized for all "x" from "a" to "h", such as "hdc".
  "hdx="  is recognized for all "x" from "a" to "h", such as "hdc".
- 
+
  "idex=" is recognized for all "x" from "0" to "3", such as "ide1".
  "idex=" is recognized for all "x" from "0" to "3", such as "ide1".
 
 
  "hdx=noprobe"		: drive may be present, but do not probe for it
  "hdx=noprobe"		: drive may be present, but do not probe for it
- 
+
  "hdx=none"		: drive is NOT present, ignore cmos and do not probe
  "hdx=none"		: drive is NOT present, ignore cmos and do not probe
- 
+
  "hdx=nowerr"		: ignore the WRERR_STAT bit on this drive
  "hdx=nowerr"		: ignore the WRERR_STAT bit on this drive
- 
+
  "hdx=cdrom"		: drive is present, and is a cdrom drive
  "hdx=cdrom"		: drive is present, and is a cdrom drive
- 
+
  "hdx=cyl,head,sect"	: disk drive is present, with specified geometry
  "hdx=cyl,head,sect"	: disk drive is present, with specified geometry
 
 
  "hdx=remap"		: remap access of sector 0 to sector 1 (for EZDrive)
  "hdx=remap"		: remap access of sector 0 to sector 1 (for EZDrive)
@@ -258,12 +258,10 @@ Summary of ide driver parameters for kernel command line
 			  As for VLB, it is safest to not specify it.
 			  As for VLB, it is safest to not specify it.
 			  Bigger values are safer than smaller ones.
 			  Bigger values are safer than smaller ones.
 
 
- "idex=noprobe"		: do not attempt to access/use this interface
- 
  "idex=base"		: probe for an interface at the addr specified,
  "idex=base"		: probe for an interface at the addr specified,
 			  where "base" is usually 0x1f0 or 0x170
 			  where "base" is usually 0x1f0 or 0x170
 			  and "ctl" is assumed to be "base"+0x206
 			  and "ctl" is assumed to be "base"+0x206
-			  
+
  "idex=base,ctl"	: specify both base and ctl
  "idex=base,ctl"	: specify both base and ctl
 
 
  "idex=base,ctl,irq"	: specify base, ctl, and irq number
  "idex=base,ctl,irq"	: specify base, ctl, and irq number
@@ -274,7 +272,7 @@ Summary of ide driver parameters for kernel command line
 			  to take effect.
 			  to take effect.
 
 
  "idex=four"		: four drives on idex and ide(x^1) share same ports
  "idex=four"		: four drives on idex and ide(x^1) share same ports
-			
+
  "idex=reset"		: reset interface after probe
  "idex=reset"		: reset interface after probe
 
 
  "idex=ata66"		: informs the interface that it has an 80c cable
  "idex=ata66"		: informs the interface that it has an 80c cable
@@ -307,53 +305,6 @@ Also for legacy CMD640 host driver (cmd640) you need to use "probe_vlb"
 kernel paremeter to enable probing for VLB version of the chipset (PCI ones
 kernel paremeter to enable probing for VLB version of the chipset (PCI ones
 are detected automatically).
 are detected automatically).
 
 
-================================================================================
-
-IDE ATAPI streaming tape driver
--------------------------------
-
-This driver is a part of the Linux ide driver and works in co-operation
-with linux/drivers/block/ide.c.
-
-The driver, in co-operation with ide.c, basically traverses the
-request-list for the block device interface. The character device
-interface, on the other hand, creates new requests, adds them
-to the request-list of the block device, and waits for their completion.
-
-Pipelined operation mode is now supported on both reads and writes.
-
-The block device major and minor numbers are determined from the
-tape's relative position in the ide interfaces, as explained in ide.c.
-
-The character device interface consists of the following devices:
-
- ht0		major 37, minor 0	first  IDE tape, rewind on close.
- ht1		major 37, minor 1	second IDE tape, rewind on close.
- ...
- nht0		major 37, minor 128	first  IDE tape, no rewind on close.
- nht1		major 37, minor 129	second IDE tape, no rewind on close.
- ...
-
-Run /dev/MAKEDEV to create the above entries.
-
-The general magnetic tape commands compatible interface, as defined by
-include/linux/mtio.h, is accessible through the character device.
-
-General ide driver configuration options, such as the interrupt-unmask
-flag, can be configured by issuing an ioctl to the block device interface,
-as any other ide device.
-
-Our own ide-tape ioctl's can be issued to either the block device or
-the character device interface.
-
-Maximal throughput with minimal bus load will usually be achieved in the
-following scenario:
-
-	1.	ide-tape is operating in the pipelined operation mode.
-	2.	No buffering is performed by the user backup program.
-
-
-
 ================================================================================
 ================================================================================
 
 
 Some Terminology
 Some Terminology

+ 5 - 8
Documentation/kernel-parameters.txt

@@ -138,7 +138,7 @@ and is between 256 and 4096 characters. It is defined in the file
 			strict -- Be less tolerant of platforms that are not
 			strict -- Be less tolerant of platforms that are not
 				strictly ACPI specification compliant.
 				strictly ACPI specification compliant.
 
 
-			See also Documentation/pm.txt, pci=noacpi
+			See also Documentation/power/pm.txt, pci=noacpi
 
 
 	acpi_apic_instance=	[ACPI, IOAPIC]
 	acpi_apic_instance=	[ACPI, IOAPIC]
 			Format: <int>
 			Format: <int>
@@ -177,9 +177,6 @@ and is between 256 and 4096 characters. It is defined in the file
 
 
 	acpi_no_auto_ssdt	[HW,ACPI] Disable automatic loading of SSDT
 	acpi_no_auto_ssdt	[HW,ACPI] Disable automatic loading of SSDT
 
 
-	acpi_no_initrd_override	[KNL,ACPI]
-			Disable loading custom ACPI tables from the initramfs
-
 	acpi_os_name=	[HW,ACPI] Tell ACPI BIOS the name of the OS
 	acpi_os_name=	[HW,ACPI] Tell ACPI BIOS the name of the OS
 			Format: To spoof as Windows 98: ="Microsoft Windows"
 			Format: To spoof as Windows 98: ="Microsoft Windows"
 
 
@@ -712,7 +709,7 @@ and is between 256 and 4096 characters. It is defined in the file
 			Format: <cyl>,<head>,<sect>
 			Format: <cyl>,<head>,<sect>
 
 
 	hd?=		[HW] (E)IDE subsystem
 	hd?=		[HW] (E)IDE subsystem
-	hd?lun=		See Documentation/ide.txt.
+	hd?lun=		See Documentation/ide/ide.txt.
 
 
 	highmem=nn[KMG]	[KNL,BOOT] forces the highmem zone to have an exact
 	highmem=nn[KMG]	[KNL,BOOT] forces the highmem zone to have an exact
 			size of <nn>. This works even on boxes that have no
 			size of <nn>. This works even on boxes that have no
@@ -766,14 +763,14 @@ and is between 256 and 4096 characters. It is defined in the file
 
 
 	ide=		[HW] (E)IDE subsystem
 	ide=		[HW] (E)IDE subsystem
 			Format: ide=nodma or ide=doubler or ide=reverse
 			Format: ide=nodma or ide=doubler or ide=reverse
-			See Documentation/ide.txt.
+			See Documentation/ide/ide.txt.
 
 
 	ide?=		[HW] (E)IDE subsystem
 	ide?=		[HW] (E)IDE subsystem
 			Format: ide?=noprobe or chipset specific parameters.
 			Format: ide?=noprobe or chipset specific parameters.
-			See Documentation/ide.txt.
+			See Documentation/ide/ide.txt.
 
 
 	idebus=		[HW] (E)IDE subsystem - VLB/PCI bus speed
 	idebus=		[HW] (E)IDE subsystem - VLB/PCI bus speed
-			See Documentation/ide.txt.
+			See Documentation/ide/ide.txt.
 
 
 	idle=		[X86]
 	idle=		[X86]
 			Format: idle=poll or idle=mwait
 			Format: idle=poll or idle=mwait

+ 5 - 238
Documentation/kprobes.txt

@@ -192,7 +192,8 @@ code mapping.
 The Kprobes API includes a "register" function and an "unregister"
 The Kprobes API includes a "register" function and an "unregister"
 function for each type of probe.  Here are terse, mini-man-page
 function for each type of probe.  Here are terse, mini-man-page
 specifications for these functions and the associated probe handlers
 specifications for these functions and the associated probe handlers
-that you'll write.  See the latter half of this document for examples.
+that you'll write.  See the files in the samples/kprobes/ sub-directory
+for examples.
 
 
 4.1 register_kprobe
 4.1 register_kprobe
 
 
@@ -420,249 +421,15 @@ e. Watchpoint probes (which fire on data references).
 
 
 8. Kprobes Example
 8. Kprobes Example
 
 
-Here's a sample kernel module showing the use of kprobes to dump a
-stack trace and selected i386 registers when do_fork() is called.
------ cut here -----
-/*kprobe_example.c*/
-#include <linux/kernel.h>
-#include <linux/module.h>
-#include <linux/kprobes.h>
-#include <linux/sched.h>
-
-/*For each probe you need to allocate a kprobe structure*/
-static struct kprobe kp;
-
-/*kprobe pre_handler: called just before the probed instruction is executed*/
-int handler_pre(struct kprobe *p, struct pt_regs *regs)
-{
-	printk("pre_handler: p->addr=0x%p, eip=%lx, eflags=0x%lx\n",
-		p->addr, regs->eip, regs->eflags);
-	dump_stack();
-	return 0;
-}
-
-/*kprobe post_handler: called after the probed instruction is executed*/
-void handler_post(struct kprobe *p, struct pt_regs *regs, unsigned long flags)
-{
-	printk("post_handler: p->addr=0x%p, eflags=0x%lx\n",
-		p->addr, regs->eflags);
-}
-
-/* fault_handler: this is called if an exception is generated for any
- * instruction within the pre- or post-handler, or when Kprobes
- * single-steps the probed instruction.
- */
-int handler_fault(struct kprobe *p, struct pt_regs *regs, int trapnr)
-{
-	printk("fault_handler: p->addr=0x%p, trap #%dn",
-		p->addr, trapnr);
-	/* Return 0 because we don't handle the fault. */
-	return 0;
-}
-
-static int __init kprobe_init(void)
-{
-	int ret;
-	kp.pre_handler = handler_pre;
-	kp.post_handler = handler_post;
-	kp.fault_handler = handler_fault;
-	kp.symbol_name = "do_fork";
-
-	ret = register_kprobe(&kp);
-	if (ret < 0) {
-		printk("register_kprobe failed, returned %d\n", ret);
-		return ret;
-	}
-	printk("kprobe registered\n");
-	return 0;
-}
-
-static void __exit kprobe_exit(void)
-{
-	unregister_kprobe(&kp);
-	printk("kprobe unregistered\n");
-}
-
-module_init(kprobe_init)
-module_exit(kprobe_exit)
-MODULE_LICENSE("GPL");
------ cut here -----
-
-You can build the kernel module, kprobe-example.ko, using the following
-Makefile:
------ cut here -----
-obj-m := kprobe-example.o
-KDIR := /lib/modules/$(shell uname -r)/build
-PWD := $(shell pwd)
-default:
-	$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
-clean:
-	rm -f *.mod.c *.ko *.o
------ cut here -----
-
-$ make
-$ su -
-...
-# insmod kprobe-example.ko
-
-You will see the trace data in /var/log/messages and on the console
-whenever do_fork() is invoked to create a new process.
+See samples/kprobes/kprobe_example.c
 
 
 9. Jprobes Example
 9. Jprobes Example
 
 
-Here's a sample kernel module showing the use of jprobes to dump
-the arguments of do_fork().
------ cut here -----
-/*jprobe-example.c */
-#include <linux/kernel.h>
-#include <linux/module.h>
-#include <linux/fs.h>
-#include <linux/uio.h>
-#include <linux/kprobes.h>
-
-/*
- * Jumper probe for do_fork.
- * Mirror principle enables access to arguments of the probed routine
- * from the probe handler.
- */
-
-/* Proxy routine having the same arguments as actual do_fork() routine */
-long jdo_fork(unsigned long clone_flags, unsigned long stack_start,
-	      struct pt_regs *regs, unsigned long stack_size,
-	      int __user * parent_tidptr, int __user * child_tidptr)
-{
-	printk("jprobe: clone_flags=0x%lx, stack_size=0x%lx, regs=0x%p\n",
-	       clone_flags, stack_size, regs);
-	/* Always end with a call to jprobe_return(). */
-	jprobe_return();
-	/*NOTREACHED*/
-	return 0;
-}
-
-static struct jprobe my_jprobe = {
-	.entry = jdo_fork
-};
-
-static int __init jprobe_init(void)
-{
-	int ret;
-	my_jprobe.kp.symbol_name = "do_fork";
-
-	if ((ret = register_jprobe(&my_jprobe)) <0) {
-		printk("register_jprobe failed, returned %d\n", ret);
-		return -1;
-	}
-	printk("Planted jprobe at %p, handler addr %p\n",
-	       my_jprobe.kp.addr, my_jprobe.entry);
-	return 0;
-}
-
-static void __exit jprobe_exit(void)
-{
-	unregister_jprobe(&my_jprobe);
-	printk("jprobe unregistered\n");
-}
-
-module_init(jprobe_init)
-module_exit(jprobe_exit)
-MODULE_LICENSE("GPL");
------ cut here -----
-
-Build and insert the kernel module as shown in the above kprobe
-example.  You will see the trace data in /var/log/messages and on
-the console whenever do_fork() is invoked to create a new process.
-(Some messages may be suppressed if syslogd is configured to
-eliminate duplicate messages.)
+See samples/kprobes/jprobe_example.c
 
 
 10. Kretprobes Example
 10. Kretprobes Example
 
 
-Here's a sample kernel module showing the use of return probes to
-report failed calls to sys_open().
------ cut here -----
-/*kretprobe-example.c*/
-#include <linux/kernel.h>
-#include <linux/module.h>
-#include <linux/kprobes.h>
-#include <linux/ktime.h>
-
-/* per-instance private data */
-struct my_data {
-	ktime_t entry_stamp;
-};
-
-static const char *probed_func = "sys_open";
-
-/* Timestamp function entry. */
-static int entry_handler(struct kretprobe_instance *ri, struct pt_regs *regs)
-{
-	struct my_data *data;
-
-	if(!current->mm)
-		return 1; /* skip kernel threads */
-
-	data = (struct my_data *)ri->data;
-	data->entry_stamp = ktime_get();
-	return 0;
-}
-
-/* If the probed function failed, log the return value and duration.
- * Duration may turn out to be zero consistently, depending upon the
- * granularity of time accounting on the platform. */
-static int return_handler(struct kretprobe_instance *ri, struct pt_regs *regs)
-{
-	int retval = regs_return_value(regs);
-	struct my_data *data = (struct my_data *)ri->data;
-	s64 delta;
-	ktime_t now;
-
-	if (retval < 0) {
-		now = ktime_get();
-		delta = ktime_to_ns(ktime_sub(now, data->entry_stamp));
-		printk("%s: return val = %d (duration = %lld ns)\n",
-		       probed_func, retval, delta);
-	}
-	return 0;
-}
-
-static struct kretprobe my_kretprobe = {
-	.handler = return_handler,
-	.entry_handler = entry_handler,
-	.data_size = sizeof(struct my_data),
-	.maxactive = 20, /* probe up to 20 instances concurrently */
-};
-
-static int __init kretprobe_init(void)
-{
-	int ret;
-	my_kretprobe.kp.symbol_name = (char *)probed_func;
-
-	if ((ret = register_kretprobe(&my_kretprobe)) < 0) {
-		printk("register_kretprobe failed, returned %d\n", ret);
-		return -1;
-	}
-	printk("Kretprobe active on %s\n", my_kretprobe.kp.symbol_name);
-	return 0;
-}
-
-static void __exit kretprobe_exit(void)
-{
-	unregister_kretprobe(&my_kretprobe);
-	printk("kretprobe unregistered\n");
-	/* nmissed > 0 suggests that maxactive was set too low. */
-	printk("Missed probing %d instances of %s\n",
-	       my_kretprobe.nmissed, probed_func);
-}
-
-module_init(kretprobe_init)
-module_exit(kretprobe_exit)
-MODULE_LICENSE("GPL");
------ cut here -----
-
-Build and insert the kernel module as shown in the above kprobe
-example.  You will see the trace data in /var/log/messages and on the
-console whenever sys_open() returns a negative value.  (Some messages
-may be suppressed if syslogd is configured to eliminate duplicate
-messages.)
+See samples/kprobes/kretprobe_example.c
 
 
 For additional information on Kprobes, refer to the following URLs:
 For additional information on Kprobes, refer to the following URLs:
 http://www-106.ibm.com/developerworks/library/l-kprobes.html?ca=dgr-lnxw42Kprobe
 http://www-106.ibm.com/developerworks/library/l-kprobes.html?ca=dgr-lnxw42Kprobe

+ 2 - 0
Documentation/laptops/00-INDEX

@@ -2,6 +2,8 @@
 	- This file
 	- This file
 acer-wmi.txt
 acer-wmi.txt
 	- information on the Acer Laptop WMI Extras driver.
 	- information on the Acer Laptop WMI Extras driver.
+laptop-mode.txt
+	- how to conserve battery power using laptop-mode.
 sony-laptop.txt
 sony-laptop.txt
 	- Sony Notebook Control Driver (SNC) Readme.
 	- Sony Notebook Control Driver (SNC) Readme.
 sonypi.txt
 sonypi.txt

+ 2 - 2
Documentation/laptops/acer-wmi.txt

@@ -48,7 +48,7 @@ DSDT.
 
 
 To send me the DSDT, as root/sudo:
 To send me the DSDT, as root/sudo:
 
 
-cat /sys/firmware/acpi/DSDT > dsdt
+cat /sys/firmware/acpi/tables/DSDT > dsdt
 
 
 And send me the resulting 'dsdt' file.
 And send me the resulting 'dsdt' file.
 
 
@@ -169,7 +169,7 @@ can be added to acer-wmi.
 
 
 The LED is exposed through the LED subsystem, and can be found in:
 The LED is exposed through the LED subsystem, and can be found in:
 
 
-/sys/devices/platform/acer-wmi/leds/acer-mail:green/
+/sys/devices/platform/acer-wmi/leds/acer-wmi::mail/
 
 
 The mail LED is autodetected, so if you don't have one, the LED device won't
 The mail LED is autodetected, so if you don't have one, the LED device won't
 be registered.
 be registered.

+ 0 - 0
Documentation/laptop-mode.txt → Documentation/laptops/laptop-mode.txt


+ 5 - 2
Documentation/lguest/lguest.c

@@ -486,9 +486,12 @@ static void concat(char *dst, char *args[])
 	unsigned int i, len = 0;
 	unsigned int i, len = 0;
 
 
 	for (i = 0; args[i]; i++) {
 	for (i = 0; args[i]; i++) {
+		if (i) {
+			strcat(dst+len, " ");
+			len++;
+		}
 		strcpy(dst+len, args[i]);
 		strcpy(dst+len, args[i]);
-		strcat(dst+len, " ");
-		len += strlen(args[i]) + 1;
+		len += strlen(args[i]);
 	}
 	}
 	/* In case it's empty. */
 	/* In case it's empty. */
 	dst[len] = '\0';
 	dst[len] = '\0';

+ 4 - 2
Documentation/pci.txt

@@ -123,7 +123,8 @@ initialization with a pointer to a structure describing the driver
 
 
 
 
 The ID table is an array of struct pci_device_id entries ending with an
 The ID table is an array of struct pci_device_id entries ending with an
-all-zero entry.  Each entry consists of:
+all-zero entry; use of the macro DEFINE_PCI_DEVICE_TABLE is the preferred
+method of declaring the table.  Each entry consists of:
 
 
 	vendor,device	Vendor and device ID to match (or PCI_ANY_ID)
 	vendor,device	Vendor and device ID to match (or PCI_ANY_ID)
 
 
@@ -191,7 +192,8 @@ Tips on when/where to use the above attributes:
 
 
 	o Do not mark the struct pci_driver.
 	o Do not mark the struct pci_driver.
 
 
-	o The ID table array should be marked __devinitdata.
+	o The ID table array should be marked __devinitconst; this is done
+	  automatically if the table is declared with DEFINE_PCI_DEVICE_TABLE().
 
 
 	o The probe() and remove() functions should be marked __devinit
 	o The probe() and remove() functions should be marked __devinit
 	  and __devexit respectively.  All initialization functions
 	  and __devexit respectively.  All initialization functions

+ 6 - 0
Documentation/power/00-INDEX

@@ -14,6 +14,12 @@ notifiers.txt
 	- Registering suspend notifiers in device drivers
 	- Registering suspend notifiers in device drivers
 pci.txt
 pci.txt
 	- How the PCI Subsystem Does Power Management
 	- How the PCI Subsystem Does Power Management
+pm.txt
+	- info on Linux power management support.
+pm_qos_interface.txt
+	- info on Linux PM Quality of Service interface
+power_supply_class.txt
+	- Tells userspace about battery, UPS, AC or DC power supply properties
 s2ram.txt
 s2ram.txt
 	- How to get suspend to ram working (and debug it when it isn't)
 	- How to get suspend to ram working (and debug it when it isn't)
 states.txt
 states.txt

+ 1 - 1
Documentation/pm.txt → Documentation/power/pm.txt

@@ -108,7 +108,7 @@ void pm_unregister_all(pm_callback cback);
  *          EINVAL if the request is not supported
  *          EINVAL if the request is not supported
  *          EBUSY if the device is now busy and cannot handle the request
  *          EBUSY if the device is now busy and cannot handle the request
  *          ENOMEM if the device was unable to handle the request due to memory
  *          ENOMEM if the device was unable to handle the request due to memory
- *          
+ *
  * Details: The device request callback will be called before the
  * Details: The device request callback will be called before the
  *          device/system enters a suspend state (ACPI D1-D3) or
  *          device/system enters a suspend state (ACPI D1-D3) or
  *          or after the device/system resumes from suspend (ACPI D0).
  *          or after the device/system resumes from suspend (ACPI D0).

+ 0 - 0
Documentation/pm_qos_interface.txt → Documentation/power/pm_qos_interface.txt


+ 0 - 0
Documentation/power_supply_class.txt → Documentation/power/power_supply_class.txt


+ 1 - 1
Documentation/scheduler/sched-stats.txt

@@ -142,7 +142,7 @@ of idleness (idle, busy, and newly idle):
 
 
 /proc/<pid>/schedstat
 /proc/<pid>/schedstat
 ----------------
 ----------------
-schedstats also adds a new /proc/<pid/schedstat file to include some of
+schedstats also adds a new /proc/<pid>/schedstat file to include some of
 the same information on a per-process level.  There are three fields in
 the same information on a per-process level.  There are three fields in
 this file correlating for that process to:
 this file correlating for that process to:
      1) time spent on the cpu
      1) time spent on the cpu

+ 6 - 0
Documentation/scsi/ChangeLog.arcmsr

@@ -109,4 +109,10 @@
 **						8.replace pci_alloc_consistent()/pci_free_consistent() with kmalloc()/kfree() in arcmsr_iop_message_xfer()
 **						8.replace pci_alloc_consistent()/pci_free_consistent() with kmalloc()/kfree() in arcmsr_iop_message_xfer()
 **						9. fix the release of dma memory for type B in arcmsr_free_ccb_pool()
 **						9. fix the release of dma memory for type B in arcmsr_free_ccb_pool()
 **						10.fix the arcmsr_polling_hbb_ccbdone()
 **						10.fix the arcmsr_polling_hbb_ccbdone()
+** 1.20.00.15	02/27/2008	Erich Chen & Nick Cheng
+**						1.arcmsr_iop_message_xfer() is called from atomic context under the
+**						queuecommand scsi_host_template handler. James Bottomley pointed out
+**						that the current GFP_KERNEL|GFP_DMA flags are wrong: firstly we are in
+**						atomic context, secondly this memory is not used for DMA.
+**						Also removed some unneeded casts. Thanks to Daniel Drake <dsd@gentoo.org>
 **************************************************************************
 **************************************************************************

+ 11 - 11
Documentation/thermal/sysfs-api.txt

@@ -143,10 +143,10 @@ type				Strings which represent the thermal zone type.
 				This is given by thermal zone driver as part of registration.
 				This is given by thermal zone driver as part of registration.
 				Eg: "ACPI thermal zone" indicates it's a ACPI thermal device
 				Eg: "ACPI thermal zone" indicates it's a ACPI thermal device
 				RO
 				RO
-				Optional
+				Required
 
 
 temp				Current temperature as reported by thermal zone (sensor)
 temp				Current temperature as reported by thermal zone (sensor)
-				Unit: degree Celsius
+				Unit: millidegree Celsius
 				RO
 				RO
 				Required
 				Required
 
 
@@ -163,7 +163,7 @@ mode				One of the predefined values in [kernel, user]
 					  charge of the thermal management.
 					  charge of the thermal management.
 
 
 trip_point_[0-*]_temp		The temperature above which trip point will be fired
 trip_point_[0-*]_temp		The temperature above which trip point will be fired
-				Unit: degree Celsius
+				Unit: millidegree Celsius
 				RO
 				RO
 				Optional
 				Optional
 
 
@@ -193,7 +193,7 @@ type				String which represents the type of device
 				eg. For memory controller device on intel_menlow platform:
 				eg. For memory controller device on intel_menlow platform:
 				this should be "Memory controller"
 				this should be "Memory controller"
 				RO
 				RO
-				Optional
+				Required
 
 
 max_state			The maximum permissible cooling state of this cooling device.
 max_state			The maximum permissible cooling state of this cooling device.
 				RO
 				RO
@@ -219,16 +219,16 @@ the sys I/F structure will be built like this:
 
 
 |thermal_zone1:
 |thermal_zone1:
 	|-----type:			ACPI thermal zone
 	|-----type:			ACPI thermal zone
-	|-----temp:			37
+	|-----temp:			37000
 	|-----mode:			kernel
 	|-----mode:			kernel
-	|-----trip_point_0_temp:	100
+	|-----trip_point_0_temp:	100000
 	|-----trip_point_0_type:	critical
 	|-----trip_point_0_type:	critical
-	|-----trip_point_1_temp:	80
+	|-----trip_point_1_temp:	80000
 	|-----trip_point_1_type:	passive
 	|-----trip_point_1_type:	passive
-	|-----trip_point_2_temp:	70
-	|-----trip_point_2_type:	active[0]
-	|-----trip_point_3_temp:	60
-	|-----trip_point_3_type:	active[1]
+	|-----trip_point_2_temp:	70000
+	|-----trip_point_2_type:	active0
+	|-----trip_point_3_temp:	60000
+	|-----trip_point_3_type:	active1
 	|-----cdev0:			--->/sys/class/thermal/cooling_device0
 	|-----cdev0:			--->/sys/class/thermal/cooling_device0
 	|-----cdev0_trip_point:		1	/* cdev0 can be used for passive */
 	|-----cdev0_trip_point:		1	/* cdev0 can be used for passive */
 	|-----cdev1:			--->/sys/class/thermal/cooling_device3
 	|-----cdev1:			--->/sys/class/thermal/cooling_device3

+ 3 - 5
Documentation/usb/usb-help.txt

@@ -1,5 +1,5 @@
 usb-help.txt
 usb-help.txt
-2000-July-12
+2008-Mar-7
 
 
 For USB help other than the readme files that are located in
 For USB help other than the readme files that are located in
 Documentation/usb/*, see the following:
 Documentation/usb/*, see the following:
@@ -10,9 +10,7 @@ Linux-USB project:  http://www.linux-usb.org
 Linux USB Guide:    http://linux-usb.sourceforge.net
 Linux USB Guide:    http://linux-usb.sourceforge.net
 Linux-USB device overview (working devices and drivers):
 Linux-USB device overview (working devices and drivers):
                     http://www.qbik.ch/usb/devices/
                     http://www.qbik.ch/usb/devices/
-    
-The Linux-USB mailing lists are:
-  linux-usb-users@lists.sourceforge.net   for general user help
-  linux-usb-devel@lists.sourceforge.net   for developer discussions
+
+The Linux-USB mailing list is at linux-usb@vger.kernel.org
 
 
 ###
 ###

+ 2 - 2
Documentation/vm/slub.txt

@@ -50,14 +50,14 @@ F.e. in order to boot just with sanity checks and red zoning one would specify:
 
 
 Trying to find an issue in the dentry cache? Try
 Trying to find an issue in the dentry cache? Try
 
 
-	slub_debug=,dentry_cache
+	slub_debug=,dentry
 
 
 to only enable debugging on the dentry cache.
 to only enable debugging on the dentry cache.
 
 
 Red zoning and tracking may realign the slab.  We can just apply sanity checks
 Red zoning and tracking may realign the slab.  We can just apply sanity checks
 to the dentry cache with
 to the dentry cache with
 
 
-	slub_debug=F,dentry_cache
+	slub_debug=F,dentry
 
 
 In case you forgot to enable debugging on the kernel command line: It is
 In case you forgot to enable debugging on the kernel command line: It is
 possible to enable debugging manually when the kernel is up. Look at the
 possible to enable debugging manually when the kernel is up. Look at the

+ 38 - 3
MAINTAINERS

@@ -266,6 +266,15 @@ L:      linux-acpi@vger.kernel.org
 W:      http://www.lesswatts.org/projects/acpi/
 W:      http://www.lesswatts.org/projects/acpi/
 S:      Maintained
 S:      Maintained
 
 
+AD1889 ALSA SOUND DRIVER
+P:     Kyle McMartin
+M:     kyle@parisc-linux.org
+P:     Thibaut Varene
+M:     T-Bone@parisc-linux.org
+W:     http://wiki.parisc-linux.org/AD1889
+L:     linux-parisc@vger.kernel.org
+S:     Maintained
+
 ADM1025 HARDWARE MONITOR DRIVER
 ADM1025 HARDWARE MONITOR DRIVER
 P:	Jean Delvare
 P:	Jean Delvare
 M:	khali@linux-fr.org
 M:	khali@linux-fr.org
@@ -767,14 +776,14 @@ S:	Maintained
 
 
 BLACKFIN ARCHITECTURE
 BLACKFIN ARCHITECTURE
 P:	Bryan Wu
 P:	Bryan Wu
-M:	bryan.wu@analog.com
+M:	cooloney@kernel.org
 L:	uclinux-dist-devel@blackfin.uclinux.org (subscribers-only)
 L:	uclinux-dist-devel@blackfin.uclinux.org (subscribers-only)
 W:	http://blackfin.uclinux.org
 W:	http://blackfin.uclinux.org
 S:	Supported
 S:	Supported
 
 
 BLACKFIN EMAC DRIVER
 BLACKFIN EMAC DRIVER
 P:	Bryan Wu
 P:	Bryan Wu
-M:	bryan.wu@analog.com
+M:	cooloney@kernel.org
 L:	uclinux-dist-devel@blackfin.uclinux.org (subscribers-only)
 L:	uclinux-dist-devel@blackfin.uclinux.org (subscribers-only)
 W:	http://blackfin.uclinux.org
 W:	http://blackfin.uclinux.org
 S:	Supported
 S:	Supported
@@ -1138,6 +1147,12 @@ L:	accessrunner-general@lists.sourceforge.net
 W:	http://accessrunner.sourceforge.net/
 W:	http://accessrunner.sourceforge.net/
 S:	Maintained
 S:	Maintained
 
 
+CONTROL GROUPS (CGROUPS)
+P:	Paul Menage
+M:	menage@google.com
+L:	containers@lists.linux-foundation.org
+S:	Maintained
+
 CORETEMP HARDWARE MONITORING DRIVER
 CORETEMP HARDWARE MONITORING DRIVER
 P:	Rudolf Marek
 P:	Rudolf Marek
 M:	r.marek@assembler.cz
 M:	r.marek@assembler.cz
@@ -1589,6 +1604,13 @@ L:	linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers)
 W:	http://linux-fbdev.sourceforge.net/
 W:	http://linux-fbdev.sourceforge.net/
 S:	Maintained
 S:	Maintained
 
 
+FREESCALE DMA DRIVER
+P;	Zhang Wei
+M:	wei.zhang@freescale.com
+L:	linuxppc-embedded@ozlabs.org
+L:	linux-kernel@vger.kernel.org
+S:	Maintained
+
 FREESCALE SOC FS_ENET DRIVER
 FREESCALE SOC FS_ENET DRIVER
 P:	Pantelis Antoniou
 P:	Pantelis Antoniou
 M:	pantelis.antoniou@gmail.com
 M:	pantelis.antoniou@gmail.com
@@ -2119,7 +2141,7 @@ L:	netdev@vger.kernel.org
 S:	Maintained
 S:	Maintained
 
 
 IPATH DRIVER:
 IPATH DRIVER:
-P:	Arthur Jones
+P:	Ralph Campbell
 M:	infinipath@qlogic.com
 M:	infinipath@qlogic.com
 L:	general@lists.openfabrics.org
 L:	general@lists.openfabrics.org
 T:	git git://git.qlogic.com/ipath-linux-2.6
 T:	git git://git.qlogic.com/ipath-linux-2.6
@@ -2602,6 +2624,17 @@ L:	linux-kernel@vger.kernel.org
 W:	http://www.linux-mm.org
 W:	http://www.linux-mm.org
 S:	Maintained
 S:	Maintained
 
 
+MEMORY RESOURCE CONTROLLER
+P:	Balbir Singh
+M:	balbir@linux.vnet.ibm.com
+P:	Pavel Emelyanov
+M:	xemul@openvz.org
+P:	KAMEZAWA Hiroyuki
+M:	kamezawa.hiroyu@jp.fujitsu.com
+L:	linux-mm@kvack.org
+L:	linux-kernel@vger.kernel.org
+S:	Maintained
+
 MEI MN10300/AM33 PORT
 MEI MN10300/AM33 PORT
 P:	David Howells
 P:	David Howells
 M:	dhowells@redhat.com
 M:	dhowells@redhat.com
@@ -2726,6 +2759,8 @@ S:	Maintained
 NETEFFECT IWARP RNIC DRIVER (IW_NES)
 NETEFFECT IWARP RNIC DRIVER (IW_NES)
 P:	Faisal Latif
 P:	Faisal Latif
 M:	flatif@neteffect.com
 M:	flatif@neteffect.com
+P:	Nishi Gupta
+M:	ngupta@neteffect.com
 P:	Glenn Streiff
 P:	Glenn Streiff
 M:	gstreiff@neteffect.com
 M:	gstreiff@neteffect.com
 L:	general@lists.openfabrics.org
 L:	general@lists.openfabrics.org

+ 1 - 1
Makefile

@@ -1,7 +1,7 @@
 VERSION = 2
 VERSION = 2
 PATCHLEVEL = 6
 PATCHLEVEL = 6
 SUBLEVEL = 25
 SUBLEVEL = 25
-EXTRAVERSION = -rc3
+EXTRAVERSION = -rc6
 NAME = Funky Weasel is Jiggy wit it
 NAME = Funky Weasel is Jiggy wit it
 
 
 # *DOCUMENTATION*
 # *DOCUMENTATION*

+ 7 - 0
arch/Kconfig

@@ -27,5 +27,12 @@ config KPROBES
 	  for kernel debugging, non-intrusive instrumentation and testing.
 	  for kernel debugging, non-intrusive instrumentation and testing.
 	  If in doubt, say "N".
 	  If in doubt, say "N".
 
 
+config KRETPROBES
+	def_bool y
+	depends on KPROBES && HAVE_KRETPROBES
+
 config HAVE_KPROBES
 config HAVE_KPROBES
 	def_bool n
 	def_bool n
+
+config HAVE_KRETPROBES
+	def_bool n

+ 3 - 0
arch/alpha/Kconfig

@@ -330,6 +330,9 @@ config PCI_DOMAINS
 config PCI_SYSCALL
 config PCI_SYSCALL
 	def_bool PCI
 	def_bool PCI
 
 
+config IOMMU_HELPER
+	def_bool PCI
+
 config ALPHA_CORE_AGP
 config ALPHA_CORE_AGP
 	bool
 	bool
 	depends on ALPHA_GENERIC || ALPHA_TITAN || ALPHA_MARVEL
 	depends on ALPHA_GENERIC || ALPHA_TITAN || ALPHA_MARVEL

+ 42 - 22
arch/alpha/kernel/pci_iommu.c

@@ -10,6 +10,7 @@
 #include <linux/scatterlist.h>
 #include <linux/scatterlist.h>
 #include <linux/log2.h>
 #include <linux/log2.h>
 #include <linux/dma-mapping.h>
 #include <linux/dma-mapping.h>
+#include <linux/iommu-helper.h>
 
 
 #include <asm/io.h>
 #include <asm/io.h>
 #include <asm/hwrpb.h>
 #include <asm/hwrpb.h>
@@ -31,7 +32,6 @@
 #endif
 #endif
 
 
 #define DEBUG_NODIRECT 0
 #define DEBUG_NODIRECT 0
-#define DEBUG_FORCEDAC 0
 
 
 #define ISA_DMA_MASK		0x00ffffff
 #define ISA_DMA_MASK		0x00ffffff
 
 
@@ -128,37 +128,55 @@ iommu_arena_new(struct pci_controller *hose, dma_addr_t base,
 
 
 /* Must be called with the arena lock held */
 /* Must be called with the arena lock held */
 static long
 static long
-iommu_arena_find_pages(struct pci_iommu_arena *arena, long n, long mask)
+iommu_arena_find_pages(struct device *dev, struct pci_iommu_arena *arena,
+		       long n, long mask)
 {
 {
 	unsigned long *ptes;
 	unsigned long *ptes;
 	long i, p, nent;
 	long i, p, nent;
+	int pass = 0;
+	unsigned long base;
+	unsigned long boundary_size;
+
+	base = arena->dma_base >> PAGE_SHIFT;
+	if (dev) {
+		boundary_size = dma_get_seg_boundary(dev) + 1;
+		boundary_size >>= PAGE_SHIFT;
+	} else {
+		boundary_size = 1UL << (32 - PAGE_SHIFT);
+	}
 
 
 	/* Search forward for the first mask-aligned sequence of N free ptes */
 	/* Search forward for the first mask-aligned sequence of N free ptes */
 	ptes = arena->ptes;
 	ptes = arena->ptes;
 	nent = arena->size >> PAGE_SHIFT;
 	nent = arena->size >> PAGE_SHIFT;
-	p = (arena->next_entry + mask) & ~mask;
+	p = ALIGN(arena->next_entry, mask + 1);
 	i = 0;
 	i = 0;
+
+again:
 	while (i < n && p+i < nent) {
 	while (i < n && p+i < nent) {
+		if (!i && iommu_is_span_boundary(p, n, base, boundary_size)) {
+			p = ALIGN(p + 1, mask + 1);
+			goto again;
+		}
+
 		if (ptes[p+i])
 		if (ptes[p+i])
-			p = (p + i + 1 + mask) & ~mask, i = 0;
+			p = ALIGN(p + i + 1, mask + 1), i = 0;
 		else
 		else
 			i = i + 1;
 			i = i + 1;
 	}
 	}
 
 
 	if (i < n) {
 	if (i < n) {
-                /* Reached the end.  Flush the TLB and restart the
-                   search from the beginning.  */
-		alpha_mv.mv_pci_tbi(arena->hose, 0, -1);
-
-		p = 0, i = 0;
-		while (i < n && p+i < nent) {
-			if (ptes[p+i])
-				p = (p + i + 1 + mask) & ~mask, i = 0;
-			else
-				i = i + 1;
-		}
-
-		if (i < n)
+		if (pass < 1) {
+			/*
+			 * Reached the end.  Flush the TLB and restart
+			 * the search from the beginning.
+			*/
+			alpha_mv.mv_pci_tbi(arena->hose, 0, -1);
+
+			pass++;
+			p = 0;
+			i = 0;
+			goto again;
+		} else
 			return -1;
 			return -1;
 	}
 	}
 
 
@@ -168,7 +186,8 @@ iommu_arena_find_pages(struct pci_iommu_arena *arena, long n, long mask)
 }
 }
 
 
 static long
 static long
-iommu_arena_alloc(struct pci_iommu_arena *arena, long n, unsigned int align)
+iommu_arena_alloc(struct device *dev, struct pci_iommu_arena *arena, long n,
+		  unsigned int align)
 {
 {
 	unsigned long flags;
 	unsigned long flags;
 	unsigned long *ptes;
 	unsigned long *ptes;
@@ -179,7 +198,7 @@ iommu_arena_alloc(struct pci_iommu_arena *arena, long n, unsigned int align)
 	/* Search for N empty ptes */
 	/* Search for N empty ptes */
 	ptes = arena->ptes;
 	ptes = arena->ptes;
 	mask = max(align, arena->align_entry) - 1;
 	mask = max(align, arena->align_entry) - 1;
-	p = iommu_arena_find_pages(arena, n, mask);
+	p = iommu_arena_find_pages(dev, arena, n, mask);
 	if (p < 0) {
 	if (p < 0) {
 		spin_unlock_irqrestore(&arena->lock, flags);
 		spin_unlock_irqrestore(&arena->lock, flags);
 		return -1;
 		return -1;
@@ -229,6 +248,7 @@ pci_map_single_1(struct pci_dev *pdev, void *cpu_addr, size_t size,
 	unsigned long paddr;
 	unsigned long paddr;
 	dma_addr_t ret;
 	dma_addr_t ret;
 	unsigned int align = 0;
 	unsigned int align = 0;
+	struct device *dev = pdev ? &pdev->dev : NULL;
 
 
 	paddr = __pa(cpu_addr);
 	paddr = __pa(cpu_addr);
 
 
@@ -276,7 +296,7 @@ pci_map_single_1(struct pci_dev *pdev, void *cpu_addr, size_t size,
 	/* Force allocation to 64KB boundary for ISA bridges. */
 	/* Force allocation to 64KB boundary for ISA bridges. */
 	if (pdev && pdev == isa_bridge)
 	if (pdev && pdev == isa_bridge)
 		align = 8;
 		align = 8;
-	dma_ofs = iommu_arena_alloc(arena, npages, align);
+	dma_ofs = iommu_arena_alloc(dev, arena, npages, align);
 	if (dma_ofs < 0) {
 	if (dma_ofs < 0) {
 		printk(KERN_WARNING "pci_map_single failed: "
 		printk(KERN_WARNING "pci_map_single failed: "
 		       "could not allocate dma page tables\n");
 		       "could not allocate dma page tables\n");
@@ -563,7 +583,7 @@ sg_fill(struct device *dev, struct scatterlist *leader, struct scatterlist *end,
 
 
 	paddr &= ~PAGE_MASK;
 	paddr &= ~PAGE_MASK;
 	npages = calc_npages(paddr + size);
 	npages = calc_npages(paddr + size);
-	dma_ofs = iommu_arena_alloc(arena, npages, 0);
+	dma_ofs = iommu_arena_alloc(dev, arena, npages, 0);
 	if (dma_ofs < 0) {
 	if (dma_ofs < 0) {
 		/* If we attempted a direct map above but failed, die.  */
 		/* If we attempted a direct map above but failed, die.  */
 		if (leader->dma_address == 0)
 		if (leader->dma_address == 0)
@@ -830,7 +850,7 @@ iommu_reserve(struct pci_iommu_arena *arena, long pg_count, long align_mask)
 
 
 	/* Search for N empty ptes.  */
 	/* Search for N empty ptes.  */
 	ptes = arena->ptes;
 	ptes = arena->ptes;
-	p = iommu_arena_find_pages(arena, pg_count, align_mask);
+	p = iommu_arena_find_pages(NULL, arena, pg_count, align_mask);
 	if (p < 0) {
 	if (p < 0) {
 		spin_unlock_irqrestore(&arena->lock, flags);
 		spin_unlock_irqrestore(&arena->lock, flags);
 		return -1;
 		return -1;

+ 3 - 1
arch/arm/Kconfig

@@ -12,6 +12,7 @@ config ARM
 	select SYS_SUPPORTS_APM_EMULATION
 	select SYS_SUPPORTS_APM_EMULATION
 	select HAVE_OPROFILE
 	select HAVE_OPROFILE
 	select HAVE_KPROBES if (!XIP_KERNEL)
 	select HAVE_KPROBES if (!XIP_KERNEL)
+	select HAVE_KRETPROBES if (HAVE_KPROBES)
 	help
 	help
 	  The ARM series is a line of low-power-consumption RISC chip designs
 	  The ARM series is a line of low-power-consumption RISC chip designs
 	  licensed by ARM Ltd and targeted at embedded applications and
 	  licensed by ARM Ltd and targeted at embedded applications and
@@ -939,7 +940,8 @@ config KEXEC
 
 
 config ATAGS_PROC
 config ATAGS_PROC
 	bool "Export atags in procfs"
 	bool "Export atags in procfs"
-	default n
+	depends on KEXEC
+	default y
 	help
 	help
 	  Should the atags used to boot the kernel be exported in an "atags"
 	  Should the atags used to boot the kernel be exported in an "atags"
 	  file in procfs. Useful with kexec.
 	  file in procfs. Useful with kexec.

+ 1 - 0
arch/arm/Makefile

@@ -251,6 +251,7 @@ define archhelp
   echo  '* zImage        - Compressed kernel image (arch/$(ARCH)/boot/zImage)'
   echo  '* zImage        - Compressed kernel image (arch/$(ARCH)/boot/zImage)'
   echo  '  Image         - Uncompressed kernel image (arch/$(ARCH)/boot/Image)'
   echo  '  Image         - Uncompressed kernel image (arch/$(ARCH)/boot/Image)'
   echo  '* xipImage      - XIP kernel image, if configured (arch/$(ARCH)/boot/xipImage)'
   echo  '* xipImage      - XIP kernel image, if configured (arch/$(ARCH)/boot/xipImage)'
+  echo  '  uImage        - U-Boot wrapped zImage'
   echo  '  bootpImage    - Combined zImage and initial RAM disk' 
   echo  '  bootpImage    - Combined zImage and initial RAM disk' 
   echo  '                  (supply initrd image via make variable INITRD=<path>)'
   echo  '                  (supply initrd image via make variable INITRD=<path>)'
   echo  '  install       - Install uncompressed kernel'
   echo  '  install       - Install uncompressed kernel'

+ 3 - 3
arch/arm/common/it8152.c

@@ -274,7 +274,7 @@ static int it8152_pci_platform_notify_remove(struct device *dev)
 int dma_needs_bounce(struct device *dev, dma_addr_t dma_addr, size_t size)
 int dma_needs_bounce(struct device *dev, dma_addr_t dma_addr, size_t size)
 {
 {
 	dev_dbg(dev, "%s: dma_addr %08x, size %08x\n",
 	dev_dbg(dev, "%s: dma_addr %08x, size %08x\n",
-		__FUNCTION__, dma_addr, size);
+		__func__, dma_addr, size);
 	return (dev->bus == &pci_bus_type) &&
 	return (dev->bus == &pci_bus_type) &&
 		((dma_addr + size - PHYS_OFFSET) >= SZ_64M);
 		((dma_addr + size - PHYS_OFFSET) >= SZ_64M);
 }
 }
@@ -289,7 +289,7 @@ int dma_needs_bounce(struct device *dev, dma_addr_t dma_addr, size_t size)
  */
  */
 int pci_set_dma_mask(struct pci_dev *dev, u64 mask)
 int pci_set_dma_mask(struct pci_dev *dev, u64 mask)
 {
 {
-	dev_dbg(&dev->dev, "%s: %llx\n", __FUNCTION__, mask);
+	dev_dbg(&dev->dev, "%s: %llx\n", __func__, mask);
 	if (mask >= PHYS_OFFSET + SZ_64M - 1)
 	if (mask >= PHYS_OFFSET + SZ_64M - 1)
 		return 0;
 		return 0;
 
 
@@ -299,7 +299,7 @@ int pci_set_dma_mask(struct pci_dev *dev, u64 mask)
 int
 int
 pci_set_consistent_dma_mask(struct pci_dev *dev, u64 mask)
 pci_set_consistent_dma_mask(struct pci_dev *dev, u64 mask)
 {
 {
-	dev_dbg(&dev->dev, "%s: %llx\n", __FUNCTION__, mask);
+	dev_dbg(&dev->dev, "%s: %llx\n", __func__, mask);
 	if (mask >= PHYS_OFFSET + SZ_64M - 1)
 	if (mask >= PHYS_OFFSET + SZ_64M - 1)
 		return 0;
 		return 0;
 
 

+ 49 - 22
arch/arm/configs/omap_h2_1610_defconfig

@@ -1,7 +1,7 @@
 #
 #
 # Automatically generated make config: don't edit
 # Automatically generated make config: don't edit
-# Linux kernel version: 2.6.24-rc5
-# Mon Dec 17 20:04:38 2007
+# Linux kernel version: 2.6.25-rc3
+# Mon Mar  3 03:39:48 2008
 #
 #
 CONFIG_ARM=y
 CONFIG_ARM=y
 CONFIG_SYS_SUPPORTS_APM_EMULATION=y
 CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -21,6 +21,7 @@ CONFIG_RWSEM_GENERIC_SPINLOCK=y
 # CONFIG_ARCH_HAS_ILOG2_U64 is not set
 # CONFIG_ARCH_HAS_ILOG2_U64 is not set
 CONFIG_GENERIC_HWEIGHT=y
 CONFIG_GENERIC_HWEIGHT=y
 CONFIG_GENERIC_CALIBRATE_DELAY=y
 CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ARCH_SUPPORTS_AOUT=y
 CONFIG_ZONE_DMA=y
 CONFIG_ZONE_DMA=y
 CONFIG_VECTORS_BASE=0xffff0000
 CONFIG_VECTORS_BASE=0xffff0000
 CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
 CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
@@ -40,17 +41,22 @@ CONFIG_SYSVIPC_SYSCTL=y
 # CONFIG_POSIX_MQUEUE is not set
 # CONFIG_POSIX_MQUEUE is not set
 # CONFIG_BSD_PROCESS_ACCT is not set
 # CONFIG_BSD_PROCESS_ACCT is not set
 # CONFIG_TASKSTATS is not set
 # CONFIG_TASKSTATS is not set
-# CONFIG_USER_NS is not set
-# CONFIG_PID_NS is not set
 # CONFIG_AUDIT is not set
 # CONFIG_AUDIT is not set
 # CONFIG_IKCONFIG is not set
 # CONFIG_IKCONFIG is not set
 CONFIG_LOG_BUF_SHIFT=14
 CONFIG_LOG_BUF_SHIFT=14
 # CONFIG_CGROUPS is not set
 # CONFIG_CGROUPS is not set
+CONFIG_GROUP_SCHED=y
 CONFIG_FAIR_GROUP_SCHED=y
 CONFIG_FAIR_GROUP_SCHED=y
-CONFIG_FAIR_USER_SCHED=y
-# CONFIG_FAIR_CGROUP_SCHED is not set
+# CONFIG_RT_GROUP_SCHED is not set
+CONFIG_USER_SCHED=y
+# CONFIG_CGROUP_SCHED is not set
 # CONFIG_SYSFS_DEPRECATED is not set
 # CONFIG_SYSFS_DEPRECATED is not set
 # CONFIG_RELAY is not set
 # CONFIG_RELAY is not set
+CONFIG_NAMESPACES=y
+# CONFIG_UTS_NS is not set
+# CONFIG_IPC_NS is not set
+# CONFIG_USER_NS is not set
+# CONFIG_PID_NS is not set
 CONFIG_BLK_DEV_INITRD=y
 CONFIG_BLK_DEV_INITRD=y
 CONFIG_INITRAMFS_SOURCE=""
 CONFIG_INITRAMFS_SOURCE=""
 CONFIG_CC_OPTIMIZE_FOR_SIZE=y
 CONFIG_CC_OPTIMIZE_FOR_SIZE=y
@@ -64,17 +70,26 @@ CONFIG_HOTPLUG=y
 CONFIG_PRINTK=y
 CONFIG_PRINTK=y
 CONFIG_BUG=y
 CONFIG_BUG=y
 CONFIG_ELF_CORE=y
 CONFIG_ELF_CORE=y
+CONFIG_COMPAT_BRK=y
 CONFIG_BASE_FULL=y
 CONFIG_BASE_FULL=y
 CONFIG_FUTEX=y
 CONFIG_FUTEX=y
 CONFIG_ANON_INODES=y
 CONFIG_ANON_INODES=y
 CONFIG_EPOLL=y
 CONFIG_EPOLL=y
 CONFIG_SIGNALFD=y
 CONFIG_SIGNALFD=y
+CONFIG_TIMERFD=y
 CONFIG_EVENTFD=y
 CONFIG_EVENTFD=y
 CONFIG_SHMEM=y
 CONFIG_SHMEM=y
 CONFIG_VM_EVENT_COUNTERS=y
 CONFIG_VM_EVENT_COUNTERS=y
 CONFIG_SLAB=y
 CONFIG_SLAB=y
 # CONFIG_SLUB is not set
 # CONFIG_SLUB is not set
 # CONFIG_SLOB is not set
 # CONFIG_SLOB is not set
+# CONFIG_PROFILING is not set
+# CONFIG_MARKERS is not set
+CONFIG_HAVE_OPROFILE=y
+# CONFIG_KPROBES is not set
+CONFIG_HAVE_KPROBES=y
+CONFIG_PROC_PAGE_MONITOR=y
+CONFIG_SLABINFO=y
 CONFIG_RT_MUTEXES=y
 CONFIG_RT_MUTEXES=y
 # CONFIG_TINY_SHMEM is not set
 # CONFIG_TINY_SHMEM is not set
 CONFIG_BASE_SMALL=0
 CONFIG_BASE_SMALL=0
@@ -102,6 +117,8 @@ CONFIG_DEFAULT_AS=y
 # CONFIG_DEFAULT_CFQ is not set
 # CONFIG_DEFAULT_CFQ is not set
 # CONFIG_DEFAULT_NOOP is not set
 # CONFIG_DEFAULT_NOOP is not set
 CONFIG_DEFAULT_IOSCHED="anticipatory"
 CONFIG_DEFAULT_IOSCHED="anticipatory"
+CONFIG_CLASSIC_RCU=y
+# CONFIG_PREEMPT_RCU is not set
 
 
 #
 #
 # System Type
 # System Type
@@ -130,6 +147,7 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
 # CONFIG_ARCH_KS8695 is not set
 # CONFIG_ARCH_KS8695 is not set
 # CONFIG_ARCH_NS9XXX is not set
 # CONFIG_ARCH_NS9XXX is not set
 # CONFIG_ARCH_MXC is not set
 # CONFIG_ARCH_MXC is not set
+# CONFIG_ARCH_ORION is not set
 # CONFIG_ARCH_PNX4008 is not set
 # CONFIG_ARCH_PNX4008 is not set
 # CONFIG_ARCH_PXA is not set
 # CONFIG_ARCH_PXA is not set
 # CONFIG_ARCH_RPC is not set
 # CONFIG_ARCH_RPC is not set
@@ -139,6 +157,7 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
 # CONFIG_ARCH_LH7A40X is not set
 # CONFIG_ARCH_LH7A40X is not set
 # CONFIG_ARCH_DAVINCI is not set
 # CONFIG_ARCH_DAVINCI is not set
 CONFIG_ARCH_OMAP=y
 CONFIG_ARCH_OMAP=y
+# CONFIG_ARCH_MSM7X00A is not set
 
 
 #
 #
 # TI OMAP Implementations
 # TI OMAP Implementations
@@ -155,6 +174,7 @@ CONFIG_OMAP_MUX=y
 # CONFIG_OMAP_MUX_DEBUG is not set
 # CONFIG_OMAP_MUX_DEBUG is not set
 CONFIG_OMAP_MUX_WARNINGS=y
 CONFIG_OMAP_MUX_WARNINGS=y
 CONFIG_OMAP_MCBSP=y
 CONFIG_OMAP_MCBSP=y
+# CONFIG_OMAP_MMU_FWK is not set
 # CONFIG_OMAP_MPU_TIMER is not set
 # CONFIG_OMAP_MPU_TIMER is not set
 CONFIG_OMAP_32K_TIMER=y
 CONFIG_OMAP_32K_TIMER=y
 CONFIG_OMAP_32K_TIMER_HZ=128
 CONFIG_OMAP_32K_TIMER_HZ=128
@@ -266,6 +286,7 @@ CONFIG_ZBOOT_ROM_BSS=0x0
 CONFIG_CMDLINE="mem=32M console=ttyS0,115200n8 root=0801 ro init=/bin/sh"
 CONFIG_CMDLINE="mem=32M console=ttyS0,115200n8 root=0801 ro init=/bin/sh"
 # CONFIG_XIP_KERNEL is not set
 # CONFIG_XIP_KERNEL is not set
 # CONFIG_KEXEC is not set
 # CONFIG_KEXEC is not set
+# CONFIG_ATAGS_PROC is not set
 
 
 #
 #
 # CPU Frequency scaling
 # CPU Frequency scaling
@@ -311,9 +332,10 @@ CONFIG_PM=y
 # CONFIG_PM_LEGACY is not set
 # CONFIG_PM_LEGACY is not set
 # CONFIG_PM_DEBUG is not set
 # CONFIG_PM_DEBUG is not set
 CONFIG_PM_SLEEP=y
 CONFIG_PM_SLEEP=y
-CONFIG_SUSPEND_UP_POSSIBLE=y
 CONFIG_SUSPEND=y
 CONFIG_SUSPEND=y
+CONFIG_SUSPEND_FREEZER=y
 # CONFIG_APM_EMULATION is not set
 # CONFIG_APM_EMULATION is not set
+CONFIG_ARCH_SUSPEND_POSSIBLE=y
 
 
 #
 #
 # Networking
 # Networking
@@ -330,6 +352,7 @@ CONFIG_XFRM=y
 # CONFIG_XFRM_USER is not set
 # CONFIG_XFRM_USER is not set
 # CONFIG_XFRM_SUB_POLICY is not set
 # CONFIG_XFRM_SUB_POLICY is not set
 # CONFIG_XFRM_MIGRATE is not set
 # CONFIG_XFRM_MIGRATE is not set
+# CONFIG_XFRM_STATISTICS is not set
 # CONFIG_NET_KEY is not set
 # CONFIG_NET_KEY is not set
 CONFIG_INET=y
 CONFIG_INET=y
 # CONFIG_IP_MULTICAST is not set
 # CONFIG_IP_MULTICAST is not set
@@ -384,6 +407,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
 #
 #
 # CONFIG_NET_PKTGEN is not set
 # CONFIG_NET_PKTGEN is not set
 # CONFIG_HAMRADIO is not set
 # CONFIG_HAMRADIO is not set
+# CONFIG_CAN is not set
 # CONFIG_IRDA is not set
 # CONFIG_IRDA is not set
 # CONFIG_BT is not set
 # CONFIG_BT is not set
 # CONFIG_AF_RXRPC is not set
 # CONFIG_AF_RXRPC is not set
@@ -421,11 +445,13 @@ CONFIG_BLK_DEV_LOOP=y
 CONFIG_BLK_DEV_RAM=y
 CONFIG_BLK_DEV_RAM=y
 CONFIG_BLK_DEV_RAM_COUNT=16
 CONFIG_BLK_DEV_RAM_COUNT=16
 CONFIG_BLK_DEV_RAM_SIZE=8192
 CONFIG_BLK_DEV_RAM_SIZE=8192
-CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
+# CONFIG_BLK_DEV_XIP is not set
 # CONFIG_CDROM_PKTCDVD is not set
 # CONFIG_CDROM_PKTCDVD is not set
 CONFIG_ATA_OVER_ETH=m
 CONFIG_ATA_OVER_ETH=m
 CONFIG_MISC_DEVICES=y
 CONFIG_MISC_DEVICES=y
 # CONFIG_EEPROM_93CX6 is not set
 # CONFIG_EEPROM_93CX6 is not set
+# CONFIG_ENCLOSURE_SERVICES is not set
+# CONFIG_HAVE_IDE is not set
 
 
 #
 #
 # SCSI device support
 # SCSI device support
@@ -489,6 +515,7 @@ CONFIG_SMC91X=y
 # CONFIG_IBM_NEW_EMAC_EMAC4 is not set
 # CONFIG_IBM_NEW_EMAC_EMAC4 is not set
 # CONFIG_B44 is not set
 # CONFIG_B44 is not set
 CONFIG_NETDEV_1000=y
 CONFIG_NETDEV_1000=y
+# CONFIG_E1000E_ENABLED is not set
 CONFIG_NETDEV_10000=y
 CONFIG_NETDEV_10000=y
 
 
 #
 #
@@ -512,7 +539,6 @@ CONFIG_SLIP_COMPRESSED=y
 CONFIG_SLHC=y
 CONFIG_SLHC=y
 # CONFIG_SLIP_SMART is not set
 # CONFIG_SLIP_SMART is not set
 # CONFIG_SLIP_MODE_SLIP6 is not set
 # CONFIG_SLIP_MODE_SLIP6 is not set
-# CONFIG_SHAPER is not set
 # CONFIG_NETCONSOLE is not set
 # CONFIG_NETCONSOLE is not set
 # CONFIG_NETPOLL is not set
 # CONFIG_NETPOLL is not set
 # CONFIG_NET_POLL_CONTROLLER is not set
 # CONFIG_NET_POLL_CONTROLLER is not set
@@ -616,12 +642,10 @@ CONFIG_I2C_OMAP=y
 #
 #
 # Miscellaneous I2C Chip support
 # Miscellaneous I2C Chip support
 #
 #
-# CONFIG_SENSORS_DS1337 is not set
-# CONFIG_SENSORS_DS1374 is not set
 # CONFIG_DS1682 is not set
 # CONFIG_DS1682 is not set
 # CONFIG_SENSORS_EEPROM is not set
 # CONFIG_SENSORS_EEPROM is not set
 # CONFIG_SENSORS_PCF8574 is not set
 # CONFIG_SENSORS_PCF8574 is not set
-# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_PCF8575 is not set
 # CONFIG_SENSORS_PCF8591 is not set
 # CONFIG_SENSORS_PCF8591 is not set
 # CONFIG_ISP1301_OMAP is not set
 # CONFIG_ISP1301_OMAP is not set
 CONFIG_TPS65010=y
 CONFIG_TPS65010=y
@@ -649,6 +673,7 @@ CONFIG_HWMON=y
 # CONFIG_SENSORS_ADM1031 is not set
 # CONFIG_SENSORS_ADM1031 is not set
 # CONFIG_SENSORS_ADM9240 is not set
 # CONFIG_SENSORS_ADM9240 is not set
 # CONFIG_SENSORS_ADT7470 is not set
 # CONFIG_SENSORS_ADT7470 is not set
+# CONFIG_SENSORS_ADT7473 is not set
 # CONFIG_SENSORS_ATXP1 is not set
 # CONFIG_SENSORS_ATXP1 is not set
 # CONFIG_SENSORS_DS1621 is not set
 # CONFIG_SENSORS_DS1621 is not set
 # CONFIG_SENSORS_F71805F is not set
 # CONFIG_SENSORS_F71805F is not set
@@ -676,6 +701,7 @@ CONFIG_HWMON=y
 # CONFIG_SENSORS_SMSC47M1 is not set
 # CONFIG_SENSORS_SMSC47M1 is not set
 # CONFIG_SENSORS_SMSC47M192 is not set
 # CONFIG_SENSORS_SMSC47M192 is not set
 # CONFIG_SENSORS_SMSC47B397 is not set
 # CONFIG_SENSORS_SMSC47B397 is not set
+# CONFIG_SENSORS_ADS7828 is not set
 # CONFIG_SENSORS_THMC50 is not set
 # CONFIG_SENSORS_THMC50 is not set
 # CONFIG_SENSORS_VT1211 is not set
 # CONFIG_SENSORS_VT1211 is not set
 # CONFIG_SENSORS_W83781D is not set
 # CONFIG_SENSORS_W83781D is not set
@@ -683,6 +709,7 @@ CONFIG_HWMON=y
 # CONFIG_SENSORS_W83792D is not set
 # CONFIG_SENSORS_W83792D is not set
 # CONFIG_SENSORS_W83793 is not set
 # CONFIG_SENSORS_W83793 is not set
 # CONFIG_SENSORS_W83L785TS is not set
 # CONFIG_SENSORS_W83L785TS is not set
+# CONFIG_SENSORS_W83L786NG is not set
 # CONFIG_SENSORS_W83627HF is not set
 # CONFIG_SENSORS_W83627HF is not set
 # CONFIG_SENSORS_W83627EHF is not set
 # CONFIG_SENSORS_W83627EHF is not set
 # CONFIG_HWMON_DEBUG_CHIP is not set
 # CONFIG_HWMON_DEBUG_CHIP is not set
@@ -705,6 +732,7 @@ CONFIG_SSB_POSSIBLE=y
 # Multifunction device drivers
 # Multifunction device drivers
 #
 #
 # CONFIG_MFD_SM501 is not set
 # CONFIG_MFD_SM501 is not set
+# CONFIG_MFD_ASIC3 is not set
 
 
 #
 #
 # Multimedia devices
 # Multimedia devices
@@ -802,10 +830,6 @@ CONFIG_USB_ARCH_HAS_OHCI=y
 #
 #
 # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
 # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
 #
 #
-
-#
-# USB Gadget Support
-#
 # CONFIG_USB_GADGET is not set
 # CONFIG_USB_GADGET is not set
 # CONFIG_MMC is not set
 # CONFIG_MMC is not set
 # CONFIG_NEW_LEDS is not set
 # CONFIG_NEW_LEDS is not set
@@ -826,12 +850,10 @@ CONFIG_EXT2_FS=y
 # CONFIG_XFS_FS is not set
 # CONFIG_XFS_FS is not set
 # CONFIG_GFS2_FS is not set
 # CONFIG_GFS2_FS is not set
 # CONFIG_OCFS2_FS is not set
 # CONFIG_OCFS2_FS is not set
-# CONFIG_MINIX_FS is not set
-CONFIG_ROMFS_FS=y
+CONFIG_DNOTIFY=y
 CONFIG_INOTIFY=y
 CONFIG_INOTIFY=y
 CONFIG_INOTIFY_USER=y
 CONFIG_INOTIFY_USER=y
 # CONFIG_QUOTA is not set
 # CONFIG_QUOTA is not set
-CONFIG_DNOTIFY=y
 # CONFIG_AUTOFS_FS is not set
 # CONFIG_AUTOFS_FS is not set
 # CONFIG_AUTOFS4_FS is not set
 # CONFIG_AUTOFS4_FS is not set
 # CONFIG_FUSE_FS is not set
 # CONFIG_FUSE_FS is not set
@@ -874,8 +896,10 @@ CONFIG_SYSFS=y
 # CONFIG_EFS_FS is not set
 # CONFIG_EFS_FS is not set
 CONFIG_CRAMFS=y
 CONFIG_CRAMFS=y
 # CONFIG_VXFS_FS is not set
 # CONFIG_VXFS_FS is not set
+# CONFIG_MINIX_FS is not set
 # CONFIG_HPFS_FS is not set
 # CONFIG_HPFS_FS is not set
 # CONFIG_QNX4FS_FS is not set
 # CONFIG_QNX4FS_FS is not set
+CONFIG_ROMFS_FS=y
 # CONFIG_SYSV_FS is not set
 # CONFIG_SYSV_FS is not set
 # CONFIG_UFS_FS is not set
 # CONFIG_UFS_FS is not set
 CONFIG_NETWORK_FILESYSTEMS=y
 CONFIG_NETWORK_FILESYSTEMS=y
@@ -946,9 +970,6 @@ CONFIG_NLS_ISO8859_1=y
 # CONFIG_NLS_KOI8_U is not set
 # CONFIG_NLS_KOI8_U is not set
 # CONFIG_NLS_UTF8 is not set
 # CONFIG_NLS_UTF8 is not set
 # CONFIG_DLM is not set
 # CONFIG_DLM is not set
-CONFIG_INSTRUMENTATION=y
-# CONFIG_PROFILING is not set
-# CONFIG_MARKERS is not set
 
 
 #
 #
 # Kernel hacking
 # Kernel hacking
@@ -975,6 +996,7 @@ CONFIG_FRAME_POINTER=y
 CONFIG_CRYPTO=y
 CONFIG_CRYPTO=y
 CONFIG_CRYPTO_ALGAPI=y
 CONFIG_CRYPTO_ALGAPI=y
 CONFIG_CRYPTO_BLKCIPHER=y
 CONFIG_CRYPTO_BLKCIPHER=y
+# CONFIG_CRYPTO_SEQIV is not set
 CONFIG_CRYPTO_MANAGER=y
 CONFIG_CRYPTO_MANAGER=y
 # CONFIG_CRYPTO_HMAC is not set
 # CONFIG_CRYPTO_HMAC is not set
 # CONFIG_CRYPTO_XCBC is not set
 # CONFIG_CRYPTO_XCBC is not set
@@ -992,6 +1014,9 @@ CONFIG_CRYPTO_CBC=y
 CONFIG_CRYPTO_PCBC=m
 CONFIG_CRYPTO_PCBC=m
 # CONFIG_CRYPTO_LRW is not set
 # CONFIG_CRYPTO_LRW is not set
 # CONFIG_CRYPTO_XTS 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_CRYPTD is not set
 CONFIG_CRYPTO_DES=y
 CONFIG_CRYPTO_DES=y
 # CONFIG_CRYPTO_FCRYPT is not set
 # CONFIG_CRYPTO_FCRYPT is not set
@@ -1006,12 +1031,14 @@ CONFIG_CRYPTO_DES=y
 # CONFIG_CRYPTO_KHAZAD is not set
 # CONFIG_CRYPTO_KHAZAD is not set
 # CONFIG_CRYPTO_ANUBIS is not set
 # CONFIG_CRYPTO_ANUBIS is not set
 # CONFIG_CRYPTO_SEED is not set
 # CONFIG_CRYPTO_SEED is not set
+# CONFIG_CRYPTO_SALSA20 is not set
 # CONFIG_CRYPTO_DEFLATE is not set
 # CONFIG_CRYPTO_DEFLATE is not set
 # CONFIG_CRYPTO_MICHAEL_MIC is not set
 # CONFIG_CRYPTO_MICHAEL_MIC is not set
 # CONFIG_CRYPTO_CRC32C is not set
 # CONFIG_CRYPTO_CRC32C is not set
 # CONFIG_CRYPTO_CAMELLIA is not set
 # CONFIG_CRYPTO_CAMELLIA is not set
 # CONFIG_CRYPTO_TEST is not set
 # CONFIG_CRYPTO_TEST is not set
 # CONFIG_CRYPTO_AUTHENC is not set
 # CONFIG_CRYPTO_AUTHENC is not set
+# CONFIG_CRYPTO_LZO is not set
 CONFIG_CRYPTO_HW=y
 CONFIG_CRYPTO_HW=y
 
 
 #
 #

+ 94 - 29
arch/arm/configs/omap_osk_5912_defconfig

@@ -1,7 +1,7 @@
 #
 #
 # Automatically generated make config: don't edit
 # Automatically generated make config: don't edit
-# Linux kernel version: 2.6.24-rc5
-# Mon Dec 17 21:12:45 2007
+# Linux kernel version: 2.6.25-rc3
+# Mon Mar  3 03:35:17 2008
 #
 #
 CONFIG_ARM=y
 CONFIG_ARM=y
 CONFIG_SYS_SUPPORTS_APM_EMULATION=y
 CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -21,6 +21,7 @@ CONFIG_RWSEM_GENERIC_SPINLOCK=y
 # CONFIG_ARCH_HAS_ILOG2_U64 is not set
 # CONFIG_ARCH_HAS_ILOG2_U64 is not set
 CONFIG_GENERIC_HWEIGHT=y
 CONFIG_GENERIC_HWEIGHT=y
 CONFIG_GENERIC_CALIBRATE_DELAY=y
 CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ARCH_SUPPORTS_AOUT=y
 CONFIG_ZONE_DMA=y
 CONFIG_ZONE_DMA=y
 CONFIG_VECTORS_BASE=0xffff0000
 CONFIG_VECTORS_BASE=0xffff0000
 CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
 CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
@@ -39,17 +40,22 @@ CONFIG_SYSVIPC_SYSCTL=y
 # CONFIG_POSIX_MQUEUE is not set
 # CONFIG_POSIX_MQUEUE is not set
 # CONFIG_BSD_PROCESS_ACCT is not set
 # CONFIG_BSD_PROCESS_ACCT is not set
 # CONFIG_TASKSTATS is not set
 # CONFIG_TASKSTATS is not set
-# CONFIG_USER_NS is not set
-# CONFIG_PID_NS is not set
 # CONFIG_AUDIT is not set
 # CONFIG_AUDIT is not set
 # CONFIG_IKCONFIG is not set
 # CONFIG_IKCONFIG is not set
 CONFIG_LOG_BUF_SHIFT=14
 CONFIG_LOG_BUF_SHIFT=14
 # CONFIG_CGROUPS is not set
 # CONFIG_CGROUPS is not set
+CONFIG_GROUP_SCHED=y
 CONFIG_FAIR_GROUP_SCHED=y
 CONFIG_FAIR_GROUP_SCHED=y
-CONFIG_FAIR_USER_SCHED=y
-# CONFIG_FAIR_CGROUP_SCHED is not set
+# CONFIG_RT_GROUP_SCHED is not set
+CONFIG_USER_SCHED=y
+# CONFIG_CGROUP_SCHED is not set
 # CONFIG_SYSFS_DEPRECATED is not set
 # CONFIG_SYSFS_DEPRECATED is not set
 # CONFIG_RELAY is not set
 # CONFIG_RELAY is not set
+CONFIG_NAMESPACES=y
+# CONFIG_UTS_NS is not set
+# CONFIG_IPC_NS is not set
+# CONFIG_USER_NS is not set
+# CONFIG_PID_NS is not set
 CONFIG_BLK_DEV_INITRD=y
 CONFIG_BLK_DEV_INITRD=y
 CONFIG_INITRAMFS_SOURCE=""
 CONFIG_INITRAMFS_SOURCE=""
 CONFIG_CC_OPTIMIZE_FOR_SIZE=y
 CONFIG_CC_OPTIMIZE_FOR_SIZE=y
@@ -63,17 +69,26 @@ CONFIG_HOTPLUG=y
 CONFIG_PRINTK=y
 CONFIG_PRINTK=y
 CONFIG_BUG=y
 CONFIG_BUG=y
 CONFIG_ELF_CORE=y
 CONFIG_ELF_CORE=y
+CONFIG_COMPAT_BRK=y
 CONFIG_BASE_FULL=y
 CONFIG_BASE_FULL=y
 CONFIG_FUTEX=y
 CONFIG_FUTEX=y
 CONFIG_ANON_INODES=y
 CONFIG_ANON_INODES=y
 CONFIG_EPOLL=y
 CONFIG_EPOLL=y
 CONFIG_SIGNALFD=y
 CONFIG_SIGNALFD=y
+CONFIG_TIMERFD=y
 CONFIG_EVENTFD=y
 CONFIG_EVENTFD=y
 CONFIG_SHMEM=y
 CONFIG_SHMEM=y
 CONFIG_VM_EVENT_COUNTERS=y
 CONFIG_VM_EVENT_COUNTERS=y
 CONFIG_SLAB=y
 CONFIG_SLAB=y
 # CONFIG_SLUB is not set
 # CONFIG_SLUB is not set
 # CONFIG_SLOB is not set
 # CONFIG_SLOB is not set
+# CONFIG_PROFILING is not set
+# CONFIG_MARKERS is not set
+CONFIG_HAVE_OPROFILE=y
+# CONFIG_KPROBES is not set
+CONFIG_HAVE_KPROBES=y
+CONFIG_PROC_PAGE_MONITOR=y
+CONFIG_SLABINFO=y
 CONFIG_RT_MUTEXES=y
 CONFIG_RT_MUTEXES=y
 # CONFIG_TINY_SHMEM is not set
 # CONFIG_TINY_SHMEM is not set
 CONFIG_BASE_SMALL=0
 CONFIG_BASE_SMALL=0
@@ -101,6 +116,8 @@ CONFIG_IOSCHED_CFQ=y
 CONFIG_DEFAULT_CFQ=y
 CONFIG_DEFAULT_CFQ=y
 # CONFIG_DEFAULT_NOOP is not set
 # CONFIG_DEFAULT_NOOP is not set
 CONFIG_DEFAULT_IOSCHED="cfq"
 CONFIG_DEFAULT_IOSCHED="cfq"
+CONFIG_CLASSIC_RCU=y
+# CONFIG_PREEMPT_RCU is not set
 
 
 #
 #
 # System Type
 # System Type
@@ -129,6 +146,7 @@ CONFIG_DEFAULT_IOSCHED="cfq"
 # CONFIG_ARCH_KS8695 is not set
 # CONFIG_ARCH_KS8695 is not set
 # CONFIG_ARCH_NS9XXX is not set
 # CONFIG_ARCH_NS9XXX is not set
 # CONFIG_ARCH_MXC is not set
 # CONFIG_ARCH_MXC is not set
+# CONFIG_ARCH_ORION is not set
 # CONFIG_ARCH_PNX4008 is not set
 # CONFIG_ARCH_PNX4008 is not set
 # CONFIG_ARCH_PXA is not set
 # CONFIG_ARCH_PXA is not set
 # CONFIG_ARCH_RPC is not set
 # CONFIG_ARCH_RPC is not set
@@ -138,6 +156,7 @@ CONFIG_DEFAULT_IOSCHED="cfq"
 # CONFIG_ARCH_LH7A40X is not set
 # CONFIG_ARCH_LH7A40X is not set
 # CONFIG_ARCH_DAVINCI is not set
 # CONFIG_ARCH_DAVINCI is not set
 CONFIG_ARCH_OMAP=y
 CONFIG_ARCH_OMAP=y
+# CONFIG_ARCH_MSM7X00A is not set
 
 
 #
 #
 # TI OMAP Implementations
 # TI OMAP Implementations
@@ -154,6 +173,7 @@ CONFIG_OMAP_MUX=y
 # CONFIG_OMAP_MUX_DEBUG is not set
 # CONFIG_OMAP_MUX_DEBUG is not set
 CONFIG_OMAP_MUX_WARNINGS=y
 CONFIG_OMAP_MUX_WARNINGS=y
 CONFIG_OMAP_MCBSP=y
 CONFIG_OMAP_MCBSP=y
+# CONFIG_OMAP_MMU_FWK is not set
 # CONFIG_OMAP_MPU_TIMER is not set
 # CONFIG_OMAP_MPU_TIMER is not set
 CONFIG_OMAP_32K_TIMER=y
 CONFIG_OMAP_32K_TIMER=y
 CONFIG_OMAP_32K_TIMER_HZ=128
 CONFIG_OMAP_32K_TIMER_HZ=128
@@ -173,13 +193,13 @@ CONFIG_ARCH_OMAP16XX=y
 #
 #
 # OMAP Board Type
 # OMAP Board Type
 #
 #
-# CONFIG_MACH_OMAP_INNOVATOR is not set
-# CONFIG_MACH_OMAP_H2 is not set
-# CONFIG_MACH_OMAP_H3 is not set
+CONFIG_MACH_OMAP_INNOVATOR=y
+CONFIG_MACH_OMAP_H2=y
+CONFIG_MACH_OMAP_H3=y
 CONFIG_MACH_OMAP_OSK=y
 CONFIG_MACH_OMAP_OSK=y
 # CONFIG_OMAP_OSK_MISTRAL is not set
 # CONFIG_OMAP_OSK_MISTRAL is not set
-# CONFIG_MACH_NOKIA770 is not set
-# CONFIG_MACH_OMAP_GENERIC is not set
+CONFIG_MACH_NOKIA770=y
+CONFIG_MACH_OMAP_GENERIC=y
 
 
 #
 #
 # OMAP CPU Speed
 # OMAP CPU Speed
@@ -275,6 +295,7 @@ CONFIG_ZBOOT_ROM_BSS=0x0
 CONFIG_CMDLINE="mem=32M console=ttyS0,115200 initrd=0x10400000,8M root=/dev/ram0 rw"
 CONFIG_CMDLINE="mem=32M console=ttyS0,115200 initrd=0x10400000,8M root=/dev/ram0 rw"
 # CONFIG_XIP_KERNEL is not set
 # CONFIG_XIP_KERNEL is not set
 # CONFIG_KEXEC is not set
 # CONFIG_KEXEC is not set
+# CONFIG_ATAGS_PROC is not set
 
 
 #
 #
 # CPU Frequency scaling
 # CPU Frequency scaling
@@ -307,9 +328,10 @@ CONFIG_PM=y
 # CONFIG_PM_LEGACY is not set
 # CONFIG_PM_LEGACY is not set
 # CONFIG_PM_DEBUG is not set
 # CONFIG_PM_DEBUG is not set
 CONFIG_PM_SLEEP=y
 CONFIG_PM_SLEEP=y
-CONFIG_SUSPEND_UP_POSSIBLE=y
 CONFIG_SUSPEND=y
 CONFIG_SUSPEND=y
+CONFIG_SUSPEND_FREEZER=y
 # CONFIG_APM_EMULATION is not set
 # CONFIG_APM_EMULATION is not set
+CONFIG_ARCH_SUSPEND_POSSIBLE=y
 
 
 #
 #
 # Networking
 # Networking
@@ -326,6 +348,7 @@ CONFIG_XFRM=y
 # CONFIG_XFRM_USER is not set
 # CONFIG_XFRM_USER is not set
 # CONFIG_XFRM_SUB_POLICY is not set
 # CONFIG_XFRM_SUB_POLICY is not set
 # CONFIG_XFRM_MIGRATE is not set
 # CONFIG_XFRM_MIGRATE is not set
+# CONFIG_XFRM_STATISTICS is not set
 # CONFIG_NET_KEY is not set
 # CONFIG_NET_KEY is not set
 CONFIG_INET=y
 CONFIG_INET=y
 CONFIG_IP_MULTICAST=y
 CONFIG_IP_MULTICAST=y
@@ -381,6 +404,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
 #
 #
 # CONFIG_NET_PKTGEN is not set
 # CONFIG_NET_PKTGEN is not set
 # CONFIG_HAMRADIO is not set
 # CONFIG_HAMRADIO is not set
+# CONFIG_CAN is not set
 # CONFIG_IRDA is not set
 # CONFIG_IRDA is not set
 # CONFIG_BT is not set
 # CONFIG_BT is not set
 # CONFIG_AF_RXRPC is not set
 # CONFIG_AF_RXRPC is not set
@@ -493,11 +517,13 @@ CONFIG_BLK_DEV_LOOP=y
 CONFIG_BLK_DEV_RAM=y
 CONFIG_BLK_DEV_RAM=y
 CONFIG_BLK_DEV_RAM_COUNT=16
 CONFIG_BLK_DEV_RAM_COUNT=16
 CONFIG_BLK_DEV_RAM_SIZE=8192
 CONFIG_BLK_DEV_RAM_SIZE=8192
-CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
+# CONFIG_BLK_DEV_XIP is not set
 # CONFIG_CDROM_PKTCDVD is not set
 # CONFIG_CDROM_PKTCDVD is not set
 # CONFIG_ATA_OVER_ETH is not set
 # CONFIG_ATA_OVER_ETH is not set
 CONFIG_MISC_DEVICES=y
 CONFIG_MISC_DEVICES=y
 # CONFIG_EEPROM_93CX6 is not set
 # CONFIG_EEPROM_93CX6 is not set
+# CONFIG_ENCLOSURE_SERVICES is not set
+CONFIG_HAVE_IDE=y
 CONFIG_IDE=m
 CONFIG_IDE=m
 CONFIG_BLK_DEV_IDE=m
 CONFIG_BLK_DEV_IDE=m
 
 
@@ -519,7 +545,6 @@ CONFIG_IDE_PROC_FS=y
 #
 #
 # CONFIG_IDE_GENERIC is not set
 # CONFIG_IDE_GENERIC is not set
 # CONFIG_BLK_DEV_PLATFORM is not set
 # CONFIG_BLK_DEV_PLATFORM is not set
-# CONFIG_IDE_ARM is not set
 # CONFIG_BLK_DEV_IDEDMA is not set
 # CONFIG_BLK_DEV_IDEDMA is not set
 CONFIG_IDE_ARCH_OBSOLETE_INIT=y
 CONFIG_IDE_ARCH_OBSOLETE_INIT=y
 # CONFIG_BLK_DEV_HD is not set
 # CONFIG_BLK_DEV_HD is not set
@@ -553,6 +578,7 @@ CONFIG_SMC91X=y
 # CONFIG_IBM_NEW_EMAC_EMAC4 is not set
 # CONFIG_IBM_NEW_EMAC_EMAC4 is not set
 # CONFIG_B44 is not set
 # CONFIG_B44 is not set
 CONFIG_NETDEV_1000=y
 CONFIG_NETDEV_1000=y
+# CONFIG_E1000E_ENABLED is not set
 CONFIG_NETDEV_10000=y
 CONFIG_NETDEV_10000=y
 
 
 #
 #
@@ -574,7 +600,6 @@ CONFIG_PPP_MULTILINK=y
 # CONFIG_PPPOL2TP is not set
 # CONFIG_PPPOL2TP is not set
 # CONFIG_SLIP is not set
 # CONFIG_SLIP is not set
 CONFIG_SLHC=y
 CONFIG_SLHC=y
-# CONFIG_SHAPER is not set
 # CONFIG_NETCONSOLE is not set
 # CONFIG_NETCONSOLE is not set
 # CONFIG_NETPOLL is not set
 # CONFIG_NETPOLL is not set
 # CONFIG_NET_POLL_CONTROLLER is not set
 # CONFIG_NET_POLL_CONTROLLER is not set
@@ -671,6 +696,7 @@ CONFIG_HW_RANDOM_OMAP=m
 # CONFIG_SYNCLINK_CS is not set
 # CONFIG_SYNCLINK_CS is not set
 # CONFIG_CARDMAN_4000 is not set
 # CONFIG_CARDMAN_4000 is not set
 # CONFIG_CARDMAN_4040 is not set
 # CONFIG_CARDMAN_4040 is not set
+# CONFIG_IPWIRELESS is not set
 # CONFIG_RAW_DRIVER is not set
 # CONFIG_RAW_DRIVER is not set
 # CONFIG_TCG_TPM is not set
 # CONFIG_TCG_TPM is not set
 CONFIG_I2C=y
 CONFIG_I2C=y
@@ -698,12 +724,10 @@ CONFIG_I2C_OMAP=y
 #
 #
 # Miscellaneous I2C Chip support
 # Miscellaneous I2C Chip support
 #
 #
-# CONFIG_SENSORS_DS1337 is not set
-# CONFIG_SENSORS_DS1374 is not set
 # CONFIG_DS1682 is not set
 # CONFIG_DS1682 is not set
 # CONFIG_SENSORS_EEPROM is not set
 # CONFIG_SENSORS_EEPROM is not set
 # CONFIG_SENSORS_PCF8574 is not set
 # CONFIG_SENSORS_PCF8574 is not set
-# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_PCF8575 is not set
 # CONFIG_SENSORS_PCF8591 is not set
 # CONFIG_SENSORS_PCF8591 is not set
 # CONFIG_ISP1301_OMAP is not set
 # CONFIG_ISP1301_OMAP is not set
 CONFIG_TPS65010=y
 CONFIG_TPS65010=y
@@ -731,6 +755,7 @@ CONFIG_HWMON=y
 # CONFIG_SENSORS_ADM1031 is not set
 # CONFIG_SENSORS_ADM1031 is not set
 # CONFIG_SENSORS_ADM9240 is not set
 # CONFIG_SENSORS_ADM9240 is not set
 # CONFIG_SENSORS_ADT7470 is not set
 # CONFIG_SENSORS_ADT7470 is not set
+# CONFIG_SENSORS_ADT7473 is not set
 # CONFIG_SENSORS_ATXP1 is not set
 # CONFIG_SENSORS_ATXP1 is not set
 # CONFIG_SENSORS_DS1621 is not set
 # CONFIG_SENSORS_DS1621 is not set
 # CONFIG_SENSORS_F71805F is not set
 # CONFIG_SENSORS_F71805F is not set
@@ -758,6 +783,7 @@ CONFIG_HWMON=y
 # CONFIG_SENSORS_SMSC47M1 is not set
 # CONFIG_SENSORS_SMSC47M1 is not set
 # CONFIG_SENSORS_SMSC47M192 is not set
 # CONFIG_SENSORS_SMSC47M192 is not set
 # CONFIG_SENSORS_SMSC47B397 is not set
 # CONFIG_SENSORS_SMSC47B397 is not set
+# CONFIG_SENSORS_ADS7828 is not set
 # CONFIG_SENSORS_THMC50 is not set
 # CONFIG_SENSORS_THMC50 is not set
 # CONFIG_SENSORS_VT1211 is not set
 # CONFIG_SENSORS_VT1211 is not set
 # CONFIG_SENSORS_W83781D is not set
 # CONFIG_SENSORS_W83781D is not set
@@ -765,6 +791,7 @@ CONFIG_HWMON=y
 # CONFIG_SENSORS_W83792D is not set
 # CONFIG_SENSORS_W83792D is not set
 # CONFIG_SENSORS_W83793 is not set
 # CONFIG_SENSORS_W83793 is not set
 # CONFIG_SENSORS_W83L785TS is not set
 # CONFIG_SENSORS_W83L785TS is not set
+# CONFIG_SENSORS_W83L786NG is not set
 # CONFIG_SENSORS_W83627HF is not set
 # CONFIG_SENSORS_W83627HF is not set
 # CONFIG_SENSORS_W83627EHF is not set
 # CONFIG_SENSORS_W83627EHF is not set
 # CONFIG_HWMON_DEBUG_CHIP is not set
 # CONFIG_HWMON_DEBUG_CHIP is not set
@@ -780,6 +807,7 @@ CONFIG_SSB_POSSIBLE=y
 # Multifunction device drivers
 # Multifunction device drivers
 #
 #
 # CONFIG_MFD_SM501 is not set
 # CONFIG_MFD_SM501 is not set
+# CONFIG_MFD_ASIC3 is not set
 
 
 #
 #
 # Multimedia devices
 # Multimedia devices
@@ -865,10 +893,6 @@ CONFIG_USB_ARCH_HAS_OHCI=y
 #
 #
 # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
 # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
 #
 #
-
-#
-# USB Gadget Support
-#
 # CONFIG_USB_GADGET is not set
 # CONFIG_USB_GADGET is not set
 # CONFIG_MMC is not set
 # CONFIG_MMC is not set
 # CONFIG_NEW_LEDS is not set
 # CONFIG_NEW_LEDS is not set
@@ -889,12 +913,10 @@ CONFIG_EXT2_FS=y
 # CONFIG_XFS_FS is not set
 # CONFIG_XFS_FS is not set
 # CONFIG_GFS2_FS is not set
 # CONFIG_GFS2_FS is not set
 # CONFIG_OCFS2_FS is not set
 # CONFIG_OCFS2_FS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_ROMFS_FS is not set
+CONFIG_DNOTIFY=y
 CONFIG_INOTIFY=y
 CONFIG_INOTIFY=y
 CONFIG_INOTIFY_USER=y
 CONFIG_INOTIFY_USER=y
 # CONFIG_QUOTA is not set
 # CONFIG_QUOTA is not set
-CONFIG_DNOTIFY=y
 CONFIG_AUTOFS_FS=y
 CONFIG_AUTOFS_FS=y
 CONFIG_AUTOFS4_FS=y
 CONFIG_AUTOFS4_FS=y
 # CONFIG_FUSE_FS is not set
 # CONFIG_FUSE_FS is not set
@@ -948,8 +970,10 @@ CONFIG_JFFS2_RTIME=y
 # CONFIG_JFFS2_RUBIN is not set
 # CONFIG_JFFS2_RUBIN is not set
 # CONFIG_CRAMFS is not set
 # CONFIG_CRAMFS is not set
 # CONFIG_VXFS_FS is not set
 # CONFIG_VXFS_FS is not set
+# CONFIG_MINIX_FS is not set
 # CONFIG_HPFS_FS is not set
 # CONFIG_HPFS_FS is not set
 # CONFIG_QNX4FS_FS is not set
 # CONFIG_QNX4FS_FS is not set
+# CONFIG_ROMFS_FS is not set
 # CONFIG_SYSV_FS is not set
 # CONFIG_SYSV_FS is not set
 # CONFIG_UFS_FS is not set
 # CONFIG_UFS_FS is not set
 CONFIG_NETWORK_FILESYSTEMS=y
 CONFIG_NETWORK_FILESYSTEMS=y
@@ -1019,9 +1043,6 @@ CONFIG_NLS_ISO8859_1=m
 # CONFIG_NLS_KOI8_U is not set
 # CONFIG_NLS_KOI8_U is not set
 # CONFIG_NLS_UTF8 is not set
 # CONFIG_NLS_UTF8 is not set
 # CONFIG_DLM is not set
 # CONFIG_DLM is not set
-CONFIG_INSTRUMENTATION=y
-# CONFIG_PROFILING is not set
-# CONFIG_MARKERS is not set
 
 
 #
 #
 # Kernel hacking
 # Kernel hacking
@@ -1045,7 +1066,51 @@ CONFIG_FRAME_POINTER=y
 # CONFIG_KEYS is not set
 # CONFIG_KEYS is not set
 # CONFIG_SECURITY is not set
 # CONFIG_SECURITY is not set
 # CONFIG_SECURITY_FILE_CAPABILITIES is not set
 # CONFIG_SECURITY_FILE_CAPABILITIES is not set
-# CONFIG_CRYPTO is not set
+CONFIG_CRYPTO=y
+# CONFIG_CRYPTO_SEQIV is not set
+# CONFIG_CRYPTO_MANAGER is not set
+# 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 is not set
+# 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 is not set
+# CONFIG_CRYPTO_CBC is not set
+# CONFIG_CRYPTO_PCBC is not set
+# 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 is not set
+# 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
 
 
 #
 #
 # Library routines
 # Library routines

+ 3 - 0
arch/arm/kernel/head-common.S

@@ -11,6 +11,9 @@
  *
  *
  */
  */
 
 
+#define ATAG_CORE 0x54410001
+#define ATAG_CORE_SIZE ((2*4 + 3*4) >> 2)
+
 	.type	__switch_data, %object
 	.type	__switch_data, %object
 __switch_data:
 __switch_data:
 	.long	__mmap_switched
 	.long	__mmap_switched

+ 0 - 3
arch/arm/kernel/head.S

@@ -29,9 +29,6 @@
 #define KERNEL_RAM_VADDR	(PAGE_OFFSET + TEXT_OFFSET)
 #define KERNEL_RAM_VADDR	(PAGE_OFFSET + TEXT_OFFSET)
 #define KERNEL_RAM_PADDR	(PHYS_OFFSET + TEXT_OFFSET)
 #define KERNEL_RAM_PADDR	(PHYS_OFFSET + TEXT_OFFSET)
 
 
-#define ATAG_CORE 0x54410001
-#define ATAG_CORE_SIZE ((2*4 + 3*4) >> 2)
-
 
 
 /*
 /*
  * swapper_pg_dir is the virtual address of the initial page table.
  * swapper_pg_dir is the virtual address of the initial page table.

+ 5 - 0
arch/arm/kernel/kprobes.c

@@ -431,6 +431,11 @@ int __kprobes longjmp_break_handler(struct kprobe *p, struct pt_regs *regs)
 	return 0;
 	return 0;
 }
 }
 
 
+int __kprobes arch_trampoline_kprobe(struct kprobe *p)
+{
+	return 0;
+}
+
 static struct undef_hook kprobes_break_hook = {
 static struct undef_hook kprobes_break_hook = {
 	.instr_mask	= 0xffffffff,
 	.instr_mask	= 0xffffffff,
 	.instr_val	= KPROBE_BREAKPOINT_INSTRUCTION,
 	.instr_val	= KPROBE_BREAKPOINT_INSTRUCTION,

+ 1 - 4
arch/arm/mach-at91/board-sam9263ek.c

@@ -245,10 +245,7 @@ static struct fb_monspecs at91fb_default_monspecs = {
 
 
 static void at91_lcdc_power_control(int on)
 static void at91_lcdc_power_control(int on)
 {
 {
-	if (on)
-		at91_set_gpio_value(AT91_PIN_PD12, 0);	/* power up */
-	else
-		at91_set_gpio_value(AT91_PIN_PD12, 1);	/* power down */
+	at91_set_gpio_value(AT91_PIN_PA30, on);
 }
 }
 
 
 /* Driver datas */
 /* Driver datas */

+ 7 - 0
arch/arm/mach-at91/gpio.c

@@ -490,6 +490,11 @@ postcore_initcall(at91_gpio_debugfs_init);
 
 
 /*--------------------------------------------------------------------------*/
 /*--------------------------------------------------------------------------*/
 
 
+/* This lock class tells lockdep that GPIO irqs are in a different
+ * category than their parents, so it won't report false recursion.
+ */
+static struct lock_class_key gpio_lock_class;
+
 /*
 /*
  * Called from the processor-specific init to enable GPIO interrupt support.
  * Called from the processor-specific init to enable GPIO interrupt support.
  */
  */
@@ -510,6 +515,8 @@ void __init at91_gpio_irq_setup(void)
 		__raw_writel(~0, this->regbase + PIO_IDR);
 		__raw_writel(~0, this->regbase + PIO_IDR);
 
 
 		for (i = 0, pin = this->chipbase; i < 32; i++, pin++) {
 		for (i = 0, pin = this->chipbase; i < 32; i++, pin++) {
+			lockdep_set_class(&irq_desc[pin].lock, &gpio_lock_class);
+
 			/*
 			/*
 			 * Can use the "simple" and not "edge" handler since it's
 			 * Can use the "simple" and not "edge" handler since it's
 			 * shorter, and the AIC handles interrupts sanely.
 			 * shorter, and the AIC handles interrupts sanely.

+ 6 - 6
arch/arm/mach-h720x/common.c

@@ -103,7 +103,7 @@ static void
 h720x_gpio_handler(unsigned int mask, unsigned int irq,
 h720x_gpio_handler(unsigned int mask, unsigned int irq,
                  struct irq_desc *desc)
                  struct irq_desc *desc)
 {
 {
-	IRQDBG("%s irq: %d\n",__FUNCTION__,irq);
+	IRQDBG("%s irq: %d\n", __func__, irq);
 	desc = irq_desc + irq;
 	desc = irq_desc + irq;
 	while (mask) {
 	while (mask) {
 		if (mask & 1) {
 		if (mask & 1) {
@@ -123,7 +123,7 @@ h720x_gpioa_demux_handler(unsigned int irq_unused, struct irq_desc *desc)
 
 
 	mask = CPU_REG(GPIO_A_VIRT,GPIO_STAT);
 	mask = CPU_REG(GPIO_A_VIRT,GPIO_STAT);
 	irq = IRQ_CHAINED_GPIOA(0);
 	irq = IRQ_CHAINED_GPIOA(0);
-	IRQDBG("%s mask: 0x%08x irq: %d\n",__FUNCTION__,mask,irq);
+	IRQDBG("%s mask: 0x%08x irq: %d\n", __func__, mask,irq);
 	h720x_gpio_handler(mask, irq, desc);
 	h720x_gpio_handler(mask, irq, desc);
 }
 }
 
 
@@ -133,7 +133,7 @@ h720x_gpiob_demux_handler(unsigned int irq_unused, struct irq_desc *desc)
 	unsigned int mask, irq;
 	unsigned int mask, irq;
 	mask = CPU_REG(GPIO_B_VIRT,GPIO_STAT);
 	mask = CPU_REG(GPIO_B_VIRT,GPIO_STAT);
 	irq = IRQ_CHAINED_GPIOB(0);
 	irq = IRQ_CHAINED_GPIOB(0);
-	IRQDBG("%s mask: 0x%08x irq: %d\n",__FUNCTION__,mask,irq);
+	IRQDBG("%s mask: 0x%08x irq: %d\n", __func__, mask,irq);
 	h720x_gpio_handler(mask, irq, desc);
 	h720x_gpio_handler(mask, irq, desc);
 }
 }
 
 
@@ -144,7 +144,7 @@ h720x_gpioc_demux_handler(unsigned int irq_unused, struct irq_desc *desc)
 
 
 	mask = CPU_REG(GPIO_C_VIRT,GPIO_STAT);
 	mask = CPU_REG(GPIO_C_VIRT,GPIO_STAT);
 	irq = IRQ_CHAINED_GPIOC(0);
 	irq = IRQ_CHAINED_GPIOC(0);
-	IRQDBG("%s mask: 0x%08x irq: %d\n",__FUNCTION__,mask,irq);
+	IRQDBG("%s mask: 0x%08x irq: %d\n", __func__, mask,irq);
 	h720x_gpio_handler(mask, irq, desc);
 	h720x_gpio_handler(mask, irq, desc);
 }
 }
 
 
@@ -155,7 +155,7 @@ h720x_gpiod_demux_handler(unsigned int irq_unused, struct irq_desc *desc)
 
 
 	mask = CPU_REG(GPIO_D_VIRT,GPIO_STAT);
 	mask = CPU_REG(GPIO_D_VIRT,GPIO_STAT);
 	irq = IRQ_CHAINED_GPIOD(0);
 	irq = IRQ_CHAINED_GPIOD(0);
-	IRQDBG("%s mask: 0x%08x irq: %d\n",__FUNCTION__,mask,irq);
+	IRQDBG("%s mask: 0x%08x irq: %d\n", __func__, mask,irq);
 	h720x_gpio_handler(mask, irq, desc);
 	h720x_gpio_handler(mask, irq, desc);
 }
 }
 
 
@@ -167,7 +167,7 @@ h720x_gpioe_demux_handler(unsigned int irq_unused, struct irq_desc *desc)
 
 
 	mask = CPU_REG(GPIO_E_VIRT,GPIO_STAT);
 	mask = CPU_REG(GPIO_E_VIRT,GPIO_STAT);
 	irq = IRQ_CHAINED_GPIOE(0);
 	irq = IRQ_CHAINED_GPIOE(0);
-	IRQDBG("%s mask: 0x%08x irq: %d\n",__FUNCTION__,mask,irq);
+	IRQDBG("%s mask: 0x%08x irq: %d\n", __func__, mask,irq);
 	h720x_gpio_handler(mask, irq, desc);
 	h720x_gpio_handler(mask, irq, desc);
 }
 }
 #endif
 #endif

+ 6 - 6
arch/arm/mach-imx/dma.c

@@ -54,7 +54,7 @@ static inline int imx_dma_sg_next(imx_dmach_t dma_ch, unsigned int lastcount)
 
 
 	if (!imxdma->name) {
 	if (!imxdma->name) {
 		printk(KERN_CRIT "%s: called for  not allocated channel %d\n",
 		printk(KERN_CRIT "%s: called for  not allocated channel %d\n",
-		       __FUNCTION__, dma_ch);
+		       __func__, dma_ch);
 		return 0;
 		return 0;
 	}
 	}
 
 
@@ -288,7 +288,7 @@ imx_dma_setup_handlers(imx_dmach_t dma_ch,
 
 
 	if (!imxdma->name) {
 	if (!imxdma->name) {
 		printk(KERN_CRIT "%s: called for  not allocated channel %d\n",
 		printk(KERN_CRIT "%s: called for  not allocated channel %d\n",
-		       __FUNCTION__, dma_ch);
+		       __func__, dma_ch);
 		return -ENODEV;
 		return -ENODEV;
 	}
 	}
 
 
@@ -321,7 +321,7 @@ void imx_dma_enable(imx_dmach_t dma_ch)
 
 
 	if (!imxdma->name) {
 	if (!imxdma->name) {
 		printk(KERN_CRIT "%s: called for  not allocated channel %d\n",
 		printk(KERN_CRIT "%s: called for  not allocated channel %d\n",
-		       __FUNCTION__, dma_ch);
+		       __func__, dma_ch);
 		return;
 		return;
 	}
 	}
 
 
@@ -365,7 +365,7 @@ int imx_dma_request(imx_dmach_t dma_ch, const char *name)
 
 
 	if (dma_ch >= IMX_DMA_CHANNELS) {
 	if (dma_ch >= IMX_DMA_CHANNELS) {
 		printk(KERN_CRIT "%s: called for  non-existed channel %d\n",
 		printk(KERN_CRIT "%s: called for  non-existed channel %d\n",
-		       __FUNCTION__, dma_ch);
+		       __func__, dma_ch);
 		return -EINVAL;
 		return -EINVAL;
 	}
 	}
 
 
@@ -396,7 +396,7 @@ void imx_dma_free(imx_dmach_t dma_ch)
 	if (!imxdma->name) {
 	if (!imxdma->name) {
 		printk(KERN_CRIT
 		printk(KERN_CRIT
 		       "%s: trying to free channel %d which is already freed\n",
 		       "%s: trying to free channel %d which is already freed\n",
-		       __FUNCTION__, dma_ch);
+		       __func__, dma_ch);
 		return;
 		return;
 	}
 	}
 
 
@@ -456,7 +456,7 @@ imx_dma_request_by_prio(imx_dmach_t * pdma_ch, const char *name,
 		}
 		}
 	}
 	}
 
 
-	printk(KERN_ERR "%s: no free DMA channel found\n", __FUNCTION__);
+	printk(KERN_ERR "%s: no free DMA channel found\n", __func__);
 
 
 	return -ENODEV;
 	return -ENODEV;
 }
 }

+ 3 - 3
arch/arm/mach-imx/irq.c

@@ -160,21 +160,21 @@ imx_gpio_irq_type(unsigned int _irq, unsigned int type)
 static void
 static void
 imx_gpio_ack_irq(unsigned int irq)
 imx_gpio_ack_irq(unsigned int irq)
 {
 {
-	DEBUG_IRQ("%s: irq %d\n", __FUNCTION__, irq);
+	DEBUG_IRQ("%s: irq %d\n", __func__, irq);
 	ISR(IRQ_TO_REG(irq)) = 1 << ((irq - IRQ_GPIOA(0)) % 32);
 	ISR(IRQ_TO_REG(irq)) = 1 << ((irq - IRQ_GPIOA(0)) % 32);
 }
 }
 
 
 static void
 static void
 imx_gpio_mask_irq(unsigned int irq)
 imx_gpio_mask_irq(unsigned int irq)
 {
 {
-	DEBUG_IRQ("%s: irq %d\n", __FUNCTION__, irq);
+	DEBUG_IRQ("%s: irq %d\n", __func__, irq);
 	IMR(IRQ_TO_REG(irq)) &= ~( 1 << ((irq - IRQ_GPIOA(0)) % 32));
 	IMR(IRQ_TO_REG(irq)) &= ~( 1 << ((irq - IRQ_GPIOA(0)) % 32));
 }
 }
 
 
 static void
 static void
 imx_gpio_unmask_irq(unsigned int irq)
 imx_gpio_unmask_irq(unsigned int irq)
 {
 {
-	DEBUG_IRQ("%s: irq %d\n", __FUNCTION__, irq);
+	DEBUG_IRQ("%s: irq %d\n", __func__, irq);
 	IMR(IRQ_TO_REG(irq)) |= 1 << ((irq - IRQ_GPIOA(0)) % 32);
 	IMR(IRQ_TO_REG(irq)) |= 1 << ((irq - IRQ_GPIOA(0)) % 32);
 }
 }
 
 

+ 1 - 1
arch/arm/mach-iop13xx/iq81340mc.c

@@ -81,7 +81,7 @@ static void __init iq81340mc_init(void)
 static void __init iq81340mc_timer_init(void)
 static void __init iq81340mc_timer_init(void)
 {
 {
 	unsigned long bus_freq = iop13xx_core_freq() / iop13xx_xsi_bus_ratio();
 	unsigned long bus_freq = iop13xx_core_freq() / iop13xx_xsi_bus_ratio();
-	printk(KERN_DEBUG "%s: bus frequency: %lu\n", __FUNCTION__, bus_freq);
+	printk(KERN_DEBUG "%s: bus frequency: %lu\n", __func__, bus_freq);
 	iop_init_time(bus_freq);
 	iop_init_time(bus_freq);
 }
 }
 
 

+ 1 - 1
arch/arm/mach-iop13xx/iq81340sc.c

@@ -83,7 +83,7 @@ static void __init iq81340sc_init(void)
 static void __init iq81340sc_timer_init(void)
 static void __init iq81340sc_timer_init(void)
 {
 {
 	unsigned long bus_freq = iop13xx_core_freq() / iop13xx_xsi_bus_ratio();
 	unsigned long bus_freq = iop13xx_core_freq() / iop13xx_xsi_bus_ratio();
-	printk(KERN_DEBUG "%s: bus frequency: %lu\n", __FUNCTION__, bus_freq);
+	printk(KERN_DEBUG "%s: bus frequency: %lu\n", __func__, bus_freq);
 	iop_init_time(bus_freq);
 	iop_init_time(bus_freq);
 }
 }
 
 

+ 4 - 4
arch/arm/mach-iop13xx/pci.c

@@ -94,13 +94,13 @@ void iop13xx_map_pci_memory(void)
 					, 0, iop13xx_atux_mem_size, MT_DEVICE);
 					, 0, iop13xx_atux_mem_size, MT_DEVICE);
 					if (!iop13xx_atux_mem_base) {
 					if (!iop13xx_atux_mem_base) {
 						printk("%s: atux allocation "
 						printk("%s: atux allocation "
-						       "failed\n", __FUNCTION__);
+						       "failed\n", __func__);
 						BUG();
 						BUG();
 					}
 					}
 				} else
 				} else
 					iop13xx_atux_mem_size = 0;
 					iop13xx_atux_mem_size = 0;
 				PRINTK("%s: atu: %d bus_size: %d mem_base: %x\n",
 				PRINTK("%s: atu: %d bus_size: %d mem_base: %x\n",
-				__FUNCTION__, atu, iop13xx_atux_mem_size,
+				__func__, atu, iop13xx_atux_mem_size,
 				iop13xx_atux_mem_base);
 				iop13xx_atux_mem_base);
 				break;
 				break;
 			case 1:
 			case 1:
@@ -120,13 +120,13 @@ void iop13xx_map_pci_memory(void)
 					, 0, iop13xx_atue_mem_size, MT_DEVICE);
 					, 0, iop13xx_atue_mem_size, MT_DEVICE);
 					if (!iop13xx_atue_mem_base) {
 					if (!iop13xx_atue_mem_base) {
 						printk("%s: atue allocation "
 						printk("%s: atue allocation "
-						       "failed\n", __FUNCTION__);
+						       "failed\n", __func__);
 						BUG();
 						BUG();
 					}
 					}
 				} else
 				} else
 					iop13xx_atue_mem_size = 0;
 					iop13xx_atue_mem_size = 0;
 				PRINTK("%s: atu: %d bus_size: %d mem_base: %x\n",
 				PRINTK("%s: atu: %d bus_size: %d mem_base: %x\n",
-				__FUNCTION__, atu, iop13xx_atue_mem_size,
+				__func__, atu, iop13xx_atue_mem_size,
 				iop13xx_atue_mem_base);
 				iop13xx_atue_mem_base);
 				break;
 				break;
 			}
 			}

+ 1 - 1
arch/arm/mach-iop13xx/setup.c

@@ -519,7 +519,7 @@ void __init iop13xx_platform_init(void)
 	if (iq8134x_flash_resource.end > iq8134x_flash_resource.start)
 	if (iq8134x_flash_resource.end > iq8134x_flash_resource.start)
 		iop13xx_devices[plat_idx++] = &iq8134x_flash;
 		iop13xx_devices[plat_idx++] = &iq8134x_flash;
 	else
 	else
-		printk(KERN_ERR "%s: Failed to probe flash size\n", __FUNCTION__);
+		printk(KERN_ERR "%s: Failed to probe flash size\n", __func__);
 #endif
 #endif
 
 
 	platform_add_devices(iop13xx_devices, plat_idx);
 	platform_add_devices(iop13xx_devices, plat_idx);

+ 1 - 1
arch/arm/mach-ixp4xx/common-pci.c

@@ -87,7 +87,7 @@ static inline int check_master_abort(void)
 	if (isr & PCI_ISR_PFE) {
 	if (isr & PCI_ISR_PFE) {
 		/* make sure the Master Abort bit is reset */    
 		/* make sure the Master Abort bit is reset */    
 		*PCI_ISR = PCI_ISR_PFE;
 		*PCI_ISR = PCI_ISR_PFE;
-		pr_debug("%s failed\n", __FUNCTION__);
+		pr_debug("%s failed\n", __func__);
 		return 1;
 		return 1;
 	}
 	}
 
 

+ 1 - 1
arch/arm/mach-ixp4xx/gtwx5715-pci.c

@@ -65,7 +65,7 @@ static int __init gtwx5715_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
 	else
 	else
 		rc = gtwx5715_irqmap[slot][pin-1];
 		rc = gtwx5715_irqmap[slot][pin-1];
 
 
-	printk("%s: Mapped slot %d pin %d to IRQ %d\n", __FUNCTION__,slot, pin, rc);
+	printk("%s: Mapped slot %d pin %d to IRQ %d\n", __func__, slot, pin, rc);
 	return(rc);
 	return(rc);
 }
 }
 
 

+ 3 - 3
arch/arm/mach-netx/generic.c

@@ -133,7 +133,7 @@ netx_hif_ack_irq(unsigned int _irq)
 	val &= ~((1 << 24) << irq);
 	val &= ~((1 << 24) << irq);
 	writel(val, NETX_DPMAS_INT_EN);
 	writel(val, NETX_DPMAS_INT_EN);
 
 
-	DEBUG_IRQ("%s: irq %d\n", __FUNCTION__, _irq);
+	DEBUG_IRQ("%s: irq %d\n", __func__, _irq);
 }
 }
 
 
 static void
 static void
@@ -145,7 +145,7 @@ netx_hif_mask_irq(unsigned int _irq)
 	val = readl(NETX_DPMAS_INT_EN);
 	val = readl(NETX_DPMAS_INT_EN);
 	val &= ~((1 << 24) << irq);
 	val &= ~((1 << 24) << irq);
 	writel(val, NETX_DPMAS_INT_EN);
 	writel(val, NETX_DPMAS_INT_EN);
-	DEBUG_IRQ("%s: irq %d\n", __FUNCTION__, _irq);
+	DEBUG_IRQ("%s: irq %d\n", __func__, _irq);
 }
 }
 
 
 static void
 static void
@@ -157,7 +157,7 @@ netx_hif_unmask_irq(unsigned int _irq)
 	val = readl(NETX_DPMAS_INT_EN);
 	val = readl(NETX_DPMAS_INT_EN);
 	val |= (1 << 24) << irq;
 	val |= (1 << 24) << irq;
 	writel(val, NETX_DPMAS_INT_EN);
 	writel(val, NETX_DPMAS_INT_EN);
-	DEBUG_IRQ("%s: irq %d\n", __FUNCTION__, _irq);
+	DEBUG_IRQ("%s: irq %d\n", __func__, _irq);
 }
 }
 
 
 static struct irq_chip netx_hif_chip = {
 static struct irq_chip netx_hif_chip = {

+ 1 - 1
arch/arm/mach-ns9xxx/gpio.c

@@ -31,7 +31,7 @@
 static spinlock_t gpio_lock = __SPIN_LOCK_UNLOCKED(gpio_lock);
 static spinlock_t gpio_lock = __SPIN_LOCK_UNLOCKED(gpio_lock);
 
 
 /* only access gpiores with atomic ops */
 /* only access gpiores with atomic ops */
-static DECLARE_BITMAP(gpiores, GPIO_MAX);
+static DECLARE_BITMAP(gpiores, GPIO_MAX + 1);
 
 
 static inline int ns9xxx_valid_gpio(unsigned gpio)
 static inline int ns9xxx_valid_gpio(unsigned gpio)
 {
 {

+ 4 - 0
arch/arm/mach-omap1/board-h2.c

@@ -350,6 +350,10 @@ static void __init h2_init_smc91x(void)
 
 
 static struct i2c_board_info __initdata h2_i2c_board_info[] = {
 static struct i2c_board_info __initdata h2_i2c_board_info[] = {
 	{
 	{
+		I2C_BOARD_INFO("tps65010", 0x48),
+		.type           = "tps65010",
+		.irq            = OMAP_GPIO_IRQ(58),
+	}, {
 		I2C_BOARD_INFO("isp1301_omap", 0x2d),
 		I2C_BOARD_INFO("isp1301_omap", 0x2d),
 		.type		= "isp1301_omap",
 		.type		= "isp1301_omap",
 		.irq		= OMAP_GPIO_IRQ(2),
 		.irq		= OMAP_GPIO_IRQ(2),

+ 22 - 0
arch/arm/mach-omap1/board-h3.c

@@ -26,6 +26,7 @@
 #include <linux/mtd/nand.h>
 #include <linux/mtd/nand.h>
 #include <linux/mtd/partitions.h>
 #include <linux/mtd/partitions.h>
 #include <linux/input.h>
 #include <linux/input.h>
+#include <linux/spi/spi.h>
 #include <linux/i2c/tps65010.h>
 #include <linux/i2c/tps65010.h>
 
 
 #include <asm/setup.h>
 #include <asm/setup.h>
@@ -51,6 +52,8 @@
 #include <asm/arch/mcbsp.h>
 #include <asm/arch/mcbsp.h>
 #include <asm/arch/omap-alsa.h>
 #include <asm/arch/omap-alsa.h>
 
 
+#define H3_TS_GPIO	48
+
 static int h3_keymap[] = {
 static int h3_keymap[] = {
 	KEY(0, 0, KEY_LEFT),
 	KEY(0, 0, KEY_LEFT),
 	KEY(0, 1, KEY_RIGHT),
 	KEY(0, 1, KEY_RIGHT),
@@ -373,6 +376,17 @@ static struct platform_device h3_lcd_device = {
 	.id		= -1,
 	.id		= -1,
 };
 };
 
 
+static struct spi_board_info h3_spi_board_info[] __initdata = {
+	[0] = {
+		.modalias	= "tsc2101",
+		.bus_num	= 2,
+		.chip_select	= 0,
+		.irq		= OMAP_GPIO_IRQ(H3_TS_GPIO),
+		.max_speed_hz	= 16000000,
+		/* .platform_data	= &tsc_platform_data, */
+	},
+};
+
 static struct omap_mcbsp_reg_cfg mcbsp_regs = {
 static struct omap_mcbsp_reg_cfg mcbsp_regs = {
 	.spcr2 = FREE | FRST | GRST | XRST | XINTM(3),
 	.spcr2 = FREE | FRST | GRST | XRST | XINTM(3),
 	.spcr1 = RINTM(3) | RRST,
 	.spcr1 = RINTM(3) | RRST,
@@ -457,6 +471,14 @@ static struct omap_board_config_kernel h3_config[] __initdata = {
 	{ OMAP_TAG_LCD,		&h3_lcd_config },
 	{ OMAP_TAG_LCD,		&h3_lcd_config },
 };
 };
 
 
+static struct i2c_board_info __initdata h3_i2c_board_info[] = {
+       {
+               I2C_BOARD_INFO("tps65010", 0x48),
+               .type           = "tps65013",
+               /* .irq         = OMAP_GPIO_IRQ(??), */
+       },
+};
+
 static struct omap_gpio_switch h3_gpio_switches[] __initdata = {
 static struct omap_gpio_switch h3_gpio_switches[] __initdata = {
 	{
 	{
 		.name			= "mmc_slot",
 		.name			= "mmc_slot",

+ 1 - 1
arch/arm/mach-omap1/pm.c

@@ -717,7 +717,7 @@ static int __init omap_pm_init(void)
 #endif
 #endif
 
 
 #ifdef CONFIG_OMAP_32K_TIMER
 #ifdef CONFIG_OMAP_32K_TIMER
-	error = sysfs_create_file(power_kobj, &sleep_while_idle_attr);
+	error = sysfs_create_file(power_kobj, &sleep_while_idle_attr.attr);
 	if (error)
 	if (error)
 		printk(KERN_ERR "sysfs_create_file failed: %d\n", error);
 		printk(KERN_ERR "sysfs_create_file failed: %d\n", error);
 #endif
 #endif

+ 6 - 0
arch/arm/mach-omap2/io.c

@@ -42,6 +42,12 @@ static struct map_desc omap2_io_desc[] __initdata = {
 		.length		= L3_24XX_SIZE,
 		.length		= L3_24XX_SIZE,
 		.type		= MT_DEVICE
 		.type		= MT_DEVICE
 	},
 	},
+	{
+		.virtual        = L4_24XX_VIRT,
+		.pfn            = __phys_to_pfn(L4_24XX_PHYS),
+		.length         = L4_24XX_SIZE,
+		.type           = MT_DEVICE
+	},
 #ifdef CONFIG_ARCH_OMAP2430
 #ifdef CONFIG_ARCH_OMAP2430
 	{
 	{
 		.virtual	= L4_WK_243X_VIRT,
 		.virtual	= L4_WK_243X_VIRT,

+ 10 - 4
arch/arm/mach-orion/addr-map.c

@@ -97,14 +97,20 @@
 #define PCIE_BAR_CTRL(n)	ORION_PCIE_REG(0x1804 + ((n - 1) * 4))
 #define PCIE_BAR_CTRL(n)	ORION_PCIE_REG(0x1804 + ((n - 1) * 4))
 #define PCIE_BAR_LO(n)		ORION_PCIE_REG(0x0010 + ((n) * 8))
 #define PCIE_BAR_LO(n)		ORION_PCIE_REG(0x0010 + ((n) * 8))
 #define PCIE_BAR_HI(n)		ORION_PCIE_REG(0x0014 + ((n) * 8))
 #define PCIE_BAR_HI(n)		ORION_PCIE_REG(0x0014 + ((n) * 8))
-#define PCIE_WIN_CTRL(n)	ORION_PCIE_REG(0x1820 + ((n) << 4))
-#define PCIE_WIN_BASE(n)	ORION_PCIE_REG(0x1824 + ((n) << 4))
-#define PCIE_WIN_REMAP(n)	ORION_PCIE_REG(0x182c + ((n) << 4))
+#define PCIE_WIN_CTRL(n)	(((n) < 5) ? \
+					ORION_PCIE_REG(0x1820 + ((n) << 4)) : \
+					ORION_PCIE_REG(0x1880))
+#define PCIE_WIN_BASE(n)	(((n) < 5) ? \
+					ORION_PCIE_REG(0x1824 + ((n) << 4)) : \
+					ORION_PCIE_REG(0x1884))
+#define PCIE_WIN_REMAP(n)	(((n) < 5) ? \
+					ORION_PCIE_REG(0x182c + ((n) << 4)) : \
+					ORION_PCIE_REG(0x188c))
 #define PCIE_DEFWIN_CTRL	ORION_PCIE_REG(0x18b0)
 #define PCIE_DEFWIN_CTRL	ORION_PCIE_REG(0x18b0)
 #define PCIE_EXPROM_WIN_CTRL	ORION_PCIE_REG(0x18c0)
 #define PCIE_EXPROM_WIN_CTRL	ORION_PCIE_REG(0x18c0)
 #define PCIE_EXPROM_WIN_REMP	ORION_PCIE_REG(0x18c4)
 #define PCIE_EXPROM_WIN_REMP	ORION_PCIE_REG(0x18c4)
 #define PCIE_MAX_BARS		3
 #define PCIE_MAX_BARS		3
-#define PCIE_MAX_WINS		5
+#define PCIE_MAX_WINS		6
 
 
 /*
 /*
  * Use PCIE BAR '1' for all DDR banks
  * Use PCIE BAR '1' for all DDR banks

+ 22 - 2
arch/arm/mach-orion/common.c

@@ -17,7 +17,9 @@
 #include <linux/mv643xx_eth.h>
 #include <linux/mv643xx_eth.h>
 #include <linux/mv643xx_i2c.h>
 #include <linux/mv643xx_i2c.h>
 #include <asm/page.h>
 #include <asm/page.h>
+#include <asm/setup.h>
 #include <asm/timex.h>
 #include <asm/timex.h>
+#include <asm/mach/arch.h>
 #include <asm/mach/map.h>
 #include <asm/mach/map.h>
 #include <asm/arch/hardware.h>
 #include <asm/arch/hardware.h>
 #include "common.h"
 #include "common.h"
@@ -177,8 +179,8 @@ static struct platform_device orion_ehci1 = {
 
 
 static struct resource orion_eth_shared_resources[] = {
 static struct resource orion_eth_shared_resources[] = {
 	{
 	{
-		.start	= ORION_ETH_PHYS_BASE,
-		.end	= ORION_ETH_PHYS_BASE + 0xffff,
+		.start	= ORION_ETH_PHYS_BASE + 0x2000,
+		.end	= ORION_ETH_PHYS_BASE + 0x3fff,
 		.flags	= IORESOURCE_MEM,
 		.flags	= IORESOURCE_MEM,
 	},
 	},
 };
 };
@@ -347,3 +349,21 @@ void __init orion_init(void)
 		platform_device_register(&orion_ehci1);
 		platform_device_register(&orion_ehci1);
 	platform_device_register(&orion_i2c);
 	platform_device_register(&orion_i2c);
 }
 }
+
+/*
+ * Many orion-based systems have buggy bootloader implementations.
+ * This is a common fixup for bogus memory tags.
+ */
+void __init tag_fixup_mem32(struct machine_desc *mdesc, struct tag *t,
+			    char **from, struct meminfo *meminfo)
+{
+	for (; t->hdr.size; t = tag_next(t))
+		if (t->hdr.tag == ATAG_MEM &&
+		    (!t->u.mem.size || t->u.mem.size & ~PAGE_MASK ||
+		     t->u.mem.start & ~PAGE_MASK)) {
+			printk(KERN_WARNING
+			       "Clearing invalid memory bank %dKB@0x%08x\n",
+			       t->u.mem.size / 1024, t->u.mem.start);
+			t->hdr.tag = 0;
+		}
+}

+ 6 - 0
arch/arm/mach-orion/common.h

@@ -83,4 +83,10 @@ struct mv_sata_platform_data;
 
 
 void __init orion_sata_init(struct mv_sata_platform_data *sata_data);
 void __init orion_sata_init(struct mv_sata_platform_data *sata_data);
 
 
+struct machine_desc;
+struct meminfo;
+struct tag;
+extern void __init tag_fixup_mem32(struct machine_desc *, struct tag *,
+				   char **, struct meminfo *);
+
 #endif /* __ARCH_ORION_COMMON_H__ */
 #endif /* __ARCH_ORION_COMMON_H__ */

+ 1 - 0
arch/arm/mach-orion/dns323-setup.c

@@ -319,4 +319,5 @@ MACHINE_START(DNS323, "D-Link DNS-323")
 	.map_io		= orion_map_io,
 	.map_io		= orion_map_io,
 	.init_irq	= orion_init_irq,
 	.init_irq	= orion_init_irq,
 	.timer		= &orion_timer,
 	.timer		= &orion_timer,
+	.fixup		= tag_fixup_mem32,
 MACHINE_END
 MACHINE_END

+ 6 - 6
arch/arm/mach-orion/gpio.c

@@ -36,7 +36,7 @@ int gpio_direction_input(unsigned pin)
 	unsigned long flags;
 	unsigned long flags;
 
 
 	if (pin >= GPIO_MAX || !test_bit(pin, gpio_valid)) {
 	if (pin >= GPIO_MAX || !test_bit(pin, gpio_valid)) {
-		pr_debug("%s: invalid GPIO %d\n", __FUNCTION__, pin);
+		pr_debug("%s: invalid GPIO %d\n", __func__, pin);
 		return -EINVAL;
 		return -EINVAL;
 	}
 	}
 
 
@@ -62,7 +62,7 @@ int gpio_direction_output(unsigned pin, int value)
 	int mask;
 	int mask;
 
 
 	if (pin >= GPIO_MAX || !test_bit(pin, gpio_valid)) {
 	if (pin >= GPIO_MAX || !test_bit(pin, gpio_valid)) {
-		pr_debug("%s: invalid GPIO %d\n", __FUNCTION__, pin);
+		pr_debug("%s: invalid GPIO %d\n", __func__, pin);
 		return -EINVAL;
 		return -EINVAL;
 	}
 	}
 
 
@@ -141,7 +141,7 @@ int gpio_request(unsigned pin, const char *label)
 	unsigned long flags;
 	unsigned long flags;
 
 
 	if (pin >= GPIO_MAX || !test_bit(pin, gpio_valid)) {
 	if (pin >= GPIO_MAX || !test_bit(pin, gpio_valid)) {
-		pr_debug("%s: invalid GPIO %d\n", __FUNCTION__, pin);
+		pr_debug("%s: invalid GPIO %d\n", __func__, pin);
 		return -EINVAL;
 		return -EINVAL;
 	}
 	}
 
 
@@ -149,7 +149,7 @@ int gpio_request(unsigned pin, const char *label)
 
 
 	if (gpio_label[pin]) {
 	if (gpio_label[pin]) {
 		pr_debug("%s: GPIO %d already used as %s\n",
 		pr_debug("%s: GPIO %d already used as %s\n",
-			 __FUNCTION__, pin, gpio_label[pin]);
+			 __func__, pin, gpio_label[pin]);
 		ret = -EBUSY;
 		ret = -EBUSY;
 	} else
 	} else
 		gpio_label[pin] = label ? label : "?";
 		gpio_label[pin] = label ? label : "?";
@@ -162,12 +162,12 @@ EXPORT_SYMBOL(gpio_request);
 void gpio_free(unsigned pin)
 void gpio_free(unsigned pin)
 {
 {
 	if (pin >= GPIO_MAX || !test_bit(pin, gpio_valid)) {
 	if (pin >= GPIO_MAX || !test_bit(pin, gpio_valid)) {
-		pr_debug("%s: invalid GPIO %d\n", __FUNCTION__, pin);
+		pr_debug("%s: invalid GPIO %d\n", __func__, pin);
 		return;
 		return;
 	}
 	}
 
 
 	if (!gpio_label[pin])
 	if (!gpio_label[pin])
-		pr_warning("%s: GPIO %d already freed\n", __FUNCTION__, pin);
+		pr_warning("%s: GPIO %d already freed\n", __func__, pin);
 	else
 	else
 		gpio_label[pin] = NULL;
 		gpio_label[pin] = NULL;
 }
 }

+ 1 - 0
arch/arm/mach-orion/kurobox_pro-setup.c

@@ -240,4 +240,5 @@ MACHINE_START(KUROBOX_PRO, "Buffalo/Revogear Kurobox Pro")
 	.map_io		= orion_map_io,
 	.map_io		= orion_map_io,
 	.init_irq	= orion_init_irq,
 	.init_irq	= orion_init_irq,
 	.timer		= &orion_timer,
 	.timer		= &orion_timer,
+	.fixup		= tag_fixup_mem32,
 MACHINE_END
 MACHINE_END

+ 1 - 0
arch/arm/mach-orion/ts209-setup.c

@@ -357,4 +357,5 @@ MACHINE_START(TS209, "QNAP TS-109/TS-209")
 	.map_io		= orion_map_io,
 	.map_io		= orion_map_io,
 	.init_irq	= orion_init_irq,
 	.init_irq	= orion_init_irq,
 	.timer		= &orion_timer,
 	.timer		= &orion_timer,
+	.fixup		= tag_fixup_mem32,
 MACHINE_END
 MACHINE_END

+ 1 - 1
arch/arm/mach-pnx4008/clock.c

@@ -976,7 +976,7 @@ static int __init clk_init(void)
 				(*clkp)->set_parent((*clkp), (*clkp)->parent);
 				(*clkp)->set_parent((*clkp), (*clkp)->parent);
 		}
 		}
 		pr_debug("%s: clock %s, rate %ld\n",
 		pr_debug("%s: clock %s, rate %ld\n",
-			__FUNCTION__, (*clkp)->name, (*clkp)->rate);
+			__func__, (*clkp)->name, (*clkp)->rate);
 	}
 	}
 
 
 	local_clk_use(&ck_pll4);
 	local_clk_use(&ck_pll4);

+ 1 - 1
arch/arm/mach-pnx4008/dma.c

@@ -192,7 +192,7 @@ void pnx4008_free_channel(int ch)
 	if (!dma_channels[ch].name) {
 	if (!dma_channels[ch].name) {
 		printk(KERN_CRIT
 		printk(KERN_CRIT
 		       "%s: trying to free channel %d which is already freed\n",
 		       "%s: trying to free channel %d which is already freed\n",
-		       __FUNCTION__, ch);
+		       __func__, ch);
 		return;
 		return;
 	}
 	}
 
 

+ 1 - 1
arch/arm/mach-pxa/cm-x270-pci.c

@@ -104,7 +104,7 @@ static int __init cmx270_pci_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
 {
 {
 	int irq;
 	int irq;
 
 
-	dev_dbg(&dev->dev, "%s: slot=%x, pin=%x\n", __FUNCTION__, slot, pin);
+	dev_dbg(&dev->dev, "%s: slot=%x, pin=%x\n", __func__, slot, pin);
 
 
 	irq = it8152_pci_map_irq(dev, slot, pin);
 	irq = it8152_pci_map_irq(dev, slot, pin);
 	if (irq)
 	if (irq)

+ 2 - 2
arch/arm/mach-pxa/cm-x270.c

@@ -504,11 +504,11 @@ static void cmx270_mci_setpower(struct device *dev, unsigned int vdd)
 	struct pxamci_platform_data *p_d = dev->platform_data;
 	struct pxamci_platform_data *p_d = dev->platform_data;
 
 
 	if ((1 << vdd) & p_d->ocr_mask) {
 	if ((1 << vdd) & p_d->ocr_mask) {
-		printk(KERN_DEBUG "%s: on\n", __FUNCTION__);
+		printk(KERN_DEBUG "%s: on\n", __func__);
 		GPCR(105) = GPIO_bit(105);
 		GPCR(105) = GPIO_bit(105);
 	} else {
 	} else {
 		GPSR(105) = GPIO_bit(105);
 		GPSR(105) = GPIO_bit(105);
-		printk(KERN_DEBUG "%s: off\n", __FUNCTION__);
+		printk(KERN_DEBUG "%s: off\n", __func__);
 	}
 	}
 }
 }
 
 

+ 1 - 1
arch/arm/mach-pxa/cpu-pxa.c

@@ -43,7 +43,7 @@
 
 
 #ifdef DEBUG
 #ifdef DEBUG
 static unsigned int freq_debug;
 static unsigned int freq_debug;
-MODULE_PARM(freq_debug, "i");
+module_param(freq_debug, uint, 0);
 MODULE_PARM_DESC(freq_debug, "Set the debug messages to on=1/off=0");
 MODULE_PARM_DESC(freq_debug, "Set the debug messages to on=1/off=0");
 #else
 #else
 #define freq_debug  0
 #define freq_debug  0

+ 1 - 1
arch/arm/mach-pxa/dma.c

@@ -81,7 +81,7 @@ void pxa_free_dma (int dma_ch)
 	if (!dma_channels[dma_ch].name) {
 	if (!dma_channels[dma_ch].name) {
 		printk (KERN_CRIT
 		printk (KERN_CRIT
 			"%s: trying to free channel %d which is already freed\n",
 			"%s: trying to free channel %d which is already freed\n",
-			__FUNCTION__, dma_ch);
+			__func__, dma_ch);
 		return;
 		return;
 	}
 	}
 
 

+ 1 - 1
arch/arm/mach-pxa/em-x270.c

@@ -264,7 +264,7 @@ static int em_x270_mci_init(struct device *dev,
 			  "MMC card detect", data);
 			  "MMC card detect", data);
 	if (err) {
 	if (err) {
 		printk(KERN_ERR "%s: can't request MMC card detect IRQ: %d\n",
 		printk(KERN_ERR "%s: can't request MMC card detect IRQ: %d\n",
-		       __FUNCTION__, err);
+		       __func__, err);
 		return err;
 		return err;
 	}
 	}
 
 

+ 2 - 2
arch/arm/mach-pxa/mainstone.c

@@ -390,11 +390,11 @@ static void mainstone_mci_setpower(struct device *dev, unsigned int vdd)
 	struct pxamci_platform_data* p_d = dev->platform_data;
 	struct pxamci_platform_data* p_d = dev->platform_data;
 
 
 	if (( 1 << vdd) & p_d->ocr_mask) {
 	if (( 1 << vdd) & p_d->ocr_mask) {
-		printk(KERN_DEBUG "%s: on\n", __FUNCTION__);
+		printk(KERN_DEBUG "%s: on\n", __func__);
 		MST_MSCWR1 |= MST_MSCWR1_MMC_ON;
 		MST_MSCWR1 |= MST_MSCWR1_MMC_ON;
 		MST_MSCWR1 &= ~MST_MSCWR1_MS_SEL;
 		MST_MSCWR1 &= ~MST_MSCWR1_MS_SEL;
 	} else {
 	} else {
-		printk(KERN_DEBUG "%s: off\n", __FUNCTION__);
+		printk(KERN_DEBUG "%s: off\n", __func__);
 		MST_MSCWR1 &= ~MST_MSCWR1_MMC_ON;
 		MST_MSCWR1 &= ~MST_MSCWR1_MMC_ON;
 	}
 	}
 }
 }

+ 0 - 8
arch/arm/mach-pxa/pxa3xx.c

@@ -129,28 +129,20 @@ static void clk_pxa3xx_cken_enable(struct clk *clk)
 {
 {
 	unsigned long mask = 1ul << (clk->cken & 0x1f);
 	unsigned long mask = 1ul << (clk->cken & 0x1f);
 
 
-	local_irq_disable();
-
 	if (clk->cken < 32)
 	if (clk->cken < 32)
 		CKENA |= mask;
 		CKENA |= mask;
 	else
 	else
 		CKENB |= mask;
 		CKENB |= mask;
-
-	local_irq_enable();
 }
 }
 
 
 static void clk_pxa3xx_cken_disable(struct clk *clk)
 static void clk_pxa3xx_cken_disable(struct clk *clk)
 {
 {
 	unsigned long mask = 1ul << (clk->cken & 0x1f);
 	unsigned long mask = 1ul << (clk->cken & 0x1f);
 
 
-	local_irq_disable();
-
 	if (clk->cken < 32)
 	if (clk->cken < 32)
 		CKENA &= ~mask;
 		CKENA &= ~mask;
 	else
 	else
 		CKENB &= ~mask;
 		CKENB &= ~mask;
-
-	local_irq_enable();
 }
 }
 
 
 static const struct clkops clk_pxa3xx_cken_ops = {
 static const struct clkops clk_pxa3xx_cken_ops = {

+ 4 - 4
arch/arm/mach-pxa/trizeps4.c

@@ -217,7 +217,7 @@ void board_pcmcia_power(int power)
 		ConXS_BCR = trizeps_conxs_bcr;
 		ConXS_BCR = trizeps_conxs_bcr;
 
 
 	}
 	}
-	pr_debug("%s: o%s 0x%x\n", __FUNCTION__, power ? "n": "ff", trizeps_conxs_bcr);
+	pr_debug("%s: o%s 0x%x\n", __func__, power ? "n": "ff", trizeps_conxs_bcr);
 }
 }
 
 
 /* backlight power switching for LCD panel */
 /* backlight power switching for LCD panel */
@@ -228,7 +228,7 @@ static void board_backlight_power(int on)
 	} else {
 	} else {
 		trizeps_conxs_bcr &= ~ConXS_BCR_L_DISP;
 		trizeps_conxs_bcr &= ~ConXS_BCR_L_DISP;
 	}
 	}
-	pr_debug("%s: o%s 0x%x\n", __FUNCTION__, on ? "n" : "ff", trizeps_conxs_bcr);
+	pr_debug("%s: o%s 0x%x\n", __func__, on ? "n" : "ff", trizeps_conxs_bcr);
 	ConXS_BCR = trizeps_conxs_bcr;
 	ConXS_BCR = trizeps_conxs_bcr;
 }
 }
 
 
@@ -238,10 +238,10 @@ static void board_mci_power(struct device *dev, unsigned int vdd)
 	struct pxamci_platform_data* p_d = dev->platform_data;
 	struct pxamci_platform_data* p_d = dev->platform_data;
 
 
 	if (( 1 << vdd) & p_d->ocr_mask) {
 	if (( 1 << vdd) & p_d->ocr_mask) {
-		pr_debug("%s: on\n", __FUNCTION__);
+		pr_debug("%s: on\n", __func__);
 		/* FIXME fill in values here */
 		/* FIXME fill in values here */
 	} else {
 	} else {
-		pr_debug("%s: off\n", __FUNCTION__);
+		pr_debug("%s: off\n", __func__);
 		/* FIXME fill in values here */
 		/* FIXME fill in values here */
 	}
 	}
 }
 }

+ 1 - 1
arch/arm/mach-pxa/zylonite.c

@@ -58,7 +58,7 @@ static struct platform_device smc91x_device = {
 	.resource	= smc91x_resources,
 	.resource	= smc91x_resources,
 };
 };
 
 
-#if defined(CONFIG_FB_PXA) || (CONFIG_FB_PXA_MODULES)
+#if defined(CONFIG_FB_PXA) || defined(CONFIG_FB_PXA_MODULE)
 static void zylonite_backlight_power(int on)
 static void zylonite_backlight_power(int on)
 {
 {
 	gpio_set_value(gpio_backlight, on);
 	gpio_set_value(gpio_backlight, on);

+ 3 - 3
arch/arm/mach-sa1100/badge4.c

@@ -206,7 +206,7 @@ static int __init badge4_init(void)
 	if (ret < 0)
 	if (ret < 0)
 		printk(KERN_ERR
 		printk(KERN_ERR
 		       "%s: SA-1111 initialization failed (%d)\n",
 		       "%s: SA-1111 initialization failed (%d)\n",
-		       __FUNCTION__, ret);
+		       __func__, ret);
 
 
 
 
 	/* maybe turn on 5v0 from the start */
 	/* maybe turn on 5v0 from the start */
@@ -240,11 +240,11 @@ void badge4_set_5V(unsigned subsystem, int on)
 	/* detect on->off and off->on transitions */
 	/* detect on->off and off->on transitions */
 	if ((!old_5V_bitmap) && (badge4_5V_bitmap)) {
 	if ((!old_5V_bitmap) && (badge4_5V_bitmap)) {
 		/* was off, now on */
 		/* was off, now on */
-		printk(KERN_INFO "%s: enabling 5V supply rail\n", __FUNCTION__);
+		printk(KERN_INFO "%s: enabling 5V supply rail\n", __func__);
 		GPSR = BADGE4_GPIO_PCMEN5V;
 		GPSR = BADGE4_GPIO_PCMEN5V;
 	} else if ((old_5V_bitmap) && (!badge4_5V_bitmap)) {
 	} else if ((old_5V_bitmap) && (!badge4_5V_bitmap)) {
 		/* was on, now off */
 		/* was on, now off */
-		printk(KERN_INFO "%s: disabling 5V supply rail\n", __FUNCTION__);
+		printk(KERN_INFO "%s: disabling 5V supply rail\n", __func__);
 		GPCR = BADGE4_GPIO_PCMEN5V;
 		GPCR = BADGE4_GPIO_PCMEN5V;
 	}
 	}
 
 

+ 1 - 1
arch/arm/mach-sa1100/cpu-sa1100.c

@@ -139,7 +139,7 @@ static void sa1100_update_dram_timings(int current_speed, int new_speed)
 
 
 	if (settings->speed == 0) {
 	if (settings->speed == 0) {
 		panic("%s: couldn't find dram setting for speed %d\n",
 		panic("%s: couldn't find dram setting for speed %d\n",
-		      __FUNCTION__, new_speed);
+		      __func__, new_speed);
 	}
 	}
 
 
 	/* No risk, no fun: run with interrupts on! */
 	/* No risk, no fun: run with interrupts on! */

+ 4 - 4
arch/arm/mach-sa1100/dma.c

@@ -129,7 +129,7 @@ int sa1100_request_dma (dma_device_t device, const char *device_id,
 	if (err) {
 	if (err) {
 		printk(KERN_ERR
 		printk(KERN_ERR
 		       "%s: unable to request IRQ %d for %s\n",
 		       "%s: unable to request IRQ %d for %s\n",
-		       __FUNCTION__, IRQ_DMA0 + i, device_id);
+		       __func__, IRQ_DMA0 + i, device_id);
 		dma->device = 0;
 		dma->device = 0;
 		return err;
 		return err;
 	}
 	}
@@ -165,12 +165,12 @@ void sa1100_free_dma(dma_regs_t *regs)
 		if (regs == (dma_regs_t *)&DDAR(i))
 		if (regs == (dma_regs_t *)&DDAR(i))
 			break;
 			break;
 	if (i >= SA1100_DMA_CHANNELS) {
 	if (i >= SA1100_DMA_CHANNELS) {
-		printk(KERN_ERR "%s: bad DMA identifier\n", __FUNCTION__);
+		printk(KERN_ERR "%s: bad DMA identifier\n", __func__);
 		return;
 		return;
 	}
 	}
 
 
 	if (!dma_chan[i].device) {
 	if (!dma_chan[i].device) {
-		printk(KERN_ERR "%s: Trying to free free DMA\n", __FUNCTION__);
+		printk(KERN_ERR "%s: Trying to free free DMA\n", __func__);
 		return;
 		return;
 	}
 	}
 
 
@@ -329,7 +329,7 @@ void sa1100_reset_dma(dma_regs_t *regs)
 		if (regs == (dma_regs_t *)&DDAR(i))
 		if (regs == (dma_regs_t *)&DDAR(i))
 			break;
 			break;
 	if (i >= SA1100_DMA_CHANNELS) {
 	if (i >= SA1100_DMA_CHANNELS) {
-		printk(KERN_ERR "%s: bad DMA identifier\n", __FUNCTION__);
+		printk(KERN_ERR "%s: bad DMA identifier\n", __func__);
 		return;
 		return;
 	}
 	}
 
 

+ 7 - 7
arch/arm/mach-sa1100/h3600.c

@@ -596,7 +596,7 @@ static void h3800_control_egpio(enum ipaq_egpio_type x, int setp)
 	case IPAQ_EGPIO_CODEC_NRESET:
 	case IPAQ_EGPIO_CODEC_NRESET:
 	case IPAQ_EGPIO_AUDIO_ON:
 	case IPAQ_EGPIO_AUDIO_ON:
 	case IPAQ_EGPIO_QMUTE:
 	case IPAQ_EGPIO_QMUTE:
-		printk("%s: error - should not be called\n", __FUNCTION__);
+		printk("%s: error - should not be called\n", __func__);
 		break;
 		break;
 	case IPAQ_EGPIO_OPT_NVRAM_ON:
 	case IPAQ_EGPIO_OPT_NVRAM_ON:
 		SET_ASIC2(GPIO2_OPT_ON_NVRAM);
 		SET_ASIC2(GPIO2_OPT_ON_NVRAM);
@@ -638,7 +638,7 @@ static int h3800_pm_callback(int req)
 	static u16 asic2_data;
 	static u16 asic2_data;
 	int result = 0;
 	int result = 0;
 
 
-	printk("%s %d\n", __FUNCTION__, req);
+	printk("%s %d\n", __func__, req);
 
 
 	switch (req) {
 	switch (req) {
 	case PM_RESUME:
 	case PM_RESUME:
@@ -666,7 +666,7 @@ static int h3800_pm_callback(int req)
 		asic2_data = H3800_ASIC2_GPIOPIOD;
 		asic2_data = H3800_ASIC2_GPIOPIOD;
 		break;
 		break;
 	default:
 	default:
-		printk("%s: unrecognized PM callback\n", __FUNCTION__);
+		printk("%s: unrecognized PM callback\n", __func__);
 		break;
 		break;
 	}
 	}
 	return result;
 	return result;
@@ -706,7 +706,7 @@ static void h3800_IRQ_demux(unsigned int irq, struct irq_desc *desc)
 {
 {
 	int i;
 	int i;
 
 
-	if (0) printk("%s: interrupt received\n", __FUNCTION__);
+	if (0) printk("%s: interrupt received\n", __func__);
 
 
 	desc->chip->ack(irq);
 	desc->chip->ack(irq);
 
 
@@ -716,21 +716,21 @@ static void h3800_IRQ_demux(unsigned int irq, struct irq_desc *desc)
 
 
 		/* KPIO */
 		/* KPIO */
 		irq = H3800_ASIC2_KPIINTFLAG;
 		irq = H3800_ASIC2_KPIINTFLAG;
-		if (0) printk("%s KPIO 0x%08X\n", __FUNCTION__, irq);
+		if (0) printk("%s KPIO 0x%08X\n", __func__, irq);
 		for (j = 0; j < H3800_KPIO_IRQ_COUNT; j++)
 		for (j = 0; j < H3800_KPIO_IRQ_COUNT; j++)
 			if (irq & kpio_irq_mask[j])
 			if (irq & kpio_irq_mask[j])
 				handle_edge_irq(H3800_KPIO_IRQ_COUNT + j, irq_desc + H3800_KPIO_IRQ_COUNT + j);
 				handle_edge_irq(H3800_KPIO_IRQ_COUNT + j, irq_desc + H3800_KPIO_IRQ_COUNT + j);
 
 
 		/* GPIO2 */
 		/* GPIO2 */
 		irq = H3800_ASIC2_GPIINTFLAG;
 		irq = H3800_ASIC2_GPIINTFLAG;
-		if (0) printk("%s GPIO 0x%08X\n", __FUNCTION__, irq);
+		if (0) printk("%s GPIO 0x%08X\n", __func__, irq);
 		for (j = 0; j < H3800_GPIO_IRQ_COUNT; j++)
 		for (j = 0; j < H3800_GPIO_IRQ_COUNT; j++)
 			if (irq & gpio_irq_mask[j])
 			if (irq & gpio_irq_mask[j])
 				handle_edge_irq(H3800_GPIO_IRQ_COUNT + j, irq_desc + H3800_GPIO_IRQ_COUNT + j);
 				handle_edge_irq(H3800_GPIO_IRQ_COUNT + j, irq_desc + H3800_GPIO_IRQ_COUNT + j);
 	}
 	}
 
 
 	if (i >= MAX_ASIC_ISR_LOOPS)
 	if (i >= MAX_ASIC_ISR_LOOPS)
-		printk("%s: interrupt processing overrun\n", __FUNCTION__);
+		printk("%s: interrupt processing overrun\n", __func__);
 
 
 	/* For level-based interrupts */
 	/* For level-based interrupts */
 	desc->chip->unmask(irq);
 	desc->chip->unmask(irq);

+ 2 - 0
arch/arm/mm/mmap.c

@@ -120,6 +120,8 @@ full_search:
  */
  */
 int valid_phys_addr_range(unsigned long addr, size_t size)
 int valid_phys_addr_range(unsigned long addr, size_t size)
 {
 {
+	if (addr < PHYS_OFFSET)
+		return 0;
 	if (addr + size > __pa(high_memory))
 	if (addr + size > __pa(high_memory))
 		return 0;
 		return 0;
 
 

+ 2 - 4
arch/arm/mm/pgd.c

@@ -75,7 +75,7 @@ no_pgd:
 void free_pgd_slow(struct mm_struct *mm, pgd_t *pgd)
 void free_pgd_slow(struct mm_struct *mm, pgd_t *pgd)
 {
 {
 	pmd_t *pmd;
 	pmd_t *pmd;
-	struct page *pte;
+	pgtable_t pte;
 
 
 	if (!pgd)
 	if (!pgd)
 		return;
 		return;
@@ -90,10 +90,8 @@ void free_pgd_slow(struct mm_struct *mm, pgd_t *pgd)
 		goto free;
 		goto free;
 	}
 	}
 
 
-	pte = pmd_page(*pmd);
+	pte = pmd_pgtable(*pmd);
 	pmd_clear(pmd);
 	pmd_clear(pmd);
-	dec_zone_page_state(virt_to_page((unsigned long *)pgd), NR_PAGETABLE);
-	pte_lock_deinit(pte);
 	pte_free(mm, pte);
 	pte_free(mm, pte);
 	pmd_free(mm, pmd);
 	pmd_free(mm, pmd);
 free:
 free:

+ 1 - 1
arch/arm/plat-iop/pci.c

@@ -371,7 +371,7 @@ static int __init iop3xx_init_atu_setup(char *str)
 			default:
 			default:
 				printk(KERN_DEBUG "\"%s\" malformed at "
 				printk(KERN_DEBUG "\"%s\" malformed at "
 					    "character: \'%c\'",
 					    "character: \'%c\'",
-					    __FUNCTION__,
+					    __func__,
 					    *str);
 					    *str);
 				*(str + 1) = '\0';
 				*(str + 1) = '\0';
 			}
 			}

+ 10 - 22
arch/arm/plat-omap/cpu-omap.c

@@ -33,43 +33,33 @@
 #define MPU_CLK		"virt_prcm_set"
 #define MPU_CLK		"virt_prcm_set"
 #endif
 #endif
 
 
+static struct clk *mpu_clk;
+
 /* TODO: Add support for SDRAM timing changes */
 /* TODO: Add support for SDRAM timing changes */
 
 
 int omap_verify_speed(struct cpufreq_policy *policy)
 int omap_verify_speed(struct cpufreq_policy *policy)
 {
 {
-	struct clk * mpu_clk;
-
 	if (policy->cpu)
 	if (policy->cpu)
 		return -EINVAL;
 		return -EINVAL;
 
 
 	cpufreq_verify_within_limits(policy, policy->cpuinfo.min_freq,
 	cpufreq_verify_within_limits(policy, policy->cpuinfo.min_freq,
 				     policy->cpuinfo.max_freq);
 				     policy->cpuinfo.max_freq);
-	mpu_clk = clk_get(NULL, MPU_CLK);
-	if (IS_ERR(mpu_clk))
-		return PTR_ERR(mpu_clk);
+
 	policy->min = clk_round_rate(mpu_clk, policy->min * 1000) / 1000;
 	policy->min = clk_round_rate(mpu_clk, policy->min * 1000) / 1000;
 	policy->max = clk_round_rate(mpu_clk, policy->max * 1000) / 1000;
 	policy->max = clk_round_rate(mpu_clk, policy->max * 1000) / 1000;
 	cpufreq_verify_within_limits(policy, policy->cpuinfo.min_freq,
 	cpufreq_verify_within_limits(policy, policy->cpuinfo.min_freq,
 				     policy->cpuinfo.max_freq);
 				     policy->cpuinfo.max_freq);
-	clk_put(mpu_clk);
-
 	return 0;
 	return 0;
 }
 }
 
 
 unsigned int omap_getspeed(unsigned int cpu)
 unsigned int omap_getspeed(unsigned int cpu)
 {
 {
-	struct clk * mpu_clk;
 	unsigned long rate;
 	unsigned long rate;
 
 
 	if (cpu)
 	if (cpu)
 		return 0;
 		return 0;
 
 
-	mpu_clk = clk_get(NULL, MPU_CLK);
-	if (IS_ERR(mpu_clk))
-		return 0;
 	rate = clk_get_rate(mpu_clk) / 1000;
 	rate = clk_get_rate(mpu_clk) / 1000;
-	clk_put(mpu_clk);
-
 	return rate;
 	return rate;
 }
 }
 
 
@@ -77,14 +67,9 @@ static int omap_target(struct cpufreq_policy *policy,
 		       unsigned int target_freq,
 		       unsigned int target_freq,
 		       unsigned int relation)
 		       unsigned int relation)
 {
 {
-	struct clk * mpu_clk;
 	struct cpufreq_freqs freqs;
 	struct cpufreq_freqs freqs;
 	int ret = 0;
 	int ret = 0;
 
 
-	mpu_clk = clk_get(NULL, MPU_CLK);
-	if (IS_ERR(mpu_clk))
-		return PTR_ERR(mpu_clk);
-
 	freqs.old = omap_getspeed(0);
 	freqs.old = omap_getspeed(0);
 	freqs.new = clk_round_rate(mpu_clk, target_freq * 1000) / 1000;
 	freqs.new = clk_round_rate(mpu_clk, target_freq * 1000) / 1000;
 	freqs.cpu = 0;
 	freqs.cpu = 0;
@@ -92,15 +77,12 @@ static int omap_target(struct cpufreq_policy *policy,
 	cpufreq_notify_transition(&freqs, CPUFREQ_PRECHANGE);
 	cpufreq_notify_transition(&freqs, CPUFREQ_PRECHANGE);
 	ret = clk_set_rate(mpu_clk, target_freq * 1000);
 	ret = clk_set_rate(mpu_clk, target_freq * 1000);
 	cpufreq_notify_transition(&freqs, CPUFREQ_POSTCHANGE);
 	cpufreq_notify_transition(&freqs, CPUFREQ_POSTCHANGE);
-	clk_put(mpu_clk);
 
 
 	return ret;
 	return ret;
 }
 }
 
 
 static int __init omap_cpu_init(struct cpufreq_policy *policy)
 static int __init omap_cpu_init(struct cpufreq_policy *policy)
 {
 {
-	struct clk * mpu_clk;
-
 	mpu_clk = clk_get(NULL, MPU_CLK);
 	mpu_clk = clk_get(NULL, MPU_CLK);
 	if (IS_ERR(mpu_clk))
 	if (IS_ERR(mpu_clk))
 		return PTR_ERR(mpu_clk);
 		return PTR_ERR(mpu_clk);
@@ -111,17 +93,23 @@ static int __init omap_cpu_init(struct cpufreq_policy *policy)
 	policy->cpuinfo.min_freq = clk_round_rate(mpu_clk, 0) / 1000;
 	policy->cpuinfo.min_freq = clk_round_rate(mpu_clk, 0) / 1000;
 	policy->cpuinfo.max_freq = clk_round_rate(mpu_clk, VERY_HI_RATE) / 1000;
 	policy->cpuinfo.max_freq = clk_round_rate(mpu_clk, VERY_HI_RATE) / 1000;
 	policy->cpuinfo.transition_latency = CPUFREQ_ETERNAL;
 	policy->cpuinfo.transition_latency = CPUFREQ_ETERNAL;
-	clk_put(mpu_clk);
 
 
 	return 0;
 	return 0;
 }
 }
 
 
+static int omap_cpu_exit(struct cpufreq_policy *policy)
+{
+	clk_put(mpu_clk);
+	return 0;
+}
+
 static struct cpufreq_driver omap_driver = {
 static struct cpufreq_driver omap_driver = {
 	.flags		= CPUFREQ_STICKY,
 	.flags		= CPUFREQ_STICKY,
 	.verify		= omap_verify_speed,
 	.verify		= omap_verify_speed,
 	.target		= omap_target,
 	.target		= omap_target,
 	.get		= omap_getspeed,
 	.get		= omap_getspeed,
 	.init		= omap_cpu_init,
 	.init		= omap_cpu_init,
+	.exit		= omap_cpu_exit,
 	.name		= "omap",
 	.name		= "omap",
 };
 };
 
 

+ 0 - 63
arch/arm/plat-omap/devices.c

@@ -88,68 +88,6 @@ EXPORT_SYMBOL(dsp_kfunc_device_register);
 static inline void omap_init_dsp(void) { }
 static inline void omap_init_dsp(void) { }
 #endif	/* CONFIG_OMAP_DSP */
 #endif	/* CONFIG_OMAP_DSP */
 
 
-/*-------------------------------------------------------------------------*/
-#if	defined(CONFIG_I2C_OMAP) || defined(CONFIG_I2C_OMAP_MODULE)
-
-#define	OMAP1_I2C_BASE		0xfffb3800
-#define OMAP2_I2C_BASE1		0x48070000
-#define OMAP_I2C_SIZE		0x3f
-#define OMAP1_I2C_INT		INT_I2C
-#define OMAP2_I2C_INT1		56
-
-static struct resource i2c_resources1[] = {
-	{
-		.start		= 0,
-		.end		= 0,
-		.flags		= IORESOURCE_MEM,
-	},
-	{
-		.start		= 0,
-		.flags		= IORESOURCE_IRQ,
-	},
-};
-
-/* DMA not used; works around erratum writing to non-empty i2c fifo */
-
-static struct platform_device omap_i2c_device1 = {
-	.name           = "i2c_omap",
-	.id             = 1,
-	.num_resources	= ARRAY_SIZE(i2c_resources1),
-	.resource	= i2c_resources1,
-};
-
-/* See also arch/arm/mach-omap2/devices.c for second I2C on 24xx */
-static void omap_init_i2c(void)
-{
-	if (cpu_is_omap24xx()) {
-		i2c_resources1[0].start = OMAP2_I2C_BASE1;
-		i2c_resources1[0].end = OMAP2_I2C_BASE1 + OMAP_I2C_SIZE;
-		i2c_resources1[1].start = OMAP2_I2C_INT1;
-	} else {
-		i2c_resources1[0].start = OMAP1_I2C_BASE;
-		i2c_resources1[0].end = OMAP1_I2C_BASE + OMAP_I2C_SIZE;
-		i2c_resources1[1].start = OMAP1_I2C_INT;
-	}
-
-	/* FIXME define and use a boot tag, in case of boards that
-	 * either don't wire up I2C, or chips that mux it differently...
-	 * it can include clocking and address info, maybe more.
-	 */
-	if (cpu_is_omap24xx()) {
-		omap_cfg_reg(M19_24XX_I2C1_SCL);
-		omap_cfg_reg(L15_24XX_I2C1_SDA);
-	} else {
-		omap_cfg_reg(I2C_SCL);
-		omap_cfg_reg(I2C_SDA);
-	}
-
-	(void) platform_device_register(&omap_i2c_device1);
-}
-
-#else
-static inline void omap_init_i2c(void) {}
-#endif
-
 /*-------------------------------------------------------------------------*/
 /*-------------------------------------------------------------------------*/
 #if	defined(CONFIG_KEYBOARD_OMAP) || defined(CONFIG_KEYBOARD_OMAP_MODULE)
 #if	defined(CONFIG_KEYBOARD_OMAP) || defined(CONFIG_KEYBOARD_OMAP_MODULE)
 
 
@@ -501,7 +439,6 @@ static int __init omap_init_devices(void)
 	 * in alphabetical order so they're easier to sort through.
 	 * in alphabetical order so they're easier to sort through.
 	 */
 	 */
 	omap_init_dsp();
 	omap_init_dsp();
-	omap_init_i2c();
 	omap_init_kp();
 	omap_init_kp();
 	omap_init_mmc();
 	omap_init_mmc();
 	omap_init_uwire();
 	omap_init_uwire();

+ 4 - 10
arch/arm/plat-omap/dma.c

@@ -137,7 +137,7 @@ static void omap_disable_channel_irq(int lch);
 static inline void omap_enable_channel_irq(int lch);
 static inline void omap_enable_channel_irq(int lch);
 
 
 #define REVISIT_24XX()		printk(KERN_ERR "FIXME: no %s on 24xx\n", \
 #define REVISIT_24XX()		printk(KERN_ERR "FIXME: no %s on 24xx\n", \
-						__FUNCTION__);
+						__func__);
 
 
 #ifdef CONFIG_ARCH_OMAP15XX
 #ifdef CONFIG_ARCH_OMAP15XX
 /* Returns 1 if the DMA module is in OMAP1510-compatible mode, 0 otherwise */
 /* Returns 1 if the DMA module is in OMAP1510-compatible mode, 0 otherwise */
@@ -699,7 +699,7 @@ omap_dma_set_global_params(int arb_rate, int max_fifo_depth, int tparams)
 	u32 reg;
 	u32 reg;
 
 
 	if (!cpu_class_is_omap2()) {
 	if (!cpu_class_is_omap2()) {
-		printk(KERN_ERR "FIXME: no %s on 15xx/16xx\n", __FUNCTION__);
+		printk(KERN_ERR "FIXME: no %s on 15xx/16xx\n", __func__);
 		return;
 		return;
 	}
 	}
 
 
@@ -1705,14 +1705,8 @@ static int omap2_dma_handle_ch(int ch)
 		status = OMAP_DMA_CSR_REG(ch);
 		status = OMAP_DMA_CSR_REG(ch);
 	}
 	}
 
 
-	if (likely(dma_chan[ch].callback != NULL)) {
-		if (dma_chan[ch].chain_id != -1)
-			dma_chan[ch].callback(dma_chan[ch].chain_id, status,
-					      dma_chan[ch].data);
-		else
-			dma_chan[ch].callback(ch, status, dma_chan[ch].data);
-
-	}
+	if (likely(dma_chan[ch].callback != NULL))
+		dma_chan[ch].callback(ch, status, dma_chan[ch].data);
 
 
 	OMAP_DMA_CSR_REG(ch) = status;
 	OMAP_DMA_CSR_REG(ch) = status;
 
 

+ 1 - 1
arch/arm/plat-omap/dmtimer.c

@@ -268,7 +268,7 @@ struct omap_dm_timer *omap_dm_timer_request_specific(int id)
 	if (id <= 0 || id > dm_timer_count || dm_timers[id-1].reserved) {
 	if (id <= 0 || id > dm_timer_count || dm_timers[id-1].reserved) {
 		spin_unlock_irqrestore(&dm_timer_lock, flags);
 		spin_unlock_irqrestore(&dm_timer_lock, flags);
 		printk("BUG: warning at %s:%d/%s(): unable to get timer %d\n",
 		printk("BUG: warning at %s:%d/%s(): unable to get timer %d\n",
-		       __FILE__, __LINE__, __FUNCTION__, id);
+		       __FILE__, __LINE__, __func__, id);
 		dump_stack();
 		dump_stack();
 		return NULL;
 		return NULL;
 	}
 	}

+ 41 - 24
arch/arm/plat-omap/gpio.c

@@ -333,13 +333,14 @@ static void _set_gpio_direction(struct gpio_bank *bank, int gpio, int is_input)
 void omap_set_gpio_direction(int gpio, int is_input)
 void omap_set_gpio_direction(int gpio, int is_input)
 {
 {
 	struct gpio_bank *bank;
 	struct gpio_bank *bank;
+	unsigned long flags;
 
 
 	if (check_gpio(gpio) < 0)
 	if (check_gpio(gpio) < 0)
 		return;
 		return;
 	bank = get_gpio_bank(gpio);
 	bank = get_gpio_bank(gpio);
-	spin_lock(&bank->lock);
+	spin_lock_irqsave(&bank->lock, flags);
 	_set_gpio_direction(bank, get_gpio_index(gpio), is_input);
 	_set_gpio_direction(bank, get_gpio_index(gpio), is_input);
-	spin_unlock(&bank->lock);
+	spin_unlock_irqrestore(&bank->lock, flags);
 }
 }
 
 
 static void _set_gpio_dataout(struct gpio_bank *bank, int gpio, int enable)
 static void _set_gpio_dataout(struct gpio_bank *bank, int gpio, int enable)
@@ -406,13 +407,14 @@ static void _set_gpio_dataout(struct gpio_bank *bank, int gpio, int enable)
 void omap_set_gpio_dataout(int gpio, int enable)
 void omap_set_gpio_dataout(int gpio, int enable)
 {
 {
 	struct gpio_bank *bank;
 	struct gpio_bank *bank;
+	unsigned long flags;
 
 
 	if (check_gpio(gpio) < 0)
 	if (check_gpio(gpio) < 0)
 		return;
 		return;
 	bank = get_gpio_bank(gpio);
 	bank = get_gpio_bank(gpio);
-	spin_lock(&bank->lock);
+	spin_lock_irqsave(&bank->lock, flags);
 	_set_gpio_dataout(bank, get_gpio_index(gpio), enable);
 	_set_gpio_dataout(bank, get_gpio_index(gpio), enable);
-	spin_unlock(&bank->lock);
+	spin_unlock_irqrestore(&bank->lock, flags);
 }
 }
 
 
 int omap_get_gpio_datain(int gpio)
 int omap_get_gpio_datain(int gpio)
@@ -624,6 +626,7 @@ static int gpio_irq_type(unsigned irq, unsigned type)
 	struct gpio_bank *bank;
 	struct gpio_bank *bank;
 	unsigned gpio;
 	unsigned gpio;
 	int retval;
 	int retval;
+	unsigned long flags;
 
 
 	if (!cpu_class_is_omap2() && irq > IH_MPUIO_BASE)
 	if (!cpu_class_is_omap2() && irq > IH_MPUIO_BASE)
 		gpio = OMAP_MPUIO(irq - IH_MPUIO_BASE);
 		gpio = OMAP_MPUIO(irq - IH_MPUIO_BASE);
@@ -642,13 +645,13 @@ static int gpio_irq_type(unsigned irq, unsigned type)
 		return -EINVAL;
 		return -EINVAL;
 
 
 	bank = get_irq_chip_data(irq);
 	bank = get_irq_chip_data(irq);
-	spin_lock(&bank->lock);
+	spin_lock_irqsave(&bank->lock, flags);
 	retval = _set_gpio_triggering(bank, get_gpio_index(gpio), type);
 	retval = _set_gpio_triggering(bank, get_gpio_index(gpio), type);
 	if (retval == 0) {
 	if (retval == 0) {
 		irq_desc[irq].status &= ~IRQ_TYPE_SENSE_MASK;
 		irq_desc[irq].status &= ~IRQ_TYPE_SENSE_MASK;
 		irq_desc[irq].status |= type;
 		irq_desc[irq].status |= type;
 	}
 	}
-	spin_unlock(&bank->lock);
+	spin_unlock_irqrestore(&bank->lock, flags);
 	return retval;
 	return retval;
 }
 }
 
 
@@ -830,11 +833,13 @@ static inline void _set_gpio_irqenable(struct gpio_bank *bank, int gpio, int ena
  */
  */
 static int _set_gpio_wakeup(struct gpio_bank *bank, int gpio, int enable)
 static int _set_gpio_wakeup(struct gpio_bank *bank, int gpio, int enable)
 {
 {
+	unsigned long flags;
+
 	switch (bank->method) {
 	switch (bank->method) {
 #ifdef CONFIG_ARCH_OMAP16XX
 #ifdef CONFIG_ARCH_OMAP16XX
 	case METHOD_MPUIO:
 	case METHOD_MPUIO:
 	case METHOD_GPIO_1610:
 	case METHOD_GPIO_1610:
-		spin_lock(&bank->lock);
+		spin_lock_irqsave(&bank->lock, flags);
 		if (enable) {
 		if (enable) {
 			bank->suspend_wakeup |= (1 << gpio);
 			bank->suspend_wakeup |= (1 << gpio);
 			enable_irq_wake(bank->irq);
 			enable_irq_wake(bank->irq);
@@ -842,7 +847,7 @@ static int _set_gpio_wakeup(struct gpio_bank *bank, int gpio, int enable)
 			disable_irq_wake(bank->irq);
 			disable_irq_wake(bank->irq);
 			bank->suspend_wakeup &= ~(1 << gpio);
 			bank->suspend_wakeup &= ~(1 << gpio);
 		}
 		}
-		spin_unlock(&bank->lock);
+		spin_unlock_irqrestore(&bank->lock, flags);
 		return 0;
 		return 0;
 #endif
 #endif
 #if defined(CONFIG_ARCH_OMAP24XX) || defined(CONFIG_ARCH_OMAP34XX)
 #if defined(CONFIG_ARCH_OMAP24XX) || defined(CONFIG_ARCH_OMAP34XX)
@@ -853,7 +858,7 @@ static int _set_gpio_wakeup(struct gpio_bank *bank, int gpio, int enable)
 					(bank - gpio_bank) * 32 + gpio);
 					(bank - gpio_bank) * 32 + gpio);
 			return -EINVAL;
 			return -EINVAL;
 		}
 		}
-		spin_lock(&bank->lock);
+		spin_lock_irqsave(&bank->lock, flags);
 		if (enable) {
 		if (enable) {
 			bank->suspend_wakeup |= (1 << gpio);
 			bank->suspend_wakeup |= (1 << gpio);
 			enable_irq_wake(bank->irq);
 			enable_irq_wake(bank->irq);
@@ -861,7 +866,7 @@ static int _set_gpio_wakeup(struct gpio_bank *bank, int gpio, int enable)
 			disable_irq_wake(bank->irq);
 			disable_irq_wake(bank->irq);
 			bank->suspend_wakeup &= ~(1 << gpio);
 			bank->suspend_wakeup &= ~(1 << gpio);
 		}
 		}
-		spin_unlock(&bank->lock);
+		spin_unlock_irqrestore(&bank->lock, flags);
 		return 0;
 		return 0;
 #endif
 #endif
 	default:
 	default:
@@ -897,16 +902,17 @@ static int gpio_wake_enable(unsigned int irq, unsigned int enable)
 int omap_request_gpio(int gpio)
 int omap_request_gpio(int gpio)
 {
 {
 	struct gpio_bank *bank;
 	struct gpio_bank *bank;
+	unsigned long flags;
 
 
 	if (check_gpio(gpio) < 0)
 	if (check_gpio(gpio) < 0)
 		return -EINVAL;
 		return -EINVAL;
 
 
 	bank = get_gpio_bank(gpio);
 	bank = get_gpio_bank(gpio);
-	spin_lock(&bank->lock);
+	spin_lock_irqsave(&bank->lock, flags);
 	if (unlikely(bank->reserved_map & (1 << get_gpio_index(gpio)))) {
 	if (unlikely(bank->reserved_map & (1 << get_gpio_index(gpio)))) {
 		printk(KERN_ERR "omap-gpio: GPIO %d is already reserved!\n", gpio);
 		printk(KERN_ERR "omap-gpio: GPIO %d is already reserved!\n", gpio);
 		dump_stack();
 		dump_stack();
-		spin_unlock(&bank->lock);
+		spin_unlock_irqrestore(&bank->lock, flags);
 		return -1;
 		return -1;
 	}
 	}
 	bank->reserved_map |= (1 << get_gpio_index(gpio));
 	bank->reserved_map |= (1 << get_gpio_index(gpio));
@@ -925,7 +931,7 @@ int omap_request_gpio(int gpio)
 		__raw_writel(__raw_readl(reg) | (1 << get_gpio_index(gpio)), reg);
 		__raw_writel(__raw_readl(reg) | (1 << get_gpio_index(gpio)), reg);
 	}
 	}
 #endif
 #endif
-	spin_unlock(&bank->lock);
+	spin_unlock_irqrestore(&bank->lock, flags);
 
 
 	return 0;
 	return 0;
 }
 }
@@ -933,15 +939,16 @@ int omap_request_gpio(int gpio)
 void omap_free_gpio(int gpio)
 void omap_free_gpio(int gpio)
 {
 {
 	struct gpio_bank *bank;
 	struct gpio_bank *bank;
+	unsigned long flags;
 
 
 	if (check_gpio(gpio) < 0)
 	if (check_gpio(gpio) < 0)
 		return;
 		return;
 	bank = get_gpio_bank(gpio);
 	bank = get_gpio_bank(gpio);
-	spin_lock(&bank->lock);
+	spin_lock_irqsave(&bank->lock, flags);
 	if (unlikely(!(bank->reserved_map & (1 << get_gpio_index(gpio))))) {
 	if (unlikely(!(bank->reserved_map & (1 << get_gpio_index(gpio))))) {
 		printk(KERN_ERR "omap-gpio: GPIO %d wasn't reserved!\n", gpio);
 		printk(KERN_ERR "omap-gpio: GPIO %d wasn't reserved!\n", gpio);
 		dump_stack();
 		dump_stack();
-		spin_unlock(&bank->lock);
+		spin_unlock_irqrestore(&bank->lock, flags);
 		return;
 		return;
 	}
 	}
 #ifdef CONFIG_ARCH_OMAP16XX
 #ifdef CONFIG_ARCH_OMAP16XX
@@ -960,7 +967,7 @@ void omap_free_gpio(int gpio)
 #endif
 #endif
 	bank->reserved_map &= ~(1 << get_gpio_index(gpio));
 	bank->reserved_map &= ~(1 << get_gpio_index(gpio));
 	_reset_gpio(bank, gpio);
 	_reset_gpio(bank, gpio);
-	spin_unlock(&bank->lock);
+	spin_unlock_irqrestore(&bank->lock, flags);
 }
 }
 
 
 /*
 /*
@@ -1194,11 +1201,12 @@ static int omap_mpuio_suspend_late(struct platform_device *pdev, pm_message_t me
 {
 {
 	struct gpio_bank	*bank = platform_get_drvdata(pdev);
 	struct gpio_bank	*bank = platform_get_drvdata(pdev);
 	void __iomem		*mask_reg = bank->base + OMAP_MPUIO_GPIO_MASKIT;
 	void __iomem		*mask_reg = bank->base + OMAP_MPUIO_GPIO_MASKIT;
+	unsigned long		flags;
 
 
-	spin_lock(&bank->lock);
+	spin_lock_irqsave(&bank->lock, flags);
 	bank->saved_wakeup = __raw_readl(mask_reg);
 	bank->saved_wakeup = __raw_readl(mask_reg);
 	__raw_writel(0xffff & ~bank->suspend_wakeup, mask_reg);
 	__raw_writel(0xffff & ~bank->suspend_wakeup, mask_reg);
-	spin_unlock(&bank->lock);
+	spin_unlock_irqrestore(&bank->lock, flags);
 
 
 	return 0;
 	return 0;
 }
 }
@@ -1207,10 +1215,11 @@ static int omap_mpuio_resume_early(struct platform_device *pdev)
 {
 {
 	struct gpio_bank	*bank = platform_get_drvdata(pdev);
 	struct gpio_bank	*bank = platform_get_drvdata(pdev);
 	void __iomem		*mask_reg = bank->base + OMAP_MPUIO_GPIO_MASKIT;
 	void __iomem		*mask_reg = bank->base + OMAP_MPUIO_GPIO_MASKIT;
+	unsigned long		flags;
 
 
-	spin_lock(&bank->lock);
+	spin_lock_irqsave(&bank->lock, flags);
 	__raw_writel(bank->saved_wakeup, mask_reg);
 	__raw_writel(bank->saved_wakeup, mask_reg);
-	spin_unlock(&bank->lock);
+	spin_unlock_irqrestore(&bank->lock, flags);
 
 
 	return 0;
 	return 0;
 }
 }
@@ -1277,6 +1286,11 @@ static struct clk *gpio_fclks[OMAP34XX_NR_GPIOS];
 static struct clk *gpio_iclks[OMAP34XX_NR_GPIOS];
 static struct clk *gpio_iclks[OMAP34XX_NR_GPIOS];
 #endif
 #endif
 
 
+/* This lock class tells lockdep that GPIO irqs are in a different
+ * category than their parents, so it won't report false recursion.
+ */
+static struct lock_class_key gpio_lock_class;
+
 static int __init _omap_gpio_init(void)
 static int __init _omap_gpio_init(void)
 {
 {
 	int i;
 	int i;
@@ -1450,6 +1464,7 @@ static int __init _omap_gpio_init(void)
 #endif
 #endif
 		for (j = bank->virtual_irq_start;
 		for (j = bank->virtual_irq_start;
 		     j < bank->virtual_irq_start + gpio_count; j++) {
 		     j < bank->virtual_irq_start + gpio_count; j++) {
+			lockdep_set_class(&irq_desc[j].lock, &gpio_lock_class);
 			set_irq_chip_data(j, bank);
 			set_irq_chip_data(j, bank);
 			if (bank_is_mpuio(bank))
 			if (bank_is_mpuio(bank))
 				set_irq_chip(j, &mpuio_irq_chip);
 				set_irq_chip(j, &mpuio_irq_chip);
@@ -1489,6 +1504,7 @@ static int omap_gpio_suspend(struct sys_device *dev, pm_message_t mesg)
 		void __iomem *wake_status;
 		void __iomem *wake_status;
 		void __iomem *wake_clear;
 		void __iomem *wake_clear;
 		void __iomem *wake_set;
 		void __iomem *wake_set;
+		unsigned long flags;
 
 
 		switch (bank->method) {
 		switch (bank->method) {
 #ifdef CONFIG_ARCH_OMAP16XX
 #ifdef CONFIG_ARCH_OMAP16XX
@@ -1509,11 +1525,11 @@ static int omap_gpio_suspend(struct sys_device *dev, pm_message_t mesg)
 			continue;
 			continue;
 		}
 		}
 
 
-		spin_lock(&bank->lock);
+		spin_lock_irqsave(&bank->lock, flags);
 		bank->saved_wakeup = __raw_readl(wake_status);
 		bank->saved_wakeup = __raw_readl(wake_status);
 		__raw_writel(0xffffffff, wake_clear);
 		__raw_writel(0xffffffff, wake_clear);
 		__raw_writel(bank->suspend_wakeup, wake_set);
 		__raw_writel(bank->suspend_wakeup, wake_set);
-		spin_unlock(&bank->lock);
+		spin_unlock_irqrestore(&bank->lock, flags);
 	}
 	}
 
 
 	return 0;
 	return 0;
@@ -1530,6 +1546,7 @@ static int omap_gpio_resume(struct sys_device *dev)
 		struct gpio_bank *bank = &gpio_bank[i];
 		struct gpio_bank *bank = &gpio_bank[i];
 		void __iomem *wake_clear;
 		void __iomem *wake_clear;
 		void __iomem *wake_set;
 		void __iomem *wake_set;
+		unsigned long flags;
 
 
 		switch (bank->method) {
 		switch (bank->method) {
 #ifdef CONFIG_ARCH_OMAP16XX
 #ifdef CONFIG_ARCH_OMAP16XX
@@ -1548,10 +1565,10 @@ static int omap_gpio_resume(struct sys_device *dev)
 			continue;
 			continue;
 		}
 		}
 
 
-		spin_lock(&bank->lock);
+		spin_lock_irqsave(&bank->lock, flags);
 		__raw_writel(0xffffffff, wake_clear);
 		__raw_writel(0xffffffff, wake_clear);
 		__raw_writel(bank->saved_wakeup, wake_set);
 		__raw_writel(bank->saved_wakeup, wake_set);
-		spin_unlock(&bank->lock);
+		spin_unlock_irqrestore(&bank->lock, flags);
 	}
 	}
 
 
 	return 0;
 	return 0;

+ 32 - 32
arch/arm/plat-s3c24xx/dma.c

@@ -130,8 +130,8 @@ dmadbg_showregs(const char *fname, int line, struct s3c2410_dma_chan *chan)
 	dmadbg_dumpregs(fname, line, chan, &state);
 	dmadbg_dumpregs(fname, line, chan, &state);
 }
 }
 
 
-#define dbg_showregs(chan) dmadbg_showregs(__FUNCTION__, __LINE__, (chan))
-#define dbg_showchan(chan) dmadbg_showchan(__FUNCTION__, __LINE__, (chan))
+#define dbg_showregs(chan) dmadbg_showregs(__func__, __LINE__, (chan))
+#define dbg_showchan(chan) dmadbg_showchan(__func__, __LINE__, (chan))
 #else
 #else
 #define dbg_showregs(chan) do { } while(0)
 #define dbg_showregs(chan) do { } while(0)
 #define dbg_showchan(chan) do { } while(0)
 #define dbg_showchan(chan) do { } while(0)
@@ -403,7 +403,7 @@ static int s3c2410_dma_start(struct s3c2410_dma_chan *chan)
 
 
 			if (s3c2410_dma_waitforload(chan, __LINE__) == 0) {
 			if (s3c2410_dma_waitforload(chan, __LINE__) == 0) {
 				pr_debug("%s: buff not yet loaded, no more todo\n",
 				pr_debug("%s: buff not yet loaded, no more todo\n",
-					 __FUNCTION__);
+					 __func__);
 			} else {
 			} else {
 				chan->load_state = S3C2410_DMALOAD_1RUNNING;
 				chan->load_state = S3C2410_DMALOAD_1RUNNING;
 				s3c2410_dma_loadbuffer(chan, chan->next);
 				s3c2410_dma_loadbuffer(chan, chan->next);
@@ -463,16 +463,16 @@ int s3c2410_dma_enqueue(unsigned int channel, void *id,
 		return -EINVAL;
 		return -EINVAL;
 
 
 	pr_debug("%s: id=%p, data=%08x, size=%d\n",
 	pr_debug("%s: id=%p, data=%08x, size=%d\n",
-		 __FUNCTION__, id, (unsigned int)data, size);
+		 __func__, id, (unsigned int)data, size);
 
 
 	buf = kmem_cache_alloc(dma_kmem, GFP_ATOMIC);
 	buf = kmem_cache_alloc(dma_kmem, GFP_ATOMIC);
 	if (buf == NULL) {
 	if (buf == NULL) {
 		pr_debug("%s: out of memory (%ld alloc)\n",
 		pr_debug("%s: out of memory (%ld alloc)\n",
-			 __FUNCTION__, (long)sizeof(*buf));
+			 __func__, (long)sizeof(*buf));
 		return -ENOMEM;
 		return -ENOMEM;
 	}
 	}
 
 
-	//pr_debug("%s: new buffer %p\n", __FUNCTION__, buf);
+	//pr_debug("%s: new buffer %p\n", __func__, buf);
 	//dbg_showchan(chan);
 	//dbg_showchan(chan);
 
 
 	buf->next  = NULL;
 	buf->next  = NULL;
@@ -486,18 +486,18 @@ int s3c2410_dma_enqueue(unsigned int channel, void *id,
 	if (chan->curr == NULL) {
 	if (chan->curr == NULL) {
 		/* we've got nothing loaded... */
 		/* we've got nothing loaded... */
 		pr_debug("%s: buffer %p queued onto empty channel\n",
 		pr_debug("%s: buffer %p queued onto empty channel\n",
-			 __FUNCTION__, buf);
+			 __func__, buf);
 
 
 		chan->curr = buf;
 		chan->curr = buf;
 		chan->end  = buf;
 		chan->end  = buf;
 		chan->next = NULL;
 		chan->next = NULL;
 	} else {
 	} else {
 		pr_debug("dma%d: %s: buffer %p queued onto non-empty channel\n",
 		pr_debug("dma%d: %s: buffer %p queued onto non-empty channel\n",
-			 chan->number, __FUNCTION__, buf);
+			 chan->number, __func__, buf);
 
 
 		if (chan->end == NULL)
 		if (chan->end == NULL)
 			pr_debug("dma%d: %s: %p not empty, and chan->end==NULL?\n",
 			pr_debug("dma%d: %s: %p not empty, and chan->end==NULL?\n",
-				 chan->number, __FUNCTION__, chan);
+				 chan->number, __func__, chan);
 
 
 		chan->end->next = buf;
 		chan->end->next = buf;
 		chan->end = buf;
 		chan->end = buf;
@@ -572,7 +572,7 @@ s3c2410_dma_lastxfer(struct s3c2410_dma_chan *chan)
 		if (s3c2410_dma_waitforload(chan, __LINE__) == 0) {
 		if (s3c2410_dma_waitforload(chan, __LINE__) == 0) {
 				/* flag error? */
 				/* flag error? */
 			printk(KERN_ERR "dma%d: timeout waiting for load (%s)\n",
 			printk(KERN_ERR "dma%d: timeout waiting for load (%s)\n",
-			       chan->number, __FUNCTION__);
+			       chan->number, __func__);
 			return;
 			return;
 		}
 		}
 		break;
 		break;
@@ -658,7 +658,7 @@ s3c2410_dma_irq(int irq, void *devpw)
 
 
 		if (buf->magic != BUF_MAGIC) {
 		if (buf->magic != BUF_MAGIC) {
 			printk(KERN_ERR "dma%d: %s: buf %p incorrect magic\n",
 			printk(KERN_ERR "dma%d: %s: buf %p incorrect magic\n",
-			       chan->number, __FUNCTION__, buf);
+			       chan->number, __func__, buf);
 			return IRQ_HANDLED;
 			return IRQ_HANDLED;
 		}
 		}
 
 
@@ -692,7 +692,7 @@ s3c2410_dma_irq(int irq, void *devpw)
 			if (s3c2410_dma_waitforload(chan, __LINE__) == 0) {
 			if (s3c2410_dma_waitforload(chan, __LINE__) == 0) {
 				/* flag error? */
 				/* flag error? */
 				printk(KERN_ERR "dma%d: timeout waiting for load (%s)\n",
 				printk(KERN_ERR "dma%d: timeout waiting for load (%s)\n",
-				       chan->number, __FUNCTION__);
+				       chan->number, __func__);
 				return IRQ_HANDLED;
 				return IRQ_HANDLED;
 			}
 			}
 
 
@@ -759,7 +759,7 @@ int s3c2410_dma_request(unsigned int channel,
 
 
 	if (!chan->irq_claimed) {
 	if (!chan->irq_claimed) {
 		pr_debug("dma%d: %s : requesting irq %d\n",
 		pr_debug("dma%d: %s : requesting irq %d\n",
-			 channel, __FUNCTION__, chan->irq);
+			 channel, __func__, chan->irq);
 
 
 		chan->irq_claimed = 1;
 		chan->irq_claimed = 1;
 		local_irq_restore(flags);
 		local_irq_restore(flags);
@@ -786,7 +786,7 @@ int s3c2410_dma_request(unsigned int channel,
 
 
 	/* need to setup */
 	/* need to setup */
 
 
-	pr_debug("%s: channel initialised, %p\n", __FUNCTION__, chan);
+	pr_debug("%s: channel initialised, %p\n", __func__, chan);
 
 
 	return chan->number | DMACH_LOW_LEVEL;
 	return chan->number | DMACH_LOW_LEVEL;
 }
 }
@@ -823,7 +823,7 @@ int s3c2410_dma_free(dmach_t channel, struct s3c2410_dma_client *client)
 
 
 	if (chan->state != S3C2410_DMA_IDLE) {
 	if (chan->state != S3C2410_DMA_IDLE) {
 		pr_debug("%s: need to stop dma channel %p\n",
 		pr_debug("%s: need to stop dma channel %p\n",
-		       __FUNCTION__, chan);
+		       __func__, chan);
 
 
 		/* possibly flush the channel */
 		/* possibly flush the channel */
 		s3c2410_dma_ctrl(channel, S3C2410_DMAOP_STOP);
 		s3c2410_dma_ctrl(channel, S3C2410_DMAOP_STOP);
@@ -852,7 +852,7 @@ static int s3c2410_dma_dostop(struct s3c2410_dma_chan *chan)
 	unsigned long flags;
 	unsigned long flags;
 	unsigned long tmp;
 	unsigned long tmp;
 
 
-	pr_debug("%s:\n", __FUNCTION__);
+	pr_debug("%s:\n", __func__);
 
 
 	dbg_showchan(chan);
 	dbg_showchan(chan);
 
 
@@ -907,14 +907,14 @@ static int s3c2410_dma_flush(struct s3c2410_dma_chan *chan)
 	struct s3c2410_dma_buf *buf, *next;
 	struct s3c2410_dma_buf *buf, *next;
 	unsigned long flags;
 	unsigned long flags;
 
 
-	pr_debug("%s: chan %p (%d)\n", __FUNCTION__, chan, chan->number);
+	pr_debug("%s: chan %p (%d)\n", __func__, chan, chan->number);
 
 
 	dbg_showchan(chan);
 	dbg_showchan(chan);
 
 
 	local_irq_save(flags);
 	local_irq_save(flags);
 
 
 	if (chan->state != S3C2410_DMA_IDLE) {
 	if (chan->state != S3C2410_DMA_IDLE) {
-		pr_debug("%s: stopping channel...\n", __FUNCTION__ );
+		pr_debug("%s: stopping channel...\n", __func__ );
 		s3c2410_dma_ctrl(chan->number, S3C2410_DMAOP_STOP);
 		s3c2410_dma_ctrl(chan->number, S3C2410_DMAOP_STOP);
 	}
 	}
 
 
@@ -929,7 +929,7 @@ static int s3c2410_dma_flush(struct s3c2410_dma_chan *chan)
 			next = buf->next;
 			next = buf->next;
 
 
 			pr_debug("%s: free buffer %p, next %p\n",
 			pr_debug("%s: free buffer %p, next %p\n",
-			       __FUNCTION__, buf, buf->next);
+			       __func__, buf, buf->next);
 
 
 			s3c2410_dma_buffdone(chan, buf, S3C2410_RES_ABORT);
 			s3c2410_dma_buffdone(chan, buf, S3C2410_RES_ABORT);
 			s3c2410_dma_freebuf(buf);
 			s3c2410_dma_freebuf(buf);
@@ -976,7 +976,7 @@ static int s3c2410_dma_started(struct s3c2410_dma_chan *chan)
 
 
 			if (s3c2410_dma_waitforload(chan, __LINE__) == 0) {
 			if (s3c2410_dma_waitforload(chan, __LINE__) == 0) {
 				pr_debug("%s: buff not yet loaded, no more todo\n",
 				pr_debug("%s: buff not yet loaded, no more todo\n",
-					 __FUNCTION__);
+					 __func__);
 			} else {
 			} else {
 				chan->load_state = S3C2410_DMALOAD_1RUNNING;
 				chan->load_state = S3C2410_DMALOAD_1RUNNING;
 				s3c2410_dma_loadbuffer(chan, chan->next);
 				s3c2410_dma_loadbuffer(chan, chan->next);
@@ -1050,16 +1050,16 @@ int s3c2410_dma_config(dmach_t channel,
 	struct s3c2410_dma_chan *chan = lookup_dma_channel(channel);
 	struct s3c2410_dma_chan *chan = lookup_dma_channel(channel);
 
 
 	pr_debug("%s: chan=%d, xfer_unit=%d, dcon=%08x\n",
 	pr_debug("%s: chan=%d, xfer_unit=%d, dcon=%08x\n",
-		 __FUNCTION__, channel, xferunit, dcon);
+		 __func__, channel, xferunit, dcon);
 
 
 	if (chan == NULL)
 	if (chan == NULL)
 		return -EINVAL;
 		return -EINVAL;
 
 
-	pr_debug("%s: Initial dcon is %08x\n", __FUNCTION__, dcon);
+	pr_debug("%s: Initial dcon is %08x\n", __func__, dcon);
 
 
 	dcon |= chan->dcon & dma_sel.dcon_mask;
 	dcon |= chan->dcon & dma_sel.dcon_mask;
 
 
-	pr_debug("%s: New dcon is %08x\n", __FUNCTION__, dcon);
+	pr_debug("%s: New dcon is %08x\n", __func__, dcon);
 
 
 	switch (xferunit) {
 	switch (xferunit) {
 	case 1:
 	case 1:
@@ -1075,14 +1075,14 @@ int s3c2410_dma_config(dmach_t channel,
 		break;
 		break;
 
 
 	default:
 	default:
-		pr_debug("%s: bad transfer size %d\n", __FUNCTION__, xferunit);
+		pr_debug("%s: bad transfer size %d\n", __func__, xferunit);
 		return -EINVAL;
 		return -EINVAL;
 	}
 	}
 
 
 	dcon |= S3C2410_DCON_HWTRIG;
 	dcon |= S3C2410_DCON_HWTRIG;
 	dcon |= S3C2410_DCON_INTREQ;
 	dcon |= S3C2410_DCON_INTREQ;
 
 
-	pr_debug("%s: dcon now %08x\n", __FUNCTION__, dcon);
+	pr_debug("%s: dcon now %08x\n", __func__, dcon);
 
 
 	chan->dcon = dcon;
 	chan->dcon = dcon;
 	chan->xfer_unit = xferunit;
 	chan->xfer_unit = xferunit;
@@ -1099,7 +1099,7 @@ int s3c2410_dma_setflags(dmach_t channel, unsigned int flags)
 	if (chan == NULL)
 	if (chan == NULL)
 		return -EINVAL;
 		return -EINVAL;
 
 
-	pr_debug("%s: chan=%p, flags=%08x\n", __FUNCTION__, chan, flags);
+	pr_debug("%s: chan=%p, flags=%08x\n", __func__, chan, flags);
 
 
 	chan->flags = flags;
 	chan->flags = flags;
 
 
@@ -1120,7 +1120,7 @@ int s3c2410_dma_set_opfn(dmach_t channel, s3c2410_dma_opfn_t rtn)
 	if (chan == NULL)
 	if (chan == NULL)
 		return -EINVAL;
 		return -EINVAL;
 
 
-	pr_debug("%s: chan=%p, op rtn=%p\n", __FUNCTION__, chan, rtn);
+	pr_debug("%s: chan=%p, op rtn=%p\n", __func__, chan, rtn);
 
 
 	chan->op_fn = rtn;
 	chan->op_fn = rtn;
 
 
@@ -1136,7 +1136,7 @@ int s3c2410_dma_set_buffdone_fn(dmach_t channel, s3c2410_dma_cbfn_t rtn)
 	if (chan == NULL)
 	if (chan == NULL)
 		return -EINVAL;
 		return -EINVAL;
 
 
-	pr_debug("%s: chan=%p, callback rtn=%p\n", __FUNCTION__, chan, rtn);
+	pr_debug("%s: chan=%p, callback rtn=%p\n", __func__, chan, rtn);
 
 
 	chan->callback_fn = rtn;
 	chan->callback_fn = rtn;
 
 
@@ -1170,7 +1170,7 @@ int s3c2410_dma_devconfig(int channel,
 		return -EINVAL;
 		return -EINVAL;
 
 
 	pr_debug("%s: source=%d, hwcfg=%08x, devaddr=%08lx\n",
 	pr_debug("%s: source=%d, hwcfg=%08x, devaddr=%08lx\n",
-		 __FUNCTION__, (int)source, hwcfg, devaddr);
+		 __func__, (int)source, hwcfg, devaddr);
 
 
 	chan->source = source;
 	chan->source = source;
 	chan->dev_addr = devaddr;
 	chan->dev_addr = devaddr;
@@ -1180,7 +1180,7 @@ int s3c2410_dma_devconfig(int channel,
 	case S3C2410_DMASRC_HW:
 	case S3C2410_DMASRC_HW:
 		/* source is hardware */
 		/* source is hardware */
 		pr_debug("%s: hw source, devaddr=%08lx, hwcfg=%d\n",
 		pr_debug("%s: hw source, devaddr=%08lx, hwcfg=%d\n",
-			 __FUNCTION__, devaddr, hwcfg);
+			 __func__, devaddr, hwcfg);
 		dma_wrreg(chan, S3C2410_DMA_DISRCC, hwcfg & 3);
 		dma_wrreg(chan, S3C2410_DMA_DISRCC, hwcfg & 3);
 		dma_wrreg(chan, S3C2410_DMA_DISRC,  devaddr);
 		dma_wrreg(chan, S3C2410_DMA_DISRC,  devaddr);
 		dma_wrreg(chan, S3C2410_DMA_DIDSTC, (0<<1) | (0<<0));
 		dma_wrreg(chan, S3C2410_DMA_DIDSTC, (0<<1) | (0<<0));
@@ -1190,8 +1190,8 @@ int s3c2410_dma_devconfig(int channel,
 
 
 	case S3C2410_DMASRC_MEM:
 	case S3C2410_DMASRC_MEM:
 		/* source is memory */
 		/* source is memory */
-		pr_debug( "%s: mem source, devaddr=%08lx, hwcfg=%d\n",
-			  __FUNCTION__, devaddr, hwcfg);
+		pr_debug("%s: mem source, devaddr=%08lx, hwcfg=%d\n",
+			 __func__, devaddr, hwcfg);
 		dma_wrreg(chan, S3C2410_DMA_DISRCC, (0<<1) | (0<<0));
 		dma_wrreg(chan, S3C2410_DMA_DISRCC, (0<<1) | (0<<0));
 		dma_wrreg(chan, S3C2410_DMA_DIDST,  devaddr);
 		dma_wrreg(chan, S3C2410_DMA_DIDST,  devaddr);
 		dma_wrreg(chan, S3C2410_DMA_DIDSTC, hwcfg & 3);
 		dma_wrreg(chan, S3C2410_DMA_DIDSTC, hwcfg & 3);

+ 1 - 1
arch/avr32/boards/atstk1000/atstk1004.c

@@ -129,7 +129,7 @@ static int __init atstk1004_init(void)
 #ifdef CONFIG_BOARD_ATSTK100X_SPI1
 #ifdef CONFIG_BOARD_ATSTK100X_SPI1
 	at32_add_device_spi(1, spi1_board_info, ARRAY_SIZE(spi1_board_info));
 	at32_add_device_spi(1, spi1_board_info, ARRAY_SIZE(spi1_board_info));
 #endif
 #endif
-#ifndef CONFIG_BOARD_ATSTK1002_SW2_CUSTOM
+#ifndef CONFIG_BOARD_ATSTK100X_SW2_CUSTOM
 	at32_add_device_mci(0);
 	at32_add_device_mci(0);
 #endif
 #endif
 	at32_add_device_lcdc(0, &atstk1000_lcdc_data,
 	at32_add_device_lcdc(0, &atstk1000_lcdc_data,

+ 4 - 0
arch/avr32/kernel/process.c

@@ -11,6 +11,7 @@
 #include <linux/fs.h>
 #include <linux/fs.h>
 #include <linux/ptrace.h>
 #include <linux/ptrace.h>
 #include <linux/reboot.h>
 #include <linux/reboot.h>
+#include <linux/tick.h>
 #include <linux/uaccess.h>
 #include <linux/uaccess.h>
 #include <linux/unistd.h>
 #include <linux/unistd.h>
 
 
@@ -30,8 +31,10 @@ void cpu_idle(void)
 {
 {
 	/* endless idle loop with no priority at all */
 	/* endless idle loop with no priority at all */
 	while (1) {
 	while (1) {
+		tick_nohz_stop_sched_tick();
 		while (!need_resched())
 		while (!need_resched())
 			cpu_idle_sleep();
 			cpu_idle_sleep();
+		tick_nohz_restart_sched_tick();
 		preempt_enable_no_resched();
 		preempt_enable_no_resched();
 		schedule();
 		schedule();
 		preempt_disable();
 		preempt_disable();
@@ -345,6 +348,7 @@ int copy_thread(int nr, unsigned long clone_flags, unsigned long usp,
 	p->thread.cpu_context.ksp = (unsigned long)childregs;
 	p->thread.cpu_context.ksp = (unsigned long)childregs;
 	p->thread.cpu_context.pc = (unsigned long)ret_from_fork;
 	p->thread.cpu_context.pc = (unsigned long)ret_from_fork;
 
 
+	clear_tsk_thread_flag(p, TIF_DEBUG);
 	if ((clone_flags & CLONE_PTRACE) && test_thread_flag(TIF_DEBUG))
 	if ((clone_flags & CLONE_PTRACE) && test_thread_flag(TIF_DEBUG))
 		ocd_enable(p);
 		ocd_enable(p);
 
 

+ 2 - 0
arch/avr32/mm/fault.c

@@ -189,6 +189,8 @@ no_context:
 
 
 	page = sysreg_read(PTBR);
 	page = sysreg_read(PTBR);
 	printk(KERN_ALERT "ptbr = %08lx", page);
 	printk(KERN_ALERT "ptbr = %08lx", page);
+	if (address >= TASK_SIZE)
+		page = (unsigned long)swapper_pg_dir;
 	if (page) {
 	if (page) {
 		page = ((unsigned long *)page)[address >> 22];
 		page = ((unsigned long *)page)[address >> 22];
 		printk(" pgd = %08lx", page);
 		printk(" pgd = %08lx", page);

+ 4 - 1
arch/blackfin/Makefile

@@ -98,8 +98,11 @@ drivers-$(CONFIG_OPROFILE) += arch/$(ARCH)/oprofile/
 #	them changed.  We use .mach to indicate when they were updated
 #	them changed.  We use .mach to indicate when they were updated
 #	last, otherwise make uses the target directory mtime.
 #	last, otherwise make uses the target directory mtime.
 
 
+       show_mach_symlink = :
+ quiet_show_mach_symlink = echo '  SYMLINK include/asm-$(ARCH)/mach-$(MACHINE) -> include/asm-$(ARCH)/mach'
+silent_show_mach_symlink = :
 include/asm-blackfin/.mach: $(wildcard include/config/arch/*.h) include/config/auto.conf
 include/asm-blackfin/.mach: $(wildcard include/config/arch/*.h) include/config/auto.conf
-	@echo '  SYMLINK include/asm-$(ARCH)/mach-$(MACHINE) -> include/asm-$(ARCH)/mach'
+	@$($(quiet)show_mach_symlink)
 ifneq ($(KBUILD_SRC),)
 ifneq ($(KBUILD_SRC),)
 	$(Q)mkdir -p include/asm-$(ARCH)
 	$(Q)mkdir -p include/asm-$(ARCH)
 	$(Q)ln -fsn $(srctree)/include/asm-$(ARCH)/mach-$(MACHINE) include/asm-$(ARCH)/mach
 	$(Q)ln -fsn $(srctree)/include/asm-$(ARCH)/mach-$(MACHINE) include/asm-$(ARCH)/mach

+ 8 - 10
arch/blackfin/configs/BF527-EZKIT_defconfig

@@ -1,7 +1,6 @@
 #
 #
 # Automatically generated make config: don't edit
 # Automatically generated make config: don't edit
-# Linux kernel version: 2.6.22.14
-# Thu Nov 29 17:32:47 2007
+# Linux kernel version: 2.6.22.16
 #
 #
 # CONFIG_MMU is not set
 # CONFIG_MMU is not set
 # CONFIG_FPU is not set
 # CONFIG_FPU is not set
@@ -116,7 +115,10 @@ CONFIG_PREEMPT_VOLUNTARY=y
 # Processor and Board Settings
 # Processor and Board Settings
 #
 #
 # CONFIG_BF522 is not set
 # CONFIG_BF522 is not set
+# CONFIG_BF523 is not set
+# CONFIG_BF524 is not set
 # CONFIG_BF525 is not set
 # CONFIG_BF525 is not set
+# CONFIG_BF526 is not set
 CONFIG_BF527=y
 CONFIG_BF527=y
 # CONFIG_BF531 is not set
 # CONFIG_BF531 is not set
 # CONFIG_BF532 is not set
 # CONFIG_BF532 is not set
@@ -306,6 +308,7 @@ CONFIG_BFIN_DCACHE=y
 # CONFIG_BFIN_WB is not set
 # CONFIG_BFIN_WB is not set
 CONFIG_BFIN_WT=y
 CONFIG_BFIN_WT=y
 CONFIG_L1_MAX_PIECE=16
 CONFIG_L1_MAX_PIECE=16
+# CONFIG_MPU is not set
 
 
 #
 #
 # Asynchonous Memory Configuration
 # Asynchonous Memory Configuration
@@ -354,6 +357,7 @@ CONFIG_BINFMT_ZFLAT=y
 # Power management options
 # Power management options
 #
 #
 # CONFIG_PM is not set
 # CONFIG_PM is not set
+# CONFIG_PM_WAKEUP_BY_GPIO is not set
 
 
 #
 #
 # Networking
 # Networking
@@ -496,7 +500,6 @@ CONFIG_MTD_CFI_I2=y
 # CONFIG_MTD_CFI_INTELEXT is not set
 # CONFIG_MTD_CFI_INTELEXT is not set
 # CONFIG_MTD_CFI_AMDSTD is not set
 # CONFIG_MTD_CFI_AMDSTD is not set
 # CONFIG_MTD_CFI_STAA is not set
 # CONFIG_MTD_CFI_STAA is not set
-CONFIG_MTD_MW320D=m
 CONFIG_MTD_RAM=y
 CONFIG_MTD_RAM=y
 CONFIG_MTD_ROM=m
 CONFIG_MTD_ROM=m
 # CONFIG_MTD_ABSENT is not set
 # CONFIG_MTD_ABSENT is not set
@@ -506,9 +509,6 @@ CONFIG_MTD_ROM=m
 #
 #
 CONFIG_MTD_COMPLEX_MAPPINGS=y
 CONFIG_MTD_COMPLEX_MAPPINGS=y
 # CONFIG_MTD_PHYSMAP is not set
 # CONFIG_MTD_PHYSMAP is not set
-CONFIG_MTD_BF5xx=m
-CONFIG_BFIN_FLASH_SIZE=0x400000
-CONFIG_EBIU_FLASH_BASE=0x20000000
 # CONFIG_MTD_UCLINUX is not set
 # CONFIG_MTD_UCLINUX is not set
 # CONFIG_MTD_PLATRAM is not set
 # CONFIG_MTD_PLATRAM is not set
 
 
@@ -684,7 +684,6 @@ CONFIG_INPUT_MISC=y
 # CONFIG_INPUT_POWERMATE is not set
 # CONFIG_INPUT_POWERMATE is not set
 # CONFIG_INPUT_YEALINK is not set
 # CONFIG_INPUT_YEALINK is not set
 # CONFIG_INPUT_UINPUT is not set
 # CONFIG_INPUT_UINPUT is not set
-# CONFIG_BF53X_PFBUTTONS is not set
 # CONFIG_TWI_KEYPAD is not set
 # CONFIG_TWI_KEYPAD is not set
 
 
 #
 #
@@ -702,12 +701,12 @@ CONFIG_INPUT_MISC=y
 # CONFIG_BF5xx_PPIFCD is not set
 # CONFIG_BF5xx_PPIFCD is not set
 # CONFIG_BFIN_SIMPLE_TIMER is not set
 # CONFIG_BFIN_SIMPLE_TIMER is not set
 # CONFIG_BF5xx_PPI is not set
 # CONFIG_BF5xx_PPI is not set
+CONFIG_BFIN_OTP=y
+# CONFIG_BFIN_OTP_WRITE_ENABLE is not set
 # CONFIG_BFIN_SPORT is not set
 # CONFIG_BFIN_SPORT is not set
 # CONFIG_BFIN_TIMER_LATENCY is not set
 # CONFIG_BFIN_TIMER_LATENCY is not set
 # CONFIG_TWI_LCD is not set
 # CONFIG_TWI_LCD is not set
 # CONFIG_AD5304 is not set
 # CONFIG_AD5304 is not set
-# CONFIG_BF5xx_TEA5764 is not set
-# CONFIG_BF5xx_FBDMA is not set
 # CONFIG_VT is not set
 # CONFIG_VT is not set
 # CONFIG_SERIAL_NONSTANDARD is not set
 # CONFIG_SERIAL_NONSTANDARD is not set
 
 
@@ -772,7 +771,6 @@ CONFIG_I2C_CHARDEV=m
 #
 #
 # I2C Hardware Bus support
 # I2C Hardware Bus support
 #
 #
-# CONFIG_I2C_BLACKFIN_GPIO is not set
 CONFIG_I2C_BLACKFIN_TWI=m
 CONFIG_I2C_BLACKFIN_TWI=m
 CONFIG_I2C_BLACKFIN_TWI_CLK_KHZ=50
 CONFIG_I2C_BLACKFIN_TWI_CLK_KHZ=50
 # CONFIG_I2C_GPIO is not set
 # CONFIG_I2C_GPIO is not set

+ 2 - 4
arch/blackfin/configs/BF533-EZKIT_defconfig

@@ -322,10 +322,9 @@ CONFIG_PM=y
 # CONFIG_PM_LEGACY is not set
 # CONFIG_PM_LEGACY is not set
 # CONFIG_PM_DEBUG is not set
 # CONFIG_PM_DEBUG is not set
 # CONFIG_PM_SYSFS_DEPRECATED is not set
 # CONFIG_PM_SYSFS_DEPRECATED is not set
-CONFIG_PM_WAKEUP_GPIO_BY_SIC_IWR=y
+CONFIG_PM_BFIN_SLEEP_DEEPER=y
+# CONFIG_PM_BFIN_SLEEP is not set
 # CONFIG_PM_WAKEUP_BY_GPIO is not set
 # CONFIG_PM_WAKEUP_BY_GPIO is not set
-# CONFIG_PM_WAKEUP_GPIO_API is not set
-CONFIG_PM_WAKEUP_SIC_IWR=0x80
 
 
 #
 #
 # CPU Frequency scaling
 # CPU Frequency scaling
@@ -697,7 +696,6 @@ CONFIG_SERIAL_BFIN_DMA=y
 # CONFIG_SERIAL_BFIN_PIO is not set
 # CONFIG_SERIAL_BFIN_PIO is not set
 CONFIG_SERIAL_BFIN_UART0=y
 CONFIG_SERIAL_BFIN_UART0=y
 # CONFIG_BFIN_UART0_CTSRTS is not set
 # CONFIG_BFIN_UART0_CTSRTS is not set
-# CONFIG_SERIAL_BFIN_UART1 is not set
 CONFIG_SERIAL_CORE=y
 CONFIG_SERIAL_CORE=y
 CONFIG_SERIAL_CORE_CONSOLE=y
 CONFIG_SERIAL_CORE_CONSOLE=y
 # CONFIG_SERIAL_BFIN_SPORT is not set
 # CONFIG_SERIAL_BFIN_SPORT is not set

+ 2 - 4
arch/blackfin/configs/BF533-STAMP_defconfig

@@ -323,10 +323,9 @@ CONFIG_PM=y
 # CONFIG_PM_LEGACY is not set
 # CONFIG_PM_LEGACY is not set
 # CONFIG_PM_DEBUG is not set
 # CONFIG_PM_DEBUG is not set
 # CONFIG_PM_SYSFS_DEPRECATED is not set
 # CONFIG_PM_SYSFS_DEPRECATED is not set
-CONFIG_PM_WAKEUP_GPIO_BY_SIC_IWR=y
+CONFIG_PM_BFIN_SLEEP_DEEPER=y
+# CONFIG_PM_BFIN_SLEEP is not set
 # CONFIG_PM_WAKEUP_BY_GPIO is not set
 # CONFIG_PM_WAKEUP_BY_GPIO is not set
-# CONFIG_PM_WAKEUP_GPIO_API is not set
-CONFIG_PM_WAKEUP_SIC_IWR=0x80
 
 
 #
 #
 # CPU Frequency scaling
 # CPU Frequency scaling
@@ -714,7 +713,6 @@ CONFIG_SERIAL_BFIN_DMA=y
 # CONFIG_SERIAL_BFIN_PIO is not set
 # CONFIG_SERIAL_BFIN_PIO is not set
 CONFIG_SERIAL_BFIN_UART0=y
 CONFIG_SERIAL_BFIN_UART0=y
 # CONFIG_BFIN_UART0_CTSRTS is not set
 # CONFIG_BFIN_UART0_CTSRTS is not set
-# CONFIG_SERIAL_BFIN_UART1 is not set
 CONFIG_SERIAL_CORE=y
 CONFIG_SERIAL_CORE=y
 CONFIG_SERIAL_CORE_CONSOLE=y
 CONFIG_SERIAL_CORE_CONSOLE=y
 # CONFIG_SERIAL_BFIN_SPORT is not set
 # CONFIG_SERIAL_BFIN_SPORT is not set

+ 3 - 3
arch/blackfin/configs/BF537-STAMP_defconfig

@@ -330,10 +330,9 @@ CONFIG_PM=y
 # CONFIG_PM_LEGACY is not set
 # CONFIG_PM_LEGACY is not set
 # CONFIG_PM_DEBUG is not set
 # CONFIG_PM_DEBUG is not set
 # CONFIG_PM_SYSFS_DEPRECATED is not set
 # CONFIG_PM_SYSFS_DEPRECATED is not set
-CONFIG_PM_WAKEUP_GPIO_BY_SIC_IWR=y
+CONFIG_PM_BFIN_SLEEP_DEEPER=y
+# CONFIG_PM_BFIN_SLEEP is not set
 # CONFIG_PM_WAKEUP_BY_GPIO is not set
 # CONFIG_PM_WAKEUP_BY_GPIO is not set
-# CONFIG_PM_WAKEUP_GPIO_API is not set
-CONFIG_PM_WAKEUP_SIC_IWR=0x8
 
 
 #
 #
 # CPU Frequency scaling
 # CPU Frequency scaling
@@ -1013,6 +1012,7 @@ CONFIG_SND_BFIN_AD73311_SE=4
 CONFIG_SND_SOC_AC97_BUS=y
 CONFIG_SND_SOC_AC97_BUS=y
 CONFIG_SND_SOC=m
 CONFIG_SND_SOC=m
 CONFIG_SND_BF5XX_SOC=m
 CONFIG_SND_BF5XX_SOC=m
+CONFIG_SND_MMAP_SUPPORT=y
 CONFIG_SND_BF5XX_SOC_AC97=m
 CONFIG_SND_BF5XX_SOC_AC97=m
 # CONFIG_SND_BF5XX_SOC_WM8750 is not set
 # CONFIG_SND_BF5XX_SOC_WM8750 is not set
 # CONFIG_SND_BF5XX_SOC_WM8731 is not set
 # CONFIG_SND_BF5XX_SOC_WM8731 is not set

+ 2 - 0
arch/blackfin/configs/BF548-EZKIT_defconfig

@@ -396,6 +396,7 @@ CONFIG_BINFMT_ZFLAT=y
 # Power management options
 # Power management options
 #
 #
 # CONFIG_PM is not set
 # CONFIG_PM is not set
+# CONFIG_PM_WAKEUP_BY_GPIO is not set
 
 
 #
 #
 # CPU Frequency scaling
 # CPU Frequency scaling
@@ -1075,6 +1076,7 @@ CONFIG_SND_VERBOSE_PROCFS=y
 CONFIG_SND_SOC_AC97_BUS=y
 CONFIG_SND_SOC_AC97_BUS=y
 CONFIG_SND_SOC=y
 CONFIG_SND_SOC=y
 CONFIG_SND_BF5XX_SOC=y
 CONFIG_SND_BF5XX_SOC=y
+CONFIG_SND_MMAP_SUPPORT=y
 CONFIG_SND_BF5XX_SOC_AC97=y
 CONFIG_SND_BF5XX_SOC_AC97=y
 CONFIG_SND_BF5XX_SOC_BF548_EZKIT=y
 CONFIG_SND_BF5XX_SOC_BF548_EZKIT=y
 # CONFIG_SND_BF5XX_SOC_WM8750 is not set
 # CONFIG_SND_BF5XX_SOC_WM8750 is not set

+ 1 - 0
arch/blackfin/configs/BF561-EZKIT_defconfig

@@ -367,6 +367,7 @@ CONFIG_BINFMT_ZFLAT=y
 # Power management options
 # Power management options
 #
 #
 # CONFIG_PM is not set
 # CONFIG_PM is not set
+# CONFIG_PM_WAKEUP_BY_GPIO is not set
 
 
 #
 #
 # Networking
 # Networking

Nem az összes módosított fájl került megjelenítésre, mert túl sok fájl változott