summaryrefslogtreecommitdiffstats
path: root/target/linux/s3c24xx/patches-2.6.26/1128-gta01-fix-jbt-platform-missing-members.patch.patch
blob: 5887cf751975b1075d714bbaef25e20dacc45b8a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
From a471ebdb87d610c8e0b85c01b7a2b95c13a869cc Mon Sep 17 00:00:00 2001
From: Mike Westerhof <mwester@dls.net>
Date: Fri, 25 Jul 2008 23:06:07 +0100
Subject: [PATCH] gta01-fix-jbt-platform-missing-members.patch

Created an attachment (id=594) / BZ#79
Add missing platform_data that caused the GTA01 to crash on suspend/resume

The interface to the jbt6k74 driver changed slightly; this patch adds the
missing platform_data for the GTA01.  This prevents a crash while suspending.
This patch also makes some minor changes to cleanup and clarify some debug
messages.
Signed-off-by: Mike Westerhof <mwester@dls.net>
---
 arch/arm/mach-s3c2410/mach-gta01.c |   21 ++++++++++++++++-----
 1 files changed, 16 insertions(+), 5 deletions(-)

diff --git a/arch/arm/mach-s3c2410/mach-gta01.c b/arch/arm/mach-s3c2410/mach-gta01.c
index ff08449..a77ed3d 100644
--- a/arch/arm/mach-s3c2410/mach-gta01.c
+++ b/arch/arm/mach-s3c2410/mach-gta01.c
@@ -73,6 +73,7 @@
 #include <asm/plat-s3c24xx/pm.h>
 #include <asm/plat-s3c24xx/udc.h>
 #include <asm/plat-s3c24xx/neo1973.h>
+#include <linux/jbt6k74.h>
 
 static struct map_desc gta01_iodesc[] __initdata = {
 	{
@@ -389,7 +390,7 @@ static void gta01_mmc_set_power(unsigned char power_mode, unsigned short vdd)
 	int bit;
 	int mv = 1700; /* 1.7V for MMC_VDD_165_195 */
 
-	printk(KERN_DEBUG "mmc_set_power(power_mode=%u, vdd=%u\n",
+	printk(KERN_DEBUG "mmc_set_power(power_mode=%u, vdd=%u)\n",
 	       power_mode, vdd);
 
 	switch (system_rev) {
@@ -499,10 +500,20 @@ static struct s3c2410_ts_mach_info gta01_ts_cfg = {
 
 /* SPI */
 
+void gta01_jbt6k74_reset(int devidx, int level)
+{
+	/* empty place holder; gta01 does not yet use this */
+	printk(KERN_DEBUG "gta01_jbt6k74_reset\n");
+}
+
+const struct jbt6k74_platform_data gta01_jbt6k74_pdata = {
+	.reset		= gta01_jbt6k74_reset,
+};
+
 static struct spi_board_info gta01_spi_board_info[] = {
 	{
 		.modalias	= "jbt6k74",
-		/* platform_data */
+		.platform_data	= &gta01_jbt6k74_pdata,
 		/* controller_data */
 		/* irq */
 		.max_speed_hz	= 10 * 1000 * 1000,
@@ -641,7 +652,7 @@ static void __init gta01_map_io(void)
 
 static irqreturn_t gta01_modem_irq(int irq, void *param)
 {
-	printk(KERN_DEBUG "modem wakeup interrupt\n");
+	printk(KERN_DEBUG "GSM wakeup interrupt (IRQ %d)\n", irq);
 	return IRQ_HANDLED;
 }
 
@@ -709,9 +720,9 @@ static void __init gta01_machine_init(void)
 	set_irq_type(GTA01_IRQ_MODEM, IRQT_RISING);
 	rc = request_irq(GTA01_IRQ_MODEM, gta01_modem_irq, IRQF_DISABLED,
 			 "modem", NULL);
-	if (!rc)
-		printk(KERN_ERR  "GTA01: can't request GSM modem wakeup IRQ\n");
 	enable_irq_wake(GTA01_IRQ_MODEM);
+	printk(KERN_DEBUG  "Enabled GSM wakeup IRQ %d (rc=%d)\n",
+	       GTA01_IRQ_MODEM, rc);
 }
 
 MACHINE_START(NEO1973_GTA01, "GTA01")
-- 
1.5.6.3