summaryrefslogtreecommitdiff
path: root/recipes/linux/linux-omap-psp-2.6.32
diff options
context:
space:
mode:
authorKoen Kooi <k-kooi@ti.com>2010-03-31 12:01:25 +0200
committerKoen Kooi <koen@openembedded.org>2010-04-12 19:43:31 +0200
commita13876b305618e4491524d287f47f0c2f7eafa74 (patch)
treebcbdc307f931a2bebbe4d0469e565bc911bc5d63 /recipes/linux/linux-omap-psp-2.6.32
parenta4c06e0afce07bca6223eedea39de8d0ab34a94f (diff)
linux-omap-psp 2.6.32: update touchbook patches and defconfig
Diffstat (limited to 'recipes/linux/linux-omap-psp-2.6.32')
-rw-r--r--recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0001-ARM-OMAP-add-spi-platform-devices.patch4
-rw-r--r--recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0002-MMA7455L-accelerometer-driver.patch4
-rw-r--r--recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0003-bq27x00_battery-remove-error-message-output.patch4
-rw-r--r--recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0004-bq27x00_battery-add-charged-gpio.patch4
-rw-r--r--recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0005-ARM-OMAP-Hack-beagle-asoc-driver-to-support-touchboo.patch85
-rw-r--r--recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0005-adf7846-add-more-debugging.patch (renamed from recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0007-adf7846-add-more-debugging.patch)4
-rw-r--r--recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0006-ads7846-read-max-mix-x-y-from-pdata.patch (renamed from recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0008-ads7846-read-max-mix-x-y-from-pdata.patch)4
-rw-r--r--recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0007-ads7846-add-settling-delay-to-pdata.patch (renamed from recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0009-ads7846-add-settling-delay-to-pdata.patch)4
-rw-r--r--recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0008-DSS2-OMAPFB-Translate-X-Y-coordinates-for-the-video-.patch99
-rw-r--r--recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0009-DSS2-fix-rotation-offsets.patch69
-rw-r--r--recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0010-DSS2-Fix-scaling-checks-when-rotation-is-90-or-270-d.patch (renamed from recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0011-DSS2-Fix-scaling-checks-when-rotation-is-90-or-270-d.patch)6
-rw-r--r--recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0010-Touch-Book-turn-on-off-the-class-D-amplifier-dependi.patch90
-rw-r--r--recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0011-add-touchbook-hid-driver.patch (renamed from recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0012-add-touchbook-hid-driver.patch)4
-rw-r--r--recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0012-Make-backlight-controls-accessible-to-users.patch (renamed from recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0013-Make-backlight-controls-accessible-to-users.patch)4
-rw-r--r--recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0013-ads7846-don-t-error-out-when-there-s-no-pendown-gpio.patch (renamed from recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0014-ads7846-don-t-error-out-when-there-s-no-pendown-gpio.patch)4
-rw-r--r--recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0014-ASoC-add-driver-for-omap3-touchbook.patch344
-rw-r--r--recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0015-backlight-add-PWM-support.patch126
-rw-r--r--recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0016-ARM-OMAP-omap3-touchbook-update-boardfile.patch (renamed from recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0006-ARM-OMAP-omap3-touchbook-update-boardfile.patch)26
-rw-r--r--recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/defconfig115
19 files changed, 733 insertions, 267 deletions
diff --git a/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0001-ARM-OMAP-add-spi-platform-devices.patch b/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0001-ARM-OMAP-add-spi-platform-devices.patch
index f44abc3077..f1995f5148 100644
--- a/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0001-ARM-OMAP-add-spi-platform-devices.patch
+++ b/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0001-ARM-OMAP-add-spi-platform-devices.patch
@@ -1,7 +1,7 @@
-From 45e62c073f088072ea131e5eda1446f63fc97acf Mon Sep 17 00:00:00 2001
+From 87d5c6d0256618e63e20777dcf3bc57f71249415 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/14] ARM: OMAP: add spi platform devices
+Subject: [PATCH 01/16] ARM: OMAP: add spi platform devices
---
arch/arm/mach-omap2/devices.c | 32 ++++++++++++++++++++++++++++++++
diff --git a/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0002-MMA7455L-accelerometer-driver.patch b/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0002-MMA7455L-accelerometer-driver.patch
index 6a19217541..f8e76065ee 100644
--- a/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0002-MMA7455L-accelerometer-driver.patch
+++ b/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0002-MMA7455L-accelerometer-driver.patch
@@ -1,7 +1,7 @@
-From dce7f7b177775843b843dcc147ac04e9a99bb60a Mon Sep 17 00:00:00 2001
+From 0b1495ce483319984853f09a0d51b97e119df980 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/14] MMA7455L accelerometer driver
+Subject: [PATCH 02/16] MMA7455L accelerometer driver
---
drivers/input/misc/Kconfig | 9 +
diff --git a/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0003-bq27x00_battery-remove-error-message-output.patch b/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0003-bq27x00_battery-remove-error-message-output.patch
index 228f2aacbd..ad8017feda 100644
--- a/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0003-bq27x00_battery-remove-error-message-output.patch
+++ b/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0003-bq27x00_battery-remove-error-message-output.patch
@@ -1,7 +1,7 @@
-From 914cf78bd36ac36b0f33ef4108a2bf68337a612c Mon Sep 17 00:00:00 2001
+From 49e4563c87bce62dc4f69ad692a59e82ca0f8640 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/14] bq27x00_battery: remove error message output
+Subject: [PATCH 03/16] bq27x00_battery: remove error message output
---
drivers/power/bq27x00_battery.c | 5 -----
diff --git a/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0004-bq27x00_battery-add-charged-gpio.patch b/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0004-bq27x00_battery-add-charged-gpio.patch
index 670103287c..32b2c35b34 100644
--- a/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0004-bq27x00_battery-add-charged-gpio.patch
+++ b/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0004-bq27x00_battery-add-charged-gpio.patch
@@ -1,7 +1,7 @@
-From c72622f546557a12ba1c1a0d6d678cb8fb886039 Mon Sep 17 00:00:00 2001
+From e9ae476c0553b5f01a5f38621a4abf68deb24874 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/14] bq27x00_battery: add charged gpio
+Subject: [PATCH 04/16] bq27x00_battery: add charged gpio
---
drivers/power/bq27x00_battery.c | 21 +++++++++++++++++++++
diff --git a/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0005-ARM-OMAP-Hack-beagle-asoc-driver-to-support-touchboo.patch b/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0005-ARM-OMAP-Hack-beagle-asoc-driver-to-support-touchboo.patch
deleted file mode 100644
index 8d0cb2913e..0000000000
--- a/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0005-ARM-OMAP-Hack-beagle-asoc-driver-to-support-touchboo.patch
+++ /dev/null
@@ -1,85 +0,0 @@
-From 3937249a21d70f55b5f8a5d2a94e28bac588c09f Mon Sep 17 00:00:00 2001
-From: Gregoire Gentil <gregoire@gentil.com>
-Date: Fri, 12 Mar 2010 11:47:59 +0100
-Subject: [PATCH 05/14] ARM: OMAP: Hack beagle asoc driver to support touchbook, tweak touchbook KConfig
-
----
- arch/arm/mach-omap2/Kconfig | 1 +
- sound/soc/omap/Kconfig | 8 ++++++++
- sound/soc/omap/Makefile | 2 ++
- sound/soc/omap/omap3beagle.c | 4 ++--
- 4 files changed, 13 insertions(+), 2 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/Kconfig b/arch/arm/mach-omap2/Kconfig
-index b72ae06..6f2bf4e 100644
---- a/arch/arm/mach-omap2/Kconfig
-+++ b/arch/arm/mach-omap2/Kconfig
-@@ -113,6 +113,7 @@ config MACH_OMAP3_PANDORA
- config MACH_OMAP3_TOUCHBOOK
- bool "OMAP3 Touch Book"
- depends on ARCH_OMAP3 && ARCH_OMAP34XX
-+ select OMAP_PACKAGE_CBB
- select BACKLIGHT_CLASS_DEVICE
-
- config MACH_OMAP_3430SDP
-diff --git a/sound/soc/omap/Kconfig b/sound/soc/omap/Kconfig
-index 61952aa..a7c06ab 100644
---- a/sound/soc/omap/Kconfig
-+++ b/sound/soc/omap/Kconfig
-@@ -101,6 +101,14 @@ config SND_OMAP_SOC_OMAP3_BEAGLE
- help
- Say Y if you want to add support for SoC audio on the Beagleboard.
-
-+config SND_OMAP_SOC_OMAP3_TOUCHBOOK
-+ tristate "SoC Audio support for OMAP3 Touch Book"
-+ depends on TWL4030_CORE && SND_OMAP_SOC && MACH_OMAP3_TOUCHBOOK
-+ select SND_OMAP_SOC_MCBSP
-+ select SND_SOC_TWL4030
-+ help
-+ Say Y if you want to add support for SoC audio on the Touch Book.
-+
- config SND_OMAP_SOC_ZOOM2
- tristate "SoC Audio support for Zoom2"
- depends on TWL4030_CORE && SND_OMAP_SOC && MACH_OMAP_ZOOM2
-diff --git a/sound/soc/omap/Makefile b/sound/soc/omap/Makefile
-index 19283e5..9c972d6 100644
---- a/sound/soc/omap/Makefile
-+++ b/sound/soc/omap/Makefile
-@@ -16,6 +16,7 @@ snd-soc-am3517evm-objs := am3517evm.o
- snd-soc-sdp3430-objs := sdp3430.o
- snd-soc-omap3pandora-objs := omap3pandora.o
- snd-soc-omap3beagle-objs := omap3beagle.o
-+snd-soc-omap3touchbook-objs := omap3beagle.o
- snd-soc-zoom2-objs := zoom2.o
- snd-soc-igep0020-objs := igep0020.o
-
-@@ -29,5 +30,6 @@ obj-$(CONFIG_SND_OMAP_SOC_AM3517EVM) += snd-soc-am3517evm.o
- obj-$(CONFIG_SND_OMAP_SOC_SDP3430) += snd-soc-sdp3430.o
- obj-$(CONFIG_SND_OMAP_SOC_OMAP3_PANDORA) += snd-soc-omap3pandora.o
- obj-$(CONFIG_SND_OMAP_SOC_OMAP3_BEAGLE) += snd-soc-omap3beagle.o
-+obj-$(CONFIG_SND_OMAP_SOC_OMAP3_TOUCHBOOK) += snd-soc-omap3beagle.o
- obj-$(CONFIG_SND_OMAP_SOC_ZOOM2) += snd-soc-zoom2.o
- obj-$(CONFIG_SND_OMAP_SOC_IGEP0020) += snd-soc-igep0020.o
-diff --git a/sound/soc/omap/omap3beagle.c b/sound/soc/omap/omap3beagle.c
-index d88ad5c..248b789 100644
---- a/sound/soc/omap/omap3beagle.c
-+++ b/sound/soc/omap/omap3beagle.c
-@@ -116,13 +116,13 @@ static struct platform_device *omap3beagle_snd_device;
- static int __init omap3beagle_soc_init(void)
- {
- int ret;
--
-+/*
- if (!machine_is_omap3_beagle()) {
- pr_debug("Not OMAP3 Beagle!\n");
- return -ENODEV;
- }
- pr_info("OMAP3 Beagle SoC init\n");
--
-+*/
- omap3beagle_snd_device = platform_device_alloc("soc-audio", -1);
- if (!omap3beagle_snd_device) {
- printk(KERN_ERR "Platform device allocation failed\n");
---
-1.6.6.1
-
diff --git a/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0007-adf7846-add-more-debugging.patch b/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0005-adf7846-add-more-debugging.patch
index d5942c8996..dd039e5aca 100644
--- a/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0007-adf7846-add-more-debugging.patch
+++ b/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0005-adf7846-add-more-debugging.patch
@@ -1,7 +1,7 @@
-From 1b90e477d484f666ba2224b950b2810fcaf53df2 Mon Sep 17 00:00:00 2001
+From 798baf132eac5022ce6c2da7e2d54eb0e65b0193 Mon Sep 17 00:00:00 2001
From: Gregoire Gentil <gregoire@gentil.com>
Date: Fri, 12 Mar 2010 13:50:38 +0100
-Subject: [PATCH 07/14] adf7846: add more debugging
+Subject: [PATCH 05/16] adf7846: add more debugging
---
drivers/input/touchscreen/ads7846.c | 73 +++++++++++++++++++++++++++++++++++
diff --git a/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0008-ads7846-read-max-mix-x-y-from-pdata.patch b/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0006-ads7846-read-max-mix-x-y-from-pdata.patch
index 50c56fc1f7..b39e9b1c74 100644
--- a/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0008-ads7846-read-max-mix-x-y-from-pdata.patch
+++ b/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0006-ads7846-read-max-mix-x-y-from-pdata.patch
@@ -1,7 +1,7 @@
-From 95fae00f5191e445a2192a85c73b02b287eb3db6 Mon Sep 17 00:00:00 2001
+From 5b11cfec0cd8f01eba7468a76e764d526ad15bdb Mon Sep 17 00:00:00 2001
From: Gregoire Gentil <gregoire@gentil.com>
Date: Fri, 12 Mar 2010 13:50:45 +0100
-Subject: [PATCH 08/14] ads7846: read max/mix x/y from pdata
+Subject: [PATCH 06/16] ads7846: read max/mix x/y from pdata
---
drivers/input/touchscreen/ads7846.c | 5 +++--
diff --git a/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0009-ads7846-add-settling-delay-to-pdata.patch b/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0007-ads7846-add-settling-delay-to-pdata.patch
index b60ab833f2..31a7568ef0 100644
--- a/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0009-ads7846-add-settling-delay-to-pdata.patch
+++ b/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0007-ads7846-add-settling-delay-to-pdata.patch
@@ -1,7 +1,7 @@
-From dd9c33edf9c2734a7107c96c61d3ffcea90837f4 Mon Sep 17 00:00:00 2001
+From cd23f48aad0b24bc2ed8156bc578a2b2d8f2ed9f Mon Sep 17 00:00:00 2001
From: Gregoire Gentil <gregoire@gentil.com>
Date: Fri, 12 Mar 2010 13:50:52 +0100
-Subject: [PATCH 09/14] ads7846: add settling delay to pdata
+Subject: [PATCH 07/16] ads7846: add settling delay to pdata
---
drivers/input/touchscreen/ads7846.c | 22 ++++++++++++++++++++++
diff --git a/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0008-DSS2-OMAPFB-Translate-X-Y-coordinates-for-the-video-.patch b/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0008-DSS2-OMAPFB-Translate-X-Y-coordinates-for-the-video-.patch
new file mode 100644
index 0000000000..e4c4361bcf
--- /dev/null
+++ b/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0008-DSS2-OMAPFB-Translate-X-Y-coordinates-for-the-video-.patch
@@ -0,0 +1,99 @@
+From 7f0896fb74c200f0dd39c8f66cac510f511b60f7 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.
+
+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
+the display. This patch assumes that you rotate plane 0 before rotating
+plane 1. Patch also corrects the scaling parameters so that the video is
+displayed in the correct orientation (vertically, instead of horizontally)
+when rotating by 90 / 270 degrees.
+
+Signed-off-by: Tim Yamin <plasm@roo.me.uk>
+---
+ drivers/video/omap2/dss/dispc.c | 16 ++++++++++++----
+ drivers/video/omap2/dss/manager.c | 2 +-
+ drivers/video/omap2/dss/overlay.c | 19 ++++++++++++++-----
+ 3 files changed, 27 insertions(+), 10 deletions(-)
+
+diff --git a/drivers/video/omap2/dss/dispc.c b/drivers/video/omap2/dss/dispc.c
+index c6d5fc5..1b38c49 100644
+--- a/drivers/video/omap2/dss/dispc.c
++++ b/drivers/video/omap2/dss/dispc.c
+@@ -1685,10 +1685,18 @@ static int _dispc_setup_plane(enum omap_plane plane,
+ _dispc_set_pic_size(plane, width, height);
+
+ if (plane != OMAP_DSS_GFX) {
+- _dispc_set_scaling(plane, width, height,
+- out_width, out_height,
+- ilace, five_taps, fieldmode);
+- _dispc_set_vid_size(plane, out_width, out_height);
++ if (rotation == 1 || rotation == 3) {
++ _dispc_set_scaling(plane, width, height,
++ out_height, out_width,
++ ilace, five_taps, fieldmode);
++ _dispc_set_vid_size(plane, out_height, out_width);
++ } else {
++ _dispc_set_scaling(plane, width, height,
++ out_width, out_height,
++ ilace, five_taps, fieldmode);
++ _dispc_set_vid_size(plane, out_width, out_height);
++ }
++
+ _dispc_set_vid_color_conv(plane, cconv);
+ }
+
+diff --git a/drivers/video/omap2/dss/manager.c b/drivers/video/omap2/dss/manager.c
+index 27d9c46..7c62dea 100644
+--- a/drivers/video/omap2/dss/manager.c
++++ b/drivers/video/omap2/dss/manager.c
+@@ -702,7 +702,7 @@ static int configure_overlay(enum omap_plane plane)
+ u16 outw, outh;
+ u16 x, y, w, h;
+ u32 paddr;
+- int r;
++ int r, pos_x = 0, pos_y = 0;
+
+ DSSDBGF("%d", plane);
+
+diff --git a/drivers/video/omap2/dss/overlay.c b/drivers/video/omap2/dss/overlay.c
+index b7f9a73..0bc0592 100644
+--- a/drivers/video/omap2/dss/overlay.c
++++ b/drivers/video/omap2/dss/overlay.c
+@@ -374,6 +374,20 @@ int dss_check_overlay(struct omap_overlay *ovl, struct omap_dss_device *dssdev)
+ outh = info->out_height;
+ }
+
++ if ((ovl->supported_modes & info->color_mode) == 0) {
++ DSSERR("overlay doesn't support mode %d\n", info->color_mode);
++ return -EINVAL;
++ }
++
++ if (ovl->id != OMAP_DSS_GFX && (info->rotation == 1 ||
++ info->rotation == 3)) {
++ if(outw > dh || outh > dw)
++ return -EINVAL;
++
++ /* If coordinates are invalid, they will be clipped later... */
++ return 0;
++ }
++
+ if (dw < info->pos_x + outw) {
+ DSSDBG("check_overlay failed 1: %d < %d + %d\n",
+ dw, info->pos_x, outw);
+@@ -386,11 +400,6 @@ int dss_check_overlay(struct omap_overlay *ovl, struct omap_dss_device *dssdev)
+ return -EINVAL;
+ }
+
+- if ((ovl->supported_modes & info->color_mode) == 0) {
+- DSSERR("overlay doesn't support mode %d\n", info->color_mode);
+- return -EINVAL;
+- }
+-
+ return 0;
+ }
+
+--
+1.6.6.1
+
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
new file mode 100644
index 0000000000..3a2f3b268b
--- /dev/null
+++ b/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0009-DSS2-fix-rotation-offsets.patch
@@ -0,0 +1,69 @@
+From a592b342f23d503feebd3c895b1b6d176e132cdb 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
+
diff --git a/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0011-DSS2-Fix-scaling-checks-when-rotation-is-90-or-270-d.patch b/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0010-DSS2-Fix-scaling-checks-when-rotation-is-90-or-270-d.patch
index 5045500656..3a59b59ed6 100644
--- a/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0011-DSS2-Fix-scaling-checks-when-rotation-is-90-or-270-d.patch
+++ b/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0010-DSS2-Fix-scaling-checks-when-rotation-is-90-or-270-d.patch
@@ -1,14 +1,14 @@
-From 0f0b6b8dbe24f34d0442a734302b0c406bad8f74 Mon Sep 17 00:00:00 2001
+From 23ddd0dafbf79d7919aa90479dc038e1d9e7c905 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 11/14] DSS2: Fix scaling checks when rotation is 90 or 270 degrees.
+Subject: [PATCH 10/16] DSS2: Fix scaling checks when rotation is 90 or 270 degrees.
---
drivers/video/omap2/dss/dispc.c | 25 +++++++++++++++++++------
1 files changed, 19 insertions(+), 6 deletions(-)
diff --git a/drivers/video/omap2/dss/dispc.c b/drivers/video/omap2/dss/dispc.c
-index c6d5fc5..8da571e 100644
+index 1b38c49..d648c08 100644
--- a/drivers/video/omap2/dss/dispc.c
+++ b/drivers/video/omap2/dss/dispc.c
@@ -1563,16 +1563,29 @@ static int _dispc_setup_plane(enum omap_plane plane,
diff --git a/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0010-Touch-Book-turn-on-off-the-class-D-amplifier-dependi.patch b/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0010-Touch-Book-turn-on-off-the-class-D-amplifier-dependi.patch
deleted file mode 100644
index 1edce7b7c4..0000000000
--- a/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0010-Touch-Book-turn-on-off-the-class-D-amplifier-dependi.patch
+++ /dev/null
@@ -1,90 +0,0 @@
-From db8f1eba9154789c45c6a92413bbbd94f5d9c7f5 Mon Sep 17 00:00:00 2001
-From: Tim Yamin <plasm@roo.me.uk>
-Date: Wed, 29 Apr 2009 17:30:25 -0700
-Subject: [PATCH] Touch Book: turn on/off the class D amplifier depending on whether the headphones are plugged into the jack or not.
-
-Signed-off-by: Tim Yamin <plasm@roo.me.uk>
----
- sound/soc/omap/omap3beagle.c | 33 +++++++++++++++++++++++++++++++++
- 1 files changed, 33 insertions(+), 0 deletions(-)
-
-diff --git a/sound/soc/omap/omap3beagle.c b/sound/soc/omap/omap3beagle.c
-index fd24a4a..1236638 100644
---- a/sound/soc/omap/omap3beagle.c
-+++ b/sound/soc/omap/omap3beagle.c
-@@ -20,7 +20,10 @@
- */
-
- #include <linux/clk.h>
-+#include <linux/irq.h>
-+#include <linux/interrupt.h>
- #include <linux/platform_device.h>
-+
- #include <sound/core.h>
- #include <sound/pcm.h>
- #include <sound/soc.h>
-@@ -35,6 +38,9 @@
- #include "omap-pcm.h"
- #include "../codecs/twl4030.h"
-
-+#define TB_HEADPHONE_GPIO 56
-+#define TB_HEADPHONE_IRQ OMAP_GPIO_IRQ(TB_HEADPHONE_GPIO)
-+
- static int omap3beagle_hw_params(struct snd_pcm_substream *substream,
- struct snd_pcm_hw_params *params)
- {
-@@ -103,6 +109,34 @@ static struct snd_soc_device omap3beagle_snd_devdata = {
-
- static struct platform_device *omap3beagle_snd_device;
-
-+static void jack_work_func(struct work_struct *wq)
-+{
-+ int status = gpio_get_value(TB_HEADPHONE_GPIO);
-+
-+ struct snd_soc_device *socdev = platform_get_drvdata(omap3beagle_snd_device);
-+ struct snd_soc_codec *codec = socdev->card->codec;
-+
-+ if(status) {
-+ snd_soc_dapm_disable_pin(codec, "HFL");
-+ snd_soc_dapm_disable_pin(codec, "HFR");
-+ } else {
-+ snd_soc_dapm_enable_pin(codec, "HFL");
-+ snd_soc_dapm_enable_pin(codec, "HFR");
-+ }
-+
-+ enable_irq(TB_HEADPHONE_IRQ);
-+
-+ //snd_soc_dapm_sync(codec);
-+}
-+DECLARE_WORK(jack_work, jack_work_func);
-+
-+static irqreturn_t touchbook_headphone_event(int irq, void *snd)
-+{
-+ disable_irq_nosync(irq);
-+ schedule_work(&jack_work);
-+ return IRQ_HANDLED;
-+}
-+
- static int __init omap3beagle_soc_init(void)
- {
- int ret;
-@@ -123,10 +156,19 @@ static int __init omap3beagle_soc_init(void)
- omap3beagle_snd_devdata.dev = &omap3beagle_snd_device->dev;
- *(unsigned int *)omap3beagle_dai.cpu_dai->private_data = 1; /* McBSP2 */
-
-+ /* Touch Book -- headphone jack sensor */
-+ ret = request_irq(TB_HEADPHONE_IRQ, touchbook_headphone_event, IRQF_TRIGGER_RISING |
-+ IRQF_TRIGGER_FALLING, "touchbook_headphone", omap3beagle_snd_device);
-+ if (ret < 0)
-+ goto err1;
-+
- ret = platform_device_add(omap3beagle_snd_device);
- if (ret)
- goto err1;
-
-+ /* Detect headphone status */
-+ touchbook_headphone_event(0, omap3beagle_snd_device);
-+
- return 0;
-
- err1:
diff --git a/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0012-add-touchbook-hid-driver.patch b/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0011-add-touchbook-hid-driver.patch
index d08cb45d3f..66aa43c43a 100644
--- a/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0012-add-touchbook-hid-driver.patch
+++ b/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0011-add-touchbook-hid-driver.patch
@@ -1,7 +1,7 @@
-From b41b53e9a9dc56a75b548e1fa73570569fe12d7e Mon Sep 17 00:00:00 2001
+From 1ced7194276074ebc9a009c9b41df27d5fdb5df9 Mon Sep 17 00:00:00 2001
From: Gregoire Gentil <gregoire@gentil.com>
Date: Fri, 12 Mar 2010 14:39:07 +0100
-Subject: [PATCH 12/14] add touchbook hid driver
+Subject: [PATCH 11/16] add touchbook hid driver
---
drivers/hid/Kconfig | 7 ++
diff --git a/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0013-Make-backlight-controls-accessible-to-users.patch b/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0012-Make-backlight-controls-accessible-to-users.patch
index 138de0b1b4..970a97bfe4 100644
--- a/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0013-Make-backlight-controls-accessible-to-users.patch
+++ b/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0012-Make-backlight-controls-accessible-to-users.patch
@@ -1,7 +1,7 @@
-From c109db2ee2bca2bdc3af243afda91a96bbd1726f Mon Sep 17 00:00:00 2001
+From 06e169d76148f90f500e76e646a0e595ba0048a9 Mon Sep 17 00:00:00 2001
From: Gregoire Gentil <gregroire@gentil.com>
Date: Fri, 12 Mar 2010 14:41:05 +0100
-Subject: [PATCH 13/14] Make backlight controls accessible to users
+Subject: [PATCH 12/16] Make backlight controls accessible to users
---
drivers/video/backlight/backlight.c | 2 +-
diff --git a/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0014-ads7846-don-t-error-out-when-there-s-no-pendown-gpio.patch b/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0013-ads7846-don-t-error-out-when-there-s-no-pendown-gpio.patch
index 84de1b7456..a2fa7d9c64 100644
--- a/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0014-ads7846-don-t-error-out-when-there-s-no-pendown-gpio.patch
+++ b/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0013-ads7846-don-t-error-out-when-there-s-no-pendown-gpio.patch
@@ -1,7 +1,7 @@
-From 6506ac2dc19a3b010078fb6a36522aba0b82f28c Mon Sep 17 00:00:00 2001
+From e5ae09d0d2c8f2bd1da7662dd551b103292a5748 Mon Sep 17 00:00:00 2001
From: Gregoire Gentil <gregoire@gentil.com>
Date: Fri, 12 Mar 2010 15:04:58 +0100
-Subject: [PATCH 14/14] ads7846: don't error out when there's no pendown gpio
+Subject: [PATCH 13/16] ads7846: don't error out when there's no pendown gpio
---
drivers/input/touchscreen/ads7846.c | 7 -------
diff --git a/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0014-ASoC-add-driver-for-omap3-touchbook.patch b/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0014-ASoC-add-driver-for-omap3-touchbook.patch
new file mode 100644
index 0000000000..3581fa7ceb
--- /dev/null
+++ b/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0014-ASoC-add-driver-for-omap3-touchbook.patch
@@ -0,0 +1,344 @@
+From b8c9d2b0cec0f8e6a25749f1ab50f59ad7480e8d 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
+
+---
+ sound/soc/omap/Kconfig | 8 +
+ sound/soc/omap/Makefile | 2 +
+ sound/soc/omap/omap3touchbook.c | 285 +++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 295 insertions(+), 0 deletions(-)
+ create mode 100644 sound/soc/omap/omap3touchbook.c
+
+diff --git a/sound/soc/omap/Kconfig b/sound/soc/omap/Kconfig
+index 61952aa..a7c06ab 100644
+--- a/sound/soc/omap/Kconfig
++++ b/sound/soc/omap/Kconfig
+@@ -101,6 +101,14 @@ config SND_OMAP_SOC_OMAP3_BEAGLE
+ help
+ Say Y if you want to add support for SoC audio on the Beagleboard.
+
++config SND_OMAP_SOC_OMAP3_TOUCHBOOK
++ tristate "SoC Audio support for OMAP3 Touch Book"
++ depends on TWL4030_CORE && SND_OMAP_SOC && MACH_OMAP3_TOUCHBOOK
++ select SND_OMAP_SOC_MCBSP
++ select SND_SOC_TWL4030
++ help
++ Say Y if you want to add support for SoC audio on the Touch Book.
++
+ config SND_OMAP_SOC_ZOOM2
+ tristate "SoC Audio support for Zoom2"
+ depends on TWL4030_CORE && SND_OMAP_SOC && MACH_OMAP_ZOOM2
+diff --git a/sound/soc/omap/Makefile b/sound/soc/omap/Makefile
+index 19283e5..e3f172f 100644
+--- a/sound/soc/omap/Makefile
++++ b/sound/soc/omap/Makefile
+@@ -16,6 +16,7 @@ snd-soc-am3517evm-objs := am3517evm.o
+ snd-soc-sdp3430-objs := sdp3430.o
+ snd-soc-omap3pandora-objs := omap3pandora.o
+ snd-soc-omap3beagle-objs := omap3beagle.o
++snd-soc-omap3touchbook-objs := omap3touchbook.o
+ snd-soc-zoom2-objs := zoom2.o
+ snd-soc-igep0020-objs := igep0020.o
+
+@@ -29,5 +30,6 @@ obj-$(CONFIG_SND_OMAP_SOC_AM3517EVM) += snd-soc-am3517evm.o
+ obj-$(CONFIG_SND_OMAP_SOC_SDP3430) += snd-soc-sdp3430.o
+ obj-$(CONFIG_SND_OMAP_SOC_OMAP3_PANDORA) += snd-soc-omap3pandora.o
+ obj-$(CONFIG_SND_OMAP_SOC_OMAP3_BEAGLE) += snd-soc-omap3beagle.o
++obj-$(CONFIG_SND_OMAP_SOC_OMAP3_TOUCHBOOK) += snd-soc-omap3touchbook.o
+ obj-$(CONFIG_SND_OMAP_SOC_ZOOM2) += snd-soc-zoom2.o
+ 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..4e81f3e
+--- /dev/null
++++ b/sound/soc/omap/omap3touchbook.c
+@@ -0,0 +1,285 @@
++/*
++ * omap3touchbook.c -- SoC audio for Touch Book
++ *
++ * Copyright (C) 2009-2010 Always Innovating
++ *
++ * Author: Gregoire Gentil <gregoire@gentil.com>
++ *
++ * Based on:
++ * Author: Steve Sakoman <steve@sakoman.com>
++ * Author: Misael Lopez Cruz <x0052729@ti.com>
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License
++ * version 2 as published by the Free Software Foundation.
++ *
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ * General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
++ * 02110-1301 USA
++ *
++ */
++
++#include <linux/clk.h>
++#include <linux/platform_device.h>
++#include <linux/i2c/twl.h>
++#include <sound/core.h>
++#include <sound/pcm.h>
++#include <sound/soc.h>
++#include <sound/soc-dapm.h>
++#include <sound/jack.h>
++
++#include <asm/mach-types.h>
++#include <mach/hardware.h>
++#include <mach/gpio.h>
++#include <plat/mcbsp.h>
++
++#include "omap-mcbsp.h"
++#include "omap-pcm.h"
++#include "../codecs/twl4030.h"
++
++static struct snd_soc_card snd_soc_omap3touchbook;
++
++static int omap3touchbook_hw_params(struct snd_pcm_substream *substream,
++ struct snd_pcm_hw_params *params)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_dai *codec_dai = rtd->dai->codec_dai;
++ struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
++ unsigned int fmt;
++ int ret;
++
++ switch (params_channels(params)) {
++ case 2: /* Stereo I2S mode */
++ fmt = SND_SOC_DAIFMT_I2S |
++ SND_SOC_DAIFMT_NB_NF |
++ SND_SOC_DAIFMT_CBM_CFM;
++ break;
++ case 4: /* Four channel TDM mode */
++ fmt = SND_SOC_DAIFMT_DSP_A |
++ SND_SOC_DAIFMT_IB_NF |
++ SND_SOC_DAIFMT_CBM_CFM;
++ break;
++ default:
++ return -EINVAL;
++ }
++
++ /* Set codec DAI configuration */
++ ret = snd_soc_dai_set_fmt(codec_dai, fmt);
++ if (ret < 0) {
++ printk(KERN_ERR "can't set codec DAI configuration\n");
++ return ret;
++ }
++
++ /* Set cpu DAI configuration */
++ ret = snd_soc_dai_set_fmt(cpu_dai, fmt);
++ if (ret < 0) {
++ printk(KERN_ERR "can't set cpu DAI configuration\n");
++ return ret;
++ }
++
++ /* Set the codec system clock for DAC and ADC */
++ ret = snd_soc_dai_set_sysclk(codec_dai, 0, 26000000,
++ SND_SOC_CLOCK_IN);
++ if (ret < 0) {
++ printk(KERN_ERR "can't set codec system clock\n");
++ return ret;
++ }
++
++ return 0;
++}
++
++static struct snd_soc_ops omap3touchbook_ops = {
++ .hw_params = omap3touchbook_hw_params,
++};
++
++/* Headset jack */
++static struct snd_soc_jack hs_jack;
++
++/* Headset jack detection DAPM pins */
++static struct snd_soc_jack_pin hs_jack_pins[] = {
++ {
++ .pin = "Headset Mic",
++ .mask = SND_JACK_MICROPHONE,
++ },
++ {
++ .pin = "Headset Stereophone",
++ .mask = SND_JACK_HEADPHONE,
++ },
++};
++
++/* Headset jack detection gpios */
++static struct snd_soc_jack_gpio hs_jack_gpios[] = {
++ {
++ .gpio = 56,
++ .name = "hsdet-gpio",
++ .report = SND_JACK_HEADSET,
++ .debounce_time = 200,
++ },
++};
++
++/* omap3touchbook machine DAPM */
++static const struct snd_soc_dapm_widget omap3touchbook_twl4030_dapm_widgets[] = {
++ SND_SOC_DAPM_MIC("Ext Mic", NULL),
++ SND_SOC_DAPM_SPK("Ext Spk", NULL),
++ SND_SOC_DAPM_MIC("Headset Mic", NULL),
++ SND_SOC_DAPM_HP("Headset Stereophone", NULL),
++};
++
++static const struct snd_soc_dapm_route audio_map[] = {
++ /* External Mics: MAINMIC, SUBMIC with bias*/
++ {"MAINMIC", NULL, "Mic Bias 1"},
++ {"SUBMIC", NULL, "Mic Bias 2"},
++ {"Mic Bias 1", NULL, "Ext Mic"},
++ {"Mic Bias 2", NULL, "Ext Mic"},
++
++ /* External Speakers: HFL, HFR */
++ {"Ext Spk", NULL, "HFL"},
++ {"Ext Spk", NULL, "HFR"},
++
++ /* Headset Mic: HSMIC with bias */
++ {"HSMIC", NULL, "Headset Mic Bias"},
++ {"Headset Mic Bias", NULL, "Headset Mic"},
++
++ /* Headset Stereophone (Headphone): HSOL, HSOR */
++ {"Headset Stereophone", NULL, "HSOL"},
++ {"Headset Stereophone", NULL, "HSOR"},
++};
++
++static int omap3touchbook_twl4030_init(struct snd_soc_codec *codec)
++{
++ int ret;
++
++ /* Add omap3touchbook specific widgets */
++ ret = snd_soc_dapm_new_controls(codec, omap3touchbook_twl4030_dapm_widgets,
++ ARRAY_SIZE(omap3touchbook_twl4030_dapm_widgets));
++ if (ret)
++ return ret;
++
++ /* Set up omap3touchbook specific audio path audio_map */
++ snd_soc_dapm_add_routes(codec, audio_map, ARRAY_SIZE(audio_map));
++
++ /* omap3touchbook connected pins */
++ snd_soc_dapm_enable_pin(codec, "Ext Mic");
++ snd_soc_dapm_enable_pin(codec, "Ext Spk");
++ snd_soc_dapm_disable_pin(codec, "Headset Mic");
++ snd_soc_dapm_disable_pin(codec, "Headset Stereophone");
++
++ /* TWL4030 not connected pins */
++ snd_soc_dapm_nc_pin(codec, "CARKITMIC");
++ snd_soc_dapm_nc_pin(codec, "DIGIMIC0");
++ snd_soc_dapm_nc_pin(codec, "DIGIMIC1");
++ snd_soc_dapm_nc_pin(codec, "OUTL");
++ snd_soc_dapm_nc_pin(codec, "OUTR");
++ snd_soc_dapm_nc_pin(codec, "EARPIECE");
++ snd_soc_dapm_nc_pin(codec, "PREDRIVEL");
++ snd_soc_dapm_nc_pin(codec, "PREDRIVER");
++ snd_soc_dapm_nc_pin(codec, "CARKITL");
++ snd_soc_dapm_nc_pin(codec, "CARKITR");
++
++ ret = snd_soc_dapm_sync(codec);
++ if (ret)
++ return ret;
++
++ /* Headset jack detection */
++ ret = snd_soc_jack_new(&snd_soc_omap3touchbook, "Headset Jack",
++ SND_JACK_HEADSET, &hs_jack);
++ if (ret)
++ return ret;
++
++ ret = snd_soc_jack_add_pins(&hs_jack, ARRAY_SIZE(hs_jack_pins),
++ hs_jack_pins);
++ if (ret)
++ return ret;
++
++ ret = snd_soc_jack_add_gpios(&hs_jack, ARRAY_SIZE(hs_jack_gpios),
++ hs_jack_gpios);
++
++ return ret;
++}
++
++/* Digital audio interface glue - connects codec <--> CPU */
++static struct snd_soc_dai_link omap3touchbook_dai = {
++ .name = "TWL4030 I2S",
++ .stream_name = "TWL4030 Audio",
++ .cpu_dai = &omap_mcbsp_dai[0],
++ .codec_dai = &twl4030_dai[TWL4030_DAI_HIFI],
++ .init = omap3touchbook_twl4030_init,
++ .ops = &omap3touchbook_ops,
++};
++
++/* Audio machine driver */
++static struct snd_soc_card snd_soc_omap3touchbook = {
++ .name = "omap3touchbook",
++ .platform = &omap_soc_platform,
++ .dai_link = &omap3touchbook_dai,
++ .num_links = 1,
++};
++
++/* twl4030 setup */
++static struct twl4030_setup_data twl4030_setup = {
++ .ramp_delay_value = 3,
++ .sysclk = 26000,
++ .hs_extmute = 1,
++};
++
++/* Audio subsystem */
++static struct snd_soc_device omap3touchbook_snd_devdata = {
++ .card = &snd_soc_omap3touchbook,
++ .codec_dev = &soc_codec_dev_twl4030,
++ .codec_data = &twl4030_setup,
++};
++
++static struct platform_device *omap3touchbook_snd_device;
++
++static int __init omap3touchbook_soc_init(void)
++{
++ int ret;
++ u8 pin_mux;
++
++ if (!machine_is_touchbook()) {
++ pr_debug("Not Touch Book!\n");
++ //return -ENODEV;
++ }
++ printk(KERN_INFO "Touch Book SoC init\n");
++
++ omap3touchbook_snd_device = platform_device_alloc("soc-audio", -1);
++ if (!omap3touchbook_snd_device) {
++ printk(KERN_ERR "Platform device allocation failed\n");
++ return -ENOMEM;
++ }
++
++ platform_set_drvdata(omap3touchbook_snd_device, &omap3touchbook_snd_devdata);
++ omap3touchbook_snd_devdata.dev = &omap3touchbook_snd_device->dev;
++ *(unsigned int *)omap3touchbook_dai.cpu_dai->private_data = 1; /* McBSP2 */
++
++ ret = platform_device_add(omap3touchbook_snd_device);
++ if (ret)
++ goto err1;
++
++ return 0;
++
++err1:
++ printk(KERN_ERR "Unable to add platform device\n");
++ platform_device_put(omap3touchbook_snd_device);
++
++ return ret;
++}
++module_init(omap3touchbook_soc_init);
++
++static void __exit omap3touchbook_soc_exit(void)
++{
++ snd_soc_jack_free_gpios(&hs_jack, ARRAY_SIZE(hs_jack_gpios),
++ hs_jack_gpios);
++
++ platform_device_unregister(omap3touchbook_snd_device);
++}
++module_exit(omap3touchbook_soc_exit);
++
++MODULE_AUTHOR("Gregoire Gentil <gregoire@gentil.com>");
++MODULE_LICENSE("GPL");
+--
+1.6.6.1
+
diff --git a/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0015-backlight-add-PWM-support.patch b/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0015-backlight-add-PWM-support.patch
new file mode 100644
index 0000000000..b39e9c32fa
--- /dev/null
+++ b/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0015-backlight-add-PWM-support.patch
@@ -0,0 +1,126 @@
+From 3fee6c0a358921e87c9c3807148bc306641592bb 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
+
+---
+ drivers/video/backlight/backlight.c | 81 +++++++++++++++++++++++++++++++++++
+ include/linux/backlight.h | 3 +
+ 2 files changed, 84 insertions(+), 0 deletions(-)
+
+diff --git a/drivers/video/backlight/backlight.c b/drivers/video/backlight/backlight.c
+index 7898707..615f40f 100644
+--- a/drivers/video/backlight/backlight.c
++++ b/drivers/video/backlight/backlight.c
+@@ -226,6 +226,84 @@ static void bl_device_release(struct device *dev)
+ kfree(bd);
+ }
+
++static ssize_t backlight_show_boost(struct device *dev, struct device_attribute *attr, char *buf)
++{
++ struct backlight_device *bd = to_backlight_device(dev);
++ return sprintf(buf, "%u\n", bd->props.boost);
++}
++
++static ssize_t backlight_store_boost(struct device *dev, struct device_attribute *attr, const char *buf, size_t count)
++{
++ unsigned long i;
++ struct backlight_device *bd = to_backlight_device(dev);
++
++ if (strict_strtoul(buf, 10, &i))
++ return -EINVAL;
++
++ mutex_lock(&bd->ops_lock);
++ if (bd->ops)
++ {
++ if (i)
++ bd->props.boost = 1;
++ else
++ bd->props.boost = 0;
++ backlight_update_status(bd);
++ }
++ mutex_unlock(&bd->ops_lock);
++
++ return count;
++}
++
++static ssize_t backlight_show_pwm_fq(struct device *dev, struct device_attribute *attr, char *buf)
++{
++ struct backlight_device *bd = to_backlight_device(dev);
++ return sprintf(buf, "%u\n", bd->props.pwm_fq);
++}
++
++static ssize_t backlight_store_pwm_fq(struct device *dev, struct device_attribute *attr, const char *buf, size_t count)
++{
++ unsigned long i;
++ struct backlight_device *bd = to_backlight_device(dev);
++
++ if (strict_strtoul(buf, 10, &i))
++ return -EINVAL;
++
++ mutex_lock(&bd->ops_lock);
++ if (bd->ops)
++ {
++ bd->props.pwm_fq = i;
++ backlight_update_status(bd);
++ }
++ mutex_unlock(&bd->ops_lock);
++
++ return count;
++}
++
++static ssize_t backlight_show_min_duty(struct device *dev, struct device_attribute *attr, char *buf)
++{
++ struct backlight_device *bd = to_backlight_device(dev);
++ return sprintf(buf, "%u\n", bd->props.min_duty);
++}
++
++static ssize_t backlight_store_min_duty(struct device *dev, struct device_attribute *attr, const char *buf, size_t count)
++{
++ unsigned long i;
++ struct backlight_device *bd = to_backlight_device(dev);
++
++ if (strict_strtoul(buf, 10, &i))
++ return -EINVAL;
++
++ mutex_lock(&bd->ops_lock);
++ if (bd->ops)
++ {
++ bd->props.min_duty = i;
++ backlight_update_status(bd);
++ }
++ mutex_unlock(&bd->ops_lock);
++
++ return count;
++}
++
+ static struct device_attribute bl_device_attributes[] = {
+ __ATTR(bl_power, 0644, backlight_show_power, backlight_store_power),
+ __ATTR(brightness, 0666, backlight_show_brightness,
+@@ -233,6 +311,9 @@ static struct device_attribute bl_device_attributes[] = {
+ __ATTR(actual_brightness, 0444, backlight_show_actual_brightness,
+ NULL),
+ __ATTR(max_brightness, 0444, backlight_show_max_brightness, NULL),
++ __ATTR(boost, 0666, backlight_show_boost, backlight_store_boost),
++ __ATTR(pwm_fq, 0666, backlight_show_pwm_fq, backlight_store_pwm_fq),
++ __ATTR(min_duty, 0666, backlight_show_min_duty, backlight_store_min_duty),
+ __ATTR_NULL,
+ };
+
+diff --git a/include/linux/backlight.h b/include/linux/backlight.h
+index 0f5f578..f3a9b9f 100644
+--- a/include/linux/backlight.h
++++ b/include/linux/backlight.h
+@@ -64,6 +64,9 @@ struct backlight_properties {
+ int fb_blank;
+ /* Flags used to signal drivers of state changes */
+ /* Upper 4 bits are reserved for driver internal use */
++ int boost;
++ int pwm_fq;
++ int min_duty;
+ unsigned int state;
+
+ #define BL_CORE_SUSPENDED (1 << 0) /* backlight is suspended */
+--
+1.6.6.1
+
diff --git a/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0006-ARM-OMAP-omap3-touchbook-update-boardfile.patch b/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0016-ARM-OMAP-omap3-touchbook-update-boardfile.patch
index 46669fda33..db8cf7ce17 100644
--- a/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0006-ARM-OMAP-omap3-touchbook-update-boardfile.patch
+++ b/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/0016-ARM-OMAP-omap3-touchbook-update-boardfile.patch
@@ -1,14 +1,14 @@
-From d732dfd967b870ea5effa599d501996b620a1f60 Mon Sep 17 00:00:00 2001
+From bd54c9c7527199156f6cd16bf3e02ebf9d663feb Mon Sep 17 00:00:00 2001
From: Gregoire Gentil <gregoire@gentil.com>
Date: Fri, 12 Mar 2010 11:49:16 +0100
-Subject: [PATCH 06/14] ARM: OMAP: omap3-touchbook: update boardfile
+Subject: [PATCH 16/16] ARM: OMAP: omap3-touchbook: update boardfile
---
- arch/arm/mach-omap2/board-omap3touchbook.c | 390 +++++++++++++++++++++-------
- 1 files changed, 301 insertions(+), 89 deletions(-)
+ arch/arm/mach-omap2/board-omap3touchbook.c | 394 +++++++++++++++++++++-------
+ 1 files changed, 305 insertions(+), 89 deletions(-)
diff --git a/arch/arm/mach-omap2/board-omap3touchbook.c b/arch/arm/mach-omap2/board-omap3touchbook.c
-index fc3e03c..4f89cf3 100644
+index fc3e03c..3628362 100644
--- a/arch/arm/mach-omap2/board-omap3touchbook.c
+++ b/arch/arm/mach-omap2/board-omap3touchbook.c
@@ -33,6 +33,7 @@
@@ -343,7 +343,7 @@ index fc3e03c..4f89cf3 100644
};
static void __init omap3touchbook_flash_init(void)
-@@ -512,6 +559,166 @@ static struct ehci_hcd_omap_platform_data ehci_pdata __initconst = {
+@@ -512,6 +559,170 @@ static struct ehci_hcd_omap_platform_data ehci_pdata __initconst = {
.reset_gpio_port[2] = -EINVAL
};
@@ -455,16 +455,17 @@ index fc3e03c..4f89cf3 100644
+ */
+
+ /* Halve input brightness */
-+ value /= 2;
++ if (!bd->props.boost)
++ value /= 2;
+
+ /* For maximum brightness, just stop the timer... */
+ if(value != bd->props.max_brightness)
+ {
+ /* Load the appropriate value for 200Hz PWM */
-+ u32 period = clk_get_rate(omap_dm_timer_get_fclk(touchbook_backlight_pwm)) / 200;
++ u32 period = clk_get_rate(omap_dm_timer_get_fclk(touchbook_backlight_pwm)) / bd->props.pwm_fq;
+
+ /* Minimum duty cycle is 15% */
-+ u32 minimum = (period * 3) / 20;
++ u32 minimum = (period * bd->props.min_duty) / 100;
+ u32 maximum = (period * 17) / 20;
+
+ /* Work out match value */
@@ -502,6 +503,9 @@ index fc3e03c..4f89cf3 100644
+
+ bd->props.max_brightness = 100;
+ bd->props.brightness = touchbook_backlight_brightness;
++ bd->props.boost = 0;
++ bd->props.min_duty = 15;
++ bd->props.pwm_fq = 200;
+ }
+
+ touchbook_backlight_update(bd);
@@ -510,7 +514,7 @@ index fc3e03c..4f89cf3 100644
static void omap3_touchbook_poweroff(void)
{
int r;
-@@ -525,33 +732,27 @@ static void omap3_touchbook_poweroff(void)
+@@ -525,33 +736,27 @@ static void omap3_touchbook_poweroff(void)
gpio_direction_output(TB_KILL_POWER_GPIO, 0);
}
@@ -548,7 +552,7 @@ index fc3e03c..4f89cf3 100644
usb_musb_init();
usb_ehci_init(&ehci_pdata);
omap3touchbook_flash_init();
-@@ -559,6 +760,17 @@ static void __init omap3_touchbook_init(void)
+@@ -559,6 +764,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);
diff --git a/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/defconfig b/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/defconfig
index cfb89daba3..991279b605 100644
--- a/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/defconfig
+++ b/recipes/linux/linux-omap-psp-2.6.32/omap3-touchbook/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.32
-# Tue Mar 23 10:33:49 2010
+# Wed Mar 31 11:43:52 2010
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -105,7 +105,7 @@ CONFIG_SLAB=y
# CONFIG_SLOB is not set
CONFIG_PROFILING=y
CONFIG_TRACEPOINTS=y
-CONFIG_OPROFILE=y
+CONFIG_OPROFILE=m
CONFIG_HAVE_OPROFILE=y
# CONFIG_KPROBES is not set
CONFIG_HAVE_KPROBES=y
@@ -258,7 +258,6 @@ CONFIG_OMAP_LL_DEBUG_UART3=y
CONFIG_OMAP_PM_SRF=y
CONFIG_ARCH_OMAP34XX=y
CONFIG_ARCH_OMAP3430=y
-CONFIG_OMAP_PACKAGE_CBB=y
#
# OMAP Board Type
@@ -838,28 +837,28 @@ CONFIG_KS959_DONGLE=m
CONFIG_USB_IRDA=m
CONFIG_SIGMATEL_FIR=m
CONFIG_MCS_FIR=m
-CONFIG_BT=y
-CONFIG_BT_L2CAP=y
-CONFIG_BT_SCO=y
-CONFIG_BT_RFCOMM=y
+CONFIG_BT=m
+CONFIG_BT_L2CAP=m
+CONFIG_BT_SCO=m
+CONFIG_BT_RFCOMM=m
CONFIG_BT_RFCOMM_TTY=y
-CONFIG_BT_BNEP=y
+CONFIG_BT_BNEP=m
CONFIG_BT_BNEP_MC_FILTER=y
CONFIG_BT_BNEP_PROTO_FILTER=y
-CONFIG_BT_HIDP=y
+CONFIG_BT_HIDP=m
#
# Bluetooth device drivers
#
-CONFIG_BT_HCIBTUSB=y
-CONFIG_BT_HCIBTSDIO=y
-CONFIG_BT_HCIUART=y
+CONFIG_BT_HCIBTUSB=m
+CONFIG_BT_HCIBTSDIO=m
+CONFIG_BT_HCIUART=m
CONFIG_BT_HCIUART_H4=y
CONFIG_BT_HCIUART_BCSP=y
CONFIG_BT_HCIUART_LL=y
-CONFIG_BT_HCIBCM203X=y
-CONFIG_BT_HCIBPA10X=y
-CONFIG_BT_HCIBFUSB=y
+CONFIG_BT_HCIBCM203X=m
+CONFIG_BT_HCIBPA10X=m
+CONFIG_BT_HCIBFUSB=m
# CONFIG_BT_HCIVHCI is not set
# CONFIG_BT_MRVL is not set
CONFIG_AF_RXRPC=m
@@ -872,7 +871,7 @@ CONFIG_WEXT_CORE=y
CONFIG_WEXT_PROC=y
CONFIG_WEXT_SPY=y
CONFIG_WEXT_PRIV=y
-CONFIG_CFG80211=y
+CONFIG_CFG80211=m
# CONFIG_NL80211_TESTMODE is not set
# CONFIG_CFG80211_DEVELOPER_WARNINGS is not set
# CONFIG_CFG80211_REG_DEBUG is not set
@@ -882,11 +881,11 @@ CONFIG_WIRELESS_OLD_REGULATORY=y
CONFIG_CFG80211_WEXT=y
CONFIG_WIRELESS_EXT_SYSFS=y
CONFIG_LIB80211=y
-CONFIG_LIB80211_CRYPT_WEP=y
-CONFIG_LIB80211_CRYPT_CCMP=y
-CONFIG_LIB80211_CRYPT_TKIP=y
+CONFIG_LIB80211_CRYPT_WEP=m
+CONFIG_LIB80211_CRYPT_CCMP=m
+CONFIG_LIB80211_CRYPT_TKIP=m
# CONFIG_LIB80211_DEBUG is not set
-CONFIG_MAC80211=y
+CONFIG_MAC80211=m
CONFIG_MAC80211_RC_PID=y
CONFIG_MAC80211_RC_MINSTREL=y
CONFIG_MAC80211_RC_DEFAULT_PID=y
@@ -898,7 +897,7 @@ CONFIG_MAC80211_LEDS=y
# CONFIG_MAC80211_DEBUG_MENU is not set
CONFIG_WIMAX=m
CONFIG_WIMAX_DEBUG_LEVEL=8
-CONFIG_RFKILL=y
+CONFIG_RFKILL=m
CONFIG_RFKILL_LEDS=y
CONFIG_RFKILL_INPUT=y
CONFIG_NET_9P=m
@@ -1136,52 +1135,52 @@ CONFIG_EQUALIZER=m
CONFIG_TUN=m
CONFIG_VETH=m
# CONFIG_NET_ETHERNET is not set
-CONFIG_MII=y
+CONFIG_MII=m
# CONFIG_NETDEV_1000 is not set
# CONFIG_NETDEV_10000 is not set
CONFIG_WLAN=y
# CONFIG_LIBERTAS_THINFIRM is not set
# CONFIG_AT76C50X_USB is not set
-CONFIG_USB_ZD1201=y
-CONFIG_USB_NET_RNDIS_WLAN=y
-CONFIG_RTL8187=y
+CONFIG_USB_ZD1201=m
+CONFIG_USB_NET_RNDIS_WLAN=m
+CONFIG_RTL8187=m
CONFIG_RTL8187_LEDS=y
# CONFIG_MAC80211_HWSIM is not set
# CONFIG_ATH_COMMON is not set
-CONFIG_B43=y
+CONFIG_B43=m
# CONFIG_B43_SDIO is not set
CONFIG_B43_PHY_LP=y
CONFIG_B43_LEDS=y
CONFIG_B43_HWRNG=y
# CONFIG_B43_DEBUG is not set
# CONFIG_B43LEGACY is not set
-CONFIG_HOSTAP=y
+CONFIG_HOSTAP=m
CONFIG_HOSTAP_FIRMWARE=y
CONFIG_HOSTAP_FIRMWARE_NVRAM=y
# CONFIG_IWM is not set
-CONFIG_LIBERTAS=y
-CONFIG_LIBERTAS_USB=y
+CONFIG_LIBERTAS=m
+CONFIG_LIBERTAS_USB=m
# CONFIG_LIBERTAS_SDIO is not set
# CONFIG_LIBERTAS_SPI is not set
# CONFIG_LIBERTAS_DEBUG is not set
-CONFIG_P54_COMMON=y
-CONFIG_P54_USB=y
+CONFIG_P54_COMMON=m
+CONFIG_P54_USB=m
# CONFIG_P54_SPI is not set
CONFIG_P54_LEDS=y
-CONFIG_RT2X00=y
-CONFIG_RT2500USB=y
-CONFIG_RT73USB=y
-CONFIG_RT2800USB=y
-CONFIG_RT2800_LIB=y
-CONFIG_RT2X00_LIB_USB=y
-CONFIG_RT2X00_LIB=y
+CONFIG_RT2X00=m
+CONFIG_RT2500USB=m
+CONFIG_RT73USB=m
+CONFIG_RT2800USB=m
+CONFIG_RT2800_LIB=m
+CONFIG_RT2X00_LIB_USB=m
+CONFIG_RT2X00_LIB=m
CONFIG_RT2X00_LIB_HT=y
CONFIG_RT2X00_LIB_FIRMWARE=y
CONFIG_RT2X00_LIB_CRYPTO=y
CONFIG_RT2X00_LIB_LEDS=y
# CONFIG_RT2X00_DEBUG is not set
# CONFIG_WL12XX is not set
-CONFIG_ZD1211RW=y
+CONFIG_ZD1211RW=m
# CONFIG_ZD1211RW_DEBUG is not set
#
@@ -1193,29 +1192,29 @@ CONFIG_ZD1211RW=y
#
# USB Network Adapters
#
-CONFIG_USB_CATC=y
-CONFIG_USB_KAWETH=y
-CONFIG_USB_PEGASUS=y
-CONFIG_USB_RTL8150=y
-CONFIG_USB_USBNET=y
-CONFIG_USB_NET_AX8817X=y
-CONFIG_USB_NET_CDCETHER=y
+CONFIG_USB_CATC=m
+CONFIG_USB_KAWETH=m
+CONFIG_USB_PEGASUS=m
+CONFIG_USB_RTL8150=m
+CONFIG_USB_USBNET=m
+CONFIG_USB_NET_AX8817X=m
+CONFIG_USB_NET_CDCETHER=m
# CONFIG_USB_NET_CDC_EEM is not set
-CONFIG_USB_NET_DM9601=y
-CONFIG_USB_NET_SMSC95XX=y
-CONFIG_USB_NET_GL620A=y
-CONFIG_USB_NET_NET1080=y
-CONFIG_USB_NET_PLUSB=y
-CONFIG_USB_NET_MCS7830=y
-CONFIG_USB_NET_RNDIS_HOST=y
-CONFIG_USB_NET_CDC_SUBSET=y
+CONFIG_USB_NET_DM9601=m
+CONFIG_USB_NET_SMSC95XX=m
+CONFIG_USB_NET_GL620A=m
+CONFIG_USB_NET_NET1080=m
+CONFIG_USB_NET_PLUSB=m
+CONFIG_USB_NET_MCS7830=m
+CONFIG_USB_NET_RNDIS_HOST=m
+CONFIG_USB_NET_CDC_SUBSET=m
CONFIG_USB_ALI_M5632=y
CONFIG_USB_AN2720=y
CONFIG_USB_BELKIN=y
CONFIG_USB_ARMLINUX=y
CONFIG_USB_EPSON2888=y
CONFIG_USB_KC2190=y
-CONFIG_USB_NET_ZAURUS=y
+CONFIG_USB_NET_ZAURUS=m
# CONFIG_USB_HSO is not set
# CONFIG_USB_NET_INT51X1 is not set
# CONFIG_WAN is not set
@@ -2040,8 +2039,8 @@ CONFIG_SOUND_OSS_CORE_PRECLAIM=y
CONFIG_SND=y
CONFIG_SND_TIMER=y
CONFIG_SND_PCM=y
-CONFIG_SND_HWDEP=y
-CONFIG_SND_RAWMIDI=y
+CONFIG_SND_HWDEP=m
+CONFIG_SND_RAWMIDI=m
CONFIG_SND_JACK=y
CONFIG_SND_SEQUENCER=m
# CONFIG_SND_SEQ_DUMMY is not set
@@ -2070,7 +2069,7 @@ CONFIG_SND_VIRMIDI=m
# CONFIG_SND_ARM is not set
CONFIG_SND_SPI=y
CONFIG_SND_USB=y
-CONFIG_SND_USB_AUDIO=y
+CONFIG_SND_USB_AUDIO=m
CONFIG_SND_USB_CAIAQ=m
CONFIG_SND_USB_CAIAQ_INPUT=y
CONFIG_SND_SOC=y