linux-openmoko-2.6.32: update stable patch to 2.6.32.16, rebase some patches and...
authorMartin Jansa <Martin.Jansa@gmail.com>
Wed, 21 Jul 2010 09:03:25 +0000 (11:03 +0200)
committerMartin Jansa <Martin.Jansa@gmail.com>
Thu, 22 Jul 2010 20:03:20 +0000 (22:03 +0200)
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
recipes/linux/linux-openmoko-2.6.32/0001-add-noinline-and-noclone-attributes-to-naked-functio.patch [new file with mode: 0644]
recipes/linux/linux-openmoko-2.6.32/0006-gta02-defconfigs-enable-LEDS_S3C24XX-and-dummy-batte.patch [deleted file]
recipes/linux/linux-openmoko-2.6.32/0016-jbt6k74-fix-WS.patch [new file with mode: 0644]
recipes/linux/linux-openmoko-2.6.32/0017-s3c2410_ts-ignore-unexpected-interrupts.patch [moved from recipes/linux/linux-openmoko-2.6.32/touchscreen_ignoreunexpectedintr29.patch with 75% similarity]
recipes/linux/linux-openmoko-2.6.32/0018-glamo-core-initialize-engine-states-as-disabled.patch [new file with mode: 0644]
recipes/linux/linux-openmoko-2.6.32/0019-wm8753-use-snd_soc_jack-on-neo1973.patch [moved from recipes/linux/linux-openmoko-2.6.32/hs-jack.patch with 85% similarity]
recipes/linux/linux-openmoko-2.6.32/0020-mfd-glamo-Enable-FIFO-stage-for-the-LCD-engine-s-mem.patch [moved from recipes/linux/linux-openmoko-2.6.32/0001-mfd-glamo-Enable-FIFO-stage-for-the-LCD-engine-s-mem.patch with 88% similarity]
recipes/linux/linux-openmoko-2.6.32/use-noclone-attribute-for-naked.patch [deleted file]
recipes/linux/linux-openmoko-2.6.32_git.bb

diff --git a/recipes/linux/linux-openmoko-2.6.32/0001-add-noinline-and-noclone-attributes-to-naked-functio.patch b/recipes/linux/linux-openmoko-2.6.32/0001-add-noinline-and-noclone-attributes-to-naked-functio.patch
new file mode 100644 (file)
index 0000000..ac1efae
--- /dev/null
@@ -0,0 +1,52 @@
+From 6d97e1b1c2434fb769be7a72813efd11925225a9 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sun, 6 Jun 2010 03:28:43 +0200
+Subject: [PATCH 03/22] add noinline and noclone attributes to naked functions
+
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+---
+ include/linux/compiler-gcc.h  |   11 ++++++++++-
+ include/linux/compiler-gcc4.h |    2 ++
+ 2 files changed, 12 insertions(+), 1 deletions(-)
+
+diff --git a/include/linux/compiler-gcc.h b/include/linux/compiler-gcc.h
+index a3ed7cb..132a651 100644
+--- a/include/linux/compiler-gcc.h
++++ b/include/linux/compiler-gcc.h
+@@ -58,8 +58,12 @@
+  * naked functions because then mcount is called without stack and frame pointer
+  * being set up and there is no chance to restore the lr register to the value
+  * before mcount was called.
++ *
++ * The asm() bodies of naked functions often depend on standard calling conventions,
++ * therefore they must be noinline and noclone.  GCC 4.[56] currently fail to enforce
++ * this, so we must do so ourselves.  See GCC PR44290.
+  */
+-#define __naked                               __attribute__((naked)) notrace
++#define __naked                               __attribute__((naked)) noinline __noclone notrace
+ #define __noreturn                    __attribute__((noreturn))
+@@ -84,3 +88,8 @@
+ #define _gcc_header(x) __gcc_header(linux/compiler-gcc##x.h)
+ #define gcc_header(x) _gcc_header(x)
+ #include gcc_header(__GNUC__)
++
++#if !defined(__noclone)
++#define __noclone     /* not needed */
++#endif
++
+diff --git a/include/linux/compiler-gcc4.h b/include/linux/compiler-gcc4.h
+index 450fa59..cd5932a 100644
+--- a/include/linux/compiler-gcc4.h
++++ b/include/linux/compiler-gcc4.h
+@@ -36,4 +36,6 @@
+    the kernel context */
+ #define __cold                        __attribute__((__cold__))
++/* Mark a function definition as prohibited from being cloned. */
++#define __noclone      __attribute__((__noclone__))
+ #endif
+-- 
+1.7.1.1
+
diff --git a/recipes/linux/linux-openmoko-2.6.32/0006-gta02-defconfigs-enable-LEDS_S3C24XX-and-dummy-batte.patch b/recipes/linux/linux-openmoko-2.6.32/0006-gta02-defconfigs-enable-LEDS_S3C24XX-and-dummy-batte.patch
deleted file mode 100644 (file)
index 103c06c..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-From 7e4a1fee4f08ef7ccedd4706b4890afc71f37dc4 Mon Sep 17 00:00:00 2001
-From: Martin Jansa <Martin.Jansa@gmail.com>
-Date: Mon, 17 May 2010 12:41:06 +0200
-Subject: [PATCH 06/14] gta02 defconfigs, enable LEDS_S3C24XX and dummy battery driver
-
----
- arch/arm/configs/gta02_defconfig     |    2 +-
- arch/arm/configs/gta02_drm_defconfig |   10 +++++-----
- 2 files changed, 6 insertions(+), 6 deletions(-)
-
-diff --git a/arch/arm/configs/gta02_defconfig b/arch/arm/configs/gta02_defconfig
-index 73d26ba..55832ac 100644
---- a/arch/arm/configs/gta02_defconfig
-+++ b/arch/arm/configs/gta02_defconfig
-@@ -1635,7 +1635,7 @@ CONFIG_LEDS_CLASS=y
- #
- # LED drivers
- #
--# CONFIG_LEDS_S3C24XX is not set
-+CONFIG_LEDS_S3C24XX=y
- # CONFIG_LEDS_PCA9532 is not set
- CONFIG_LEDS_GPIO=y
- CONFIG_LEDS_GPIO_PLATFORM=y
-diff --git a/arch/arm/configs/gta02_drm_defconfig b/arch/arm/configs/gta02_drm_defconfig
-index 05aa130..62c1ee4 100644
---- a/arch/arm/configs/gta02_drm_defconfig
-+++ b/arch/arm/configs/gta02_drm_defconfig
-@@ -1,7 +1,7 @@
- #
- # Automatically generated make config: don't edit
--# Linux kernel version: 2.6.32.11
--# Sun Apr 11 14:20:07 2010
-+# Linux kernel version: 2.6.32.13
-+# Mon May 17 14:13:35 2010
- #
- CONFIG_ARM=y
- CONFIG_HAVE_PWM=y
-@@ -1233,7 +1233,7 @@ CONFIG_POWER_SUPPLY=y
- CONFIG_CHARGER_PCF50633=y
- CONFIG_BATTERY_BQ27000_HDQ=y
- CONFIG_HDQ_GPIO_BITBANG=y
--# CONFIG_BATTERY_PLATFORM is not set
-+CONFIG_BATTERY_PLATFORM=y
- # CONFIG_HWMON is not set
- # CONFIG_THERMAL is not set
- CONFIG_WATCHDOG=y
-@@ -1681,14 +1681,14 @@ CONFIG_LEDS_CLASS=y
- #
- # LED drivers
- #
--# CONFIG_LEDS_S3C24XX is not set
-+CONFIG_LEDS_S3C24XX=y
- # CONFIG_LEDS_PCA9532 is not set
- CONFIG_LEDS_GPIO=y
- CONFIG_LEDS_GPIO_PLATFORM=y
- # CONFIG_LEDS_LP3944 is not set
- # CONFIG_LEDS_PCA955X is not set
- # CONFIG_LEDS_DAC124S085 is not set
--# CONFIG_LEDS_PWM is not set
-+CONFIG_LEDS_PWM=y
- # CONFIG_LEDS_BD2802 is not set
- #
--- 
-1.7.1
-
diff --git a/recipes/linux/linux-openmoko-2.6.32/0016-jbt6k74-fix-WS.patch b/recipes/linux/linux-openmoko-2.6.32/0016-jbt6k74-fix-WS.patch
new file mode 100644 (file)
index 0000000..e96a87d
--- /dev/null
@@ -0,0 +1,64 @@
+From 99ce90618a47cdc8c373838b7ee04348cc21d303 Mon Sep 17 00:00:00 2001
+From: Thibaut Girka <thib@sitedethib.com>
+Date: Wed, 21 Jul 2010 09:40:29 +0200
+Subject: [PATCH 16/23] jbt6k74: fix WS
+
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+---
+ drivers/video/backlight/jbt6k74.c |   15 +++++++++++----
+ 1 files changed, 11 insertions(+), 4 deletions(-)
+
+diff --git a/drivers/video/backlight/jbt6k74.c b/drivers/video/backlight/jbt6k74.c
+index 56a3e3a..4db021f 100644
+--- a/drivers/video/backlight/jbt6k74.c
++++ b/drivers/video/backlight/jbt6k74.c
+@@ -268,8 +268,7 @@ static int jbt_off_to_normal(struct jbt_info *jbt)
+       gpio_set_value_cansleep(pdata->gpio_reset, 1);
+       ret = regulator_bulk_enable(ARRAY_SIZE(jbt->supplies), jbt->supplies);
+-
+-      mdelay(120);
++      mdelay(200);
+       /* three times command zero */
+       ret |= jbt_reg_write_nodata(jbt, 0x00);
+@@ -282,10 +281,16 @@ static int jbt_off_to_normal(struct jbt_info *jbt)
+       /* deep standby out */
+       ret |= jbt_reg_write(jbt, JBT_REG_POWER_ON_OFF, 0x11);
+       mdelay(1);
++      if (ret != 0)
++              printk (KERN_ERR "Ignored ret value:%i",ret);
++
+       ret |= jbt_reg_write(jbt, JBT_REG_DISPLAY_MODE, 0x28);
+       /* (re)initialize register set */
+       ret |= jbt_init_regs(jbt);
++      if (ret != 0)
++              printk (KERN_ERR "Ignored ret value2:%i",ret);
++
+       /* Make sure we are 120 ms after SLEEP_OUT */
+       if (time_before(jiffies, jbt->next_sleep))
+@@ -644,7 +649,7 @@ static int jbt6k74_set_power(struct lcd_device *ld, int power)
+       struct jbt_info *jbt = dev_get_drvdata(&ld->dev);
+       jbt->blank_mode = power;
+-      cancel_rearming_delayed_work(&jbt->blank_work);
++      //cancel_rearming_delayed_work(&jbt->blank_work);
+       switch (power) {
+       case FB_BLANK_UNBLANK:
+@@ -658,7 +663,9 @@ static int jbt6k74_set_power(struct lcd_device *ld, int power)
+               break;
+       case FB_BLANK_POWERDOWN:
+               dev_dbg(&jbt->spi->dev, "powerdown\n");
+-              ret = jbt6k74_enter_power_mode(jbt, JBT_POWER_MODE_OFF);
++              //ret = schedule_delayed_work(&jbt->blank_work, HZ);
++              jbt6k74_enter_power_mode(jbt, JBT_POWER_MODE_OFF);
++              ret = 1;
+               break;
+       default:
+               break;
+-- 
+1.7.1.1
+
@@ -1,5 +1,14 @@
+From fd25a512062b198af666bbdab805e8d6b51ed166 Mon Sep 17 00:00:00 2001
+From: Gennady Kupava <gb@bsdmn.com>
+Date: Sun, 27 Jun 2010 10:01:54 +0200
+Subject: [PATCH 17/22] s3c2410_ts: ignore unexpected interrupts
+
+---
+ drivers/input/touchscreen/s3c2410_ts.c |   30 +++++++++++++++++++++++++++++-
+ 1 files changed, 29 insertions(+), 1 deletions(-)
+
 diff --git a/drivers/input/touchscreen/s3c2410_ts.c b/drivers/input/touchscreen/s3c2410_ts.c
-index bcfdd00..73994ff 100644
+index 97def9d..fd0b7d4 100644
 --- a/drivers/input/touchscreen/s3c2410_ts.c
 +++ b/drivers/input/touchscreen/s3c2410_ts.c
 @@ -47,6 +47,9 @@
@@ -12,7 +21,7 @@ index bcfdd00..73994ff 100644
   */
  
  #include <linux/errno.h>
-@@ -118,10 +121,15 @@ struct s3c2410ts {
+@@ -120,10 +123,15 @@ struct s3c2410ts {
        struct kfifo *event_fifo;
        struct s3c_adc_client *adc_client;
        unsigned adc_selected;
@@ -28,7 +37,7 @@ index bcfdd00..73994ff 100644
  static void __iomem *base_addr;
  
  /*
-@@ -280,6 +288,19 @@ static irqreturn_t stylus_updown(int irq, void *dev_id)
+@@ -282,6 +290,19 @@ static irqreturn_t stylus_updown(int irq, void *dev_id)
        ts.is_down = !(data0 & S3C2410_ADCDAT0_UPDOWN) &&
                     !(data1 & S3C2410_ADCDAT0_UPDOWN);
  
@@ -48,7 +57,7 @@ index bcfdd00..73994ff 100644
        event_type = ts.is_down ? 'D' : 'U';
  
        if (unlikely(__kfifo_put(ts.event_fifo, (unsigned char *)&event_type,
-@@ -289,8 +310,10 @@ static irqreturn_t stylus_updown(int irq, void *dev_id)
+@@ -291,8 +312,10 @@ static irqreturn_t stylus_updown(int irq, void *dev_id)
  
        if (ts.is_down)
                s3c2410_ts_start_adc_conversion();
@@ -60,7 +69,7 @@ index bcfdd00..73994ff 100644
  
        mod_timer(&event_send_timer, jiffies + 1);
  
-@@ -325,6 +348,7 @@ static void stylus_adc_action(unsigned p0, unsigned p1, unsigned *conv_left)
+@@ -327,6 +350,7 @@ static void stylus_adc_action(struct s3c_adc_client *client, unsigned p0, unsign
        case -1:
                /* Too much noise. Ignore the event. */
                ts_filter_chain_clear(ts.chain);
@@ -68,7 +77,7 @@ index bcfdd00..73994ff 100644
                writel(WAIT4INT(1), base_addr + S3C2410_ADCTSC);
                return;
        };
-@@ -334,6 +358,7 @@ static void stylus_adc_action(unsigned p0, unsigned p1, unsigned *conv_left)
+@@ -336,6 +360,7 @@ static void stylus_adc_action(struct s3c_adc_client *client, unsigned p0, unsign
                /* This will only happen if we have a bug. */
                TSPRINTK("FIFO full\n");
  
@@ -76,7 +85,7 @@ index bcfdd00..73994ff 100644
        writel(WAIT4INT(1), base_addr + S3C2410_ADCTSC);
        mod_timer(&event_send_timer, jiffies + 1);
  
-@@ -371,6 +396,7 @@ static int __init s3c2410ts_probe(struct platform_device *pdev)
+@@ -373,6 +398,7 @@ static int __init s3c2410ts_probe(struct platform_device *pdev)
        if (!strcmp(pdev->name, "s3c2410-ts"))
                s3c2410_ts_connect();
  
@@ -84,7 +93,7 @@ index bcfdd00..73994ff 100644
        writel(WAIT4INT(0), base_addr + S3C2410_ADCTSC);
  
        /* Initialise input stuff */
-@@ -481,6 +507,7 @@ static int s3c2410ts_remove(struct platform_device *pdev)
+@@ -482,6 +508,7 @@ static int s3c2410ts_remove(struct platform_device *pdev)
  
  static int s3c2410ts_suspend(struct platform_device *pdev, pm_message_t state)
  {
@@ -92,7 +101,7 @@ index bcfdd00..73994ff 100644
        writel(TSC_SLEEP, base_addr + S3C2410_ADCTSC);
        writel(readl(base_addr + S3C2410_ADCCON) | S3C2410_ADCCON_STDBM,
               base_addr + S3C2410_ADCCON);
-@@ -492,6 +519,7 @@ static int s3c2410ts_suspend(struct platform_device *pdev, pm_message_t state)
+@@ -493,6 +520,7 @@ static int s3c2410ts_suspend(struct platform_device *pdev, pm_message_t state)
  static int s3c2410ts_resume(struct platform_device *pdev)
  {
        ts_filter_chain_clear(ts.chain);
@@ -100,3 +109,6 @@ index bcfdd00..73994ff 100644
        enable_irq(IRQ_TC);
        writel(WAIT4INT(0), base_addr + S3C2410_ADCTSC);
  
+-- 
+1.7.1.1
+
diff --git a/recipes/linux/linux-openmoko-2.6.32/0018-glamo-core-initialize-engine-states-as-disabled.patch b/recipes/linux/linux-openmoko-2.6.32/0018-glamo-core-initialize-engine-states-as-disabled.patch
new file mode 100644 (file)
index 0000000..4888b94
--- /dev/null
@@ -0,0 +1,36 @@
+From 9615f587ce8ac94732b6473a44d776473c120af6 Mon Sep 17 00:00:00 2001
+From: Thibaut Girka <thib@sitedethib.com>
+Date: Fri, 25 Jun 2010 20:17:18 +0200
+Subject: [PATCH 18/22] glamo-core: initialize engine states as disabled
+
+This should fix random init failures such as white screen on boot.
+---
+ drivers/mfd/glamo/glamo-core.c |    5 ++++-
+ 1 files changed, 4 insertions(+), 1 deletions(-)
+
+diff --git a/drivers/mfd/glamo/glamo-core.c b/drivers/mfd/glamo/glamo-core.c
+index 33a7a59..f6674f4 100644
+--- a/drivers/mfd/glamo/glamo-core.c
++++ b/drivers/mfd/glamo/glamo-core.c
+@@ -916,7 +916,7 @@ static int __devinit glamo_supported(struct glamo_core *glamo)
+ static int __devinit glamo_probe(struct platform_device *pdev)
+ {
+-      int ret = 0, irq, irq_base;
++      int ret = 0, n, irq, irq_base;
+       struct glamo_core *glamo;
+       struct resource *mem;
+@@ -924,6 +924,9 @@ static int __devinit glamo_probe(struct platform_device *pdev)
+       if (!glamo)
+               return -ENOMEM;
++      for (n = 0; n < __NUM_GLAMO_ENGINES; n++)
++              glamo->engine_state[n] = GLAMO_ENGINE_DISABLED;
++
+       spin_lock_init(&glamo->lock);
+       glamo->pdev = pdev;
+-- 
+1.7.1.1
+
@@ -1,3 +1,12 @@
+From 261e2f00048ea8bfd5c261242c263e5a55401d64 Mon Sep 17 00:00:00 2001
+From: Lars-Peter Clausen <lars@metafoo.de>
+Date: Wed, 7 Jul 2010 15:29:33 +0200
+Subject: [PATCH 19/22] wm8753: use snd_soc_jack on neo1973
+
+---
+ sound/soc/s3c24xx/neo1973_wm8753.c |   46 ++++++++++++++++++++++++++++++++++++
+ 1 files changed, 46 insertions(+), 0 deletions(-)
+
 diff --git a/sound/soc/s3c24xx/neo1973_wm8753.c b/sound/soc/s3c24xx/neo1973_wm8753.c
 index 5cc1ef2..643dae3 100644
 --- a/sound/soc/s3c24xx/neo1973_wm8753.c
@@ -83,3 +92,6 @@ index 5cc1ef2..643dae3 100644
        platform_device_unregister(neo1973_snd_device);
  
        if (machine_is_neo1973_gta01())
+-- 
+1.7.1.1
+
@@ -1,7 +1,7 @@
-From 135a829c2fe551a7418696138df68eefad5a9b39 Mon Sep 17 00:00:00 2001
+From 9a8375f9f03770c85e635fc5dbde7124efb66154 Mon Sep 17 00:00:00 2001
 From: Thomas White <taw@bitwiz.org.uk>
 Date: Thu, 26 Nov 2009 08:55:33 +0300
-Subject: [PATCH] mfd: glamo: Enable FIFO stage for the LCD engine's memory access
+Subject: [PATCH 20/22] mfd: glamo: Enable FIFO stage for the LCD engine's memory access
 
 By avoiding conflicts of memory access inside Glamo, this doubles the
 speed of internal memory access.
diff --git a/recipes/linux/linux-openmoko-2.6.32/use-noclone-attribute-for-naked.patch b/recipes/linux/linux-openmoko-2.6.32/use-noclone-attribute-for-naked.patch
deleted file mode 100644 (file)
index 110a135..0000000
+++ /dev/null
@@ -1,144 +0,0 @@
-From 583c7d937789398cb6e37989ef91cf96c16da204 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sun, 6 Jun 2010 03:28:43 +0200
-Subject: [PATCH] add noinline and noclone attributes to naked functions
-
-Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
----
- arch/arm/mm/copypage-feroceon.c |    4 ++--
- arch/arm/mm/copypage-v4wb.c     |    4 ++--
- arch/arm/mm/copypage-v4wt.c     |    4 ++--
- arch/arm/mm/copypage-xsc3.c     |    4 ++--
- include/linux/compiler-gcc.h    |   11 ++++++++++-
- include/linux/compiler-gcc4.h   |    2 ++
- 6 files changed, 20 insertions(+), 9 deletions(-)
-
-diff --git a/arch/arm/mm/copypage-feroceon.c b/arch/arm/mm/copypage-feroceon.c
-index 70997d5..dd9598b 100644
---- a/arch/arm/mm/copypage-feroceon.c
-+++ b/arch/arm/mm/copypage-feroceon.c
-@@ -18,7 +18,7 @@ feroceon_copy_user_page(void *kto, const void *kfrom)
- {
-       asm("\
-       stmfd   sp!, {r4-r9, lr}                \n\
--      mov     ip, %0                          \n\
-+      mov     ip, %2                          \n\
- 1:    mov     lr, r1                          \n\
-       ldmia   r1!, {r2 - r9}                  \n\
-       pld     [lr, #32]                       \n\
-@@ -64,7 +64,7 @@ feroceon_copy_user_page(void *kto, const void *kfrom)
-       mcr     p15, 0, ip, c7, c10, 4          @ drain WB\n\
-       ldmfd   sp!, {r4-r9, pc}"
-       :
--      : "I" (PAGE_SIZE));
-+      : "r" (kto), "r" (kfrom), "I" (PAGE_SIZE));
- }
- void feroceon_copy_user_highpage(struct page *to, struct page *from,
-diff --git a/arch/arm/mm/copypage-v4wb.c b/arch/arm/mm/copypage-v4wb.c
-index 9ab0984..7bc0ac7 100644
---- a/arch/arm/mm/copypage-v4wb.c
-+++ b/arch/arm/mm/copypage-v4wb.c
-@@ -27,7 +27,7 @@ v4wb_copy_user_page(void *kto, const void *kfrom)
- {
-       asm("\
-       stmfd   sp!, {r4, lr}                   @ 2\n\
--      mov     r2, %0                          @ 1\n\
-+      mov     r2, %2                          @ 1\n\
-       ldmia   r1!, {r3, r4, ip, lr}           @ 4\n\
- 1:    mcr     p15, 0, r0, c7, c6, 1           @ 1   invalidate D line\n\
-       stmia   r0!, {r3, r4, ip, lr}           @ 4\n\
-@@ -44,7 +44,7 @@ v4wb_copy_user_page(void *kto, const void *kfrom)
-       mcr     p15, 0, r1, c7, c10, 4          @ 1   drain WB\n\
-       ldmfd    sp!, {r4, pc}                  @ 3"
-       :
--      : "I" (PAGE_SIZE / 64));
-+      : "r" (kto), "r" (kfrom), "I" (PAGE_SIZE / 64));
- }
- void v4wb_copy_user_highpage(struct page *to, struct page *from,
-diff --git a/arch/arm/mm/copypage-v4wt.c b/arch/arm/mm/copypage-v4wt.c
-index 300efaf..35bf609 100644
---- a/arch/arm/mm/copypage-v4wt.c
-+++ b/arch/arm/mm/copypage-v4wt.c
-@@ -25,7 +25,7 @@ v4wt_copy_user_page(void *kto, const void *kfrom)
- {
-       asm("\
-       stmfd   sp!, {r4, lr}                   @ 2\n\
--      mov     r2, %0                          @ 1\n\
-+      mov     r2, %2                          @ 1\n\
-       ldmia   r1!, {r3, r4, ip, lr}           @ 4\n\
- 1:    stmia   r0!, {r3, r4, ip, lr}           @ 4\n\
-       ldmia   r1!, {r3, r4, ip, lr}           @ 4+1\n\
-@@ -40,7 +40,7 @@ v4wt_copy_user_page(void *kto, const void *kfrom)
-       mcr     p15, 0, r2, c7, c7, 0           @ flush ID cache\n\
-       ldmfd   sp!, {r4, pc}                   @ 3"
-       :
--      : "I" (PAGE_SIZE / 64));
-+      : "r" (kto), "r" (kfrom), "I" (PAGE_SIZE / 64));
- }
- void v4wt_copy_user_highpage(struct page *to, struct page *from,
-diff --git a/arch/arm/mm/copypage-xsc3.c b/arch/arm/mm/copypage-xsc3.c
-index bc4525f..27dc363 100644
---- a/arch/arm/mm/copypage-xsc3.c
-+++ b/arch/arm/mm/copypage-xsc3.c
-@@ -34,7 +34,7 @@ xsc3_mc_copy_user_page(void *kto, const void *kfrom)
- {
-       asm("\
-       stmfd   sp!, {r4, r5, lr}               \n\
--      mov     lr, %0                          \n\
-+      mov     lr, %2                          \n\
-                                               \n\
-       pld     [r1, #0]                        \n\
-       pld     [r1, #32]                       \n\
-@@ -67,7 +67,7 @@ xsc3_mc_copy_user_page(void *kto, const void *kfrom)
-                                               \n\
-       ldmfd   sp!, {r4, r5, pc}"
-       :
--      : "I" (PAGE_SIZE / 64 - 1));
-+      : "r" (kto), "r" (kfrom), "I" (PAGE_SIZE / 64 - 1));
- }
- void xsc3_mc_copy_user_highpage(struct page *to, struct page *from,
-diff --git a/include/linux/compiler-gcc.h b/include/linux/compiler-gcc.h
-index a3ed7cb..132a651 100644
---- a/include/linux/compiler-gcc.h
-+++ b/include/linux/compiler-gcc.h
-@@ -58,8 +58,12 @@
-  * naked functions because then mcount is called without stack and frame pointer
-  * being set up and there is no chance to restore the lr register to the value
-  * before mcount was called.
-+ *
-+ * The asm() bodies of naked functions often depend on standard calling conventions,
-+ * therefore they must be noinline and noclone.  GCC 4.[56] currently fail to enforce
-+ * this, so we must do so ourselves.  See GCC PR44290.
-  */
--#define __naked                               __attribute__((naked)) notrace
-+#define __naked                               __attribute__((naked)) noinline __noclone notrace
- #define __noreturn                    __attribute__((noreturn))
-@@ -84,3 +88,8 @@
- #define _gcc_header(x) __gcc_header(linux/compiler-gcc##x.h)
- #define gcc_header(x) _gcc_header(x)
- #include gcc_header(__GNUC__)
-+
-+#if !defined(__noclone)
-+#define __noclone     /* not needed */
-+#endif
-+
-diff --git a/include/linux/compiler-gcc4.h b/include/linux/compiler-gcc4.h
-index 450fa59..cd5932a 100644
---- a/include/linux/compiler-gcc4.h
-+++ b/include/linux/compiler-gcc4.h
-@@ -36,4 +36,6 @@
-    the kernel context */
- #define __cold                        __attribute__((__cold__))
-+/* Mark a function definition as prohibited from being cloned. */
-+#define __noclone      __attribute__((__noclone__))
- #endif
--- 
-1.7.1
-
index 0aae209..3c237f2 100644 (file)
@@ -1,7 +1,7 @@
 require linux.inc
 require linux-openmoko.inc
 
-KERNEL_RELEASE="2.6.32.13"
+KERNEL_RELEASE="2.6.32.16"
 
 SRCREV = "a9254be10ac2294ea20165a87c09ea6afcf66d94"
 OEV = "oe3.3"
@@ -12,10 +12,10 @@ SRC_URI = "\
   file://0001-Revert-s3cmci-initialize-default-platform-data-no_wp.patch \
 # latest stable patch for ubi fix 943e167cb3e8fb191894bde8a4a75db78531a7c8
   ${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/patch-${KERNEL_RELEASE}.bz2;apply=yes;name=stablepatch \
-# build fix
+# build fix - only when snd is as module
   file://0001-wm8753-fix-build-with-gcc-4.4.2-which-works-ok-with-.patch \
 # fix runtime issue when built with gcc-4.5
-  file://use-noclone-attribute-for-naked.patch \
+  file://0001-add-noinline-and-noclone-attributes-to-naked-functio.patch \
 # patches from Radek Polak used in qtmoko
   file://0002-accels.patch.patch \
   file://0003-usbhost.patch.patch \
@@ -30,19 +30,20 @@ SRC_URI = "\
   file://0012-Fix-dynamic-command-queue-allocation.patch \
   file://0013-Debug-statements-for-testing.patch \
   file://0014-Fix-claim-of-2D-register-resource.patch \
+# fix HS Jack
+  file://0019-wm8753-use-snd_soc_jack-on-neo1973.patch \
 # fix for lost touchscreen https://docs.openmoko.org/trac/ticket/2328
-  file://touchscreen_ignoreunexpectedintr29.patch \
+  file://0017-s3c2410_ts-ignore-unexpected-interrupts.patch \
 # fix WS
-  file://0001-glamo-core-initialize-engine-states-as-disabled.patch \
-# fix HS Jack
-  file://hs-jack.patch \
+  file://0016-jbt6k74-fix-WS.patch \
+  file://0018-glamo-core-initialize-engine-states-as-disabled.patch \
 # faster glamo
-  file://0001-mfd-glamo-Enable-FIFO-stage-for-the-LCD-engine-s-mem.patch \
+  file://0020-mfd-glamo-Enable-FIFO-stage-for-the-LCD-engine-s-mem.patch \
   file://defconfig \
 "
 
-SRC_URI[stablepatch.md5sum] = "ba6abb1ffee513a1d4f831599ddae490"
-SRC_URI[stablepatch.sha256sum] = "baf6dff5d1c478e65decf2e8b704c60e546ea37c4de59ee8eb6af9dd3d63f145"
+SRC_URI[stablepatch.md5sum] = "744890f9651962ceae7663d44b19df65"
+SRC_URI[stablepatch.sha256sum] = "e744aaa87d2daee6d10b76f411d9efa13db24f779981890b482d72364694aa08"
 
 S = "${WORKDIR}/git"