HI!

I'm testing the fluid to upgrade firmware on gta02 but having problem when control the power on/off of gsm.
With this patch, fluid works fine.

-Sean Chiang
diff -rup orig/arch/arm/common/gta01_pm_gsm.c linux-2.6.22.5/arch/arm/common/gta01_pm_gsm.c
--- orig/arch/arm/common/gta01_pm_gsm.c	2007-12-24 17:25:46.000000000 +0800
+++ linux-2.6.22.5/arch/arm/common/gta01_pm_gsm.c	2007-12-24 16:44:46.000000000 +0800
@@ -89,6 +89,8 @@ static ssize_t gsm_write(struct device *
 			switch (system_rev) {
 #ifdef CONFIG_MACH_NEO1973_GTA02
 			case GTA02v2_SYSTEM_REV:
+			case GTA02v3_SYSTEM_REV:
+			case GTA02v4_SYSTEM_REV:
 				pcf50633_gpio_set(pcf50633_global,
 						  PCF50633_GPIO2, 1);
 				break;
@@ -102,6 +104,8 @@ static ssize_t gsm_write(struct device *
 			switch (system_rev) {
 #ifdef CONFIG_MACH_NEO1973_GTA02
 			case GTA02v2_SYSTEM_REV:
+			case GTA02v3_SYSTEM_REV:
+			case GTA02v4_SYSTEM_REV:
 				pcf50633_gpio_set(pcf50633_global,
 						  PCF50633_GPIO2, 0);
 				break;
@@ -187,6 +191,8 @@ static int __init gta01_gsm_probe(struct
 #ifdef CONFIG_MACH_NEO1973_GTA02
 		case GTA02v1_SYSTEM_REV:
 		case GTA02v2_SYSTEM_REV:
+		case GTA02v3_SYSTEM_REV:
+		case GTA02v4_SYSTEM_REV:
 			gta01_gsm.gpio_ngsm_en = 0;
 			break;
 #endif
diff -rup orig/drivers/i2c/chips/pcf50633.c linux-2.6.22.5/drivers/i2c/chips/pcf50633.c
--- orig/drivers/i2c/chips/pcf50633.c	2007-12-24 17:25:46.000000000 +0800
+++ linux-2.6.22.5/drivers/i2c/chips/pcf50633.c	2007-12-24 17:54:40.000000000 +0800
@@ -452,7 +452,7 @@ EXPORT_SYMBOL_GPL(pcf50633_go_standby);
 void pcf50633_gpio_set(struct pcf50633_data *pcf, enum pcf50633_gpio gpio,
 			int on)
 {
-	u_int8_t reg = PCF50633_GPIO1-1 + gpio;
+	u_int8_t reg = gpio - PCF50633_GPIO1 + PCF50633_REG_GPIO1CFG;
 
 	if (on)
 		reg_set_bit_mask(pcf, reg, 0x0f, 0x07);
@@ -463,7 +463,7 @@ EXPORT_SYMBOL_GPL(pcf50633_gpio_set);
 
 int pcf50633_gpio_get(struct pcf50633_data *pcf, enum pcf50633_gpio gpio)
 {
-	u_int8_t reg = PCF50633_GPIO1-1 + gpio;
+	u_int8_t reg = gpio - PCF50633_GPIO1 + PCF50633_REG_GPIO1CFG;
 	u_int8_t val = reg_read(pcf, reg) & 0x0f;
 
 	if (val == PCF50633_GPOCFG_GPOSEL_1 ||

Reply via email to