]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
more .28 patches
authorGreg Kroah-Hartman <gregkh@suse.de>
Sun, 8 Feb 2009 21:17:11 +0000 (13:17 -0800)
committerGreg Kroah-Hartman <gregkh@suse.de>
Sun, 8 Feb 2009 21:17:11 +0000 (13:17 -0800)
17 files changed:
queue-2.6.28/acpi-disable-acpi-cleanly-when-bad-rsdp-found.patch [new file with mode: 0644]
queue-2.6.28/acpi-proc_dir_entry-video-vga-already-registered.patch [new file with mode: 0644]
queue-2.6.28/acpi-remove-locking-from-pm1x_sts-register-reads.patch [new file with mode: 0644]
queue-2.6.28/acpi-skip-the-first-two-elements-in-the-_bcl-package.patch [new file with mode: 0644]
queue-2.6.28/acpica-fix-table-entry-truncation-calculation.patch [new file with mode: 0644]
queue-2.6.28/add-support-for-8-port-rs-232-mic-3620-from-advantech.patch [new file with mode: 0644]
queue-2.6.28/alsa-hda-add-missing-coef-initialization-for-alc887.patch [new file with mode: 0644]
queue-2.6.28/alsa-hda-add-missing-initialization-for-alc272.patch [new file with mode: 0644]
queue-2.6.28/alsa-hda-add-quirk-for-fsc-amilo-xi2550.patch [new file with mode: 0644]
queue-2.6.28/asus_acpi-add-r1f-support.patch [new file with mode: 0644]
queue-2.6.28/panasonic-laptop-fix-x.patch [new file with mode: 0644]
queue-2.6.28/pci-properly-clean-up-aspm-link-state-on-device-remove.patch [new file with mode: 0644]
queue-2.6.28/pci-return-error-on-failure-to-read-pci-roms.patch [new file with mode: 0644]
queue-2.6.28/seq_file-fix-big-enough-lseek-read.patch [new file with mode: 0644]
queue-2.6.28/seq_file-move-traverse-so-it-can-be-used-from-seq_read.patch [new file with mode: 0644]
queue-2.6.28/serial-set-correct-baud_base-for-oxford-semiconductor-ltd-exsys-ex-41092-dual-16950-serial-adapter.patch [new file with mode: 0644]
queue-2.6.28/series

diff --git a/queue-2.6.28/acpi-disable-acpi-cleanly-when-bad-rsdp-found.patch b/queue-2.6.28/acpi-disable-acpi-cleanly-when-bad-rsdp-found.patch
new file mode 100644 (file)
index 0000000..8947bc2
--- /dev/null
@@ -0,0 +1,50 @@
+From 9e3a9d1ed8cc8db93e5c53e9a5b09065bd95de8b Mon Sep 17 00:00:00 2001
+From: Len Brown <len.brown@intel.com>
+Date: Fri, 6 Feb 2009 14:00:56 -0500
+Subject: ACPI: disable ACPI cleanly when bad RSDP found
+
+From: Len Brown <len.brown@intel.com>
+
+commit 9e3a9d1ed8cc8db93e5c53e9a5b09065bd95de8b upstream.
+
+When ACPI is disabled in the BIOS of this VIA C3 box,
+it invalidates the RSDP, which Linux notices:
+
+ACPI Error (tbxfroot-0218): A valid RSDP was not found [20080926]
+
+Bug Linux neglected to disable ACPI at that stage,
+and later scribbled on smp_found_config:
+
+ACPI: No APIC-table, disabling MPS
+
+But this box doesn't run well in legacy PIC mode,
+it needed IOAPIC mode to perform correctly:
+
+http://lkml.org/lkml/2009/2/5/39
+
+So exit ACPI mode cleanly when we first detect
+that it is hopeless.
+
+Signed-off-by: Len Brown <len.brown@intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/acpi/tables.c |    7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+--- a/drivers/acpi/tables.c
++++ b/drivers/acpi/tables.c
+@@ -293,7 +293,12 @@ static void __init check_multiple_madt(v
+ int __init acpi_table_init(void)
+ {
+-      acpi_initialize_tables(initial_tables, ACPI_MAX_TABLES, 0);
++      acpi_status status;
++
++      status = acpi_initialize_tables(initial_tables, ACPI_MAX_TABLES, 0);
++      if (ACPI_FAILURE(status))
++              return 1;
++
+       check_multiple_madt();
+       return 0;
+ }
diff --git a/queue-2.6.28/acpi-proc_dir_entry-video-vga-already-registered.patch b/queue-2.6.28/acpi-proc_dir_entry-video-vga-already-registered.patch
new file mode 100644 (file)
index 0000000..088b303
--- /dev/null
@@ -0,0 +1,36 @@
+From f3b39f1393d5cebe56f43a584ef47efbebd2702c Mon Sep 17 00:00:00 2001
+From: Zhao Yakui <yakui.zhao@intel.com>
+Date: Mon, 2 Feb 2009 22:55:01 -0500
+Subject: ACPI: proc_dir_entry 'video/VGA' already registered
+
+From: Zhao Yakui <yakui.zhao@intel.com>
+
+commit f3b39f1393d5cebe56f43a584ef47efbebd2702c upstream.
+
+eliminate the duplicate the name of "VGA"
+
+http://bugzilla.kernel.org/show_bug.cgi?id=12514
+
+Signed-off-by: Zhao Yakui <yakui.zhao@intel.com>
+Signed-off-by: Len Brown <len.brown@intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/acpi/video.c |    6 ++++++
+ 1 file changed, 6 insertions(+)
+
+--- a/drivers/acpi/video.c
++++ b/drivers/acpi/video.c
+@@ -1991,6 +1991,12 @@ static int acpi_video_bus_add(struct acp
+                       device->pnp.bus_id[3] = '0' + instance;
+               instance ++;
+       }
++      /* a hack to fix the duplicate name "VGA" problem on Pa 3553 */
++      if (!strcmp(device->pnp.bus_id, "VGA")) {
++              if (instance)
++                      device->pnp.bus_id[3] = '0' + instance;
++              instance++;
++      }
+       video->device = device;
+       strcpy(acpi_device_name(device), ACPI_VIDEO_BUS_NAME);
diff --git a/queue-2.6.28/acpi-remove-locking-from-pm1x_sts-register-reads.patch b/queue-2.6.28/acpi-remove-locking-from-pm1x_sts-register-reads.patch
new file mode 100644 (file)
index 0000000..cae2a24
--- /dev/null
@@ -0,0 +1,49 @@
+From a2b7b01c072435b7832ab392167545a1b38cabc3 Mon Sep 17 00:00:00 2001
+From: Len Brown <len.brown@intel.com>
+Date: Wed, 28 Jan 2009 12:47:15 -0500
+Subject: ACPI: remove locking from PM1x_STS register reads
+
+From: Len Brown <len.brown@intel.com>
+
+commit a2b7b01c072435b7832ab392167545a1b38cabc3 upstream.
+
+PM1a_STS and PM1b_STS are twins that get OR'd together
+on reads, and all writes are repeated to both.
+
+The fields in PM1x_STS are single bits only,
+there are no multi-bit fields.
+
+So it is not necessary to lock PM1x_STS reads against
+writes because it is impossible to read an intermediate
+value of a single bit.  It will either be 0 or 1,
+even if a write is in progress during the read.
+Reads are asynchronous to writes no matter if a lock
+is used or not.
+
+Signed-off-by: Len Brown <len.brown@intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/acpi/processor_idle.c |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/drivers/acpi/processor_idle.c
++++ b/drivers/acpi/processor_idle.c
+@@ -446,7 +446,7 @@ static void acpi_processor_idle(void)
+               pr->power.bm_activity <<= diff;
+-              acpi_get_register(ACPI_BITREG_BUS_MASTER_STATUS, &bm_status);
++              acpi_get_register_unlocked(ACPI_BITREG_BUS_MASTER_STATUS, &bm_status);
+               if (bm_status) {
+                       pr->power.bm_activity |= 0x1;
+                       acpi_set_register(ACPI_BITREG_BUS_MASTER_STATUS, 1);
+@@ -1382,7 +1382,7 @@ static int acpi_idle_bm_check(void)
+ {
+       u32 bm_status = 0;
+-      acpi_get_register(ACPI_BITREG_BUS_MASTER_STATUS, &bm_status);
++      acpi_get_register_unlocked(ACPI_BITREG_BUS_MASTER_STATUS, &bm_status);
+       if (bm_status)
+               acpi_set_register(ACPI_BITREG_BUS_MASTER_STATUS, 1);
+       /*
diff --git a/queue-2.6.28/acpi-skip-the-first-two-elements-in-the-_bcl-package.patch b/queue-2.6.28/acpi-skip-the-first-two-elements-in-the-_bcl-package.patch
new file mode 100644 (file)
index 0000000..9cf2472
--- /dev/null
@@ -0,0 +1,72 @@
+From 0a3db1cec5d476804185114ff5d1845aed3936b3 Mon Sep 17 00:00:00 2001
+From: Zhao Yakui <yakui.zhao@intel.com>
+Date: Mon, 2 Feb 2009 11:33:41 +0800
+Subject: ACPI: Skip the first two elements in the _BCL package
+
+From: Zhao Yakui <yakui.zhao@intel.com>
+
+commit 0a3db1cec5d476804185114ff5d1845aed3936b3 upstream.
+
+According to the Spec the first two elements in the _BCL package won't be
+
+regarded as the available brightness level. The first is the brightness when
+full power is connected to the box(It means that the AC adapter is plugged).
+The second is the brightness level when the box is on battery.
+    If the first two elements are still used while finding the next brightness
+level, it will fall back to the lowest level when keeping on pressing
+hotkey. (On some boxes the brightness will be changed twice when hotkey is
+pressed once. One is in the ACPI video driver. The other is changed by sys I/F.
+In the ACPI video driver the first two elements will be used while changing
+the brightness. But the first two elements is skipped while using sys I/F.
+In such case there exists the inconsistency).
+    So he first two elements had better be skipped while showing the available
+brightness or finding the next brightness level.
+
+http://bugzilla.kernel.org/show_bug.cgi?id=12450
+
+Signed-off-by: Zhao Yakui <yakui.zhao@intel.com>
+Signed-off-by: Len Brown <len.brown@intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/acpi/video.c |    8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+--- a/drivers/acpi/video.c
++++ b/drivers/acpi/video.c
+@@ -1005,7 +1005,7 @@ acpi_video_device_brightness_seq_show(st
+       }
+       seq_printf(seq, "levels: ");
+-      for (i = 0; i < dev->brightness->count; i++)
++      for (i = 2; i < dev->brightness->count; i++)
+               seq_printf(seq, " %d", dev->brightness->levels[i]);
+       seq_printf(seq, "\ncurrent: %d\n", dev->brightness->curr);
+@@ -1044,7 +1044,7 @@ acpi_video_device_write_brightness(struc
+               return -EFAULT;
+       /* validate through the list of available levels */
+-      for (i = 0; i < dev->brightness->count; i++)
++      for (i = 2; i < dev->brightness->count; i++)
+               if (level == dev->brightness->levels[i]) {
+                       if (ACPI_SUCCESS
+                           (acpi_video_device_lcd_set_level(dev, level)))
+@@ -1697,7 +1697,7 @@ acpi_video_get_next_level(struct acpi_vi
+       max = max_below = 0;
+       min = min_above = 255;
+       /* Find closest level to level_current */
+-      for (i = 0; i < device->brightness->count; i++) {
++      for (i = 2; i < device->brightness->count; i++) {
+               l = device->brightness->levels[i];
+               if (abs(l - level_current) < abs(delta)) {
+                       delta = l - level_current;
+@@ -1707,7 +1707,7 @@ acpi_video_get_next_level(struct acpi_vi
+       }
+       /* Ajust level_current to closest available level */
+       level_current += delta;
+-      for (i = 0; i < device->brightness->count; i++) {
++      for (i = 2; i < device->brightness->count; i++) {
+               l = device->brightness->levels[i];
+               if (l < min)
+                       min = l;
diff --git a/queue-2.6.28/acpica-fix-table-entry-truncation-calculation.patch b/queue-2.6.28/acpica-fix-table-entry-truncation-calculation.patch
new file mode 100644 (file)
index 0000000..1c3cb4a
--- /dev/null
@@ -0,0 +1,47 @@
+From 386e4a8358239f90275e1f93d5ad11cdc93c6453 Mon Sep 17 00:00:00 2001
+From: Myron Stowe <myron.stowe@hp.com>
+Date: Fri, 30 Jan 2009 15:44:53 -0700
+Subject: ACPICA: Fix table entry truncation calculation
+
+From: Myron Stowe <myron.stowe@hp.com>
+
+commit 386e4a8358239f90275e1f93d5ad11cdc93c6453 upstream.
+
+During early boot, ACPI RSDT/XSDT table entries are gathered into the
+'initial_tables[]' array.  This array is currently statically defined (see
+./drivers/acpi/tables.c).  When there are more table entries than can be
+held in the 'initial_tables[]' array, the message "Truncating N table
+entries!" is output.  As currently implemented, this message will always
+erroneously calculate N as 0.
+
+This patch fixes the calculation that determines how many table entries
+will be missing (truncated).
+
+This modification may be used under either the GPL or the BSD-style
+license used for Intel ACPI CA code.
+
+Signed-off-by: Myron Stowe <myron.stowe@hp.com>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Len Brown <len.brown@intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/acpi/tables/tbutils.c |    7 +++----
+ 1 file changed, 3 insertions(+), 4 deletions(-)
+
+--- a/drivers/acpi/tables/tbutils.c
++++ b/drivers/acpi/tables/tbutils.c
+@@ -512,10 +512,9 @@ acpi_tb_parse_root_table(acpi_physical_a
+                       if (ACPI_FAILURE(status)) {
+                               ACPI_WARNING((AE_INFO,
+                                             "Truncating %u table entries!",
+-                                            (unsigned)
+-                                            (acpi_gbl_root_table_list.size -
+-                                             acpi_gbl_root_table_list.
+-                                             count)));
++                                            (unsigned) (table_count -
++                                             (acpi_gbl_root_table_list.
++                                             count - 2))));
+                               break;
+                       }
+               }
diff --git a/queue-2.6.28/add-support-for-8-port-rs-232-mic-3620-from-advantech.patch b/queue-2.6.28/add-support-for-8-port-rs-232-mic-3620-from-advantech.patch
new file mode 100644 (file)
index 0000000..d8b4d79
--- /dev/null
@@ -0,0 +1,43 @@
+From 78d70d48132ce4c678a95b771ffa1af4fb5a03ec Mon Sep 17 00:00:00 2001
+From: Michael Bramer <michael@debsupport.de>
+Date: Tue, 27 Jan 2009 11:51:16 +0000
+Subject: Add support for '8-port RS-232 MIC-3620 from advantech'
+
+From: Michael Bramer <michael@debsupport.de>
+
+commit 78d70d48132ce4c678a95b771ffa1af4fb5a03ec upstream.
+
+This Patch add the device information for the
+MIC-3620 8-port RS-232 cPCI card from Advantech Co. Ltd.
+
+Signed-off-by: Michael Bramer <grisu@deb-support.de>
+Signed-off-by: Alan Cox <number6@the-village.bc.nu>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/serial/8250_pci.c |    6 ++++++
+ 1 file changed, 6 insertions(+)
+
+--- a/drivers/serial/8250_pci.c
++++ b/drivers/serial/8250_pci.c
+@@ -766,6 +766,8 @@ pci_default_setup(struct serial_private 
+ #define PCI_SUBDEVICE_ID_OCTPRO422    0x0208
+ #define PCI_SUBDEVICE_ID_POCTAL232    0x0308
+ #define PCI_SUBDEVICE_ID_POCTAL422    0x0408
++#define PCI_VENDOR_ID_ADVANTECH               0x13fe
++#define PCI_DEVICE_ID_ADVANTECH_PCI3620       0x3620
+ /* Unknown vendors/cards - this should not be in linux/pci_ids.h */
+ #define PCI_SUBDEVICE_ID_UNKNOWN_0x1584       0x1584
+@@ -2132,6 +2134,10 @@ static int pciserial_resume_one(struct p
+ #endif
+ static struct pci_device_id serial_pci_tbl[] = {
++      /* Advantech use PCI_DEVICE_ID_ADVANTECH_PCI3620 (0x3620) as 'PCI_SUBVENDOR_ID' */
++      {       PCI_VENDOR_ID_ADVANTECH, PCI_DEVICE_ID_ADVANTECH_PCI3620,
++              PCI_DEVICE_ID_ADVANTECH_PCI3620, 0x0001, 0, 0,
++              pbn_b2_8_921600 },
+       {       PCI_VENDOR_ID_V3, PCI_DEVICE_ID_V3_V960,
+               PCI_SUBVENDOR_ID_CONNECT_TECH,
+               PCI_SUBDEVICE_ID_CONNECT_TECH_BH8_232, 0, 0,
diff --git a/queue-2.6.28/alsa-hda-add-missing-coef-initialization-for-alc887.patch b/queue-2.6.28/alsa-hda-add-missing-coef-initialization-for-alc887.patch
new file mode 100644 (file)
index 0000000..86ef506
--- /dev/null
@@ -0,0 +1,26 @@
+From 4a5a4c56b443a213fa9c2ad27984a8681a3d7087 Mon Sep 17 00:00:00 2001
+From: Takashi Iwai <tiwai@suse.de>
+Date: Fri, 6 Feb 2009 12:46:59 +0100
+Subject: ALSA: hda - Add missing COEF initialization for ALC887
+
+From: Takashi Iwai <tiwai@suse.de>
+
+commit 4a5a4c56b443a213fa9c2ad27984a8681a3d7087 upstream.
+
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ sound/pci/hda/patch_realtek.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/sound/pci/hda/patch_realtek.c
++++ b/sound/pci/hda/patch_realtek.c
+@@ -995,6 +995,7 @@ do_sku:
+               case 0x10ec0882:
+               case 0x10ec0883:
+               case 0x10ec0885:
++              case 0x10ec0887:
+               case 0x10ec0889:
+                       snd_hda_codec_write(codec, 0x20, 0,
+                                           AC_VERB_SET_COEF_INDEX, 7);
diff --git a/queue-2.6.28/alsa-hda-add-missing-initialization-for-alc272.patch b/queue-2.6.28/alsa-hda-add-missing-initialization-for-alc272.patch
new file mode 100644 (file)
index 0000000..af0f5c8
--- /dev/null
@@ -0,0 +1,29 @@
+From c6e8f2daadc6d61a32b7486a1058c8f1f9baa499 Mon Sep 17 00:00:00 2001
+From: Takashi Iwai <tiwai@suse.de>
+Date: Fri, 6 Feb 2009 12:45:52 +0100
+Subject: ALSA: hda - Add missing initialization for ALC272
+
+From: Takashi Iwai <tiwai@suse.de>
+
+commit c6e8f2daadc6d61a32b7486a1058c8f1f9baa499 upstream.
+
+ALC272 needs EAPD for speaker outputs as well as other similar ALC
+codecs.
+
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ sound/pci/hda/patch_realtek.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/sound/pci/hda/patch_realtek.c
++++ b/sound/pci/hda/patch_realtek.c
+@@ -967,6 +967,7 @@ do_sku:
+               case 0x10ec0267:
+               case 0x10ec0268:
+               case 0x10ec0269:
++              case 0x10ec0272:
+               case 0x10ec0660:
+               case 0x10ec0662:
+               case 0x10ec0663:
diff --git a/queue-2.6.28/alsa-hda-add-quirk-for-fsc-amilo-xi2550.patch b/queue-2.6.28/alsa-hda-add-quirk-for-fsc-amilo-xi2550.patch
new file mode 100644 (file)
index 0000000..826f71c
--- /dev/null
@@ -0,0 +1,32 @@
+From f67d8176ba9a3dbc33454cd67057184b2ef5ee31 Mon Sep 17 00:00:00 2001
+From: Takashi Iwai <tiwai@suse.de>
+Date: Wed, 4 Feb 2009 23:30:19 +0100
+Subject: ALSA: hda - Add quirk for FSC Amilo Xi2550
+
+From: Takashi Iwai <tiwai@suse.de>
+
+commit f67d8176ba9a3dbc33454cd67057184b2ef5ee31 upstream.
+
+Added model=fujisu-pi2515 for FSC Amilo Xi2550 with ALC883 codec.
+
+Refernece: Novell bnc#450979
+       https://bugzilla.novell.com/show_bug.cgi?id=450979
+
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ sound/pci/hda/patch_realtek.c |    2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/sound/pci/hda/patch_realtek.c
++++ b/sound/pci/hda/patch_realtek.c
+@@ -8463,6 +8463,8 @@ static struct snd_pci_quirk alc883_cfg_t
+       SND_PCI_QUIRK(0x1558, 0, "Clevo laptop", ALC883_LAPTOP_EAPD),
+       SND_PCI_QUIRK(0x15d9, 0x8780, "Supermicro PDSBA", ALC883_3ST_6ch),
+       SND_PCI_QUIRK(0x161f, 0x2054, "Medion laptop", ALC883_MEDION),
++      SND_PCI_QUIRK(0x1734, 0x1107, "FSC AMILO Xi2550",
++                    ALC883_FUJITSU_PI2515),
+       SND_PCI_QUIRK(0x1734, 0x1108, "Fujitsu AMILO Pi2515", ALC883_FUJITSU_PI2515),
+       SND_PCI_QUIRK(0x17aa, 0x101e, "Lenovo 101e", ALC883_LENOVO_101E_2ch),
+       SND_PCI_QUIRK(0x17aa, 0x2085, "Lenovo NB0763", ALC883_LENOVO_NB0763),
diff --git a/queue-2.6.28/asus_acpi-add-r1f-support.patch b/queue-2.6.28/asus_acpi-add-r1f-support.patch
new file mode 100644 (file)
index 0000000..4f3453d
--- /dev/null
@@ -0,0 +1,58 @@
+From 1021e2119eb33a990a2b9ff1410805dd9bdf7997 Mon Sep 17 00:00:00 2001
+From: Corentin Chary <corentincj@iksaif.net>
+Date: Tue, 20 Jan 2009 16:17:41 +0100
+Subject: asus_acpi: Add R1F support
+
+From: Corentin Chary <corentincj@iksaif.net>
+
+commit 1021e2119eb33a990a2b9ff1410805dd9bdf7997 upstream.
+
+Add R1F support
+
+Signed-off-by: Corentin Chary <corentincj@iksaif.net>
+Signed-off-by: Len Brown <len.brown@intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/acpi/asus_acpi.c |   16 +++++++++++++++-
+ 1 file changed, 15 insertions(+), 1 deletion(-)
+
+--- a/drivers/acpi/asus_acpi.c
++++ b/drivers/acpi/asus_acpi.c
+@@ -143,6 +143,7 @@ struct asus_hotk {
+                                                        S1300N, S5200N*/
+               A4S,            /* Z81sp */
+               F3Sa,           /* (Centrino) */
++              R1F,
+               END_MODEL
+       } model;                /* Models currently supported */
+       u16 event_count[128];   /* Count for each event TODO make this better */
+@@ -420,7 +421,18 @@ static struct model_data model_conf[END_
+               .display_get    = "\\ADVG",
+               .display_set    = "SDSP",
+       },
+-
++      {
++              .name = "R1F",
++              .mt_bt_switch = "BLED",
++              .mt_mled = "MLED",
++              .mt_wled = "WLED",
++              .mt_lcd_switch = "\\Q10",
++              .lcd_status = "\\GP06",
++              .brightness_set = "SPLV",
++              .brightness_get = "GPLV",
++              .display_set = "SDSP",
++              .display_get = "\\INFB"
++      }
+ };
+ /* procdir we use */
+@@ -1165,6 +1177,8 @@ static int asus_model_match(char *model)
+               return W3V;
+       else if (strncmp(model, "W5A", 3) == 0)
+               return W5A;
++      else if (strncmp(model, "R1F", 3) == 0)
++              return R1F;
+       else if (strncmp(model, "A4S", 3) == 0)
+               return A4S;
+       else if (strncmp(model, "F3Sa", 4) == 0)
diff --git a/queue-2.6.28/panasonic-laptop-fix-x.patch b/queue-2.6.28/panasonic-laptop-fix-x.patch
new file mode 100644 (file)
index 0000000..8d3f60b
--- /dev/null
@@ -0,0 +1,30 @@
+From 2b190e76def5233c542f6025b4a133b1d4bd1a37 Mon Sep 17 00:00:00 2001
+From: Roel Kluin <roel.kluin@gmail.com>
+Date: Sat, 17 Jan 2009 15:51:27 +0100
+Subject: panasonic-laptop: fix X[ ARRAY_SIZE(X) ]
+
+From: Roel Kluin <roel.kluin@gmail.com>
+
+commit 2b190e76def5233c542f6025b4a133b1d4bd1a37 upstream.
+
+Ensure pcc->keymap[ ARRAY_SIZE(pcc->keymap) ] does not occur.
+
+Signed-off-by: Roel Kluin <roel.kluin@gmail.com>
+Signed-off-by: Len Brown <len.brown@intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/misc/panasonic-laptop.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/misc/panasonic-laptop.c
++++ b/drivers/misc/panasonic-laptop.c
+@@ -515,7 +515,7 @@ static void acpi_pcc_generate_keyinput(s
+       hkey_num = result & 0xf;
+-      if (hkey_num < 0 || hkey_num > ARRAY_SIZE(pcc->keymap)) {
++      if (hkey_num < 0 || hkey_num >= ARRAY_SIZE(pcc->keymap)) {
+               ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
+                                 "hotkey number out of range: %d\n",
+                                 hkey_num));
diff --git a/queue-2.6.28/pci-properly-clean-up-aspm-link-state-on-device-remove.patch b/queue-2.6.28/pci-properly-clean-up-aspm-link-state-on-device-remove.patch
new file mode 100644 (file)
index 0000000..c4f13ef
--- /dev/null
@@ -0,0 +1,47 @@
+From 3419c75e15f82c3ab09bd944fddbde72c9e4b3ea Mon Sep 17 00:00:00 2001
+From: Alex Chiang <achiang@hp.com>
+Date: Wed, 28 Jan 2009 14:59:18 -0700
+Subject: PCI: properly clean up ASPM link state on device remove
+
+From: Alex Chiang <achiang@hp.com>
+
+commit 3419c75e15f82c3ab09bd944fddbde72c9e4b3ea upstream.
+
+We only want to disable ASPM when the last function is removed from
+the parent's device list. We determine this by checking to see if
+the parent's device list is completely empty.
+
+Unfortunately, we never hit that code because the parent is considered
+an upstream port, and never had an ASPM link_state associated with it.
+
+The early check for !link_state causes us to return early, we never
+discover that our device list is empty, and thus we never remove the
+downstream ports' link_state nodes.
+
+Instead of checking to see if the parent's device list is empty, we can
+check to see if we are the last device on the list, and if so, then we
+know that we can clean up properly.
+
+Cc: Shaohua Li <shaohua.li@intel.com>
+Signed-off-by: Alex Chiang <achiang@hp.com>
+Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/pci/pcie/aspm.c |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/drivers/pci/pcie/aspm.c
++++ b/drivers/pci/pcie/aspm.c
+@@ -713,9 +713,9 @@ void pcie_aspm_exit_link_state(struct pc
+       /*
+        * All PCIe functions are in one slot, remove one function will remove
+-       * the the whole slot, so just wait
++       * the whole slot, so just wait until we are the last function left.
+        */
+-      if (!list_empty(&parent->subordinate->devices))
++      if (!list_is_last(&pdev->bus_list, &parent->subordinate->devices))
+               goto out;
+       /* All functions are removed, so just disable ASPM for the link */
diff --git a/queue-2.6.28/pci-return-error-on-failure-to-read-pci-roms.patch b/queue-2.6.28/pci-return-error-on-failure-to-read-pci-roms.patch
new file mode 100644 (file)
index 0000000..5a99773
--- /dev/null
@@ -0,0 +1,146 @@
+From 97c44836cdec1ea713a15d84098a1a908157e68f Mon Sep 17 00:00:00 2001
+From: Timothy S. Nelson <wayland@wayland.id.au>
+Date: Fri, 30 Jan 2009 06:12:47 +1100
+Subject: PCI: return error on failure to read PCI ROMs
+
+From: Timothy S. Nelson <wayland@wayland.id.au>
+
+commit 97c44836cdec1ea713a15d84098a1a908157e68f upstream.
+
+This patch makes the ROM reading code return an error to user space if
+the size of the ROM read is equal to 0.
+
+The patch also emits a warnings if the contents of the ROM are invalid,
+and documents the effects of the "enable" file on ROM reading.
+
+Signed-off-by: Timothy S. Nelson <wayland@wayland.id.au>
+Acked-by: Alex Villacis-Lasso <a_villacis@palosanto.com>
+Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ Documentation/filesystems/sysfs-pci.txt |   13 ++++++++++++-
+ arch/ia64/sn/kernel/io_acpi_init.c      |    2 +-
+ arch/ia64/sn/kernel/io_init.c           |    2 +-
+ drivers/pci/pci-sysfs.c                 |    4 ++--
+ drivers/pci/rom.c                       |    8 +++++---
+ include/linux/pci.h                     |    2 +-
+ 6 files changed, 22 insertions(+), 9 deletions(-)
+
+--- a/arch/ia64/sn/kernel/io_acpi_init.c
++++ b/arch/ia64/sn/kernel/io_acpi_init.c
+@@ -434,7 +434,7 @@ sn_acpi_slot_fixup(struct pci_dev *dev)
+               size = pci_resource_len(dev, PCI_ROM_RESOURCE);
+               addr = ioremap(pcidev_info->pdi_pio_mapped_addr[PCI_ROM_RESOURCE],
+                              size);
+-              image_size = pci_get_rom_size(addr, size);
++              image_size = pci_get_rom_size(dev, addr, size);
+               dev->resource[PCI_ROM_RESOURCE].start = (unsigned long) addr;
+               dev->resource[PCI_ROM_RESOURCE].end =
+                                       (unsigned long) addr + image_size - 1;
+--- a/arch/ia64/sn/kernel/io_init.c
++++ b/arch/ia64/sn/kernel/io_init.c
+@@ -269,7 +269,7 @@ sn_io_slot_fixup(struct pci_dev *dev)
+                       rom = ioremap(pci_resource_start(dev, PCI_ROM_RESOURCE),
+                                     size + 1);
+-                      image_size = pci_get_rom_size(rom, size + 1);
++                      image_size = pci_get_rom_size(dev, rom, size + 1);
+                       dev->resource[PCI_ROM_RESOURCE].end =
+                               dev->resource[PCI_ROM_RESOURCE].start +
+                               image_size - 1;
+--- a/Documentation/filesystems/sysfs-pci.txt
++++ b/Documentation/filesystems/sysfs-pci.txt
+@@ -9,6 +9,7 @@ that support it.  For example, a given b
+      |   |-- class
+      |   |-- config
+      |   |-- device
++     |   |-- enable
+      |   |-- irq
+      |   |-- local_cpus
+      |   |-- resource
+@@ -32,6 +33,7 @@ files, each with their own function.
+        class             PCI class (ascii, ro)
+        config            PCI config space (binary, rw)
+        device            PCI device (ascii, ro)
++       enable            Whether the device is enabled (ascii, rw)
+        irq               IRQ number (ascii, ro)
+        local_cpus        nearby CPU mask (cpumask, ro)
+        resource                  PCI resource host addresses (ascii, ro)
+@@ -57,10 +59,19 @@ used to do actual device programming fro
+ don't support mmapping of certain resources, so be sure to check the return
+ value from any attempted mmap.
++The 'enable' file provides a counter that indicates how many times the device
++has been enabled.  If the 'enable' file currently returns '4', and a '1' is
++echoed into it, it will then return '5'.  Echoing a '0' into it will decrease
++the count.  Even when it returns to 0, though, some of the initialisation
++may not be reversed.
++
+ The 'rom' file is special in that it provides read-only access to the device's
+ ROM file, if available.  It's disabled by default, however, so applications
+ should write the string "1" to the file to enable it before attempting a read
+-call, and disable it following the access by writing "0" to the file.
++call, and disable it following the access by writing "0" to the file.  Note
++that the device must be enabled for a rom read to return data succesfully.
++In the event a driver is not bound to the device, it can be enabled using the
++'enable' file, documented above.
+ Accessing legacy resources through sysfs
+ ----------------------------------------
+--- a/drivers/pci/pci-sysfs.c
++++ b/drivers/pci/pci-sysfs.c
+@@ -777,8 +777,8 @@ pci_read_rom(struct kobject *kobj, struc
+               return -EINVAL;
+       
+       rom = pci_map_rom(pdev, &size); /* size starts out as PCI window size */
+-      if (!rom)
+-              return 0;
++      if (!rom || !size)
++              return -EIO;
+               
+       if (off >= size)
+               count = 0;
+--- a/drivers/pci/rom.c
++++ b/drivers/pci/rom.c
+@@ -63,7 +63,7 @@ void pci_disable_rom(struct pci_dev *pde
+  * The PCI window size could be much larger than the
+  * actual image size.
+  */
+-size_t pci_get_rom_size(void __iomem *rom, size_t size)
++size_t pci_get_rom_size(struct pci_dev *pdev, void __iomem *rom, size_t size)
+ {
+       void __iomem *image;
+       int last_image;
+@@ -72,8 +72,10 @@ size_t pci_get_rom_size(void __iomem *ro
+       do {
+               void __iomem *pds;
+               /* Standard PCI ROMs start out with these bytes 55 AA */
+-              if (readb(image) != 0x55)
++              if (readb(image) != 0x55) {
++                      dev_err(&pdev->dev, "Invalid ROM contents\n");
+                       break;
++              }
+               if (readb(image + 1) != 0xAA)
+                       break;
+               /* get the PCI data structure and check its signature */
+@@ -159,7 +161,7 @@ void __iomem *pci_map_rom(struct pci_dev
+        * size is much larger than the actual size of the ROM.
+        * True size is important if the ROM is going to be copied.
+        */
+-      *size = pci_get_rom_size(rom, *size);
++      *size = pci_get_rom_size(pdev, rom, *size);
+       return rom;
+ }
+--- a/include/linux/pci.h
++++ b/include/linux/pci.h
+@@ -651,7 +651,7 @@ int pci_enable_rom(struct pci_dev *pdev)
+ void pci_disable_rom(struct pci_dev *pdev);
+ void __iomem __must_check *pci_map_rom(struct pci_dev *pdev, size_t *size);
+ void pci_unmap_rom(struct pci_dev *pdev, void __iomem *rom);
+-size_t pci_get_rom_size(void __iomem *rom, size_t size);
++size_t pci_get_rom_size(struct pci_dev *pdev, void __iomem *rom, size_t size);
+ /* Power management related routines */
+ int pci_save_state(struct pci_dev *dev);
diff --git a/queue-2.6.28/seq_file-fix-big-enough-lseek-read.patch b/queue-2.6.28/seq_file-fix-big-enough-lseek-read.patch
new file mode 100644 (file)
index 0000000..4958e8b
--- /dev/null
@@ -0,0 +1,31 @@
+From f01d1d546abb2f4028b5299092f529eefb01253a Mon Sep 17 00:00:00 2001
+From: Alexey Dobriyan <adobriyan@gmail.com>
+Date: Fri, 6 Feb 2009 00:30:05 +0300
+Subject: seq_file: fix big-enough lseek() + read()
+
+From: Alexey Dobriyan <adobriyan@gmail.com>
+
+commit f01d1d546abb2f4028b5299092f529eefb01253a upstream.
+
+lseek() further than length of the file will leave stale ->index
+(second-to-last during iteration). Next seq_read() will not notice
+that ->f_pos is big enough to return 0, but will print last item
+as if ->f_pos is pointing to it.
+
+Introduced in commit cb510b8172602a66467f3551b4be1911f5a7c8c2
+aka "seq_file: more atomicity in traverse()".
+
+Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+--- a/fs/seq_file.c
++++ b/fs/seq_file.c
+@@ -102,6 +102,7 @@ static int traverse(struct seq_file *m, loff_t offset)
+               p = m->op->next(m, p, &index);
+       }
+       m->op->stop(m, p);
++      m->index = index;
+       return error;
+ Eoverflow:
diff --git a/queue-2.6.28/seq_file-move-traverse-so-it-can-be-used-from-seq_read.patch b/queue-2.6.28/seq_file-move-traverse-so-it-can-be-used-from-seq_read.patch
new file mode 100644 (file)
index 0000000..6f79a97
--- /dev/null
@@ -0,0 +1,159 @@
+From 33da8892a2f9e7d4b2d9a35fc80833ba2d2b1aa6 Mon Sep 17 00:00:00 2001
+From: Eric Biederman <ebiederm@xmission.com>
+Date: Wed, 4 Feb 2009 15:12:25 -0800
+Subject: seq_file: move traverse so it can be used from seq_read
+
+From: Eric Biederman <ebiederm@xmission.com>
+
+commit 33da8892a2f9e7d4b2d9a35fc80833ba2d2b1aa6 upstream.
+
+In 2.6.25 some /proc files were converted to use the seq_file
+infrastructure.  But seq_files do not correctly support pread(), which
+broke some usersapce applications.
+
+To handle pread correctly we can't assume that f_pos is where we left it
+in seq_read.  So move traverse() so that we can eventually use it in
+seq_read and do thus some day support pread().
+
+Signed-off-by: Eric Biederman <ebiederm@xmission.com>
+Cc: Paul Turner <pjt@google.com>
+Cc: Alexey Dobriyan <adobriyan@gmail.com>
+Cc: Al Viro <viro@zeniv.linux.org.uk>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ fs/seq_file.c |  114 +++++++++++++++++++++++++++++-----------------------------
+ 1 file changed, 57 insertions(+), 57 deletions(-)
+
+--- a/fs/seq_file.c
++++ b/fs/seq_file.c
+@@ -54,6 +54,63 @@ int seq_open(struct file *file, const st
+ }
+ EXPORT_SYMBOL(seq_open);
++static int traverse(struct seq_file *m, loff_t offset)
++{
++      loff_t pos = 0, index;
++      int error = 0;
++      void *p;
++
++      m->version = 0;
++      index = 0;
++      m->count = m->from = 0;
++      if (!offset) {
++              m->index = index;
++              return 0;
++      }
++      if (!m->buf) {
++              m->buf = kmalloc(m->size = PAGE_SIZE, GFP_KERNEL);
++              if (!m->buf)
++                      return -ENOMEM;
++      }
++      p = m->op->start(m, &index);
++      while (p) {
++              error = PTR_ERR(p);
++              if (IS_ERR(p))
++                      break;
++              error = m->op->show(m, p);
++              if (error < 0)
++                      break;
++              if (unlikely(error)) {
++                      error = 0;
++                      m->count = 0;
++              }
++              if (m->count == m->size)
++                      goto Eoverflow;
++              if (pos + m->count > offset) {
++                      m->from = offset - pos;
++                      m->count -= m->from;
++                      m->index = index;
++                      break;
++              }
++              pos += m->count;
++              m->count = 0;
++              if (pos == offset) {
++                      index++;
++                      m->index = index;
++                      break;
++              }
++              p = m->op->next(m, p, &index);
++      }
++      m->op->stop(m, p);
++      return error;
++
++Eoverflow:
++      m->op->stop(m, p);
++      kfree(m->buf);
++      m->buf = kmalloc(m->size <<= 1, GFP_KERNEL);
++      return !m->buf ? -ENOMEM : -EAGAIN;
++}
++
+ /**
+  *    seq_read -      ->read() method for sequential files.
+  *    @file: the file to read from
+@@ -186,63 +243,6 @@ Efault:
+ }
+ EXPORT_SYMBOL(seq_read);
+-static int traverse(struct seq_file *m, loff_t offset)
+-{
+-      loff_t pos = 0, index;
+-      int error = 0;
+-      void *p;
+-
+-      m->version = 0;
+-      index = 0;
+-      m->count = m->from = 0;
+-      if (!offset) {
+-              m->index = index;
+-              return 0;
+-      }
+-      if (!m->buf) {
+-              m->buf = kmalloc(m->size = PAGE_SIZE, GFP_KERNEL);
+-              if (!m->buf)
+-                      return -ENOMEM;
+-      }
+-      p = m->op->start(m, &index);
+-      while (p) {
+-              error = PTR_ERR(p);
+-              if (IS_ERR(p))
+-                      break;
+-              error = m->op->show(m, p);
+-              if (error < 0)
+-                      break;
+-              if (unlikely(error)) {
+-                      error = 0;
+-                      m->count = 0;
+-              }
+-              if (m->count == m->size)
+-                      goto Eoverflow;
+-              if (pos + m->count > offset) {
+-                      m->from = offset - pos;
+-                      m->count -= m->from;
+-                      m->index = index;
+-                      break;
+-              }
+-              pos += m->count;
+-              m->count = 0;
+-              if (pos == offset) {
+-                      index++;
+-                      m->index = index;
+-                      break;
+-              }
+-              p = m->op->next(m, p, &index);
+-      }
+-      m->op->stop(m, p);
+-      return error;
+-
+-Eoverflow:
+-      m->op->stop(m, p);
+-      kfree(m->buf);
+-      m->buf = kmalloc(m->size <<= 1, GFP_KERNEL);
+-      return !m->buf ? -ENOMEM : -EAGAIN;
+-}
+-
+ /**
+  *    seq_lseek -     ->llseek() method for sequential files.
+  *    @file: the file in question
diff --git a/queue-2.6.28/serial-set-correct-baud_base-for-oxford-semiconductor-ltd-exsys-ex-41092-dual-16950-serial-adapter.patch b/queue-2.6.28/serial-set-correct-baud_base-for-oxford-semiconductor-ltd-exsys-ex-41092-dual-16950-serial-adapter.patch
new file mode 100644 (file)
index 0000000..ebb61b4
--- /dev/null
@@ -0,0 +1,46 @@
+From 39aced68d664291db3324d0fcf0985ab5626aac2 Mon Sep 17 00:00:00 2001
+From: Niels de Vos <niels.devos@wincor-nixdorf.com>
+Date: Fri, 2 Jan 2009 13:46:58 +0000
+Subject: serial: set correct baud_base for Oxford Semiconductor Ltd EXSYS EX-41092 Dual 16950 Serial adapter
+
+From: Niels de Vos <niels.devos@wincor-nixdorf.com>
+
+commit 39aced68d664291db3324d0fcf0985ab5626aac2 upstream.
+
+The PCI-card identified as "Oxford Semiconductor Ltd EXSYS EX-41092 Dual
+16950 Serial adapter" is only usable with other devices (i.e. not the same
+card) after doing a "setserial /dev/ttyS<n> baud_base 115200".  This
+baud_base should be default for this card.
+
+Signed-off-by: Niels de Vos <niels.devos@wincor-nixdorf.com>
+Signed-off-by: Alan Cox <alan@redhat.com>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/serial/8250_pci.c |    3 +++
+ include/linux/pci_ids.h   |    1 +
+ 2 files changed, 4 insertions(+)
+
+--- a/drivers/serial/8250_pci.c
++++ b/drivers/serial/8250_pci.c
+@@ -2375,6 +2375,9 @@ static struct pci_device_id serial_pci_t
+                * For now just used the hex ID 0x950a.
+                */
+       {       PCI_VENDOR_ID_OXSEMI, 0x950a,
++              PCI_SUBVENDOR_ID_SIIG, PCI_SUBDEVICE_ID_SIIG_DUAL_SERIAL, 0, 0,
++              pbn_b0_2_115200 },
++      {       PCI_VENDOR_ID_OXSEMI, 0x950a,
+               PCI_ANY_ID, PCI_ANY_ID, 0, 0,
+               pbn_b0_2_1130000 },
+       {       PCI_VENDOR_ID_OXSEMI, PCI_DEVICE_ID_OXSEMI_16PCI954,
+--- a/include/linux/pci_ids.h
++++ b/include/linux/pci_ids.h
+@@ -1770,6 +1770,7 @@
+ #define PCI_DEVICE_ID_SIIG_8S_20x_650 0x2081
+ #define PCI_DEVICE_ID_SIIG_8S_20x_850 0x2082
+ #define PCI_SUBDEVICE_ID_SIIG_QUARTET_SERIAL  0x2050
++#define PCI_SUBDEVICE_ID_SIIG_DUAL_SERIAL     0x2530
+ #define PCI_VENDOR_ID_RADISYS         0x1331
index c97da79356403447dda008168615dc8c7975f756..e6c307c18150cd4cc46076e846e9d419a8eafe4e 100644 (file)
@@ -23,3 +23,19 @@ e1000-fix-bug-with-shared-interrupt-during-reset.patch
 e1000-fix-pci-enable-to-honor-the-need_ioport-flag.patch
 agp-intel-add-support-for-g41-chipset.patch
 agp-intel-fix-broken-symbol-in-device-name.patch
+alsa-hda-add-quirk-for-fsc-amilo-xi2550.patch
+alsa-hda-add-missing-coef-initialization-for-alc887.patch
+alsa-hda-add-missing-initialization-for-alc272.patch
+asus_acpi-add-r1f-support.patch
+panasonic-laptop-fix-x.patch
+acpi-skip-the-first-two-elements-in-the-_bcl-package.patch
+acpi-remove-locking-from-pm1x_sts-register-reads.patch
+acpi-proc_dir_entry-video-vga-already-registered.patch
+acpi-disable-acpi-cleanly-when-bad-rsdp-found.patch
+acpica-fix-table-entry-truncation-calculation.patch
+pci-properly-clean-up-aspm-link-state-on-device-remove.patch
+pci-return-error-on-failure-to-read-pci-roms.patch
+seq_file-move-traverse-so-it-can-be-used-from-seq_read.patch
+seq_file-fix-big-enough-lseek-read.patch
+serial-set-correct-baud_base-for-oxford-semiconductor-ltd-exsys-ex-41092-dual-16950-serial-adapter.patch
+add-support-for-8-port-rs-232-mic-3620-from-advantech.patch