aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arch/arm/mach-s3c6410/Makefile2
-rw-r--r--arch/arm/mach-s3c6410/include/mach/om-gta03.h46
-rw-r--r--arch/arm/mach-s3c6410/mach-om-gta03.c105
-rw-r--r--drivers/i2c/chips/pcf50633.c2
4 files changed, 105 insertions, 50 deletions
diff --git a/arch/arm/mach-s3c6410/Makefile b/arch/arm/mach-s3c6410/Makefile
index 2cd4f189036..0159ea208ed 100644
--- a/arch/arm/mach-s3c6410/Makefile
+++ b/arch/arm/mach-s3c6410/Makefile
@@ -21,3 +21,5 @@ obj-$(CONFIG_S3C6410_SETUP_SDHCI) += setup-sdhci.o
# machine support
obj-$(CONFIG_MACH_SMDK6410) += mach-smdk6410.o
+obj-$(CONFIG_MACH_OPENMOKO_GTA03) += mach-om-gta03.o
+
diff --git a/arch/arm/mach-s3c6410/include/mach/om-gta03.h b/arch/arm/mach-s3c6410/include/mach/om-gta03.h
index 0928676a2d1..b191b767076 100644
--- a/arch/arm/mach-s3c6410/include/mach/om-gta03.h
+++ b/arch/arm/mach-s3c6410/include/mach/om-gta03.h
@@ -1,3 +1,16 @@
+/*
+ * GTA03 GPIO Mappings
+ *
+ * (C) 2008 by Openmoko Inc.
+ * Author: Andy Green <andy@openmoko.com>
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation
+ *
+ */
+
#ifndef _OM_GTA03_H
#define _OM_GTA03_H
@@ -5,7 +18,7 @@
#include <mach/irqs.h>
#include <linux/pcf50633.h>
-/* Different hardware revisions, passed in ATAG_REVISION by u-boot */
+/* ATAG_REVISION from bootloader */
#define GTA03v1_SYSTEM_REV 0x00000001
#define GTA03_GPIO_VIBRATOR_ON S3C64XX_GPF(13)
@@ -60,19 +73,18 @@
#define GTA03_GPIO_N_MODEM_RESET S3C64XX_GPO(1)
-#define GTA03_IRQ_GSENSOR_1 IRQ_EINT0
-#define GTA03_IRQ_KEY_MINUS IRQ_EINT1
-#define GTA03_IRQ_KEY_PLUS IRQ_EINT2
-#define GTA03_IRQ_PWR_IND IRQ_EINT3
-#define GTA03_IRQ_PMU IRQ_EINT4
-#define GTA03_IRQ_AUX IRQ_EINT6
-#define GTA03_IRQ_nHOLD IRQ_EINT7
-#define GTA03v1_IRQ_nSIM_CD IRQ_EINT8
-#define GTA03_IRQ_PCF50633 IRQ_EINT9
-#define GTA03_IRQ_3D IRQ_EINT12
-#define GTA03_IRQ_GSENSOR_2 IRQ_EINT16
-#define GTA03v3_IRQ_nUSB_OC IRQ_EINT17
-#define GTA03v3_IRQ_nUSB_FLT IRQ_EINT18
-#define GTA03v3_IRQ_nGSM_OC IRQ_EINT19
-
-#endif /* _OM_GTA03_H */ \ No newline at end of file
+#define GTA03_IRQ_GSENSOR_1 S3C_EINT(0)
+#define GTA03_IRQ_KEY_MINUS S3C_EINT(1)
+#define GTA03_IRQ_KEY_PLUS S3C_EINT(2)
+#define GTA03_IRQ_PWR_IND S3C_EINT(3)
+#define GTA03_IRQ_PMU S3C_EINT(4)
+#define GTA03_IRQ_TOUCH S3C_EINT(5)
+#define GTA03_IRQ_JACK_INSERT S3C_EINT(6)
+#define GTA03_IRQ_GPS_INT S3C_EINT(7)
+#define GTA03_IRQ_NHOLD S3C_EINT(8)
+#define GTA03_IRQ_WLAN_WAKEUP S3C_EINT(9)
+#define GTA03_IRQ_GSENSOR_2 S3C_EINT(10)
+#define GTA03_IRQ_IO1 S3C_EINT(11)
+#define GTA03_IRQ_NONKEYWAKE S3C_EINT(12)
+
+#endif /* _OM_GTA03_H */
diff --git a/arch/arm/mach-s3c6410/mach-om-gta03.c b/arch/arm/mach-s3c6410/mach-om-gta03.c
index cfc9fd54dd0..8f793ee88e3 100644
--- a/arch/arm/mach-s3c6410/mach-om-gta03.c
+++ b/arch/arm/mach-s3c6410/mach-om-gta03.c
@@ -37,21 +37,21 @@
#include <asm/mach-types.h>
#include <plat/regs-serial.h>
+#include <plat/iic.h>
#include <plat/s3c6410.h>
#include <plat/clock.h>
#include <plat/devs.h>
#include <plat/cpu.h>
-#include <plat/udc.h>
+/* #include <plat/udc.h> */
#include <linux/i2c.h>
#include <linux/backlight.h>
#include <linux/regulator/machine.h>
#include <linux/pcf50633.h>
-#include <linux/ts_filter_mean.h>
-#include <linux/ts_filter_median.h>
+#include <mach/om-gta03.h>
#define UCON S3C2410_UCON_DEFAULT | S3C2410_UCON_UCLK
#define ULCON S3C2410_LCON_CS8 | S3C2410_LCON_PNONE | S3C2410_LCON_STOPB
@@ -88,28 +88,28 @@ static struct s3c2410_uartcfg om_gta03_uartcfgs[] __initdata = {
},
};
-struct map_desc om_gta03_iodesc[] = {};
+struct map_desc om_gta03_6410_iodesc[] = {};
static struct resource om_gta03_button_resources[] = {
[0] = {
- .start = GTA03_GPIO_AUX_KEY,
- .end = GTA03_GPIO_AUX_KEY,
+ .start = 0,
+ .end = 0,
},
[1] = {
- .start = GTA03_GPIO_HOLD_KEY,
- .end = GTA03_GPIO_HOLD_KEY,
+ .start = GTA03_GPIO_HOLD,
+ .end = GTA03_GPIO_HOLD,
},
[2] = {
.start = GTA03_GPIO_JACK_INSERT,
.end = GTA03_GPIO_JACK_INSERT,
},
[3] = {
- .start = GTA03_GPIO_PLUS_KEY,
- .end = GTA03_GPIO_PLUS_KEY,
+ .start = GTA03_GPIO_KEY_PLUS,
+ .end = GTA03_GPIO_KEY_PLUS,
},
[4] = {
- .start = GTA03_GPIO_MINUS_KEY,
- .end = GTA03_GPIO_MINUS_KEY,
+ .start = GTA03_GPIO_KEY_MINUS,
+ .end = GTA03_GPIO_KEY_MINUS,
},
};
@@ -121,6 +121,25 @@ static struct platform_device om_gta03_button_dev = {
/********************** PMU ***************************/
+/*
+ * GTA03 PMU Mapping info
+ *
+ * name maxcurr default Nom consumers
+ *
+ * AUTO 1100mA ON 3.3V 3.3V Main 3.3V rail
+ * DOWN1 500mA ON 1.2V 1.2V CPU VddARM, VddINT, VddMPLL, VddOTGI
+ * DOWN2 500mA ON 1.8V 1.8V CPU VddAlive via LDO, Memories, WLAN
+ * LED 25mA OFF 18V Backlight
+ * HCLDO 200mA OFF 2.8V Camera 2V8
+ * LDO1 50mA ON 2.8V --- unused ---
+ * LDO2 50mA OFF 1.8V Camera 1V8
+ * LDO3 50mA OFF 3.3V CODEC 3.3V
+ * LDO4 150mA ON 2.8V 2.7V uSD power
+ * LDO5 150mA OFF 3.0V GPS 3V
+ * LDO6 50mA ON 3.0V 3.0V LCM 3V
+ *
+ */
+
/* PMU driver info */
@@ -181,6 +200,21 @@ static void om_gta03_pcf50633_attach_child_devices(struct device *parent_device)
}
+static struct regulator_consumer_supply ldo4_consumers[] = {
+ {
+ .dev = &s3c_device_hsmmc0.dev,
+ .supply = "SD_3V",
+ },
+};
+#if 0
+static struct regulator_consumer_supply ldo5_consumers[] = {
+ {
+ .dev = &gta01_pm_gps_dev.dev,
+ .supply = "RF_3V",
+ },
+};
+#endif
+
struct pcf50633_platform_data om_gta03_pcf_pdata = {
@@ -205,10 +239,8 @@ struct pcf50633_platform_data om_gta03_pcf_pdata = {
[1] = PCF50633_INT2_ONKEYF,
[2] = PCF50633_INT3_ONKEY1S
},
- /* warning: these get rewritten during machine init below
- * depending on pcb variant
- */
.reg_init_data = {
+ /* GTA03: Main 3.3V rail */
[PCF50633_REGULATOR_AUTO] = {
.constraints = {
.min_uV = 3300000,
@@ -221,15 +253,17 @@ struct pcf50633_platform_data om_gta03_pcf_pdata = {
},
.num_consumer_supplies = 0,
},
+ /* GTA03: CPU core power */
[PCF50633_REGULATOR_DOWN1] = {
.constraints = {
- .min_uV = 1300000,
- .max_uV = 1600000,
+ .min_uV = 900000,
+ .max_uV = 1200000,
.valid_modes_mask = REGULATOR_MODE_NORMAL,
.apply_uV = 1,
},
.num_consumer_supplies = 0,
},
+ /* GTA03: Memories */
[PCF50633_REGULATOR_DOWN2] = {
.constraints = {
.min_uV = 1800000,
@@ -242,15 +276,17 @@ struct pcf50633_platform_data om_gta03_pcf_pdata = {
},
.num_consumer_supplies = 0,
},
+ /* GTA03: Camera 2V8 */
[PCF50633_REGULATOR_HCLDO] = {
.constraints = {
.min_uV = 2000000,
.max_uV = 3300000,
.valid_modes_mask = REGULATOR_MODE_NORMAL,
},
- .num_consumer_supplies = 1,
- .consumer_supplies = hcldo_consumers,
+ .num_consumer_supplies = 0,
+/* .consumer_supplies = hcldo_consumers, */
},
+ /* GTA03: Unused */
[PCF50633_REGULATOR_LDO1] = {
.constraints = {
.min_uV = 1300000,
@@ -260,6 +296,7 @@ struct pcf50633_platform_data om_gta03_pcf_pdata = {
},
.num_consumer_supplies = 0,
},
+ /* GTA03: Camera 1V8 */
[PCF50633_REGULATOR_LDO2] = {
.constraints = {
.min_uV = 3300000,
@@ -269,40 +306,43 @@ struct pcf50633_platform_data om_gta03_pcf_pdata = {
},
.num_consumer_supplies = 0,
},
+ /* GTA03: Codec 3.3V */
[PCF50633_REGULATOR_LDO3] = {
.constraints = {
- .min_uV = 3000000,
- .max_uV = 3000000,
+ .min_uV = 3300000,
+ .max_uV = 3300000,
.valid_modes_mask = REGULATOR_MODE_NORMAL,
.apply_uV = 1,
},
.num_consumer_supplies = 0,
},
-
+ /* GTA03: uSD Power */
[PCF50633_REGULATOR_LDO4] = {
.constraints = {
- .min_uV = 3200000,
- .max_uV = 3200000,
+ .min_uV = 3000000,
+ .max_uV = 3000000,
.valid_modes_mask = REGULATOR_MODE_NORMAL,
.apply_uV = 1,
},
.num_consumer_supplies = 1,
.consumer_supplies = ldo4_consumers,
},
+ /* GTA03: GPS 3V */
[PCF50633_REGULATOR_LDO5] = {
.constraints = {
- .min_uV = 1500000,
- .max_uV = 1500000,
+ .min_uV = 3000000,
+ .max_uV = 3000000,
.valid_modes_mask = REGULATOR_MODE_NORMAL,
.apply_uV = 1,
},
- .num_consumer_supplies = 1,
- .consumer_supplies = ldo5_consumers,
+ .num_consumer_supplies = 0,
+/* .consumer_supplies = ldo5_consumers, */
},
+ /* GTA03: LCM 3V */
[PCF50633_REGULATOR_LDO6] = {
.constraints = {
- .min_uV = 0,
- .max_uV = 3300000,
+ .min_uV = 3000000,
+ .max_uV = 3000000,
.valid_modes_mask = REGULATOR_MODE_NORMAL,
.state_mem = {
.enabled = 1,
@@ -310,6 +350,7 @@ struct pcf50633_platform_data om_gta03_pcf_pdata = {
},
.num_consumer_supplies = 0,
},
+ /* power for memories in suspend */
[PCF50633_REGULATOR_MEMLDO] = {
.constraints = {
.min_uV = 1800000,
@@ -348,7 +389,7 @@ extern void s3c64xx_init_io(struct map_desc *, int);
static void __init om_gta03_map_io(void)
{
- s3c64xx_init_io(om_gta03_iodesc, ARRAY_SIZE(om_gta03_6410_iodesc));
+ s3c64xx_init_io(om_gta03_6410_iodesc, ARRAY_SIZE(om_gta03_6410_iodesc));
s3c24xx_init_clocks(12000000);
s3c24xx_init_uarts(om_gta03_uartcfgs, ARRAY_SIZE(om_gta03_uartcfgs));
}
@@ -363,7 +404,7 @@ static void __init om_gta03_machine_init(void)
platform_add_devices(om_gta03_devices, ARRAY_SIZE(om_gta03_devices));
}
-MACHINE_START(MACH_TYPE_OPENMOKO_GTA03, "OM-GTA03")
+MACHINE_START(OPENMOKO_GTA03, "OM-GTA03")
/* Maintainer: Andy Green <andy@openmoko.com> */
.phys_io = S3C_PA_UART & 0xfff00000,
.io_pg_offst = (((u32)S3C_VA_UART) >> 18) & 0xfffc,
diff --git a/drivers/i2c/chips/pcf50633.c b/drivers/i2c/chips/pcf50633.c
index 8ba414bc531..a148be52817 100644
--- a/drivers/i2c/chips/pcf50633.c
+++ b/drivers/i2c/chips/pcf50633.c
@@ -1574,7 +1574,7 @@ static int pcf50633_probe(struct i2c_client *client, const struct i2c_device_id
if (enable_irq_wake(irq) < 0)
dev_err(&client->dev, "IRQ %u cannot be enabled as wake-up"
- "source in this hardware revision!", irq);
+ "source in this hardware revision! vs %d\n", irq, S3C_EINT(4));
if (pcf->pdata->used_features & PCF50633_FEAT_RTC) {
pcf50633_rtc_pdev.dev.platform_data = pcf;