summaryrefslogtreecommitdiff
path: root/target/linux/s3c24xx/patches-2.6.26/1029-gta02-power_control.patch.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/s3c24xx/patches-2.6.26/1029-gta02-power_control.patch.patch')
-rwxr-xr-xtarget/linux/s3c24xx/patches-2.6.26/1029-gta02-power_control.patch.patch586
1 files changed, 0 insertions, 586 deletions
diff --git a/target/linux/s3c24xx/patches-2.6.26/1029-gta02-power_control.patch.patch b/target/linux/s3c24xx/patches-2.6.26/1029-gta02-power_control.patch.patch
deleted file mode 100755
index 2704969..0000000
--- a/target/linux/s3c24xx/patches-2.6.26/1029-gta02-power_control.patch.patch
+++ /dev/null
@@ -1,586 +0,0 @@
-From 70a0c17968f5151ce4f468785860e04bbc7a9d3c Mon Sep 17 00:00:00 2001
-From: mokopatches <mokopatches@openmoko.org>
-Date: Wed, 16 Jul 2008 14:46:56 +0100
-Subject: [PATCH] gta02-power_control.patch
-
----
- arch/arm/plat-s3c24xx/neo1973_pm_bt.c | 84 +++++++++---
- arch/arm/plat-s3c24xx/neo1973_pm_gps.c | 217 ++++++++++++++++++++++++--------
- arch/arm/plat-s3c24xx/neo1973_pm_gsm.c | 97 ++++++++++++--
- 3 files changed, 309 insertions(+), 89 deletions(-)
-
-diff --git a/arch/arm/plat-s3c24xx/neo1973_pm_bt.c b/arch/arm/plat-s3c24xx/neo1973_pm_bt.c
-index b1af441..d685ef7 100644
---- a/arch/arm/plat-s3c24xx/neo1973_pm_bt.c
-+++ b/arch/arm/plat-s3c24xx/neo1973_pm_bt.c
-@@ -19,7 +19,9 @@
- #include <linux/pcf50606.h>
-
- #include <asm/hardware.h>
-+#include <asm/mach-types.h>
- #include <asm/arch/gta01.h>
-+#include <asm/arch/gta02.h>
-
- #define DRVMSG "FIC Neo1973 Bluetooth Power Management"
-
-@@ -27,14 +29,30 @@ static ssize_t bt_read(struct device *dev, struct device_attribute *attr,
- char *buf)
- {
- if (!strcmp(attr->attr.name, "power_on")) {
-- if (pcf50606_onoff_get(pcf50606_global,
-- PCF50606_REGULATOR_D1REG) &&
-- pcf50606_voltage_get(pcf50606_global,
-- PCF50606_REGULATOR_D1REG) == 3100)
-- goto out_1;
-+ switch (machine_arch_type) {
-+ case MACH_TYPE_NEO1973_GTA01:
-+ if (pcf50606_onoff_get(pcf50606_global,
-+ PCF50606_REGULATOR_D1REG) &&
-+ pcf50606_voltage_get(pcf50606_global,
-+ PCF50606_REGULATOR_D1REG) == 3100)
-+ goto out_1;
-+ break;
-+ case MACH_TYPE_NEO1973_GTA02:
-+ if (s3c2410_gpio_getpin(GTA02_GPIO_BT_EN))
-+ goto out_1;
-+ break;
-+ }
- } else if (!strcmp(attr->attr.name, "reset")) {
-- if (s3c2410_gpio_getpin(GTA01_GPIO_BT_EN) == 0)
-- goto out_1;
-+ switch (machine_arch_type) {
-+ case MACH_TYPE_NEO1973_GTA01:
-+ if (s3c2410_gpio_getpin(GTA01_GPIO_BT_EN) == 0)
-+ goto out_1;
-+ break;
-+ case MACH_TYPE_NEO1973_GTA02:
-+ if (s3c2410_gpio_getpin(GTA02_GPIO_BT_EN) == 0)
-+ goto out_1;
-+ break;
-+ }
- }
-
- return strlcpy(buf, "0\n", 3);
-@@ -48,20 +66,37 @@ static ssize_t bt_write(struct device *dev, struct device_attribute *attr,
- unsigned long on = simple_strtoul(buf, NULL, 10);
-
- if (!strcmp(attr->attr.name, "power_on")) {
-- /* if we are powering up, assert reset, then power, then
-- * release reset */
-- if (on) {
-- s3c2410_gpio_setpin(GTA01_GPIO_BT_EN, 0);
-- pcf50606_voltage_set(pcf50606_global,
-- PCF50606_REGULATOR_D1REG,
-- 3100);
-+ switch (machine_arch_type) {
-+ case MACH_TYPE_NEO1973_GTA01:
-+ /* if we are powering up, assert reset, then power,
-+ * then release reset */
-+ if (on) {
-+ s3c2410_gpio_setpin(GTA01_GPIO_BT_EN, 0);
-+ pcf50606_voltage_set(pcf50606_global,
-+ PCF50606_REGULATOR_D1REG,
-+ 3100);
-+ }
-+ pcf50606_onoff_set(pcf50606_global,
-+ PCF50606_REGULATOR_D1REG, on);
-+ s3c2410_gpio_setpin(GTA01_GPIO_BT_EN, on);
-+ break;
-+ case MACH_TYPE_NEO1973_GTA02:
-+ if (on)
-+ s3c2410_gpio_setpin(GTA02_GPIO_BT_EN, 0);
-+ else
-+ s3c2410_gpio_setpin(GTA02_GPIO_BT_EN, 1);
-+ break;
- }
-- pcf50606_onoff_set(pcf50606_global,
-- PCF50606_REGULATOR_D1REG, on);
-- s3c2410_gpio_setpin(GTA01_GPIO_BT_EN, on);
- } else if (!strcmp(attr->attr.name, "reset")) {
- /* reset is low-active, so we need to invert */
-- s3c2410_gpio_setpin(GTA01_GPIO_BT_EN, on ? 0 : 1);
-+ switch (machine_arch_type) {
-+ case MACH_TYPE_NEO1973_GTA01:
-+ s3c2410_gpio_setpin(GTA01_GPIO_BT_EN, on ? 0 : 1);
-+ break;
-+ case MACH_TYPE_NEO1973_GTA02:
-+ s3c2410_gpio_setpin(GTA02_GPIO_BT_EN, on ? 0 : 1);
-+ break;
-+ }
- }
-
- return count;
-@@ -107,9 +142,16 @@ static int __init gta01_bt_probe(struct platform_device *pdev)
- {
- dev_info(&pdev->dev, DRVMSG ": starting\n");
-
-- /* we make sure that the voltage is off */
-- pcf50606_onoff_set(pcf50606_global,
-- PCF50606_REGULATOR_D1REG, 0);
-+ switch (machine_arch_type) {
-+ case MACH_TYPE_NEO1973_GTA01:
-+ /* we make sure that the voltage is off */
-+ pcf50606_onoff_set(pcf50606_global,
-+ PCF50606_REGULATOR_D1REG, 0);
-+ break;
-+ case MACH_TYPE_NEO1973_GTA02:
-+ /* FIXME: implementation */
-+ break;
-+ }
- /* we pull reset to low to make sure that the chip doesn't
- * drain power through the reset line */
- s3c2410_gpio_setpin(GTA01_GPIO_BT_EN, 0);
-diff --git a/arch/arm/plat-s3c24xx/neo1973_pm_gps.c b/arch/arm/plat-s3c24xx/neo1973_pm_gps.c
-index f8cf719..6bd8054 100644
---- a/arch/arm/plat-s3c24xx/neo1973_pm_gps.c
-+++ b/arch/arm/plat-s3c24xx/neo1973_pm_gps.c
-@@ -17,10 +17,18 @@
- #include <linux/delay.h>
- #include <linux/platform_device.h>
-
--#include <linux/pcf50606.h>
--
- #include <asm/hardware.h>
-+
-+#include <asm/mach-types.h>
-+#ifdef CONFIG_MACH_NEO1973_GTA01
- #include <asm/arch/gta01.h>
-+#include <linux/pcf50606.h>
-+#endif
-+
-+#ifdef CONFIG_MACH_NEO1973_GTA02
-+#include <asm/arch/gta02.h>
-+#include <linux/pcf50633.h>
-+#endif
-
- /* This is the 2.8V supply for the RTC crystal, the mail clock crystal and
- * the input to VDD_RF */
-@@ -248,15 +256,42 @@ static int gps_power_1v5_get(void)
- /* This is the POWERON pin */
- static void gps_pwron_set(int on)
- {
-- s3c2410_gpio_setpin(GTA01_GPIO_GPS_PWRON, on);
-+#ifdef CONFIG_MACH_NEO1973_GTA01
-+ if (machine_is_neo1973_gta01())
-+ s3c2410_gpio_setpin(GTA01_GPIO_GPS_PWRON, on);
-+#endif /* CONFIG_MACH_NEO1973_GTA01 */
-+
-+#ifdef CONFIG_MACH_NEO1973_GTA02
-+ if (machine_is_neo1973_gta02()) {
-+ if (on)
-+ pcf50633_voltage_set(pcf50633_global,
-+ PCF50633_REGULATOR_LDO5, 3000);
-+ pcf50633_onoff_set(pcf50633_global,
-+ PCF50633_REGULATOR_LDO5, on);
-+ }
-+#endif /* CONFIG_MACH_NEO1973_GTA02 */
- }
-
- static int gps_pwron_get(void)
- {
-- if (s3c2410_gpio_getpin(GTA01_GPIO_GPS_PWRON))
-- return 1;
-- else
-- return 0;
-+#ifdef CONFIG_MACH_NEO1973_GTA01
-+ if (machine_is_neo1973_gta01()) {
-+ if (s3c2410_gpio_getpin(GTA01_GPIO_GPS_PWRON))
-+ return 1;
-+ else
-+ return 0;
-+ }
-+#endif /* CONFIG_MACH_NEO1973_GTA01 */
-+
-+#ifdef CONFIG_MACH_NEO1973_GTA02
-+ if (machine_is_neo1973_gta02()) {
-+ if (pcf50633_onoff_get(pcf50633_global, PCF50633_REGULATOR_LDO5))
-+ return 1;
-+ else
-+ return 0;
-+ }
-+#endif /* CONFIG_MACH_NEO1973_GTA02 */
-+ return -1;
- }
-
- /* This is the nRESET pin */
-@@ -441,17 +476,40 @@ static DEVICE_ATTR(power_sequence, 0644, power_sequence_read,
- static int gta01_pm_gps_suspend(struct platform_device *pdev,
- pm_message_t state)
- {
-- /* FIXME */
-- gps_power_sequence_down();
-+#ifdef CONFIG_MACH_NEO1973_GTA01
-+ if (machine_is_neo1973_gta01()) {
-+ /* FIXME */
-+ gps_power_sequence_down();
-+ }
-+#endif /* CONFIG_MACH_NEO1973_GTA01 */
-+
-+#ifdef CONFIG_MACH_NEO1973_GTA02
-+ if (machine_is_neo1973_gta02()) {
-+ /* FIXME */
-+ pcf50633_onoff_set(pcf50633_global,
-+ PCF50633_REGULATOR_LDO5, 0);
-+ }
-+#endif /* CONFIG_MACH_NEO1973_GTA02 */
-
- return 0;
- }
-
- static int gta01_pm_gps_resume(struct platform_device *pdev)
- {
-- /* FIXME */
-- gps_power_sequence_up();
--
-+#ifdef CONFIG_MACH_NEO1973_GTA01
-+ if (machine_is_neo1973_gta01()) {
-+ /* FIXME */
-+ gps_power_sequence_up();
-+ }
-+#endif /* CONFIG_MACH_NEO1973_GTA01 */
-+
-+#ifdef CONFIG_MACH_NEO1973_GTA02
-+ if (machine_is_neo1973_gta02()) {
-+ /* FIXME */
-+ pcf50633_onoff_set(pcf50633_global,
-+ PCF50633_REGULATOR_LDO5, 1);
-+#endif /* CONFIG_MACH_NEO1973_GTA02 */
-+ }
- return 0;
- }
- #else
-@@ -476,59 +534,110 @@ static struct attribute_group gta01_gps_attr_group = {
- .attrs = gta01_gps_sysfs_entries,
- };
-
-+static struct attribute *gta02_gps_sysfs_entries[] = {
-+ &dev_attr_pwron.attr,
-+ NULL
-+};
-+
-+static struct attribute_group gta02_gps_attr_group = {
-+ .name = NULL,
-+ .attrs = gta02_gps_sysfs_entries,
-+};
-+
- static int __init gta01_pm_gps_probe(struct platform_device *pdev)
- {
-- s3c2410_gpio_cfgpin(GTA01_GPIO_GPS_PWRON, S3C2410_GPIO_OUTPUT);
-+#ifdef CONFIG_MACH_NEO1973_GTA01
-+ if (machine_is_neo1973_gta01()) {
-+ s3c2410_gpio_cfgpin(GTA01_GPIO_GPS_PWRON, S3C2410_GPIO_OUTPUT);
-
-- switch (system_rev) {
-- case GTA01v3_SYSTEM_REV:
-- break;
-- case GTA01v4_SYSTEM_REV:
-- s3c2410_gpio_cfgpin(GTA01_GPIO_GPS_RESET, S3C2410_GPIO_OUTPUT);
-- break;
-- case GTA01Bv3_SYSTEM_REV:
-- case GTA01Bv4_SYSTEM_REV:
-- s3c2410_gpio_cfgpin(GTA01_GPIO_GPS_EN_3V3, S3C2410_GPIO_OUTPUT);
-- /* fallthrough */
-- case GTA01Bv2_SYSTEM_REV:
-- s3c2410_gpio_cfgpin(GTA01_GPIO_GPS_EN_2V8, S3C2410_GPIO_OUTPUT);
-- s3c2410_gpio_cfgpin(GTA01_GPIO_GPS_EN_3V, S3C2410_GPIO_OUTPUT);
-- s3c2410_gpio_cfgpin(GTA01_GPIO_GPS_RESET, S3C2410_GPIO_OUTPUT);
-- break;
-- default:
-- dev_warn(&pdev->dev, "Unknown GTA01 Revision 0x%x, "
-- "AGPS PM features not available!!!\n",
-- system_rev);
-- return -1;
-- break;
-- }
-+ switch (system_rev) {
-+ case GTA01v3_SYSTEM_REV:
-+ break;
-+ case GTA01v4_SYSTEM_REV:
-+ s3c2410_gpio_cfgpin(GTA01_GPIO_GPS_RESET, S3C2410_GPIO_OUTPUT);
-+ break;
-+ case GTA01Bv3_SYSTEM_REV:
-+ case GTA01Bv4_SYSTEM_REV:
-+ s3c2410_gpio_cfgpin(GTA01_GPIO_GPS_EN_3V3, S3C2410_GPIO_OUTPUT);
-+ /* fallthrough */
-+ case GTA01Bv2_SYSTEM_REV:
-+ s3c2410_gpio_cfgpin(GTA01_GPIO_GPS_EN_2V8, S3C2410_GPIO_OUTPUT);
-+ s3c2410_gpio_cfgpin(GTA01_GPIO_GPS_EN_3V, S3C2410_GPIO_OUTPUT);
-+ s3c2410_gpio_cfgpin(GTA01_GPIO_GPS_RESET, S3C2410_GPIO_OUTPUT);
-+ break;
-+ default:
-+ dev_warn(&pdev->dev, "Unknown GTA01 Revision 0x%x, "
-+ "AGPS PM features not available!!!\n",
-+ system_rev);
-+ return -1;
-+ break;
-+ }
-
-- gps_power_sequence_down();
-+ gps_power_sequence_down();
-
-- switch (system_rev) {
-- case GTA01v3_SYSTEM_REV:
-- case GTA01v4_SYSTEM_REV:
-- case GTA01Bv2_SYSTEM_REV:
-- gta01_gps_sysfs_entries[ARRAY_SIZE(gta01_gps_sysfs_entries)-3] =
-- &dev_attr_power_tcxo_2v8.attr;
-- break;
-- case GTA01Bv3_SYSTEM_REV:
-- case GTA01Bv4_SYSTEM_REV:
-- gta01_gps_sysfs_entries[ARRAY_SIZE(gta01_gps_sysfs_entries)-3] =
-- &dev_attr_power_core_1v5.attr;
-- gta01_gps_sysfs_entries[ARRAY_SIZE(gta01_gps_sysfs_entries)-2] =
-- &dev_attr_power_vdd_core_1v5.attr;
-- break;
-- }
-+ switch (system_rev) {
-+ case GTA01v3_SYSTEM_REV:
-+ case GTA01v4_SYSTEM_REV:
-+ case GTA01Bv2_SYSTEM_REV:
-+ gta01_gps_sysfs_entries[ARRAY_SIZE(gta01_gps_sysfs_entries)-3] =
-+ &dev_attr_power_tcxo_2v8.attr;
-+ break;
-+ case GTA01Bv3_SYSTEM_REV:
-+ case GTA01Bv4_SYSTEM_REV:
-+ gta01_gps_sysfs_entries[ARRAY_SIZE(gta01_gps_sysfs_entries)-3] =
-+ &dev_attr_power_core_1v5.attr;
-+ gta01_gps_sysfs_entries[ARRAY_SIZE(gta01_gps_sysfs_entries)-2] =
-+ &dev_attr_power_vdd_core_1v5.attr;
-+ break;
-+ }
-
-- return sysfs_create_group(&pdev->dev.kobj, &gta01_gps_attr_group);
-+ return sysfs_create_group(&pdev->dev.kobj, &gta01_gps_attr_group);
-+ }
-+#endif /* CONFIG_MACH_NEO1973_GTA01 */
-+
-+#ifdef CONFIG_MACH_NEO1973_GTA02
-+ if (machine_is_neo1973_gta02()) {
-+ switch (system_rev) {
-+ case GTA02v2_SYSTEM_REV:
-+ case GTA02v3_SYSTEM_REV:
-+ case GTA02v4_SYSTEM_REV:
-+ case GTA02v5_SYSTEM_REV:
-+ case GTA02v6_SYSTEM_REV:
-+ pcf50633_voltage_set(pcf50633_global,
-+ PCF50633_REGULATOR_LDO5, 3000);
-+ pcf50633_onoff_set(pcf50633_global,
-+ PCF50633_REGULATOR_LDO5, 0);
-+ dev_info(&pdev->dev, "FIC Neo1973 GPS Power Managerment:"
-+ "starting\n");
-+ break;
-+ default:
-+ dev_warn(&pdev->dev, "Unknown GTA02 Revision 0x%x, "
-+ "AGPS PM features not available!!!\n",
-+ system_rev);
-+ return -1;
-+ break;
-+ }
-+ return sysfs_create_group(&pdev->dev.kobj, &gta02_gps_attr_group);
-+ }
-+#endif /* CONFIG_MACH_NEO1973_GTA02 */
-+ return -1;
- }
-
- static int gta01_pm_gps_remove(struct platform_device *pdev)
- {
-- gps_power_sequence_down();
-- sysfs_remove_group(&pdev->dev.kobj, &gta01_gps_attr_group);
-+#ifdef CONFIG_MACH_NEO1973_GTA01
-+ if (machine_is_neo1973_gta01()) {
-+ gps_power_sequence_down();
-+ sysfs_remove_group(&pdev->dev.kobj, &gta01_gps_attr_group);
-+ }
-+#endif /* CONFIG_MACH_NEO1973_GTA01 */
-
-+#ifdef CONFIG_MACH_NEO1973_GTA02
-+ if (machine_is_neo1973_gta02()) {
-+ pcf50633_onoff_set(pcf50633_global, PCF50633_REGULATOR_LDO5, 0);
-+ sysfs_remove_group(&pdev->dev.kobj, &gta02_gps_attr_group);
-+ }
-+#endif /* CONFIG_MACH_NEO1973_GTA02 */
- return 0;
- }
-
-diff --git a/arch/arm/plat-s3c24xx/neo1973_pm_gsm.c b/arch/arm/plat-s3c24xx/neo1973_pm_gsm.c
-index a1615f8..13cb45b 100644
---- a/arch/arm/plat-s3c24xx/neo1973_pm_gsm.c
-+++ b/arch/arm/plat-s3c24xx/neo1973_pm_gsm.c
-@@ -19,8 +19,15 @@
- #include <linux/errno.h>
-
- #include <asm/hardware.h>
-+#include <asm/mach-types.h>
- #include <asm/arch/gta01.h>
-
-+#ifdef CONFIG_MACH_NEO1973_GTA02
-+#include <asm/arch/gta02.h>
-+#include <linux/pcf50633.h>
-+#include <asm/arch/regs-gpioj.h>
-+#endif
-+
- struct gta01pm_priv {
- int gpio_ngsm_en;
- struct console *con;
-@@ -54,8 +61,16 @@ static ssize_t gsm_read(struct device *dev, struct device_attribute *attr,
- if (s3c2410_gpio_getpin(GTA01_GPIO_MODEM_RST))
- goto out_1;
- } else if (!strcmp(attr->attr.name, "download")) {
-- if (s3c2410_gpio_getpin(GTA01_GPIO_MODEM_DNLOAD))
-- goto out_1;
-+#ifdef CONFIG_MACH_NEO1973_GTA01
-+ if (machine_is_neo1973_gta01())
-+ if (s3c2410_gpio_getpin(GTA01_GPIO_MODEM_DNLOAD))
-+ goto out_1;
-+#endif
-+#ifdef CONFIG_MACH_NEO1973_GTA02
-+ if (machine_is_neo1973_gta02())
-+ if (s3c2410_gpio_getpin(GTA02_GPIO_nDL_GSM))
-+ goto out_1;
-+#endif
- }
-
- return strlcpy(buf, "0\n", 3);
-@@ -70,32 +85,67 @@ static ssize_t gsm_write(struct device *dev, struct device_attribute *attr,
-
- if (!strcmp(attr->attr.name, "power_on")) {
- if (on) {
-- dev_info(dev, "powering up GSM, thus disconnecting "
-- "serial console\n");
-+ if (gta01_gsm.con) {
-+ dev_info(dev, "powering up GSM, thus "
-+ "disconnecting serial console\n");
-
-- if (gta01_gsm.con)
- console_stop(gta01_gsm.con);
-+ }
-
- if (gta01_gsm.gpio_ngsm_en)
- s3c2410_gpio_setpin(gta01_gsm.gpio_ngsm_en, 0);
-
-+ switch (system_rev) {
-+#ifdef CONFIG_MACH_NEO1973_GTA02
-+ case GTA02v2_SYSTEM_REV:
-+ case GTA02v3_SYSTEM_REV:
-+ case GTA02v4_SYSTEM_REV:
-+ case GTA02v5_SYSTEM_REV:
-+ case GTA02v6_SYSTEM_REV:
-+ pcf50633_gpio_set(pcf50633_global,
-+ PCF50633_GPIO2, 1);
-+ break;
-+#endif
-+ }
-+
- s3c2410_gpio_setpin(GTA01_GPIO_MODEM_ON, 1);
- } else {
- s3c2410_gpio_setpin(GTA01_GPIO_MODEM_ON, 0);
-
-+ switch (system_rev) {
-+#ifdef CONFIG_MACH_NEO1973_GTA02
-+ case GTA02v2_SYSTEM_REV:
-+ case GTA02v3_SYSTEM_REV:
-+ case GTA02v4_SYSTEM_REV:
-+ case GTA02v5_SYSTEM_REV:
-+ case GTA02v6_SYSTEM_REV:
-+ pcf50633_gpio_set(pcf50633_global,
-+ PCF50633_GPIO2, 0);
-+ break;
-+#endif
-+ }
-+
- if (gta01_gsm.gpio_ngsm_en)
- s3c2410_gpio_setpin(gta01_gsm.gpio_ngsm_en, 1);
-
-- if (gta01_gsm.con)
-+ if (gta01_gsm.con) {
- console_start(gta01_gsm.con);
-
-- dev_info(dev, "powered down GSM, thus enabling "
-- "serial console\n");
-+ dev_info(dev, "powered down GSM, thus enabling "
-+ "serial console\n");
-+ }
- }
- } else if (!strcmp(attr->attr.name, "reset")) {
- s3c2410_gpio_setpin(GTA01_GPIO_MODEM_RST, on);
- } else if (!strcmp(attr->attr.name, "download")) {
-- s3c2410_gpio_setpin(GTA01_GPIO_MODEM_DNLOAD, on);
-+#ifdef CONFIG_MACH_NEO1973_GTA01
-+ if (machine_is_neo1973_gta01())
-+ 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);
-+#endif
- }
-
- return count;
-@@ -111,6 +161,9 @@ 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 */
-
-+ /* disable DL GSM to prevent jack_insert becoming flaoting */
-+ if (machine_is_neo1973_gta02())
-+ s3c2410_gpio_setpin(GTA02_GPIO_nDL_GSM, 1);
- return 0;
- }
-
-@@ -124,6 +177,8 @@ static int gta01_gsm_resume(struct platform_device *pdev)
- if (s3c2410_gpio_getpin(GTA01_GPIO_MODEM_ON) && gta01_gsm.con)
- console_stop(gta01_gsm.con);
-
-+ if (machine_is_neo1973_gta02())
-+ s3c2410_gpio_setpin(GTA02_GPIO_nDL_GSM, 0);
- return 0;
- }
- #else
-@@ -134,7 +189,7 @@ static int gta01_gsm_resume(struct platform_device *pdev)
- static struct attribute *gta01_gsm_sysfs_entries[] = {
- &dev_attr_power_on.attr,
- &dev_attr_reset.attr,
-- NULL,
-+ &dev_attr_download.attr,
- NULL
- };
-
-@@ -158,8 +213,18 @@ static int __init gta01_gsm_probe(struct platform_device *pdev)
- gta01_gsm.gpio_ngsm_en = GTA01Bv2_GPIO_nGSM_EN;
- s3c2410_gpio_setpin(GTA01v3_GPIO_nGSM_EN, 0);
- break;
-+#ifdef CONFIG_MACH_NEO1973_GTA02
-+ case GTA02v1_SYSTEM_REV:
-+ case GTA02v2_SYSTEM_REV:
-+ case GTA02v3_SYSTEM_REV:
-+ case GTA02v4_SYSTEM_REV:
-+ case GTA02v5_SYSTEM_REV:
-+ case GTA02v6_SYSTEM_REV:
-+ gta01_gsm.gpio_ngsm_en = 0;
-+ break;
-+#endif
- default:
-- dev_warn(&pdev->dev, "Unknown GTA01 Revision 0x%x, "
-+ dev_warn(&pdev->dev, "Unknown Neo1973 Revision 0x%x, "
- "some PM features not available!!!\n",
- system_rev);
- break;
-@@ -175,9 +240,13 @@ static int __init gta01_gsm_probe(struct platform_device *pdev)
- break;
- }
-
-- gta01_gsm.con = find_s3c24xx_console();
-- if (!gta01_gsm.con)
-- dev_warn(&pdev->dev, "cannot find S3C24xx console driver\n");
-+ if (machine_is_neo1973_gta01()) {
-+ gta01_gsm.con = find_s3c24xx_console();
-+ if (!gta01_gsm.con)
-+ dev_warn(&pdev->dev,
-+ "cannot find S3C24xx console driver\n");
-+ } else
-+ gta01_gsm.con = NULL;
-
- return sysfs_create_group(&pdev->dev.kobj, &gta01_gsm_attr_group);
- }
---
-1.5.6.3
-