linux-omap-psp 2.6.32: rediff touchbook and beagleboard patches, tweak beagleboard...
authorKoen Kooi <koen@openembedded.org>
Sun, 9 May 2010 08:54:01 +0000 (10:54 +0200)
committerKoen Kooi <koen@openembedded.org>
Mon, 10 May 2010 15:24:41 +0000 (17:24 +0200)
66 files changed:
recipes/linux/linux-omap-psp-2.6.32/0001-Revert-omap3-beagle-Fix-compile-time-errors.patch
recipes/linux/linux-omap-psp-2.6.32/0002-board-omap3touchbook-make-it-build-against-TI-linux-.patch
recipes/linux/linux-omap-psp-2.6.32/0003-ARM-OMAP-add-support-for-TCT-Zippy-to-Beagle-board-f.patch
recipes/linux/linux-omap-psp-2.6.32/0004-ARM-OMAP-Make-beagle-u-boot-partition-writable.patch
recipes/linux/linux-omap-psp-2.6.32/0005-board-omap3-beagle-add-DSS2-support.patch
recipes/linux/linux-omap-psp-2.6.32/0006-beagleboard-omap3_-foo-_rate_table-omap35x_-foo-_rat.patch [deleted file]
recipes/linux/linux-omap-psp-2.6.32/0006-board-omap3beagle-prepare-for-DM3730-based-Beagleboa.patch [moved from recipes/linux/linux-omap-psp-2.6.32/0007-board-omap3beagle-prepare-for-DM3730-based-Beagleboa.patch with 81% similarity]
recipes/linux/linux-omap-psp-2.6.32/0007-ARM-OMAP-beagleboard-Add-infrastructure-to-do-fixups.patch [moved from recipes/linux/linux-omap-psp-2.6.32/0043-ARM-OMAP-beagleboard-Add-infrastructure-to-do-fixups.patch with 92% similarity]
recipes/linux/linux-omap-psp-2.6.32/0008-ARM-OMAP-beagleboard-pre-export-GPIOs-to-userspace-w.patch [moved from recipes/linux/linux-omap-psp-2.6.32/0044-ARM-OMAP-beagleboard-pre-export-GPIOs-to-userspace-w.patch with 87% similarity]
recipes/linux/linux-omap-psp-2.6.32/0008-board-omap3beagle-turn-on-power-to-camera-on-boot-an.patch [deleted file]
recipes/linux/linux-omap-psp-2.6.32/0009-ARM-OMAP-beagleboard-initialize-ds1307-and-eeprom-on.patch [moved from recipes/linux/linux-omap-psp-2.6.32/0045-ARM-OMAP-beagleboard-initialize-ds1307-and-eeprom-on.patch with 91% similarity]
recipes/linux/linux-omap-psp-2.6.32/0010-ARM-OMAP-update-beagleboard-defconfig.patch [moved from recipes/linux/linux-omap-psp-2.6.32/0042-ARM-OMAP-update-beagleboard-defconfig.patch with 99% similarity]
recipes/linux/linux-omap-psp-2.6.32/0011-ASoC-enable-audio-capture-by-default-for-twl4030.patch [moved from recipes/linux/linux-omap-psp-2.6.32/0009-ASoC-enable-audio-capture-by-default-for-twl4030.patch with 85% similarity]
recipes/linux/linux-omap-psp-2.6.32/0012-MTD-NAND-omap2-proper-fix-for-subpage-read-ECC-error.patch [moved from recipes/linux/linux-omap-psp-2.6.32/0010-MTD-NAND-omap2-proper-fix-for-subpage-read-ECC-error.patch with 88% similarity]
recipes/linux/linux-omap-psp-2.6.32/0013-OMAP3630-DSS2-Enable-Pre-Multiplied-Alpha-Support.patch [moved from recipes/linux/linux-omap-psp-2.6.32/0011-OMAP3630-DSS2-Enable-Pre-Multiplied-Alpha-Support.patch with 91% similarity]
recipes/linux/linux-omap-psp-2.6.32/0014-DSS2-add-bootarg-for-selecting-svideo-or-composite-f.patch [moved from recipes/linux/linux-omap-psp-2.6.32/0012-DSS2-add-bootarg-for-selecting-svideo-or-composite-f.patch with 86% similarity]
recipes/linux/linux-omap-psp-2.6.32/0015-ISP-add-some-more-from-Leopard-imaging-patch.patch [moved from recipes/linux/linux-omap-psp-2.6.32/0013-ISP-add-some-more-from-Leopard-imaging-patch.patch with 96% similarity]
recipes/linux/linux-omap-psp-2.6.32/0016-ARM-OMAP-Overo-Add-support-for-second-ethernet-port.patch [moved from recipes/linux/linux-omap-psp-2.6.32/0014-ARM-OMAP-Overo-Add-support-for-second-ethernet-port.patch with 96% similarity]
recipes/linux/linux-omap-psp-2.6.32/0017-drivers-net-smsc911x-return-ENODEV-if-device-is-not-.patch [moved from recipes/linux/linux-omap-psp-2.6.32/0015-drivers-net-smsc911x-return-ENODEV-if-device-is-not-.patch with 85% similarity]
recipes/linux/linux-omap-psp-2.6.32/0018-drivers-input-touchscreen-ads7846-return-ENODEV-if-d.patch [moved from recipes/linux/linux-omap-psp-2.6.32/0016-drivers-input-touchscreen-ads7846-return-ENODEV-if-d.patch with 93% similarity]
recipes/linux/linux-omap-psp-2.6.32/0019-drivers-mfd-add-twl4030-madc-driver.patch [moved from recipes/linux/linux-omap-psp-2.6.32/0017-drivers-mfd-add-twl4030-madc-driver.patch with 99% similarity]
recipes/linux/linux-omap-psp-2.6.32/0020-ARM-OMAP-Add-missing-twl4030-madc-header-file.patch [moved from recipes/linux/linux-omap-psp-2.6.32/0018-ARM-OMAP-Add-missing-twl4030-madc-header-file.patch with 97% similarity]
recipes/linux/linux-omap-psp-2.6.32/0021-ARM-OMAP-Add-twl4030-madc-support-to-Overo.patch [moved from recipes/linux/linux-omap-psp-2.6.32/0019-ARM-OMAP-Add-twl4030-madc-support-to-Overo.patch with 87% similarity]
recipes/linux/linux-omap-psp-2.6.32/0022-ARM-OMAP-Add-twl4030-madc-support-to-Beagle.patch [moved from recipes/linux/linux-omap-psp-2.6.32/0020-ARM-OMAP-Add-twl4030-madc-support-to-Beagle.patch with 75% similarity]
recipes/linux/linux-omap-psp-2.6.32/0023-netdev-rt73usb-add-vendor-device-ID-for-Ceiva-Wirele.patch [moved from recipes/linux/linux-omap-psp-2.6.32/0021-netdev-rt73usb-add-vendor-device-ID-for-Ceiva-Wirele.patch with 88% similarity]
recipes/linux/linux-omap-psp-2.6.32/0024-mmc-don-t-display-single-block-read-console-messages.patch [moved from recipes/linux/linux-omap-psp-2.6.32/0022-mmc-don-t-display-single-block-read-console-messages.patch with 87% similarity]
recipes/linux/linux-omap-psp-2.6.32/0025-ARM-OMAP2-mmc-twl4030-move-clock-input-selection-pri.patch [moved from recipes/linux/linux-omap-psp-2.6.32/0023-ARM-OMAP2-mmc-twl4030-move-clock-input-selection-pri.patch with 92% similarity]
recipes/linux/linux-omap-psp-2.6.32/0026-board-overo-add-PM-code-and-sync-with-http-www.sakom.patch [moved from recipes/linux/linux-omap-psp-2.6.32/0024-board-overo-add-PM-code-and-sync-with-http-www.sakom.patch with 98% similarity]
recipes/linux/linux-omap-psp-2.6.32/0027-twl4030-madc-adjust-for-twl4030-twl-api-changes.patch [moved from recipes/linux/linux-omap-psp-2.6.32/0025-twl4030-madc-adjust-for-twl4030-twl-api-changes.patch with 95% similarity]
recipes/linux/linux-omap-psp-2.6.32/0028-OMAP-DSS2-Re-add-support-for-Samsung-lte430wq-f0c-pa.patch [moved from recipes/linux/linux-omap-psp-2.6.32/0026-OMAP-DSS2-Re-add-support-for-Samsung-lte430wq-f0c-pa.patch with 97% similarity]
recipes/linux/linux-omap-psp-2.6.32/0029-OMAP-DSS2-Add-support-for-LG-Philips-LB035Q02-panel.patch [moved from recipes/linux/linux-omap-psp-2.6.32/0027-OMAP-DSS2-Add-support-for-LG-Philips-LB035Q02-panel.patch with 98% similarity]
recipes/linux/linux-omap-psp-2.6.32/0030-Fix-for-bus-width-which-improves-SD-card-s-peformanc.patch [moved from recipes/linux/linux-omap-psp-2.6.32/0028-Fix-for-bus-width-which-improves-SD-card-s-peformanc.patch with 89% similarity]
recipes/linux/linux-omap-psp-2.6.32/0031-ARM-VFP-add-support-to-sync-the-VFP-state-of-the-cur.patch [moved from recipes/linux/linux-omap-psp-2.6.32/0029-ARM-VFP-add-support-to-sync-the-VFP-state-of-the-cur.patch with 96% similarity]
recipes/linux/linux-omap-psp-2.6.32/0032-ARM-VFP-preserve-the-HW-context-when-calling-signal-.patch [moved from recipes/linux/linux-omap-psp-2.6.32/0030-ARM-VFP-preserve-the-HW-context-when-calling-signal-.patch with 97% similarity]
recipes/linux/linux-omap-psp-2.6.32/0033-Switch-SGX-clocks-to-200MHz-on-DM37xx-OMAP36xx.patch [moved from recipes/linux/linux-omap-psp-2.6.32/0031-Switch-SGX-clocks-to-200MHz-on-DM37xx-OMAP36xx.patch with 88% similarity]
recipes/linux/linux-omap-psp-2.6.32/0034-modedb.c-add-proper-720p60-mode.patch [moved from recipes/linux/linux-omap-psp-2.6.32/0032-modedb.c-add-proper-720p60-mode.patch with 86% similarity]
recipes/linux/linux-omap-psp-2.6.32/0035-RTC-add-support-for-backup-battery-recharge.patch [moved from recipes/linux/linux-omap-psp-2.6.32/0033-RTC-add-support-for-backup-battery-recharge.patch with 92% similarity]
recipes/linux/linux-omap-psp-2.6.32/0036-ARM-Add-prompt-for-CONFIG_ALIGNMENT_TRAP.patch [moved from recipes/linux/linux-omap-psp-2.6.32/0034-ARM-Add-prompt-for-CONFIG_ALIGNMENT_TRAP.patch with 83% similarity]
recipes/linux/linux-omap-psp-2.6.32/0037-ARM-Print-warning-on-alignment-trap-in-kernel-mode.patch [moved from recipes/linux/linux-omap-psp-2.6.32/0035-ARM-Print-warning-on-alignment-trap-in-kernel-mode.patch with 86% similarity]
recipes/linux/linux-omap-psp-2.6.32/0038-ARM-Expose-some-CPU-control-registers-via-sysfs.patch [moved from recipes/linux/linux-omap-psp-2.6.32/0036-ARM-Expose-some-CPU-control-registers-via-sysfs.patch with 97% similarity]
recipes/linux/linux-omap-psp-2.6.32/0039-ARM-Add-option-to-allow-userspace-PLE-access.patch [moved from recipes/linux/linux-omap-psp-2.6.32/0037-ARM-Add-option-to-allow-userspace-PLE-access.patch with 91% similarity]
recipes/linux/linux-omap-psp-2.6.32/0040-ARM-Add-option-to-allow-userspace-access-to-performa.patch [moved from recipes/linux/linux-omap-psp-2.6.32/0038-ARM-Add-option-to-allow-userspace-access-to-performa.patch with 91% similarity]
recipes/linux/linux-omap-psp-2.6.32/0041-ARM-Expose-some-PMON-registers-through-sysfs.patch [moved from recipes/linux/linux-omap-psp-2.6.32/0039-ARM-Expose-some-PMON-registers-through-sysfs.patch with 90% similarity]
recipes/linux/linux-omap-psp-2.6.32/0042-musb-allow-host-io-without-gadget-module.patch [moved from recipes/linux/linux-omap-psp-2.6.32/0040-musb-allow-host-io-without-gadget-module.patch with 94% similarity]
recipes/linux/linux-omap-psp-2.6.32/0043-MTD-silence-ecc-errors-on-mtdblock0.patch [moved from recipes/linux/linux-omap-psp-2.6.32/0041-MTD-silence-ecc-errors-on-mtdblock0.patch with 94% similarity]
recipes/linux/linux-omap-psp-2.6.32/beagleboard/defconfig
recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0001-ARM-OMAP-add-spi-platform-devices.patch
recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0002-MMA7455L-accelerometer-driver.patch
recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0003-bq27x00_battery-remove-error-message-output.patch
recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0004-bq27x00_battery-add-charged-gpio.patch
recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0005-adf7846-add-more-debugging.patch
recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0006-ads7846-read-max-mix-x-y-from-pdata.patch
recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0007-ads7846-add-settling-delay-to-pdata.patch
recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0008-DSS2-OMAPFB-Translate-X-Y-coordinates-for-the-video-.patch
recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0009-DSS2-Fix-scaling-checks-when-rotation-is-90-or-270-d.patch [moved from recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0010-DSS2-Fix-scaling-checks-when-rotation-is-90-or-270-d.patch with 91% similarity]
recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0009-DSS2-fix-rotation-offsets.patch [deleted file]
recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0010-add-touchbook-hid-driver.patch [moved from recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0011-add-touchbook-hid-driver.patch with 98% similarity]
recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0011-Make-backlight-controls-accessible-to-users.patch [moved from recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0012-Make-backlight-controls-accessible-to-users.patch with 86% similarity]
recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0012-ads7846-don-t-error-out-when-there-s-no-pendown-gpio.patch [moved from recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0013-ads7846-don-t-error-out-when-there-s-no-pendown-gpio.patch with 85% similarity]
recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0013-ASoC-add-driver-for-omap3-touchbook.patch [moved from recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0014-ASoC-add-driver-for-omap3-touchbook.patch with 92% similarity]
recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0014-backlight-add-PWM-support.patch [moved from recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0015-backlight-add-PWM-support.patch with 96% similarity]
recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0015-Forward-port-TWL4030-BCI-driver-from-2.6.29-to-2.6.3.patch [new file with mode: 0644]
recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0016-ARM-OMAP-omap3-touchbook-update-boardfile.patch
recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0017-ARM-OMAP-add-800MHz-OPP-and-remove-125MHz-one.patch
recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/defconfig
recipes/linux/linux-omap-psp_2.6.32.bb

index 5e81a16..c406af1 100644 (file)
@@ -1,7 +1,7 @@
-From 6942ec9d19faef80770ae0f2302790d8ec73a9a7 Mon Sep 17 00:00:00 2001
+From 03e3ae2685bbd9586d520b0dd081593b814240b3 Mon Sep 17 00:00:00 2001
 From: Koen Kooi <koen@dominion.thruhere.net>
 Date: Fri, 30 Apr 2010 11:12:24 +0200
-Subject: [PATCH 01/45] Revert "omap3: beagle: Fix compile-time errors"
+Subject: [PATCH 01/43] Revert "omap3: beagle: Fix compile-time errors"
 
 This commit clashes with the other beagle patches we apply on top
 
index da4fc18..f016e0e 100644 (file)
@@ -1,7 +1,7 @@
-From c5438f97d0ace3b414b13ef59a58427b9fd5b94b Mon Sep 17 00:00:00 2001
+From ad2b9548c700dc424209e543d10ab14c848895a5 Mon Sep 17 00:00:00 2001
 From: Koen Kooi <k-kooi@ti.com>
 Date: Sat, 30 Jan 2010 15:49:15 +0100
-Subject: [PATCH 02/45] board-omap3touchbook: make it build against TI linux-omap 2.6.32-PSP
+Subject: [PATCH 02/43] board-omap3touchbook: make it build against TI linux-omap 2.6.32-PSP
 
 ---
  arch/arm/mach-omap2/board-omap3touchbook.c |   11 +++++++++--
index ba280ff..0e7a8b2 100644 (file)
@@ -1,7 +1,7 @@
-From 48e1df47cf683e4640ec3ae403b2e6dea7432d0c Mon Sep 17 00:00:00 2001
+From 95d7fc0cb0c4367c378ed640d6bb49ab6dc100dc Mon Sep 17 00:00:00 2001
 From: Steve Sakoman <sakoman@gmail.com>
 Date: Tue, 15 Dec 2009 15:34:29 -0800
-Subject: [PATCH 03/45] ARM: OMAP: add support for TCT Zippy to Beagle board file
+Subject: [PATCH 03/43] ARM: OMAP: add support for TCT Zippy to Beagle board file
 
 Signed-off-by: Steve Sakoman <sakoman@gmail.com>
 ---
index ab88739..f2ed191 100644 (file)
@@ -1,7 +1,7 @@
-From 97113a211c7fa07bc4fd34ea8fbe87551eec635d Mon Sep 17 00:00:00 2001
+From 7ca7040b3382fabbaa37dfda2c80cc4433b16d2e Mon Sep 17 00:00:00 2001
 From: Steve Sakoman <steve@sakoman.com>
 Date: Thu, 17 Dec 2009 12:40:24 -0800
-Subject: [PATCH 04/45] ARM: OMAP: Make beagle u-boot partition writable
+Subject: [PATCH 04/43] ARM: OMAP: Make beagle u-boot partition writable
 
 ---
  arch/arm/mach-omap2/board-omap3beagle.c |    1 -
index 01d9556..e9a1715 100644 (file)
@@ -1,7 +1,7 @@
-From 48e9baa773af0d99e5f9121da26bb92a391e2853 Mon Sep 17 00:00:00 2001
+From 8a3d9bff79f71a2733607e409f820e79142592d5 Mon Sep 17 00:00:00 2001
 From: Koen Kooi <koen@dominion.thruhere.net>
 Date: Wed, 10 Feb 2010 15:07:36 +0100
-Subject: [PATCH 05/45] board-omap3-beagle: add DSS2 support
+Subject: [PATCH 05/43] board-omap3-beagle: add DSS2 support
 
 ---
  arch/arm/mach-omap2/board-omap3beagle.c |  130 ++++++++++++++++++++++++-------
diff --git a/recipes/linux/linux-omap-psp-2.6.32/0006-beagleboard-omap3_-foo-_rate_table-omap35x_-foo-_rat.patch b/recipes/linux/linux-omap-psp-2.6.32/0006-beagleboard-omap3_-foo-_rate_table-omap35x_-foo-_rat.patch
deleted file mode 100644 (file)
index 4371aad..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-From 5be3bc924fbb66f7604763c617eecc4c5b009cb5 Mon Sep 17 00:00:00 2001
-From: Koen Kooi <k-kooi@ti.com>
-Date: Wed, 27 Jan 2010 21:57:13 +0100
-Subject: [PATCH 06/45] beagleboard: omap3_<foo>_rate_table -> omap35x_<foo>_rate_table
-
----
- arch/arm/mach-omap2/board-omap3beagle.c |    4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c
-index 3b7f6ec..1caaa01 100644
---- a/arch/arm/mach-omap2/board-omap3beagle.c
-+++ b/arch/arm/mach-omap2/board-omap3beagle.c
-@@ -502,8 +502,8 @@ static struct platform_device keys_gpio = {
- static void __init omap3_beagle_init_irq(void)
- {
-       omap2_init_common_hw(mt46h32m32lf6_sdrc_params,
--                           mt46h32m32lf6_sdrc_params, omap3_mpu_rate_table,
--                           omap3_dsp_rate_table, omap3_l3_rate_table);
-+                           mt46h32m32lf6_sdrc_params, omap35x_mpu_rate_table,
-+                           omap35x_dsp_rate_table, omap35x_l3_rate_table);
-       omap_init_irq();
- #ifdef CONFIG_OMAP_32K_TIMER
-       omap2_gp_clockevent_set_gptimer(12);
--- 
-1.6.6.1
-
@@ -1,16 +1,17 @@
-From 81f13d0f20e50503eb6baef9bb28a3ed2210154a Mon Sep 17 00:00:00 2001
+From 9f69d9bbab1d24da77864b48dbc5d8d4db9f4cdf Mon Sep 17 00:00:00 2001
 From: Koen Kooi <k-kooi@ti.com>
-Date: Mon, 8 Feb 2010 16:30:59 +0100
-Subject: [PATCH 07/45] board-omap3beagle: prepare for DM3730 based BeagleboardXM
+Date: Wed, 27 Jan 2010 21:57:13 +0100
+Subject: [PATCH 06/43] board-omap3beagle: prepare for DM3730 based BeagleboardXM
 
 * OPP changes copy/pasted from board-omap3evm.c
        * EHCI changes copy/pasted from Steve Kipisz' 2.6.33rcX work
+       * turn on power to camera on boot and add some comments
 ---
- arch/arm/mach-omap2/board-omap3beagle.c |   57 ++++++++++++++++++++++++++----
- 1 files changed, 49 insertions(+), 8 deletions(-)
+ arch/arm/mach-omap2/board-omap3beagle.c |   62 +++++++++++++++++++++++++++----
+ 1 files changed, 54 insertions(+), 8 deletions(-)
 
 diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c
-index 1caaa01..accf80d 100644
+index 3b7f6ec..429dacb 100644
 --- a/arch/arm/mach-omap2/board-omap3beagle.c
 +++ b/arch/arm/mach-omap2/board-omap3beagle.c
 @@ -53,6 +53,23 @@
@@ -37,16 +38,21 @@ index 1caaa01..accf80d 100644
  #define GPMC_CS0_BASE  0x60
  #define GPMC_CS_SIZE   0x30
  
-@@ -303,12 +320,23 @@ static int beagle_twl_gpio_setup(struct device *dev,
+@@ -303,12 +320,28 @@ static int beagle_twl_gpio_setup(struct device *dev,
         * power switch and overcurrent detect
         */
  
 -      gpio_request(gpio + 1, "EHCI_nOC");
 -      gpio_direction_input(gpio + 1);
 +      if (cpu_is_omap3630()) {
++              /* Power on DVI, Serial and PWR led */ 
 +              gpio_request(gpio + 1, "nDVI_PWR_EN");
 +              gpio_direction_output(gpio + 1, 0);     
 +
++              /* Power on camera interface */
++              gpio_request(gpio + 2, "CAM_EN");
++              gpio_direction_output(gpio + 2, 1);
++
 +              /* TWL4030_GPIO_MAX + 0 == ledA, EHCI nEN_USB_PWR (out, active low) */
 +              gpio_request(gpio + TWL4030_GPIO_MAX, "nEN_USB_PWR");
 +              gpio_direction_output(gpio + TWL4030_GPIO_MAX, 1);
@@ -66,13 +72,13 @@ index 1caaa01..accf80d 100644
  
        /* TWL4030_GPIO_MAX + 1 == ledB, PMU_STAT (out, active low LED) */
        gpio_leds[2].gpio = gpio + TWL4030_GPIO_MAX + 1;
-@@ -501,9 +529,22 @@ static struct platform_device keys_gpio = {
+@@ -501,9 +534,22 @@ static struct platform_device keys_gpio = {
  
  static void __init omap3_beagle_init_irq(void)
  {
 -      omap2_init_common_hw(mt46h32m32lf6_sdrc_params,
--                           mt46h32m32lf6_sdrc_params, omap35x_mpu_rate_table,
--                           omap35x_dsp_rate_table, omap35x_l3_rate_table);
+-                           mt46h32m32lf6_sdrc_params, omap3_mpu_rate_table,
+-                           omap3_dsp_rate_table, omap3_l3_rate_table);
 +        if (cpu_is_omap3630())
 +        {
 +                omap2_init_common_hw(mt46h32m32lf6_sdrc_params,
@@ -1,7 +1,7 @@
-From b6238a79746a5022969a5f780a6e51d794ab9c0c Mon Sep 17 00:00:00 2001
+From 32fb278553a4cd6126c1791d70aa33df12f73d90 Mon Sep 17 00:00:00 2001
 From: Koen Kooi <koen@dominion.thruhere.net>
 Date: Mon, 3 May 2010 14:41:29 +0200
-Subject: [PATCH 43/45] ARM: OMAP: beagleboard: Add infrastructure to do fixups based on expansionboard name passed by u-boot
+Subject: [PATCH 07/43] ARM: OMAP: beagleboard: Add infrastructure to do fixups based on expansionboard name passed by u-boot
 
 And add support for zippy2
 ---
@@ -9,7 +9,7 @@ And add support for zippy2
  1 files changed, 78 insertions(+), 10 deletions(-)
 
 diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c
-index 8dfb864..cb2c9c8 100644
+index 429dacb..ac96551 100644
 --- a/arch/arm/mach-omap2/board-omap3beagle.c
 +++ b/arch/arm/mach-omap2/board-omap3beagle.c
 @@ -75,6 +75,8 @@ static struct omap_opp * _omap37x_l3_rate_table         = NULL;
@@ -106,7 +106,7 @@ index 8dfb864..cb2c9c8 100644
                .transceiver    = true,
                .ocr_mask       = 0x00100000,   /* 3.3V */
        },
-@@ -606,7 +647,7 @@ static void __init omap3beagle_flash_init(void)
+@@ -601,7 +642,7 @@ static void __init omap3beagle_flash_init(void)
        }
  }
  
@@ -115,7 +115,7 @@ index 8dfb864..cb2c9c8 100644
  
        .port_mode[0] = EHCI_HCD_OMAP_MODE_PHY,
        .port_mode[1] = EHCI_HCD_OMAP_MODE_PHY,
-@@ -626,6 +667,15 @@ static struct omap_board_mux board_mux[] __initdata = {
+@@ -621,6 +662,15 @@ static struct omap_board_mux board_mux[] __initdata = {
  #define board_mux     NULL
  #endif
  
@@ -131,7 +131,7 @@ index 8dfb864..cb2c9c8 100644
  static void __init omap3_beagle_init(void)
  {
        omap3_mux_init(board_mux, OMAP_PACKAGE_CBB);
-@@ -639,8 +689,24 @@ static void __init omap3_beagle_init(void)
+@@ -634,8 +684,24 @@ static void __init omap3_beagle_init(void)
        /* REVISIT leave DVI powered down until it's needed ... */
        gpio_direction_output(170, true);
  
@@ -158,7 +158,7 @@ index 8dfb864..cb2c9c8 100644
        usb_musb_init();
        usb_ehci_init(&ehci_pdata);
        omap3beagle_flash_init();
-@@ -657,6 +723,8 @@ static void __init omap3_beagle_map_io(void)
+@@ -652,6 +718,8 @@ static void __init omap3_beagle_map_io(void)
        omap2_map_common_io();
  }
  
@@ -1,7 +1,7 @@
-From 1608895c3901aa1a857fb931d56054dec120d232 Mon Sep 17 00:00:00 2001
+From dec5927ff1ccda36cc982509c9a9e92ff9d49af7 Mon Sep 17 00:00:00 2001
 From: Koen Kooi <koen@dominion.thruhere.net>
 Date: Mon, 3 May 2010 21:38:34 +0200
-Subject: [PATCH 44/45] ARM: OMAP: beagleboard: pre-export GPIOs to userspace when using a Tincantools trainerboard
+Subject: [PATCH 08/43] ARM: OMAP: beagleboard: pre-export GPIOs to userspace when using a Tincantools trainerboard
 
 This really needs a for loop, patches welcome
 ---
@@ -9,10 +9,10 @@ This really needs a for loop, patches welcome
  1 files changed, 32 insertions(+), 1 deletions(-)
 
 diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c
-index cb2c9c8..4dbb109 100644
+index ac96551..c9af202 100644
 --- a/arch/arm/mach-omap2/board-omap3beagle.c
 +++ b/arch/arm/mach-omap2/board-omap3beagle.c
-@@ -706,7 +706,38 @@ static void __init omap3_beagle_init(void)
+@@ -701,7 +701,38 @@ static void __init omap3_beagle_init(void)
                mmc[1].gpio_wp = 141;
                mmc[1].gpio_cd = 162;
        }
diff --git a/recipes/linux/linux-omap-psp-2.6.32/0008-board-omap3beagle-turn-on-power-to-camera-on-boot-an.patch b/recipes/linux/linux-omap-psp-2.6.32/0008-board-omap3beagle-turn-on-power-to-camera-on-boot-an.patch
deleted file mode 100644 (file)
index a1ffaee..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-From e97c34409d2b503f695586f613a447799e98fea8 Mon Sep 17 00:00:00 2001
-From: Koen Kooi <k-kooi@ti.com>
-Date: Thu, 11 Feb 2010 20:23:01 +0100
-Subject: [PATCH 08/45] board-omap3beagle: turn on power to camera on boot and add some comments
-
----
- arch/arm/mach-omap2/board-omap3beagle.c |    5 +++++
- 1 files changed, 5 insertions(+), 0 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c
-index accf80d..429dacb 100644
---- a/arch/arm/mach-omap2/board-omap3beagle.c
-+++ b/arch/arm/mach-omap2/board-omap3beagle.c
-@@ -321,9 +321,14 @@ static int beagle_twl_gpio_setup(struct device *dev,
-        */
-       if (cpu_is_omap3630()) {
-+              /* Power on DVI, Serial and PWR led */ 
-               gpio_request(gpio + 1, "nDVI_PWR_EN");
-               gpio_direction_output(gpio + 1, 0);     
-+              /* Power on camera interface */
-+              gpio_request(gpio + 2, "CAM_EN");
-+              gpio_direction_output(gpio + 2, 1);
-+
-               /* TWL4030_GPIO_MAX + 0 == ledA, EHCI nEN_USB_PWR (out, active low) */
-               gpio_request(gpio + TWL4030_GPIO_MAX, "nEN_USB_PWR");
-               gpio_direction_output(gpio + TWL4030_GPIO_MAX, 1);
--- 
-1.6.6.1
-
@@ -1,17 +1,17 @@
-From 5544b0a8c422e75c5d372232b494a4652008f048 Mon Sep 17 00:00:00 2001
+From 7305c83476fe90a1368f647b7a5e5eba924b6f55 Mon Sep 17 00:00:00 2001
 From: Koen Kooi <koen@dominion.thruhere.net>
 Date: Mon, 3 May 2010 22:31:34 +0200
-Subject: [PATCH 45/45] ARM: OMAP: beagleboard: initialize ds1307 and eeprom only for zippy and zippy2
+Subject: [PATCH 09/43] ARM: OMAP: beagleboard: initialize ds1307 and eeprom only for zippy and zippy2
 
 ---
  arch/arm/mach-omap2/board-omap3beagle.c |   39 +++++++++++++++++++++++++++---
  1 files changed, 35 insertions(+), 4 deletions(-)
 
 diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c
-index 4dbb109..dd830b1 100644
+index c9af202..b3c8cb7 100644
 --- a/arch/arm/mach-omap2/board-omap3beagle.c
 +++ b/arch/arm/mach-omap2/board-omap3beagle.c
-@@ -501,24 +501,55 @@ static struct i2c_board_info __initdata beagle_i2c1_boardinfo[] = {
+@@ -496,24 +496,55 @@ static struct i2c_board_info __initdata beagle_i2c1_boardinfo[] = {
        },
  };
  
@@ -1,7 +1,7 @@
-From 6373a5aa34efdf0a938a585ded13ad111a1c2466 Mon Sep 17 00:00:00 2001
+From 98b6d38691e00f56a6428768eb042a8f42c2fe41 Mon Sep 17 00:00:00 2001
 From: Koen Kooi <koen@dominion.thruhere.net>
 Date: Tue, 27 Apr 2010 10:51:15 +0200
-Subject: [PATCH 42/45] ARM: OMAP: update beagleboard defconfig
+Subject: [PATCH 10/43] ARM: OMAP: update beagleboard defconfig
 
 ---
  arch/arm/configs/omap3_beagle_defconfig | 2514 +++++++++++++++++++++++++------
@@ -1,7 +1,7 @@
-From e2bfc6c60fc749e939839a00abc0583bea9af857 Mon Sep 17 00:00:00 2001
+From a27b4854330f9f7430c757bd5b4476fb85bae6c6 Mon Sep 17 00:00:00 2001
 From: Steve Sakoman <steve@sakoman.com>
 Date: Thu, 17 Dec 2009 12:45:20 -0800
-Subject: [PATCH 09/45] ASoC: enable audio capture by default for twl4030
+Subject: [PATCH 11/43] ASoC: enable audio capture by default for twl4030
 
 ---
  sound/soc/codecs/twl4030.c |    4 ++--
@@ -1,7 +1,7 @@
-From 5a6b395ade97b7b4315615ad48b8a467e1214c96 Mon Sep 17 00:00:00 2001
+From 6ea180bb9b73b36b5b3ff47fdd1d3d0194ee03c1 Mon Sep 17 00:00:00 2001
 From: Steve Sakoman <steve@sakoman.com>
 Date: Thu, 31 Dec 2009 07:05:02 -0800
-Subject: [PATCH 10/45] MTD: NAND: omap2: proper fix for subpage read ECC errors
+Subject: [PATCH 12/43] MTD: NAND: omap2: proper fix for subpage read ECC errors
 
 ---
  drivers/mtd/nand/omap2.c |   11 +++++++----
@@ -1,7 +1,7 @@
-From 42ca6429f4c2b385064c239dc9a3244efef625b0 Mon Sep 17 00:00:00 2001
+From 83006da4037e890d5c4eec9f5fe0e8d0ea4af44b Mon Sep 17 00:00:00 2001
 From: Sudeep Basavaraj <sudeep.basavaraj@ti.com>
 Date: Tue, 5 Jan 2010 18:58:18 +0530
-Subject: [PATCH 11/45] OMAP3630:DSS2:Enable Pre-Multiplied Alpha Support
+Subject: [PATCH 13/43] OMAP3630:DSS2:Enable Pre-Multiplied Alpha Support
 
 Enables dss to process color formats with pre-mulitplied alpha values.
 With this we can have alpha values defined for each pixel
@@ -1,7 +1,7 @@
-From d712e54a547b0800e6b482c43b5e6f8ca3f032de Mon Sep 17 00:00:00 2001
+From da46218c8e601d44ab125bd7dc27af93a8b21e5b Mon Sep 17 00:00:00 2001
 From: Steve Sakoman <steve@sakoman.com>
 Date: Tue, 19 Jan 2010 21:19:15 -0800
-Subject: [PATCH 12/45] DSS2: add bootarg for selecting svideo or composite for tv output
+Subject: [PATCH 14/43] DSS2: add bootarg for selecting svideo or composite for tv output
 
 also add pal-16 and ntsc-16 omapfb.mode settings for 16bpp
 ---
@@ -10,7 +10,7 @@ also add pal-16 and ntsc-16 omapfb.mode settings for 16bpp
  2 files changed, 31 insertions(+), 1 deletions(-)
 
 diff --git a/drivers/video/omap2/dss/venc.c b/drivers/video/omap2/dss/venc.c
-index 749a5a0..14aa721 100644
+index 1127e85..53fa54e 100644
 --- a/drivers/video/omap2/dss/venc.c
 +++ b/drivers/video/omap2/dss/venc.c
 @@ -87,6 +87,11 @@
@@ -25,7 +25,7 @@ index 749a5a0..14aa721 100644
  struct venc_config {
        u32 f_control;
        u32 vidout_ctrl;
-@@ -409,6 +414,23 @@ static int venc_panel_probe(struct omap_dss_device *dssdev)
+@@ -430,6 +435,23 @@ static int venc_panel_probe(struct omap_dss_device *dssdev)
  {
        dssdev->panel.timings = omap_dss_pal_timings;
  
@@ -50,10 +50,10 @@ index 749a5a0..14aa721 100644
  }
  
 diff --git a/drivers/video/omap2/omapfb/omapfb-main.c b/drivers/video/omap2/omapfb/omapfb-main.c
-index 340ab51..c2c9663 100644
+index ef29983..015831b 100644
 --- a/drivers/video/omap2/omapfb/omapfb-main.c
 +++ b/drivers/video/omap2/omapfb/omapfb-main.c
-@@ -1988,7 +1988,15 @@ static int omapfb_mode_to_timings(const char *mode_str,
+@@ -1961,7 +1961,15 @@ static int omapfb_mode_to_timings(const char *mode_str,
        int r;
  
  #ifdef CONFIG_OMAP2_DSS_VENC
@@ -1,7 +1,7 @@
-From 4f99b5658cbee7a09fd4cb2887d0e42dc4c70371 Mon Sep 17 00:00:00 2001
+From 77eaef7dfa42ecf2fbf66e95bc1e4642bf52c989 Mon Sep 17 00:00:00 2001
 From: Koen Kooi <k-kooi@ti.com>
 Date: Thu, 11 Feb 2010 21:34:00 +0100
-Subject: [PATCH 13/45] ISP: add some more from Leopard imaging patch
+Subject: [PATCH 15/43] ISP: add some more from Leopard imaging patch
 
 ---
  drivers/media/video/isp/isppreview.c |   16 ++++++++-
@@ -1,7 +1,7 @@
-From df2fe69fb08d6784975744c2723b33892526c60c Mon Sep 17 00:00:00 2001
+From 0f494c3545ebbc375a7241ede3aa0db33295bebe Mon Sep 17 00:00:00 2001
 From: Steve Sakoman <sakoman@gmail.com>
 Date: Tue, 15 Dec 2009 14:59:42 -0800
-Subject: [PATCH 14/45] ARM: OMAP: Overo: Add support for second ethernet port
+Subject: [PATCH 16/43] ARM: OMAP: Overo: Add support for second ethernet port
 
 Signed-off-by: Steve Sakoman <sakoman@gmail.com>
 ---
@@ -1,7 +1,7 @@
-From 25665d81b2b42e6ad9cb3a976af4ff792018b321 Mon Sep 17 00:00:00 2001
+From e6b2441d2d92a62cf30dfde9451bdaebf6a2cee0 Mon Sep 17 00:00:00 2001
 From: Steve Sakoman <sakoman@gmail.com>
 Date: Tue, 15 Dec 2009 15:17:44 -0800
-Subject: [PATCH 15/45] drivers: net: smsc911x: return ENODEV if device is not found
+Subject: [PATCH 17/43] drivers: net: smsc911x: return ENODEV if device is not found
 
 Signed-off-by: Steve Sakoman <sakoman@gmail.com>
 ---
@@ -1,7 +1,7 @@
-From 0a74491985cab287962c0243565e78600b86c894 Mon Sep 17 00:00:00 2001
+From 551a2a661a3b55820560a30fb19c6df10086b91f Mon Sep 17 00:00:00 2001
 From: Steve Sakoman <sakoman@gmail.com>
 Date: Tue, 15 Dec 2009 15:24:10 -0800
-Subject: [PATCH 16/45] drivers: input: touchscreen: ads7846: return ENODEV if device is not found
+Subject: [PATCH 18/43] drivers: input: touchscreen: ads7846: return ENODEV if device is not found
 
 Signed-off-by: Steve Sakoman <sakoman@gmail.com>
 ---
@@ -1,7 +1,7 @@
-From 294e88638b891322998deb9154f4babd024732d3 Mon Sep 17 00:00:00 2001
+From c9ff40a9288c0cbac9d10b14ae05db1bdba71a53 Mon Sep 17 00:00:00 2001
 From: Steve Sakoman <steve@sakoman.com>
 Date: Thu, 17 Dec 2009 14:19:34 -0800
-Subject: [PATCH 17/45] drivers: mfd: add twl4030 madc driver
+Subject: [PATCH 19/43] drivers: mfd: add twl4030 madc driver
 
 ---
  drivers/mfd/Kconfig        |   21 ++
@@ -1,7 +1,7 @@
-From 3d9fb5ea6d899ad50dadd8ec0a4004077425916b Mon Sep 17 00:00:00 2001
+From 9b4c740531916992ba11be300250d51e2e2a1638 Mon Sep 17 00:00:00 2001
 From: Steve Sakoman <steve@sakoman.com>
 Date: Thu, 17 Dec 2009 15:54:58 -0800
-Subject: [PATCH 18/45] ARM: OMAP: Add missing twl4030 madc header file
+Subject: [PATCH 20/43] ARM: OMAP: Add missing twl4030 madc header file
 
 ---
  include/linux/i2c/twl4030-madc.h |  130 ++++++++++++++++++++++++++++++++++++++
@@ -1,7 +1,7 @@
-From c4ff1cf23fc3bf33b3f9b91591af7146f5391b3f Mon Sep 17 00:00:00 2001
+From 9957678090f6e4bee24dca76b668b4daec02d88c Mon Sep 17 00:00:00 2001
 From: Steve Sakoman <steve@sakoman.com>
 Date: Thu, 17 Dec 2009 14:27:15 -0800
-Subject: [PATCH 19/45] ARM: OMAP: Add twl4030 madc support to Overo
+Subject: [PATCH 21/43] ARM: OMAP: Add twl4030 madc support to Overo
 
 ---
  arch/arm/mach-omap2/board-overo.c |    5 +++++
@@ -1,17 +1,17 @@
-From 4721d7878b3bb28e83d245cd3014b11f6e289126 Mon Sep 17 00:00:00 2001
+From 1e7a9e815e97782f4aa69b27822fe1664faf7fd4 Mon Sep 17 00:00:00 2001
 From: Steve Sakoman <steve@sakoman.com>
 Date: Thu, 17 Dec 2009 14:32:36 -0800
-Subject: [PATCH 20/45] ARM: OMAP: Add twl4030 madc support to Beagle
+Subject: [PATCH 22/43] ARM: OMAP: Add twl4030 madc support to Beagle
 
 ---
  arch/arm/mach-omap2/board-omap3beagle.c |    5 +++++
  1 files changed, 5 insertions(+), 0 deletions(-)
 
 diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c
-index 429dacb..8dfb864 100644
+index b3c8cb7..dd830b1 100644
 --- a/arch/arm/mach-omap2/board-omap3beagle.c
 +++ b/arch/arm/mach-omap2/board-omap3beagle.c
-@@ -432,6 +432,10 @@ static struct twl4030_codec_data beagle_codec_data = {
+@@ -473,6 +473,10 @@ static struct twl4030_codec_data beagle_codec_data = {
        .audio = &beagle_audio_data,
  };
  
@@ -22,7 +22,7 @@ index 429dacb..8dfb864 100644
  static struct twl4030_platform_data beagle_twldata = {
        .irq_base       = TWL4030_IRQ_BASE,
        .irq_end        = TWL4030_IRQ_END,
-@@ -440,6 +444,7 @@ static struct twl4030_platform_data beagle_twldata = {
+@@ -481,6 +485,7 @@ static struct twl4030_platform_data beagle_twldata = {
        .usb            = &beagle_usb_data,
        .gpio           = &beagle_gpio_data,
        .codec          = &beagle_codec_data,
@@ -1,7 +1,7 @@
-From 73457855345b6e0da83e1d452c4cb0cb28fbef34 Mon Sep 17 00:00:00 2001
+From b7fda334f7a394647422f58b91b4890dc72b1c30 Mon Sep 17 00:00:00 2001
 From: Steve Sakoman <steve@sakoman.com>
 Date: Tue, 19 Jan 2010 20:00:46 -0800
-Subject: [PATCH 21/45] netdev: rt73usb - add vendor/device ID for Ceiva Wireless PartNo 81726-00702
+Subject: [PATCH 23/43] netdev: rt73usb - add vendor/device ID for Ceiva Wireless PartNo 81726-00702
 
 ---
  drivers/net/wireless/rt2x00/rt73usb.c |    2 ++
@@ -1,7 +1,7 @@
-From aa0048368802d454253b847df33a3ef191ed5f1b Mon Sep 17 00:00:00 2001
+From 7f87d1531cfdbf4fcd59bc8502e45d3aea8c8eba Mon Sep 17 00:00:00 2001
 From: Steve Sakoman <steve@sakoman.com>
 Date: Mon, 4 Jan 2010 19:20:25 -0800
-Subject: [PATCH 22/45] mmc: don't display single block read console messages
+Subject: [PATCH 24/43] mmc: don't display single block read console messages
 
 mmc: don't display single block read console messages
 ---
@@ -1,7 +1,7 @@
-From 4740a7121cbdffcc3e0a7ff26cdf08bde85d7fc7 Mon Sep 17 00:00:00 2001
+From f715b7b9f49e4a65ba5370cb36ce6f2c7830d1bc Mon Sep 17 00:00:00 2001
 From: Steve Sakoman <steve@sakoman.com>
 Date: Sun, 24 Jan 2010 09:33:56 -0800
-Subject: [PATCH 23/45] ARM: OMAP2: mmc-twl4030: move clock input selection prior to vcc test
+Subject: [PATCH 25/43] ARM: OMAP2: mmc-twl4030: move clock input selection prior to vcc test
 
 otherwise it is not executed on systems that use non-twl regulators
 ---
@@ -1,7 +1,7 @@
-From 84a0b05b8149345c87181c74a63a27b0321f5e7f Mon Sep 17 00:00:00 2001
+From caa6d93d406fa836c8af84268f0ed7391434f1ee Mon Sep 17 00:00:00 2001
 From: Koen Kooi <koen@dominion.thruhere.net>
 Date: Sun, 14 Feb 2010 12:52:02 +0100
-Subject: [PATCH 24/45] board-overo: add PM code and sync with http://www.sakoman.com/cgi-bin/gitweb.cgi?p=linux-omap-2.6.git;a=shortlog;h=refs/heads/omap3-2.6.32
+Subject: [PATCH 26/43] board-overo: add PM code and sync with http://www.sakoman.com/cgi-bin/gitweb.cgi?p=linux-omap-2.6.git;a=shortlog;h=refs/heads/omap3-2.6.32
 
 ---
  arch/arm/mach-omap2/board-overo.c |  274 ++++++++++++++++++++++++++++++++-----
@@ -1,7 +1,7 @@
-From da8a517444cdf8b89e9beb9407dd2c7903393d61 Mon Sep 17 00:00:00 2001
+From f308badab37377503a387db2c0153c0a9c71ff7f Mon Sep 17 00:00:00 2001
 From: Koen Kooi <koen@dominion.thruhere.net>
 Date: Mon, 15 Feb 2010 14:20:51 +0100
-Subject: [PATCH 25/45] twl4030-madc: adjust for twl4030 -> twl api changes
+Subject: [PATCH 27/43] twl4030-madc: adjust for twl4030 -> twl api changes
 
 ---
  drivers/mfd/twl4030-madc.c |   18 +++++++++---------
@@ -1,7 +1,7 @@
-From 6543717ed765f9f5cd981a88507f18b73e9d9c13 Mon Sep 17 00:00:00 2001
+From 821a796dba3b5f1745d3ff990b14995bd691a8e3 Mon Sep 17 00:00:00 2001
 From: Koen Kooi <koen@dominion.thruhere.net>
 Date: Mon, 15 Feb 2010 14:38:00 +0100
-Subject: [PATCH 26/45] OMAP: DSS2: (Re)add support for Samsung lte430wq-f0c panel
+Subject: [PATCH 28/43] OMAP: DSS2: (Re)add support for Samsung lte430wq-f0c panel
 
 ---
  drivers/video/omap2/displays/Kconfig               |    6 +
@@ -1,7 +1,7 @@
-From c5a8cc3beb2784fd3851d758ddc8e74b8e0c09ac Mon Sep 17 00:00:00 2001
+From d65c7d454ff43f8955f23f324a24adf7e2d4edff Mon Sep 17 00:00:00 2001
 From: Steve Sakoman <steve@sakoman.com>
 Date: Thu, 17 Dec 2009 15:05:30 -0800
-Subject: [PATCH 27/45] OMAP: DSS2: Add support for LG Philips LB035Q02 panel
+Subject: [PATCH 29/43] OMAP: DSS2: Add support for LG Philips LB035Q02 panel
 
 ---
  drivers/video/omap2/displays/Kconfig               |    6 +
@@ -1,7 +1,7 @@
-From 103d5a963c4f05d0fa454551469ddef334cb9d23 Mon Sep 17 00:00:00 2001
+From c6c2fc6a66a56256bb2fe015fb07b062666ee246 Mon Sep 17 00:00:00 2001
 From: Kishore Kadiyala <kishore.kadiyala@ti.com>
 Date: Wed, 17 Feb 2010 19:34:47 +0530
-Subject: [PATCH 28/45] Fix for bus width which improves SD card's peformance.
+Subject: [PATCH 30/43] Fix for bus width which improves SD card's peformance.
 
 This patch fixes bus width which improves peformance for SD cards.
 OMAP-MMC controller's can support maximum bus width of '8'.
@@ -1,7 +1,7 @@
-From 3381ab702c3798c039f294ed06e3da2e8f62009a Mon Sep 17 00:00:00 2001
+From d3c14324b23c6cef8452a9a6037b6ec2a6f07d6e Mon Sep 17 00:00:00 2001
 From: Imre Deak <imre.deak@nokia.com>
 Date: Thu, 4 Feb 2010 21:38:02 +0200
-Subject: [PATCH 29/45] ARM: VFP: add support to sync the VFP state of the current thread
+Subject: [PATCH 31/43] ARM: VFP: add support to sync the VFP state of the current thread
 
 ARM: VFP: add support to sync the VFP state of the current thread
 
@@ -1,7 +1,7 @@
-From bdd0431478907155b3180a3c8e1cbee720bfe7ec Mon Sep 17 00:00:00 2001
+From 59c9e3b77e82affd2ab0233af06a47473f991996 Mon Sep 17 00:00:00 2001
 From: Imre Deak <imre.deak@nokia.com>
 Date: Thu, 4 Feb 2010 21:38:30 +0200
-Subject: [PATCH 30/45] ARM: VFP: preserve the HW context when calling signal handlers
+Subject: [PATCH 32/43] ARM: VFP: preserve the HW context when calling signal handlers
 
 ARM: VFP: preserve the HW context when calling signal handlers
 
@@ -1,7 +1,7 @@
-From e46009db99b4f65a3173521d19e94aaa48e75a33 Mon Sep 17 00:00:00 2001
+From b9e50cb8ee8ad92d71b65bd71700be1894f9e543 Mon Sep 17 00:00:00 2001
 From: Prabindh Sundareson <prabu@ti.com>
 Date: Wed, 3 Mar 2010 15:45:35 +0100
-Subject: [PATCH 31/45] Switch SGX clocks to 200MHz on DM37xx/OMAP36xx
+Subject: [PATCH 33/43] Switch SGX clocks to 200MHz on DM37xx/OMAP36xx
 
 ---
  arch/arm/mach-omap2/clock34xx_data.c |    4 ++--
@@ -1,7 +1,7 @@
-From 434d6d660b3988cdb096292c8c0ec51de2eea723 Mon Sep 17 00:00:00 2001
+From fd8be8ca22b19d58202ef84cc27d0f14d2f59e2a Mon Sep 17 00:00:00 2001
 From: Koen Kooi <koen@dominion.thruhere.net>
 Date: Mon, 8 Mar 2010 14:38:31 +0100
-Subject: [PATCH 32/45] modedb.c: add proper 720p60 mode
+Subject: [PATCH 34/43] modedb.c: add proper 720p60 mode
 
 ---
  drivers/video/modedb.c |    4 ++++
@@ -1,7 +1,7 @@
-From 25052ae67a0c5be9dea6f3e225b23dd3e7566d77 Mon Sep 17 00:00:00 2001
+From 02203232a3230c06a1bc939c92aac7e910c5d578 Mon Sep 17 00:00:00 2001
 From: Steve Sakoman <steve@sakoman.com>
 Date: Thu, 4 Feb 2010 12:26:22 -0800
-Subject: [PATCH 33/45] RTC: add support for backup battery recharge
+Subject: [PATCH 35/43] RTC: add support for backup battery recharge
 
 ---
  drivers/rtc/rtc-twl.c |   25 +++++++++++++++++++++++++
@@ -1,7 +1,7 @@
-From ca92b0b90ed5ebd14a6ad29d9a0c858274f7f566 Mon Sep 17 00:00:00 2001
+From 1bd440f727d2ce1a9673489b776e38e1b4dd0521 Mon Sep 17 00:00:00 2001
 From: Mans Rullgard <mans@mansr.com>
 Date: Mon, 13 Oct 2008 20:32:16 +0100
-Subject: [PATCH 34/45] ARM: Add prompt for CONFIG_ALIGNMENT_TRAP
+Subject: [PATCH 36/43] ARM: Add prompt for CONFIG_ALIGNMENT_TRAP
 
 This adds a prompt text for CONFIG_ALIGNMENT_TRAP, thus making it
 visible in make *config.
@@ -1,7 +1,7 @@
-From 7100b98fc3ad8bff74f3469ac5257c7c500c525c Mon Sep 17 00:00:00 2001
+From f1f418ef2fd457872e4ca7da1789bcfd8f97bca8 Mon Sep 17 00:00:00 2001
 From: Mans Rullgard <mans@mansr.com>
 Date: Sat, 28 Mar 2009 13:21:55 +0000
-Subject: [PATCH 35/45] ARM: Print warning on alignment trap in kernel mode
+Subject: [PATCH 37/43] ARM: Print warning on alignment trap in kernel mode
 
 Signed-off-by: Mans Rullgard <mans@mansr.com>
 ---
@@ -1,7 +1,7 @@
-From eb05553047988e84a6be8d1548efbcb43ccbb13b Mon Sep 17 00:00:00 2001
+From bbc04eff26fcd9ecb75069a62a84fa49d83811b8 Mon Sep 17 00:00:00 2001
 From: Mans Rullgard <mans@mansr.com>
 Date: Tue, 10 Nov 2009 00:39:21 +0000
-Subject: [PATCH 36/45] ARM: Expose some CPU control registers via sysfs
+Subject: [PATCH 38/43] ARM: Expose some CPU control registers via sysfs
 
 This creates sysfs files under /sys/devices/system/cpu/cpuN
 exposing the values of the control register, auxiliary control
@@ -1,7 +1,7 @@
-From 84296cfee5a95613be6dd32467b7c0766174d9f6 Mon Sep 17 00:00:00 2001
+From 7ba11a1ce9a6dc90dd17aeff30127217fa604ecf Mon Sep 17 00:00:00 2001
 From: Mans Rullgard <mans@mansr.com>
 Date: Tue, 10 Nov 2009 00:41:54 +0000
-Subject: [PATCH 37/45] ARM: Add option to allow userspace PLE access
+Subject: [PATCH 39/43] ARM: Add option to allow userspace PLE access
 
 This adds a Kconfig option to allow userspace to access the L2 preload
 engine (PLE) found in Cortex-A8.
@@ -1,7 +1,7 @@
-From fd47acba386ae20539816664f6be3fdc5602b93d Mon Sep 17 00:00:00 2001
+From 7a20711022052ffe2a563f83e8645712919234ba Mon Sep 17 00:00:00 2001
 From: Mans Rullgard <mans@mansr.com>
 Date: Tue, 10 Nov 2009 00:52:56 +0000
-Subject: [PATCH 38/45] ARM: Add option to allow userspace access to performance counters
+Subject: [PATCH 40/43] ARM: Add option to allow userspace access to performance counters
 
 This adds an option to allow userspace access to the performance monitor
 registers of the Cortex-A8.
@@ -1,7 +1,7 @@
-From 887cd41fff0c399086a06e38a734bc0f14006b82 Mon Sep 17 00:00:00 2001
+From b8ceea553dcf1d4657e3cb792ead9bdf03ab64e8 Mon Sep 17 00:00:00 2001
 From: Mans Rullgard <mans@mansr.com>
 Date: Sat, 28 Mar 2009 13:05:02 +0000
-Subject: [PATCH 39/45] ARM: Expose some PMON registers through sysfs
+Subject: [PATCH 41/43] ARM: Expose some PMON registers through sysfs
 
 ---
  arch/arm/kernel/sysfs_v7.c |   11 +++++++++++
@@ -1,7 +1,7 @@
-From e33724530848154c9302a720427bd46bf8a6700c Mon Sep 17 00:00:00 2001
+From f769159cae4d1ae42589d180ac8a376ac3ad687f Mon Sep 17 00:00:00 2001
 From: Ajay Kumar Gupta <ajay.gupta@ti.com>
 Date: Wed, 14 Apr 2010 16:08:37 +0530
-Subject: [PATCH 40/45] musb: allow host io without gadget module
+Subject: [PATCH 42/43] musb: allow host io without gadget module
 
 Signed-off-by: Ajay Kumar Gupta <ajay.gupta@ti.com>
 ---
@@ -10,7 +10,7 @@ Signed-off-by: Ajay Kumar Gupta <ajay.gupta@ti.com>
  2 files changed, 9 insertions(+), 31 deletions(-)
 
 diff --git a/drivers/usb/musb/musb_core.c b/drivers/usb/musb/musb_core.c
-index 7ed7f6a..649b689 100644
+index 98874c5..a448fa6 100644
 --- a/drivers/usb/musb/musb_core.c
 +++ b/drivers/usb/musb/musb_core.c
 @@ -2101,10 +2101,12 @@ bad_config:
@@ -1,7 +1,7 @@
-From 538a454d07c8524ebb5db6d47be9eac0e0292575 Mon Sep 17 00:00:00 2001
+From 9bd77da63888873c8ebb0c6a70835f2c432a0337 Mon Sep 17 00:00:00 2001
 From: Steve Sakoman <steve@sakoman.com>
 Date: Mon, 26 Apr 2010 11:17:26 -0700
-Subject: [PATCH 41/45] MTD: silence ecc errors on mtdblock0
+Subject: [PATCH 43/43] MTD: silence ecc errors on mtdblock0
 
 mtdblock0 is the x-load partition, which uses hw ecc
 this confuses linux, which uses sw ecc
index a2aeee4..86ed6c9 100644 (file)
@@ -267,7 +267,7 @@ CONFIG_OMAP_PACKAGE_CBB=y
 CONFIG_MACH_OMAP3_BEAGLE=y
 # CONFIG_MACH_OMAP_LDP is not set
 # CONFIG_MACH_OVERO is not set
-CONFIG_MACH_OMAP3EVM=y
+CONFIG_MACH_OMAP3EVM=n
 CONFIG_PMIC_TWL4030=y
 # CONFIG_MACH_OMAP3517EVM is not set
 # CONFIG_MACH_OMAP3_PANDORA is not set
index 70d9b00..8988fd8 100644 (file)
@@ -1,7 +1,7 @@
-From 512af40b0efa98d9a7a5596fe6b19600d89a58dd Mon Sep 17 00:00:00 2001
+From 0031d3fb2d067f4c46e434f5f5c6c14cef2a83a3 Mon Sep 17 00:00:00 2001
 From: Tim Yamin <plasm@roo.me.uk>
 Date: Sat, 11 Apr 2009 13:05:21 -0700
-Subject: [PATCH 01/16] ARM: OMAP: add spi platform devices
+Subject: [PATCH 01/17] ARM: OMAP: add spi platform devices
 
 ---
  arch/arm/mach-omap2/devices.c |   32 ++++++++++++++++++++++++++++++++
index c6cf13c..f9c7702 100644 (file)
@@ -1,7 +1,7 @@
-From f02cd8da4f4dc269b83128e2c42ab664e6619ef8 Mon Sep 17 00:00:00 2001
+From 0c804b06c04a14da575d592c89408537c21fb26b Mon Sep 17 00:00:00 2001
 From: Tim Yamin <plasm@roo.me.uk>
 Date: Tue, 23 Mar 2010 09:52:10 +0100
-Subject: [PATCH 02/16] MMA7455L accelerometer driver
+Subject: [PATCH 02/17] MMA7455L accelerometer driver
 
 ---
  drivers/input/misc/Kconfig    |    9 +
index bd1a50b..f8b307e 100644 (file)
@@ -1,7 +1,7 @@
-From df5573b7c2ed7b0e31be60bddc6b9bc928e78bfe Mon Sep 17 00:00:00 2001
+From 6837800d92947d25e263bf041ebe7db4e804af68 Mon Sep 17 00:00:00 2001
 From: Gregoire Gentil <gregoire@gentil.com>
 Date: Fri, 12 Mar 2010 11:41:17 +0100
-Subject: [PATCH 03/16] bq27x00_battery: remove error message output
+Subject: [PATCH 03/17] bq27x00_battery: remove error message output
 
 ---
  drivers/power/bq27x00_battery.c |    5 -----
index 6f871ce..759525f 100644 (file)
@@ -1,7 +1,7 @@
-From e1869b08e330d50fd0b57cf0f9ee86eb24d83ec3 Mon Sep 17 00:00:00 2001
+From 829d500667448b7ea9465615261a988adc3aa645 Mon Sep 17 00:00:00 2001
 From: Gregoire Gentil <gregoire@gentil.com>
 Date: Fri, 12 Mar 2010 11:42:45 +0100
-Subject: [PATCH 04/16] bq27x00_battery: add charged gpio
+Subject: [PATCH 04/17] bq27x00_battery: add charged gpio
 
 ---
  drivers/power/bq27x00_battery.c |   21 +++++++++++++++++++++
index a9903ea..f15e0a2 100644 (file)
@@ -1,7 +1,7 @@
-From 0b859f934499c20b71b7c40fe356ab1c53bf7ade Mon Sep 17 00:00:00 2001
+From e00ae0c0fa35b4b67bbc905581c2c7bde0e29901 Mon Sep 17 00:00:00 2001
 From: Gregoire Gentil <gregoire@gentil.com>
 Date: Fri, 12 Mar 2010 13:50:38 +0100
-Subject: [PATCH 05/16] adf7846: add more debugging
+Subject: [PATCH 05/17] adf7846: add more debugging
 
 ---
  drivers/input/touchscreen/ads7846.c |   73 +++++++++++++++++++++++++++++++++++
index fff70be..63a4ebb 100644 (file)
@@ -1,7 +1,7 @@
-From 8ccf65bc56ba2f71a4420754969b522fd86945a2 Mon Sep 17 00:00:00 2001
+From 5f227b8aa6083437e2907ca621159228a4a24d9a Mon Sep 17 00:00:00 2001
 From: Gregoire Gentil <gregoire@gentil.com>
 Date: Fri, 12 Mar 2010 13:50:45 +0100
-Subject: [PATCH 06/16] ads7846: read max/mix x/y from pdata
+Subject: [PATCH 06/17] ads7846: read max/mix x/y from pdata
 
 ---
  drivers/input/touchscreen/ads7846.c |    5 +++--
index 5994529..a69c783 100644 (file)
@@ -1,7 +1,7 @@
-From 68e4eb5c9690531fa04cc9e0621854b03369d78b Mon Sep 17 00:00:00 2001
+From 7330c695afad64eef62c525cb8e54913265a3b39 Mon Sep 17 00:00:00 2001
 From: Gregoire Gentil <gregoire@gentil.com>
 Date: Fri, 12 Mar 2010 13:50:52 +0100
-Subject: [PATCH 07/16] ads7846: add settling delay to pdata
+Subject: [PATCH 07/17] ads7846: add settling delay to pdata
 
 ---
  drivers/input/touchscreen/ads7846.c |   22 ++++++++++++++++++++++
index db1d7a6..5d6ff3f 100644 (file)
@@ -1,7 +1,7 @@
-From b5fbb6c23770e496250e5cbdaad7b7b6120b86af Mon Sep 17 00:00:00 2001
+From 07396a332c4f3d6ed4ff498cb08d0338c98dc612 Mon Sep 17 00:00:00 2001
 From: Tim Yamin <plasm@roo.me.uk>
 Date: Mon, 20 Apr 2009 20:29:11 -0700
-Subject: [PATCH 08/16] DSS2: OMAPFB: Translate X/Y coordinates for the video planes when rotating.
+Subject: [PATCH 08/17] DSS2: OMAPFB: Translate X/Y coordinates for the video planes when rotating.
 
 When rotating the video planes, translate the X/Y coordinates such that
 a [0,0] from userspace always maps to the correct upper left corner of
@@ -1,7 +1,7 @@
-From 7986ce08b1f7ed40c815620853fe76ce3deeb7c5 Mon Sep 17 00:00:00 2001
+From fc2e9ddb93cb026ed10900d794dd1db11191dc24 Mon Sep 17 00:00:00 2001
 From: Tim Yamin <plasm@roo.me.uk>
 Date: Fri, 12 Mar 2010 13:57:38 +0100
-Subject: [PATCH 10/16] DSS2: Fix scaling checks when rotation is 90 or 270 degrees.
+Subject: [PATCH 09/17] DSS2: Fix scaling checks when rotation is 90 or 270 degrees.
 
 ---
  drivers/video/omap2/dss/dispc.c |   25 +++++++++++++++++++------
diff --git a/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0009-DSS2-fix-rotation-offsets.patch b/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0009-DSS2-fix-rotation-offsets.patch
deleted file mode 100644 (file)
index 89d5285..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-From 15ef52dc7a6d92e50ed9437ca6ca4bdcbd62faa6 Mon Sep 17 00:00:00 2001
-From: Gregoire Gentil <gregoire@gentil.com>
-Date: Wed, 31 Mar 2010 11:32:23 +0200
-Subject: [PATCH 09/16] DSS2: fix rotation offsets
-
----
- drivers/video/omap2/omapfb/omapfb-main.c |   34 +++++++++++++++++++++++++----
- 1 files changed, 29 insertions(+), 5 deletions(-)
-
-diff --git a/drivers/video/omap2/omapfb/omapfb-main.c b/drivers/video/omap2/omapfb/omapfb-main.c
-index c2c9663..1b116b6 100644
---- a/drivers/video/omap2/omapfb/omapfb-main.c
-+++ b/drivers/video/omap2/omapfb/omapfb-main.c
-@@ -859,12 +859,14 @@ static int omapfb_setup_overlay(struct fb_info *fbi, struct omap_overlay *ovl,
-       u32 data_start_p;
-       void __iomem *data_start_v;
-       struct omap_overlay_info info;
--      int xres, yres;
-+      int xres, yres, xoff, yoff;
-       int screen_width;
-       int mirror;
-       int rotation = var->rotate;
-       int i;
-+      xoff = var->xoffset;
-+      yoff = var->yoffset;
-       for (i = 0; i < ofbi->num_overlays; i++) {
-               if (ovl != ofbi->overlays[i])
-                       continue;
-@@ -893,10 +895,32 @@ static int omapfb_setup_overlay(struct fb_info *fbi, struct omap_overlay *ovl,
-               data_start_v = omapfb_get_region_vaddr(ofbi, 0);
-       }
--      if (ofbi->rotation_type == OMAP_DSS_ROT_VRFB)
--              offset = calc_rotation_offset_vrfb(var, fix, 0);
--      else
--              offset = calc_rotation_offset_dma(var, fix, rotation);
-+    if (ofbi->rotation == FB_ROTATE_CW || ofbi->rotation == FB_ROTATE_UD) {
-+              if (var->yres < var->yres_virtual) {
-+                      if (var->yoffset)
-+                              yoff = 0;
-+                      else
-+                              yoff = var->yres_virtual - var->yres;
-+              }
-+      }
-+
-+      if (ofbi->rotation == FB_ROTATE_CCW || ofbi->rotation == FB_ROTATE_UD) {
-+              if (var->xres < var->xres_virtual) {
-+                      if (var->xoffset)
-+                              xoff = 0;
-+                      else
-+                              xoff = var->xres_virtual - var->xres;
-+              }
-+      }
-+
-+      if (ofbi->rotation == FB_ROTATE_CW || ofbi->rotation == FB_ROTATE_CCW) {
-+              offset = ((xoff * fix->line_length) >> 1) +
-+                              ((yoff * var->bits_per_pixel) >> 2);
-+      } else
-+      {
-+              offset = yoff * fix->line_length +
-+                              ((xoff * var->bits_per_pixel) >> 3);
-+      }
-       data_start_p += offset;
-       data_start_v += offset;
--- 
-1.6.6.1
-
@@ -1,7 +1,7 @@
-From 935a7f21581403bd791729ae1cc1b49b10561fa6 Mon Sep 17 00:00:00 2001
+From 0f651f19bf9cfecbb76d6f0b251e3d8395f306b8 Mon Sep 17 00:00:00 2001
 From: Gregoire Gentil <gregoire@gentil.com>
 Date: Fri, 12 Mar 2010 14:39:07 +0100
-Subject: [PATCH 11/16] add touchbook hid driver
+Subject: [PATCH 10/17] add touchbook hid driver
 
 ---
  drivers/hid/Kconfig    |    7 ++
@@ -1,7 +1,7 @@
-From 94ea406045ee596951204736fd5bdf454c574343 Mon Sep 17 00:00:00 2001
+From b46a494e0c02450e412db221d75446671b6ef511 Mon Sep 17 00:00:00 2001
 From: Gregoire Gentil <gregroire@gentil.com>
 Date: Fri, 12 Mar 2010 14:41:05 +0100
-Subject: [PATCH 12/16] Make backlight controls accessible to users
+Subject: [PATCH 11/17] Make backlight controls accessible to users
 
 ---
  drivers/video/backlight/backlight.c |    2 +-
@@ -1,7 +1,7 @@
-From 55eb032a9f3d9c2a46a0e4621e6704a00ba2ab46 Mon Sep 17 00:00:00 2001
+From 4c3ef06a333cf1f873a9a8de05af90959a5d1e68 Mon Sep 17 00:00:00 2001
 From: Gregoire Gentil <gregoire@gentil.com>
 Date: Fri, 12 Mar 2010 15:04:58 +0100
-Subject: [PATCH 13/16] ads7846: don't error out when there's no pendown gpio
+Subject: [PATCH 12/17] ads7846: don't error out when there's no pendown gpio
 
 ---
  drivers/input/touchscreen/ads7846.c |    7 -------
@@ -1,13 +1,13 @@
-From 0abfaf3d50f7df7b7dd9462d1822e856bf306bf5 Mon Sep 17 00:00:00 2001
+From 96ce6261efe4c194d9188e0f352803bcd92f1c59 Mon Sep 17 00:00:00 2001
 From: Gregoire Gentil <gregoire@gentil.com>
 Date: Wed, 31 Mar 2010 11:14:04 +0200
-Subject: [PATCH 14/16] ASoC: add driver for omap3-touchbook
+Subject: [PATCH 13/17] ASoC: add driver for omap3-touchbook
 
 ---
  sound/soc/omap/Kconfig          |    8 +
  sound/soc/omap/Makefile         |    2 +
- sound/soc/omap/omap3touchbook.c |  281 +++++++++++++++++++++++++++++++++++++++
- 3 files changed, 291 insertions(+), 0 deletions(-)
+ sound/soc/omap/omap3touchbook.c |  291 +++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 301 insertions(+), 0 deletions(-)
  create mode 100644 sound/soc/omap/omap3touchbook.c
 
 diff --git a/sound/soc/omap/Kconfig b/sound/soc/omap/Kconfig
@@ -50,10 +50,10 @@ index 19283e5..e3f172f 100644
  obj-$(CONFIG_SND_OMAP_SOC_IGEP0020) += snd-soc-igep0020.o
 diff --git a/sound/soc/omap/omap3touchbook.c b/sound/soc/omap/omap3touchbook.c
 new file mode 100644
-index 0000000..27924e0
+index 0000000..c5e6eaa
 --- /dev/null
 +++ b/sound/soc/omap/omap3touchbook.c
-@@ -0,0 +1,281 @@
+@@ -0,0 +1,291 @@
 +/*
 + * omap3touchbook.c  --  SoC audio for Touch Book
 + *
@@ -160,6 +160,14 @@ index 0000000..27924e0
 +/* Headset jack detection DAPM pins */
 +static struct snd_soc_jack_pin hs_jack_pins[] = {
 +      {
++              .pin = "Headset Stereo",
++              .mask = SND_JACK_HEADPHONE,
++      },
++      {
++              .pin = "Headset Mic",
++              .mask = SND_JACK_HEADPHONE,
++      },
++      {
 +              .pin = "External Speakers",
 +              .mask = SND_JACK_HEADPHONE,
 +              .invert = 1,
@@ -180,7 +188,7 @@ index 0000000..27924e0
 +static const struct snd_soc_dapm_widget omap3touchbook_twl4030_dapm_widgets[] = {
 +      SND_SOC_DAPM_SPK("External Speakers", NULL),
 +      SND_SOC_DAPM_HP("Headset Stereo", NULL),
-+      SND_SOC_DAPM_MIC("Headset Micro", NULL),
++      SND_SOC_DAPM_MIC("Headset Mic", NULL),
 +      SND_SOC_DAPM_LINE("Line In", NULL),
 +};
 +
@@ -193,12 +201,13 @@ index 0000000..27924e0
 +      {"Headset Stereo", NULL, "HSOL"},
 +      {"Headset Stereo", NULL, "HSOR"},
 +
-+      /* Headset Micro: MAINMICL */
-+      {"Headset Micro", NULL, "MAINMIC"},
++      /* Micro: HSMIC */
++      {"HSMIC", NULL, "Headset Mic Bias"},
++      {"Headset Mic Bias", NULL, "Headset Mic"},
 +
 +      /* Line In: AUXL, AUXR */
-+      {"Line In", NULL, "AUXL"},
-+      {"Line In", NULL, "AUXR"},
++      {"AUXL", NULL, "Line In"},
++      {"AUXR", NULL, "Line In"},
 +};
 +
 +static int omap3touchbook_twl4030_init(struct snd_soc_codec *codec)
@@ -217,11 +226,12 @@ index 0000000..27924e0
 +      /* omap3touchbook connected pins */
 +      snd_soc_dapm_enable_pin(codec, "External Speakers");
 +      snd_soc_dapm_enable_pin(codec, "Headset Stereo");
-+      snd_soc_dapm_enable_pin(codec, "Headset Micro");
++      snd_soc_dapm_enable_pin(codec, "Headset Mic");
 +      snd_soc_dapm_enable_pin(codec, "Line In");
 +
-+      /* TWL4030 not connected pins */
++      /* omap3touchbook not connected pins */
 +      snd_soc_dapm_nc_pin(codec, "CARKITMIC");
++      snd_soc_dapm_nc_pin(codec, "MAINMIC");
 +      snd_soc_dapm_nc_pin(codec, "SUBMIC");
 +      snd_soc_dapm_nc_pin(codec, "DIGIMIC0");
 +      snd_soc_dapm_nc_pin(codec, "DIGIMIC1");
@@ -1,7 +1,7 @@
-From d24e10c10e57875a65451f46025623f0f77cefbe Mon Sep 17 00:00:00 2001
+From cc8cb0d0731c7a0517653e65c754051a69f34c3e Mon Sep 17 00:00:00 2001
 From: Gregoire Gentil <gregoire@gentil.com>
 Date: Wed, 31 Mar 2010 11:14:04 +0200
-Subject: [PATCH 15/16] backlight: add PWM support
+Subject: [PATCH 14/17] backlight: add PWM support
 
 ---
  drivers/video/backlight/backlight.c |   81 +++++++++++++++++++++++++++++++++++
diff --git a/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0015-Forward-port-TWL4030-BCI-driver-from-2.6.29-to-2.6.3.patch b/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0015-Forward-port-TWL4030-BCI-driver-from-2.6.29-to-2.6.3.patch
new file mode 100644 (file)
index 0000000..562c459
--- /dev/null
@@ -0,0 +1,1367 @@
+From c3a08f3d696866508ef2b5e2fd065b8295b3e1a8 Mon Sep 17 00:00:00 2001
+From: Tim Yamin <plasm@roo.me.uk>
+Date: Sun, 9 May 2010 10:14:23 +0200
+Subject: [PATCH 15/17] Forward port TWL4030 BCI driver from 2.6.29 to 2.6.31 with AI enhancements.
+
+Signed-off-by: Tim Yamin <plasm@roo.me.uk>
+---
+ drivers/power/Kconfig               |    7 +
+ drivers/power/Makefile              |    1 +
+ drivers/power/twl4030_bci_battery.c | 1307 +++++++++++++++++++++++++++++++++++
+ include/linux/i2c/twl.h             |    1 +
+ 4 files changed, 1316 insertions(+), 0 deletions(-)
+ create mode 100644 drivers/power/twl4030_bci_battery.c
+
+diff --git a/drivers/power/Kconfig b/drivers/power/Kconfig
+index d4b3d67..8345b3f 100644
+--- a/drivers/power/Kconfig
++++ b/drivers/power/Kconfig
+@@ -124,4 +124,11 @@ config CHARGER_PCF50633
+       help
+        Say Y to include support for NXP PCF50633 Main Battery Charger.
++config TWL4030_BCI_BATTERY
++      tristate "OMAP TWL4030 BCI Battery driver"
++      depends on TWL4030_CORE && TWL4030_MADC
++      help
++        Support for OMAP TWL4030 BCI Battery driver.
++        This driver can give support for TWL4030 Battery Charge Interface.
++
+ endif # POWER_SUPPLY
+diff --git a/drivers/power/Makefile b/drivers/power/Makefile
+index 573597c..7801da7 100644
+--- a/drivers/power/Makefile
++++ b/drivers/power/Makefile
+@@ -31,3 +31,4 @@ obj-$(CONFIG_BATTERY_BQ27x00)        += bq27x00_battery.o
+ obj-$(CONFIG_BATTERY_DA9030)  += da9030_battery.o
+ obj-$(CONFIG_BATTERY_MAX17040)        += max17040_battery.o
+ obj-$(CONFIG_CHARGER_PCF50633)        += pcf50633-charger.o
++obj-$(CONFIG_TWL4030_BCI_BATTERY)     += twl4030_bci_battery.o
+diff --git a/drivers/power/twl4030_bci_battery.c b/drivers/power/twl4030_bci_battery.c
+new file mode 100644
+index 0000000..0876fc3
+--- /dev/null
++++ b/drivers/power/twl4030_bci_battery.c
+@@ -0,0 +1,1307 @@
++/*
++ * linux/drivers/power/twl4030_bci_battery.c
++ *
++ * OMAP2430/3430 BCI battery driver for Linux
++ *
++ * Copyright (C) 2008 Texas Instruments, Inc.
++ * Author: Texas Instruments, Inc.
++ *
++ * Copyright (C) 2010 Always Innovating
++ * Author: Tim Yamin <plasm@roo.me.uk>
++ *
++ * This package is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License version 2 as
++ * published by the Free Software Foundation.
++ *
++ * THIS PACKAGE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
++ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
++ * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
++ */
++
++/* Boot with automatic charge */
++#define CHARGE_MODE 1
++
++#include <linux/init.h>
++#include <linux/module.h>
++#include <linux/device.h>
++#include <linux/interrupt.h>
++#include <linux/delay.h>
++#include <linux/platform_device.h>
++#include <linux/i2c/twl.h>
++#include <linux/power_supply.h>
++#include <linux/i2c/twl4030-madc.h>
++
++#define T2_BATTERY_VOLT               0x04
++#define T2_BATTERY_TEMP               0x06
++#define T2_BATTERY_CUR                0x08
++
++/* charger constants */
++#define NO_PW_CONN            0
++#define AC_PW_CONN            0x01
++#define USB_PW_CONN           0x02
++
++/* TWL4030_MODULE_USB */
++#define REG_POWER_CTRL                0x0AC
++#define OTG_EN                        0x020
++#define REG_PHY_CLK_CTRL      0x0FE
++#define REG_PHY_CLK_CTRL_STS  0x0FF
++#define PHY_DPLL_CLK          0x01
++
++#define REG_BCICTL1           0x023
++#define REG_BCICTL2           0x024
++#define CGAIN                 0x020
++#define ITHEN                 0x010
++#define ITHSENS                       0x007
++
++/* Boot BCI flag bits */
++#define BCIAUTOWEN            0x020
++#define CONFIG_DONE           0x010
++#define CVENAC                        0x004
++#define BCIAUTOUSB            0x002
++#define BCIAUTOAC             0x001
++#define BCIMSTAT_MASK         0x03F
++
++/* Boot BCI register */
++#define REG_BOOT_BCI          0x007
++#define REG_CTRL1             0x00
++#define REG_SW1SELECT_MSB     0x07
++#define SW1_CH9_SEL           0x02
++#define REG_CTRL_SW1          0x012
++#define SW1_TRIGGER           0x020
++#define EOC_SW1                       0x002
++#define REG_GPCH9             0x049
++#define REG_STS_HW_CONDITIONS 0x0F
++#define STS_VBUS              0x080
++#define STS_CHG                       0x02
++#define REG_BCIMSTATEC                0x02
++#define REG_BCIMFSTS4         0x010
++#define REG_BCIMFSTS2         0x00E
++#define REG_BCIMFSTS3         0x00F
++#define REG_BCIMFSTS1         0x001
++#define USBFASTMCHG           0x004
++#define BATSTSPCHG            0x004
++#define BATSTSMCHG            0x040
++#define VBATOV4                       0x020
++#define VBATOV3                       0x010
++#define VBATOV2                       0x008
++#define VBATOV1                       0x004
++#define REG_BB_CFG            0x012
++#define BBCHEN                        0x010
++
++/* GPBR */
++#define REG_GPBR1             0x0c
++#define MADC_HFCLK_EN         0x80
++#define DEFAULT_MADC_CLK_EN   0x10
++
++/* Power supply charge interrupt */
++#define REG_PWR_ISR1          0x00
++#define REG_PWR_IMR1          0x01
++#define REG_PWR_EDR1          0x05
++#define REG_PWR_SIH_CTRL      0x007
++
++#define USB_PRES              0x004
++#define CHG_PRES              0x002
++
++#define USB_PRES_RISING               0x020
++#define USB_PRES_FALLING      0x010
++#define CHG_PRES_RISING               0x008
++#define CHG_PRES_FALLING      0x004
++#define AC_STATEC             0x20
++#define COR                   0x004
++
++/* interrupt status registers */
++#define REG_BCIISR1A          0x0
++#define REG_BCIISR2A          0x01
++
++/* Interrupt flags bits BCIISR1 */
++#define BATSTS_ISR1           0x080
++#define VBATLVL_ISR1          0x001
++
++/* Interrupt mask registers for int1*/
++#define REG_BCIIMR1A          0x002
++#define REG_BCIIMR2A          0x003
++
++ /* Interrupt masks for BCIIMR1 */
++#define BATSTS_IMR1           0x080
++#define VBATLVL_IMR1          0x001
++
++/* Interrupt edge detection register */
++#define REG_BCIEDR1           0x00A
++#define REG_BCIEDR2           0x00B
++#define REG_BCIEDR3           0x00C
++
++/* BCIEDR2 */
++#define       BATSTS_EDRRISIN         0x080
++#define BATSTS_EDRFALLING     0x040
++
++/* BCIEDR3 */
++#define       VBATLVL_EDRRISIN        0x02
++
++/* BCIIREF1 */
++#define REG_BCIIREF1          0x027
++#define REG_BCIIREF2          0x028
++
++/* BCIMFTH1 */
++#define REG_BCIMFTH1          0x016
++
++/* Key */
++#define KEY_IIREF             0xE7
++#define KEY_FTH1              0xD2
++#define REG_BCIMFKEY          0x011
++
++/* Step size and prescaler ratio */
++#define TEMP_STEP_SIZE                147
++#define TEMP_PSR_R            100
++
++#define VOLT_STEP_SIZE                588
++#define VOLT_PSR_R            100
++
++#define CURR_STEP_SIZE                147
++#define CURR_PSR_R1           44
++#define CURR_PSR_R2           80
++
++#define BK_VOLT_STEP_SIZE     441
++#define BK_VOLT_PSR_R         100
++
++#define ENABLE                1
++#define DISABLE               1
++
++struct twl4030_bci_device_info {
++      struct device           *dev;
++
++      unsigned long           update_time;
++      int                     voltage_uV;
++      int                     bk_voltage_uV;
++      int                     current_uA;
++      int                     temp_C;
++      int                     charge_rsoc;
++      int                     charge_status;
++
++      struct power_supply     bat;
++      struct power_supply     bk_bat;
++      struct delayed_work     twl4030_bci_monitor_work;
++      struct delayed_work     twl4030_bk_bci_monitor_work;
++
++      struct twl4030_bci_platform_data *pdata;
++};
++
++static int usb_charger_flag;
++static int LVL_1, LVL_2, LVL_3, LVL_4;
++
++static int read_bci_val(u8 reg_1);
++static inline int clear_n_set(u8 mod_no, u8 clear, u8 set, u8 reg);
++static int twl4030charger_presence(void);
++
++/*
++ * Report and clear the charger presence event.
++ */
++static inline int twl4030charger_presence_evt(void)
++{
++      int ret;
++      u8 chg_sts, set = 0, clear = 0;
++
++      /* read charger power supply status */
++      ret = twl_i2c_read_u8(TWL4030_MODULE_PM_MASTER, &chg_sts,
++              REG_STS_HW_CONDITIONS);
++      if (ret)
++              return IRQ_NONE;
++
++      if (chg_sts & STS_CHG) { /* If the AC charger have been connected */
++              /* configuring falling edge detection for CHG_PRES */
++              set = CHG_PRES_FALLING;
++              clear = CHG_PRES_RISING;
++      } else { /* If the AC charger have been disconnected */
++              /* configuring rising edge detection for CHG_PRES */
++              set = CHG_PRES_RISING;
++              clear = CHG_PRES_FALLING;
++      }
++
++      /* Update the interrupt edge detection register */
++      clear_n_set(TWL4030_MODULE_INT, clear, set, REG_PWR_EDR1);
++
++      return 0;
++}
++
++/*
++ * Interrupt service routine
++ *
++ * Attends to TWL 4030 power module interruptions events, specifically
++ * USB_PRES (USB charger presence) CHG_PRES (AC charger presence) events
++ *
++ */
++static irqreturn_t twl4030charger_interrupt(int irq, void *_di)
++{
++      struct twl4030_bci_device_info *di = _di;
++
++#ifdef CONFIG_LOCKDEP
++      /* WORKAROUND for lockdep forcing IRQF_DISABLED on us, which
++       * we don't want and can't tolerate.  Although it might be
++       * friendlier not to borrow this thread context...
++       */
++      local_irq_enable();
++#endif
++
++      twl4030charger_presence_evt();
++      power_supply_changed(&di->bat);
++
++      return IRQ_HANDLED;
++}
++
++/*
++ * This function handles the twl4030 battery presence interrupt
++ */
++static int twl4030battery_presence_evt(void)
++{
++      int ret;
++      u8 batstsmchg, batstspchg;
++
++      /* check for the battery presence in main charge*/
++      ret = twl_i2c_read_u8(TWL4030_MODULE_MAIN_CHARGE,
++                      &batstsmchg, REG_BCIMFSTS3);
++      if (ret)
++              return ret;
++
++      /* check for the battery presence in precharge */
++      ret = twl_i2c_read_u8(TWL4030_MODULE_PRECHARGE,
++                      &batstspchg, REG_BCIMFSTS1);
++      if (ret)
++              return ret;
++
++      /*
++       * REVISIT: Physically inserting/removing the batt
++       * does not seem to generate an int on 3430ES2 SDP.
++       */
++      if ((batstspchg & BATSTSPCHG) || (batstsmchg & BATSTSMCHG)) {
++              /* In case of the battery insertion event */
++              ret = clear_n_set(TWL4030_MODULE_INTERRUPTS, BATSTS_EDRRISIN,
++                      BATSTS_EDRFALLING, REG_BCIEDR2);
++              if (ret)
++                      return ret;
++      } else {
++              /* In case of the battery removal event */
++              ret = clear_n_set(TWL4030_MODULE_INTERRUPTS, BATSTS_EDRFALLING,
++                      BATSTS_EDRRISIN, REG_BCIEDR2);
++              if (ret)
++                      return ret;
++      }
++
++      return 0;
++}
++
++/*
++ * This function handles the twl4030 battery voltage level interrupt.
++ */
++static int twl4030battery_level_evt(void)
++{
++      int ret;
++      u8 mfst;
++
++      /* checking for threshold event */
++      ret = twl_i2c_read_u8(TWL4030_MODULE_MAIN_CHARGE,
++                      &mfst, REG_BCIMFSTS2);
++      if (ret)
++              return ret;
++
++      /* REVISIT could use a bitmap */
++      if (mfst & VBATOV4) {
++              LVL_4 = 1;
++              LVL_3 = 0;
++              LVL_2 = 0;
++              LVL_1 = 0;
++      } else if (mfst & VBATOV3) {
++              LVL_4 = 0;
++              LVL_3 = 1;
++              LVL_2 = 0;
++              LVL_1 = 0;
++      } else if (mfst & VBATOV2) {
++              LVL_4 = 0;
++              LVL_3 = 0;
++              LVL_2 = 1;
++              LVL_1 = 0;
++      } else {
++              LVL_4 = 0;
++              LVL_3 = 0;
++              LVL_2 = 0;
++              LVL_1 = 1;
++      }
++
++      return 0;
++}
++
++/*
++ * Interrupt service routine
++ *
++ * Attends to BCI interruptions events,
++ * specifically BATSTS (battery connection and removal)
++ * VBATOV (main battery voltage threshold) events
++ *
++ */
++static irqreturn_t twl4030battery_interrupt(int irq, void *_di)
++{
++      u8 isr1a_val, isr2a_val, clear_2a, clear_1a;
++      int ret;
++
++#ifdef CONFIG_LOCKDEP
++      /* WORKAROUND for lockdep forcing IRQF_DISABLED on us, which
++       * we don't want and can't tolerate.  Although it might be
++       * friendlier not to borrow this thread context...
++       */
++      local_irq_enable();
++#endif
++
++      ret = twl_i2c_read_u8(TWL4030_MODULE_INTERRUPTS, &isr1a_val,
++                              REG_BCIISR1A);
++      if (ret)
++              return IRQ_NONE;
++
++      ret = twl_i2c_read_u8(TWL4030_MODULE_INTERRUPTS, &isr2a_val,
++                              REG_BCIISR2A);
++      if (ret)
++              return IRQ_NONE;
++
++      clear_2a = (isr2a_val & VBATLVL_ISR1) ? (VBATLVL_ISR1) : 0;
++      clear_1a = (isr1a_val & BATSTS_ISR1) ? (BATSTS_ISR1) : 0;
++
++      /* cleaning BCI interrupt status flags */
++      ret = twl_i2c_write_u8(TWL4030_MODULE_INTERRUPTS,
++                      clear_1a , REG_BCIISR1A);
++      if (ret)
++              return IRQ_NONE;
++
++      ret = twl_i2c_write_u8(TWL4030_MODULE_INTERRUPTS,
++                      clear_2a , REG_BCIISR2A);
++      if (ret)
++              return IRQ_NONE;
++
++      /* battery connetion or removal event */
++      if (isr1a_val & BATSTS_ISR1)
++              twl4030battery_presence_evt();
++      /* battery voltage threshold event*/
++      else if (isr2a_val & VBATLVL_ISR1)
++              twl4030battery_level_evt();
++      else
++              return IRQ_NONE;
++
++      return IRQ_HANDLED;
++}
++
++/*
++ * Enable/Disable hardware battery level event notifications.
++ */
++static int twl4030battery_hw_level_en(int enable)
++{
++      int ret;
++
++      if (enable) {
++              /* unmask VBATOV interrupt for INT1 */
++              ret = clear_n_set(TWL4030_MODULE_INTERRUPTS, VBATLVL_IMR1,
++                      0, REG_BCIIMR2A);
++              if (ret)
++                      return ret;
++
++              /* configuring interrupt edge detection for VBATOv */
++              ret = clear_n_set(TWL4030_MODULE_INTERRUPTS, 0,
++                      VBATLVL_EDRRISIN, REG_BCIEDR3);
++              if (ret)
++                      return ret;
++      } else {
++              /* mask VBATOV interrupt for INT1 */
++              ret = clear_n_set(TWL4030_MODULE_INTERRUPTS, 0,
++                      VBATLVL_IMR1, REG_BCIIMR2A);
++              if (ret)
++                      return ret;
++      }
++
++      return 0;
++}
++
++/*
++ * Enable/disable hardware battery presence event notifications.
++ */
++static int twl4030battery_hw_presence_en(int enable)
++{
++      int ret;
++
++      if (enable) {
++              /* unmask BATSTS interrupt for INT1 */
++              ret = clear_n_set(TWL4030_MODULE_INTERRUPTS, BATSTS_IMR1,
++                      0, REG_BCIIMR1A);
++              if (ret)
++                      return ret;
++
++              /* configuring interrupt edge for BATSTS */
++              ret = clear_n_set(TWL4030_MODULE_INTERRUPTS, 0,
++                      BATSTS_EDRRISIN | BATSTS_EDRFALLING, REG_BCIEDR2);
++              if (ret)
++                      return ret;
++      } else {
++              /* mask BATSTS interrupt for INT1 */
++              ret = clear_n_set(TWL4030_MODULE_INTERRUPTS, 0,
++                      BATSTS_IMR1, REG_BCIIMR1A);
++              if (ret)
++                      return ret;
++      }
++
++      return 0;
++}
++
++/*
++ * Enable/Disable AC Charge funtionality.
++ */
++static int twl4030charger_ac_en(int enable, int automatic)
++{
++      int ret;
++
++      if (enable) {
++              /* forcing the field BCIAUTOAC (BOOT_BCI[0) to 1 */
++              if(!automatic) {
++                      ret = clear_n_set(TWL4030_MODULE_PM_MASTER, BCIAUTOAC | CVENAC,
++                              (CONFIG_DONE | BCIAUTOWEN),
++                              REG_BOOT_BCI);
++              } else {
++                      ret = clear_n_set(TWL4030_MODULE_PM_MASTER, 0,
++                              (CONFIG_DONE | BCIAUTOWEN | BCIAUTOAC | CVENAC),
++                              REG_BOOT_BCI);
++              }
++              if (ret)
++                      return ret;
++      } else {
++              /* forcing the field BCIAUTOAC (BOOT_BCI[0) to 0*/
++              ret = clear_n_set(TWL4030_MODULE_PM_MASTER, BCIAUTOAC,
++                      (CONFIG_DONE | BCIAUTOWEN),
++                      REG_BOOT_BCI);
++              if (ret)
++                      return ret;
++      }
++
++      return 0;
++}
++
++/*
++ * Enable/Disable USB Charge funtionality.
++ */
++int twl4030charger_usb_en(int enable)
++{
++      u8 value;
++      int ret;
++      unsigned long timeout;
++
++      if (enable) {
++              /* Check for USB charger conneted */
++              ret = twl4030charger_presence();
++              if (ret < 0)
++                      return ret;
++
++              if (!(ret & USB_PW_CONN))
++                      return -ENXIO;
++
++              /* forcing the field BCIAUTOUSB (BOOT_BCI[1]) to 1 */
++              ret = clear_n_set(TWL4030_MODULE_PM_MASTER, 0,
++                      (CONFIG_DONE | BCIAUTOWEN | BCIAUTOUSB),
++                      REG_BOOT_BCI);
++              if (ret)
++                      return ret;
++
++              ret = clear_n_set(TWL4030_MODULE_USB, 0, PHY_DPLL_CLK,
++                      REG_PHY_CLK_CTRL);
++              if (ret)
++                      return ret;
++
++              value = 0;
++              timeout = jiffies + msecs_to_jiffies(50);
++
++              while ((!(value & PHY_DPLL_CLK)) &&
++                      time_before(jiffies, timeout)) {
++                      udelay(10);
++                      ret = twl_i2c_read_u8(TWL4030_MODULE_USB, &value,
++                              REG_PHY_CLK_CTRL_STS);
++                      if (ret)
++                              return ret;
++              }
++
++              /* OTG_EN (POWER_CTRL[5]) to 1 */
++              ret = clear_n_set(TWL4030_MODULE_USB, 0, OTG_EN,
++                      REG_POWER_CTRL);
++              if (ret)
++                      return ret;
++
++              mdelay(50);
++
++              /* forcing USBFASTMCHG(BCIMFSTS4[2]) to 1 */
++              ret = clear_n_set(TWL4030_MODULE_MAIN_CHARGE, 0,
++                      USBFASTMCHG, REG_BCIMFSTS4);
++              if (ret)
++                      return ret;
++      } else {
++              twl4030charger_presence();
++              ret = clear_n_set(TWL4030_MODULE_PM_MASTER, BCIAUTOUSB,
++                      (CONFIG_DONE | BCIAUTOWEN), REG_BOOT_BCI);
++              if (ret)
++                      return ret;
++      }
++
++      return 0;
++}
++
++/*
++ * Return battery temperature
++ * Or < 0 on failure.
++ */
++static int twl4030battery_temperature(struct twl4030_bci_device_info *di)
++{
++      u8 val;
++      int temp, curr, volt, res, ret;
++
++      /* Is a temperature table specified? */
++      if (!di->pdata->tblsize)
++              return 0;
++
++      /* Getting and calculating the thermistor voltage */
++      ret = read_bci_val(T2_BATTERY_TEMP);
++      if (ret < 0)
++              return ret;
++
++      volt = (ret * TEMP_STEP_SIZE) / TEMP_PSR_R;
++
++      /* Getting and calculating the supply current in micro ampers */
++      ret = twl_i2c_read_u8(TWL4030_MODULE_MAIN_CHARGE, &val,
++               REG_BCICTL2);
++      if (ret)
++              return 0;
++
++      curr = ((val & ITHSENS) + 1) * 10;
++
++      /* Getting and calculating the thermistor resistance in ohms*/
++      res = volt * 1000 / curr;
++
++      /*calculating temperature*/
++      for (temp = 58; temp >= 0; temp--) {
++              int actual = di->pdata->battery_tmp_tbl[temp];
++              if ((actual - res) >= 0)
++                      break;
++      }
++
++      /* Negative temperature */
++      if (temp < 3) {
++              if (temp == 2)
++                      temp = -1;
++              else if (temp == 1)
++                      temp = -2;
++              else
++                      temp = -3;
++      }
++
++      return temp + 1;
++}
++
++/*
++ * Return battery voltage
++ * Or < 0 on failure.
++ */
++static int twl4030battery_voltage(void)
++{
++      int volt = read_bci_val(T2_BATTERY_VOLT);
++      return (volt * VOLT_STEP_SIZE) / VOLT_PSR_R;
++}
++
++/*
++ * Get latest battery voltage (using MADC)
++ *
++ * When the BCI is not charging, the BCI voltage registers are not
++ * updated and are 'frozen' but the data can be read through the
++ * MADC.
++ */
++static int twl4030battery_voltage_madc(void)
++{
++      struct twl4030_madc_request req;
++
++      req.channels = (1 << 12);
++      req.do_avg = 0;
++      req.method = TWL4030_MADC_SW1;
++      req.active = 0;
++      req.func_cb = NULL;
++      twl4030_madc_conversion(&req);
++
++      return (((int) req.rbuf[12]) * VOLT_STEP_SIZE) / VOLT_PSR_R;
++}
++
++/*
++ * Return the battery current
++ * Or < 0 on failure.
++ */
++static int twl4030battery_current(void)
++{
++      int ret, curr = read_bci_val(T2_BATTERY_CUR);
++      u8 val;
++
++      ret = twl_i2c_read_u8(TWL4030_MODULE_MAIN_CHARGE, &val,
++              REG_BCICTL1);
++      if (ret)
++              return ret;
++
++      if (val & CGAIN) /* slope of 0.44 mV/mA */
++              return (curr * CURR_STEP_SIZE) / CURR_PSR_R1;
++      else /* slope of 0.88 mV/mA */
++              return (curr * CURR_STEP_SIZE) / CURR_PSR_R2;
++}
++
++/*
++ * Return the battery backup voltage
++ * Or < 0 on failure.
++ */
++static int twl4030backupbatt_voltage(void)
++{
++      struct twl4030_madc_request req;
++      int temp;
++
++      req.channels = (1 << 9);
++      req.do_avg = 0;
++      req.method = TWL4030_MADC_SW1;
++      req.active = 0;
++      req.func_cb = NULL;
++      twl4030_madc_conversion(&req);
++      temp = (u16)req.rbuf[9];
++
++      return  (temp * BK_VOLT_STEP_SIZE) / BK_VOLT_PSR_R;
++}
++
++/*
++ * Returns an integer value, that means,
++ * NO_PW_CONN  no power supply is connected
++ * AC_PW_CONN  if the AC power supply is connected
++ * USB_PW_CONN  if the USB power supply is connected
++ * AC_PW_CONN + USB_PW_CONN if USB and AC power supplies are both connected
++ *
++ * Or < 0 on failure.
++ */
++static int twl4030charger_presence(void)
++{
++      int ret;
++      u8 hwsts;
++
++      ret = twl_i2c_read_u8(TWL4030_MODULE_PM_MASTER, &hwsts,
++              REG_STS_HW_CONDITIONS);
++      if (ret) {
++              pr_err("twl4030_bci: error reading STS_HW_CONDITIONS\n");
++              return ret;
++      }
++
++      ret = (hwsts & STS_CHG) ? AC_PW_CONN : NO_PW_CONN;
++      ret += (hwsts & STS_VBUS) ? USB_PW_CONN : NO_PW_CONN;
++
++      if (ret & USB_PW_CONN)
++              usb_charger_flag = 1;
++      else
++              usb_charger_flag = 0;
++
++      return ret;
++
++}
++
++/*
++ * Returns the main charge FSM status
++ * Or < 0 on failure.
++ */
++static int twl4030bci_status(void)
++{
++      int ret;
++      u8 status;
++
++      ret = twl_i2c_read_u8(TWL4030_MODULE_MAIN_CHARGE,
++              &status, REG_BCIMSTATEC);
++      if (ret) {
++              pr_err("twl4030_bci: error reading BCIMSTATEC\n");
++              return ret;
++      }
++
++#ifdef DEBUG
++      printk("BCI DEBUG: BCIMSTATEC Charge state is 0x%x\n", status);
++#endif
++      return (int) (status & BCIMSTAT_MASK);
++}
++
++static int read_bci_val(u8 reg)
++{
++      int ret, temp;
++      u8 val;
++
++      /* reading MSB */
++      ret = twl_i2c_read_u8(TWL4030_MODULE_MAIN_CHARGE, &val,
++              reg + 1);
++      if (ret)
++              return ret;
++
++      temp = ((int)(val & 0x03)) << 8;
++
++      /* reading LSB */
++      ret = twl_i2c_read_u8(TWL4030_MODULE_MAIN_CHARGE, &val,
++              reg);
++      if (ret)
++              return ret;
++
++      return temp | val;
++}
++
++/*
++ * Settup the twl4030 BCI module to enable backup
++ * battery charging.
++ */
++static int twl4030backupbatt_voltage_setup(void)
++{
++      int ret;
++
++      /* Starting backup batery charge */
++      ret = clear_n_set(TWL4030_MODULE_PM_RECEIVER, 0, BBCHEN,
++              REG_BB_CFG);
++      if (ret)
++              return ret;
++
++      return 0;
++}
++
++/*
++ * Settup the twl4030 BCI module to measure battery
++ * temperature
++ */
++static int twl4030battery_temp_setup(void)
++{
++#ifdef DEBUG
++      u8 i;
++#endif
++      u8 ret;
++
++      /* Enabling thermistor current */
++      ret = clear_n_set(TWL4030_MODULE_MAIN_CHARGE, 0, 0x1B,
++              REG_BCICTL1);
++      if (ret)
++              return ret;
++
++#ifdef DEBUG
++      twl_i2c_read_u8(TWL4030_MODULE_PM_MASTER, &ret, REG_BOOT_BCI);
++      printk("BCI DEBUG: BOOT_BCI Value is 0x%x\n", ret);
++
++      twl_i2c_read_u8(TWL4030_MODULE_PM_MASTER, &ret, REG_STS_HW_CONDITIONS);
++      printk("BCI DEBUG: STS_HW_CONDITIONS Value is 0x%x\n", ret);
++
++      twl_i2c_read_u8(TWL4030_MODULE_MAIN_CHARGE, &ret, REG_BCICTL1);
++      printk("BCI DEBUG: BCICTL1 Value is 0x%x\n", ret);
++
++      twl_i2c_read_u8(TWL4030_MODULE_MAIN_CHARGE, &ret, REG_BCICTL2);
++      printk("BCI DEBUG: BCICTL2 Value is 0x%x\n", ret);
++
++      twl_i2c_read_u8(TWL4030_MODULE_MAIN_CHARGE, &ret, 0x0);
++      printk("BCI DEBUG: BCIMDEN Value is 0x%x\n", ret);
++
++      twl_i2c_read_u8(TWL4030_MODULE_INTBR, &ret, REG_GPBR1);
++      printk("BCI DEBUG: GPBR1 Value is 0x%x\n", ret);
++
++      for(i = 0x0; i <= 0x32; i++)
++      {
++              twl_i2c_read_u8(TWL4030_MODULE_MAIN_CHARGE, &ret, i);
++              printk("BCI DEBUG: BCI 0x%x Value is 0x%x\n", i, ret);
++      }
++#endif
++
++      return 0;
++}
++
++/*
++ * Sets and clears bits on an given register on a given module
++ */
++static inline int clear_n_set(u8 mod_no, u8 clear, u8 set, u8 reg)
++{
++      int ret;
++      u8 val = 0;
++
++      /* Gets the initial register value */
++      ret = twl_i2c_read_u8(mod_no, &val, reg);
++      if (ret)
++              return ret;
++      /* Clearing all those bits to clear */
++      val &= ~(clear);
++
++      /* Setting all those bits to set */
++      val |= set;
++
++      /* Update the register */
++      ret = twl_i2c_write_u8(mod_no, val, reg);
++      if (ret)
++              return ret;
++
++      return 0;
++}
++
++static enum power_supply_property twl4030_bci_battery_props[] = {
++      POWER_SUPPLY_PROP_STATUS,
++      POWER_SUPPLY_PROP_ONLINE,
++      POWER_SUPPLY_PROP_VOLTAGE_NOW,
++      POWER_SUPPLY_PROP_CURRENT_NOW,
++      POWER_SUPPLY_PROP_CAPACITY,
++      POWER_SUPPLY_PROP_TEMP,
++};
++
++static enum power_supply_property twl4030_bk_bci_battery_props[] = {
++      POWER_SUPPLY_PROP_VOLTAGE_NOW,
++};
++
++static void
++twl4030_bk_bci_battery_read_status(struct twl4030_bci_device_info *di)
++{
++      di->bk_voltage_uV = twl4030backupbatt_voltage();
++}
++
++static void twl4030_bk_bci_battery_work(struct work_struct *work)
++{
++      struct twl4030_bci_device_info *di = container_of(work,
++              struct twl4030_bci_device_info,
++              twl4030_bk_bci_monitor_work.work);
++
++      if(!di->pdata->no_backup_battery)
++              twl4030_bk_bci_battery_read_status(di);
++      schedule_delayed_work(&di->twl4030_bk_bci_monitor_work, 500);
++}
++
++static void twl4030_bci_battery_read_status(struct twl4030_bci_device_info *di)
++{
++      if(di->charge_status != POWER_SUPPLY_STATUS_DISCHARGING) {
++              di->temp_C = twl4030battery_temperature(di);
++              di->voltage_uV = twl4030battery_voltage();
++              di->current_uA = twl4030battery_current();
++      }
++}
++
++static void
++twl4030_bci_battery_update_status(struct twl4030_bci_device_info *di)
++{
++      if (power_supply_am_i_supplied(&di->bat))
++              di->charge_status = POWER_SUPPLY_STATUS_CHARGING;
++      else
++              di->charge_status = POWER_SUPPLY_STATUS_DISCHARGING;
++      twl4030_bci_battery_read_status(di);
++}
++
++static void twl4030_bci_battery_work(struct work_struct *work)
++{
++      struct twl4030_bci_device_info *di = container_of(work,
++              struct twl4030_bci_device_info, twl4030_bci_monitor_work.work);
++
++      twl4030_bci_battery_update_status(di);
++      schedule_delayed_work(&di->twl4030_bci_monitor_work, 100);
++}
++
++
++#define to_twl4030_bci_device_info(x) container_of((x), \
++                      struct twl4030_bci_device_info, bat);
++
++static void twl4030_bci_battery_external_power_changed(struct power_supply *psy)
++{
++      struct twl4030_bci_device_info *di = to_twl4030_bci_device_info(psy);
++
++      cancel_delayed_work(&di->twl4030_bci_monitor_work);
++      schedule_delayed_work(&di->twl4030_bci_monitor_work, 0);
++}
++
++#define to_twl4030_bk_bci_device_info(x) container_of((x), \
++              struct twl4030_bci_device_info, bk_bat);
++
++static ssize_t
++show_charge_current(struct device *dev, struct device_attribute *attr, char *buf)
++{
++      u8  ctl;
++      int ret = read_bci_val(REG_BCIIREF1) & 0x1FF;
++      twl_i2c_read_u8(TWL4030_MODULE_MAIN_CHARGE, &ctl, REG_BCICTL1);
++
++      if (ctl & CGAIN)
++              ret |= 0x200;
++
++#ifdef DEBUG
++      /* Dump debug */
++      twl4030battery_temp_setup();
++#endif
++
++      return sprintf(buf, "%d\n", ret);
++}
++
++static ssize_t
++set_charge_current(struct device *dev, struct device_attribute *attr, const char *buf, size_t count)
++{
++      unsigned long newCurrent;
++      int ret;
++
++      ret = strict_strtoul(buf, 10, &newCurrent);
++      if (ret)
++              return -EINVAL;
++
++      ret = twl_i2c_write_u8(TWL4030_MODULE_MAIN_CHARGE, KEY_IIREF, REG_BCIMFKEY);
++      if (ret)
++              return ret;
++
++      ret = twl_i2c_write_u8(TWL4030_MODULE_MAIN_CHARGE, newCurrent & 0xff, REG_BCIIREF1);
++      if (ret)
++              return ret;
++
++      ret = twl_i2c_write_u8(TWL4030_MODULE_MAIN_CHARGE, KEY_IIREF, REG_BCIMFKEY);
++      if (ret)
++              return ret;
++
++      ret = twl_i2c_write_u8(TWL4030_MODULE_MAIN_CHARGE, (newCurrent >> 8) & 0x1, REG_BCIIREF2);
++      if (ret)
++              return ret;
++
++      /* Set software-controlled charge */
++      twl4030charger_ac_en(ENABLE, 0);
++
++      /* Set CGAIN = 0 or 1 */
++      if(newCurrent > 511) {
++              u8 tmp;
++
++              /* Set CGAIN = 1 -- need to wait until automatic charge turns off */
++              while(!ret) {
++                      clear_n_set(TWL4030_MODULE_MAIN_CHARGE, 0, CGAIN | 0x1B, REG_BCICTL1);
++                      twl_i2c_read_u8(TWL4030_MODULE_MAIN_CHARGE, &tmp, REG_BCICTL1);
++
++                      ret = tmp & CGAIN;
++                      if(!ret)
++                              mdelay(50);
++              }
++      } else {
++              u8 tmp;
++
++              /* Set CGAIN = 0 -- need to wait until automatic charge turns off */
++              while(!ret) {
++                      clear_n_set(TWL4030_MODULE_MAIN_CHARGE, CGAIN, 0x1B, REG_BCICTL1);
++                      twl_i2c_read_u8(TWL4030_MODULE_MAIN_CHARGE, &tmp, REG_BCICTL1);
++
++                      ret = !(tmp & CGAIN);
++                      if(!ret)
++                              mdelay(50);
++              }
++      }
++
++      /* Set automatic charge (CGAIN = 0/1 persists) */
++      twl4030charger_ac_en(ENABLE, 1);
++
++      return count;
++}
++
++static ssize_t
++show_voltage(struct device *dev, struct device_attribute *attr, char *buf)
++{
++      return sprintf(buf, "%d\n", twl4030battery_voltage_madc());
++}
++
++static DEVICE_ATTR(charge_current, S_IRUGO | S_IWUGO, show_charge_current, set_charge_current);
++static DEVICE_ATTR(voltage_now_madc, S_IRUGO, show_voltage, NULL);
++
++static int twl4030_bk_bci_battery_get_property(struct power_supply *psy,
++                                      enum power_supply_property psp,
++                                      union power_supply_propval *val)
++{
++      struct twl4030_bci_device_info *di = to_twl4030_bk_bci_device_info(psy);
++
++      switch (psp) {
++      case POWER_SUPPLY_PROP_VOLTAGE_NOW:
++              val->intval = di->bk_voltage_uV;
++              break;
++      default:
++              return -EINVAL;
++      }
++
++      return 0;
++}
++
++static int twl4030_bci_battery_get_property(struct power_supply *psy,
++                                      enum power_supply_property psp,
++                                      union power_supply_propval *val)
++{
++      struct twl4030_bci_device_info *di;
++      int status = 0;
++
++      di = to_twl4030_bci_device_info(psy);
++
++      switch (psp) {
++      case POWER_SUPPLY_PROP_STATUS:
++              val->intval = di->charge_status;
++              return 0;
++      default:
++              break;
++      }
++
++      switch (psp) {
++      case POWER_SUPPLY_PROP_VOLTAGE_NOW:
++      {
++              /* Get latest data from MADC -- not done periodically by
++                 worker as this is more expensive, so only do it when we
++                 are actually asked for the data... */
++              if(di->charge_status == POWER_SUPPLY_STATUS_DISCHARGING)
++                      val->intval = twl4030battery_voltage_madc();
++              else
++                      val->intval = di->voltage_uV;
++
++              break;
++      }
++      case POWER_SUPPLY_PROP_CURRENT_NOW:
++              /* FIXME: Get from MADC */
++              if(di->charge_status == POWER_SUPPLY_STATUS_DISCHARGING)
++                      val->intval = 0;
++              else
++                      val->intval = di->current_uA;
++              break;
++      case POWER_SUPPLY_PROP_TEMP:
++              val->intval = di->temp_C;
++              break;
++      case POWER_SUPPLY_PROP_ONLINE:
++              status = twl4030bci_status();
++              if ((status & AC_STATEC) == AC_STATEC)
++                      val->intval = POWER_SUPPLY_TYPE_MAINS;
++              else if (usb_charger_flag)
++                      val->intval = POWER_SUPPLY_TYPE_USB;
++              else
++                      val->intval = 0;
++              break;
++      case POWER_SUPPLY_PROP_CAPACITY:
++              /* Get latest data from MADC -- not done periodically by
++                 worker as this is more expensive, so only do it when we
++                 are actually asked for the data... */
++              if(di->charge_status == POWER_SUPPLY_STATUS_DISCHARGING)
++                      di->voltage_uV = twl4030battery_voltage_madc();
++
++              /*
++               * need to get the correct percentage value per the
++               * battery characteristics. Approx values for now.
++               */
++              if (di->voltage_uV < 2894 || LVL_1) {
++                      val->intval = 5;
++                      LVL_1 = 0;
++              } else if ((di->voltage_uV < 3451 && di->voltage_uV > 2894)
++                      || LVL_2) {
++                      val->intval = 20;
++                      LVL_2 = 0;
++              } else if ((di->voltage_uV < 3902 && di->voltage_uV > 3451)
++                      || LVL_3) {
++                      val->intval = 50;
++                      LVL_3 = 0;
++              } else if ((di->voltage_uV < 3949 && di->voltage_uV > 3902)
++                      || LVL_4) {
++                      val->intval = 75;
++                      LVL_4 = 0;
++              } else if (di->voltage_uV > 3949)
++                      val->intval = 90;
++              break;
++      default:
++              return -EINVAL;
++      }
++      return 0;
++}
++
++static char *twl4030_bci_supplied_to[] = {
++      "twl4030_bci_battery",
++};
++
++static int __init twl4030_bci_battery_probe(struct platform_device *pdev)
++{
++      struct twl4030_bci_platform_data *pdata = pdev->dev.platform_data;
++      struct twl4030_bci_device_info *di;
++      int irq;
++      int ret;
++
++      di = kzalloc(sizeof(*di), GFP_KERNEL);
++      if (!di)
++              return -ENOMEM;
++
++      di->dev = &pdev->dev;
++      di->bat.name = "twl4030_bci_battery";
++      di->bat.supplied_to = twl4030_bci_supplied_to;
++      di->bat.num_supplicants = ARRAY_SIZE(twl4030_bci_supplied_to);
++      di->bat.type = POWER_SUPPLY_TYPE_BATTERY;
++      di->bat.properties = twl4030_bci_battery_props;
++      di->bat.num_properties = ARRAY_SIZE(twl4030_bci_battery_props);
++      di->bat.get_property = twl4030_bci_battery_get_property;
++      di->bat.external_power_changed =
++                      twl4030_bci_battery_external_power_changed;
++
++      di->charge_status = POWER_SUPPLY_STATUS_UNKNOWN;
++
++      di->bk_bat.name = "twl4030_bci_bk_battery";
++      di->bk_bat.type = POWER_SUPPLY_TYPE_BATTERY;
++      di->bk_bat.properties = twl4030_bk_bci_battery_props;
++      di->bk_bat.num_properties = ARRAY_SIZE(twl4030_bk_bci_battery_props);
++      di->bk_bat.get_property = twl4030_bk_bci_battery_get_property;
++      di->bk_bat.external_power_changed = NULL;
++      di->pdata = pdata;
++
++      /* Set up clocks */
++      twl_i2c_write_u8(TWL4030_MODULE_INTBR, MADC_HFCLK_EN | DEFAULT_MADC_CLK_EN, REG_GPBR1);
++
++      twl4030charger_ac_en(ENABLE, CHARGE_MODE);
++      twl4030charger_usb_en(ENABLE);
++      twl4030battery_hw_level_en(ENABLE);
++      twl4030battery_hw_presence_en(ENABLE);
++
++      platform_set_drvdata(pdev, di);
++
++      /* settings for temperature sensing */
++      ret = twl4030battery_temp_setup();
++      if (ret)
++              goto temp_setup_fail;
++
++      /* enabling GPCH09 for read back battery voltage */
++      if(!di->pdata->no_backup_battery)
++      {
++              ret = twl4030backupbatt_voltage_setup();
++              if (ret)
++                      goto voltage_setup_fail;
++      }
++
++      /* REVISIT do we need to request both IRQs ?? */
++
++      /* request BCI interruption */
++      irq = platform_get_irq(pdev, 1);
++      ret = request_irq(irq, twl4030battery_interrupt,
++              0, pdev->name, NULL);
++      if (ret) {
++              dev_dbg(&pdev->dev, "could not request irq %d, status %d\n",
++                      irq, ret);
++              goto batt_irq_fail;
++      }
++
++      /* request Power interruption */
++      irq = platform_get_irq(pdev, 0);
++      ret = request_irq(irq, twl4030charger_interrupt,
++              0, pdev->name, di);
++
++      if (ret) {
++              dev_dbg(&pdev->dev, "could not request irq %d, status %d\n",
++                      irq, ret);
++              goto chg_irq_fail;
++      }
++
++      ret = power_supply_register(&pdev->dev, &di->bat);
++      if (ret) {
++              dev_dbg(&pdev->dev, "failed to register main battery\n");
++              goto batt_failed;
++      }
++
++      INIT_DELAYED_WORK_DEFERRABLE(&di->twl4030_bci_monitor_work,
++                              twl4030_bci_battery_work);
++      schedule_delayed_work(&di->twl4030_bci_monitor_work, 0);
++
++      if(!pdata->no_backup_battery)
++      {
++              ret = power_supply_register(&pdev->dev, &di->bk_bat);
++              if (ret) {
++                      dev_dbg(&pdev->dev, "failed to register backup battery\n");
++                      goto bk_batt_failed;
++              }
++      }
++
++      ret = device_create_file(di->bat.dev, &dev_attr_voltage_now_madc);
++      ret = device_create_file(di->bat.dev, &dev_attr_charge_current);
++      if (ret) {
++              dev_err(&pdev->dev, "failed to create sysfs entries\n");
++              goto bk_batt_failed;
++      }
++
++      INIT_DELAYED_WORK_DEFERRABLE(&di->twl4030_bk_bci_monitor_work,
++                              twl4030_bk_bci_battery_work);
++      schedule_delayed_work(&di->twl4030_bk_bci_monitor_work, 500);
++
++      set_charge_current (NULL, NULL, "1023", 4);
++      return 0;
++
++bk_batt_failed:
++      if(!pdata->no_backup_battery)
++              power_supply_unregister(&di->bat);
++batt_failed:
++      free_irq(irq, di);
++chg_irq_fail:
++      irq = platform_get_irq(pdev, 1);
++      free_irq(irq, NULL);
++batt_irq_fail:
++voltage_setup_fail:
++temp_setup_fail:
++      twl4030charger_ac_en(DISABLE, CHARGE_MODE);
++      twl4030charger_usb_en(DISABLE);
++      twl4030battery_hw_level_en(DISABLE);
++      twl4030battery_hw_presence_en(DISABLE);
++      kfree(di);
++
++      return ret;
++}
++
++static int __exit twl4030_bci_battery_remove(struct platform_device *pdev)
++{
++      struct twl4030_bci_device_info *di = platform_get_drvdata(pdev);
++      int irq;
++
++      twl4030charger_ac_en(DISABLE, CHARGE_MODE);
++      twl4030charger_usb_en(DISABLE);
++      twl4030battery_hw_level_en(DISABLE);
++      twl4030battery_hw_presence_en(DISABLE);
++
++      irq = platform_get_irq(pdev, 0);
++      free_irq(irq, di);
++
++      irq = platform_get_irq(pdev, 1);
++      free_irq(irq, NULL);
++
++      flush_scheduled_work();
++      power_supply_unregister(&di->bat);
++      power_supply_unregister(&di->bk_bat);
++      platform_set_drvdata(pdev, NULL);
++      kfree(di);
++
++      return 0;
++}
++
++#ifdef CONFIG_PM
++static int twl4030_bci_battery_suspend(struct platform_device *pdev,
++      pm_message_t state)
++{
++      struct twl4030_bci_device_info *di = platform_get_drvdata(pdev);
++
++      di->charge_status = POWER_SUPPLY_STATUS_UNKNOWN;
++      cancel_delayed_work(&di->twl4030_bci_monitor_work);
++      cancel_delayed_work(&di->twl4030_bk_bci_monitor_work);
++      return 0;
++}
++
++static int twl4030_bci_battery_resume(struct platform_device *pdev)
++{
++      struct twl4030_bci_device_info *di = platform_get_drvdata(pdev);
++
++      schedule_delayed_work(&di->twl4030_bci_monitor_work, 0);
++      schedule_delayed_work(&di->twl4030_bk_bci_monitor_work, 50);
++      return 0;
++}
++#else
++#define twl4030_bci_battery_suspend   NULL
++#define twl4030_bci_battery_resume    NULL
++#endif /* CONFIG_PM */
++
++static struct platform_driver twl4030_bci_battery_driver = {
++      .probe          = twl4030_bci_battery_probe,
++      .remove         = __exit_p(twl4030_bci_battery_remove),
++      .suspend        = twl4030_bci_battery_suspend,
++      .resume         = twl4030_bci_battery_resume,
++      .driver         = {
++              .name   = "twl4030_bci",
++      },
++};
++
++MODULE_LICENSE("GPL");
++MODULE_ALIAS("platform:twl4030_bci");
++MODULE_AUTHOR("Texas Instruments Inc");
++
++static int __init twl4030_battery_init(void)
++{
++      return platform_driver_register(&twl4030_bci_battery_driver);
++}
++module_init(twl4030_battery_init);
++
++static void __exit twl4030_battery_exit(void)
++{
++      platform_driver_unregister(&twl4030_bci_battery_driver);
++}
++module_exit(twl4030_battery_exit);
++
+diff --git a/include/linux/i2c/twl.h b/include/linux/i2c/twl.h
+index d975c5b..a3470ce 100644
+--- a/include/linux/i2c/twl.h
++++ b/include/linux/i2c/twl.h
+@@ -442,6 +442,7 @@ struct twl4030_clock_init_data {
+ struct twl4030_bci_platform_data {
+       int *battery_tmp_tbl;
+       unsigned int tblsize;
++      bool no_backup_battery;
+ };
+ /* TWL4030_GPIO_MAX (18) GPIOs, with interrupts */
+-- 
+1.6.6.1
+
index 5c1fa3f..0dc58ab 100644 (file)
@@ -1,14 +1,14 @@
-From d0e8e774fdc82320822246fae3167302730bd7e8 Mon Sep 17 00:00:00 2001
+From 67a87638586acaf7907f94d2f0d3b09190c23880 Mon Sep 17 00:00:00 2001
 From: Gregoire Gentil <gregoire@gentil.com>
 Date: Fri, 12 Mar 2010 11:49:16 +0100
-Subject: [PATCH 16/16] ARM: OMAP: omap3-touchbook: update boardfile
+Subject: [PATCH 16/17] ARM: OMAP: omap3-touchbook: update boardfile
 
 ---
- arch/arm/mach-omap2/board-omap3touchbook.c |  408 +++++++++++++++++++++-------
- 1 files changed, 313 insertions(+), 95 deletions(-)
+ arch/arm/mach-omap2/board-omap3touchbook.c |  417 +++++++++++++++++++++-------
+ 1 files changed, 322 insertions(+), 95 deletions(-)
 
 diff --git a/arch/arm/mach-omap2/board-omap3touchbook.c b/arch/arm/mach-omap2/board-omap3touchbook.c
-index fc3e03c..ec7830e 100644
+index fc3e03c..c22a3e3 100644
 --- a/arch/arm/mach-omap2/board-omap3touchbook.c
 +++ b/arch/arm/mach-omap2/board-omap3touchbook.c
 @@ -1,7 +1,7 @@
@@ -213,10 +213,15 @@ index fc3e03c..ec7830e 100644
  /* VMMC1 for MMC1 pins CMD, CLK, DAT0..DAT3 (20 mA, plus card == max 220 mA) */
  static struct regulator_init_data touchbook_vmmc1 = {
        .constraints = {
-@@ -283,6 +369,10 @@ static struct twl4030_codec_data touchbook_codec_data = {
+@@ -283,6 +369,15 @@ static struct twl4030_codec_data touchbook_codec_data = {
        .audio = &touchbook_audio_data,
  };
  
++static struct twl4030_bci_platform_data touchbook_bci_data = {
++      .tblsize                = 0,
++      .no_backup_battery      = 1,
++};
++
 +static struct twl4030_madc_platform_data touchbook_madc_data = {
 +      .irq_line       = 1,
 +};
@@ -224,7 +229,7 @@ index fc3e03c..ec7830e 100644
  static struct twl4030_platform_data touchbook_twldata = {
        .irq_base       = TWL4030_IRQ_BASE,
        .irq_end        = TWL4030_IRQ_END,
-@@ -291,6 +381,7 @@ static struct twl4030_platform_data touchbook_twldata = {
+@@ -291,10 +386,15 @@ static struct twl4030_platform_data touchbook_twldata = {
        .usb            = &touchbook_usb_data,
        .gpio           = &touchbook_gpio_data,
        .codec          = &touchbook_codec_data,
@@ -232,7 +237,15 @@ index fc3e03c..ec7830e 100644
        .vmmc1          = &touchbook_vmmc1,
        .vsim           = &touchbook_vsim,
        .vdac           = &touchbook_vdac,
-@@ -310,10 +401,18 @@ static struct i2c_board_info __initdata touchBook_i2c_boardinfo[] = {
+       .vpll2          = &touchbook_vpll2,
++
++      /* TouchBook BCI */
++      .bci            = &touchbook_bci_data,
++      .madc           = &touchbook_madc_data,
+ };
+ static struct i2c_board_info __initdata touchbook_i2c_boardinfo[] = {
+@@ -310,10 +410,18 @@ static struct i2c_board_info __initdata touchBook_i2c_boardinfo[] = {
        {
                I2C_BOARD_INFO("bq27200", 0x55),
        },
@@ -251,7 +264,7 @@ index fc3e03c..ec7830e 100644
        /* Standard TouchBook bus */
        omap_register_i2c_bus(1, 2600, touchbook_i2c_boardinfo,
                        ARRAY_SIZE(touchbook_i2c_boardinfo));
-@@ -322,53 +421,16 @@ static int __init omap3_touchbook_i2c_init(void)
+@@ -322,53 +430,16 @@ static int __init omap3_touchbook_i2c_init(void)
        omap_register_i2c_bus(3, 100, touchBook_i2c_boardinfo,
                        ARRAY_SIZE(touchBook_i2c_boardinfo));
  
@@ -311,7 +324,7 @@ index fc3e03c..ec7830e 100644
  static struct gpio_led gpio_leds[] = {
        {
                .name                   = "touchbook::usr0",
-@@ -412,6 +474,7 @@ static struct gpio_keys_button gpio_buttons[] = {
+@@ -412,6 +483,7 @@ static struct gpio_keys_button gpio_buttons[] = {
                .gpio                   = 183,
                .desc                   = "power",
                .wakeup                 = 1,
@@ -319,7 +332,7 @@ index fc3e03c..ec7830e 100644
        },
  };
  
-@@ -428,23 +491,8 @@ static struct platform_device keys_gpio = {
+@@ -428,23 +500,8 @@ static struct platform_device keys_gpio = {
        },
  };
  
@@ -343,7 +356,7 @@ index fc3e03c..ec7830e 100644
        omap2_init_common_hw(mt46h32m32lf6_sdrc_params,
                             mt46h32m32lf6_sdrc_params, omap35x_mpu_rate_table,
                             omap35x_dsp_rate_table, omap35x_l3_rate_table);
-@@ -456,9 +504,9 @@ static void __init omap3_touchbook_init_irq(void)
+@@ -456,9 +513,9 @@ static void __init omap3_touchbook_init_irq(void)
  }
  
  static struct platform_device *omap3_touchbook_devices[] __initdata = {
@@ -354,7 +367,7 @@ index fc3e03c..ec7830e 100644
  };
  
  static void __init omap3touchbook_flash_init(void)
-@@ -500,7 +548,7 @@ static void __init omap3touchbook_flash_init(void)
+@@ -500,7 +557,7 @@ static void __init omap3touchbook_flash_init(void)
        }
  }
  
@@ -363,7 +376,7 @@ index fc3e03c..ec7830e 100644
  
        .port_mode[0] = EHCI_HCD_OMAP_MODE_PHY,
        .port_mode[1] = EHCI_HCD_OMAP_MODE_PHY,
-@@ -512,6 +560,170 @@ static struct ehci_hcd_omap_platform_data ehci_pdata __initconst = {
+@@ -512,6 +569,170 @@ static struct ehci_hcd_omap_platform_data ehci_pdata __initconst = {
        .reset_gpio_port[2]  = -EINVAL
  };
  
@@ -534,7 +547,7 @@ index fc3e03c..ec7830e 100644
  static void omap3_touchbook_poweroff(void)
  {
        int r;
-@@ -525,33 +737,26 @@ static void omap3_touchbook_poweroff(void)
+@@ -525,33 +746,26 @@ static void omap3_touchbook_poweroff(void)
        gpio_direction_output(TB_KILL_POWER_GPIO, 0);
  }
  
@@ -575,7 +588,7 @@ index fc3e03c..ec7830e 100644
        usb_musb_init();
        usb_ehci_init(&ehci_pdata);
        omap3touchbook_flash_init();
-@@ -559,6 +764,17 @@ static void __init omap3_touchbook_init(void)
+@@ -559,6 +773,17 @@ static void __init omap3_touchbook_init(void)
        /* Ensure SDRC pins are mux'd for self-refresh */
        omap_mux_init_signal("sdrc_cke0", OMAP_PIN_OUTPUT);
        omap_mux_init_signal("sdrc_cke1", OMAP_PIN_OUTPUT);
@@ -593,7 +606,7 @@ index fc3e03c..ec7830e 100644
  }
  
  static void __init omap3_touchbook_map_io(void)
-@@ -567,6 +783,8 @@ static void __init omap3_touchbook_map_io(void)
+@@ -567,6 +792,8 @@ static void __init omap3_touchbook_map_io(void)
        omap2_map_common_io();
  }
  
index 48f61b5..8a06ead 100644 (file)
@@ -1,4 +1,4 @@
-From 0e43db0084633476e60f686627594042ca5cfe3a Mon Sep 17 00:00:00 2001
+From 1f36c057ab83a5c5e8162094fb52022edd5ba9b8 Mon Sep 17 00:00:00 2001
 From: Koen Kooi <koen@dominion.thruhere.net>
 Date: Tue, 4 May 2010 09:01:21 +0200
 Subject: [PATCH 17/17] ARM: OMAP: add 800MHz OPP and remove 125MHz one
index 4165d4c..6f2b7bd 100644 (file)
@@ -1,7 +1,7 @@
 #
 # Automatically generated make config: don't edit
 # Linux kernel version: 2.6.32
-# Tue May  4 08:42:43 2010
+# Mon May 10 12:50:28 2010
 #
 CONFIG_ARM=y
 CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -1489,6 +1489,7 @@ CONFIG_POWER_SUPPLY=y
 # CONFIG_BATTERY_DS2782 is not set
 CONFIG_BATTERY_BQ27x00=y
 # CONFIG_BATTERY_MAX17040 is not set
+CONFIG_TWL4030_BCI_BATTERY=y
 CONFIG_HWMON=y
 # CONFIG_HWMON_VID is not set
 # CONFIG_HWMON_DEBUG_CHIP is not set
@@ -1598,7 +1599,7 @@ CONFIG_MFD_CORE=y
 CONFIG_TWL4030_CORE=y
 # CONFIG_TWL4030_POWER is not set
 CONFIG_TWL4030_CODEC=y
-# CONFIG_TWL4030_MADC is not set
+CONFIG_TWL4030_MADC=y
 # CONFIG_MFD_TMIO is not set
 # CONFIG_MFD_T7L66XB is not set
 # CONFIG_MFD_TC6387XB is not set
index 007c119..11e261b 100644 (file)
@@ -17,46 +17,44 @@ SRC_URI = "git://arago-project.org/git/people/sriram/ti-psp-omap.git;protocol=gi
            file://0003-ARM-OMAP-add-support-for-TCT-Zippy-to-Beagle-board-f.patch;patch=1 \
            file://0004-ARM-OMAP-Make-beagle-u-boot-partition-writable.patch;patch=1 \
            file://0005-board-omap3-beagle-add-DSS2-support.patch;patch=1 \
-           file://0006-beagleboard-omap3_-foo-_rate_table-omap35x_-foo-_rat.patch;patch=1 \
-           file://0007-board-omap3beagle-prepare-for-DM3730-based-Beagleboa.patch;patch=1 \
-           file://0008-board-omap3beagle-turn-on-power-to-camera-on-boot-an.patch;patch=1 \
-           file://0009-ASoC-enable-audio-capture-by-default-for-twl4030.patch;patch=1 \
-           file://0010-MTD-NAND-omap2-proper-fix-for-subpage-read-ECC-error.patch;patch=1 \
-           file://0011-OMAP3630-DSS2-Enable-Pre-Multiplied-Alpha-Support.patch;patch=1 \
-           file://0012-DSS2-add-bootarg-for-selecting-svideo-or-composite-f.patch;patch=1 \
-           file://0013-ISP-add-some-more-from-Leopard-imaging-patch.patch;patch=1 \
-           file://0014-ARM-OMAP-Overo-Add-support-for-second-ethernet-port.patch;patch=1 \
-           file://0015-drivers-net-smsc911x-return-ENODEV-if-device-is-not-.patch;patch=1 \
-           file://0016-drivers-input-touchscreen-ads7846-return-ENODEV-if-d.patch;patch=1 \
-           file://0017-drivers-mfd-add-twl4030-madc-driver.patch;patch=1 \
-           file://0018-ARM-OMAP-Add-missing-twl4030-madc-header-file.patch;patch=1 \
-           file://0019-ARM-OMAP-Add-twl4030-madc-support-to-Overo.patch;patch=1 \
-           file://0020-ARM-OMAP-Add-twl4030-madc-support-to-Beagle.patch;patch=1 \
-           file://0021-netdev-rt73usb-add-vendor-device-ID-for-Ceiva-Wirele.patch;patch=1 \
-           file://0022-mmc-don-t-display-single-block-read-console-messages.patch;patch=1 \
-           file://0023-ARM-OMAP2-mmc-twl4030-move-clock-input-selection-pri.patch;patch=1 \
-           file://0024-board-overo-add-PM-code-and-sync-with-http-www.sakom.patch;patch=1 \
-           file://0025-twl4030-madc-adjust-for-twl4030-twl-api-changes.patch;patch=1 \
-           file://0026-OMAP-DSS2-Re-add-support-for-Samsung-lte430wq-f0c-pa.patch;patch=1 \
-           file://0027-OMAP-DSS2-Add-support-for-LG-Philips-LB035Q02-panel.patch;patch=1 \
-           file://0028-Fix-for-bus-width-which-improves-SD-card-s-peformanc.patch;patch=1 \
-           file://0029-ARM-VFP-add-support-to-sync-the-VFP-state-of-the-cur.patch;patch=1 \
-           file://0030-ARM-VFP-preserve-the-HW-context-when-calling-signal-.patch;patch=1 \
-           file://0031-Switch-SGX-clocks-to-200MHz-on-DM37xx-OMAP36xx.patch;patch=1 \
-           file://0032-modedb.c-add-proper-720p60-mode.patch;patch=1 \
-           file://0033-RTC-add-support-for-backup-battery-recharge.patch;patch=1 \
-           file://0034-ARM-Add-prompt-for-CONFIG_ALIGNMENT_TRAP.patch;patch=1 \
-           file://0035-ARM-Print-warning-on-alignment-trap-in-kernel-mode.patch;patch=1 \
-           file://0036-ARM-Expose-some-CPU-control-registers-via-sysfs.patch;patch=1 \
-           file://0037-ARM-Add-option-to-allow-userspace-PLE-access.patch;patch=1 \
-           file://0038-ARM-Add-option-to-allow-userspace-access-to-performa.patch;patch=1 \
-           file://0039-ARM-Expose-some-PMON-registers-through-sysfs.patch;patch=1 \
-           file://0040-musb-allow-host-io-without-gadget-module.patch;patch=1 \
-           file://0041-MTD-silence-ecc-errors-on-mtdblock0.patch;patch=1 \
-           file://0042-ARM-OMAP-update-beagleboard-defconfig.patch;patch=1 \
-           file://0043-ARM-OMAP-beagleboard-Add-infrastructure-to-do-fixups.patch;patch=1 \
-           file://0044-ARM-OMAP-beagleboard-pre-export-GPIOs-to-userspace-w.patch;patch=1 \
-           file://0045-ARM-OMAP-beagleboard-initialize-ds1307-and-eeprom-on.patch;patch=1 \
+           file://0006-board-omap3beagle-prepare-for-DM3730-based-Beagleboa.patch;patch=1 \
+           file://0007-ARM-OMAP-beagleboard-Add-infrastructure-to-do-fixups.patch;patch=1 \
+           file://0008-ARM-OMAP-beagleboard-pre-export-GPIOs-to-userspace-w.patch;patch=1 \
+           file://0009-ARM-OMAP-beagleboard-initialize-ds1307-and-eeprom-on.patch;patch=1 \
+           file://0010-ARM-OMAP-update-beagleboard-defconfig.patch;patch=1 \
+           file://0011-ASoC-enable-audio-capture-by-default-for-twl4030.patch;patch=1 \
+           file://0012-MTD-NAND-omap2-proper-fix-for-subpage-read-ECC-error.patch;patch=1 \
+           file://0013-OMAP3630-DSS2-Enable-Pre-Multiplied-Alpha-Support.patch;patch=1 \
+           file://0014-DSS2-add-bootarg-for-selecting-svideo-or-composite-f.patch;patch=1 \
+           file://0015-ISP-add-some-more-from-Leopard-imaging-patch.patch;patch=1 \
+           file://0016-ARM-OMAP-Overo-Add-support-for-second-ethernet-port.patch;patch=1 \
+           file://0017-drivers-net-smsc911x-return-ENODEV-if-device-is-not-.patch;patch=1 \
+           file://0018-drivers-input-touchscreen-ads7846-return-ENODEV-if-d.patch;patch=1 \
+           file://0019-drivers-mfd-add-twl4030-madc-driver.patch;patch=1 \
+           file://0020-ARM-OMAP-Add-missing-twl4030-madc-header-file.patch;patch=1 \
+           file://0021-ARM-OMAP-Add-twl4030-madc-support-to-Overo.patch;patch=1 \
+           file://0022-ARM-OMAP-Add-twl4030-madc-support-to-Beagle.patch;patch=1 \
+           file://0023-netdev-rt73usb-add-vendor-device-ID-for-Ceiva-Wirele.patch;patch=1 \
+           file://0024-mmc-don-t-display-single-block-read-console-messages.patch;patch=1 \
+           file://0025-ARM-OMAP2-mmc-twl4030-move-clock-input-selection-pri.patch;patch=1 \
+           file://0026-board-overo-add-PM-code-and-sync-with-http-www.sakom.patch;patch=1 \
+           file://0027-twl4030-madc-adjust-for-twl4030-twl-api-changes.patch;patch=1 \
+           file://0028-OMAP-DSS2-Re-add-support-for-Samsung-lte430wq-f0c-pa.patch;patch=1 \
+           file://0029-OMAP-DSS2-Add-support-for-LG-Philips-LB035Q02-panel.patch;patch=1 \
+           file://0030-Fix-for-bus-width-which-improves-SD-card-s-peformanc.patch;patch=1 \
+           file://0031-ARM-VFP-add-support-to-sync-the-VFP-state-of-the-cur.patch;patch=1 \
+           file://0032-ARM-VFP-preserve-the-HW-context-when-calling-signal-.patch;patch=1 \
+           file://0033-Switch-SGX-clocks-to-200MHz-on-DM37xx-OMAP36xx.patch;patch=1 \
+           file://0034-modedb.c-add-proper-720p60-mode.patch;patch=1 \
+           file://0035-RTC-add-support-for-backup-battery-recharge.patch;patch=1 \
+           file://0036-ARM-Add-prompt-for-CONFIG_ALIGNMENT_TRAP.patch;patch=1 \
+           file://0037-ARM-Print-warning-on-alignment-trap-in-kernel-mode.patch;patch=1 \
+           file://0038-ARM-Expose-some-CPU-control-registers-via-sysfs.patch;patch=1 \
+           file://0039-ARM-Add-option-to-allow-userspace-PLE-access.patch;patch=1 \
+           file://0040-ARM-Add-option-to-allow-userspace-access-to-performa.patch;patch=1 \
+           file://0041-ARM-Expose-some-PMON-registers-through-sysfs.patch;patch=1 \
+           file://0042-musb-allow-host-io-without-gadget-module.patch;patch=1 \
+           file://0043-MTD-silence-ecc-errors-on-mtdblock0.patch;patch=1 \
            file://defconfig"
 
 SRC_URI_append_beagleboard = " file://logo_linux_clut224.ppm \
@@ -71,15 +69,15 @@ SRC_URI_append_omap3-touchbook = " \
                                   file://0006-ads7846-read-max-mix-x-y-from-pdata.patch;patch=1 \
                                   file://0007-ads7846-add-settling-delay-to-pdata.patch;patch=1 \
                                   file://0008-DSS2-OMAPFB-Translate-X-Y-coordinates-for-the-video-.patch;patch=1 \
-                                  file://0009-DSS2-fix-rotation-offsets.patch;patch=1 \
-                                  file://0010-DSS2-Fix-scaling-checks-when-rotation-is-90-or-270-d.patch;patch=1 \
-                                  file://0011-add-touchbook-hid-driver.patch;patch=1 \
-                                  file://0012-Make-backlight-controls-accessible-to-users.patch;patch=1 \
-                                  file://0013-ads7846-don-t-error-out-when-there-s-no-pendown-gpio.patch;patch=1 \
-                                  file://0014-ASoC-add-driver-for-omap3-touchbook.patch;patch=1 \
-                                  file://0015-backlight-add-PWM-support.patch;patch=1 \
+                                  file://0009-DSS2-Fix-scaling-checks-when-rotation-is-90-or-270-d.patch;patch=1 \
+                                  file://0010-add-touchbook-hid-driver.patch;patch=1 \
+                                  file://0011-Make-backlight-controls-accessible-to-users.patch;patch=1 \
+                                  file://0012-ads7846-don-t-error-out-when-there-s-no-pendown-gpio.patch;patch=1 \
+                                  file://0013-ASoC-add-driver-for-omap3-touchbook.patch;patch=1 \
+                                  file://0014-backlight-add-PWM-support.patch;patch=1 \
+                                  file://0015-Forward-port-TWL4030-BCI-driver-from-2.6.29-to-2.6.3.patch;patch=1 \
                                   file://0016-ARM-OMAP-omap3-touchbook-update-boardfile.patch;patch=1 \
-#                                  file://0017-ARM-OMAP-add-800MHz-OPP-and-remove-125MHz-one.patch;patch=1 \
+#                                 file://0017-ARM-OMAP-add-800MHz-OPP-and-remove-125MHz-one.patch;patch=1 \
 "
 
 addtask quiltfixup before do_patch after do_unpack