summaryrefslogtreecommitdiffstats
path: root/target/linux/s3c24xx/patches-2.6.24/1320--ARM-S3C24xx-Add-preliminary-E-TEN-glofiish-M800-s.patch
blob: 44ef8fbcc6a7ca8b12aa8f7ff5c5b86171f71db3 (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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
From eee43706c5969f5d99096dddefae3be0c41a6ed2 Mon Sep 17 00:00:00 2001
From: Harald Welte <laforge@gnumonks.org>
Date: Thu, 13 Nov 2008 08:29:11 +0000
Subject: [PATCH] [ARM] S3C24xx: Add preliminary E-TEN glofiish M800 support

This patch adds preliminary support for the M800.  If booted
through haret, the system has the following working components:
* NAND read support
* framebuffer / LCM (no jbt6k74 power management yet)
* USB device controller (incl. Pullup)
* microSD card (incl. card-detect)
* backlight brightness control (using gta01-bl.c)
* input event device for power, camera and record button
* input event device for keyboard slide event
* bluetooth power control (using gta01-pm-bt)

Many things are still missing, like
* NAND write support
* GPS power control
* GSM/3G modem interface
* capsense buttons, joystick and querty-keyboard
* camera
* audio

Signed-off-by: Harald Welte <laforge@gnumonks.org>
---
 arch/arm/mach-s3c2440/Kconfig         |    7 +++++++
 arch/arm/mach-s3c2440/Makefile        |    1 +
 arch/arm/plat-s3c24xx/neo1973_pm_bt.c |   17 +++++++++++++++++
 arch/arm/tools/mach-types             |    1 +
 drivers/input/keyboard/Kconfig        |   11 +++++++++++
 drivers/input/keyboard/Makefile       |    1 +
 drivers/mtd/nand/nand_bbt.c           |    2 ++
 7 files changed, 40 insertions(+), 0 deletions(-)

diff --git a/arch/arm/mach-s3c2440/Kconfig b/arch/arm/mach-s3c2440/Kconfig
index 4a211d8..4c3b6b2 100644
--- a/arch/arm/mach-s3c2440/Kconfig
+++ b/arch/arm/mach-s3c2440/Kconfig
@@ -98,6 +98,13 @@ config NEO1973_GTA02_2440
 	   Say Y here if you are using an early hardware revision
 	   of the FIC/Openmoko Neo1973 GTA02 GSM Phone.
 
+config MACH_M800
+	bool "E-TEN glofiish M800/X800"
+	select CPU_S3C2442
+	help
+	   Say Y here if you are using the E-TEN glofiish M800/X800.
+
+
 endmenu
 
 #source "arch/arm/mach-s3c2440/camera/Kconfig"
diff --git a/arch/arm/mach-s3c2440/Makefile b/arch/arm/mach-s3c2440/Makefile
index e3ca9e3..8617820 100644
--- a/arch/arm/mach-s3c2440/Makefile
+++ b/arch/arm/mach-s3c2440/Makefile
@@ -24,3 +24,4 @@ obj-$(CONFIG_ARCH_S3C2440)	+= mach-smdk2440.o
 obj-$(CONFIG_MACH_NEXCODER_2440) += mach-nexcoder.o
 obj-$(CONFIG_MACH_HXD8)		+= mach-hxd8.o
 obj-$(CONFIG_MACH_NEO1973_GTA02) += mach-gta02.o
+obj-$(CONFIG_MACH_M800)		+= mach-glofiish.o
diff --git a/arch/arm/plat-s3c24xx/neo1973_pm_bt.c b/arch/arm/plat-s3c24xx/neo1973_pm_bt.c
index dfc9ae8..dcb251b 100644
--- a/arch/arm/plat-s3c24xx/neo1973_pm_bt.c
+++ b/arch/arm/plat-s3c24xx/neo1973_pm_bt.c
@@ -30,6 +30,9 @@
 #include <linux/pcf50633.h>
 #endif
 
+#ifdef CONFIG_MACH_M800
+#include <asm/arch/glofiish.h>
+#endif
 
 #define DRVMSG "FIC Neo1973 Bluetooth Power Management"
 
@@ -56,6 +59,14 @@ static ssize_t bt_read(struct device *dev, struct device_attribute *attr,
 			break;
 #endif /* CONFIG_MACH_NEO1973_GTA02 */
 
+#ifdef CONFIG_MACH_M800
+		case MACH_TYPE_M800:
+			if (s3c2410_gpio_getpin(M800_GPIO_BT_POWER_1) &&
+			    s3c2410_gpio_getpin(M800_GPIO_BT_POWER_2))
+				goto out_1;
+			break;
+#endif /* CONFIG_MACH_M800 */
+
 		}
 	} else if (!strcmp(attr->attr.name, "reset")) {
 		switch (machine_arch_type) {
@@ -121,6 +132,12 @@ static ssize_t bt_write(struct device *dev, struct device_attribute *attr,
 			break;
 #endif /* CONFIG_MACH_NEO1973_GTA02 */
 
+#ifdef CONFIG_MACH_M800
+		case MACH_TYPE_M800:
+			s3c2410_gpio_setpin(M800_GPIO_BT_POWER_1, on);
+			s3c2410_gpio_setpin(M800_GPIO_BT_POWER_2, on);
+			break;
+#endif /* CONFIG_MACH_M800 */
 		}
 	} else if (!strcmp(attr->attr.name, "reset")) {
 		/* reset is low-active, so we need to invert */
diff --git a/arch/arm/tools/mach-types b/arch/arm/tools/mach-types
index 0a9a5e7..2578091 100644
--- a/arch/arm/tools/mach-types
+++ b/arch/arm/tools/mach-types
@@ -1367,3 +1367,4 @@ db88f5281		MACH_DB88F5281		DB88F5281		1358
 csb726			MACH_CSB726		CSB726			1359
 tik27			MACH_TIK27		TIK27			1360
 mx_uc7420		MACH_MX_UC7420		MX_UC7420		1361
+m800			MACH_M800		M800			1772
diff --git a/drivers/input/keyboard/Kconfig b/drivers/input/keyboard/Kconfig
index a61ca45..68a893f 100644
--- a/drivers/input/keyboard/Kconfig
+++ b/drivers/input/keyboard/Kconfig
@@ -304,6 +304,17 @@ config KEYBOARD_NEO1973
 	  To compile this driver as a module, choose M here: the
 	  module will be called neo1973kbd.
 
+config KEYBOARD_M800
+	tristate "E-TEN glofiish M800 buttons"
+	depends on MACH_M800
+	default y
+	help
+	  Say Y here to enable the buttons on the E-TEN glofiish
+	  M800 GSM phone.
+
+	  To compile this driver as a module, choose M here: the
+	  module will be called m800kbd.
+
 config KEYBOARD_QT2410
 	tristate "QT2410 buttons"
 	depends on MACH_QT2410
diff --git a/drivers/input/keyboard/Makefile b/drivers/input/keyboard/Makefile
index 34bfc33..005a050 100644
--- a/drivers/input/keyboard/Makefile
+++ b/drivers/input/keyboard/Makefile
@@ -15,6 +15,7 @@ obj-$(CONFIG_KEYBOARD_NEWTON)		+= newtonkbd.o
 obj-$(CONFIG_KEYBOARD_STOWAWAY)		+= stowaway.o
 obj-$(CONFIG_KEYBOARD_CORGI)		+= corgikbd.o
 obj-$(CONFIG_KEYBOARD_NEO1973)		+= neo1973kbd.o
+obj-$(CONFIG_KEYBOARD_M800)		+= m800kbd.o
 obj-$(CONFIG_KEYBOARD_QT2410)		+= qt2410kbd.o
 obj-$(CONFIG_KEYBOARD_SPITZ)		+= spitzkbd.o
 obj-$(CONFIG_KEYBOARD_HIL)		+= hil_kbd.o
diff --git a/drivers/mtd/nand/nand_bbt.c b/drivers/mtd/nand/nand_bbt.c
index 5e121ce..7e20816 100644
--- a/drivers/mtd/nand/nand_bbt.c
+++ b/drivers/mtd/nand/nand_bbt.c
@@ -430,8 +430,10 @@ static int create_bbt(struct mtd_info *mtd, uint8_t *buf,
 
 		if (ret) {
 			this->bbt[i >> 3] |= 0x03 << (i & 0x6);
+#if 0
 			printk(KERN_WARNING "Bad eraseblock %d at 0x%08x\n",
 			       i >> 1, (unsigned int)from);
+#endif
 			mtd->ecc_stats.badblocks++;
 		}
 
-- 
1.5.6.5