Send commitlog mailing list submissions to
[email protected]
To subscribe or unsubscribe via the World Wide Web, visit
http://lists.openmoko.org/mailman/listinfo/commitlog
or, via email, send a message with subject or body 'help' to
[EMAIL PROTECTED]
You can reach the person managing the list at
[EMAIL PROTECTED]
When replying, please edit your Subject line so it is more specific
than "Re: Contents of commitlog digest..."
Today's Topics:
1. r3133 - trunk/src/target/kernel/patches
([EMAIL PROTECTED])
2. r3134 - branches/src/target/kernel/2.6.23.x/patches
([EMAIL PROTECTED])
3. r3135 - branches/src/target/kernel/2.6.23.x/patches
([EMAIL PROTECTED])
4. r3136 - trunk/src/target/kernel/patches
([EMAIL PROTECTED])
5. r3137 - trunk/src/target/kernel/patches
([EMAIL PROTECTED])
--- Begin Message ---
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, >a01_gsm_attr_group);
}
+@@ -214,4 +250,4 @@
+
+ MODULE_LICENSE("GPL");
+ MODULE_AUTHOR("Harald Welte <[EMAIL PROTECTED]>");
+-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,
--- End Message ---
--- Begin Message ---
Author: shoragan
Date: 2007-10-09 19:11:08 +0200 (Tue, 09 Oct 2007)
New Revision: 3134
Modified:
branches/src/target/kernel/2.6.23.x/patches/s3c2410-pwm.patch
Log:
Update include regs-timer.h from plat-s3c
Modified: branches/src/target/kernel/2.6.23.x/patches/s3c2410-pwm.patch
===================================================================
--- branches/src/target/kernel/2.6.23.x/patches/s3c2410-pwm.patch
2007-10-09 15:57:30 UTC (rev 3133)
+++ branches/src/target/kernel/2.6.23.x/patches/s3c2410-pwm.patch
2007-10-09 17:11:08 UTC (rev 3134)
@@ -1,7 +1,7 @@
-Index: linux-2.6.23-rc9/arch/arm/mach-s3c2410/Kconfig
+Index: linux-2.6.22/arch/arm/mach-s3c2410/Kconfig
===================================================================
---- linux-2.6.23-rc9.orig/arch/arm/mach-s3c2410/Kconfig
-+++ linux-2.6.23-rc9/arch/arm/mach-s3c2410/Kconfig
+--- linux-2.6.22.orig/arch/arm/mach-s3c2410/Kconfig
++++ linux-2.6.22/arch/arm/mach-s3c2410/Kconfig
@@ -9,6 +9,7 @@
depends on ARCH_S3C2410
select S3C2410_CLOCK
@@ -22,10 +22,10 @@
menu "S3C2410 Machines"
-Index: linux-2.6.23-rc9/arch/arm/mach-s3c2410/Makefile
+Index: linux-2.6.22/arch/arm/mach-s3c2410/Makefile
===================================================================
---- linux-2.6.23-rc9.orig/arch/arm/mach-s3c2410/Makefile
-+++ linux-2.6.23-rc9/arch/arm/mach-s3c2410/Makefile
+--- linux-2.6.22.orig/arch/arm/mach-s3c2410/Makefile
++++ linux-2.6.22/arch/arm/mach-s3c2410/Makefile
@@ -16,6 +16,7 @@
obj-$(CONFIG_S3C2410_PM) += pm.o sleep.o
obj-$(CONFIG_S3C2410_GPIO) += gpio.o
@@ -34,10 +34,10 @@
# Machine support
-Index: linux-2.6.23-rc9/arch/arm/mach-s3c2410/pwm.c
+Index: linux-2.6.22/arch/arm/mach-s3c2410/pwm.c
===================================================================
--- /dev/null
-+++ linux-2.6.23-rc9/arch/arm/mach-s3c2410/pwm.c
++++ linux-2.6.22/arch/arm/mach-s3c2410/pwm.c
@@ -0,0 +1,222 @@
+/*
+ * arch/arm/mach-s3c2410/3c2410-pwm.c
@@ -62,7 +62,7 @@
+#include <linux/init.h>
+#include <linux/clk.h>
+#include <asm/hardware.h>
-+#include <asm/arch/regs-timer.h>
++#include <asm/plat-s3c/regs-timer.h>
+#include <asm/arch/pwm.h>
+
+struct s3c2410_pwm_t *s3c2410_pwm_alloc(void)
@@ -261,11 +261,11 @@
+
+EXPORT_SYMBOL_GPL(s3c2410_pwm_dumpregs);
+
-Index: linux-2.6.23-rc9/include/asm-arm/arch-s3c2410/pwm.h
+Index: linux-2.6.22/include/asm-arm/arch-s3c2410/pwm.h
===================================================================
--- /dev/null
-+++ linux-2.6.23-rc9/include/asm-arm/arch-s3c2410/pwm.h
-@@ -0,0 +1,40 @@
++++ linux-2.6.22/include/asm-arm/arch-s3c2410/pwm.h
+@@ -0,0 +1,39 @@
+#ifndef __S3C2410_PWM_H
+#define __S3C2410_PWM_H
+
@@ -276,7 +276,6 @@
+#include <asm-arm/io.h>
+#include <asm/arch/hardware.h>
+#include <asm/mach-types.h>
-+#include <asm/arch/regs-timer.h>
+#include <asm/arch/gta01.h>
+
+enum pwm_timer {
--- End Message ---
--- Begin Message ---
Author: shoragan
Date: 2007-10-09 19:11:49 +0200 (Tue, 09 Oct 2007)
New Revision: 3135
Added:
branches/src/target/kernel/2.6.23.x/patches/gta02-leds.patch
Modified:
branches/src/target/kernel/2.6.23.x/patches/series
Log:
Add support for leds on gta02
Added: branches/src/target/kernel/2.6.23.x/patches/gta02-leds.patch
===================================================================
--- branches/src/target/kernel/2.6.23.x/patches/gta02-leds.patch
2007-10-09 17:11:08 UTC (rev 3134)
+++ branches/src/target/kernel/2.6.23.x/patches/gta02-leds.patch
2007-10-09 17:11:49 UTC (rev 3135)
@@ -0,0 +1,97 @@
+Index: linux-2.6.22/arch/arm/mach-s3c2440/mach-gta02.c
+===================================================================
+--- linux-2.6.22.orig/arch/arm/mach-s3c2440/mach-gta02.c
++++ linux-2.6.22/arch/arm/mach-s3c2440/mach-gta02.c
+@@ -541,17 +541,57 @@
+ #endif
+ #endif
+
+-static struct s3c24xx_led_platdata gta02_led_pdata = {
+- .name = "gta02-vib",
+- .gpio = GTA02_GPIO_VIBRATOR_ON,
+- .def_trigger = "",
++static struct s3c24xx_led_platdata gta02_led_pdata[] = {
++ [0] = {
++ .name = "gta02-led-pwr1",
++ .gpio = GTA02_GPIO_LED_PWR1_ON,
++ .def_trigger = "",
++ },
++ [1] = {
++ .name = "gta02-led-pwr2",
++ .gpio = GTA02_GPIO_LED_PWR2_ON,
++ .def_trigger = "",
++ },
++ [2] = {
++ .name = "gta02-led-aux",
++ .gpio = GTA02_GPIO_LED_AUX_ON,
++ .def_trigger = "",
++ },
++ [3] = {
++ .name = "gta02-vib",
++ .gpio = GTA02_GPIO_VIBRATOR_ON,
++ .def_trigger = "",
++ },
+ };
+
+-static struct platform_device gta02_led_dev = {
+- .name = "s3c24xx_led",
+- .id = 1,
+- .dev = {
+- .platform_data = >a02_led_pdata,
++static struct platform_device gta02_led_dev[] = {
++ [0] = {
++ .name = "s3c24xx_led",
++ .id = 0,
++ .dev = {
++ .platform_data = >a02_led_pdata[0],
++ },
++ },
++ [1] = {
++ .name = "s3c24xx_led",
++ .id = 1,
++ .dev = {
++ .platform_data = >a02_led_pdata[1],
++ },
++ },
++ [2] = {
++ .name = "s3c24xx_led",
++ .id = 2,
++ .dev = {
++ .platform_data = >a02_led_pdata[2],
++ },
++ },
++ [3] = {
++ .name = "s3c24xx_led",
++ .id = 3,
++ .dev = {
++ .platform_data = >a02_led_pdata[3],
++ },
+ },
+ };
+
+@@ -681,7 +721,10 @@
+
+ mangle_pmu_pdata_by_system_rev();
+ platform_device_register(>a02_pmu_dev);
+- platform_device_register(>a02_led_dev);
++ platform_device_register(>a02_led_dev[0]);
++ platform_device_register(>a02_led_dev[1]);
++ platform_device_register(>a02_led_dev[2]);
++ platform_device_register(>a02_led_dev[3]);
+
+ mangle_glamo_res_by_system_rev();
+ platform_device_register(>a02_glamo_dev);
+Index: linux-2.6.22/include/asm-arm/arch-s3c2410/gta02.h
+===================================================================
+--- linux-2.6.22.orig/include/asm-arm/arch-s3c2410/gta02.h
++++ linux-2.6.22/include/asm-arm/arch-s3c2410/gta02.h
+@@ -12,6 +12,9 @@
+ #define GTA02_GPIO_3D_RESET S3C2440_GPJ0
+ #define GTA02_GPIO_nSD_DETECT S3C2410_GPF5
+ #define GTA02_GPIO_USB_PULLUP S3C2410_GPB9
++#define GTA02_GPIO_LED_PWR1_ON S3C2410_GPB0
++#define GTA02_GPIO_LED_PWR2_ON S3C2410_GPB1
++#define GTA02_GPIO_LED_AUX_ON S3C2410_GPB2
+ #define GTA02_GPIO_VIBRATOR_ON S3C2410_GPB3
+ #define GTA02_GPIO_HOLD_KEY S3C2410_GPF7
+ #define GTA02_GPIO_AUX_KEY S3C2410_GPF6
Modified: branches/src/target/kernel/2.6.23.x/patches/series
===================================================================
--- branches/src/target/kernel/2.6.23.x/patches/series 2007-10-09 17:11:08 UTC
(rev 3134)
+++ branches/src/target/kernel/2.6.23.x/patches/series 2007-10-09 17:11:49 UTC
(rev 3135)
@@ -49,3 +49,4 @@
fix-s3c2410fb-register-access.patch
gta-vibrator.patch
lis302dl.patch
+gta02-leds.patch
--- End Message ---
--- Begin Message ---
Author: laforge
Date: 2007-10-09 19:26:37 +0200 (Tue, 09 Oct 2007)
New Revision: 3136
Modified:
trunk/src/target/kernel/patches/gta02-core.patch
trunk/src/target/kernel/patches/pcf50633.patch
Log:
GTA02: implement USB battery charging control using pcf50633
Modified: trunk/src/target/kernel/patches/gta02-core.patch
===================================================================
--- trunk/src/target/kernel/patches/gta02-core.patch 2007-10-09 17:11:49 UTC
(rev 3135)
+++ trunk/src/target/kernel/patches/gta02-core.patch 2007-10-09 17:26:37 UTC
(rev 3136)
@@ -2,7 +2,7 @@
===================================================================
--- /dev/null
+++ linux-2.6.22.5-moko/arch/arm/mach-s3c2440/mach-gta02.c
-@@ -0,0 +1,666 @@
+@@ -0,0 +1,658 @@
+/*
+ * linux/arch/arm/mach-s3c2440/mach-gta02.c
+ *
@@ -128,11 +128,11 @@
+ switch (event) {
+ case PMU_EVT_INSERT:
+ case PMU_EVT_USB_INSERT:
-+ pcf50633_charge_fast(pcf50633_global, 1);
++ pcf50633_charge_enable(pcf50633_global, 1);
+ break;
+ case PMU_EVT_REMOVE:
+ case PMU_EVT_USB_REMOVE:
-+ pcf50633_charge_fast(pcf50633_global, 0);
++ pcf50633_charge_enable(pcf50633_global, 0);
+ break;
+ default:
+ break;
@@ -385,15 +385,7 @@
+
+static void __gta02_udc_vbus_draw(struct work_struct *work)
+{
-+ if (gta02_udc_vbus_drawer.ma >= 500) {
-+ /* enable fast charge */
-+ printk(KERN_DEBUG "udc: enabling fast charge\n");
-+ pcf50633_charge_fast(pcf50633_global, 1);
-+ } else {
-+ /* disable fast charge */
-+ printk(KERN_DEBUG "udc: disabling fast charge\n");
-+ pcf50633_charge_fast(pcf50633_global, 0);
-+ }
++ pcf50633_usb_curlim_set(pcf50633_global, gta02_udc_vbus_drawer.ma);
+}
+
+static void gta02_udc_vbus_draw(unsigned int ma)
Modified: trunk/src/target/kernel/patches/pcf50633.patch
===================================================================
--- trunk/src/target/kernel/patches/pcf50633.patch 2007-10-09 17:11:49 UTC
(rev 3135)
+++ trunk/src/target/kernel/patches/pcf50633.patch 2007-10-09 17:26:37 UTC
(rev 3136)
@@ -34,7 +34,7 @@
===================================================================
--- /dev/null
+++ linux-2.6.22.5-moko/drivers/i2c/chips/pcf50633.c
-@@ -0,0 +1,1716 @@
+@@ -0,0 +1,1736 @@
+/* Philips PCF50633 Power Management Unit (PMU) driver
+ *
+ * (C) 2006-2007 by OpenMoko, Inc.
@@ -105,9 +105,8 @@
+
+I2C_CLIENT_INSMOD_1(pcf50633);
+
-+#define PCF50633_F_CHG_FAST 0x00000001 /* Charger Fast allowed */
++#define PCF50633_F_CHG_ENABLED 0x00000001 /* Charger enabled */
+#define PCF50633_F_CHG_PRESENT 0x00000002 /* Charger present */
-+#define PCF50633_F_CHG_FOK 0x00000004 /* Fast OK for battery */
+#define PCF50633_F_CHG_ERR 0x00000008 /* Charger Error */
+#define PCF50633_F_CHG_PROT 0x00000010 /* Charger Protection */
+#define PCF50633_F_CHG_READY 0x00000020 /* Charging completed */
@@ -632,10 +631,12 @@
+ }
+ if (int3 & PCF50633_INT3_THLIMON) {
+ DEBUGPC("THLIMON ");
++ pcf->flags |= PCF50633_F_CHG_PROT;
+ /* FIXME: signal this to userspace */
+ }
+ if (int3 & PCF50633_INT3_THLIMOFF) {
+ DEBUGPC("THLIMOFF ");
++ pcf->flags &= ~PCF50633_F_CHG_PROT;
+ /* FIXME: signal this to userspace */
+ }
+ if (int3 & PCF50633_INT3_USBLIMON) {
@@ -857,34 +858,66 @@
+ * Charger Control
+ ***********************************************************************/
+
-+/* Enable/disable fast charging (500mA in the GTA02) */
-+void pcf50633_charge_fast(struct pcf50633_data *pcf, int on)
++/* Set maximum USB current limit */
++void pcf50633_usb_curlim_set(struct pcf50633_data *pcf, int ma)
+{
-+#if 0
-+ if (!(pcf->pdata->used_features & PCF50606_FEAT_MBC))
++ u_int8_t bits;
++
++ dev_dbg(&pcf->client.dev, "setting usb current limit to %d ma", ma);
++
++ if (ma >= 1000)
++ bits = PCF50633_MBCC7_USB_1000mA;
++ else if (ma >= 500)
++ bits = PCF50633_MBCC7_USB_500mA;
++ else if (ma >= 100)
++ bits = PCF50633_MBCC7_USB_100mA;
++ else
++ bits = PCF50633_MBCC7_USB_SUSPEND;
++
++ reg_set_bit_mask(pcf, PCF50633_REG_MBCC7, PCF56033_MBCC7_USB_MASK,
++ bits);
++}
++EXPORT_SYMBOL_GPL(pcf50633_usb_curlim_set);
++
++static ssize_t show_usblim(struct device *dev, struct device_attribute *attr,
++ char *buf)
++{
++ struct i2c_client *client = to_i2c_client(dev);
++ struct pcf50633_data *pcf = i2c_get_clientdata(client);
++ u_int8_t usblim = reg_read(pcf, PCF50633_REG_MBCC7) &
++ PCF56033_MBCC7_USB_MASK;
++ unsigned int ma;
++
++ if (usblim == PCF50633_MBCC7_USB_1000mA)
++ ma = 1000;
++ else if (usblim == PCF50633_MBCC7_USB_500mA)
++ ma = 500;
++ else if (usblim == PCF50633_MBCC7_USB_100mA)
++ ma = 100;
++ else
++ ma = 0;
++
++ return sprintf(buf, "%u\n", ma);
++}
++static DEVICE_ATTR(usb_curlim, S_IRUGO | S_IWUSR, show_usblim, NULL);
++
++/* Enable/disable charging */
++void pcf50633_charge_enable(struct pcf50633_data *pcf, int on)
++{
++ u_int8_t bits;
++
++ if (!(pcf->pdata->used_features & PCF50633_FEAT_MBC))
+ return;
+
+ if (on) {
-+ /* We can allow PCF to automatically charge
-+ * using Ifast */
-+ pcf->flags |= PCF50606_F_CHG_FAST;
-+ reg_set_bit_mask(pcf, PCF50606_REG_MBCC1,
-+ PCF50606_MBCC1_AUTOFST,
-+ PCF50606_MBCC1_AUTOFST);
++ pcf->flags |= PCF50633_F_CHG_ENABLED;
++ bits = PCF50633_MBCC1_CHGENA;
+ } else {
-+ pcf->flags &= ~PCF50606_F_CHG_FAST;
-+ /* disable automatic fast-charge */
-+ reg_clear_bits(pcf, PCF50606_REG_MBCC1,
-+ PCF50606_MBCC1_AUTOFST);
-+ /* switch to idle mode to abort existing charge
-+ * process */
-+ reg_set_bit_mask(pcf, PCF50606_REG_MBCC1,
-+ PCF50606_MBCC1_CHGMOD_MASK,
-+ PCF50606_MBCC1_CHGMOD_IDLE);
++ pcf->flags &= ~PCF50633_F_CHG_ENABLED;
++ bits = 0;
+ }
-+#endif
+}
-+EXPORT_SYMBOL_GPL(pcf50633_charge_fast);
++EXPORT_SYMBOL_GPL(pcf50633_charge_enable);
+
+#define ONE 1000000
+static inline u_int16_t adc_to_rntc(struct pcf50633_data *pcf, u_int16_t adc)
@@ -981,36 +1014,24 @@
+{
+ struct i2c_client *client = to_i2c_client(dev);
+ struct pcf50633_data *pcf = i2c_get_clientdata(client);
-+#if 0
-+ u_int8_t mbcc1 = reg_read(pcf, PCF50606_REG_MBCC1);
+
-+ mbcc1 &= ~PCF50606_MBCC1_CHGMOD_MASK;
++ /* As opposed to the PCF50606, we can only enable or disable
++ * charging and not directly jump into a certain mode! */
+
-+ if (!strcmp(buf, "qualification"))
-+ mbcc1 |= PCF50606_MBCC1_CHGMOD_QUAL;
-+ else if (!strcmp(buf, "pre"))
-+ mbcc1 |= PCF50606_MBCC1_CHGMOD_PRE;
-+ else if (!strcmp(buf, "trickle"))
-+ mbcc1 |= PCF50606_MBCC1_CHGMOD_TRICKLE;
-+ else if (!strcmp(buf, "fast_cccv"))
-+ mbcc1 |= PCF50606_MBCC1_CHGMOD_FAST_CCCV;
-+ /* We don't allow the other fast modes for security reasons */
-+ else if (!strcmp(buf, "idle"))
-+ mbcc1 |= PCF50606_MBCC1_CHGMOD_IDLE;
++ if (!strcmp(buf, "0\n"))
++ pcf50633_charge_enable(pcf, 0);
+ else
-+ return -EINVAL;
++ pcf50633_charge_enable(pcf, 1);
+
-+ reg_write(pcf, PCF50606_REG_MBCC1, mbcc1);
-+#endif
+ return count;
+}
+
+static DEVICE_ATTR(chgmode, S_IRUGO | S_IWUSR, show_chgmode, set_chgmode);
+
+static const char *chgstate_names[] = {
-+ [PCF50633_F_CHG_FAST] = "fast_enabled",
-+ [PCF50633_F_CHG_PRESENT] = "present",
-+ [PCF50633_F_CHG_FOK] = "fast_ok",
++ [PCF50633_F_CHG_ENABLED] = "enabled",
++ [PCF50633_F_CHG_PRESENT] = "charger_present",
++ [PCF50633_F_USB_PRESENT] = "usb_present",
+ [PCF50633_F_CHG_ERR] = "error",
+ [PCF50633_F_CHG_PROT] = "protection",
+ [PCF50633_F_CHG_READY] = "ready",
@@ -1021,7 +1042,7 @@
+{
+ struct i2c_client *client = to_i2c_client(dev);
+ struct pcf50633_data *pcf = i2c_get_clientdata(client);
-+#if 0
++
+ char *b = buf;
+ int i;
+
@@ -1033,8 +1054,6 @@
+ b += sprintf(b, "\n");
+
+ return b - buf;
-+#endif
-+ return 0;
+}
+static DEVICE_ATTR(chgstate, S_IRUGO | S_IWUSR, show_chgstate, NULL);
+
@@ -1323,7 +1342,7 @@
+};
+#endif
+
-+static struct attribute *pcf_sysfs_entries[17] = {
++static struct attribute *pcf_sysfs_entries[18] = {
+ &dev_attr_voltage_auto.attr,
+ &dev_attr_voltage_down1.attr,
+ &dev_attr_voltage_down2.attr,
@@ -1354,6 +1373,7 @@
+ if (pcf->pdata->used_features & PCF50633_FEAT_MBC) {
+ pcf_sysfs_entries[i++] = &dev_attr_chgstate.attr;
+ pcf_sysfs_entries[i++] = &dev_attr_chgmode.attr;
++ pcf_sysfs_entries[i++] = &dev_attr_usb_curlim.attr;
+ }
+
+ if (pcf->pdata->used_features & PCF50633_FEAT_CHGCUR)
@@ -1755,7 +1775,7 @@
===================================================================
--- /dev/null
+++ linux-2.6.22.5-moko/include/linux/pcf50633.h
-@@ -0,0 +1,110 @@
+@@ -0,0 +1,113 @@
+#ifndef _LINUX_PCF50633_H
+#define _LINUX_PCF50633_H
+
@@ -1810,6 +1830,9 @@
+ enum pcf50633_regulator_id reg, int on);
+
+extern void
++pcf50633_usb_curlim_set(struct pcf50633_data *pcf, int ma);
++
++extern void
+pcf50633_charge_fast(struct pcf50633_data *pcf, int on);
+
+/* FIXME: sharded with pcf50606 */
--- End Message ---
--- Begin Message ---
Author: laforge
Date: 2007-10-09 19:30:14 +0200 (Tue, 09 Oct 2007)
New Revision: 3137
Modified:
trunk/src/target/kernel/patches/gta01-backlight.patch
trunk/src/target/kernel/patches/gta01-vibrator.patch
Log:
Modify GTA01 vibrator and backlight driver to work on top of new s3c2410
generic pwm code
WARNING: this is untested and mainly just committed so shoragan can resolve
conflicts with his 2.6.23 work.
If you're bumping OE's srcrev for the kernel beyond this commit, please make
sure that
the vibrator and backlight control has been tested on GTA01Bv4!
Modified: trunk/src/target/kernel/patches/gta01-backlight.patch
===================================================================
--- trunk/src/target/kernel/patches/gta01-backlight.patch 2007-10-09
17:26:37 UTC (rev 3136)
+++ trunk/src/target/kernel/patches/gta01-backlight.patch 2007-10-09
17:30:14 UTC (rev 3137)
@@ -1,9 +1,9 @@
This is a backlight driver for FIC's Neo1973 Phone (codename GTA01)
-Index: linux-2.6.21.3-moko/drivers/video/backlight/Kconfig
+Index: linux-2.6.22.5-moko/drivers/video/backlight/Kconfig
===================================================================
---- linux-2.6.21.3-moko.orig/drivers/video/backlight/Kconfig
-+++ linux-2.6.21.3-moko/drivers/video/backlight/Kconfig
+--- linux-2.6.22.5-moko.orig/drivers/video/backlight/Kconfig
++++ linux-2.6.22.5-moko/drivers/video/backlight/Kconfig
@@ -48,6 +48,14 @@
If you have a Sharp Zaurus SL-5500 (Collie) or SL-5600 (Poodle) say y
to
enable the LCD/backlight driver.
@@ -19,10 +19,10 @@
config BACKLIGHT_HP680
tristate "HP Jornada 680 Backlight Driver"
depends on BACKLIGHT_CLASS_DEVICE && SH_HP6XX
-Index: linux-2.6.21.3-moko/drivers/video/backlight/Makefile
+Index: linux-2.6.22.5-moko/drivers/video/backlight/Makefile
===================================================================
---- linux-2.6.21.3-moko.orig/drivers/video/backlight/Makefile
-+++ linux-2.6.21.3-moko/drivers/video/backlight/Makefile
+--- linux-2.6.22.5-moko.orig/drivers/video/backlight/Makefile
++++ linux-2.6.22.5-moko/drivers/video/backlight/Makefile
@@ -3,6 +3,7 @@
obj-$(CONFIG_LCD_CLASS_DEVICE) += lcd.o
obj-$(CONFIG_BACKLIGHT_CLASS_DEVICE) += backlight.o
@@ -31,11 +31,11 @@
obj-$(CONFIG_BACKLIGHT_HP680) += hp680_bl.o
obj-$(CONFIG_BACKLIGHT_LOCOMO) += locomolcd.o
obj-$(CONFIG_BACKLIGHT_PROGEAR) += progear_bl.o
-Index: linux-2.6.21.3-moko/drivers/video/backlight/gta01_bl.c
+Index: linux-2.6.22.5-moko/drivers/video/backlight/gta01_bl.c
===================================================================
--- /dev/null
-+++ linux-2.6.21.3-moko/drivers/video/backlight/gta01_bl.c
-@@ -0,0 +1,288 @@
++++ linux-2.6.22.5-moko/drivers/video/backlight/gta01_bl.c
+@@ -0,0 +1,249 @@
+/*
+ * Backlight Driver for FIC GTA01 (Neo1973) GSM Phone
+ *
@@ -59,7 +59,8 @@
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
-+ * TODO: implement PWM, instead of simple on/off switching
++ * Javi Roman <[EMAIL PROTECTED]>:
++ * implement PWM, instead of simple on/off switching
+ *
+ */
+
@@ -75,6 +76,7 @@
+#include <asm/arch/hardware.h>
+#include <asm/arch/regs-timer.h>
+#include <asm/arch/gta01.h>
++#include <asm/arch/pwm.h>
+
+static struct backlight_properties gta01bl_prop;
+static struct backlight_device *gta01_backlight_device;
@@ -86,6 +88,7 @@
+ int intensity;
+ struct mutex mutex;
+ struct clk *clk;
++ struct s3c2410_pwm_t *pwm;
+};
+
+static struct gta01bl_data gta01bl;
@@ -126,61 +129,28 @@
+ s3c2410_gpio_setpin(GTA01_GPIO_BACKLIGHT, 1);
+ s3c2410_gpio_cfgpin(GTA01_GPIO_BACKLIGHT, S3C2410_GPIO_OUTPUT);
+ } else {
-+ __raw_writel(intensity & 0xffff, S3C2410_TCMPB(0));
++ s3c2410_pwm_duty_cycle(intensity & 0xffff, gta01bl.pwm);
+ s3c2410_gpio_cfgpin(GTA01_GPIO_BACKLIGHT, S3C2410_GPB0_TOUT0);
+ }
+#endif
+ mutex_unlock(>a01bl.mutex);
+
+ gta01bl.intensity = intensity;
-+
+ return 0;
+}
+
+static void gta01bl_init_hw(void)
+{
-+ unsigned long tcon, tcfg0, tcfg1, tcnt, pclk;
++ gta01bl.pwm->timerid = PWM0;
++ gta01bl.pwm->prescaler = (4 - 1);
++ gta01bl.pwm->divider = S3C2410_TCFG1_MUX0_DIV8;
++ gta01bl.pwm->counter = (((gta01bl.pwm->pclk_rate) / 32) / GTA01BL_FREQ)
-1;
++ gta01bl.pwm->comparer = gta01bl.pwm->counter;
+
-+ pclk = clk_get_rate(gta01bl.clk);
++ s3c2410_pwm_enable(gta01bl.pwm);
++ s3c2410_pwm_start(gta01bl.pwm);
+
-+ tcon = __raw_readl(S3C2410_TCON);
-+ tcfg1 = __raw_readl(S3C2410_TCFG1);
-+ tcfg0 = __raw_readl(S3C2410_TCFG0);
-+
-+ tcfg1 &= ~S3C2410_TCFG1_MUX0_MASK;
-+ tcfg1 |= S3C2410_TCFG1_MUX0_DIV8;
-+
-+ tcfg0 &= ~S3C2410_TCFG_PRESCALER0_MASK;
-+ tcfg0 |= (4 - 1);
-+
-+ tcnt = (pclk / 32) / GTA01BL_FREQ;
-+ tcnt--;
-+
-+ __raw_writel(tcfg1, S3C2410_TCFG1);
-+ __raw_writel(tcfg0, S3C2410_TCFG0);
-+
-+#if 0
-+ __raw_writel(tcnt, S3C2410_TCNTB(0));
-+ __raw_writel(tcon, S3C2410_TCON);
-+ __raw_writel(tcnt, S3C2410_TCNTB(0));
-+#endif
-+
-+ /* ensure timer is stopped */
-+
-+ tcon &= 0xffffff00;
-+ tcon |= S3C2410_TCON_T0RELOAD;
-+ tcon |= S3C2410_TCON_T0MANUALUPD;
-+
-+ __raw_writel(tcnt, S3C2410_TCNTB(0));
-+ __raw_writel(tcnt, S3C2410_TCMPB(0));
-+ __raw_writel(tcon, S3C2410_TCON);
-+
-+ /* start the timer */
-+ tcon |= S3C2410_TCON_T0START;
-+ tcon &= ~S3C2410_TCON_T0MANUALUPD;
-+ __raw_writel(tcon, S3C2410_TCON);
-+
-+ gta01bl_prop.max_brightness = tcnt;
++ gta01bl_prop.max_brightness = gta01bl.pwm->counter;
+}
+
+#ifdef CONFIG_PM
@@ -246,12 +216,9 @@
+ gta01bl_prop.max_brightness = 1;
+#else
+ /* use s3c_device_timer0 for PWM */
-+ gta01bl.clk = clk_get(NULL, "timers");
-+ if (IS_ERR(gta01bl.clk))
-+ return PTR_ERR(gta01bl.clk);
++ if (!(gta01bl.pwm = s3c2410_pwm_alloc()))
++ return -ENOMEM;
+
-+ clk_enable(gta01bl.clk);
-+
+ gta01bl_init_hw();
+#endif
+ mutex_init(>a01bl.mutex);
@@ -278,15 +245,9 @@
+static int gta01bl_remove(struct platform_device *dev)
+{
+#ifndef GTA01_BACKLIGHT_ONOFF_ONLY
-+ unsigned long tcon;
+
-+ /* stop this timer */
-+ tcon = __raw_readl(S3C2410_TCON);
-+ tcon &= 0xffffff00;
-+ __raw_writel(tcon, S3C2410_TCON);
++ s3c2410_pwm_disable(gta01bl.pwm);
+
-+ clk_disable(gta01bl.clk);
-+ clk_put(gta01bl.clk);
+#endif
+ backlight_device_unregister(gta01_backlight_device);
+ mutex_destroy(>a01bl.mutex);
Modified: trunk/src/target/kernel/patches/gta01-vibrator.patch
===================================================================
--- trunk/src/target/kernel/patches/gta01-vibrator.patch 2007-10-09
17:26:37 UTC (rev 3136)
+++ trunk/src/target/kernel/patches/gta01-vibrator.patch 2007-10-09
17:30:14 UTC (rev 3137)
@@ -2,11 +2,11 @@
uses the existing LED class driver framework, since there's a lot of
similarity between the LED and the vibrator function.
-Index: linux-2.6.21-moko/drivers/leds/leds-gta01.c
+Index: linux-2.6.22.5-moko/drivers/leds/leds-gta01.c
===================================================================
--- /dev/null
-+++ linux-2.6.21-moko/drivers/leds/leds-gta01.c
-@@ -0,0 +1,133 @@
++++ linux-2.6.22.5-moko/drivers/leds/leds-gta01.c
+@@ -0,0 +1,187 @@
+/*
+ * LED driver for the FIC GTA01 (Neo1973) GSM Phone Vibrator
+ *
@@ -18,7 +18,8 @@
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
-+ * TODO: Implement PWM support for GTA01Bv4 and later
++ * Javi Roman <[EMAIL PROTECTED]>:
++ * Implement PWM support for GTA01Bv4 and later
+ */
+
+#include <linux/kernel.h>
@@ -27,13 +28,18 @@
+#include <linux/leds.h>
+#include <asm/hardware.h>
+#include <asm/mach-types.h>
++#include <asm/arch/pwm.h>
+#include <asm/arch/gta01.h>
+
++#define COUNTER 256
++
+struct gta01_vib_priv
+{
-+ struct led_classdev cdev;
++ struct led_classdev cdev;
+ unsigned int gpio;
++ struct mutex mutex;
+ unsigned int has_pwm;
++ struct s3c2410_pwm_t *pwm;
+};
+
+static inline struct gta01_vib_priv *pdev_to_vpriv(struct platform_device
*dev)
@@ -46,14 +52,28 @@
+ return dev_get_drvdata(led_cdev->class_dev->dev);
+}
+
-+static void gta01vib_vib_set(struct led_classdev *led_cdev, enum
led_brightness value)
++static void gta01vib_vib_set(struct led_classdev *led_cdev,
++ enum led_brightness value)
+{
+ struct gta01_vib_priv *vp = to_vpriv(led_cdev);
+
-+ if (value)
-+ s3c2410_gpio_setpin(vp->gpio, 1);
-+ else
-+ s3c2410_gpio_setpin(vp->gpio, 0);
++ /*
++ * value == 255 -> 99% duty cycle (full power)
++ * value == 128 -> 50% duty cycle (medium power)
++ * value == 0 -> 0% duty cycle (zero power)
++ */
++ mutex_lock(&vp->mutex);
++ if (vp->has_pwm) {
++ s3c2410_pwm_duty_cycle(value, vp->pwm);
++ s3c2410_gpio_cfgpin(vp->gpio, S3C2410_GPB3_TOUT3);
++ } else {
++ if (value)
++ s3c2410_gpio_setpin(vp->gpio, 1);
++ else
++ s3c2410_gpio_setpin(vp->gpio, 0);
++ }
++
++ mutex_unlock(&vp->mutex);
+}
+
+static struct led_classdev gta01_vib_led = {
@@ -75,8 +95,24 @@
+}
+#endif
+
-+static int gta01vib_probe(struct platform_device *pdev)
++static void gta01vib_init_hw(struct platform_device *pdev)
+{
++ struct gta01_vib_priv *vp = pdev_to_vpriv(pdev);
++
++ vp->pwm->timerid= PWM3;
++ vp->pwm->prescaler = 0x0000;
++ vp->pwm->divider = S3C2410_TCFG1_MUX3_DIV8;
++ vp->pwm->counter = COUNTER;
++ vp->pwm->comparer = COUNTER;
++
++ s3c2410_pwm_enable(vp->pwm);
++ s3c2410_pwm_start(vp->pwm);
++
++ return;
++}
++
++static int __init gta01vib_probe(struct platform_device *pdev)
++{
+ struct gta01_vib_priv *vp;
+ struct resource *r;
+
@@ -95,9 +131,22 @@
+
+ vp->gpio = r->start;
+
-+ if (vp->gpio == S3C2410_GPB3)
++ /* TOUT3 */
++ if (vp->gpio == S3C2410_GPB3) {
+ vp->has_pwm = 1;
+
++ vp->pwm = s3c2410_pwm_alloc();
++ if (!vp->pwm) {
++ dev_err(&pdev->dev, "PWM allocation failed\n");
++ kfree(vp);
++ return -ENOMEM;
++ }
++
++ gta01vib_init_hw(pdev);
++ }
++
++ mutex_init(&vp->mutex);
++
+ return led_classdev_register(&pdev->dev, >a01_vib_led);
+}
+
@@ -105,10 +154,15 @@
+{
+ struct gta01_vib_priv *vp = pdev_to_vpriv(pdev);
+
++ if (vp->has_pwm)
++ s3c2410_pwm_disable(vp->pwm);
++
+ led_classdev_unregister(>a01_vib_led);
+ platform_set_drvdata(pdev, NULL);
+ kfree(vp);
+
++ mutex_destroy(&vp->mutex);
++
+ return 0;
+}
+
@@ -140,12 +194,21 @@
+MODULE_AUTHOR("Harald Welte <[EMAIL PROTECTED]>");
+MODULE_DESCRIPTION("FIC GTA01 Vibrator driver");
+MODULE_LICENSE("GPL");
-Index: linux-2.6.21-moko/drivers/leds/Kconfig
+Index: linux-2.6.22.5-moko/drivers/leds/Kconfig
===================================================================
---- linux-2.6.21-moko.orig/drivers/leds/Kconfig
-+++ linux-2.6.21-moko/drivers/leds/Kconfig
-@@ -94,6 +94,12 @@
+--- linux-2.6.22.5-moko.orig/drivers/leds/Kconfig
++++ linux-2.6.22.5-moko/drivers/leds/Kconfig
+@@ -59,7 +59,7 @@
+
+ config LEDS_S3C24XX
+ tristate "LED Support for Samsung S3C24XX GPIO LEDs"
+- depends on LEDS_CLASS && ARCH_S3C2410
++ depends on LEDS_CLASS && ARCH_S3C2410 && S3C2410_PWM
help
+ This option enables support for LEDs connected to GPIO lines
+ on Samsung S3C24XX series CPUs, such as the S3C2410 and S3C2440.
+@@ -95,6 +95,12 @@
+ help
This option enables support for the front LED on Cobalt Server
+config LEDS_GTA01
@@ -157,10 +220,10 @@
comment "LED Triggers"
config LEDS_TRIGGERS
-Index: linux-2.6.21-moko/drivers/leds/Makefile
+Index: linux-2.6.22.5-moko/drivers/leds/Makefile
===================================================================
---- linux-2.6.21-moko.orig/drivers/leds/Makefile
-+++ linux-2.6.21-moko/drivers/leds/Makefile
+--- linux-2.6.22.5-moko.orig/drivers/leds/Makefile
++++ linux-2.6.22.5-moko/drivers/leds/Makefile
@@ -16,6 +16,7 @@
obj-$(CONFIG_LEDS_WRAP) += leds-wrap.o
obj-$(CONFIG_LEDS_H1940) += leds-h1940.o
--- End Message ---
_______________________________________________
commitlog mailing list
[email protected]
http://lists.openmoko.org/mailman/listinfo/commitlog