aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/arm/configs/gta04_defconfig17
-rw-r--r--arch/arm/mach-omap2/board-omap3gta04.c80
2 files changed, 42 insertions, 55 deletions
diff --git a/arch/arm/configs/gta04_defconfig b/arch/arm/configs/gta04_defconfig
index c2de0f6..900ed9f 100644
--- a/arch/arm/configs/gta04_defconfig
+++ b/arch/arm/configs/gta04_defconfig
@@ -63,6 +63,7 @@ CONFIG_GENERIC_HARDIRQS=y
CONFIG_HAVE_SPARSE_IRQ=y
CONFIG_GENERIC_IRQ_SHOW=y
CONFIG_GENERIC_IRQ_CHIP=y
+CONFIG_IRQ_DOMAIN=y
# CONFIG_SPARSE_IRQ is not set
#
@@ -1237,7 +1238,7 @@ CONFIG_INPUT_KEYBOARD=y
# CONFIG_KEYBOARD_QT1070 is not set
# CONFIG_KEYBOARD_QT2160 is not set
# CONFIG_KEYBOARD_LKKBD is not set
-# CONFIG_KEYBOARD_GPIO is not set
+CONFIG_KEYBOARD_GPIO=y
# CONFIG_KEYBOARD_TCA6416 is not set
# CONFIG_KEYBOARD_MATRIX is not set
# CONFIG_KEYBOARD_LM8323 is not set
@@ -1294,7 +1295,7 @@ CONFIG_INPUT_MISC=y
# CONFIG_INPUT_POWERMATE is not set
# CONFIG_INPUT_YEALINK is not set
# CONFIG_INPUT_CM109 is not set
-# CONFIG_INPUT_TWL4030_PWRBUTTON is not set
+CONFIG_INPUT_TWL4030_PWRBUTTON=y
# CONFIG_INPUT_TWL4030_VIBRA is not set
# CONFIG_INPUT_TWL6030_PWRBUTTON is not set
CONFIG_INPUT_UINPUT=y
@@ -1345,9 +1346,13 @@ CONFIG_DEVKMEM=y
#
CONFIG_SERIAL_8250=y
CONFIG_SERIAL_8250_CONSOLE=y
-CONFIG_SERIAL_8250_NR_UARTS=4
+CONFIG_SERIAL_8250_NR_UARTS=32
CONFIG_SERIAL_8250_RUNTIME_UARTS=4
-# CONFIG_SERIAL_8250_EXTENDED is not set
+CONFIG_SERIAL_8250_EXTENDED=y
+CONFIG_SERIAL_8250_MANY_PORTS=y
+CONFIG_SERIAL_8250_SHARE_IRQ=y
+CONFIG_SERIAL_8250_DETECT_IRQ=y
+CONFIG_SERIAL_8250_RSA=y
#
# Non-8250 serial port support
@@ -1604,8 +1609,8 @@ CONFIG_REGULATOR=y
# CONFIG_REGULATOR_DEBUG is not set
# CONFIG_REGULATOR_DUMMY is not set
CONFIG_REGULATOR_FIXED_VOLTAGE=y
-# CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set
-# CONFIG_REGULATOR_USERSPACE_CONSUMER is not set
+CONFIG_REGULATOR_VIRTUAL_CONSUMER=y
+CONFIG_REGULATOR_USERSPACE_CONSUMER=y
# CONFIG_REGULATOR_BQ24022 is not set
# CONFIG_REGULATOR_MAX1586 is not set
# CONFIG_REGULATOR_MAX8649 is not set
diff --git a/arch/arm/mach-omap2/board-omap3gta04.c b/arch/arm/mach-omap2/board-omap3gta04.c
index 2ff95f3..07ba2df 100644
--- a/arch/arm/mach-omap2/board-omap3gta04.c
+++ b/arch/arm/mach-omap2/board-omap3gta04.c
@@ -39,7 +39,9 @@
#include <linux/regulator/machine.h>
#include <linux/regulator/fixed.h>
#include <linux/i2c/twl.h>
+#ifdef CONFIG_TOUCHSCREEN_TSC2007
#include <linux/i2c/tsc2007.h>
+#endif
#ifdef CONFIG_BMP085
#include <linux/i2c/bmp085.h>
#endif
@@ -86,9 +88,11 @@
#define AUX_BUTTON_GPIO 7
#define TWL4030_MSECURE_GPIO 22
-#define TS_PENIRQ_GPIO 160
#define WO3G_GPIO (gta04_version >= 4 ? 10 : 176)
+#define GTA04_TSC2007_GPIO 160
+#define GTA04_TSC2007_IRQ OMAP_GPIO_IRQ(GTA04_TSC2007_GPIO)
+
/* see: https://patchwork.kernel.org/patch/120449/
* OMAP3 gta04 revision
* Run time detection of gta04 revision is done by reading GPIO.
@@ -858,56 +862,40 @@ static struct platform_device gta04_w2cbw003_codec_audio_device = {
#endif
#ifdef CONFIG_TOUCHSCREEN_TSC2007
-
-// TODO: see also http://e2e.ti.com/support/arm174_microprocessors/omap_applications_processors/f/42/t/33262.aspx for an example...
-// and http://www.embedded-bits.co.uk/?tag=struct-i2c_board_info for a description of how struct i2c_board_info works
-
-/* TouchScreen */
-
-static int ts_get_pendown_state(void)
+static int tsc2007_get_pendown_state(void)
{
-#if 1
- int val = 0;
- // gpio_free(GPIO_FN_INTC_IRQ0); // what does this change or not change on the board we have copied the code from?
-// gpio_request(TS_PENIRQ_GPIO, "tsc2007_pen_down");
-// gpio_direction_input(TS_PENIRQ_GPIO);
-
- val = gpio_get_value(TS_PENIRQ_GPIO);
-
-// gpio_free(TS_PENIRQ_GPIO);
- // gpio_request(GPIO_FN_INTC_IRQ0, NULL);
-// printk("ts_get_pendown_state() -> %d\n", val);
- return val ? 0 : 1;
-#else
- return 0;
-#endif
+ printk(KERN_ERR "tsc2007 get pendown state\n");
+ return gpio_get_value(GTA04_TSC2007_GPIO) ? 0 : 1;
}
static int __init tsc2007_init(void)
{
printk("tsc2007_init()\n");
- omap_mux_init_gpio(TS_PENIRQ_GPIO, OMAP_PIN_INPUT_PULLUP);
- if (gpio_request(TS_PENIRQ_GPIO, "tsc2007_pen_down")) {
- printk(KERN_ERR "Failed to request GPIO %d for "
- "TSC2007 pen down IRQ\n", TS_PENIRQ_GPIO);
- return -ENODEV;
+
+ omap_mux_init_gpio(GTA04_TSC2007_GPIO, OMAP_PIN_INPUT_PULLUP);
+
+ if (gpio_request(GTA04_TSC2007_GPIO, "tsc2007_irq")) {
+ printk(KERN_ERR "Failed to request TSC2007 GPIO (%d)\n",
+ GTA04_TSC2007_GPIO);
+ return -ENODEV;
}
- if (gpio_direction_input(TS_PENIRQ_GPIO)) {
- printk(KERN_WARNING "GPIO#%d cannot be configured as "
- "input\n", TS_PENIRQ_GPIO);
+ if (gpio_direction_input(GTA04_TSC2007_GPIO)) {
+ printk(KERN_ERR "Failed to set TSC2007 GPIO (%d) as input\n",
+ GTA04_TSC2007_GPIO);
return -ENXIO;
}
-// debounce isn't handled properly when power-saving and we lose
-// interrupts, so don't bother for now.
-// gpio_set_debounce(TS_PENIRQ_GPIO, (0x0a+1)*31);
- irq_set_irq_type(OMAP_GPIO_IRQ(TS_PENIRQ_GPIO), IRQ_TYPE_EDGE_FALLING);
+
+ irq_set_irq_type(GTA04_TSC2007_IRQ, IRQF_TRIGGER_FALLING);
+
return 0;
}
static void tsc2007_exit(void)
{
- gpio_free(TS_PENIRQ_GPIO);
+ printk("tsc2007_exit()\n");
+
+ gpio_free(GTA04_TSC2007_GPIO);
}
struct tsc2007_platform_data tsc2007_info = {
@@ -919,11 +907,10 @@ struct tsc2007_platform_data tsc2007_info = {
.max_x = 0xf00,
.max_y = 0xf00,
.max_z = MAX_12BIT,
- .get_pendown_state = ts_get_pendown_state,
+ .get_pendown_state = tsc2007_get_pendown_state,
.init_platform_hw = tsc2007_init,
.exit_platform_hw = tsc2007_exit,
};
-
#endif
@@ -961,7 +948,7 @@ static struct i2c_board_info __initdata gta04_i2c2_boardinfo[] = {
I2C_BOARD_INFO("tsc2007", 0x48),
.type = "tsc2007",
.platform_data = &tsc2007_info,
- .irq = OMAP_GPIO_IRQ(TS_PENIRQ_GPIO),
+ .irq = GTA04_TSC2007_IRQ,
},
#endif
#ifdef CONFIG_BMP085
@@ -1066,7 +1053,6 @@ static void __init gta04_init_early(void)
}
#if defined(CONFIG_REGULATOR_VIRTUAL_CONSUMER)
-
static struct platform_device gta04_vaux1_virtual_regulator_device = {
.name = "reg-virt-consumer",
.id = 1,
@@ -1215,19 +1201,17 @@ static void __init gta04_init(void)
{
int err;
- printk("running gta04_init()\n");
+ printk("gta04_init()\n");
+
omap3_mux_init(board_mux, OMAP_PACKAGE_CBB);
gta04_init_rev();
gta04_i2c_init();
-#ifdef GTA04_MISSING
- regulator_has_full_constraints_listed(all_reg_data);
-#endif
- omap_serial_init();
+ omap_serial_init();
omap_display_init(&gta04_dss_data);
- platform_add_devices(gta04_devices,
- ARRAY_SIZE(gta04_devices));
+ platform_add_devices(gta04_devices, ARRAY_SIZE(gta04_devices));
+
omap2_hsmmc_init(mmc);
// #ifdef CONFIG_OMAP_MUX
@@ -1313,8 +1297,6 @@ static void __init gta04_init(void)
MACHINE_START(GTA04, "GTA04")
/* Maintainer: Nikolaus Schaller - http://www.gta04.org */
-// .phys_io = 0x48000000,
-// .io_pg_offst = ((0xfa000000) >> 18) & 0xfffc,
.boot_params = 0x80000100,
.reserve = omap_reserve,
.map_io = omap3_map_io,