diff options
Diffstat (limited to 'target/linux/s3c24xx/patches-2.6.24/1113-Fix-the-firing-of-Jack-Interrupts-after-resume-whe.patch')
-rw-r--r-- | target/linux/s3c24xx/patches-2.6.24/1113-Fix-the-firing-of-Jack-Interrupts-after-resume-whe.patch | 121 |
1 files changed, 0 insertions, 121 deletions
diff --git a/target/linux/s3c24xx/patches-2.6.24/1113-Fix-the-firing-of-Jack-Interrupts-after-resume-whe.patch b/target/linux/s3c24xx/patches-2.6.24/1113-Fix-the-firing-of-Jack-Interrupts-after-resume-whe.patch deleted file mode 100644 index fad3585..0000000 --- a/target/linux/s3c24xx/patches-2.6.24/1113-Fix-the-firing-of-Jack-Interrupts-after-resume-whe.patch +++ /dev/null @@ -1,121 +0,0 @@ -From d6c8d6b85864edd5bb616f9fda0d2e9c1f74de42 Mon Sep 17 00:00:00 2001 -From: Holger Freyther <zecke@openmoko.org> -Date: Sun, 13 Apr 2008 07:25:54 +0100 -Subject: [PATCH] Fix the firing of "Jack"-Interrupts after resume when the modem is powered on. - -GTA02_GPIO_nDL_GSM defaults to high/1. On resume do not enable the DL_GSM if -it was not enabled before. This is stopping the storm of interrupts. - -Fix the logic in the download file handling. Downloads are disabled (0) when -the GTA02_GPIO_nDL_GSM is high (1). To enable downloading set -GTA02_GPIO_nDL_GSM to low (0, !on). Disable the jack interrupt while download -the is active. When disabling download we will get a couple of jack interrupts -but this is hardly avoidable. - -Avoid reading the GPIO value if we do not even have a console set. - -Signed-Off-by: Holger Freyther <zecke@openmoko.org> ---- - arch/arm/plat-s3c24xx/neo1973_pm_gsm.c | 35 +++++++++++++++++++++++-------- - 1 files changed, 26 insertions(+), 9 deletions(-) - -diff --git a/arch/arm/plat-s3c24xx/neo1973_pm_gsm.c b/arch/arm/plat-s3c24xx/neo1973_pm_gsm.c -index 1123d7d..b4ea8ba 100644 ---- a/arch/arm/plat-s3c24xx/neo1973_pm_gsm.c -+++ b/arch/arm/plat-s3c24xx/neo1973_pm_gsm.c -@@ -17,8 +17,9 @@ - #include <linux/platform_device.h> - #include <linux/console.h> - #include <linux/errno.h> -+#include <linux/interrupt.h> - --#include <asm/hardware.h> -+#include <asm/gpio.h> - #include <asm/mach-types.h> - #include <asm/arch/gta01.h> - -@@ -30,6 +31,7 @@ - - struct gta01pm_priv { - int gpio_ngsm_en; -+ int gpio_ndl_gsm; - struct console *con; - }; - -@@ -68,7 +70,7 @@ static ssize_t gsm_read(struct device *dev, struct device_attribute *attr, - #endif - #ifdef CONFIG_MACH_NEO1973_GTA02 - if (machine_is_neo1973_gta02()) -- if (s3c2410_gpio_getpin(GTA02_GPIO_nDL_GSM)) -+ if (!s3c2410_gpio_getpin(GTA02_GPIO_nDL_GSM)) - goto out_1; - #endif - } -@@ -143,8 +145,18 @@ static ssize_t gsm_write(struct device *dev, struct device_attribute *attr, - s3c2410_gpio_setpin(GTA01_GPIO_MODEM_DNLOAD, on); - #endif - #ifdef CONFIG_MACH_NEO1973_GTA02 -- if (machine_is_neo1973_gta02()) -- s3c2410_gpio_setpin(GTA02_GPIO_nDL_GSM, on); -+ if (machine_is_neo1973_gta02()) { -+ /* FIXME: Layering violation, we know how this relates to -+ * the Jack-IRQ. And we assume the keyboard driver to be -+ * around. */ -+ if (on) -+ disable_irq(gpio_to_irq(GTA02_GPIO_JACK_INSERT)); -+ else -+ enable_irq(gpio_to_irq(GTA02_GPIO_JACK_INSERT)); -+ -+ gta01_gsm.gpio_ndl_gsm = !on; -+ s3c2410_gpio_setpin(GTA02_GPIO_nDL_GSM, !on); -+ } - #endif - } - -@@ -159,26 +171,29 @@ static DEVICE_ATTR(download, 0644, gsm_read, gsm_write); - static int gta01_gsm_suspend(struct platform_device *pdev, pm_message_t state) - { - /* GPIO state is saved/restored by S3C2410 core GPIO driver, so we -- * don't need to do anything here */ -+ * don't need to do much here. */ -+ - -- /* disable DL GSM to prevent jack_insert becoming floating */ -+ /* disable DL GSM to prevent jack_insert becoming 'floating' */ - if (machine_is_neo1973_gta02()) - s3c2410_gpio_setpin(GTA02_GPIO_nDL_GSM, 1); -+ - return 0; - } - - static int gta01_gsm_resume(struct platform_device *pdev) - { - /* GPIO state is saved/restored by S3C2410 core GPIO driver, so we -- * don't need to do anything here */ -+ * don't need to do much here. */ - - /* Make sure that the kernel console on the serial port is still - * disabled. FIXME: resume ordering race with serial driver! */ -- if (s3c2410_gpio_getpin(GTA01_GPIO_MODEM_ON) && gta01_gsm.con) -+ if (gta01_gsm.con && s3c2410_gpio_getpin(GTA01_GPIO_MODEM_ON)) - console_stop(gta01_gsm.con); - - if (machine_is_neo1973_gta02()) -- s3c2410_gpio_setpin(GTA02_GPIO_nDL_GSM, 0); -+ s3c2410_gpio_setpin(GTA02_GPIO_nDL_GSM, gta01_gsm.gpio_ndl_gsm); -+ - return 0; - } - #else -@@ -248,6 +263,8 @@ static int __init gta01_gsm_probe(struct platform_device *pdev) - } else - gta01_gsm.con = NULL; - -+ gta01_gsm.gpio_ndl_gsm = 1; -+ - return sysfs_create_group(&pdev->dev.kobj, >a01_gsm_attr_group); - } - --- -1.5.6.5 - |