r3133 - trunk/src/target/kernel/patches

laforge at sita.openmoko.org laforge at sita.openmoko.org
Tue Oct 9 17:57:42 CEST 2007


Author: laforge
Date: 2007-10-09 17:57:30 +0200 (Tue, 09 Oct 2007)
New Revision: 3133

Modified:
   trunk/src/target/kernel/patches/gta02-core.patch
   trunk/src/target/kernel/patches/pcf50633.patch
Log:
* export all pcf50633 symbols as _GPL symbols.
* replace pcf50633_gpo0_{get,set} with generic pcf50633_gpio_{get,set}
* complete GTA02 >= v2 GSM power switching support (based on patch by jserv)


Modified: trunk/src/target/kernel/patches/gta02-core.patch
===================================================================
--- trunk/src/target/kernel/patches/gta02-core.patch	2007-10-09 15:49:27 UTC (rev 3132)
+++ trunk/src/target/kernel/patches/gta02-core.patch	2007-10-09 15:57:30 UTC (rev 3133)
@@ -858,17 +858,22 @@
 ===================================================================
 --- linux-2.6.22.5-moko.orig/arch/arm/common/gta01_pm_gsm.c
 +++ linux-2.6.22.5-moko/arch/arm/common/gta01_pm_gsm.c
-@@ -19,7 +19,9 @@
+@@ -19,8 +19,14 @@
  #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>
++#endif
++
  struct gta01pm_priv {
  	int gpio_ngsm_en;
-@@ -70,11 +72,12 @@
+ 	struct console *con;
+@@ -70,27 +76,47 @@
  
  	if (!strcmp(attr->attr.name, "power_on")) {
  		if (on) {
@@ -884,7 +889,29 @@
  
  			if (gta01_gsm.gpio_ngsm_en)
  				s3c2410_gpio_setpin(gta01_gsm.gpio_ngsm_en, 0);
-@@ -86,11 +89,12 @@
+ 
++			switch (system_rev) {
++#ifdef CONFIG_MACH_NEO1973_GTA02
++			case GTA02v2_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:
++				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);
  
@@ -900,18 +927,23 @@
  		}
  	} else if (!strcmp(attr->attr.name, "reset")) {
  		s3c2410_gpio_setpin(GTA01_GPIO_MODEM_RST, on);
-@@ -158,6 +162,10 @@
+@@ -158,8 +184,14 @@
  			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:
 +			gta01_gsm.gpio_ngsm_en = 0;
 +			break;
++#endif
  		default:
- 			dev_warn(&pdev->dev, "Unknown GTA01 Revision 0x%x, "
+-			dev_warn(&pdev->dev, "Unknown GTA01 Revision 0x%x, "
++			dev_warn(&pdev->dev, "Unknown Neo1973 Revision 0x%x, "
  				 "some PM features not available!!!\n",
-@@ -175,9 +183,13 @@
+ 				 system_rev);
+ 			break;
+@@ -175,9 +207,13 @@
  		break;
  	}
  
@@ -928,6 +960,12 @@
  
  	return sysfs_create_group(&pdev->dev.kobj, &gta01_gsm_attr_group);
  }
+@@ -214,4 +250,4 @@
+ 
+ MODULE_LICENSE("GPL");
+ MODULE_AUTHOR("Harald Welte <laforge at openmoko.org>");
+-MODULE_DESCRIPTION("FIC GTA01 (Neo1973) GSM Management");
++MODULE_DESCRIPTION("FIC Neo1973 GSM Power Management");
 Index: linux-2.6.22.5-moko/drivers/leds/leds-gta01.c
 ===================================================================
 --- linux-2.6.22.5-moko.orig/drivers/leds/leds-gta01.c

Modified: trunk/src/target/kernel/patches/pcf50633.patch
===================================================================
--- trunk/src/target/kernel/patches/pcf50633.patch	2007-10-09 15:49:27 UTC (rev 3132)
+++ trunk/src/target/kernel/patches/pcf50633.patch	2007-10-09 15:57:30 UTC (rev 3133)
@@ -155,7 +155,7 @@
 +static struct i2c_driver pcf50633_driver;
 +
 +struct pcf50633_data *pcf50633_global;
-+EXPORT_SYMBOL(pcf50633_global);
++EXPORT_SYMBOL_GPL(pcf50633_global);
 +
 +static struct platform_device *pcf50633_pdev;
 +
@@ -376,7 +376,7 @@
 +
 +	return 0;
 +}
-+EXPORT_SYMBOL(pcf50633_onoff_set);
++EXPORT_SYMBOL_GPL(pcf50633_onoff_set);
 +
 +int pcf50633_onoff_get(struct pcf50633_data *pcf,
 +		       enum pcf50633_regulator_id reg)
@@ -392,7 +392,7 @@
 +
 +	return val;
 +}
-+EXPORT_SYMBOL(pcf50633_onoff_get);
++EXPORT_SYMBOL_GPL(pcf50633_onoff_get);
 +
 +int pcf50633_voltage_set(struct pcf50633_data *pcf,
 +			 enum pcf50633_regulator_id reg,
@@ -437,7 +437,7 @@
 +
 +	return reg_write(pcf, regnr, volt_bits);
 +}
-+EXPORT_SYMBOL(pcf50633_voltage_set);
++EXPORT_SYMBOL_GPL(pcf50633_voltage_set);
 +
 +unsigned int pcf50633_voltage_get(struct pcf50633_data *pcf,
 +			 enum pcf50633_regulator_id reg)
@@ -477,7 +477,7 @@
 +
 +	return rc;
 +}
-+EXPORT_SYMBOL(pcf50633_voltage_get);
++EXPORT_SYMBOL_GPL(pcf50633_voltage_get);
 +
 +/* go into 'STANDBY' mode, i.e. power off the main CPU and peripherals */
 +void pcf50633_go_standby(void)
@@ -485,32 +485,32 @@
 +	reg_write(pcf50633_global, PCF50633_REG_OOCSHDWN,
 +		  PCF50633_OOCSHDWN_GOSTDBY);
 +}
-+EXPORT_SYMBOL(pcf50633_go_standby);
++EXPORT_SYMBOL_GPL(pcf50633_go_standby);
 +
-+void pcf50633_gpo0_set(struct pcf50633_data *pcf, int on)
++void pcf50633_gpio_set(struct pcf50633_data *pcf, enum pcf50633_gpio gpio,
++			int on)
 +{
-+	u_int8_t val;
++	u_int8_t reg = PCF50633_GPIO1-1 + gpio;
 +
 +	if (on)
-+		val = PCF50633_GPOCFG_GPOSEL_1;
++		reg_set_bit_mask(pcf, reg, 0x0f, 0x07);
 +	else
-+		val = PCF50633_GPOCFG_GPOSEL_0;
-+
-+	reg_set_bit_mask(pcf, PCF50633_REG_GPOCFG, 0x0f, val);
++		reg_set_bit_mask(pcf, reg, 0x0f, 0x00);
 +}
-+EXPORT_SYMBOL(pcf50633_gpo0_set);
++EXPORT_SYMBOL_GPL(pcf50633_gpio_set);
 +
-+int pcf50633_gpo0_get(struct pcf50633_data *pcf)
++int pcf50633_gpio_get(struct pcf50633_data *pcf, enum pcf50633_gpio gpio)
 +{
-+	u_int8_t reg = reg_read(pcf, PCF50633_REG_GPOCFG) & 0x0f;
++	u_int8_t reg = PCF50633_GPIO1-1 + gpio;
++	u_int8_t val = reg_read(pcf, reg) & 0x0f;
 +
-+	if (reg == PCF50633_GPOCFG_GPOSEL_1 ||
-+	    reg == (PCF50633_GPOCFG_GPOSEL_0|PCF50633_GPOCFG_GPOSEL_INVERSE))
++	if (val == PCF50633_GPOCFG_GPOSEL_1 ||
++	    val == (PCF50633_GPOCFG_GPOSEL_0|PCF50633_GPOCFG_GPOSEL_INVERSE))
 +		return 1;
 +
 +	return 0;
 +}
-+EXPORT_SYMBOL(pcf50633_gpo0_get);
++EXPORT_SYMBOL_GPL(pcf50633_gpio_get);
 +
 +static void pcf50633_work(struct work_struct *work)
 +{
@@ -750,7 +750,7 @@
 +
 +	return adc_to_batt_millivolts(adc);
 +}
-+EXPORT_SYMBOL(pcf50633_battvolt);
++EXPORT_SYMBOL_GPL(pcf50633_battvolt);
 +
 +static ssize_t show_battvolt(struct device *dev, struct device_attribute *attr,
 +			     char *buf)
@@ -884,7 +884,7 @@
 +	}
 +#endif
 +}
-+EXPORT_SYMBOL(pcf50633_charge_fast);
++EXPORT_SYMBOL_GPL(pcf50633_charge_fast);
 +
 +#define ONE			1000000
 +static inline u_int16_t adc_to_rntc(struct pcf50633_data *pcf, u_int16_t adc)
@@ -1755,7 +1755,7 @@
 ===================================================================
 --- /dev/null
 +++ linux-2.6.22.5-moko/include/linux/pcf50633.h
-@@ -0,0 +1,103 @@
+@@ -0,0 +1,110 @@
 +#ifndef _LINUX_PCF50633_H
 +#define _LINUX_PCF50633_H
 +
@@ -1781,11 +1781,18 @@
 +extern void
 +pcf50633_go_standby(void);
 +
++enum pcf50633_gpio {
++	PCF50633_GPIO1 = 1,
++	PCF50633_GPIO2 = 2,
++	PCF50633_GPIO3 = 3,
++	PCF50633_GPO = 4,
++};
++
 +extern void
-+pcf50633_gpo0_set(struct pcf50633_data *pcf, int on);
++pcf50633_gpio_set(struct pcf50633_data *pcf, enum pcf50633_gpio gpio, int on);
 +
 +extern int
-+pcf50633_gpo0_get(struct pcf50633_data *pcf);
++pcf50633_gpio_get(struct pcf50633_data *pcf, enum pcf50633_gpio gpio);
 +
 +extern int
 +pcf50633_voltage_set(struct pcf50633_data *pcf,





More information about the commitlog mailing list