You can subscribe to this list here.
| 2006 | Jan | Feb | Mar | Apr | May | Jun | Jul | Aug (26) | Sep (22) | Oct (55) | Nov (24) | Dec (30) | 
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2007 | Jan (68) | Feb (85) | Mar (54) | Apr (12) | May (52) | Jun (75) | Jul (116) | Aug (71) | Sep (54) | Oct | Nov (2) | Dec | 
| 
      
      
      From: <z7...@us...> - 2007-11-05 12:28:22
      
     | 
| Revision: 1350
          http://hackndev.svn.sourceforge.net/hackndev/?rev=1350&view=rev
Author:   z72ka
Date:     2007-11-05 04:28:17 -0800 (Mon, 05 Nov 2007)
Log Message:
-----------
palmz72: MMC_POWER GPIO found and used for pxamci .setpower function -> extended battery life in suspend
Modified Paths:
--------------
    linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/gpio_map.txt
    linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72.c
Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/gpio_map.txt
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/gpio_map.txt	2007-11-05 12:26:26 UTC (rev 1349)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/gpio_map.txt	2007-11-05 12:28:17 UTC (rev 1350)
@@ -97,7 +97,7 @@
 GPIO_95 	0 	O 	00 USB_POWER
 GPIO_96 	1 	O 	00 LCD_POWER (LCD OFF when 0)
 GPIO_97 	0 	I 	03 KP_MKIN3
-GPIO_98 	1 	O 	00
+GPIO_98 	0 	O 	00 MMC_SETPOWER (MMC OFF when 1)
 GPIO_99 	1 	I 	00
 GPIO100 	0 	I 	01 KP_MKIN0
 GPIO101 	0 	I 	01 KP_MKIN1
Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72.c
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72.c	2007-11-05 12:26:26 UTC (rev 1349)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72.c	2007-11-05 12:28:17 UTC (rev 1350)
@@ -85,10 +85,25 @@
 	free_irq(IRQ_GPIO_PALMZ72_SD_DETECT_N, data);
 }
 
+static void palmz72_mci_setpower(struct device *dev, unsigned int vdd)
+{
+    struct pxamci_platform_data* p_d = dev->platform_data;
+
+    if (( 1 << vdd) & p_d->ocr_mask)
+    {
+    SET_GPIO(GPIO_NR_PALMZ72_MMC_POWER, 0);
+    }
+    else
+    {
+	SET_GPIO(GPIO_NR_PALMZ72_MMC_POWER, 1);
+    }
+}
+
+
 static struct pxamci_platform_data palmz72_mci_platform_data = {
 	.ocr_mask	= MMC_VDD_32_33|MMC_VDD_33_34,
 	.init 		= palmz72_mci_init,
-	/* .setpower 	= palmz72_mci_setpower,	*/
+	.setpower 	= palmz72_mci_setpower,
 	.exit		= palmz72_mci_exit,
 
 };
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <z7...@us...> - 2007-11-05 12:26:30
      
     | 
| Revision: 1349
          http://hackndev.svn.sourceforge.net/hackndev/?rev=1349&view=rev
Author:   z72ka
Date:     2007-11-05 04:26:26 -0800 (Mon, 05 Nov 2007)
Log Message:
-----------
palmz72: Include new MMC_POWER GPIO
Modified Paths:
--------------
    linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmz72-gpio.h
Modified: linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmz72-gpio.h
===================================================================
--- linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmz72-gpio.h	2007-09-27 13:25:21 UTC (rev 1348)
+++ linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmz72-gpio.h	2007-11-05 12:26:26 UTC (rev 1349)
@@ -83,7 +83,8 @@
 /* SD/MMC */
 
 #define GPIO_NR_PALMZ72_SD_DETECT_N		14
-#define IRQ_GPIO_PALMZ72_SD_DETECT_N		IRQ_GPIO(GPIO_NR_PALMZ72_SD_DETECT_N)		
+#define IRQ_GPIO_PALMZ72_SD_DETECT_N		IRQ_GPIO(GPIO_NR_PALMZ72_SD_DETECT_N)
+#define GPIO_NR_PALMZ72_MMC_POWER		98
 
 /* Backlight */
 
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <mar...@us...> - 2007-09-27 13:26:09
      
     | 
| Revision: 1348
          http://hackndev.svn.sourceforge.net/hackndev/?rev=1348&view=rev
Author:   marex_z71
Date:     2007-09-27 06:25:21 -0700 (Thu, 27 Sep 2007)
Log Message:
-----------
PalmLD: migrate to new battery driver, thanks |miska|
Modified Paths:
--------------
    linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/Kconfig
    linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/Makefile
    linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld.c
    linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmld-gpio.h
Removed Paths:
-------------
    linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld_battery.c
Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/Kconfig
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/Kconfig	2007-09-27 13:12:35 UTC (rev 1347)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/Kconfig	2007-09-27 13:25:21 UTC (rev 1348)
@@ -18,16 +18,6 @@
 	tristate "Palm LifeDrive IDE driver"
 	depends on MACH_XSCALE_PALMLD
 
-config PALMLD_BATTERY
-	tristate "Palm LifeDrive Battery support"
-	select TOUCHSCREEN_WM97XX
-	select POWER_SUPPLY
-	depends on MACH_XSCALE_PALMLD
-	default m
-	help
-		Enable support for PalmOne LifeDrive battery to APM.
-		ATM use it only as module, otherwise it hangs.
-
 config PALMLD_PM
 	tristate "Palm LifeDrive Power Management support"
 	depends on MACH_XSCALE_PALMLD
Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/Makefile
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/Makefile	2007-09-27 13:12:35 UTC (rev 1347)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/Makefile	2007-09-27 13:25:21 UTC (rev 1348)
@@ -6,4 +6,3 @@
 obj-$(CONFIG_PALMLD_PCMCIA)		+= palmld_pcmcia.o 
 obj-$(CONFIG_PALMLD_IDE)		+= palmld_ide.o
 obj-$(CONFIG_PALMLD_PM)			+= palmld_pm.o
-obj-$(CONFIG_PALMLD_BATTERY)		+= palmld_battery.o
Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld.c
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld.c	2007-09-27 13:12:35 UTC (rev 1347)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld.c	2007-09-27 13:25:21 UTC (rev 1348)
@@ -35,6 +35,7 @@
 #include <asm/arch/pxa-pm_ll.h>
 #include <asm/arch/serial.h>
 #include <asm/arch/palmlcd-border.h>
+#include <asm/arch/palm-battery.h>
 
 #include <sound/driver.h>
 #include <sound/core.h>
@@ -224,6 +225,26 @@
 };
 
 /*********************************************************
+ * Battery
+ *********************************************************/
+
+int palmld_ac_is_connected (void){
+	/* when charger is plugged in and USB is not connected,
+	   then status is ONLINE */
+	return ((GET_PALMLD_GPIO(POWER_DETECT)) &&
+		!(GET_PALMLD_GPIO(USB_DETECT_N)));
+}
+
+static struct palm_battery_data palm_battery_info = {
+	.bat_min_voltage	= PALMLD_BAT_MIN_VOLTAGE,
+	.bat_max_voltage	= PALMLD_BAT_MAX_VOLTAGE,
+	.bat_max_life_mins	= PALMLD_MAX_LIFE_MINS,
+	.ac_connected		= &palmld_ac_is_connected,
+};
+
+EXPORT_SYMBOL_GPL(palm_battery_info);
+
+/*********************************************************
  * Backlight
  *********************************************************/
 
Deleted: linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld_battery.c
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld_battery.c	2007-09-27 13:12:35 UTC (rev 1347)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld_battery.c	2007-09-27 13:25:21 UTC (rev 1348)
@@ -1,278 +0,0 @@
-/************************************************************************
- * linux/arch/arm/mach-pxa/palmld/palmld_battery.c			*
- *									*
- *  Touchscreen/battery driver for WM9712 AC97 codec			*
- *  Authros: Jan Herman <2h...@se...>					*
- *           Sergey Lapin <sl...@ha...>				*
- *  Changes for PalmLD: Marek Vasut <mar...@gm...>		*
- *  									*
- ************************************************************************/
-
-#include <linux/kernel.h>
-#include <linux/module.h>
-#include <linux/moduleparam.h>
-#include <linux/init.h>
-#include <linux/interrupt.h>
-#include <linux/input.h>
-#include <linux/device.h>
-#include <linux/workqueue.h>
-#include <linux/power_supply.h>
-#include <linux/apm-emulation.h>
-#include <linux/wm97xx.h>
-
-#include <asm/delay.h>
-#include <asm/mach-types.h>
-#include <asm/mach/arch.h>
-#include <asm/mach/map.h>
-#include <asm/arch/hardware.h>
-#include <asm/arch/pxa-regs.h>
-#include <asm/arch/irqs.h>
-#include <asm/arch/palmld-gpio.h>
-#include <asm/arch/palmld-init.h>
-
-#include <sound/driver.h>
-#include <sound/core.h>
-#include <sound/pcm.h>
-#include <sound/initval.h>
-
-struct palmld_battery_dev
-{
-  struct wm97xx *wm;
-  int battery_registered;
-  int current_voltage;
-  int previous_voltage;
-  u32 last_battery_update;
-};
-
-struct palmld_battery_dev bat;
-
-#if defined(CONFIG_APM_EMULATION) || defined(CONFIG_APM_MODULE)
-/* original APM hook */
-static void (*apm_get_power_status_orig)(struct apm_power_info *info);
-#endif
-
-int palmld_battery_min_voltage(struct power_supply *b)
-{
-    return PALMLD_BAT_MIN_VOLTAGE;
-}
-
-
-int palmld_battery_max_voltage(struct power_supply *b)
-{
-    return PALMLD_BAT_MAX_VOLTAGE; /* mV */
-}
-
-/*
- This formula is based on battery life of my battery 1100mAh. Original battery in Zire72 is Li-On 920mAh
- V_batt = ADCSEL_BMON * 1,889 + 767,8 [mV]
-*/
-
-int palmld_battery_get_voltage(struct power_supply *b)
-{
-    if (bat.battery_registered) {
-    	bat.previous_voltage = bat.current_voltage;
-    	bat.current_voltage = wm97xx_read_aux_adc(bat.wm,  WM97XX_AUX_ID3);
-	bat.last_battery_update = jiffies;
-    	return bat.current_voltage * 1889/1000 + 7678/10;
-    }
-
-    printk("palmld_battery: cannot get voltage -> battery driver unregistered\n");
-    return 0;
-}
-
-int palmld_battery_get_capacity(struct power_supply *b)
-{
-    if (bat.battery_registered)
-	return (((palmld_battery_get_voltage(b)-palmld_battery_min_voltage(b))/
-	(palmld_battery_max_voltage(b)-palmld_battery_min_voltage(b)))*100);
-
-    printk("palmld_battery: cannot get capacity -> battery driver unregistered\n");
-    return 0;
-}
-
-int palmld_battery_get_status(struct power_supply *b)
-{
-	int ac_connected  = GET_PALMLD_GPIO(POWER_DETECT);
-	int usb_connected = !GET_PALMLD_GPIO(USB_DETECT);
-	
-	if ( (ac_connected || usb_connected) && 
-	( ( bat.current_voltage > bat.previous_voltage ) ||
-	(bat.current_voltage <= PALMLD_BAT_MAX_VOLTAGE) ) )
-		return POWER_SUPPLY_STATUS_CHARGING;	
-	else
-		return POWER_SUPPLY_STATUS_NOT_CHARGING;
-}
-
-static int palmld_battery_get_property(struct power_supply *b,
-				enum power_supply_property psp,
-				union power_supply_propval *val)
-{
-        switch (psp) {
-        case POWER_SUPPLY_PROP_VOLTAGE_MAX_DESIGN:
-                val->intval = palmld_battery_max_voltage(b);
-                break;
-        case POWER_SUPPLY_PROP_VOLTAGE_MIN_DESIGN:
-                val->intval = palmld_battery_min_voltage(b);
-                break;
-        case POWER_SUPPLY_PROP_CHARGE_FULL_DESIGN:
-                val->intval = 100;
-                break;
-        case POWER_SUPPLY_PROP_CHARGE_EMPTY_DESIGN:
-                val->intval = 0;
-                break;
-        case POWER_SUPPLY_PROP_CHARGE_NOW:
-                val->intval = palmld_battery_get_capacity(b);
-                break;
-        case POWER_SUPPLY_PROP_VOLTAGE_NOW:
-                val->intval = palmld_battery_get_voltage(b);
-                break;
-        case POWER_SUPPLY_PROP_STATUS:
-                val->intval = palmld_battery_get_status(b);
-                break;
-        default:
-		break;
-        };
-
-        return 0;
-}
-
-static enum power_supply_property palmld_battery_props[] = {
-	POWER_SUPPLY_PROP_VOLTAGE_MAX_DESIGN,
-	POWER_SUPPLY_PROP_VOLTAGE_MIN_DESIGN,
-	POWER_SUPPLY_PROP_CHARGE_FULL_DESIGN,
-	POWER_SUPPLY_PROP_CHARGE_EMPTY_DESIGN,
-	POWER_SUPPLY_PROP_CHARGE_NOW,
-	POWER_SUPPLY_PROP_VOLTAGE_NOW,
-	POWER_SUPPLY_PROP_STATUS,
-};
-							
-struct power_supply palmld_battery = {
-	.name		= "palmld_battery",
-        .get_property	= palmld_battery_get_property,
-        .properties	= palmld_battery_props,
-        .num_properties	= ARRAY_SIZE(palmld_battery_props),
-};
-
-static int palmld_wm97xx_probe(struct device *dev)
-{
-    struct wm97xx *wm = dev->driver_data;
-    bat.wm = wm;
-    return 0;
-}
-
-static int palmld_wm97xx_remove(struct device *dev)
-{
-    return 0;
-}
-
-static void
-palmld_wm97xx_shutdown(struct device *dev)
-{
-#if defined(CONFIG_APM_EMULATION) || defined(CONFIG_APM_MODULE)
-    apm_get_power_status = apm_get_power_status_orig;
-#endif
-}
-
-static int
-palmld_wm97xx_suspend(struct device *dev, pm_message_t state)
-{
-	return 0;
-}
-
-static int
-palmld_wm97xx_resume(struct device *dev)
-{
-	return 0;
-}
-
-
-static struct device_driver palmld_wm97xx_driver = {
-    .name	= "wm97xx-touchscreen",
-    .bus	= &wm97xx_bus_type,
-    .owner	= THIS_MODULE,
-    .probe	= palmld_wm97xx_probe,
-    .remove	= palmld_wm97xx_remove,
-    .suspend	= palmld_wm97xx_suspend,
-    .resume	= palmld_wm97xx_resume,
-    .shutdown	= palmld_wm97xx_shutdown
-};
-
-#if defined(CONFIG_APM_EMULATION) || defined(CONFIG_APM_MODULE)
-
-/* APM status query callback implementation */
-static void palmld_apm_get_power_status(struct apm_power_info *info)
-{
-	int min, max, curr, percent;
-
-	curr = palmld_battery_get_voltage(&palmld_battery);
-	min  = palmld_battery_min_voltage(&palmld_battery);
-	max  = palmld_battery_max_voltage(&palmld_battery);
-
-	curr = curr - min;
-	if (curr < 0) curr = 0;
-	max = max - min;
-	
-	percent = curr*100/max;
-
-	info->battery_life = percent;
-
-	info->ac_line_status = (GET_PALMLD_GPIO(POWER_DETECT)
-				? APM_AC_ONLINE : APM_AC_OFFLINE);
-
-	if (info->ac_line_status) {
-		info->battery_status = APM_BATTERY_STATUS_CHARGING;
-	} else {
-		if (percent > 50)
-			info->battery_status = APM_BATTERY_STATUS_HIGH;
-		else if (percent < 5)
-			info->battery_status = APM_BATTERY_STATUS_CRITICAL;
-		else
-			info->battery_status = APM_BATTERY_STATUS_LOW;
-	}
-
-	info->time = percent * PALMLD_MAX_LIFE_MINS/100;
-	info->units = APM_UNITS_MINS;
-}
-#endif
-static int __init palmld_wm97xx_init(void)
-{
-#ifndef MODULE
-    int ret;
-#endif
-
-    /* register battery to APM layer */
-    bat.battery_registered = 0;
-    if(power_supply_register(NULL, &palmld_battery))
-	printk(KERN_ERR "palmld_ac97_probe: could not register battery class\n");
-    else {
-	bat.battery_registered = 1;
-	printk("Battery registered\n");
-    }
-#if defined(CONFIG_APM_EMULATION) || defined(CONFIG_APM_MODULE)
-    apm_get_power_status_orig = apm_get_power_status;
-    apm_get_power_status = palmld_apm_get_power_status;
-#endif
-#ifndef MODULE
-    /* If we're in kernel, we could accidentally be run before wm97xx
-    and thus have panic */
-    if((ret = bus_register(&wm97xx_bus_type)) < 0)
-        return ret;
-#endif
-    return driver_register(&palmld_wm97xx_driver);
-}
-
-static void __exit palmld_wm97xx_exit(void)
-{
-/* TODO - recover APM callback to original state */
-    power_supply_unregister(&palmld_battery);
-    driver_unregister(&palmld_wm97xx_driver);
-}
-
-module_init(palmld_wm97xx_init);
-module_exit(palmld_wm97xx_exit);
-
-/* Module information */
-MODULE_AUTHOR("Sergey Lapin <sl...@ha...> Jan Herman <2h...@se...>"
-	      "Marek Vasut <mar...@gm...");
-MODULE_DESCRIPTION("wm97xx battery driver");
-MODULE_LICENSE("GPL");
Modified: linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmld-gpio.h
===================================================================
--- linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmld-gpio.h	2007-09-27 13:12:35 UTC (rev 1347)
+++ linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmld-gpio.h	2007-09-27 13:25:21 UTC (rev 1348)
@@ -77,7 +77,7 @@
 #define IRQ_GPIO_PALMLD_IDE_IRQ		IRQ_GPIO(GPIO_NR_PALMLD_IDE_IRQ)
 
 /* USB */
-#define GPIO_NR_PALMLD_USB_DETECT	3
+#define GPIO_NR_PALMLD_USB_DETECT_N	3
 #define GPIO_NR_PALMLD_USB_READY	86
 #define GPIO_NR_PALMLD_USB_RESET	88
 #define GPIO_NR_PALMLD_USB_INT		106
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <z7...@us...> - 2007-09-27 13:12:39
      
     | 
| Revision: 1347
          http://hackndev.svn.sourceforge.net/hackndev/?rev=1347&view=rev
Author:   z72ka
Date:     2007-09-27 06:12:35 -0700 (Thu, 27 Sep 2007)
Log Message:
-----------
palmz72: removed old palmz72_battery driver
Removed Paths:
-------------
    linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72_battery.c
Deleted: linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72_battery.c
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72_battery.c	2007-09-27 13:02:11 UTC (rev 1346)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72_battery.c	2007-09-27 13:12:35 UTC (rev 1347)
@@ -1,298 +0,0 @@
-/************************************************************************
- * linux/arch/arm/mach-pxa/palmz72/palmz72_battery.c			*
- *									*
- *  Touchscreen/battery driver for Palm Zire 72 WM9712 AC97 codec	*
- *  Authos: Jan Herman <2h...@se...>					*
- *          Sergey Lapin <sl...@ha...>				*
- *  									*
- ************************************************************************/
-
- 
-#include <linux/kernel.h>
-#include <linux/module.h>
-#include <linux/moduleparam.h>
-#include <linux/init.h>
-#include <linux/interrupt.h>
-#include <linux/input.h>
-#include <linux/device.h>
-#include <linux/workqueue.h>
-#include <linux/power_supply.h>
-#include <linux/apm-emulation.h>
-#include <linux/wm97xx.h>
-
-#include <asm/delay.h>
-#include <asm/mach-types.h>
-#include <asm/mach/arch.h>
-#include <asm/mach/map.h>
-#include <asm/arch/hardware.h>
-#include <asm/arch/pxa-regs.h>
-#include <asm/arch/irqs.h>
-#include <asm/arch/palmz72-gpio.h>
-#include <asm/arch/palmz72-init.h>
-
-#include <sound/driver.h>
-#include <sound/core.h>
-#include <sound/pcm.h>
-#include <sound/initval.h>
-#include <linux/wm97xx.h>
-#include <asm/arch/palmz72-gpio.h>
-#include <asm/arch/palmz72-init.h>
-
-
-struct palmz72_battery_dev
-{
-  struct wm97xx * wm;
-  int battery_registered;
-  int current_voltage;
-  int previous_voltage;
-  u32 last_battery_update;
-};
-
-struct palmz72_battery_dev bat;
-
-#if defined(CONFIG_APM_EMULATION) || defined(CONFIG_APM_MODULE)
-/* original APM hook */
-static void (*apm_get_power_status_orig)(struct apm_power_info *info);
-#endif
-
-int palmz72_battery_min_voltage(struct power_supply *b)
-{
-    return PALMZ72_BAT_MIN_VOLTAGE;
-}
-
-
-int palmz72_battery_max_voltage(struct power_supply *b)
-{
-    return PALMZ72_BAT_MAX_VOLTAGE; /* mV */
-}
-
-/*
- This formula is based on battery life of my battery 1100mAh. Original battery in Zire72 is Li-On 920mAh
- V_batt = ADCSEL_BMON * 1,889 + 767,8 [mV]
-*/
-
-int palmz72_battery_get_voltage(struct power_supply *b)
-{
-    if (bat.battery_registered){
-    	bat.previous_voltage = bat.current_voltage;
-    	bat.current_voltage = wm97xx_read_aux_adc(bat.wm,  WM97XX_AUX_ID3);
-	bat.last_battery_update = jiffies;
-    	return bat.current_voltage * 1889/1000 + 7678/10;
-    }
-    else{
-    	printk("palmz72_battery: cannot get voltage -> battery driver unregistered\n");
-    	return 0;
-    }
-}
-
-int palmz72_battery_get_capacity(struct power_supply *b)
-{
-    if (bat.battery_registered){
-        return (((palmz72_battery_get_voltage(b)-palmz72_battery_min_voltage(b))
-        /(palmz72_battery_max_voltage(b)-palmz72_battery_min_voltage(b)))*100);
-    }
-    else{
-        printk("palmz72_battery: cannot get capacity -> battery driver unregistered\n");
-        return 0;
-    }
-}
-
-int palmz72_battery_get_status(struct power_supply *b)
-{
-        int ac_connected  = GET_PALMZ72_GPIO(POWER_DETECT);
-        int usb_connected = !GET_PALMZ72_GPIO(USB_DETECT);
-
-        if ( (ac_connected || usb_connected) &&
-        ( ( bat.current_voltage > bat.previous_voltage ) ||
-        (bat.current_voltage <= PALMZ72_BAT_MAX_VOLTAGE) ) )
-                return POWER_SUPPLY_STATUS_CHARGING;
-        else
-                return POWER_SUPPLY_STATUS_NOT_CHARGING;
-}
-
-int tmp;
-
-static int palmz72_battery_get_property(struct power_supply *b,
-                                enum power_supply_property psp,
-                                union power_supply_propval *val)
-{
-        switch (psp) {
-        case POWER_SUPPLY_PROP_VOLTAGE_MAX_DESIGN:
-                val->intval = palmz72_battery_max_voltage(b);
-                break;
-        case POWER_SUPPLY_PROP_VOLTAGE_MIN_DESIGN:
-                val->intval = palmz72_battery_min_voltage(b);
-                break;
-        case POWER_SUPPLY_PROP_CHARGE_FULL_DESIGN:
-                val->intval = 100;
-                break;
-        case POWER_SUPPLY_PROP_CHARGE_EMPTY_DESIGN:
-                val->intval = 0;
-                break;
-        case POWER_SUPPLY_PROP_CHARGE_NOW:
-                val->intval = palmz72_battery_get_capacity(b);
-                break;
-        case POWER_SUPPLY_PROP_VOLTAGE_NOW:
-                val->intval = palmz72_battery_get_voltage(b);
-                break;
-        case POWER_SUPPLY_PROP_STATUS:
-                val->intval = palmz72_battery_get_status(b);
-                break;
-        default:
-                break;
-        };
-
-        return 0;
-}
-
-static enum power_supply_property palmz72_battery_props[] = {
-        POWER_SUPPLY_PROP_VOLTAGE_MAX_DESIGN,
-        POWER_SUPPLY_PROP_VOLTAGE_MIN_DESIGN,
-        POWER_SUPPLY_PROP_CHARGE_FULL_DESIGN,
-        POWER_SUPPLY_PROP_CHARGE_EMPTY_DESIGN,
-        POWER_SUPPLY_PROP_CHARGE_NOW,
-        POWER_SUPPLY_PROP_VOLTAGE_NOW,
-        POWER_SUPPLY_PROP_STATUS,
-};
-
-struct power_supply palmz72_battery = {
-	.name		= "palmz72_battery",
-        .get_property   = palmz72_battery_get_property,
-	.properties     = palmz72_battery_props,
-	.num_properties = ARRAY_SIZE(palmz72_battery_props),
-};
-
-static int palmz72_wm97xx_probe(struct device *dev)
-{
-    struct wm97xx *wm = dev->driver_data;
-    bat.wm = wm;
-    return 0;
-}
-
-static int palmz72_wm97xx_remove(struct device *dev)
-{
-    return 0;
-}
-
-static void
-palmz72_wm97xx_shutdown(struct device *dev)
-{
-#if defined(CONFIG_APM_EMULATION) || defined(CONFIG_APM_MODULE)
-    apm_get_power_status = apm_get_power_status_orig;
-#endif
-}
-
-static int
-palmz72_wm97xx_suspend(struct device *dev, pm_message_t state)
-{
-	return 0;
-}
-
-static int
-palmz72_wm97xx_resume(struct device *dev)
-{
-	return 0;
-}
-
-
-static struct device_driver  palmz72_wm97xx_driver = {
-    .name = "wm97xx-touchscreen",
-    .bus = &wm97xx_bus_type,
-    .owner = THIS_MODULE,
-    .probe = palmz72_wm97xx_probe,
-    .remove = palmz72_wm97xx_remove,
-    .suspend = palmz72_wm97xx_suspend,
-    .resume = palmz72_wm97xx_resume,
-    .shutdown = palmz72_wm97xx_shutdown
-};
-
-static int palmz72_ac_is_connected (void){
-	/* when charger is plugged in and USB is not connected, then status is ONLINE */
-	int ret = (!(GET_GPIO(GPIO_NR_PALMZ72_USB_PULLUP)) && !(GET_GPIO(GPIO_NR_PALMZ72_USB_DETECT)));;
-	if (ret) 
-		ret = 1;
-	else 
-		ret = 0;
-
-	return ret;
-}
-
-#if defined(CONFIG_APM_EMULATION) || defined(CONFIG_APM_MODULE)
-
-/* APM status query callback implementation */
-static void palmz72_apm_get_power_status(struct apm_power_info *info)
-{
-	int min, max, curr, percent;
-
-	curr = palmz72_battery_get_voltage(&palmz72_battery);
-	min  = palmz72_battery_min_voltage(&palmz72_battery);
-	max  = palmz72_battery_max_voltage(&palmz72_battery);
-
-	curr = curr - min;
-	if (curr < 0) curr = 0;
-	max = max - min;
-	
-	percent = curr*100/max;
-
-	info->battery_life = percent;
-
-	info->ac_line_status = palmz72_ac_is_connected() ? APM_AC_ONLINE : APM_AC_OFFLINE;
-
-	if (info->ac_line_status) {
-		info->battery_status = APM_BATTERY_STATUS_CHARGING;
-	} else {
-		if (percent > 50)
-			info->battery_status = APM_BATTERY_STATUS_HIGH;
-		else if (percent < 5)
-			info->battery_status = APM_BATTERY_STATUS_CRITICAL;
-		else
-			info->battery_status = APM_BATTERY_STATUS_LOW;
-	}
-
-	info->time = percent * PALMZ72_MAX_LIFE_MINS/100;
-	info->units = APM_UNITS_MINS;
-}
-#endif
-static int __init palmz72_wm97xx_init(void)
-{
-#ifndef MODULE
-    int ret;
-#endif
-
-    /* register battery to APM layer */
-    bat.battery_registered = 0;
-
-    if(power_supply_register(NULL, &palmz72_battery)) {
-	printk(KERN_ERR "palmz72_ac97_probe: could not register battery class\n");
-    }
-    else {
-	bat.battery_registered = 1;
-	printk("Battery registered\n");
-    }
-#if defined(CONFIG_APM_EMULATION) || defined(CONFIG_APM_MODULE)
-    apm_get_power_status_orig = apm_get_power_status;
-    apm_get_power_status = palmz72_apm_get_power_status;
-#endif
-#ifndef MODULE
-    /* If we're in kernel, we could accidentally be run before wm97xx
-    and thus have panic */
-    if((ret = bus_register(&wm97xx_bus_type)) < 0)
-        return ret;
-#endif
-    return driver_register(&palmz72_wm97xx_driver);
-}
-
-static void __exit palmz72_wm97xx_exit(void)
-{
-/* TODO - recover APM callback to original state */
-    power_supply_unregister(&palmz72_battery);
-    driver_unregister(&palmz72_wm97xx_driver);
-}
-
-module_init(palmz72_wm97xx_init);
-module_exit(palmz72_wm97xx_exit);
-
-/* Module information */
-MODULE_AUTHOR("Sergey Lapin <sl...@ha...> Jan Herman <2h...@se...>");
-MODULE_DESCRIPTION("wm97xx battery driver for Palm Zire 72");
-MODULE_LICENSE("GPL");
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <z7...@us...> - 2007-09-27 13:02:16
      
     | 
| Revision: 1346
          http://hackndev.svn.sourceforge.net/hackndev/?rev=1346&view=rev
Author:   z72ka
Date:     2007-09-27 06:02:11 -0700 (Thu, 27 Sep 2007)
Log Message:
-----------
palmz72: migrate to universal palm_battery driver
palm_battery.h: fixed compilation warning
palmz72: updated defconfig to new palm battery driver, added userinput support, pxaficp as module
Modified Paths:
--------------
    linux4palm/linux/trunk/arch/arm/configs/palmz72_defconfig
    linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/Kconfig
    linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/Makefile
    linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72.c
    linux4palm/linux/trunk/include/asm-arm/arch-pxa/palm-battery.h
Modified: linux4palm/linux/trunk/arch/arm/configs/palmz72_defconfig
===================================================================
--- linux4palm/linux/trunk/arch/arm/configs/palmz72_defconfig	2007-09-26 20:02:39 UTC (rev 1345)
+++ linux4palm/linux/trunk/arch/arm/configs/palmz72_defconfig	2007-09-27 13:02:11 UTC (rev 1346)
@@ -1,7 +1,7 @@
 #
 # Automatically generated make config: don't edit
 # Linux kernel version: 2.6.21-hnd3
-# Wed Sep 12 11:26:32 2007
+# Thu Sep 27 14:33:48 2007
 #
 CONFIG_ARM=y
 CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -183,8 +183,6 @@
 CONFIG_GPIOEDNG=m
 CONFIG_MACH_PALMZ72=y
 CONFIG_PALMZ72_PM=y
-CONFIG_PALMZ72_BATTERY=m
-CONFIG_PALMZ72_BORDER=m
 # CONFIG_MACH_XSCALE_PALMTREO650 is not set
 # CONFIG_MACH_XSCALE_TREO680 is not set
 # CONFIG_MACH_T700WX is not set
@@ -421,7 +419,7 @@
 #
 # FIR device drivers
 #
-CONFIG_PXA_FICP=y
+CONFIG_PXA_FICP=m
 CONFIG_BT=y
 CONFIG_BT_L2CAP=m
 CONFIG_BT_SCO=m
@@ -626,7 +624,7 @@
 # CONFIG_GPIODEV_DIAGONAL is not set
 CONFIG_KEYBOARD_PXA27x=y
 # CONFIG_KEYBOARD_PALMIR is not set
-CONFIG_KEYBOARD_PALMWK=m
+# CONFIG_KEYBOARD_PALMWK is not set
 CONFIG_KEYBOARD_GPIO=y
 # CONFIG_INPUT_MOUSE is not set
 # CONFIG_INPUT_JOYSTICK is not set
@@ -646,7 +644,8 @@
 CONFIG_TOUCHSCREEN_WM9712=y
 # CONFIG_TOUCHSCREEN_WM9713 is not set
 # CONFIG_TOUCHSCREEN_WM97XX_PXA is not set
-# CONFIG_INPUT_MISC is not set
+CONFIG_INPUT_MISC=y
+CONFIG_INPUT_UINPUT=y
 
 #
 # Hardware I/O ports
@@ -677,7 +676,7 @@
 CONFIG_SERIAL_PXA=y
 # CONFIG_SERIAL_PXA_CONSOLE is not set
 CONFIG_SERIAL_PXA_COUNT=4
-# CONFIG_SERIAL_PXA_IR is not set
+CONFIG_SERIAL_PXA_IR=y
 CONFIG_SERIAL_CORE=y
 # CONFIG_RS232_SERIAL is not set
 CONFIG_UNIX98_PTYS=y
@@ -822,6 +821,7 @@
 # CONFIG_POWER_SUPPLY_DEBUG is not set
 CONFIG_PDA_POWER=y
 CONFIG_APM_POWER=y
+CONFIG_BATTERY_PALM=m
 # CONFIG_BATTERY_DS2760 is not set
 
 #
@@ -833,6 +833,7 @@
 # Misc devices
 #
 # CONFIG_BATTCHARGE_MONITOR is not set
+# CONFIG_PALMLCD_BORDER is not set
 
 #
 # Multimedia Capabilities Port drivers
Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/Kconfig
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/Kconfig	2007-09-26 20:02:39 UTC (rev 1345)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/Kconfig	2007-09-27 13:02:11 UTC (rev 1346)
@@ -12,12 +12,3 @@
 	help
 	    Enable support for suspend/resume the PalmOne Zire 72 PDA.
 
-config  PALMZ72_BATTERY
-        tristate "Palm Zire 72 Battery support"
-	select TOUCHSCREEN_WM97XX
-	select POWER_SUPPLY
-	depends on MACH_PALMZ72
-	default m
-	help
-	    Enable support for PalmOne Zire 72 battery to APM.
-	    ATM use it only as module, otherwise it hangs.
Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/Makefile
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/Makefile	2007-09-26 20:02:39 UTC (rev 1345)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/Makefile	2007-09-27 13:02:11 UTC (rev 1346)
@@ -4,4 +4,3 @@
 
 obj-$(CONFIG_MACH_PALMZ72)	+= palmz72.o
 obj-$(CONFIG_PALMZ72_PM)	+= palmz72_pm.o
-obj-$(CONFIG_PALMZ72_BATTERY)	+= palmz72_battery.o
Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72.c
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72.c	2007-09-26 20:02:39 UTC (rev 1345)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72.c	2007-09-27 13:02:11 UTC (rev 1346)
@@ -43,6 +43,7 @@
 #include <asm/arch/pxa_camera.h>
 #include <asm/arch/pxa2xx_udc_gpio.h>
 #include <asm/arch/palmlcd-border.h>
+#include <asm/arch/palm-battery.h>
 
 #include <sound/driver.h>
 #include <sound/core.h>
@@ -330,6 +331,24 @@
 };
 
 /*************
+ * Batery    *
+ *************/
+
+int palmz72_ac_is_connected (void){
+	/* when charger is plugged in and USB is not connected, then status is ONLINE */
+	return (!(GET_GPIO(GPIO_NR_PALMZ72_USB_PULLUP)) && !(GET_GPIO(GPIO_NR_PALMZ72_USB_DETECT)));
+}
+
+static struct palm_battery_data palm_battery_info = {
+	.bat_min_voltage	= PALMZ72_BAT_MIN_VOLTAGE,
+	.bat_max_voltage	= PALMZ72_BAT_MAX_VOLTAGE,
+	.bat_max_life_mins	= PALMZ72_MAX_LIFE_MINS,
+	.ac_connected		= &palmz72_ac_is_connected,
+};
+
+EXPORT_SYMBOL_GPL(palm_battery_info);
+
+/*************
  * Backlight *
  *************/
 
Modified: linux4palm/linux/trunk/include/asm-arm/arch-pxa/palm-battery.h
===================================================================
--- linux4palm/linux/trunk/include/asm-arm/arch-pxa/palm-battery.h	2007-09-26 20:02:39 UTC (rev 1345)
+++ linux4palm/linux/trunk/include/asm-arm/arch-pxa/palm-battery.h	2007-09-27 13:02:11 UTC (rev 1346)
@@ -6,5 +6,5 @@
 	int bat_min_voltage;
 	int bat_max_voltage;
 	int bat_max_life_mins;
-	int (*ac_connected)();
+	int (*ac_connected)(void);
 };
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <mis...@us...> - 2007-09-26 20:02:41
      
     | 
| Revision: 1345
          http://hackndev.svn.sourceforge.net/hackndev/?rev=1345&view=rev
Author:   miska_tx
Date:     2007-09-26 13:02:39 -0700 (Wed, 26 Sep 2007)
Log Message:
-----------
PalmTT5: Migration to the universal battery driver.
Signed-off-by: Michal Hrusecky <Mic...@se...>
Modified Paths:
--------------
    linux4palm/linux/trunk/arch/arm/mach-pxa/palmtt5/Kconfig
    linux4palm/linux/trunk/arch/arm/mach-pxa/palmtt5/Makefile
    linux4palm/linux/trunk/arch/arm/mach-pxa/palmtt5/palmtt5.c
Removed Paths:
-------------
    linux4palm/linux/trunk/arch/arm/mach-pxa/palmtt5/palmtt5_battery.c
Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmtt5/Kconfig
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmtt5/Kconfig	2007-09-26 16:10:59 UTC (rev 1344)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmtt5/Kconfig	2007-09-26 20:02:39 UTC (rev 1345)
@@ -4,15 +4,6 @@
 	help
 	  This enables support for Palm Tungsten|T5 handheld.
 
-config  PALMTT5_BATTERY
-        tristate "Palm Tungsten|T5 Battery support"
-	select TOUCHSCREEN_WM97XX
-	select POWER_SUPPLY
-	depends on MACH_XSCALE_PALMTT5
-	default m
-	help
-	    Enable support for Palm Tungsten|T5 battery to APM.
-	    
 config  PALMTT5_PM
         tristate "Palm Tungsten|T5 Power Management support"
 	depends on MACH_XSCALE_PALMTT5
Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmtt5/Makefile
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmtt5/Makefile	2007-09-26 16:10:59 UTC (rev 1344)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmtt5/Makefile	2007-09-26 20:02:39 UTC (rev 1345)
@@ -3,5 +3,4 @@
 #
 #
 obj-$(CONFIG_MACH_XSCALE_PALMTT5) 	+= palmtt5.o
-obj-$(CONFIG_PALMTT5_BATTERY)		+= palmtt5_battery.o
 obj-$(CONFIG_PALMTT5_PM)       		+= palmtt5_pm.o
Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmtt5/palmtt5.c
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmtt5/palmtt5.c	2007-09-26 16:10:59 UTC (rev 1344)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmtt5/palmtt5.c	2007-09-26 20:02:39 UTC (rev 1345)
@@ -40,6 +40,7 @@
 #include <asm/arch/irda.h>
 #include <asm/arch/pxa27x_keyboard.h>
 #include <asm/arch/serial.h>
+#include <asm/arch/palm-battery.h>
 
 #include "../generic.h"
 
@@ -144,7 +145,26 @@
 	},
 };
 
+/*************
+ * Battery   *
+ *************/
 
+int palmtt5_ac_is_connected (void){
+	/* when charger is plugged in, then status is ONLINE */
+	return GET_PALMTT5_GPIO(POWER_DETECT)||(!GET_PALMTT5_GPIO(USB_DETECT));
+}
+
+static struct palm_battery_data palm_battery_info = {
+	.bat_min_voltage	= PALMTT5_BAT_MIN_VOLTAGE,
+	.bat_max_voltage	= PALMTT5_BAT_MAX_VOLTAGE,
+	.bat_max_life_mins	= PALMTT5_MAX_LIFE_MINS,
+	.ac_connected		= &palmtt5_ac_is_connected,
+};
+
+EXPORT_SYMBOL_GPL(palm_battery_info);
+
+
+
 /*************
  * Backlight *
  *************/
Deleted: linux4palm/linux/trunk/arch/arm/mach-pxa/palmtt5/palmtt5_battery.c
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmtt5/palmtt5_battery.c	2007-09-26 16:10:59 UTC (rev 1344)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmtt5/palmtt5_battery.c	2007-09-26 20:02:39 UTC (rev 1345)
@@ -1,293 +0,0 @@
-/************************************************************************
- * linux/arch/arm/mach-pxa/palmtt5/palmtt5_battery.c			*
- * Battery driver for Palm Tungsten|T5					*
- *									*
- * Author: Marek Vasut <mar...@gm...>				*
- *  									*
- ************************************************************************/
-
- 
-#include <linux/kernel.h>
-#include <linux/module.h>
-#include <linux/moduleparam.h>
-#include <linux/init.h>
-#include <linux/interrupt.h>
-#include <linux/input.h>
-#include <linux/device.h>
-#include <linux/workqueue.h>
-#include <linux/power_supply.h>
-#include <linux/apm-emulation.h>
-#include <linux/wm97xx.h>
-
-#include <asm/delay.h>
-#include <asm/mach-types.h>
-#include <asm/mach/arch.h>
-#include <asm/mach/map.h>
-#include <asm/arch/hardware.h>
-#include <asm/arch/pxa-regs.h>
-#include <asm/arch/irqs.h>
-#include <asm/arch/palmtt5-gpio.h>
-#include <asm/arch/palmtt5-init.h>
-
-#include <sound/driver.h>
-#include <sound/core.h>
-#include <sound/pcm.h>
-#include <sound/initval.h>
-
-struct palmtt5_battery_dev
-{
-  struct wm97xx * wm;
-  int battery_registered;
-  int current_voltage;
-  int previous_voltage;
-  u32 last_battery_update;
-};
-
-struct palmtt5_battery_dev bat;
-
-#if defined(CONFIG_APM_EMULATION) || defined(CONFIG_APM_MODULE)
-/* original APM hook */
-static void (*apm_get_power_status_orig)(struct apm_power_info *info);
-#endif
-
-int palmtt5_battery_min_voltage(struct power_supply *b)
-{
-    return PALMTT5_BAT_MIN_VOLTAGE;
-}
-
-
-int palmtt5_battery_max_voltage(struct power_supply *b)
-{
-    return PALMTT5_BAT_MAX_VOLTAGE; /* mV */
-}
-
-/*
- This formula is based on battery life of my battery 1100mAh. Original battery in Zire72 is Li-On 920mAh
- V_batt = ADCSEL_BMON * 1,889 + 767,8 [mV]
-*/
-
-int palmtt5_battery_get_voltage(struct power_supply *b)
-{
-    if (bat.battery_registered){
-    	bat.previous_voltage = bat.current_voltage;
-    	bat.current_voltage = wm97xx_read_aux_adc(bat.wm,  WM97XX_AUX_ID3);
-	bat.last_battery_update = jiffies;
-    	return bat.current_voltage * 1889/1000 + 7678/10;
-    }
-    else{
-    	printk("palmtt5_battery: cannot get voltage -> battery driver unregistered\n");
-    	return 0;
-    }
-}
-
-int palmtt5_battery_get_capacity(struct power_supply *b)
-{
-    if (bat.battery_registered){
-        return (((palmtt5_battery_get_voltage(b)-palmtt5_battery_min_voltage(b))
-        /(palmtt5_battery_max_voltage(b)-palmtt5_battery_min_voltage(b)))*100);
-    }
-    else{
-        printk("palmtt5_battery: cannot get capacity -> battery driver unregistered\n");
-        return 0;
-    }
-}
-
-int palmtt5_battery_get_status(struct power_supply *b)
-{
-        int ac_connected  = GET_PALMTT5_GPIO(POWER_DETECT);
-        int usb_connected = !GET_PALMTT5_GPIO(USB_DETECT);
-
-        if ( (ac_connected || usb_connected) &&
-        ( ( bat.current_voltage > bat.previous_voltage ) ||
-        (bat.current_voltage <= PALMTT5_BAT_MAX_VOLTAGE) ) )
-                return POWER_SUPPLY_STATUS_CHARGING;
-        else
-                return POWER_SUPPLY_STATUS_NOT_CHARGING;
-}
-
-int tmp;
-
-static int palmtt5_battery_get_property(struct power_supply *b,
-                                enum power_supply_property psp,
-                                union power_supply_propval *val)
-{
-        switch (psp) {
-        case POWER_SUPPLY_PROP_VOLTAGE_MAX_DESIGN:
-                val->intval = palmtt5_battery_max_voltage(b);
-                break;
-        case POWER_SUPPLY_PROP_VOLTAGE_MIN_DESIGN:
-                val->intval = palmtt5_battery_min_voltage(b);
-                break;
-        case POWER_SUPPLY_PROP_CHARGE_FULL_DESIGN:
-                val->intval = 100;
-                break;
-        case POWER_SUPPLY_PROP_CHARGE_EMPTY_DESIGN:
-                val->intval = 0;
-                break;
-        case POWER_SUPPLY_PROP_CHARGE_NOW:
-                val->intval = palmtt5_battery_get_capacity(b);
-                break;
-        case POWER_SUPPLY_PROP_VOLTAGE_NOW:
-                val->intval = palmtt5_battery_get_voltage(b);
-                break;
-        case POWER_SUPPLY_PROP_STATUS:
-                val->intval = palmtt5_battery_get_status(b);
-                break;
-        default:
-                break;
-        };
-
-        return 0;
-}
-
-static enum power_supply_property palmtt5_battery_props[] = {
-        POWER_SUPPLY_PROP_VOLTAGE_MAX_DESIGN,
-        POWER_SUPPLY_PROP_VOLTAGE_MIN_DESIGN,
-        POWER_SUPPLY_PROP_CHARGE_FULL_DESIGN,
-        POWER_SUPPLY_PROP_CHARGE_EMPTY_DESIGN,
-        POWER_SUPPLY_PROP_CHARGE_NOW,
-        POWER_SUPPLY_PROP_VOLTAGE_NOW,
-        POWER_SUPPLY_PROP_STATUS,
-};
-
-struct power_supply palmtt5_battery = {
-	.name		= "palmtt5_battery",
-        .get_property   = palmtt5_battery_get_property,
-        .properties     = palmtt5_battery_props,
-        .num_properties = ARRAY_SIZE(palmtt5_battery_props),
-};
-
-static int palmtt5_wm97xx_probe(struct device *dev)
-{
-    struct wm97xx *wm = dev->driver_data;
-    bat.wm = wm;
-    return 0;
-}
-
-static int palmtt5_wm97xx_remove(struct device *dev)
-{
-    return 0;
-}
-
-static void
-palmtt5_wm97xx_shutdown(struct device *dev)
-{
-#if defined(CONFIG_APM_EMULATION) || defined(CONFIG_APM_MODULE)
-    apm_get_power_status = apm_get_power_status_orig;
-#endif
-}
-
-static int
-palmtt5_wm97xx_suspend(struct device *dev, pm_message_t state)
-{
-	return 0;
-}
-
-static int
-palmtt5_wm97xx_resume(struct device *dev)
-{
-	return 0;
-}
-
-
-static struct device_driver  palmtt5_wm97xx_driver = {
-    .name = "wm97xx-touchscreen",
-    .bus = &wm97xx_bus_type,
-    .owner = THIS_MODULE,
-    .probe = palmtt5_wm97xx_probe,
-    .remove = palmtt5_wm97xx_remove,
-    .suspend = palmtt5_wm97xx_suspend,
-    .resume = palmtt5_wm97xx_resume,
-    .shutdown = palmtt5_wm97xx_shutdown
-};
-
-static int palmtt5_ac_is_connected (void){
-	/* when charger is plugged in, then status is ONLINE */
-	int ret = ((GET_GPIO(GPIO_NR_PALMTT5_POWER_DETECT)));;
-	if (ret) 
-		ret = 1;
-	else 
-		ret = 0;
-
-	return ret;
-}
-
-#if defined(CONFIG_APM_EMULATION) || defined(CONFIG_APM_MODULE)
-
-/* APM status query callback implementation */
-static void palmtt5_apm_get_power_status(struct apm_power_info *info)
-{
-	int min, max, curr, percent;
-
-	curr = palmtt5_battery_get_voltage(&palmtt5_battery);
-	min  = palmtt5_battery_min_voltage(&palmtt5_battery);
-	max  = palmtt5_battery_max_voltage(&palmtt5_battery);
-
-	curr = curr - min;
-	if (curr < 0) curr = 0;
-	max = max - min;
-	
-	percent = curr*100/max;
-
-	info->battery_life = percent;
-
-	info->ac_line_status = palmtt5_ac_is_connected() ? APM_AC_ONLINE : APM_AC_OFFLINE;
-
-	if (info->ac_line_status) {
-		info->battery_status = APM_BATTERY_STATUS_CHARGING;
-	} else {
-		if (percent > 50)
-			info->battery_status = APM_BATTERY_STATUS_HIGH;
-		else if (percent < 5)
-			info->battery_status = APM_BATTERY_STATUS_CRITICAL;
-		else
-			info->battery_status = APM_BATTERY_STATUS_LOW;
-	}
-
-	info->time = percent * PALMTT5_MAX_LIFE_MINS/100;
-	info->units = APM_UNITS_MINS;
-}
-#endif
-static int __init palmtt5_wm97xx_init(void)
-{
-#ifndef MODULE
-    int ret;
-#endif
-
-    /* register battery to APM layer */
-    bat.battery_registered = 0;
-
-    if(power_supply_register(NULL, &palmtt5_battery)) {
-	printk(KERN_ERR "palmtt5_ac97_probe: could not register battery class\n");
-    }
-    else {
-	bat.battery_registered = 1;
-	printk("Battery registered\n");
-    }
-#if defined(CONFIG_APM_EMULATION) || defined(CONFIG_APM_MODULE)
-    apm_get_power_status_orig = apm_get_power_status;
-    apm_get_power_status = palmtt5_apm_get_power_status;
-#endif
-#ifndef MODULE
-    /* If we're in kernel, we could accidentally be run before wm97xx
-    and thus have panic */
-    if((ret = bus_register(&wm97xx_bus_type)) < 0)
-        return ret;
-#endif
-    return driver_register(&palmtt5_wm97xx_driver);
-}
-
-static void __exit palmtt5_wm97xx_exit(void)
-{
-/* TODO - recover APM callback to original state */
-    power_supply_unregister(&palmtt5_battery);
-    driver_unregister(&palmtt5_wm97xx_driver);
-}
-
-module_init(palmtt5_wm97xx_init);
-module_exit(palmtt5_wm97xx_exit);
-
-/* Module information */
-MODULE_AUTHOR("Marek Vasut <mar...@gm...>");
-MODULE_DESCRIPTION("wm97xx battery driver for Palm Tungsten|T5");
-MODULE_LICENSE("GPL");
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <mis...@us...> - 2007-09-26 16:11:03
      
     | 
| Revision: 1344
          http://hackndev.svn.sourceforge.net/hackndev/?rev=1344&view=rev
Author:   miska_tx
Date:     2007-09-26 09:10:59 -0700 (Wed, 26 Sep 2007)
Log Message:
-----------
PalmTX: Updated defconfig.
Signed-off-by: Michal Hrusecky <Mic...@se...>
Modified Paths:
--------------
    linux4palm/linux/trunk/arch/arm/configs/palmtx_defconfig
Modified: linux4palm/linux/trunk/arch/arm/configs/palmtx_defconfig
===================================================================
--- linux4palm/linux/trunk/arch/arm/configs/palmtx_defconfig	2007-09-26 14:49:51 UTC (rev 1343)
+++ linux4palm/linux/trunk/arch/arm/configs/palmtx_defconfig	2007-09-26 16:10:59 UTC (rev 1344)
@@ -1,7 +1,7 @@
 #
 # Automatically generated make config: don't edit
 # Linux kernel version: 2.6.21-hnd3
-# Sat Aug 25 00:55:16 2007
+# Wed Sep 26 18:05:22 2007
 #
 CONFIG_ARM=y
 CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -178,10 +178,8 @@
 # CONFIG_MACH_XSCALE_PALMTT5 is not set
 CONFIG_MACH_XSCALE_PALMTX=y
 # CONFIG_PALMTX_DEBUG is not set
-CONFIG_PALMTX_BATTERY=m
 CONFIG_PALMTX_PM=y
 CONFIG_PALMTX_PCMCIA=m
-CONFIG_PALMTX_BORDER=m
 # CONFIG_MACH_XSCALE_PALMLD is not set
 # CONFIG_MACH_ZIRE31 is not set
 CONFIG_GPIOED=m
@@ -571,7 +569,6 @@
 # Wireless LAN (non-hamradio)
 #
 # CONFIG_NET_RADIO is not set
-# CONFIG_LIBERTAS is not set
 
 #
 # PCMCIA network device support
@@ -761,6 +758,7 @@
 # CONFIG_POWER_SUPPLY_DEBUG is not set
 CONFIG_PDA_POWER=m
 CONFIG_APM_POWER=m
+CONFIG_BATTERY_PALM=m
 # CONFIG_BATTERY_DS2760 is not set
 
 #
@@ -772,6 +770,7 @@
 # Misc devices
 #
 # CONFIG_BATTCHARGE_MONITOR is not set
+CONFIG_PALMLCD_BORDER=m
 
 #
 # Multimedia Capabilities Port drivers
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <mis...@us...> - 2007-09-26 14:49:55
      
     | 
| Revision: 1343
          http://hackndev.svn.sourceforge.net/hackndev/?rev=1343&view=rev
Author:   miska_tx
Date:     2007-09-26 07:49:51 -0700 (Wed, 26 Sep 2007)
Log Message:
-----------
PalmTX: Forgoten include in battery migration.
Signed-off-by: Michal Hrusecky <Mic...@se...>
Modified Paths:
--------------
    linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/palmtx.c
Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/palmtx.c
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/palmtx.c	2007-09-26 14:44:58 UTC (rev 1342)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/palmtx.c	2007-09-26 14:49:51 UTC (rev 1343)
@@ -46,6 +46,7 @@
 #include <asm/arch/palmtx-gpio.h>
 #include <asm/arch/pxa2xx_udc_gpio.h>
 #include <asm/arch/palmlcd-border.h>
+#include <asm/arch/palm-battery.h>
 
 #include "../generic.h"
 
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <mis...@us...> - 2007-09-26 14:45:09
      
     | 
| Revision: 1342
          http://hackndev.svn.sourceforge.net/hackndev/?rev=1342&view=rev
Author:   miska_tx
Date:     2007-09-26 07:44:58 -0700 (Wed, 26 Sep 2007)
Log Message:
-----------
PalmTX: Migration to the universal batery driver
Signed-off-by: Michal Hrusecky <Mic...@se...>
Modified Paths:
--------------
    linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/Kconfig
    linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/Makefile
    linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/palmtx.c
Removed Paths:
-------------
    linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/palmtx_battery.c
Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/Kconfig
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/Kconfig	2007-09-26 14:42:12 UTC (rev 1341)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/Kconfig	2007-09-26 14:44:58 UTC (rev 1342)
@@ -11,16 +11,6 @@
 	help
 	  Enable core debug output for Palm TX modules.
 	  
-config  PALMTX_BATTERY
-        tristate "Palm TX Battery support"
-	select TOUCHSCREEN_WM97XX
-	select POWER_SUPPLY
-	depends on MACH_XSCALE_PALMTX
-	default m
-	help
-	    Enable support for Palm TX battery to APM.
-	    ATM use it only as module, otherwise it hangs.
-	    
 config  PALMTX_PM
         tristate "Palm TX Power Management support"
 	depends on MACH_XSCALE_PALMTX
Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/Makefile
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/Makefile	2007-09-26 14:42:12 UTC (rev 1341)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/Makefile	2007-09-26 14:44:58 UTC (rev 1342)
@@ -3,6 +3,5 @@
 #
 #
 obj-$(CONFIG_MACH_XSCALE_PALMTX)	+= palmtx.o
-obj-$(CONFIG_PALMTX_BATTERY)		+= palmtx_battery.o
 obj-$(CONFIG_PALMTX_PM)			+= palmtx_pm.o
 obj-$(CONFIG_PALMTX_PCMCIA)		+= palmtx_pcmcia.o
Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/palmtx.c
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/palmtx.c	2007-09-26 14:42:12 UTC (rev 1341)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/palmtx.c	2007-09-26 14:44:58 UTC (rev 1342)
@@ -169,6 +169,25 @@
 };
 
 /*************
+ * Batery    *
+ *************/
+
+int palmtx_ac_is_connected (void){
+	/* when charger is plugged in, then status is ONLINE */
+	return GET_PALMTX_GPIO(POWER_DETECT)||(!GET_PALMTX_GPIO(USB_DETECT_N));
+}
+
+static struct palm_battery_data palm_battery_info = {
+	.bat_min_voltage	= PALMTX_BAT_MIN_VOLTAGE,
+	.bat_max_voltage	= PALMTX_BAT_MAX_VOLTAGE,
+	.bat_max_life_mins	= PALMTX_MAX_LIFE_MINS,
+	.ac_connected		= &palmtx_ac_is_connected,
+};
+
+EXPORT_SYMBOL_GPL(palm_battery_info);
+
+
+/*************
  * Backlight *
  *************/
 
Deleted: linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/palmtx_battery.c
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/palmtx_battery.c	2007-09-26 14:42:12 UTC (rev 1341)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/palmtx_battery.c	2007-09-26 14:44:58 UTC (rev 1342)
@@ -1,285 +0,0 @@
-/************************************************************************
- * linux/arch/arm/mach-pxa/palmztx/palmtx_battery.c			*
- * Battery driver for Palm TX						*
- *									*
- * Author: Jan Herman <2h...@se...>					*
- *									*	
- * Based on code for Palm Zire 72 by					*
- *									*
- *  Authors: Jan Herman <2h...@se...>					*
- *           Sergey Lapin <sl...@ha...>				*
- *  									*
- ************************************************************************/
-
- 
-#include <linux/kernel.h>
-#include <linux/module.h>
-#include <linux/moduleparam.h>
-#include <linux/init.h>
-#include <linux/interrupt.h>
-#include <linux/input.h>
-#include <linux/device.h>
-#include <linux/workqueue.h>
-#include <linux/power_supply.h>
-#include <linux/apm-emulation.h>
-#include <linux/wm97xx.h>
-
-#include <asm/delay.h>
-#include <asm/mach-types.h>
-#include <asm/mach/arch.h>
-#include <asm/mach/map.h>
-#include <asm/arch/hardware.h>
-#include <asm/arch/pxa-regs.h>
-#include <asm/arch/irqs.h>
-#include <asm/arch/palmtx-gpio.h>
-#include <asm/arch/palmtx-init.h>
-
-#include <sound/driver.h>
-#include <sound/core.h>
-#include <sound/pcm.h>
-#include <sound/initval.h>
-
-struct palmtx_battery_dev
-{
-  struct wm97xx * wm;
-  int battery_registered;
-  int current_voltage;
-  int previous_voltage;
-  u32 last_battery_update;
-};
-
-struct palmtx_battery_dev bat;
-
-#if defined(CONFIG_APM_EMULATION) || defined(CONFIG_APM_MODULE)
-/* original APM hook */
-static void (*apm_get_power_status_orig)(struct apm_power_info *info);
-#endif
-
-int palmtx_battery_min_voltage(struct power_supply *b)
-{
-    return PALMTX_BAT_MIN_VOLTAGE;
-}
-
-
-int palmtx_battery_max_voltage(struct power_supply *b)
-{
-    return PALMTX_BAT_MAX_VOLTAGE; /* mV */
-}
-
-static int palmtx_ac_is_connected (void){
-	/* when charger is plugged in, then status is ONLINE */
-	return GET_PALMTX_GPIO(POWER_DETECT)||(!GET_PALMTX_GPIO(USB_DETECT_N));
-}
-
-/*
- This formula is based on battery life of my battery 1100mAh. Original battery in Zire72 is Li-On 920mAh
- V_batt = ADCSEL_BMON * 1,889 + 767,8 [mV]
-*/
-
-int palmtx_battery_get_voltage(struct power_supply *b)
-{
-    if (bat.battery_registered) {
-    	bat.previous_voltage = bat.current_voltage;
-    	bat.current_voltage = wm97xx_read_aux_adc(bat.wm,  WM97XX_AUX_ID3);
-	bat.last_battery_update = jiffies;
-    	return bat.current_voltage * 1889/1000 + 7678/10;
-    } else {
-    	printk("palmtx_battery: cannot get voltage -> battery driver unregistered\n");
-    	return 0;
-    }
-}
-
-int palmtx_battery_get_capacity(struct power_supply *b)
-{
-    if (bat.battery_registered)
-        return (((palmtx_battery_get_voltage(b)-palmtx_battery_min_voltage(b))
-        /(palmtx_battery_max_voltage(b)-palmtx_battery_min_voltage(b)))*100);
-    else{
-        printk("palmtx_battery: cannot get capacity -> battery driver unregistered\n");
-        return 0;
-    }
-}
-
-int palmtx_battery_get_status(struct power_supply *b)
-{
-        if ( palmtx_ac_is_connected() &&
-        ( ( bat.current_voltage > bat.previous_voltage ) ||
-        (bat.current_voltage <= palmtx_battery_max_voltage(b)) ) )
-                return POWER_SUPPLY_STATUS_CHARGING;
-        else
-                return POWER_SUPPLY_STATUS_NOT_CHARGING;
-}
-
-static int palmtx_battery_get_property(struct power_supply *b,
-                                enum power_supply_property psp,
-                                union power_supply_propval *val)
-{
-        switch (psp) {
-        case POWER_SUPPLY_PROP_VOLTAGE_MAX_DESIGN:
-                val->intval = palmtx_battery_max_voltage(b);
-                break;
-        case POWER_SUPPLY_PROP_VOLTAGE_MIN_DESIGN:
-                val->intval = palmtx_battery_min_voltage(b);
-                break;
-        case POWER_SUPPLY_PROP_CHARGE_FULL_DESIGN:
-                val->intval = 100;
-                break;
-        case POWER_SUPPLY_PROP_CHARGE_EMPTY_DESIGN:
-                val->intval = 0;
-                break;
-        case POWER_SUPPLY_PROP_CHARGE_NOW:
-                val->intval = palmtx_battery_get_capacity(b);
-                break;
-        case POWER_SUPPLY_PROP_VOLTAGE_NOW:
-                val->intval = palmtx_battery_get_voltage(b);
-                break;
-        case POWER_SUPPLY_PROP_STATUS:
-                val->intval = palmtx_battery_get_status(b);
-                break;
-        default:
-                break;
-        };
-
-        return 0;
-}
-
-static enum power_supply_property palmtx_battery_props[] = {
-        POWER_SUPPLY_PROP_VOLTAGE_MAX_DESIGN,
-        POWER_SUPPLY_PROP_VOLTAGE_MIN_DESIGN,
-        POWER_SUPPLY_PROP_CHARGE_FULL_DESIGN,
-        POWER_SUPPLY_PROP_CHARGE_EMPTY_DESIGN,
-        POWER_SUPPLY_PROP_CHARGE_NOW,
-        POWER_SUPPLY_PROP_VOLTAGE_NOW,
-        POWER_SUPPLY_PROP_STATUS,
-};
-
-struct power_supply palmtx_battery = {
-	.name		= "palmtx_battery",
-        .get_property   = palmtx_battery_get_property,
-        .properties     = palmtx_battery_props,
-        .num_properties = ARRAY_SIZE(palmtx_battery_props),
-};
-
-static int palmtx_wm97xx_probe(struct device *dev)
-{
-    struct wm97xx *wm = dev->driver_data;
-    bat.wm = wm;
-    return 0;
-}
-
-static int palmtx_wm97xx_remove(struct device *dev)
-{
-    return 0;
-}
-
-static void
-palmtx_wm97xx_shutdown(struct device *dev)
-{
-#if defined(CONFIG_APM_EMULATION) || defined(CONFIG_APM_MODULE)
-    apm_get_power_status = apm_get_power_status_orig;
-#endif
-}
-
-static int
-palmtx_wm97xx_suspend(struct device *dev, pm_message_t state)
-{
-	return 0;
-}
-
-static int
-palmtx_wm97xx_resume(struct device *dev)
-{
-	return 0;
-}
-
-
-static struct device_driver  palmtx_wm97xx_driver = {
-    .name	= "wm97xx-touchscreen",
-    .bus	= &wm97xx_bus_type,
-    .owner	= THIS_MODULE,
-    .probe	= palmtx_wm97xx_probe,
-    .remove	= palmtx_wm97xx_remove,
-    .suspend	= palmtx_wm97xx_suspend,
-    .resume	= palmtx_wm97xx_resume,
-    .shutdown	= palmtx_wm97xx_shutdown
-};
-
-
-#if defined(CONFIG_APM_EMULATION) || defined(CONFIG_APM_MODULE)
-
-/* APM status query callback implementation */
-static void palmtx_apm_get_power_status(struct apm_power_info *info)
-{
-	int min, max, curr, percent;
-
-	curr = palmtx_battery_get_voltage(&palmtx_battery);
-	min  = palmtx_battery_min_voltage(&palmtx_battery);
-	max  = palmtx_battery_max_voltage(&palmtx_battery);
-
-	curr = curr - min;
-	if (curr < 0) curr = 0;
-	max = max - min;
-	
-	percent = curr*100/max;
-
-	info->battery_life = percent;
-
-	info->ac_line_status = palmtx_ac_is_connected() ? APM_AC_ONLINE : APM_AC_OFFLINE;
-
-	if (info->ac_line_status)
-		info->battery_status = APM_BATTERY_STATUS_CHARGING;
-	else {
-		if (percent > 50)
-			info->battery_status = APM_BATTERY_STATUS_HIGH;
-		else if (percent < 5)
-			info->battery_status = APM_BATTERY_STATUS_CRITICAL;
-		else
-			info->battery_status = APM_BATTERY_STATUS_LOW;
-	}
-
-	info->time = percent * PALMTX_MAX_LIFE_MINS/100;
-	info->units = APM_UNITS_MINS;
-}
-#endif
-static int __init palmtx_wm97xx_init(void)
-{
-#ifndef MODULE
-    int ret;
-#endif
-
-    /* register battery to APM layer */
-    bat.battery_registered = 0;
-
-    if(power_supply_register(NULL, &palmtx_battery))
-	printk(KERN_ERR "palmtx_ac97_probe: could not register battery class\n");
-    else {
-	bat.battery_registered = 1;
-	printk("Battery registered\n");
-    }
-#if defined(CONFIG_APM_EMULATION) || defined(CONFIG_APM_MODULE)
-    apm_get_power_status_orig = apm_get_power_status;
-    apm_get_power_status = palmtx_apm_get_power_status;
-#endif
-#ifndef MODULE
-    /* If we're in kernel, we could accidentally be run before wm97xx
-    and thus have panic */
-    if((ret = bus_register(&wm97xx_bus_type)) < 0)
-        return ret;
-#endif
-    return driver_register(&palmtx_wm97xx_driver);
-}
-
-static void __exit palmtx_wm97xx_exit(void)
-{
-/* TODO - recover APM callback to original state */
-    power_supply_unregister(&palmtx_battery);
-    driver_unregister(&palmtx_wm97xx_driver);
-}
-
-module_init(palmtx_wm97xx_init);
-module_exit(palmtx_wm97xx_exit);
-
-/* Module information */
-MODULE_AUTHOR("Jan Herman <2h...@se...>");
-MODULE_DESCRIPTION("wm97xx battery driver for Palm TX");
-MODULE_LICENSE("GPL");
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <mis...@us...> - 2007-09-26 14:42:20
      
     | 
| Revision: 1341
          http://hackndev.svn.sourceforge.net/hackndev/?rev=1341&view=rev
Author:   miska_tx
Date:     2007-09-26 07:42:12 -0700 (Wed, 26 Sep 2007)
Log Message:
-----------
All: Model independent Palm battery driver
Signed-off-by: Michal Hrusecky <Mic...@se...>
Modified Paths:
--------------
    linux4palm/linux/trunk/drivers/power/Kconfig
    linux4palm/linux/trunk/drivers/power/Makefile
Added Paths:
-----------
    linux4palm/linux/trunk/drivers/power/palm_battery.c
    linux4palm/linux/trunk/include/asm-arm/arch-pxa/palm-battery.h
Modified: linux4palm/linux/trunk/drivers/power/Kconfig
===================================================================
--- linux4palm/linux/trunk/drivers/power/Kconfig	2007-09-24 18:33:52 UTC (rev 1340)
+++ linux4palm/linux/trunk/drivers/power/Kconfig	2007-09-26 14:42:12 UTC (rev 1341)
@@ -28,6 +28,14 @@
 	  Say Y here to enable support APM status emulation using
 	  battery class devices.
 
+config BATTERY_PALM
+	tristate "Palm battery driver"
+	select TOUCHSCREEN_WM97XX
+	depends on APM_POWER
+	default m
+	help
+	  Say Y here to enable support for batteries in Palm devices.
+
 config BATTERY_DS2760
 	tristate "DS2760 battery driver (HP iPAQ & others)"
 	select W1
Modified: linux4palm/linux/trunk/drivers/power/Makefile
===================================================================
--- linux4palm/linux/trunk/drivers/power/Makefile	2007-09-24 18:33:52 UTC (rev 1340)
+++ linux4palm/linux/trunk/drivers/power/Makefile	2007-09-26 14:42:12 UTC (rev 1341)
@@ -18,6 +18,7 @@
 obj-$(CONFIG_APM_POWER)            += apm_power.o
 
 obj-$(CONFIG_BATTERY_DS2760)       += ds2760_battery.o
+obj-$(CONFIG_BATTERY_PALM)         += palm_battery.o
 obj-$(CONFIG_BATTERY_PMU)          += pmu_battery.o
 obj-$(CONFIG_BATTERY_OLPC)         += olpc_battery.o
 
Added: linux4palm/linux/trunk/drivers/power/palm_battery.c
===================================================================
--- linux4palm/linux/trunk/drivers/power/palm_battery.c	                        (rev 0)
+++ linux4palm/linux/trunk/drivers/power/palm_battery.c	2007-09-26 14:42:12 UTC (rev 1341)
@@ -0,0 +1,269 @@
+/************************************************************************
+ * drivers/power/palm_battery.c						*
+ * Battery driver for Palm devices					*
+ *									*
+ * Author: Michal Hrusecky <Mic...@se...>			*
+ *									*	
+ * Based on code for Palm TX by						*
+ *									*
+ *  Authors: Jan Herman <2h...@se...>					*
+ *  									*
+ ************************************************************************/
+
+ 
+#include <linux/kernel.h>
+#include <linux/module.h>
+#include <linux/moduleparam.h>
+#include <linux/init.h>
+#include <linux/interrupt.h>
+#include <linux/input.h>
+#include <linux/device.h>
+#include <linux/workqueue.h>
+#include <linux/power_supply.h>
+#include <linux/apm-emulation.h>
+#include <linux/wm97xx.h>
+
+#include <asm/delay.h>
+#include <asm/mach-types.h>
+#include <asm/mach/arch.h>
+#include <asm/mach/map.h>
+#include <asm/arch/hardware.h>
+#include <asm/arch/pxa-regs.h>
+#include <asm/arch/irqs.h>
+
+#include <sound/driver.h>
+#include <sound/core.h>
+#include <sound/pcm.h>
+#include <sound/initval.h>
+#include <asm/arch/palm-battery.h>
+
+extern struct palm_battery_data palm_battery_info;
+
+struct palm_battery_dev
+{
+  struct wm97xx * wm;
+  int battery_registered;
+  int current_voltage;
+  int previous_voltage;
+  u32 last_battery_update;
+};
+
+struct palm_battery_dev bat;
+
+#if defined(CONFIG_APM_EMULATION) || defined(CONFIG_APM_MODULE)
+/* original APM hook */
+static void (*apm_get_power_status_orig)(struct apm_power_info *info);
+#endif
+
+/*
+ This formula is based on battery life of my battery 1100mAh. Original battery in Zire72 is Li-On 920mAh
+ V_batt = ADCSEL_BMON * 1,889 + 767,8 [mV]
+*/
+
+int palm_battery_get_voltage(struct power_supply *b)
+{
+    if (bat.battery_registered) {
+    	bat.previous_voltage = bat.current_voltage;
+    	bat.current_voltage = wm97xx_read_aux_adc(bat.wm,  WM97XX_AUX_ID3);
+	bat.last_battery_update = jiffies;
+    	return bat.current_voltage * 1889/1000 + 7678/10;
+    } else {
+    	printk("palm_battery: cannot get voltage -> battery driver unregistered\n");
+    	return 0;
+    }
+}
+
+int palm_battery_get_capacity(struct power_supply *b)
+{
+    if (bat.battery_registered)
+        return (((palm_battery_get_voltage(b)-palm_battery_info.bat_min_voltage)
+        /(palm_battery_info.bat_max_voltage-palm_battery_info.bat_min_voltage))*100);
+    else{
+        printk("palm_battery: cannot get capacity -> battery driver unregistered\n");
+        return 0;
+    }
+}
+
+int palm_battery_get_status(struct power_supply *b)
+{
+        if ( palm_battery_info.ac_connected() &&
+        ( ( bat.current_voltage > bat.previous_voltage ) ||
+        (bat.current_voltage <= palm_battery_info.bat_max_voltage) ) )
+                return POWER_SUPPLY_STATUS_CHARGING;
+        else
+                return POWER_SUPPLY_STATUS_NOT_CHARGING;
+}
+
+static int palm_battery_get_property(struct power_supply *b,
+                                enum power_supply_property psp,
+                                union power_supply_propval *val)
+{
+        switch (psp) {
+        case POWER_SUPPLY_PROP_VOLTAGE_MAX_DESIGN:
+                val->intval = palm_battery_info.bat_max_voltage;
+                break;
+        case POWER_SUPPLY_PROP_VOLTAGE_MIN_DESIGN:
+                val->intval = palm_battery_info.bat_min_voltage;
+                break;
+        case POWER_SUPPLY_PROP_CHARGE_FULL_DESIGN:
+                val->intval = 100;
+                break;
+        case POWER_SUPPLY_PROP_CHARGE_EMPTY_DESIGN:
+                val->intval = 0;
+                break;
+        case POWER_SUPPLY_PROP_CHARGE_NOW:
+                val->intval = palm_battery_get_capacity(b);
+                break;
+        case POWER_SUPPLY_PROP_VOLTAGE_NOW:
+                val->intval = palm_battery_get_voltage(b);
+                break;
+        case POWER_SUPPLY_PROP_STATUS:
+                val->intval = palm_battery_get_status(b);
+                break;
+        default:
+                break;
+        };
+
+        return 0;
+}
+
+static enum power_supply_property palm_battery_props[] = {
+        POWER_SUPPLY_PROP_VOLTAGE_MAX_DESIGN,
+        POWER_SUPPLY_PROP_VOLTAGE_MIN_DESIGN,
+        POWER_SUPPLY_PROP_CHARGE_FULL_DESIGN,
+        POWER_SUPPLY_PROP_CHARGE_EMPTY_DESIGN,
+        POWER_SUPPLY_PROP_CHARGE_NOW,
+        POWER_SUPPLY_PROP_VOLTAGE_NOW,
+        POWER_SUPPLY_PROP_STATUS,
+};
+
+struct power_supply palm_battery = {
+	.name		= "palm_battery",
+        .get_property   = palm_battery_get_property,
+        .properties     = palm_battery_props,
+        .num_properties = ARRAY_SIZE(palm_battery_props),
+};
+
+static int palm_wm97xx_probe(struct device *dev)
+{
+    struct wm97xx *wm = dev->driver_data;
+    bat.wm = wm;
+    return 0;
+}
+
+static int palm_wm97xx_remove(struct device *dev)
+{
+    return 0;
+}
+
+static void
+palm_wm97xx_shutdown(struct device *dev)
+{
+#if defined(CONFIG_APM_EMULATION) || defined(CONFIG_APM_MODULE)
+    apm_get_power_status = apm_get_power_status_orig;
+#endif
+}
+
+static int
+palm_wm97xx_suspend(struct device *dev, pm_message_t state)
+{
+	return 0;
+}
+
+static int
+palm_wm97xx_resume(struct device *dev)
+{
+	return 0;
+}
+
+
+static struct device_driver  palm_wm97xx_driver = {
+    .name	= "wm97xx-touchscreen",
+    .bus	= &wm97xx_bus_type,
+    .owner	= THIS_MODULE,
+    .probe	= palm_wm97xx_probe,
+    .remove	= palm_wm97xx_remove,
+    .suspend	= palm_wm97xx_suspend,
+    .resume	= palm_wm97xx_resume,
+    .shutdown	= palm_wm97xx_shutdown
+};
+
+
+#if defined(CONFIG_APM_EMULATION) || defined(CONFIG_APM_MODULE)
+
+/* APM status query callback implementation */
+static void palm_apm_get_power_status(struct apm_power_info *info)
+{
+	int min, max, curr, percent;
+
+	curr = palm_battery_get_voltage(&palm_battery);
+	min  = palm_battery_info.bat_min_voltage;
+	max  = palm_battery_info.bat_max_voltage;
+
+	curr = curr - min;
+	if (curr < 0) curr = 0;
+	max = max - min;
+	
+	percent = curr*100/max;
+
+	info->battery_life = percent;
+
+	info->ac_line_status = palm_battery_info.ac_connected() ? APM_AC_ONLINE : APM_AC_OFFLINE;
+
+	if (info->ac_line_status)
+		info->battery_status = APM_BATTERY_STATUS_CHARGING;
+	else {
+		if (percent > 50)
+			info->battery_status = APM_BATTERY_STATUS_HIGH;
+		else if (percent < 5)
+			info->battery_status = APM_BATTERY_STATUS_CRITICAL;
+		else
+			info->battery_status = APM_BATTERY_STATUS_LOW;
+	}
+
+	info->time = percent * palm_battery_info.bat_max_life_mins/100;
+	info->units = APM_UNITS_MINS;
+}
+#endif
+static int __init palm_wm97xx_init(void)
+{
+#ifndef MODULE
+    int ret;
+#endif
+
+    /* register battery to APM layer */
+    bat.battery_registered = 0;
+
+    if(power_supply_register(NULL, &palm_battery))
+	printk(KERN_ERR "palm_ac97_probe: could not register battery class\n");
+    else {
+	bat.battery_registered = 1;
+	printk("Battery registered\n");
+    }
+#if defined(CONFIG_APM_EMULATION) || defined(CONFIG_APM_MODULE)
+    apm_get_power_status_orig = apm_get_power_status;
+    apm_get_power_status = palm_apm_get_power_status;
+#endif
+#ifndef MODULE
+    /* If we're in kernel, we could accidentally be run before wm97xx
+    and thus have panic */
+    if((ret = bus_register(&wm97xx_bus_type)) < 0)
+        return ret;
+#endif
+    return driver_register(&palm_wm97xx_driver);
+}
+
+static void __exit palm_wm97xx_exit(void)
+{
+    /* TODO - recover APM callback to original state */
+    power_supply_unregister(&palm_battery);
+    driver_unregister(&palm_wm97xx_driver);
+}
+
+module_init(palm_wm97xx_init);
+module_exit(palm_wm97xx_exit);
+
+/* Module information */
+MODULE_AUTHOR("Michal Hrusecky <Mic...@se...>");
+MODULE_DESCRIPTION("Universal battery driver for Palm devices");
+MODULE_LICENSE("GPL");
Added: linux4palm/linux/trunk/include/asm-arm/arch-pxa/palm-battery.h
===================================================================
--- linux4palm/linux/trunk/include/asm-arm/arch-pxa/palm-battery.h	                        (rev 0)
+++ linux4palm/linux/trunk/include/asm-arm/arch-pxa/palm-battery.h	2007-09-26 14:42:12 UTC (rev 1341)
@@ -0,0 +1,10 @@
+/*
+ * Palm battery info structure.
+ */
+
+struct palm_battery_data {
+	int bat_min_voltage;
+	int bat_max_voltage;
+	int bat_max_life_mins;
+	int (*ac_connected)();
+};
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <mar...@us...> - 2007-09-24 18:33:54
      
     | 
| Revision: 1340
          http://hackndev.svn.sourceforge.net/hackndev/?rev=1340&view=rev
Author:   marex_z71
Date:     2007-09-24 11:33:52 -0700 (Mon, 24 Sep 2007)
Log Message:
-----------
PalmZ72: align to 80 characters and simplify code
Modified Paths:
--------------
    linux4palm/linux/trunk/drivers/leds/led-palmz72.c
Modified: linux4palm/linux/trunk/drivers/leds/led-palmz72.c
===================================================================
--- linux4palm/linux/trunk/drivers/leds/led-palmz72.c	2007-09-24 15:59:23 UTC (rev 1339)
+++ linux4palm/linux/trunk/drivers/leds/led-palmz72.c	2007-09-24 18:33:52 UTC (rev 1340)
@@ -21,13 +21,10 @@
 #include <asm/arch/pxa-regs.h>
 #include <asm/hardware/scoop.h>
 
-
-static void palmz72led_green_set(struct led_classdev *led_cdev, enum led_brightness value)
+static void palmz72led_green_set(struct led_classdev *led_cdev,
+				 enum led_brightness value)
 {
-	if (value)
-		SET_PALMZ72_GPIO(LED,1);
-	else
-		SET_PALMZ72_GPIO(LED,0);
+	SET_PALMZ72_GPIO(LED, value ? 1 : 0);
 }
 
 static struct led_classdev palmz72_green_led = {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <mis...@us...> - 2007-09-24 15:59:29
      
     | 
| Revision: 1339
          http://hackndev.svn.sourceforge.net/hackndev/?rev=1339&view=rev
Author:   miska_tx
Date:     2007-09-24 08:59:23 -0700 (Mon, 24 Sep 2007)
Log Message:
-----------
PalmTX: Battery cleanups.
Signed-off-by: Michal Hrusecky <Mic...@se...>
Modified Paths:
--------------
    linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/palmtx_battery.c
Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/palmtx_battery.c
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/palmtx_battery.c	2007-09-24 15:12:00 UTC (rev 1338)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/palmtx_battery.c	2007-09-24 15:59:23 UTC (rev 1339)
@@ -66,6 +66,11 @@
     return PALMTX_BAT_MAX_VOLTAGE; /* mV */
 }
 
+static int palmtx_ac_is_connected (void){
+	/* when charger is plugged in, then status is ONLINE */
+	return GET_PALMTX_GPIO(POWER_DETECT)||(!GET_PALMTX_GPIO(USB_DETECT_N));
+}
+
 /*
  This formula is based on battery life of my battery 1100mAh. Original battery in Zire72 is Li-On 920mAh
  V_batt = ADCSEL_BMON * 1,889 + 767,8 [mV]
@@ -97,19 +102,14 @@
 
 int palmtx_battery_get_status(struct power_supply *b)
 {
-        int ac_connected  = GET_PALMTX_GPIO(POWER_DETECT);
-        int usb_connected = !GET_PALMTX_GPIO(USB_DETECT_N);
-
-        if ( (ac_connected || usb_connected) &&
+        if ( palmtx_ac_is_connected() &&
         ( ( bat.current_voltage > bat.previous_voltage ) ||
-        (bat.current_voltage <= PALMTX_BAT_MAX_VOLTAGE) ) )
+        (bat.current_voltage <= palmtx_battery_max_voltage(b)) ) )
                 return POWER_SUPPLY_STATUS_CHARGING;
         else
                 return POWER_SUPPLY_STATUS_NOT_CHARGING;
 }
 
-int tmp;
-
 static int palmtx_battery_get_property(struct power_supply *b,
                                 enum power_supply_property psp,
                                 union power_supply_propval *val)
@@ -204,10 +204,6 @@
     .shutdown	= palmtx_wm97xx_shutdown
 };
 
-static int palmtx_ac_is_connected (void){
-	/* when charger is plugged in, then status is ONLINE */
-	return GET_PALMTX_GPIO(POWER_DETECT)||(!GET_PALMTX_GPIO(USB_DETECT_N));
-}
 
 #if defined(CONFIG_APM_EMULATION) || defined(CONFIG_APM_MODULE)
 
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <mar...@us...> - 2007-09-24 15:12:03
      
     | 
| Revision: 1338
          http://hackndev.svn.sourceforge.net/hackndev/?rev=1338&view=rev
Author:   marex_z71
Date:     2007-09-24 08:12:00 -0700 (Mon, 24 Sep 2007)
Log Message:
-----------
PalmLD: stupid formating changes
Modified Paths:
--------------
    linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld_battery.c
Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld_battery.c
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld_battery.c	2007-09-21 15:22:10 UTC (rev 1337)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld_battery.c	2007-09-24 15:12:00 UTC (rev 1338)
@@ -186,15 +186,15 @@
 }
 
 
-static struct device_driver  palmld_wm97xx_driver = {
-    .name = "wm97xx-touchscreen",
-    .bus = &wm97xx_bus_type,
-    .owner = THIS_MODULE,
-    .probe = palmld_wm97xx_probe,
-    .remove = palmld_wm97xx_remove,
-    .suspend = palmld_wm97xx_suspend,
-    .resume = palmld_wm97xx_resume,
-    .shutdown = palmld_wm97xx_shutdown
+static struct device_driver palmld_wm97xx_driver = {
+    .name	= "wm97xx-touchscreen",
+    .bus	= &wm97xx_bus_type,
+    .owner	= THIS_MODULE,
+    .probe	= palmld_wm97xx_probe,
+    .remove	= palmld_wm97xx_remove,
+    .suspend	= palmld_wm97xx_suspend,
+    .resume	= palmld_wm97xx_resume,
+    .shutdown	= palmld_wm97xx_shutdown
 };
 
 #if defined(CONFIG_APM_EMULATION) || defined(CONFIG_APM_MODULE)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <mar...@us...> - 2007-09-21 15:23:20
      
     | 
| Revision: 1337
          http://hackndev.svn.sourceforge.net/hackndev/?rev=1337&view=rev
Author:   marex_z71
Date:     2007-09-21 08:22:10 -0700 (Fri, 21 Sep 2007)
Log Message:
-----------
PalmLD: improved coding style of battery driver and added few fallback security measurements
Modified Paths:
--------------
    linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld_battery.c
Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld_battery.c
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld_battery.c	2007-09-21 14:42:29 UTC (rev 1336)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld_battery.c	2007-09-21 15:22:10 UTC (rev 1337)
@@ -69,28 +69,25 @@
 
 int palmld_battery_get_voltage(struct power_supply *b)
 {
-    if (bat.battery_registered){
+    if (bat.battery_registered) {
     	bat.previous_voltage = bat.current_voltage;
     	bat.current_voltage = wm97xx_read_aux_adc(bat.wm,  WM97XX_AUX_ID3);
 	bat.last_battery_update = jiffies;
     	return bat.current_voltage * 1889/1000 + 7678/10;
     }
-    else{
-    	printk("palmld_battery: cannot get voltage -> battery driver unregistered\n");
-    	return 0;
-    }
+
+    printk("palmld_battery: cannot get voltage -> battery driver unregistered\n");
+    return 0;
 }
 
 int palmld_battery_get_capacity(struct power_supply *b)
 {
-    if (bat.battery_registered){
-	return (((palmld_battery_get_voltage(b)-palmld_battery_min_voltage(b))
-	/(palmld_battery_max_voltage(b)-palmld_battery_min_voltage(b)))*100);
-    }
-    else{
-    	printk("palmld_battery: cannot get capacity -> battery driver unregistered\n");
-    	return 0;
-    }
+    if (bat.battery_registered)
+	return (((palmld_battery_get_voltage(b)-palmld_battery_min_voltage(b))/
+	(palmld_battery_max_voltage(b)-palmld_battery_min_voltage(b)))*100);
+
+    printk("palmld_battery: cannot get capacity -> battery driver unregistered\n");
+    return 0;
 }
 
 int palmld_battery_get_status(struct power_supply *b)
@@ -106,8 +103,6 @@
 		return POWER_SUPPLY_STATUS_NOT_CHARGING;
 }
 
-int tmp;
-
 static int palmld_battery_get_property(struct power_supply *b,
 				enum power_supply_property psp,
 				union power_supply_propval *val)
@@ -247,9 +242,8 @@
 
     /* register battery to APM layer */
     bat.battery_registered = 0;
-    if(power_supply_register(NULL, &palmld_battery)) {
+    if(power_supply_register(NULL, &palmld_battery))
 	printk(KERN_ERR "palmld_ac97_probe: could not register battery class\n");
-    }
     else {
 	bat.battery_registered = 1;
 	printk("Battery registered\n");
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <mar...@us...> - 2007-09-21 14:42:32
      
     | 
| Revision: 1336
          http://hackndev.svn.sourceforge.net/hackndev/?rev=1336&view=rev
Author:   marex_z71
Date:     2007-09-21 07:42:29 -0700 (Fri, 21 Sep 2007)
Log Message:
-----------
PalmLD: coding style improvement
Modified Paths:
--------------
    linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld.c
Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld.c
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld.c	2007-09-21 00:53:12 UTC (rev 1335)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld.c	2007-09-21 14:42:29 UTC (rev 1336)
@@ -98,20 +98,14 @@
 void bcm2035_bt_reset(int on)
 {
         printk(KERN_NOTICE "Switch BT reset %d\n", on);
-        if (on)
-                SET_PALMLD_GPIO( BT_RESET, 1 );
-        else
-                SET_PALMLD_GPIO( BT_RESET, 0 );
+        SET_PALMLD_GPIO( BT_RESET, on ? 1 : 0 );
 }
 EXPORT_SYMBOL(bcm2035_bt_reset);
 
 void bcm2035_bt_power(int on)
 {
         printk(KERN_NOTICE "Switch BT power %d\n", on);
-        if (on)
-                SET_PALMLD_GPIO( BT_POWER, 1 );
-        else
-                SET_PALMLD_GPIO( BT_POWER, 0 );
+        SET_PALMLD_GPIO( BT_POWER, on ? 1 : 0 );
 }
 EXPORT_SYMBOL(bcm2035_bt_power);
 
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <mar...@us...> - 2007-09-21 00:53:22
      
     | 
| Revision: 1335
          http://hackndev.svn.sourceforge.net/hackndev/?rev=1335&view=rev
Author:   marex_z71
Date:     2007-09-20 17:53:12 -0700 (Thu, 20 Sep 2007)
Log Message:
-----------
PalmZ72: migrate to universal LCD border driver - palmlcd_border
Modified Paths:
--------------
    linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/Kconfig
    linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/Makefile
    linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72.c
Removed Paths:
-------------
    linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72_border.c
Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/Kconfig
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/Kconfig	2007-09-21 00:51:33 UTC (rev 1334)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/Kconfig	2007-09-21 00:53:12 UTC (rev 1335)
@@ -21,9 +21,3 @@
 	help
 	    Enable support for PalmOne Zire 72 battery to APM.
 	    ATM use it only as module, otherwise it hangs.
-
-config PALMZ72_BORDER
-	tristate "Palm Zire 72 Display border switch"
-	depends on MACH_PALMZ72
-	help
-		Enable support for turning LCD border on/off
Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/Makefile
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/Makefile	2007-09-21 00:51:33 UTC (rev 1334)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/Makefile	2007-09-21 00:53:12 UTC (rev 1335)
@@ -5,4 +5,3 @@
 obj-$(CONFIG_MACH_PALMZ72)	+= palmz72.o
 obj-$(CONFIG_PALMZ72_PM)	+= palmz72_pm.o
 obj-$(CONFIG_PALMZ72_BATTERY)	+= palmz72_battery.o
-obj-$(CONFIG_PALMZ72_BORDER)	+= palmz72_border.o
Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72.c
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72.c	2007-09-21 00:51:33 UTC (rev 1334)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72.c	2007-09-21 00:53:12 UTC (rev 1335)
@@ -42,6 +42,7 @@
 #include <asm/arch/palmz72-init.h>
 #include <asm/arch/pxa_camera.h>
 #include <asm/arch/pxa2xx_udc_gpio.h>
+#include <asm/arch/palmlcd-border.h>
 
 #include <sound/driver.h>
 #include <sound/core.h>
@@ -315,9 +316,17 @@
 /**************
  * LCD Border *
  **************/
+static struct palmlcd_border_pdata border_machinfo = {
+	.select_gpio	= GPIO_NR_PALMZ72_BORDER_SELECT,
+	.switch_gpio	= GPIO_NR_PALMZ72_BORDER_SWITCH,
+};
+
 struct platform_device palmz72_border = {
-	.name = "palmz72-border",
-	.id = -1,
+	.name	= "palmlcd-border",
+	.id	= -1,
+	.dev	= {
+		.platform_data  = &border_machinfo,
+	},
 };
 
 /*************
Deleted: linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72_border.c
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72_border.c	2007-09-21 00:51:33 UTC (rev 1334)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72_border.c	2007-09-21 00:53:12 UTC (rev 1335)
@@ -1,115 +0,0 @@
-/*
- *  	PalmOne Zire 72 LCD Border switch
- * 		(Based on Palm LD LCD border switch) 
- *
- *  	Author: Marek Vasut <mar...@gm...>
- * 		Modification for Palm Zire 72:	Jan Herman <z7...@ha...>
- * 
- *      This program is free software; you can redistribute it and/or modify
- *      it under the terms of the GNU General Public License as published by
- *      the Free Software Foundation; either version 2 of the License, or
- *      (at your option) any later version.
- *      
- *      This program is distributed in the hope that it will be useful,
- *      but WITHOUT ANY WARRANTY; without even the implied warranty of
- *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *      GNU General Public License for more details.
- *      
- *      You should have received a copy of the GNU General Public License
- *      along with this program; if not, write to the Free Software
- *      Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- *      MA 02110-1301, USA.
- */
-
-#include <linux/module.h>
-#include <linux/kernel.h>
-#include <linux/platform_device.h>
-#include <linux/delay.h>
-
-#include <asm/arch/hardware.h>
-#include <asm/arch/palmz72-gpio.h>
-
-static ssize_t palmz72_border_write(struct device *dev, struct device_attribute *attr,
-				   const char *buf, size_t count)
-{
-	signed long state = simple_strtol(buf, NULL, 10);
-	
-	if ( state >= 1 )
-	    SET_PALMZ72_GPIO(BORDER_SELECT, 1);
-	else
-	    SET_PALMZ72_GPIO(BORDER_SELECT, 0);
-
-	msleep(50);
-	SET_PALMZ72_GPIO(BORDER_SWITCH, 1);
-
-	if ((state == 1) || (state == 0)) /* default - switch border on/off */
-	    msleep(200);
-	else { /* hidden functionality - colored border */
-	    if (state >= 0)
-		msleep(state);
-	    else
-		msleep(-state);
-	}
-
-	SET_PALMZ72_GPIO(BORDER_SWITCH, 0);
-
-	return count;
-}
-
-static ssize_t palmz72_border_read(struct device *dev, 
-				  struct device_attribute *attr,
-				  char *buf)
-{
-	return strlcpy(buf, GET_PALMZ72_GPIO(BORDER_SELECT) ? "1\n" : "0\n", 3);
-}
-
-static DEVICE_ATTR(border_power, 0644, palmz72_border_read, palmz72_border_write);
-
-static struct attribute *palmz72_border_attrs[] = {
-	&dev_attr_border_power.attr,
-	NULL
-};
-
-static struct attribute_group palmz72_border_attr_group = {
-	.attrs	= palmz72_border_attrs,
-};
-
-static int __devinit palmz72_border_probe(struct platform_device *pdev)
-{
-	return sysfs_create_group(&pdev->dev.kobj, &palmz72_border_attr_group);
-}
-
-static int palmz72_border_remove(struct platform_device *pdev)
-{
-	sysfs_remove_group(&pdev->dev.kobj, &palmz72_border_attr_group);
-	return 0;
-}
-
-static struct platform_driver palmz72_border_driver = {
-	.probe 		= palmz72_border_probe,
-	.remove		= palmz72_border_remove,
-	.suspend 	= NULL,
-	.resume		= NULL,
-	.driver = {
-		.name 	= "palmz72-border",
-	}
-};
-
-static int __init palmz72_border_init(void)
-{
-	printk(KERN_INFO "LCD border driver registered\n");
-	return platform_driver_register(&palmz72_border_driver);
-}
-
-static void palmz72_border_exit(void)
-{
-	printk(KERN_INFO "LCD border driver unregistered\n");
-	platform_driver_unregister(&palmz72_border_driver);
-}
-
-module_init(palmz72_border_init);
-module_exit(palmz72_border_exit);
-
-MODULE_LICENSE("GPL");
-MODULE_AUTHOR("Jan Herman <z7...@ha...>");
-MODULE_DESCRIPTION("PalmOne Zire72 Border switch");
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <mar...@us...> - 2007-09-21 00:51:34
      
     | 
| Revision: 1334
          http://hackndev.svn.sourceforge.net/hackndev/?rev=1334&view=rev
Author:   marex_z71
Date:     2007-09-20 17:51:33 -0700 (Thu, 20 Sep 2007)
Log Message:
-----------
PalmZ72: make i2c-ov96xx.c compile cleanly without warnings
Modified Paths:
--------------
    linux4palm/linux/trunk/drivers/i2c/chips/i2c-ov96xx.c
Modified: linux4palm/linux/trunk/drivers/i2c/chips/i2c-ov96xx.c
===================================================================
--- linux4palm/linux/trunk/drivers/i2c/chips/i2c-ov96xx.c	2007-09-21 00:40:32 UTC (rev 1333)
+++ linux4palm/linux/trunk/drivers/i2c/chips/i2c-ov96xx.c	2007-09-21 00:51:33 UTC (rev 1334)
@@ -102,7 +102,6 @@
 {
 	struct i2c_client *new_client;
 	int err = 0;
-	char res = -1;
 	struct ov96xx_data *data;
     
 	if (g_client != NULL) {
@@ -158,7 +157,8 @@
 
 	printk("trying to attach the client\n");
 	/* Tell the i2c layer a new client has arrived */
-	if (err = i2c_attach_client(new_client))
+	err = i2c_attach_client(new_client);
+	if (err)
 		goto ERROR3;
 
     /* This function can write default values to the client registers, if
@@ -184,7 +184,8 @@
 	int err;
 
 	/* Try to detach the client from i2c space */
-	if (err = i2c_detach_client(client)) {
+	err = i2c_detach_client(client);
+	if (err) {
 		DPRINTK("i2c-ov96xx.o: Client deregistration failed, client not detached.\n");
 		return err;
 	}
@@ -211,6 +212,17 @@
 	.detach_client  = &i2c_ov96xx_detach_client,
 };
 
+void i2c_ov96xx_cleanup(void)
+{
+	if (ov96xx_initialized == 1) {
+		if (i2c_del_driver(&ov96xx_i2c_driver)) {
+			DPRINTK("i2c-ov96xx: Driver registration failed, module not removed.\n");
+			return;
+		}
+		ov96xx_initialized --;
+	}
+}
+
 int i2c_ov96xx_init(void)
 {
 	int res;
@@ -219,8 +231,9 @@
 		return 0;
 
 	DPRINTK("I2C: driver for device ov96xx.\n");
-
-	if (res = i2c_add_driver(&ov96xx_i2c_driver)) {
+	
+	res = i2c_add_driver(&ov96xx_i2c_driver);
+	if (res) {
 		DPRINTK("i2c-ov96xx: Driver registration failed, module not inserted.\n");
 		i2c_ov96xx_cleanup();
 		return res;
@@ -234,17 +247,6 @@
 	return 0;
 }
 
-void i2c_ov96xx_cleanup(void)
-{
-	if (ov96xx_initialized == 1) {
-		if (i2c_del_driver(&ov96xx_i2c_driver)) {
-			DPRINTK("i2c-ov96xx: Driver registration failed, module not removed.\n");
-			return;
-		}
-		ov96xx_initialized --;
-	}
-}
-
 EXPORT_SYMBOL(i2c_ov96xx_read);
 EXPORT_SYMBOL(i2c_ov96xx_write);
 EXPORT_SYMBOL(i2c_ov96xx_init);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <mar...@us...> - 2007-09-21 00:40:35
      
     | 
| Revision: 1333
          http://hackndev.svn.sourceforge.net/hackndev/?rev=1333&view=rev
Author:   marex_z71
Date:     2007-09-20 17:40:32 -0700 (Thu, 20 Sep 2007)
Log Message:
-----------
PalmTX: migrate to palmlcd_border
Modified Paths:
--------------
    linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld.c
    linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/Kconfig
    linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/Makefile
    linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/palmtx.c
Removed Paths:
-------------
    linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/palmtx_border.c
Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld.c
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld.c	2007-09-21 00:12:29 UTC (rev 1332)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld.c	2007-09-21 00:40:32 UTC (rev 1333)
@@ -223,7 +223,7 @@
 
 struct platform_device palmld_border = {
 	.name	= "palmlcd-border",
-	.id	= 0,
+	.id	= -1,
 	.dev	= {
 		.platform_data = &border_machinfo,
 	},
Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/Kconfig
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/Kconfig	2007-09-21 00:12:29 UTC (rev 1332)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/Kconfig	2007-09-21 00:40:32 UTC (rev 1333)
@@ -33,9 +33,3 @@
         depends on MACH_XSCALE_PALMTX
         help
             This driver handles the CF/PCCARD/PCMCIA bus.
-
-config PALMTX_BORDER
-        tristate "Palm TX Display border switch"
-	depends on MACH_XSCALE_PALMTX
-	help
-            Enable support for turning LCD border on/off
Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/Makefile
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/Makefile	2007-09-21 00:12:29 UTC (rev 1332)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/Makefile	2007-09-21 00:40:32 UTC (rev 1333)
@@ -6,4 +6,3 @@
 obj-$(CONFIG_PALMTX_BATTERY)		+= palmtx_battery.o
 obj-$(CONFIG_PALMTX_PM)			+= palmtx_pm.o
 obj-$(CONFIG_PALMTX_PCMCIA)		+= palmtx_pcmcia.o
-obj-$(CONFIG_PALMTX_BORDER)		+= palmtx_border.o
Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/palmtx.c
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/palmtx.c	2007-09-21 00:12:29 UTC (rev 1332)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/palmtx.c	2007-09-21 00:40:32 UTC (rev 1333)
@@ -45,6 +45,7 @@
 #include <asm/arch/palmtx-init.h>
 #include <asm/arch/palmtx-gpio.h>
 #include <asm/arch/pxa2xx_udc_gpio.h>
+#include <asm/arch/palmlcd-border.h>
 
 #include "../generic.h"
 
@@ -154,12 +155,16 @@
 /**************
  * LCD Border *
  **************/
+static struct palmlcd_border_pdata border_machinfo = {
+	.select_gpio	= GPIO_NR_PALMTX_BORDER_SELECT,
+	.switch_gpio	= GPIO_NR_PALMTX_BORDER_SWITCH,
+};
 
 struct platform_device palmtx_border = {
-        .name	= "palmtx-border",
+        .name	= "palmlcd-border",
         .id	= -1,
         .dev	= {
-        	.platform_data	= NULL,
+        	.platform_data	= &border_machinfo,
         },
 };
 
Deleted: linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/palmtx_border.c
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/palmtx_border.c	2007-09-21 00:12:29 UTC (rev 1332)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/palmtx_border.c	2007-09-21 00:40:32 UTC (rev 1333)
@@ -1,100 +0,0 @@
-/*
- *  Palm T|X LCD Border switch
- *
- *  Copyright (C) 2007 Marek Vasut <mar...@gm...>
- *
- * 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.
- */
-
-#include <linux/module.h>
-#include <linux/kernel.h>
-#include <linux/platform_device.h>
-#include <linux/delay.h>
-
-#include <asm/arch/hardware.h>
-#include <asm/arch/palmtx-gpio.h>
-
-static ssize_t palmtx_border_write(struct device *dev, struct device_attribute *attr,
-				   const char *buf, size_t count)
-{
-	signed long state = simple_strtol(buf, NULL, 10);
-	
-	if ( state >= 1 )
-	    SET_PALMTX_GPIO(BORDER_SELECT, 1);
-	else
-	    SET_PALMTX_GPIO(BORDER_SELECT, 0);
-
-	msleep(50);
-	SET_PALMTX_GPIO(BORDER_SWITCH, 1);
-
-	if ((state == 1) || (state == 0)) /* default - switch border on/off */
-	    msleep(200);
-	else { /* hidden functionality - colored border */
-	    if (state >= 0)
-		msleep(state);
-	    else
-		msleep(-state);
-	}
-
-	SET_PALMTX_GPIO(BORDER_SWITCH, 0);
-
-	return count;
-}
-
-static ssize_t palmtx_border_read(struct device *dev, 
-				  struct device_attribute *attr,
-				  char *buf)
-{
-	return strlcpy(buf, GET_PALMTX_GPIO(BORDER_SELECT) ? "1\n" : "0\n", 3);
-}
-
-static DEVICE_ATTR(border_power, 0644, palmtx_border_read, palmtx_border_write);
-
-static struct attribute *palmtx_border_attrs[] = {
-	&dev_attr_border_power.attr,
-	NULL
-};
-
-static struct attribute_group palmtx_border_attr_group = {
-	.attrs	= palmtx_border_attrs,
-};
-
-static int __devinit palmtx_border_probe(struct platform_device *pdev)
-{
-	return sysfs_create_group(&pdev->dev.kobj, &palmtx_border_attr_group);
-}
-
-static int palmtx_border_remove(struct platform_device *pdev)
-{
-	sysfs_remove_group(&pdev->dev.kobj, &palmtx_border_attr_group);
-	return 0;
-}
-
-static struct platform_driver palmtx_border_driver = {
-	.probe 		= palmtx_border_probe,
-	.remove		= palmtx_border_remove,
-	.suspend 	= NULL,
-	.resume		= NULL,
-	.driver = {
-		.name 	= "palmtx-border",
-	}
-};
-
-static int __init palmtx_border_init(void)
-{
-	return platform_driver_register(&palmtx_border_driver);
-}
-
-static void palmtx_border_exit(void)
-{
-	platform_driver_unregister(&palmtx_border_driver);
-}
-
-module_init(palmtx_border_init);
-module_exit(palmtx_border_exit);
-
-MODULE_LICENSE("GPL");
-MODULE_AUTHOR("Marek Vasut <mar...@gm...>");
-MODULE_DESCRIPTION("Palm T|X Border switch");
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <mar...@us...> - 2007-09-21 00:12:32
      
     | 
| Revision: 1332
          http://hackndev.svn.sourceforge.net/hackndev/?rev=1332&view=rev
Author:   marex_z71
Date:     2007-09-20 17:12:29 -0700 (Thu, 20 Sep 2007)
Log Message:
-----------
PalmLD: add general lcd border driver and migrate palmld to it
Modified Paths:
--------------
    linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/Kconfig
    linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/Makefile
    linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld.c
    linux4palm/linux/trunk/drivers/misc/Kconfig
    linux4palm/linux/trunk/drivers/misc/Makefile
Added Paths:
-----------
    linux4palm/linux/trunk/drivers/misc/palmlcd_border.c
    linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmlcd-border.h
Removed Paths:
-------------
    linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld_border.c
Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/Kconfig
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/Kconfig	2007-09-17 20:13:33 UTC (rev 1331)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/Kconfig	2007-09-21 00:12:29 UTC (rev 1332)
@@ -34,9 +34,3 @@
 	default y if MACH_XSCALE_PALMLD
 	help
 		Enable support for suspend/resume the PalmOne LifeDrive PDA.
-
-config PALMLD_BORDER
-	tristate "Palm LifeDrive Display border switch"
-	depends on MACH_XSCALE_PALMLD
-	help
-		Enable support for turning LCD border on/off
Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/Makefile
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/Makefile	2007-09-17 20:13:33 UTC (rev 1331)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/Makefile	2007-09-21 00:12:29 UTC (rev 1332)
@@ -7,4 +7,3 @@
 obj-$(CONFIG_PALMLD_IDE)		+= palmld_ide.o
 obj-$(CONFIG_PALMLD_PM)			+= palmld_pm.o
 obj-$(CONFIG_PALMLD_BATTERY)		+= palmld_battery.o
-obj-$(CONFIG_PALMLD_BORDER)		+= palmld_border.o
Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld.c
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld.c	2007-09-17 20:13:33 UTC (rev 1331)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld.c	2007-09-21 00:12:29 UTC (rev 1332)
@@ -34,6 +34,7 @@
 #include <asm/arch/pxa27x_keyboard.h>
 #include <asm/arch/pxa-pm_ll.h>
 #include <asm/arch/serial.h>
+#include <asm/arch/palmlcd-border.h>
 
 #include <sound/driver.h>
 #include <sound/core.h>
@@ -215,9 +216,17 @@
 /*********************************************************
  * LCD Border
  *********************************************************/
+static struct palmlcd_border_pdata border_machinfo = {
+    .select_gpio	= GPIO_NR_PALMLD_BORDER_SELECT,
+    .switch_gpio	= GPIO_NR_PALMLD_BORDER_SWITCH,
+};
+
 struct platform_device palmld_border = {
-	.name = "palmld-border",
-	.id = -1,
+	.name	= "palmlcd-border",
+	.id	= 0,
+	.dev	= {
+		.platform_data = &border_machinfo,
+	},
 };
 
 /*********************************************************
Deleted: linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld_border.c
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld_border.c	2007-09-17 20:13:33 UTC (rev 1331)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld_border.c	2007-09-21 00:12:29 UTC (rev 1332)
@@ -1,100 +0,0 @@
-/*
- *  Palm LifeDrive LCD Border switch
- *
- *  Copyright (C) 2007 Marek Vasut <mar...@gm...>
- *
- * 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.
- */
-
-#include <linux/module.h>
-#include <linux/kernel.h>
-#include <linux/platform_device.h>
-#include <linux/delay.h>
-
-#include <asm/arch/hardware.h>
-#include <asm/arch/palmld-gpio.h>
-
-static ssize_t palmld_border_write(struct device *dev, struct device_attribute *attr,
-				   const char *buf, size_t count)
-{
-	signed long state = simple_strtol(buf, NULL, 10);
-	
-	if ( state >= 1 )
-	    SET_PALMLD_GPIO(BORDER_SELECT, 1);
-	else
-	    SET_PALMLD_GPIO(BORDER_SELECT, 0);
-
-	msleep(50);
-	SET_PALMLD_GPIO(BORDER_SWITCH, 1);
-
-	if ((state == 1) || (state == 0)) /* default - switch border on/off */
-	    msleep(200);
-	else { /* hidden functionality - colored border */
-	    if (state >= 0)
-		msleep(state);
-	    else
-		msleep(-state);
-	}
-
-	SET_PALMLD_GPIO(BORDER_SWITCH, 0);
-
-	return count;
-}
-
-static ssize_t palmld_border_read(struct device *dev, 
-				  struct device_attribute *attr,
-				  char *buf)
-{
-	return strlcpy(buf, GET_PALMLD_GPIO(BORDER_SELECT) ? "1\n" : "0\n", 3);
-}
-
-static DEVICE_ATTR(border_power, 0644, palmld_border_read, palmld_border_write);
-
-static struct attribute *palmld_border_attrs[] = {
-	&dev_attr_border_power.attr,
-	NULL
-};
-
-static struct attribute_group palmld_border_attr_group = {
-	.attrs	= palmld_border_attrs,
-};
-
-static int __devinit palmld_border_probe(struct platform_device *pdev)
-{
-	return sysfs_create_group(&pdev->dev.kobj, &palmld_border_attr_group);
-}
-
-static int palmld_border_remove(struct platform_device *pdev)
-{
-	sysfs_remove_group(&pdev->dev.kobj, &palmld_border_attr_group);
-	return 0;
-}
-
-static struct platform_driver palmld_border_driver = {
-	.probe 		= palmld_border_probe,
-	.remove		= palmld_border_remove,
-	.suspend 	= NULL,
-	.resume		= NULL,
-	.driver = {
-		.name 	= "palmld-border",
-	}
-};
-
-static int __init palmld_border_init(void)
-{
-	return platform_driver_register(&palmld_border_driver);
-}
-
-static void palmld_border_exit(void)
-{
-	platform_driver_unregister(&palmld_border_driver);
-}
-
-module_init(palmld_border_init);
-module_exit(palmld_border_exit);
-
-MODULE_LICENSE("GPL");
-MODULE_AUTHOR("Marek Vasut <mar...@gm...>");
-MODULE_DESCRIPTION("Palm LifeDrive Border switch");
Modified: linux4palm/linux/trunk/drivers/misc/Kconfig
===================================================================
--- linux4palm/linux/trunk/drivers/misc/Kconfig	2007-09-17 20:13:33 UTC (rev 1331)
+++ linux4palm/linux/trunk/drivers/misc/Kconfig	2007-09-21 00:12:29 UTC (rev 1332)
@@ -48,6 +48,12 @@
 	help
 	  Gpioed-ng: only for debuging and testing!
 
+config PALMLCD_BORDER
+	tristate "Palm LCD Display border switch"
+	depends on ARCH_PXA
+	help
+	    Enable support for turning LCD border on/off
+
 menu "Multimedia Capabilities Port drivers"
 
 config MCP_UCB1x00_AUDIO
Modified: linux4palm/linux/trunk/drivers/misc/Makefile
===================================================================
--- linux4palm/linux/trunk/drivers/misc/Makefile	2007-09-17 20:13:33 UTC (rev 1331)
+++ linux4palm/linux/trunk/drivers/misc/Makefile	2007-09-21 00:12:29 UTC (rev 1332)
@@ -17,6 +17,7 @@
 obj-$(CONFIG_BATTCHARGE_MONITOR)		+= battchargemon.o
 obj-$(CONFIG_GPIOED)				+= gpioed.o
 obj-$(CONFIG_GPIOEDNG)				+= gpioed-ng.o
+obj-$(CONFIG_PALMLCD_BORDER)			+= palmlcd_border.o
 
 obj-$(CONFIG_MCP_UCB1x00_AUDIO)			+= ucb1x00-audio.o
 obj-$(CONFIG_MCP_UCB1x00_SIMPAD_SWITCHES)	+= simpad-switches.o
Added: linux4palm/linux/trunk/drivers/misc/palmlcd_border.c
===================================================================
--- linux4palm/linux/trunk/drivers/misc/palmlcd_border.c	                        (rev 0)
+++ linux4palm/linux/trunk/drivers/misc/palmlcd_border.c	2007-09-21 00:12:29 UTC (rev 1332)
@@ -0,0 +1,107 @@
+/*
+ *  Palm LCD Border switch
+ *
+ *  Copyright (C) 2007 Marek Vasut <mar...@gm...>
+ *
+ * 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.
+ */
+
+#include <linux/module.h>
+#include <linux/kernel.h>
+#include <linux/platform_device.h>
+#include <linux/delay.h>
+
+#include <asm/arch/palmlcd-border.h>
+#include <asm/arch/gpio.h>
+
+struct palmlcd_border_pdata *pdata;
+
+static ssize_t palmlcd_border_write(struct device *dev, struct device_attribute *attr,
+				   const char *buf, size_t count)
+{
+	signed long state = simple_strtol(buf, NULL, 10);
+	
+	if ( state >= 1 )
+	    __gpio_set_value(pdata->select_gpio, 1);
+	else
+	    __gpio_set_value(pdata->select_gpio, 0);
+
+	msleep(50);
+	__gpio_set_value(pdata->switch_gpio, 1);
+
+	if ((state == 1) || (state == 0)) /* default - switch border on/off */
+	    msleep(200);
+	else { /* hidden functionality - colored border */
+	    if (state >= 0)
+		msleep(state);
+	    else
+		msleep(-state);
+	}
+
+	__gpio_set_value(pdata->switch_gpio, 0);
+
+	return count;
+}
+
+static ssize_t palmlcd_border_read(struct device *dev, 
+				  struct device_attribute *attr,
+				  char *buf)
+{
+	return strlcpy(buf, __gpio_get_value(pdata->select_gpio) ? "1\n" : "0\n", 3);
+}
+
+static DEVICE_ATTR(border_power, 0644, palmlcd_border_read, palmlcd_border_write);
+
+static struct attribute *palmlcd_border_attrs[] = {
+	&dev_attr_border_power.attr,
+	NULL
+};
+
+static struct attribute_group palmlcd_border_attr_group = {
+	.attrs	= palmlcd_border_attrs,
+};
+
+static int __devinit palmlcd_border_probe(struct platform_device *pdev)
+{
+	if(!pdev->dev.platform_data)
+	    return -ENODEV;
+
+	pdata = pdev->dev.platform_data;
+
+	return sysfs_create_group(&pdev->dev.kobj, &palmlcd_border_attr_group);
+}
+
+static int palmlcd_border_remove(struct platform_device *pdev)
+{
+	sysfs_remove_group(&pdev->dev.kobj, &palmlcd_border_attr_group);
+	return 0;
+}
+
+static struct platform_driver palmlcd_border_driver = {
+	.probe 		= palmlcd_border_probe,
+	.remove		= palmlcd_border_remove,
+	.suspend 	= NULL,
+	.resume		= NULL,
+	.driver = {
+		.name 	= "palmlcd-border",
+	}
+};
+
+static int __init palmlcd_border_init(void)
+{
+	return platform_driver_register(&palmlcd_border_driver);
+}
+
+static void palmlcd_border_exit(void)
+{
+	platform_driver_unregister(&palmlcd_border_driver);
+}
+
+module_init(palmlcd_border_init);
+module_exit(palmlcd_border_exit);
+
+MODULE_LICENSE("GPL");
+MODULE_AUTHOR("Marek Vasut <mar...@gm...>");
+MODULE_DESCRIPTION("Palm LCD Border switch");
Added: linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmlcd-border.h
===================================================================
--- linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmlcd-border.h	                        (rev 0)
+++ linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmlcd-border.h	2007-09-21 00:12:29 UTC (rev 1332)
@@ -0,0 +1,8 @@
+/*
+ * Palm LCD Border info structure
+ */
+
+struct palmlcd_border_pdata {
+	unsigned char select_gpio;
+	unsigned char switch_gpio;
+};
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <hap...@us...> - 2007-09-17 20:13:36
      
     | 
| Revision: 1331
          http://hackndev.svn.sourceforge.net/hackndev/?rev=1331&view=rev
Author:   happy-slapin
Date:     2007-09-17 13:13:33 -0700 (Mon, 17 Sep 2007)
Log Message:
-----------
cleanup: remove unimportant changes to hh.org-derived files
Modified Paths:
--------------
    linux4palm/linux/branches/cleanup-branch-never-commit/arch/arm/tools/mach-types
Added Paths:
-----------
    linux4palm/linux/branches/cleanup-branch-never-commit/drivers/mfd/htc-bbkeys.c
    linux4palm/linux/branches/cleanup-branch-never-commit/usr/.gitignore
Removed Paths:
-------------
    linux4palm/linux/branches/cleanup-branch-never-commit/drivers/leds/leds-magician.c
Modified: linux4palm/linux/branches/cleanup-branch-never-commit/arch/arm/tools/mach-types
===================================================================
--- linux4palm/linux/branches/cleanup-branch-never-commit/arch/arm/tools/mach-types	2007-09-17 19:54:28 UTC (rev 1330)
+++ linux4palm/linux/branches/cleanup-branch-never-commit/arch/arm/tools/mach-types	2007-09-17 20:13:33 UTC (rev 1331)
@@ -12,7 +12,7 @@
 #
 #   http://www.arm.linux.org.uk/developer/machines/?action=new
 #
-# Last update: Wed Aug 29 03:11:21 2007
+# Last update: Mon Mar 19 13:59:12 2007
 #
 # machine_is_xxx	CONFIG_xxxx		MACH_TYPE_xxx		number
 #
@@ -217,7 +217,8 @@
 ceiva			ARCH_CEIVA		CEIVA			200
 fret			SA1100_FRET		FRET			201
 emailphone		SA1100_EMAILPHONE	EMAILPHONE		202
-h3900			ARCH_H3900		H3900			203
+#h3900			ARCH_H3900		H3900			203
+h3900			MACH_H3900		H3900			203
 pxa1			ARCH_PXA1		PXA1			204
 koan369			SA1100_KOAN369		KOAN369			205
 cogent			ARCH_COGENT		COGENT			206
@@ -266,7 +267,7 @@
 wismo			SA1100_WISMO		WISMO			249
 ezlinx			ARCH_EZLINX		EZLINX			250
 at91rm9200		ARCH_AT91RM9200		AT91RM9200		251
-adtech_orion		ARCH_ADTECH_ORION	ADTECH_ORION		252
+orion			ARCH_ORION		ORION			252
 neptune			ARCH_NEPTUNE		NEPTUNE			253
 hackkit			SA1100_HACKKIT		HACKKIT			254
 pxa_wins30		ARCH_PXA_WINS30		PXA_WINS30		255
@@ -353,7 +354,7 @@
 icarus			SA1100_ICARUS		ICARUS			336
 h1900			ARCH_H1900		H1900			337
 gemini			SA1100_GEMINI		GEMINI			338
-axim			ARCH_AXIM		AXIM			339
+aximx5			ARCH_AXIMX5		AXIMX5			339
 audiotron		ARCH_AUDIOTRON		AUDIOTRON		340
 h2200			ARCH_H2200		H2200			341
 loox600			ARCH_LOOX600		LOOX600			342
@@ -1148,7 +1149,7 @@
 rema			MACH_REMA		REMA			1135
 bps1000			MACH_BPS1000		BPS1000			1136
 hw90350			MACH_HW90350		HW90350			1137
-omap_3430sdp		MACH_OMAP_3430SDP	OMAP_3430SDP		1138
+omap_sdp3430		MACH_OMAP_SDP3430	OMAP_SDP3430		1138
 bluetouch		MACH_BLUETOUCH		BLUETOUCH		1139
 vstms			MACH_VSTMS		VSTMS			1140
 xsbase270		MACH_XSBASE270		XSBASE270		1141
@@ -1299,7 +1300,7 @@
 h4300			MACH_H4300		H4300			1291
 goramo_mlr		MACH_GORAMO_MLR		GORAMO_MLR		1292
 mxc30020evb		MACH_MXC30020EVB	MXC30020EVB		1293
-adsbitsyg5		MACH_ADSBITSIMX		ADSBITSIMX		1294
+adsbitsimx		MACH_ADSBITSIMX		ADSBITSIMX		1294
 adsportalplus		MACH_ADSPORTALPLUS	ADSPORTALPLUS		1295
 mmsp2plus		MACH_MMSP2PLUS		MMSP2PLUS		1296
 em_x270			MACH_EM_X270		EM_X270			1297
@@ -1473,3 +1474,10 @@
 add_wsc2		MACH_ADD_WSC2		ADD_WSC2		1465
 add_medinet		MACH_ADD_MEDINET	ADD_MEDINET		1466
 bboard			MACH_BBOARD		BBOARD			1467
+cambria			MACH_CAMBRIA		CAMBRIA			1468
+mt7xxx			MACH_MT7XXX		MT7XXX			1469
+matrix512		MACH_MATRIX512		MATRIX512		1470
+matrix522		MACH_MATRIX522		MATRIX522		1471
+ipac5010		MACH_IPAC5010		IPAC5010		1472
+sakura			MACH_SAKURA		SAKURA			1473
+grocx			MACH_GROCX		GROCX			1474
Deleted: linux4palm/linux/branches/cleanup-branch-never-commit/drivers/leds/leds-magician.c
===================================================================
--- linux4palm/linux/branches/cleanup-branch-never-commit/drivers/leds/leds-magician.c	2007-09-17 19:54:28 UTC (rev 1330)
+++ linux4palm/linux/branches/cleanup-branch-never-commit/drivers/leds/leds-magician.c	2007-09-17 20:13:33 UTC (rev 1331)
@@ -1,116 +0,0 @@
-/*
- * HTC Magician GPIO LED driver
- *
- * Copyright (c) 2006 Philipp Zabel <phi...@gm...>
- *
- * This file is subject to the terms and conditions of the GNU General Public
- * License.  See the file COPYING in the main directory of this archive for
- * more details.
- */
-
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/platform_device.h>
-#include <linux/leds.h>
-
-#include <asm/io.h>
-#include <asm/gpio.h>
-
-#include <asm/arch/magician.h>
-
-static void magician_led_keys_set(struct led_classdev *led_cdev,
-					enum led_brightness value)
-{
-	gpio_set_value(GPIO103_MAGICIAN_LED_KP, value);
-}
-
-static void magician_led_vibra_set(struct led_classdev *led_cdev,
-					enum led_brightness value)
-{
-	gpio_set_value(GPIO22_MAGICIAN_VIBRA_EN, value);
-}
-
-static struct led_classdev magician_keys_led = {
-	.name			= "magician:keys",
-	.default_trigger	= "backlight",
-	.brightness_set		= magician_led_keys_set,
-};
-
-static struct led_classdev magician_vibra_led = {
-	.name			= "magician:vibra",
-	.default_trigger	= "none",
-	.brightness_set		= magician_led_vibra_set,
-};
-
-#ifdef CONFIG_PM
-static int magician_led_suspend(struct platform_device *dev, pm_message_t state)
-{
-	led_classdev_suspend(&magician_keys_led);
-	led_classdev_suspend(&magician_vibra_led);
-
-	return 0;
-}
-
-static int magician_led_resume(struct platform_device *dev)
-{
-	int i;
-
-	led_classdev_resume(&magician_keys_led);
-	led_classdev_resume(&magician_vibra_led);
-
-	return 0;
-}
-#else
-#define magician_led_suspend NULL
-#define magician_led_resume NULL
-#endif
-
-static int magician_led_probe(struct platform_device *pdev)
-{
-	int ret;
-
-	ret = led_classdev_register(&pdev->dev, &magician_keys_led);
-	if (ret < 0)
-		return ret;
-
-	ret = led_classdev_register(&pdev->dev, &magician_vibra_led);
-	if (ret < 0)
-		led_classdev_unregister(&magician_keys_led);
-
-	return ret;
-}
-
-static int magician_led_remove(struct platform_device *pdev)
-{
-	led_classdev_unregister(&magician_vibra_led);
-	led_classdev_unregister(&magician_keys_led);
-
-	return 0;
-}
-
-static struct platform_driver magician_led_driver = {
-	.probe		= magician_led_probe,
-	.remove		= magician_led_remove,
-	.suspend	= magician_led_suspend,
-	.resume		= magician_led_resume,
-	.driver		= {
-		.name		= "magician-led",
-	},
-};
-
-static int __init magician_led_init (void)
-{
-	return platform_driver_register(&magician_led_driver);
-}
-
-static void __exit magician_led_exit (void)
-{
- 	platform_driver_unregister(&magician_led_driver);
-}
-
-module_init (magician_led_init);
-module_exit (magician_led_exit);
-
-MODULE_AUTHOR("Philipp Zabel <phi...@gm...>");
-MODULE_DESCRIPTION("HTC Magician LED driver");
-MODULE_LICENSE("GPL");
Added: linux4palm/linux/branches/cleanup-branch-never-commit/drivers/mfd/htc-bbkeys.c
===================================================================
--- linux4palm/linux/branches/cleanup-branch-never-commit/drivers/mfd/htc-bbkeys.c	                        (rev 0)
+++ linux4palm/linux/branches/cleanup-branch-never-commit/drivers/mfd/htc-bbkeys.c	2007-09-17 20:13:33 UTC (rev 1331)
@@ -0,0 +1,429 @@
+/*
+ * Support for the "mysterious" micro-controller that does "bit
+ * banging" on a pair of gpio pins.  This is known to be present on
+ * HTC Apache and HTC Hermes phones.  This controller controls the lcd
+ * power, the front keypad, and front LEDs.
+ *
+ * (c) Copyright 2007 Kevin O'Connor <ke...@ko...>
+ *
+ * This file may be distributed under the terms of the GNU GPL license.
+ */
+
+#include <linux/kernel.h>
+#include <linux/platform_device.h> /* struct platform_device */
+#include <linux/interrupt.h> /* irqreturn_t */
+#include <linux/input.h> /* input_report_key */
+#include <linux/spinlock.h> /* spinlock_t */
+
+#include <asm/gpio.h> /* gpio_set_value */
+#include <linux/mfd/htc-bbkeys.h>
+
+/* Some HTC phones have a device attached to gpio pins that appears to
+ * follow the i2c system with some minor deviations.  It uses a 4bit
+ * register number instead of a 7 bit device-id address. */
+
+#define dprintf1(fmt, args...) printk(KERN_DEBUG fmt "\n" , ##args)
+#define dprintf(fmt, args...)
+
+struct bbkeys_info {
+	spinlock_t lock;
+	int sda_gpio, scl_gpio;
+	int irq;
+	struct input_dev *input;
+	u8 outcache[8];
+};
+
+
+/****************************************************************
+ * Chip register access
+ ****************************************************************/
+
+/* Wrappers around gpio functions */
+static inline int get_sda(struct bbkeys_info *bb)
+{
+	return gpio_get_value(bb->sda_gpio);
+}
+static inline void set_sda(struct bbkeys_info *bb, int value)
+{
+	gpio_set_value(bb->sda_gpio, value);
+}
+static inline void set_scl(struct bbkeys_info *bb, int value)
+{
+	gpio_set_value(bb->scl_gpio, value);
+}
+static inline void set_sda_input(struct bbkeys_info *bb)
+{
+	gpio_direction_input(bb->sda_gpio);
+}
+static inline void set_sda_output(struct bbkeys_info *bb)
+{
+	gpio_direction_output(bb->sda_gpio);
+}
+
+/* Read 'count' bits from SDA pin.  The caller must ensure the SDA pin
+ * is set to input mode before calling.  The SCL pin must be low. */
+static inline u32 read_bits(struct bbkeys_info *bb, int count)
+{
+	u32 data = 0;
+	int i = count;
+
+	for (; i>0; i--) {
+		data <<= 1;
+
+		set_scl(bb, 1);
+
+		if (get_sda(bb))
+			data |= 1;
+		dprintf(2, "Read bit of %d", data & 1);
+
+		set_scl(bb, 0);
+	}
+	dprintf(1, "Read %d bits: 0x%08x", count, data);
+	return data;
+}
+
+/* Write 'count' bits to SDA pin.  The caller must ensure the SDA pin
+ * is set to output mode before calling.  The SCL pin must be low. */
+static inline void write_bits(struct bbkeys_info *bb, u32 data, int count)
+{
+	u32 bit = 1<<(count-1);
+	dprintf(1, "Writing %d bits: 0x%08x", count, data);
+
+	for (; count>0; count--) {
+		set_sda(bb, data & bit);
+		dprintf(2, "Write bit of %d", !!(data & bit));
+
+		set_scl(bb, 1);
+		set_scl(bb, 0);
+
+		data <<= 1;
+	}
+}
+
+/* Init the gpio lines and send a stop followed by a start. */
+static inline void stopstart(struct bbkeys_info *bb)
+{
+	dprintf(1, "Stop Start");
+
+	/* Init lines */
+	set_sda_output(bb);
+	set_scl(bb, 0);
+	set_sda(bb, 0);
+
+	/* Send stop */
+	set_scl(bb, 1);
+	set_sda(bb, 1);
+
+	/* Send start */
+	set_sda(bb, 0);
+	set_scl(bb, 0);
+}
+
+/* Read a register from the bit-banging interface. */
+static u32 __bbkeys_read(struct bbkeys_info *bb, u32 reg)
+{
+	u32 val;
+	stopstart(bb);
+
+	/* Set read indicator as low order bit. */
+	val = reg << 1;
+	val |= 1;
+
+	/* Send register */
+	write_bits(bb, val, 5);
+
+	/* Get ack. */
+	set_sda_input(bb);
+	val = read_bits(bb, 1);
+	if (! val)
+		goto fail;
+
+	/* Read register value. */
+	val = read_bits(bb, 9);
+	if (!(val & 1))
+		goto fail;
+	val >>= 1;
+
+	return val;
+fail:
+	printk(KERN_WARNING "BBKEYS - Missing ack\n");
+	return 0;
+}
+
+static u32 bbkeys_read(struct bbkeys_info *bb, u32 reg)
+{
+	u32 ret;
+	unsigned long flag;
+	spin_lock_irqsave(&bb->lock, flag);
+	ret = __bbkeys_read(bb, reg);
+	spin_unlock_irqrestore(&bb->lock, flag);
+	return ret;
+}
+
+/* Write a register on the bit-banging interface. */
+static void __bbkeys_write(struct bbkeys_info *bb, u32 reg, u32 data)
+{
+	stopstart(bb);
+
+	/* Set write indicator as low order bit. */
+	reg <<= 1;
+
+	/* Send register */
+	write_bits(bb, reg, 5);
+
+	/* Get ack. */
+	set_sda_input(bb);
+	reg = read_bits(bb, 1);
+	if (! reg)
+		goto fail;
+	set_sda_output(bb);
+
+	/* write register value. */
+	write_bits(bb, data, 8);
+	set_sda_input(bb);
+	reg = read_bits(bb, 1);
+	if (!reg)
+		goto fail;
+	return;
+fail:
+	printk(KERN_WARNING "BBKEYS - Missing ack\n");
+}
+
+static void bbkeys_write(struct bbkeys_info *bb, u32 reg, u32 data)
+{
+	unsigned long flag;
+	spin_lock_irqsave(&bb->lock, flag);
+	__bbkeys_write(bb, reg, data);
+	spin_unlock_irqrestore(&bb->lock, flag);
+}
+
+
+/****************************************************************
+ * Keypad
+ ****************************************************************/
+
+static irqreturn_t bbkeys_isr(int irq, void *dev_id)
+{
+	int i;
+	struct platform_device *pdev = dev_id;
+	struct htc_bbkeys_platform_data *pdata = pdev->dev.platform_data;
+	struct bbkeys_info *bb = platform_get_drvdata(pdev);
+	u32 regs;
+
+	/* Ack the interrupt. */
+	bbkeys_write(bb, pdata->ackreg, 0);
+
+	/* Read the key status registers */
+	regs = ~(bbkeys_read(bb, pdata->key1reg)
+		 | (bbkeys_read(bb, pdata->key2reg) << 8));
+
+	/* Register the state of the keys */
+	for (i = 0; i < BBKEYS_MAXKEY; i++) {
+		int key = pdata->buttons[i];
+		int state = !!(regs & (1<<i));
+		if (key < 0)
+			continue;
+		input_report_key(bb->input, key, state);
+		input_sync(bb->input);
+	}
+
+	return IRQ_HANDLED;
+}
+
+/* Delayed input driver data. */
+static int InputReady;
+static struct platform_device *Early_pdev;
+
+static int key_setup(struct platform_device *pdev)
+{
+	struct bbkeys_info *bb = platform_get_drvdata(pdev);
+	struct htc_bbkeys_platform_data *pdata = pdev->dev.platform_data;
+	struct input_dev *input;
+	struct resource *res;
+	int i, ret;
+
+	if (! InputReady) {
+		printk("Delaying registration of bbkeys input driver\n");
+		Early_pdev = pdev;
+		return 0;
+	}
+
+	/* Find keyboard irq */
+	res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
+	if (!res)
+		return -EINVAL;
+	bb->irq = res->start;
+
+	input = input_allocate_device();
+	if (!input)
+		return -ENOMEM;
+
+	set_bit(EV_KEY, input->evbit);
+
+	input->name = pdev->name;
+	bb->input = input;
+
+	for (i = 0; i < BBKEYS_MAXKEY; i++) {
+		int code = pdata->buttons[i];
+		if (code >= 0)
+			set_bit(code, input->keybit);
+	}
+
+	ret = input_register_device(input);
+	if (ret < 0) {
+		printk(KERN_ERR "Unable to register bbkeys input device\n");
+		goto fail;
+	}
+
+        ret = request_irq(bb->irq, bbkeys_isr
+			  , IRQF_DISABLED | IRQF_TRIGGER_RISING
+			    | IRQF_SAMPLE_RANDOM
+			  , pdev->name, pdev);
+	if (ret)
+		goto fail;
+
+	/* Clear any queued up key events. */
+	bbkeys_write(bb, pdata->ackreg, 0);
+
+	return 0;
+
+fail:
+	input_free_device(input);
+	return ret;
+}
+
+
+/****************************************************************
+ * GPIOs
+ ****************************************************************/
+
+static inline int u8pos(unsigned gpio) {
+	return (gpio & GPIO_BASE_MASK) / 8;
+}
+static inline int u8bit(unsigned gpio) {
+	return 1<<(gpio & (8-1));
+}
+
+/* Check an input pin to see if it is active. */
+static int bbkeys_get(struct device *dev, unsigned gpio)
+{
+	struct bbkeys_info *bb = dev_get_drvdata(dev);
+	u32 readval = bbkeys_read(bb, u8pos(gpio));
+	return !!(readval & u8bit(gpio));
+}
+
+/* Set the direction of an output pin. */
+static void bbkeys_set(struct device *dev, unsigned gpio, int val)
+{
+	struct bbkeys_info *bb = dev_get_drvdata(dev);
+	int pos = u8pos(gpio);
+	unsigned long flag;
+
+	spin_lock_irqsave(&bb->lock, flag);
+	if (val)
+		bb->outcache[pos] |= u8bit(gpio);
+	else
+		bb->outcache[pos] &= ~u8bit(gpio);
+	__bbkeys_write(bb, pos, bb->outcache[pos]);
+	spin_unlock_irqrestore(&bb->lock, flag);
+}
+
+/* Dummy handler - this device doesn't support irqs. */
+static int bbkeys_to_irq(struct device *dev, unsigned gpio_no)
+{
+	return -ENODEV;
+}
+
+
+/****************************************************************
+ * Setup
+ ****************************************************************/
+
+static int bbkeys_probe(struct platform_device *pdev)
+{
+	struct htc_bbkeys_platform_data *pdata = pdev->dev.platform_data;
+	struct bbkeys_info *bb;
+	int ret;
+	struct gpio_ops ops;
+
+	/* Initialize bb data structure. */
+	bb = kzalloc(sizeof(*bb), GFP_KERNEL);
+	if (!bb)
+		return -ENOMEM;
+
+	spin_lock_init(&bb->lock);
+
+	bb->sda_gpio = pdata->sda_gpio;
+	bb->scl_gpio = pdata->scl_gpio;
+
+	platform_set_drvdata(pdev, bb);
+
+	/* Setup input handling */
+	ret = key_setup(pdev);
+	if (ret)
+		goto fail;
+
+	ops.get_value = bbkeys_get;
+	ops.set_value = bbkeys_set;
+	ops.to_irq = bbkeys_to_irq;
+	gpiodev_register(pdata->gpio_base, &pdev->dev, &ops);
+
+	return 0;
+fail:
+	printk(KERN_NOTICE "BBKEYS failed to setup\n");
+	kfree(bb);
+	return ret;
+}
+
+static int bbkeys_remove(struct platform_device *pdev)
+{
+	struct bbkeys_info *bb = platform_get_drvdata(pdev);
+        free_irq(bb->irq, pdev);
+	input_unregister_device(bb->input);
+	kfree(bb);
+	return 0;
+}
+
+static struct platform_driver bbkeys_driver = {
+	.driver = {
+		.name           = "htc-bbkeys",
+	},
+	.probe          = bbkeys_probe,
+	.remove         = bbkeys_remove,
+};
+
+static int __init bbkeys_init(void)
+{
+	return platform_driver_register(&bbkeys_driver);
+}
+
+static void __exit bbkeys_exit(void)
+{
+	platform_driver_unregister(&bbkeys_driver);
+}
+
+/* Ugh.  The input subsystem comes up later in the boot process, but
+ * several devices need the bbkeys gpio driver earlier.  So, if this
+ * driver comes up early, we delay input registration until later in
+ * the boot. */
+static int __init bbkeys_late_init(void)
+{
+	InputReady = 1;
+	if (Early_pdev) {
+		printk("Registering delayed bbkeys input driver\n");
+		key_setup(Early_pdev);
+	}
+	Early_pdev = NULL;
+	return 0;
+}
+
+module_init(bbkeys_late_init)
+#ifdef MODULE
+module_init(bbkeys_init);
+#else   /* start early for dependencies */
+subsys_initcall(bbkeys_init);
+#endif
+module_exit(bbkeys_exit)
+
+MODULE_LICENSE("GPL");
+MODULE_AUTHOR("Kevin O'Connor <ke...@ko...>");
Added: linux4palm/linux/branches/cleanup-branch-never-commit/usr/.gitignore
===================================================================
--- linux4palm/linux/branches/cleanup-branch-never-commit/usr/.gitignore	                        (rev 0)
+++ linux4palm/linux/branches/cleanup-branch-never-commit/usr/.gitignore	2007-09-17 20:13:33 UTC (rev 1331)
@@ -0,0 +1,7 @@
+#
+# Generated files
+#
+gen_init_cpio
+initramfs_data.cpio
+initramfs_data.cpio.gz
+initramfs_list
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <hap...@us...> - 2007-09-17 19:54:42
      
     | 
| Revision: 1330
          http://hackndev.svn.sourceforge.net/hackndev/?rev=1330&view=rev
Author:   happy-slapin
Date:     2007-09-17 12:54:28 -0700 (Mon, 17 Sep 2007)
Log Message:
-----------
cleanup: getting from hh.org
Modified Paths:
--------------
    linux4palm/linux/branches/cleanup-branch-never-commit/arch/arm/configs/htcuniversal_defconfig
    linux4palm/linux/branches/cleanup-branch-never-commit/arch/arm/configs/magician_defconfig
    linux4palm/linux/branches/cleanup-branch-never-commit/drivers/usb/gadget/zero.c
Modified: linux4palm/linux/branches/cleanup-branch-never-commit/arch/arm/configs/htcuniversal_defconfig
===================================================================
--- linux4palm/linux/branches/cleanup-branch-never-commit/arch/arm/configs/htcuniversal_defconfig	2007-09-17 19:41:58 UTC (rev 1329)
+++ linux4palm/linux/branches/cleanup-branch-never-commit/arch/arm/configs/htcuniversal_defconfig	2007-09-17 19:54:28 UTC (rev 1330)
@@ -1,7 +1,7 @@
 #
 # Automatically generated make config: don't edit
-# Linux kernel version: 2.6.21-hh2
-# Wed May 16 19:58:40 2007
+# Linux kernel version: 2.6.21-hh16
+# Sun Sep 16 14:03:47 2007
 #
 CONFIG_ARM=y
 CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -28,20 +28,20 @@
 #
 CONFIG_EXPERIMENTAL=y
 CONFIG_BROKEN_ON_SMP=y
+CONFIG_LOCK_KERNEL=y
 CONFIG_INIT_ENV_ARG_LIMIT=32
 
 #
 # General setup
 #
 CONFIG_LOCALVERSION=""
-# CONFIG_LOCALVERSION_AUTO is not set
+CONFIG_LOCALVERSION_AUTO=y
 CONFIG_SWAP=y
 CONFIG_SYSVIPC=y
 # CONFIG_IPC_NS is not set
 CONFIG_SYSVIPC_SYSCTL=y
-CONFIG_POSIX_MQUEUE=y
-CONFIG_BSD_PROCESS_ACCT=y
-CONFIG_BSD_PROCESS_ACCT_V3=y
+# CONFIG_POSIX_MQUEUE is not set
+# CONFIG_BSD_PROCESS_ACCT is not set
 # CONFIG_TASKSTATS is not set
 # CONFIG_UTS_NS is not set
 # CONFIG_AUDIT is not set
@@ -50,10 +50,10 @@
 CONFIG_SYSFS_DEPRECATED=y
 # CONFIG_RELAY is not set
 # CONFIG_BLK_DEV_INITRD is not set
-# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
 CONFIG_SYSCTL=y
 CONFIG_EMBEDDED=y
-CONFIG_UID16=y
+# CONFIG_UID16 is not set
 CONFIG_SYSCTL_SYSCALL=y
 CONFIG_KALLSYMS=y
 # CONFIG_KALLSYMS_EXTRA_PASS is not set
@@ -96,12 +96,12 @@
 CONFIG_IOSCHED_NOOP=y
 CONFIG_IOSCHED_AS=y
 CONFIG_IOSCHED_DEADLINE=y
-CONFIG_IOSCHED_CFQ=y
-# CONFIG_DEFAULT_AS is not set
+# CONFIG_IOSCHED_CFQ is not set
+CONFIG_DEFAULT_AS=y
 # CONFIG_DEFAULT_DEADLINE is not set
-CONFIG_DEFAULT_CFQ=y
+# CONFIG_DEFAULT_CFQ is not set
 # CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="cfq"
+CONFIG_DEFAULT_IOSCHED="anticipatory"
 
 #
 # System Type
@@ -175,6 +175,10 @@
 # CONFIG_MACH_MAGICIAN is not set
 # CONFIG_MACH_HTCAPACHE is not set
 # CONFIG_MACH_BLUEANGEL is not set
+
+#
+# HTC_HW6X00
+#
 # CONFIG_MACH_HTCBEETLES is not set
 # CONFIG_MACH_HW6900 is not set
 # CONFIG_MACH_HTCATHENA is not set
@@ -187,9 +191,13 @@
 # CONFIG_MACH_XSCALE_PALMLD is not set
 # CONFIG_MACH_T3XSCALE is not set
 # CONFIG_MACH_RECON is not set
+# CONFIG_MACH_GHI270HG is not set
+# CONFIG_MACH_GHI270 is not set
+# CONFIG_MACH_LOOXC550 is not set
 # CONFIG_PXA_SHARPSL is not set
 # CONFIG_MACH_TRIZEPS4 is not set
 CONFIG_PXA27x=y
+# CONFIG_PXA27x_VOLTAGE is not set
 
 #
 # Linux As Bootloader
@@ -211,7 +219,7 @@
 #
 # Processor Features
 #
-# CONFIG_ARM_THUMB is not set
+CONFIG_ARM_THUMB=y
 # CONFIG_CPU_DCACHE_DISABLE is not set
 # CONFIG_OUTER_CACHE is not set
 CONFIG_IWMMXT=y
@@ -229,8 +237,8 @@
 #
 # Kernel Features
 #
-# CONFIG_PREEMPT is not set
-# CONFIG_NO_IDLE_HZ is not set
+CONFIG_PREEMPT=y
+CONFIG_NO_IDLE_HZ=y
 CONFIG_HZ=100
 CONFIG_AEABI=y
 CONFIG_OABI_COMPAT=y
@@ -254,12 +262,26 @@
 CONFIG_ZBOOT_ROM_BSS=0x0
 CONFIG_CMDLINE=""
 # CONFIG_XIP_KERNEL is not set
-# CONFIG_KEXEC is not set
+CONFIG_KEXEC=y
+# CONFIG_TXTOFFSET_DELTA is not set
 
 #
 # CPU Frequency scaling
 #
-# CONFIG_CPU_FREQ is not set
+CONFIG_CPU_FREQ=y
+CONFIG_CPU_FREQ_TABLE=y
+CONFIG_CPU_FREQ_DEBUG=y
+CONFIG_CPU_FREQ_STAT=y
+CONFIG_CPU_FREQ_STAT_DETAILS=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
+CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
+CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
+# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set
+CONFIG_CPU_FREQ_GOV_USERSPACE=y
+# CONFIG_CPU_FREQ_GOV_ONDEMAND is not set
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
+CONFIG_CPU_FREQ_PXA=y
+CONFIG_PXA25x_ALTERNATE_FREQS=y
 
 #
 # Floating point emulation
@@ -284,10 +306,9 @@
 #
 CONFIG_PM=y
 # CONFIG_PM_LEGACY is not set
-CONFIG_PM_DEBUG=y
-# CONFIG_DPM_DEBUG is not set
-# CONFIG_DISABLE_CONSOLE_SUSPEND is not set
-# CONFIG_PM_SYSFS_DEPRECATED is not set
+# CONFIG_PM_DEBUG is not set
+CONFIG_DPM_DEBUG=y
+CONFIG_PM_SYSFS_DEPRECATED=y
 CONFIG_APM_EMULATION=y
 
 #
@@ -302,10 +323,6 @@
 CONFIG_PACKET=y
 CONFIG_PACKET_MMAP=y
 CONFIG_UNIX=y
-CONFIG_XFRM=y
-# CONFIG_XFRM_USER is not set
-# CONFIG_XFRM_SUB_POLICY is not set
-# CONFIG_XFRM_MIGRATE is not set
 # CONFIG_NET_KEY is not set
 CONFIG_INET=y
 CONFIG_IP_MULTICAST=y
@@ -325,9 +342,9 @@
 # CONFIG_INET_IPCOMP is not set
 # CONFIG_INET_XFRM_TUNNEL is not set
 # CONFIG_INET_TUNNEL is not set
-CONFIG_INET_XFRM_MODE_TRANSPORT=y
-CONFIG_INET_XFRM_MODE_TUNNEL=y
-CONFIG_INET_XFRM_MODE_BEET=y
+# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
+# CONFIG_INET_XFRM_MODE_BEET is not set
 # CONFIG_INET_DIAG is not set
 # CONFIG_TCP_CONG_ADVANCED is not set
 CONFIG_TCP_CONG_CUBIC=y
@@ -467,9 +484,81 @@
 #
 # Memory Technology Devices (MTD)
 #
-# CONFIG_MTD is not set
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+CONFIG_MTD_CONCAT=y
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+# CONFIG_MTD_CMDLINE_PARTS is not set
+# CONFIG_MTD_AFS_PARTS is not set
 
 #
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=y
+CONFIG_MTD_BLKDEVS=y
+CONFIG_MTD_BLOCK=y
+# CONFIG_FTL is not set
+# CONFIG_NFTL is not set
+# CONFIG_INFTL is not set
+# CONFIG_RFD_FTL is not set
+# CONFIG_SSFDC is not set
+
+#
+# RAM/ROM/Flash chip drivers
+#
+# CONFIG_MTD_CFI is not set
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_MAP_BANK_WIDTH_1=y
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+CONFIG_MTD_MAP_BANK_WIDTH_4=y
+# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+# CONFIG_MTD_OBSOLETE_CHIPS is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+# CONFIG_MTD_SHARP_SL is not set
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_DATAFLASH is not set
+# CONFIG_MTD_M25P80 is not set
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_PHRAM is not set
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_BLOCK2MTD is not set
+
+#
+# Disk-On-Chip Device Drivers
+#
+# CONFIG_MTD_DOC2000 is not set
+# CONFIG_MTD_DOC2001 is not set
+# CONFIG_MTD_DOC2001PLUS is not set
+
+#
+# NAND Flash Device Drivers
+#
+# CONFIG_MTD_NAND is not set
+
+#
+# OneNAND Flash Device Drivers
+#
+# CONFIG_MTD_ONENAND is not set
+
+#
 # Parallel port support
 #
 # CONFIG_PARPORT is not set
@@ -487,7 +576,10 @@
 # CONFIG_BLK_DEV_CRYPTOLOOP is not set
 # CONFIG_BLK_DEV_NBD is not set
 # CONFIG_BLK_DEV_UB is not set
-# CONFIG_BLK_DEV_RAM is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=4096
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
 # CONFIG_CDROM_PKTCDVD is not set
 # CONFIG_ATA_OVER_ETH is not set
 
@@ -500,45 +592,10 @@
 # SCSI device support
 #
 # CONFIG_RAID_ATTRS is not set
-CONFIG_SCSI=y
-# CONFIG_SCSI_TGT is not set
+# CONFIG_SCSI is not set
 # CONFIG_SCSI_NETLINK is not set
-# CONFIG_SCSI_PROC_FS is not set
 
 #
-# SCSI support type (disk, tape, CD-ROM)
-#
-# CONFIG_BLK_DEV_SD is not set
-# CONFIG_CHR_DEV_ST is not set
-# CONFIG_CHR_DEV_OSST is not set
-# CONFIG_BLK_DEV_SR is not set
-# CONFIG_CHR_DEV_SG is not set
-# CONFIG_CHR_DEV_SCH is not set
-
-#
-# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
-#
-# CONFIG_SCSI_MULTI_LUN is not set
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-# CONFIG_SCSI_SCAN_ASYNC is not set
-
-#
-# SCSI Transports
-#
-# CONFIG_SCSI_SPI_ATTRS is not set
-# CONFIG_SCSI_FC_ATTRS is not set
-# CONFIG_SCSI_ISCSI_ATTRS is not set
-# CONFIG_SCSI_SAS_ATTRS is not set
-# CONFIG_SCSI_SAS_LIBSAS is not set
-
-#
-# SCSI low-level drivers
-#
-# CONFIG_ISCSI_TCP is not set
-# CONFIG_SCSI_DEBUG is not set
-
-#
 # Serial ATA (prod) and Parallel ATA (experimental) drivers
 #
 # CONFIG_ATA is not set
@@ -606,6 +663,7 @@
 CONFIG_ACX=m
 # CONFIG_ACX_USB is not set
 CONFIG_ACX_MEM=y
+# CONFIG_ACX_CS is not set
 CONFIG_ACX_HTCUNIVERSAL=m
 
 #
@@ -647,6 +705,7 @@
 # CONFIG_INPUT_TSDEV is not set
 CONFIG_INPUT_EVDEV=y
 # CONFIG_INPUT_EVBUG is not set
+# CONFIG_INPUT_LED_TRIGGER is not set
 
 #
 # Input Device Drivers
@@ -659,6 +718,7 @@
 # CONFIG_KEYBOARD_NEWTON is not set
 # CONFIG_KEYBOARD_STOWAWAY is not set
 # CONFIG_GPIODEV_KEYS is not set
+# CONFIG_GPIODEV_KEYS2 is not set
 # CONFIG_GPIODEV_DIAGONAL is not set
 CONFIG_KEYBOARD_ASIC3=y
 CONFIG_KEYBOARD_PXA27x=y
@@ -666,7 +726,8 @@
 # CONFIG_INPUT_MOUSE is not set
 # CONFIG_INPUT_JOYSTICK is not set
 # CONFIG_INPUT_TOUCHSCREEN is not set
-# CONFIG_INPUT_MISC is not set
+CONFIG_INPUT_MISC=y
+CONFIG_INPUT_UINPUT=m
 
 #
 # Hardware I/O ports
@@ -760,10 +821,10 @@
 # CONFIG_SENSORS_PCF8591 is not set
 # CONFIG_SENSORS_RTC8564 is not set
 # CONFIG_SENSORS_MAX6875 is not set
-CONFIG_I2C_DEBUG_CORE=y
-CONFIG_I2C_DEBUG_ALGO=y
-CONFIG_I2C_DEBUG_BUS=y
-CONFIG_I2C_DEBUG_CHIP=y
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
 
 #
 # SPI support
@@ -792,7 +853,7 @@
 #
 # CONFIG_W1_MASTER_DS2490 is not set
 # CONFIG_W1_MASTER_DS2482 is not set
-# CONFIG_W1_MASTER_DS1WM is not set
+CONFIG_W1_MASTER_DS1WM=y
 
 #
 # 1-wire Slaves
@@ -800,7 +861,7 @@
 # CONFIG_W1_SLAVE_THERM is not set
 # CONFIG_W1_SLAVE_SMEM is not set
 # CONFIG_W1_SLAVE_DS2433 is not set
-CONFIG_W1_DS2760=y
+CONFIG_W1_SLAVE_DS2760=y
 
 #
 # Hardware Monitoring support
@@ -849,15 +910,11 @@
 # CONFIG_SENSORS_W83627HF is not set
 # CONFIG_SENSORS_W83627EHF is not set
 # CONFIG_HWMON_DEBUG_CHIP is not set
-
-#
-# Hardware Monitoring - external power and batteries
-#
-CONFIG_EXTERNAL_POWER=y
-CONFIG_BATTERY=y
+CONFIG_POWER_SUPPLY=y
+# CONFIG_POWER_SUPPLY_DEBUG is not set
 CONFIG_PDA_POWER=y
-CONFIG_DS2760_BATTERY=y
 CONFIG_APM_POWER=y
+CONFIG_BATTERY_DS2760=y
 
 #
 # L3 serial bus support
@@ -865,21 +922,6 @@
 # CONFIG_L3 is not set
 
 #
-# SoC drivers
-#
-# CONFIG_SOC_MQ11XX is not set
-# CONFIG_SOC_T7L66XB is not set
-# CONFIG_SOC_TC6387XB is not set
-# CONFIG_SOC_TC6393XB is not set
-# CONFIG_SOC_SAMCOP is not set
-# CONFIG_SOC_HAMCOP is not set
-# CONFIG_HTC_ASIC2 is not set
-CONFIG_HTC_ASIC3=y
-CONFIG_HTC_ASIC3_DS1WM=y
-# CONFIG_SOC_TSC2101 is not set
-# CONFIG_SOC_TSC2200 is not set
-
-#
 # Misc devices
 #
 
@@ -889,9 +931,33 @@
 # CONFIG_ADC is not set
 
 #
+# Compaq/iPAQ Drivers
+#
+
+#
+# Compaq/HP iPAQ Drivers
+#
+# CONFIG_IPAQ_SLEEVE is not set
+# CONFIG_SLEEVE_DEBUG is not set
+
+#
 # Multifunction device drivers
 #
 # CONFIG_MFD_SM501 is not set
+# CONFIG_HTC_ASIC2 is not set
+CONFIG_HTC_ASIC3=y
+# CONFIG_HTC_PASIC3 is not set
+# CONFIG_HTC_EGPIO is not set
+# CONFIG_HTC_BBKEYS is not set
+CONFIG_HTC_ASIC3_DS1WM=y
+# CONFIG_SOC_SAMCOP is not set
+# CONFIG_SOC_HAMCOP is not set
+# CONFIG_SOC_MQ11XX is not set
+# CONFIG_SOC_T7L66XB is not set
+# CONFIG_SOC_TC6387XB is not set
+# CONFIG_SOC_TC6393XB is not set
+# CONFIG_SOC_TSC2101 is not set
+# CONFIG_SOC_TSC2200 is not set
 
 #
 # LED devices
@@ -903,15 +969,17 @@
 # LED drivers
 #
 CONFIG_LEDS_ASIC3=y
+# CONFIG_LEDS_GPIO is not set
 
 #
 # LED Triggers
 #
 CONFIG_LEDS_TRIGGERS=y
-# CONFIG_LEDS_TRIGGER_TIMER is not set
-CONFIG_LEDS_TRIGGER_HWTIMER=m
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_HWTIMER=y
+CONFIG_LEDS_TRIGGER_BACKLIGHT=y
 # CONFIG_LEDS_TRIGGER_HEARTBEAT is not set
-# CONFIG_LEDS_TRIGGER_SHARED is not set
+CONFIG_LEDS_TRIGGER_SHARED=y
 
 #
 # Multimedia devices
@@ -976,10 +1044,7 @@
 #
 # Logo configuration
 #
-CONFIG_LOGO=y
-# CONFIG_LOGO_LINUX_MONO is not set
-# CONFIG_LOGO_LINUX_VGA16 is not set
-CONFIG_LOGO_LINUX_CLUT224=y
+# CONFIG_LOGO is not set
 
 #
 # Sound
@@ -1000,10 +1065,8 @@
 # CONFIG_SND_DYNAMIC_MINORS is not set
 CONFIG_SND_SUPPORT_OLD_API=y
 CONFIG_SND_VERBOSE_PROCFS=y
-CONFIG_SND_VERBOSE_PRINTK=y
-CONFIG_SND_DEBUG=y
-CONFIG_SND_DEBUG_DETECT=y
-# CONFIG_SND_PCM_XRUN_DEBUG is not set
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
 
 #
 # Generic devices
@@ -1082,7 +1145,6 @@
 #
 # may also be needed; see USB_STORAGE Help for more information
 #
-# CONFIG_USB_STORAGE is not set
 # CONFIG_USB_LIBUSUAL is not set
 
 #
@@ -1113,7 +1175,6 @@
 # USB Imaging devices
 #
 # CONFIG_USB_MDC800 is not set
-# CONFIG_USB_MICROTEK is not set
 
 #
 # USB Network Adapters
@@ -1123,16 +1184,7 @@
 # CONFIG_USB_PEGASUS is not set
 # CONFIG_USB_RTL8150 is not set
 # CONFIG_USB_USBNET_MII is not set
-CONFIG_USB_USBNET=y
-CONFIG_USB_NET_CDCETHER=y
-# CONFIG_USB_NET_DM9601 is not set
-# CONFIG_USB_NET_GL620A is not set
-# CONFIG_USB_NET_NET1080 is not set
-# CONFIG_USB_NET_PLUSB is not set
-# CONFIG_USB_NET_MCS7830 is not set
-# CONFIG_USB_NET_RNDIS_HOST is not set
-# CONFIG_USB_NET_CDC_SUBSET is not set
-# CONFIG_USB_NET_ZAURUS is not set
+# CONFIG_USB_USBNET is not set
 # CONFIG_USB_MON is not set
 
 #
@@ -1142,7 +1194,44 @@
 #
 # USB Serial Converter support
 #
-# CONFIG_USB_SERIAL is not set
+CONFIG_USB_SERIAL=m
+CONFIG_USB_SERIAL_GENERIC=y
+# CONFIG_USB_SERIAL_AIRCABLE is not set
+# CONFIG_USB_SERIAL_AIRPRIME is not set
+# CONFIG_USB_SERIAL_ARK3116 is not set
+# CONFIG_USB_SERIAL_BELKIN is not set
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
+# CONFIG_USB_SERIAL_CP2101 is not set
+# CONFIG_USB_SERIAL_CYPRESS_M8 is not set
+# CONFIG_USB_SERIAL_EMPEG is not set
+# CONFIG_USB_SERIAL_FTDI_SIO is not set
+# CONFIG_USB_SERIAL_FUNSOFT is not set
+# CONFIG_USB_SERIAL_VISOR is not set
+# CONFIG_USB_SERIAL_IPAQ is not set
+# CONFIG_USB_SERIAL_IR is not set
+# CONFIG_USB_SERIAL_EDGEPORT is not set
+# CONFIG_USB_SERIAL_EDGEPORT_TI is not set
+# CONFIG_USB_SERIAL_GARMIN is not set
+# CONFIG_USB_SERIAL_IPW is not set
+# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
+# CONFIG_USB_SERIAL_KEYSPAN is not set
+# CONFIG_USB_SERIAL_KLSI is not set
+# CONFIG_USB_SERIAL_KOBIL_SCT is not set
+# CONFIG_USB_SERIAL_MCT_U232 is not set
+# CONFIG_USB_SERIAL_MOS7720 is not set
+# CONFIG_USB_SERIAL_MOS7840 is not set
+# CONFIG_USB_SERIAL_NAVMAN is not set
+# CONFIG_USB_SERIAL_PL2303 is not set
+# CONFIG_USB_SERIAL_HP4X is not set
+# CONFIG_USB_SERIAL_SAFE is not set
+# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
+# CONFIG_USB_SERIAL_TI is not set
+# CONFIG_USB_SERIAL_CYBERJACK is not set
+# CONFIG_USB_SERIAL_XIRCOM is not set
+# CONFIG_USB_SERIAL_OPTION is not set
+# CONFIG_USB_SERIAL_OMNINET is not set
+# CONFIG_USB_SERIAL_DEBUG is not set
 
 #
 # USB Miscellaneous drivers
@@ -1192,13 +1281,13 @@
 # CONFIG_USB_GADGET_DUALSPEED is not set
 # CONFIG_USB_ZERO is not set
 CONFIG_USB_ETH=y
-# CONFIG_USB_ETH_RNDIS is not set
+CONFIG_USB_ETH_RNDIS=y
 # CONFIG_USB_GADGETFS is not set
 # CONFIG_USB_FILE_STORAGE is not set
 # CONFIG_USB_G_SERIAL is not set
 # CONFIG_USB_MIDI_GADGET is not set
 # CONFIG_USB_G_CHAR is not set
-# CONFIG_USB_PXA2XX_GPIO is not set
+CONFIG_USB_PXA2XX_GPIO=y
 
 #
 # MMC/SD Card support
@@ -1215,14 +1304,17 @@
 # Real Time Clock
 #
 CONFIG_RTC_LIB=y
-CONFIG_RTC_CLASS=m
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+CONFIG_RTC_DEBUG=y
 
 #
 # RTC interfaces
 #
-CONFIG_RTC_INTF_SYSFS=m
-CONFIG_RTC_INTF_PROC=m
-CONFIG_RTC_INTF_DEV=m
+CONFIG_RTC_INTF_SYSFS=y
+CONFIG_RTC_INTF_PROC=y
+CONFIG_RTC_INTF_DEV=y
 # CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
 
 #
@@ -1235,11 +1327,11 @@
 # CONFIG_RTC_DRV_ISL1208 is not set
 # CONFIG_RTC_DRV_DS1672 is not set
 # CONFIG_RTC_DRV_DS1742 is not set
-CONFIG_RTC_DRV_PCF8563=m
+# CONFIG_RTC_DRV_PCF8563 is not set
 # CONFIG_RTC_DRV_RS5C348 is not set
 # CONFIG_RTC_DRV_RS5C372 is not set
 # CONFIG_RTC_DRV_M48T86 is not set
-CONFIG_RTC_DRV_SA1100=m
+CONFIG_RTC_DRV_SA1100=y
 # CONFIG_RTC_DRV_TEST is not set
 # CONFIG_RTC_DRV_MAX6902 is not set
 # CONFIG_RTC_DRV_V3020 is not set
@@ -1262,14 +1354,14 @@
 # CONFIG_GFS2_FS is not set
 # CONFIG_OCFS2_FS is not set
 # CONFIG_MINIX_FS is not set
-CONFIG_ROMFS_FS=y
+# CONFIG_ROMFS_FS is not set
 CONFIG_INOTIFY=y
 CONFIG_INOTIFY_USER=y
 # CONFIG_QUOTA is not set
 CONFIG_DNOTIFY=y
 # CONFIG_AUTOFS_FS is not set
 # CONFIG_AUTOFS4_FS is not set
-CONFIG_FUSE_FS=m
+# CONFIG_FUSE_FS is not set
 
 #
 # CD-ROM/DVD Filesystems
@@ -1309,7 +1401,19 @@
 # CONFIG_BEFS_FS is not set
 # CONFIG_BFS_FS is not set
 # CONFIG_EFS_FS is not set
-CONFIG_CRAMFS=y
+CONFIG_JFFS2_FS=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+# CONFIG_JFFS2_SUMMARY is not set
+# CONFIG_JFFS2_FS_XATTR is not set
+CONFIG_JFFS2_COMPRESSION_OPTIONS=y
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
+# CONFIG_JFFS2_CMODE_NONE is not set
+CONFIG_JFFS2_CMODE_PRIORITY=y
+# CONFIG_JFFS2_CMODE_SIZE is not set
+# CONFIG_CRAMFS is not set
 # CONFIG_VXFS_FS is not set
 # CONFIG_HPFS_FS is not set
 # CONFIG_QNX4FS_FS is not set
@@ -1322,8 +1426,8 @@
 CONFIG_NFS_FS=m
 CONFIG_NFS_V3=y
 CONFIG_NFS_V3_ACL=y
-CONFIG_NFS_V4=y
-CONFIG_NFS_DIRECTIO=y
+# CONFIG_NFS_V4 is not set
+# CONFIG_NFS_DIRECTIO is not set
 # CONFIG_NFSD is not set
 CONFIG_LOCKD=m
 CONFIG_LOCKD_V4=y
@@ -1365,7 +1469,7 @@
 # CONFIG_NLS_CODEPAGE_862 is not set
 # CONFIG_NLS_CODEPAGE_863 is not set
 # CONFIG_NLS_CODEPAGE_864 is not set
-# CONFIG_NLS_CODEPAGE_865 is not set
+CONFIG_NLS_CODEPAGE_865=y
 # CONFIG_NLS_CODEPAGE_866 is not set
 # CONFIG_NLS_CODEPAGE_869 is not set
 # CONFIG_NLS_CODEPAGE_936 is not set
@@ -1405,7 +1509,7 @@
 #
 # Kernel hacking
 #
-# CONFIG_PRINTK_TIME is not set
+CONFIG_PRINTK_TIME=y
 CONFIG_ENABLE_MUST_CHECK=y
 # CONFIG_MAGIC_SYSRQ is not set
 # CONFIG_UNUSED_SYMBOLS is not set
@@ -1428,38 +1532,37 @@
 #
 CONFIG_CRYPTO=y
 CONFIG_CRYPTO_ALGAPI=y
-CONFIG_CRYPTO_BLKCIPHER=m
-CONFIG_CRYPTO_HASH=y
+CONFIG_CRYPTO_BLKCIPHER=y
 CONFIG_CRYPTO_MANAGER=y
-CONFIG_CRYPTO_HMAC=y
+# CONFIG_CRYPTO_HMAC is not set
 # CONFIG_CRYPTO_XCBC is not set
 # CONFIG_CRYPTO_NULL is not set
 # CONFIG_CRYPTO_MD4 is not set
 CONFIG_CRYPTO_MD5=y
-CONFIG_CRYPTO_SHA1=y
+# CONFIG_CRYPTO_SHA1 is not set
 # CONFIG_CRYPTO_SHA256 is not set
 # CONFIG_CRYPTO_SHA512 is not set
 # CONFIG_CRYPTO_WP512 is not set
 # CONFIG_CRYPTO_TGR192 is not set
 # CONFIG_CRYPTO_GF128MUL is not set
-CONFIG_CRYPTO_ECB=m
-CONFIG_CRYPTO_CBC=m
-CONFIG_CRYPTO_PCBC=m
+CONFIG_CRYPTO_ECB=y
+CONFIG_CRYPTO_CBC=y
+# CONFIG_CRYPTO_PCBC is not set
 # CONFIG_CRYPTO_LRW is not set
 CONFIG_CRYPTO_DES=y
 # CONFIG_CRYPTO_FCRYPT is not set
 # CONFIG_CRYPTO_BLOWFISH is not set
 # CONFIG_CRYPTO_TWOFISH is not set
 # CONFIG_CRYPTO_SERPENT is not set
-CONFIG_CRYPTO_AES=y
+# CONFIG_CRYPTO_AES is not set
 # CONFIG_CRYPTO_CAST5 is not set
 # CONFIG_CRYPTO_CAST6 is not set
 # CONFIG_CRYPTO_TEA is not set
-CONFIG_CRYPTO_ARC4=y
+# CONFIG_CRYPTO_ARC4 is not set
 # CONFIG_CRYPTO_KHAZAD is not set
 # CONFIG_CRYPTO_ANUBIS is not set
-CONFIG_CRYPTO_DEFLATE=y
-CONFIG_CRYPTO_MICHAEL_MIC=y
+# CONFIG_CRYPTO_DEFLATE is not set
+# CONFIG_CRYPTO_MICHAEL_MIC is not set
 # CONFIG_CRYPTO_CRC32C is not set
 # CONFIG_CRYPTO_CAMELLIA is not set
 # CONFIG_CRYPTO_TEST is not set
Modified: linux4palm/linux/branches/cleanup-branch-never-commit/arch/arm/configs/magician_defconfig
===================================================================
--- linux4palm/linux/branches/cleanup-branch-never-commit/arch/arm/configs/magician_defconfig	2007-09-17 19:41:58 UTC (rev 1329)
+++ linux4palm/linux/branches/cleanup-branch-never-commit/arch/arm/configs/magician_defconfig	2007-09-17 19:54:28 UTC (rev 1330)
@@ -1,7 +1,7 @@
 #
 # Automatically generated make config: don't edit
-# Linux kernel version: 2.6.21-hh8
-# Mon Jun 18 14:21:10 2007
+# Linux kernel version: 2.6.21-hh16
+# Sat Sep 15 11:20:21 2007
 #
 CONFIG_ARM=y
 CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -49,7 +49,8 @@
 CONFIG_IKCONFIG_PROC=y
 # CONFIG_SYSFS_DEPRECATED is not set
 # CONFIG_RELAY is not set
-# CONFIG_BLK_DEV_INITRD is not set
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_INITRAMFS_SOURCE=""
 CONFIG_CC_OPTIMIZE_FOR_SIZE=y
 CONFIG_SYSCTL=y
 CONFIG_EMBEDDED=y
@@ -169,6 +170,10 @@
 CONFIG_MAGICIAN_PHONE=m
 # CONFIG_MACH_HTCAPACHE is not set
 # CONFIG_MACH_BLUEANGEL is not set
+
+#
+# HTC_HW6X00
+#
 # CONFIG_MACH_HTCBEETLES is not set
 # CONFIG_MACH_HW6900 is not set
 # CONFIG_MACH_HTCATHENA is not set
@@ -182,6 +187,7 @@
 # CONFIG_MACH_RECON is not set
 # CONFIG_MACH_GHI270HG is not set
 # CONFIG_MACH_GHI270 is not set
+# CONFIG_MACH_LOOXC550 is not set
 # CONFIG_PXA_SHARPSL is not set
 # CONFIG_MACH_TRIZEPS4 is not set
 CONFIG_PXA27x=y
@@ -549,7 +555,7 @@
 # CONFIG_MTD_COMPLEX_MAPPINGS is not set
 CONFIG_MTD_PHYSMAP=m
 CONFIG_MTD_PHYSMAP_START=0x8000000
-CONFIG_MTD_PHYSMAP_LEN=0
+CONFIG_MTD_PHYSMAP_LEN=0x0
 CONFIG_MTD_PHYSMAP_BANKWIDTH=2
 # CONFIG_MTD_ARM_INTEGRATOR is not set
 # CONFIG_MTD_IPAQ is not set
@@ -561,7 +567,9 @@
 #
 # CONFIG_MTD_SLRAM is not set
 # CONFIG_MTD_PHRAM is not set
-# CONFIG_MTD_MTDRAM is not set
+CONFIG_MTD_MTDRAM=m
+CONFIG_MTDRAM_TOTAL_SIZE=0
+CONFIG_MTDRAM_ERASE_SIZE=256
 # CONFIG_MTD_BLOCK2MTD is not set
 
 #
@@ -595,7 +603,8 @@
 # Block devices
 #
 # CONFIG_BLK_DEV_COW_COMMON is not set
-# CONFIG_BLK_DEV_LOOP is not set
+CONFIG_BLK_DEV_LOOP=m
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
 # CONFIG_BLK_DEV_NBD is not set
 # CONFIG_BLK_DEV_UB is not set
 # CONFIG_BLK_DEV_RAM is not set
@@ -723,7 +732,7 @@
 # CONFIG_KEYBOARD_XTKBD is not set
 # CONFIG_KEYBOARD_NEWTON is not set
 # CONFIG_KEYBOARD_STOWAWAY is not set
-CONFIG_GPIODEV_KEYS=y
+# CONFIG_GPIODEV_KEYS is not set
 # CONFIG_GPIODEV_DIAGONAL is not set
 # CONFIG_KEYBOARD_PXA27x is not set
 CONFIG_KEYBOARD_GPIO=y
@@ -892,6 +901,16 @@
 # CONFIG_ADC_AD7877 is not set
 
 #
+# Compaq/iPAQ Drivers
+#
+
+#
+# Compaq/HP iPAQ Drivers
+#
+# CONFIG_IPAQ_SLEEVE is not set
+# CONFIG_SLEEVE_DEBUG is not set
+
+#
 # Multifunction device drivers
 #
 # CONFIG_MFD_SM501 is not set
@@ -899,6 +918,7 @@
 # CONFIG_HTC_ASIC3 is not set
 CONFIG_HTC_PASIC3=y
 CONFIG_HTC_EGPIO=y
+# CONFIG_HTC_BBKEYS is not set
 # CONFIG_HTC_ASIC3_DS1WM is not set
 # CONFIG_SOC_SAMCOP is not set
 # CONFIG_SOC_HAMCOP is not set
@@ -918,8 +938,8 @@
 #
 # LED drivers
 #
-CONFIG_LEDS_MAGICIAN=y
 CONFIG_LEDS_PASIC3=y
+CONFIG_LEDS_GPIO=y
 
 #
 # LED Triggers
@@ -927,6 +947,7 @@
 CONFIG_LEDS_TRIGGERS=y
 CONFIG_LEDS_TRIGGER_TIMER=y
 CONFIG_LEDS_TRIGGER_HWTIMER=y
+CONFIG_LEDS_TRIGGER_BACKLIGHT=y
 # CONFIG_LEDS_TRIGGER_HEARTBEAT is not set
 CONFIG_LEDS_TRIGGER_SHARED=y
 
@@ -1321,9 +1342,9 @@
 #
 # DOS/FAT/NT Filesystems
 #
-CONFIG_FAT_FS=y
-CONFIG_MSDOS_FS=y
-CONFIG_VFAT_FS=y
+CONFIG_FAT_FS=m
+CONFIG_MSDOS_FS=m
+CONFIG_VFAT_FS=m
 CONFIG_FAT_DEFAULT_CODEPAGE=437
 CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
 # CONFIG_NTFS_FS is not set
@@ -1402,7 +1423,7 @@
 # Native Language Support
 #
 CONFIG_NLS=y
-CONFIG_NLS_DEFAULT="iso8859-1"
+CONFIG_NLS_DEFAULT="utf8"
 CONFIG_NLS_CODEPAGE_437=y
 # CONFIG_NLS_CODEPAGE_737 is not set
 # CONFIG_NLS_CODEPAGE_775 is not set
@@ -1424,8 +1445,8 @@
 # CONFIG_NLS_CODEPAGE_949 is not set
 # CONFIG_NLS_CODEPAGE_874 is not set
 # CONFIG_NLS_ISO8859_8 is not set
-CONFIG_NLS_CODEPAGE_1250=y
-CONFIG_NLS_CODEPAGE_1251=y
+# CONFIG_NLS_CODEPAGE_1250 is not set
+CONFIG_NLS_CODEPAGE_1251=m
 # CONFIG_NLS_ASCII is not set
 CONFIG_NLS_ISO8859_1=y
 # CONFIG_NLS_ISO8859_2 is not set
@@ -1499,16 +1520,15 @@
 # Cryptographic options
 #
 CONFIG_CRYPTO=y
-CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_ALGAPI=m
 CONFIG_CRYPTO_BLKCIPHER=m
-CONFIG_CRYPTO_HASH=y
-CONFIG_CRYPTO_MANAGER=y
-CONFIG_CRYPTO_HMAC=y
+CONFIG_CRYPTO_MANAGER=m
+# CONFIG_CRYPTO_HMAC is not set
 # CONFIG_CRYPTO_XCBC is not set
 # CONFIG_CRYPTO_NULL is not set
 # CONFIG_CRYPTO_MD4 is not set
-CONFIG_CRYPTO_MD5=y
-CONFIG_CRYPTO_SHA1=y
+# CONFIG_CRYPTO_MD5 is not set
+CONFIG_CRYPTO_SHA1=m
 # CONFIG_CRYPTO_SHA256 is not set
 # CONFIG_CRYPTO_SHA512 is not set
 # CONFIG_CRYPTO_WP512 is not set
@@ -1518,7 +1538,7 @@
 # CONFIG_CRYPTO_CBC is not set
 CONFIG_CRYPTO_PCBC=m
 # CONFIG_CRYPTO_LRW is not set
-CONFIG_CRYPTO_DES=y
+# CONFIG_CRYPTO_DES is not set
 # CONFIG_CRYPTO_FCRYPT is not set
 # CONFIG_CRYPTO_BLOWFISH is not set
 # CONFIG_CRYPTO_TWOFISH is not set
@@ -1530,7 +1550,7 @@
 CONFIG_CRYPTO_ARC4=m
 # CONFIG_CRYPTO_KHAZAD is not set
 # CONFIG_CRYPTO_ANUBIS is not set
-CONFIG_CRYPTO_DEFLATE=y
+# CONFIG_CRYPTO_DEFLATE is not set
 # CONFIG_CRYPTO_MICHAEL_MIC is not set
 # CONFIG_CRYPTO_CRC32C is not set
 # CONFIG_CRYPTO_CAMELLIA is not set
@@ -1548,8 +1568,8 @@
 # CONFIG_CRC16 is not set
 CONFIG_CRC32=y
 # CONFIG_LIBCRC32C is not set
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
+CONFIG_ZLIB_INFLATE=m
+CONFIG_ZLIB_DEFLATE=m
 CONFIG_PLIST=y
 CONFIG_HAS_IOMEM=y
 CONFIG_HAS_IOPORT=y
Modified: linux4palm/linux/branches/cleanup-branch-never-commit/drivers/usb/gadget/zero.c
===================================================================
--- linux4palm/linux/branches/cleanup-branch-never-commit/drivers/usb/gadget/zero.c	2007-09-17 19:41:58 UTC (rev 1329)
+++ linux4palm/linux/branches/cleanup-branch-never-commit/drivers/usb/gadget/zero.c	2007-09-17 19:54:28 UTC (rev 1330)
@@ -66,7 +66,6 @@
 #include <linux/kernel.h>
 #include <linux/delay.h>
 #include <linux/ioport.h>
-#include <linux/sched.h>
 #include <linux/slab.h>
 #include <linux/smp_lock.h>
 #include <linux/errno.h>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <hap...@us...> - 2007-09-17 19:42:02
      
     | 
| Revision: 1329
          http://hackndev.svn.sourceforge.net/hackndev/?rev=1329&view=rev
Author:   happy-slapin
Date:     2007-09-17 12:41:58 -0700 (Mon, 17 Sep 2007)
Log Message:
-----------
cleanup: getting from hh.org
Modified Paths:
--------------
    linux4palm/linux/branches/cleanup-branch-never-commit/drivers/char/Kconfig
    linux4palm/linux/branches/cleanup-branch-never-commit/drivers/char/sa1100-rtc.c
    linux4palm/linux/branches/cleanup-branch-never-commit/drivers/mfd/htc-egpio.c
    linux4palm/linux/branches/cleanup-branch-never-commit/drivers/mfd/pasic3_base.c
    linux4palm/linux/branches/cleanup-branch-never-commit/drivers/mfd/samcop_base.c
Modified: linux4palm/linux/branches/cleanup-branch-never-commit/drivers/char/Kconfig
===================================================================
--- linux4palm/linux/branches/cleanup-branch-never-commit/drivers/char/Kconfig	2007-09-17 15:37:25 UTC (rev 1328)
+++ linux4palm/linux/branches/cleanup-branch-never-commit/drivers/char/Kconfig	2007-09-17 19:41:58 UTC (rev 1329)
@@ -810,23 +810,19 @@
 	  via the file /proc/rtc and its behaviour is set by various ioctls on
 	  /dev/rtc.
 
-#
-# This is a weird duplicate copy of the driver, please update your config to use
-# RTC_DRV_SA1100 instead! 
-#
-#config SA1100_RTC
-#	tristate "SA11x0/PXA2xx RTC support"
-#	depends on ARCH_SA1100 || ARCH_PXA
-#	help
-#	  If you say Y here and create a character special file /dev/rtc with
-#	  major number 10 and minor number 135 using mknod ("man mknod"), you
-#	  will get access to the real time clock built into your SA11x0 or
-#	  PXA2xx CPU. It reports status information via the file /proc/rtc
-#	  and its behaviour is set by various ioctls on /dev/rtc.
-#
-#	  To compile this driver as a module, choose M here: the
-#	  module will be called sa1100-rtc.
+config SA1100_RTC
+	tristate "SA11x0/PXA2xx RTC support"
+	depends on ARCH_SA1100 || ARCH_PXA
+	help
+	  If you say Y here and create a character special file /dev/rtc with
+	  major number 10 and minor number 135 using mknod ("man mknod"), you
+	  will get access to the real time clock built into your SA11x0 or
+	  PXA2xx CPU. It reports status information via the file /proc/rtc
+	  and its behaviour is set by various ioctls on /dev/rtc.
 
+	  To compile this driver as a module, choose M here: the
+	  module will be called sa1100-rtc.
+
 config GEN_RTC
 	tristate "Generic /dev/rtc emulation"
 	depends on RTC!=y && !IA64 && !ARM && !M32R && !SPARC && !FRV
Modified: linux4palm/linux/branches/cleanup-branch-never-commit/drivers/char/sa1100-rtc.c
===================================================================
--- linux4palm/linux/branches/cleanup-branch-never-commit/drivers/char/sa1100-rtc.c	2007-09-17 15:37:25 UTC (rev 1328)
+++ linux4palm/linux/branches/cleanup-branch-never-commit/drivers/char/sa1100-rtc.c	2007-09-17 19:41:58 UTC (rev 1329)
@@ -1,16 +1,4 @@
 /*
- *
- * NOTE: The file you're looking for is in drivers/rtc, please don't use this one
- * it'll be removed eventually.
- *
- *
- *
- *
- */
-#error This is a weird duplicate copy of the driver, please update your config to use \
-RTC_DRV_SA1100 instead!
-
-/*
  * linux/drivers/char/sa1100-rtc.c
  *
  * Real Time Clock interface for Linux on StrongARM SA1x00
Modified: linux4palm/linux/branches/cleanup-branch-never-commit/drivers/mfd/htc-egpio.c
===================================================================
--- linux4palm/linux/branches/cleanup-branch-never-commit/drivers/mfd/htc-egpio.c	2007-09-17 15:37:25 UTC (rev 1328)
+++ linux4palm/linux/branches/cleanup-branch-never-commit/drivers/mfd/htc-egpio.c	2007-09-17 19:41:58 UTC (rev 1329)
@@ -11,6 +11,7 @@
 #include <linux/errno.h> /* ENODEV */
 #include <linux/interrupt.h> /* enable_irq_wake */
 #include <linux/spinlock.h> /* spinlock_t */
+#include <linux/platform_device.h> /* platform_device */
 #include <linux/module.h>
 #include <linux/gpiodev2.h>
 #include <linux/mfd/htc-egpio.h>
@@ -138,12 +139,9 @@
 	for (i=0; i<pdata->nr_pins; i++) {
 		struct htc_egpio_pinInfo *pi = &pdata->pins[i];
 		if (pi->type == HTC_EGPIO_TYPE_INPUT
-		    && pi->pin_nr == (gpio_no & GPIO_BASE_MASK)
+		    && pi->gpio == gpio_no
 		    && pi->input_irq >= 0)
-			return pi->input_irq + ei->irqStart;
-		if (pi->type == HTC_EGPIO_TYPE_IRQ
-		    && pi->pin_nr == (gpio_no & GPIO_BASE_MASK))
-			return pi->pin_nr + ei->irqStart;
+			return (pi->input_irq & 0xf) + ei->irqStart;
 	}
 	return -ENODEV;
 }
@@ -181,10 +179,10 @@
 
 static void setup_pin(struct egpio_info *ei, struct htc_egpio_pinInfo *pi)
 {
-	struct htc_egpio_pinInfo dummy;
+	int pin = pi->gpio & GPIO_BASE_MASK;
 
-	if (pi->pin_nr < 0 || pi->pin_nr > 16*MAX_EGPIO_REGS) {
-		printk(KERN_ERR "EGPIO invalid pin %d\n", pi->pin_nr);
+	if (pi->gpio < 0 || pin > 16*MAX_EGPIO_REGS) {
+		printk(KERN_ERR "EGPIO invalid pin %d\n", pi->gpio);
 		return;
 	}
 
@@ -192,24 +190,19 @@
 	case HTC_EGPIO_TYPE_INPUT:
 		if (pi->input_irq < 0)
 			break;
-		dummy.pin_nr = pi->input_irq;
-		pi = &dummy;
-		/* NO BREAK */
-	case HTC_EGPIO_TYPE_IRQ:
-		if (ei->ackRegister != u16pos(pi->pin_nr)) {
+		pin = pi->input_irq & GPIO_BASE_MASK;
+		if (ei->ackRegister != u16pos(pin)) {
 			printk(KERN_ERR "EGPIO irq conflict %d vs %d\n"
-			       , ei->ackRegister, u16pos(pi->pin_nr));
+			       , ei->ackRegister, u16pos(pin));
 			return;
 		}
 		break;
-	case HTC_EGPIO_TYPE_OUTPUT: {
-		int pin = pi->pin_nr;
+	case HTC_EGPIO_TYPE_OUTPUT:
 		if (ei->maxRegs < u16pos(pin))
 			ei->maxRegs = u16pos(pin);
 		if (pi->output_initial)
 			ei->cached_values[u16pos(pin)] |= u16bit(pin);
 		break;
-	}
 	default:
 		printk(KERN_ERR "EGPIO unknown type %d\n", pi->type);
 	}
@@ -221,6 +214,7 @@
 	struct resource *res;
 	struct egpio_info *ei;
 	int irq, i, ret;
+	struct gpio_ops ops;
 
 	/* Initialize ei data structure. */
 	ei = kzalloc(sizeof(*ei), GFP_KERNEL);
@@ -247,18 +241,12 @@
 	       , res->start, ei->addrBase);
 	ei->bus_shift = pdata->bus_shift;
 
-	pdata->ops.get = egpio_get;
-	pdata->ops.set = egpio_set;
-	pdata->ops.to_irq = egpio_to_irq;
 	platform_set_drvdata(pdev, ei);
 
-	{
-	struct gpio_ops ops;
 	ops.get_value = egpio_get;
 	ops.set_value = egpio_set;
 	ops.to_irq = egpio_to_irq;
 	gpiodev_register(pdata->gpio_base, &pdev->dev, &ops);
-	}
 
 	/* Go through list of pins. */
 	ei->irqStart = pdata->irq_base;
Modified: linux4palm/linux/branches/cleanup-branch-never-commit/drivers/mfd/pasic3_base.c
===================================================================
--- linux4palm/linux/branches/cleanup-branch-never-commit/drivers/mfd/pasic3_base.c	2007-09-17 15:37:25 UTC (rev 1328)
+++ linux4palm/linux/branches/cleanup-branch-never-commit/drivers/mfd/pasic3_base.c	2007-09-17 19:41:58 UTC (rev 1329)
@@ -94,13 +94,10 @@
 	struct device *dev = ds1wm_dev->dev.parent;
 	int c;
 
-	/* FIXME: use this to detect magician/pasic3 for now */
-	if (ds1wm_clk.rate == 4000000) {
-		c = pasic3_read_register(dev, 0x28);
-		pasic3_write_register(dev, 0x28, c & 0x7f);
+	c = pasic3_read_register(dev, 0x28);
+	pasic3_write_register(dev, 0x28, c & 0x7f);
 
-		pr_debug ("pasic3: DS1WM OWM_EN low (active) %02x\n", c & 0x7f);
-	}
+	pr_debug ("pasic3: DS1WM OWM_EN low (active) %02x\n", c & 0x7f);
 }
 
 static void ds1wm_disable(struct platform_device *ds1wm_dev)
@@ -108,13 +105,10 @@
 	struct device *dev = ds1wm_dev->dev.parent;
 	int c;
 
-	/* FIXME: use this to detect magician/pasic3 for now */
-	if (ds1wm_clk.rate == 4000000) {
-		c = pasic3_read_register(dev, 0x28);
-		pasic3_write_register(dev, 0x28, c | 0x80);
+	c = pasic3_read_register(dev, 0x28);
+	pasic3_write_register(dev, 0x28, c | 0x80);
 
-		pr_debug ("pasic3: DS1WM OWM_EN high (inactive) %02x\n", c | 0x80);
-	}
+	pr_debug ("pasic3: DS1WM OWM_EN high (inactive) %02x\n", c | 0x80);
 }
 
 static struct ds1wm_platform_data __devinit ds1wm_platform_data = {
Modified: linux4palm/linux/branches/cleanup-branch-never-commit/drivers/mfd/samcop_base.c
===================================================================
--- linux4palm/linux/branches/cleanup-branch-never-commit/drivers/mfd/samcop_base.c	2007-09-17 15:37:25 UTC (rev 1328)
+++ linux4palm/linux/branches/cleanup-branch-never-commit/drivers/mfd/samcop_base.c	2007-09-17 19:41:58 UTC (rev 1329)
@@ -54,9 +54,11 @@
 #include <asm/hardware/ipaq-samcop.h>
 #include <linux/mfd/samcop_base.h>
 #include <asm/hardware/samcop-sdi.h>
+#include <asm/hardware/samcop-fsi.h>
 #include <asm/hardware/samcop-dma.h>
 #include <asm/arch/pxa-dmabounce.h>
 #include "../mmc/samcop_sdi.h"
+#include "../misc/samcop_fsi.h"
 
 #include <asm/arch/irq.h>
 #include <asm/arch/clock.h>
@@ -581,7 +583,31 @@
 	set_irq_chained_handler(samcop->irq_nr, samcop_irq_demux);
 }
 
+
 /*************************************************************
+ * SAMCOP FS interface hooks and initialization
+ *************************************************************/
+
+static u32 samcop_fsi_read_register(struct device *dev, u32 reg)
+{
+	struct samcop_data *samcop = dev->parent->driver_data;
+
+	return samcop_read_register(samcop, _SAMCOP_FSI_Base + reg);
+}
+
+static void samcop_fsi_write_register(struct device *dev, u32 reg, u32 val)
+{
+	struct samcop_data *samcop = dev->parent->driver_data;
+
+	samcop_write_register(samcop, _SAMCOP_FSI_Base + reg, val);
+}
+
+static struct samcop_fsi_data samcop_fsi_data = {
+	.read_reg = samcop_fsi_read_register,
+	.write_reg = samcop_fsi_write_register,
+};
+
+/*************************************************************
  * SAMCOP SD interface hooks and initialization
  *************************************************************/
 int samcop_dma_needs_bounce(struct device *dev, dma_addr_t addr, size_t size)
@@ -1125,6 +1151,7 @@
 		.start = _SAMCOP_FSI_Base,
 		.end = _SAMCOP_FSI_Base + 0x1f,
 		.irq = _IRQ_SAMCOP_FCD,
+		.platform_data = &samcop_fsi_data,
 	},
 	{
 		.id = { -1 },
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <hap...@us...> - 2007-09-17 15:42:09
      
     | 
| Revision: 1328
          http://hackndev.svn.sourceforge.net/hackndev/?rev=1328&view=rev
Author:   happy-slapin
Date:     2007-09-17 08:37:25 -0700 (Mon, 17 Sep 2007)
Log Message:
-----------
cleanup: update from hh.org
Added Paths:
-----------
    linux4palm/linux/branches/cleanup-branch-never-commit/drivers/input/keyboard/gpiodev_keys2.c
    linux4palm/linux/branches/cleanup-branch-never-commit/include/linux/gpiodev_keys2.h
    linux4palm/linux/branches/cleanup-branch-never-commit/include/linux/mfd/htc-bbkeys.h
Removed Paths:
-------------
    linux4palm/linux/branches/cleanup-branch-never-commit/include/asm-arm/arch-pxa/i2c-pxa.h
Added: linux4palm/linux/branches/cleanup-branch-never-commit/drivers/input/keyboard/gpiodev_keys2.c
===================================================================
--- linux4palm/linux/branches/cleanup-branch-never-commit/drivers/input/keyboard/gpiodev_keys2.c	                        (rev 0)
+++ linux4palm/linux/branches/cleanup-branch-never-commit/drivers/input/keyboard/gpiodev_keys2.c	2007-09-17 15:37:25 UTC (rev 1328)
@@ -0,0 +1,336 @@
+/*
+ * Driver for diagonal joypads on GPIO lines capable of generating interrupts.
+ *
+ * Copyright 2007 Milan Plzik, based on gpio-keys.c (c) Phil Blundell 2005
+ *
+ * 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.
+ */
+
+#include <linux/module.h>
+#include <linux/version.h>
+
+#include <linux/init.h>
+#include <linux/fs.h>
+#include <linux/interrupt.h>
+#include <linux/irq.h>
+#include <linux/sched.h>
+#include <linux/pm.h>
+#include <linux/delay.h>
+#include <linux/platform_device.h>
+#include <linux/input.h>
+#include <linux/irq.h>
+#include <linux/sort.h>
+#include <linux/gpiodev.h>
+#include <linux/gpiodev_keys2.h>
+
+struct gpiodev_keys2_drvdata {
+	struct input_dev *input;
+	struct timer_list debounce_timer;
+	struct gpiodev_keys2_gpio ***button_gpios;
+	int *gpio_delays;
+	struct gpiodev_keys2_button **buttons_by_prio;
+	int *gpio_used_prio;
+};
+
+
+static struct gpiodev_keys2_gpio *lookup_gpio (struct gpiodev_keys2_platform_data *pdata,
+		const char *name)
+{
+	int i;
+	
+	for (i = 0; i < pdata->ngpios; i++) {
+		if (!strcmp (name, pdata->gpios[i].name)) 
+			return &pdata->gpios[i];
+	}
+
+	return NULL;
+}
+
+static int count_gpios (struct gpiodev_keys2_button *btn)
+{
+	int i = 0;
+	const char **gpio = btn->gpio_names;
+	
+	while (gpio[i]) i++;
+
+	return i;
+}
+
+
+static irqreturn_t gpiodev_keys2_isr(int irq, void *data)
+{
+	int i;
+	struct platform_device *pdev = data;
+	struct gpiodev_keys2_platform_data *pdata = pdev->dev.platform_data;
+	struct gpiodev_keys2_drvdata *drvdata = platform_get_drvdata(pdev);
+
+	/* Find out which GPIO has been asserted and the corresponding delay for
+	 * debouncing. */
+	for (i = 0; i < pdata->ngpios; i++)
+		if (irq == gpiodev_to_irq(&pdata->gpios[i].gpio)) {
+			break;
+		};
+	
+	/* Prepare delayed call of debounce handler */
+	if (time_before(drvdata->debounce_timer.expires, jiffies + 
+			msecs_to_jiffies(drvdata->gpio_delays[i])) ||
+	    !timer_pending(&drvdata->debounce_timer))
+		mod_timer(&drvdata->debounce_timer, 
+				jiffies + msecs_to_jiffies(drvdata->gpio_delays[i]));
+
+	return IRQ_HANDLED;
+}
+
+static void debounce_handler(unsigned long data)
+{
+	struct platform_device *pdev = (void*)data;
+	struct gpiodev_keys2_platform_data *pdata = pdev->dev.platform_data;
+	struct gpiodev_keys2_drvdata *drvdata = platform_get_drvdata(pdev);
+	struct gpiodev_keys2_button *button;
+	struct gpiodev_keys2_gpio **gpio;
+	int i;
+
+	memset(drvdata->gpio_used_prio, 0, sizeof(drvdata->gpio_used_prio[0])*pdata->ngpios);
+
+	/* Clear reported buttons */
+	for (i = 0; i < pdata->nbuttons; i++)
+		input_report_key(drvdata->input, pdata->buttons[i].keycode, 0);
+
+	for (i = 0; i < pdata->nbuttons; i++) {
+		int button_idx = drvdata->buttons_by_prio[i] - &pdata->buttons[0];
+		button = drvdata->buttons_by_prio[i];
+		gpio = drvdata->button_gpios[button_idx];
+
+		/* are all required GPIOs asserted? */
+		do {
+			int gpio_idx = gpio[0] - pdata->gpios; /* index in pdata->gpios */
+			if (((gpiodev_get_value(&gpio[0]->gpio) ? 1 : 0) ^ (gpio[0]->active_low)) &&
+				/* this is only true when gpio prio is 0,
+				 * because the buttons are ordered descending by
+				 * priority */
+				drvdata->gpio_used_prio[gpio_idx]<=button->priority)
+				continue;
+			else 
+				break;
+		} while ((++gpio)[0] != NULL);
+
+		if (gpio[0] == NULL) {
+			/* all gpios are asserted and unused otherwise, so key
+			 * can be pressed and GPIOs will be marked as used. */
+			gpio = drvdata->button_gpios[button_idx];
+			do {
+				int gpio_idx = gpio[0] - pdata->gpios;
+				drvdata->gpio_used_prio[gpio_idx] = button->priority;
+			} while (((++gpio)[0]) != NULL);
+			if (button->keycode != -1)
+				input_report_key(drvdata->input, button->keycode, 1);
+		}
+	};
+	input_sync(drvdata->input);
+}
+
+
+static int btnprio_cmp (const void *a, const void *b)
+{
+	const struct gpiodev_keys2_button *b1, *b2;
+	
+	b1 = *((const struct gpiodev_keys2_button**)a);
+	b2 = *((const struct gpiodev_keys2_button**)b);
+
+	return b2->priority - b1->priority;
+}
+
+/* Builds array, which on i-th position contains pointers to all GPIOs used by
+ * i-th button in pdata->buttons, and also finds maximal debounce time for each
+ * gpio.
+ */
+
+static int gpiodev_keys2_init_drvdata(struct platform_device *pdev)
+{
+	struct gpiodev_keys2_platform_data *pdata = pdev->dev.platform_data;
+	struct gpiodev_keys2_drvdata *drvdata = platform_get_drvdata(pdev);
+	struct gpiodev_keys2_gpio *gpio;
+	int i, j;
+	int button_gpios;
+
+	if (drvdata->button_gpios) {
+		printk (KERN_ERR "gpiodev-keys2: Attempting to re-create drvdata\n");
+		return -EBUSY;
+	};
+	
+	drvdata->button_gpios = kzalloc(
+			pdata->nbuttons*sizeof(*drvdata->button_gpios), 
+			GFP_KERNEL);
+	drvdata->gpio_delays = kzalloc(pdata->ngpios*sizeof(*drvdata->gpio_delays), GFP_KERNEL);
+	drvdata->buttons_by_prio = kzalloc(pdata->nbuttons*sizeof(*drvdata->buttons_by_prio), GFP_KERNEL);
+	drvdata->gpio_used_prio = kzalloc(pdata->ngpios*sizeof(*drvdata->gpio_used_prio), GFP_KERNEL);
+
+	for (i = 0; i < pdata->nbuttons; i++) {
+		button_gpios = count_gpios(&pdata->buttons[i]);
+		drvdata->button_gpios[i] = kzalloc((button_gpios+1)*sizeof(drvdata->button_gpios[i]), GFP_KERNEL);
+
+		/* Put all GPIOs used by i-th button into button_gpios[i] */
+		for (j = 0; j < button_gpios; j++) {
+			gpio = lookup_gpio(pdata, pdata->buttons[i].gpio_names[j]);
+			if (!gpio) {
+				printk(KERN_WARNING "gpiodev-keys2: Unknown gpio '%s'\n", pdata->buttons[i].gpio_names[j]);
+				continue;
+			};
+
+			/* See whether actual button has delay, which is bigger
+			 * than delay GPIO. If so, update GPIOs delay.
+			 */
+			drvdata->gpio_delays[gpio - pdata->gpios] = max(
+				drvdata->gpio_delays[gpio - pdata->gpios],
+				pdata->buttons[i].debounce_ms);
+
+			drvdata->button_gpios[i][j] = gpio;
+		};
+
+
+	};
+
+	/* Create list of buttons sorted descending by priority */
+	for (i = 0; i < pdata->nbuttons; i++)
+		drvdata->buttons_by_prio[i] = &pdata->buttons[i];
+	
+	sort(drvdata->buttons_by_prio, pdata->nbuttons, sizeof(drvdata->buttons_by_prio[0]), btnprio_cmp, NULL);
+	for (i = 0; i <pdata->nbuttons; i++)
+		printk (KERN_INFO "- button '%s', prio %d\n", drvdata->buttons_by_prio[i]->gpio_names[0], drvdata->buttons_by_prio[i]->priority);
+
+	return 0;
+}
+
+static void gpiodev_keys2_free_mapping(struct platform_device *pdev)
+{
+	struct gpiodev_keys2_platform_data *pdata = pdev->dev.platform_data;
+	struct gpiodev_keys2_drvdata *drvdata = platform_get_drvdata(pdev);
+	int i;
+
+	if (!drvdata)
+		return;
+
+	for (i = 0; i < pdata->nbuttons; i++) 
+		kfree(drvdata->button_gpios[i]);
+
+	kfree(drvdata->button_gpios);
+	kfree(drvdata->gpio_delays);
+	kfree(drvdata->buttons_by_prio);
+	kfree(drvdata->gpio_used_prio);
+}
+
+
+static int __devinit gpiodev_keys2_probe(struct platform_device *pdev)
+{
+	struct gpiodev_keys2_drvdata *drvdata;
+	struct gpiodev_keys2_platform_data *pdata = pdev->dev.platform_data;
+	struct input_dev *input;
+	int i, error;
+
+	input = input_allocate_device();
+	if (!input)
+		return -ENOMEM;
+
+	input->evbit[0] = BIT(EV_KEY) | BIT(EV_REP);
+	input->name = pdev->name;
+	input->phys = "gpiodev-keys2/input0";
+	input->cdev.dev = &pdev->dev;
+	// input->private // do we need this?
+	input->id.bustype = BUS_HOST;
+	input->id.vendor = 0x0001;
+	input->id.product = 0x0001;
+	input->id.version = 0x0100;
+
+	drvdata = kzalloc(sizeof(struct gpiodev_keys2_drvdata), GFP_KERNEL);
+	drvdata->input = input;
+	platform_set_drvdata(pdev, drvdata);
+
+	setup_timer(&drvdata->debounce_timer, debounce_handler, (unsigned long) pdev);
+	
+	for (i = 0; i < pdata->nbuttons; i++)
+		set_bit(pdata->buttons[i].keycode, input->keybit);
+	
+	error = input_register_device(input);
+	if (error) {
+		printk(KERN_ERR "Unable to register gpiodev-keys2 input device\n");
+		goto fail;
+	}
+
+	gpiodev_keys2_init_drvdata(pdev);
+
+
+	for (i = 0; i < pdata->ngpios; i++) {
+		int irq = gpiodev_to_irq(&(pdata->gpios[i].gpio));
+
+		set_irq_type(irq, IRQ_TYPE_EDGE_BOTH);
+		error = request_irq(irq, gpiodev_keys2_isr, 
+			IRQF_SAMPLE_RANDOM | IRQF_SHARED,
+			pdata->gpios[i].name ? 
+			pdata->gpios[i].name : "gpiodev_keys2", pdev);
+
+		if (error) {
+			printk(KERN_ERR "gpiodev-keys: unable to claim irq %d; error %d\n", irq, error);
+			goto fail;
+		}
+	}
+
+
+	return 0;
+
+fail:
+	for (i = i - 1; i >= 0; i--) 
+		free_irq(gpiodev_to_irq(&pdata->gpios[i].gpio),pdev);
+
+	input_free_device(input);
+
+	del_timer_sync(&drvdata->debounce_timer);
+
+	return error;
+}
+
+static int __devexit gpiodev_keys2_remove(struct platform_device *pdev)
+{
+	struct gpiodev_keys2_drvdata *drvdata = platform_get_drvdata(pdev);
+	struct gpiodev_keys2_platform_data *pdata = pdev->dev.platform_data;
+	int i;
+
+	del_timer_sync(&drvdata->debounce_timer);
+
+	for (i = 0; i < pdata->ngpios; i++) 
+		free_irq(gpiodev_to_irq(&pdata->gpios[i].gpio), pdev);
+
+	input_unregister_device(drvdata->input);
+	input_free_device(drvdata->input);
+	gpiodev_keys2_free_mapping(pdev);
+	kfree(drvdata);
+
+	return 0;
+}
+
+
+struct platform_driver gpiodev_keys2_device_driver = {
+	.probe 	= gpiodev_keys2_probe,
+	.remove = __devexit_p(gpiodev_keys2_remove),
+	.driver	= {
+		.name = "gpiodev-keys2",
+	}
+};
+
+static int __init gpiodev_keys2_init(void)
+{
+	return platform_driver_register(&gpiodev_keys2_device_driver);
+}
+
+static void __exit gpiodev_keys2_exit(void)
+{
+	platform_driver_unregister(&gpiodev_keys2_device_driver);
+}
+
+module_init(gpiodev_keys2_init);
+module_exit(gpiodev_keys2_exit);
+
+MODULE_LICENSE("GPL");
+MODULE_AUTHOR("Milan Plzik <mil...@gm...>");
+MODULE_DESCRIPTION("Keyboard driver for GPIO");
Deleted: linux4palm/linux/branches/cleanup-branch-never-commit/include/asm-arm/arch-pxa/i2c-pxa.h
===================================================================
--- linux4palm/linux/branches/cleanup-branch-never-commit/include/asm-arm/arch-pxa/i2c-pxa.h	2007-09-17 15:12:45 UTC (rev 1327)
+++ linux4palm/linux/branches/cleanup-branch-never-commit/include/asm-arm/arch-pxa/i2c-pxa.h	2007-09-17 15:37:25 UTC (rev 1328)
@@ -1,76 +0,0 @@
-/*
- *  i2c_pxa.h
- *
- *  Copyright (C) 2002 Intrinsyc Software Inc.
- * 
- *  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 _I2C_PXA_H_
-#define _I2C_PXA_H_
-
-struct i2c_algo_pxa_data
-{
-	void (*write_byte) (u8 value);
-	u8   (*read_byte) (void);
-	void (*start) (void);
-	void (*repeat_start) (void);
-	void (*stop) (void);
-	void (*abort) (void);
-	int  (*wait_bus_not_busy) (void);
-	int  (*wait_for_interrupt) (int wait_type);
-	void (*transfer) (int lastbyte, int receive, int midbyte);
-	void (*reset) (void);
-
-	int udelay;
-	int timeout;
-};
-
-#define DEF_TIMEOUT	     3
-#define BUS_ERROR	       (-EREMOTEIO)
-#define ACK_DELAY	       0       /* time to delay before checking bus error */
-#define MAX_MESSAGES	    65536   /* maximum number of messages to send */
-
-#define I2C_SLEEP_TIMEOUT       2       /* time to sleep for on i2c transactions */
-#define I2C_RETRY	       (-2000) /* an error has occurred retry transmit */
-#define I2C_TRANSMIT		1
-#define I2C_RECEIVE		0
-#define I2C_PXA_SLAVE_ADDR      0x1    /* slave pxa unit address */
-#define I2C_ICR_INIT	    (ICR_BEIE | ICR_IRFIE | ICR_ITEIE | ICR_GCD | ICR_SCLE) /* ICR initialization value */
-/* ICR initialize bit values 
-*		       
-*  15. FM       0 (100 Khz operation)
-*  14. UR       0 (No unit reset)
-*  13. SADIE    0 (Disables the unit from interrupting on slave addresses 
-*				       matching its slave address)
-*  12. ALDIE    0 (Disables the unit from interrupt when it loses arbitration 
-*				       in master mode)
-*  11. SSDIE    0 (Disables interrupts from a slave stop detected, in slave mode)  
-*  10. BEIE     1 (Enable interrupts from detected bus errors, no ACK sent)
-*  9.  IRFIE    1 (Enable interrupts from full buffer received)
-*  8.  ITEIE    1 (Enables the I2C unit to interrupt when transmit buffer empty)
-*  7.  GCD      1 (Disables i2c unit response to general call messages as a slave) 
-*  6.  IUE      0 (Disable unit until we change settings)
-*  5.  SCLE     1 (Enables the i2c clock output for master mode (drives SCL)   
-*  4.  MA       0 (Only send stop with the ICR stop bit)
-*  3.  TB       0 (We are not transmitting a byte initially)
-*  2.  ACKNAK   0 (Send an ACK after the unit receives a byte)
-*  1.  STOP     0 (Do not send a STOP)
-*  0.  START    0 (Do not send a START)
-*
-*/
-
-#define I2C_ISR_INIT	    0x7FF  /* status register init */
-/* I2C status register init values 
- *
- * 10. BED      1 (Clear bus error detected)
- * 9.  SAD      1 (Clear slave address detected)
- * 7.  IRF      1 (Clear IDBR Receive Full)
- * 6.  ITE      1 (Clear IDBR Transmit Empty)
- * 5.  ALD      1 (Clear Arbitration Loss Detected)
- * 4.  SSD      1 (Clear Slave Stop Detected)
- */
-
-#endif
Added: linux4palm/linux/branches/cleanup-branch-never-commit/include/linux/gpiodev_keys2.h
===================================================================
--- linux4palm/linux/branches/cleanup-branch-never-commit/include/linux/gpiodev_keys2.h	                        (rev 0)
+++ linux4palm/linux/branches/cleanup-branch-never-commit/include/linux/gpiodev_keys2.h	2007-09-17 15:37:25 UTC (rev 1328)
@@ -0,0 +1,37 @@
+#ifndef __GPIODEV_KEYS2_H
+#define __GPIODEV_KEYS2_H
+
+#include <linux/gpiodev.h>
+
+#define MAX_GPIOS_PER_BUTTON 5
+
+struct gpiodev_keys2_gpio {
+	const char *name;	/* GPIO identifier */
+	struct gpio gpio;	/* gpiodev descriptor */
+	int active_low;		
+};
+
+struct gpiodev_keys2_button {
+	int keycode;		/* key code for the button */
+	
+	const char *gpio_names[MAX_GPIOS_PER_BUTTON];
+				/* which GPIOs have to be asserted in order 
+				 * to emit keypress. This is NULL-terminated 
+				 * array of string GPIO identifiers */
+	
+	int debounce_ms;	/* Value for this button's debounce will be at
+				 * least this number of milliseconds. */
+
+	int priority;		/* If more buttons are likely to be pressed, 
+				 * only those with highest priority will
+				 * generate keypress, others will be released */
+};
+
+struct gpiodev_keys2_platform_data {
+	struct gpiodev_keys2_gpio *gpios;
+	int ngpios;
+	struct gpiodev_keys2_button *buttons;
+	int nbuttons;
+};
+
+#endif
Added: linux4palm/linux/branches/cleanup-branch-never-commit/include/linux/mfd/htc-bbkeys.h
===================================================================
--- linux4palm/linux/branches/cleanup-branch-never-commit/include/linux/mfd/htc-bbkeys.h	                        (rev 0)
+++ linux4palm/linux/branches/cleanup-branch-never-commit/include/linux/mfd/htc-bbkeys.h	2007-09-17 15:37:25 UTC (rev 1328)
@@ -0,0 +1,20 @@
+#ifndef _HTC_BBKEYS_H
+#define _HTC_BBKEYS_H
+
+/* Maximum number of keys available */
+enum { BBKEYS_MAXKEY = 16 };
+
+struct htc_bbkeys_platform_data {
+	/* Beginning of available gpios (eg, GPIO_BASE_INCREMENT) */
+	int gpio_base;
+
+	/* Main interface gpios */
+	int sda_gpio, scl_gpio;
+
+	/* Registers for working with keypad */
+	int ackreg, key1reg, key2reg;
+	/* Keycodes for buttons */
+	int buttons[BBKEYS_MAXKEY];
+};
+
+#endif
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <hap...@us...> - 2007-09-17 14:34:40
      
     | 
| Revision: 1326
          http://hackndev.svn.sourceforge.net/hackndev/?rev=1326&view=rev
Author:   happy-slapin
Date:     2007-09-17 07:34:36 -0700 (Mon, 17 Sep 2007)
Log Message:
-----------
cleanup: update from hh.org
Modified Paths:
--------------
    linux4palm/linux/branches/cleanup-branch-never-commit/include/linux/i2c-id.h
    linux4palm/linux/branches/cleanup-branch-never-commit/include/linux/leds.h
Modified: linux4palm/linux/branches/cleanup-branch-never-commit/include/linux/i2c-id.h
===================================================================
--- linux4palm/linux/branches/cleanup-branch-never-commit/include/linux/i2c-id.h	2007-09-17 14:11:49 UTC (rev 1325)
+++ linux4palm/linux/branches/cleanup-branch-never-commit/include/linux/i2c-id.h	2007-09-17 14:34:36 UTC (rev 1326)
@@ -159,7 +159,6 @@
 #define I2C_DRIVERID_FSCHER 1046
 #define I2C_DRIVERID_W83L785TS 1047
 #define I2C_DRIVERID_OV7670 1048	/* Omnivision 7670 camera */
-#define I2C_DRIVERID_OV96xx 1050	/* Omnivision 9640, 9650 camera */
 #define I2C_DRIVERID_AK4641 1051
 
 /*
Modified: linux4palm/linux/branches/cleanup-branch-never-commit/include/linux/leds.h
===================================================================
--- linux4palm/linux/branches/cleanup-branch-never-commit/include/linux/leds.h	2007-09-17 14:11:49 UTC (rev 1325)
+++ linux4palm/linux/branches/cleanup-branch-never-commit/include/linux/leds.h	2007-09-17 14:34:36 UTC (rev 1326)
@@ -174,6 +174,20 @@
 #else
 #define ledtrig_ide_activity() do {} while(0)
 #endif
+
+/* For the leds-gpio driver */
+struct gpio_led {
+	const char *name;
+	char *default_trigger;
+	unsigned 	gpio;
+	u8 		active_low;
+};
+
+struct gpio_led_platform_data {
+	int 		num_leds;
+	struct gpio_led *leds;
+};
+
 #if defined(CONFIG_LEDS_TRIGGER_MMC_CARD) || defined(CONFIG_LEDS_TRIGGER_MMC_CARD_MODULE)
 extern void ledtrig_mmc_activity(void);
 #else
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <hap...@us...> - 2007-09-17 14:11:51
      
     | 
| Revision: 1325
          http://hackndev.svn.sourceforge.net/hackndev/?rev=1325&view=rev
Author:   happy-slapin
Date:     2007-09-17 07:11:49 -0700 (Mon, 17 Sep 2007)
Log Message:
-----------
cleanup: drivers/misc: update from hh.org
Modified Paths:
--------------
    linux4palm/linux/branches/cleanup-branch-never-commit/drivers/input/keyboard/Kconfig
    linux4palm/linux/branches/cleanup-branch-never-commit/drivers/misc/fsi_drv.c
    linux4palm/linux/branches/cleanup-branch-never-commit/drivers/misc/samcop_fsi.c
    linux4palm/linux/branches/cleanup-branch-never-commit/drivers/misc/samcop_fsi.h
    linux4palm/linux/branches/cleanup-branch-never-commit/drivers/pcmcia/pxa2xx_base.c
    linux4palm/linux/branches/cleanup-branch-never-commit/drivers/video/backlight/Makefile
Modified: linux4palm/linux/branches/cleanup-branch-never-commit/drivers/input/keyboard/Kconfig
===================================================================
--- linux4palm/linux/branches/cleanup-branch-never-commit/drivers/input/keyboard/Kconfig	2007-09-17 13:32:07 UTC (rev 1324)
+++ linux4palm/linux/branches/cleanup-branch-never-commit/drivers/input/keyboard/Kconfig	2007-09-17 14:11:49 UTC (rev 1325)
@@ -200,6 +200,12 @@
 	  This is more generic version of gpio_keys driver, supporting 
 	  GPIOs across different chips.
 
+config GPIODEV_KEYS2
+	tristate "Buttons on GPIOs, version 2"
+	help
+	  GPIO keyboard driver supportting multiple GPIOs per button, 
+	  as well as button priorities.
+
 config GPIODEV_DIAGONAL
 	tristate "Diagonal joypad on GPIO"
 	help
Modified: linux4palm/linux/branches/cleanup-branch-never-commit/drivers/misc/fsi_drv.c
===================================================================
--- linux4palm/linux/branches/cleanup-branch-never-commit/drivers/misc/fsi_drv.c	2007-09-17 13:32:07 UTC (rev 1324)
+++ linux4palm/linux/branches/cleanup-branch-never-commit/drivers/misc/fsi_drv.c	2007-09-17 14:11:49 UTC (rev 1325)
@@ -26,24 +26,26 @@
 #include <asm/arch/irqs.h>
 
 #include <asm/arch/fsi.h>
+#include <asm/arch/pxa-regs.h>
+#include <asm/arch/h5400-gpio.h>
 
 #include "samcop_fsi.h"
 
-atomic_t fsi_in_use;
-DECLARE_WAIT_QUEUE_HEAD(fsi_rqueue);
-struct timer_list fsi_temp_timer;
+static atomic_t fsi_in_use;
+static DECLARE_WAIT_QUEUE_HEAD(fsi_rqueue);
+static struct timer_list fsi_temp_timer;
 
-unsigned int fsi_prescale = 19;
-unsigned int fsi_dmi = 1124;
-unsigned int fsi_treshold_on = 20;
-unsigned int fsi_treshold_off = 4;
-unsigned int fsi_buffer_size = FSI_FRAME_SIZE * (sizeof(unsigned long)) * 3;
+static unsigned int fsi_prescale = 19;
+static unsigned int fsi_dmi = 1124;
+static unsigned int fsi_treshold_on = 20;
+static unsigned int fsi_treshold_off = 4;
+static unsigned int fsi_buffer_size = FSI_FRAME_SIZE * (sizeof(unsigned long)) * 3;
 
 volatile unsigned char fsi_lfrm = 0;
 
 static struct samcop_fsi *fsi_ = NULL;
 
-void fsi_set_mode(unsigned int cmd)
+static void fsi_set_mode(unsigned int cmd)
 {
 	static unsigned int current_mode = 0;
 	static unsigned long control_register = 0;
@@ -107,14 +109,14 @@
 	}
 }
 
-void fsi_timer_temp_callback(unsigned long input)
+static void fsi_timer_temp_callback(unsigned long input)
 {
 	printk(KERN_DEBUG "%s: stopping temperature increase (status=%d)\n", __FUNCTION__,
 	       samcop_fsi_get_control(fsi_) & FSI_CONTROL_TEMP);
 	fsi_set_mode(FSI_CMD_STOP_TEMP);
 }
 
-inline int fsi_analyze_column(struct fsi_read_state *read_state, unsigned int data)
+static inline int fsi_analyze_column(struct fsi_read_state *read_state, unsigned int data)
 {
 	if ((data & 0xEFEF) == 0xE0E0) { /* sync column */
 		read_state->frame_number++;
@@ -158,7 +160,7 @@
 	return 0;
 }
 
-void fsi_run_tasklet(unsigned long state_ptr)
+static void fsi_run_tasklet(unsigned long state_ptr)
 {
 	unsigned int i;
 	unsigned long data;
@@ -202,14 +204,14 @@
 
 DECLARE_TASKLET_DISABLED(fsi_tasklet,fsi_run_tasklet,0);
 
-int fsi_irq_handler(int irq, void *dev_id, struct pt_regs *regs)
+static irqreturn_t fsi_irq_handler(int irq, void *dev_id)
 {
 	unsigned int fifo_status;
 
 
 	fifo_status = samcop_fsi_get_status(fsi_);
 
-	if (fifo_status & 1) {
+	if (fifo_status & 1) { /* FIFO trigger */
 		fsi_set_mode(FSI_CMD_STOP_ACQ_INT);
 		tasklet_schedule(&fsi_tasklet);
 	}
@@ -226,10 +228,10 @@
 		fsi_lfrm = 1;
 		tasklet_schedule(&fsi_tasklet);
 	}
-	return 0;
+	return IRQ_HANDLED;
 }
 
-int fsi_copy_to_user(struct fsi_read_state *read_state, char *buf)
+static int fsi_copy_to_user(struct fsi_read_state *read_state, char *buf)
 {
 	unsigned int avail_words;
 
@@ -240,7 +242,14 @@
 	else
 		avail_words = read_state->write_pos - read_state->read_pos;
 	
-	if (copy_to_user(buf+read_state->word_count*4,read_state->buffer+read_state->read_pos,avail_words*4))
+	/* 'buf' is 'char*', but word_count denotes count in array of 'unsigned
+	 * long'. To get proper destination address, we need to multiple it by
+	 * sizeof(unsigned long).
+	 */
+
+	if (copy_to_user(buf+read_state->word_count*sizeof(unsigned long), 
+		read_state->buffer+read_state->read_pos,
+		avail_words*sizeof(unsigned long)))
 		return -EFAULT;
 
 	read_state->word_count += avail_words;
@@ -284,10 +293,13 @@
 
 	filp->private_data = read_state;
 
-#if 0
+#if 1 
 	/* GPIO61 turns out to be serial power, not fingerchip power.
 	   Any other guesses?  */
-	SET_GPIO(POWER_FP_N, 0); /* power on */
+	/* it _IS_ this GPIO. No idea what else it powers, but without it, ATMEL
+	 * chip returns zeroes. */
+	//SET_GPIO(POWER_FP_N, 0); /* power on */
+	SET_H5400_GPIO(POWER_RS232_N_OR_FS, 0);
 #endif
 	/* init hardware */
 	samcop_fsi_up(fsi_);
@@ -295,18 +307,19 @@
 	return 0;
 }
 
-int fsi_release(struct inode *inode, struct file *filp)
+static int fsi_release(struct inode *inode, struct file *filp)
 {
 	/* put scanner to sleep before we exit */
 	samcop_fsi_down(fsi_);
 
 	kfree(filp->private_data);
 	atomic_inc(&fsi_in_use);
+	SET_H5400_GPIO(POWER_RS232_N_OR_FS, 1);
 
 	return 0;
 }
 
-ssize_t fsi_read(struct file *filp, char *buf, size_t count, loff_t *offp)
+static ssize_t fsi_read(struct file *filp, char *buf, size_t count, loff_t *offp)
 {
 	int errval = 0;
 	struct fsi_read_state *read_state;
@@ -321,6 +334,7 @@
 	/* allocate buffer and initialize state */
 	read_state->buffer_size = fsi_buffer_size;
 	read_state->buffer = kmalloc(read_state->buffer_size,GFP_KERNEL);
+	read_state->buffer_size = fsi_buffer_size/sizeof(unsigned long);
 	if (read_state->buffer == NULL)
 		return -ENOMEM;
 
@@ -347,6 +361,7 @@
 
 	/* gather data */
 	while (read_state->word_count < read_state->word_dest) {
+		//printk (KERN_INFO "word_count: %d, word_dest: %d\n", read_state->word_count, read_state->word_dest);
 		interruptible_sleep_on(&fsi_rqueue);
 		if (signal_pending(current)) {
 			errval = -ERESTARTSYS;
@@ -380,7 +395,7 @@
 	return count;
 }
 
-int fsi_ioctl(struct inode *inode, struct file *filp, unsigned int cmd, unsigned long arg)
+static int fsi_ioctl(struct inode *inode, struct file *filp, unsigned int cmd, unsigned long arg)
 {
 	struct fsi_read_state *read_state;
 
@@ -474,15 +489,20 @@
 	return 0; 
 }
 
-void
+int
 fsi_detach(void)
 {
+	if (atomic_dec_and_test(&fsi_in_use)) {
+		atomic_inc(&fsi_in_use);
+		/* someone is using FSI at the moment, we can't quit */
+		return -EBUSY;
+	}
 	fsi_set_mode(FSI_CMD_STOP_TEMP);
 	del_timer(&fsi_temp_timer);
-	samcop_fsi_down(fsi_); /* Stop h/w */
 	free_irq(fsi_->irq, NULL);
 	fsi_ = NULL;
 	misc_deregister(&fsi_miscdev);
+	return 0;
 }
 
 MODULE_AUTHOR("J\xB0rgen Andreas Michaelsen <jor...@if...>");
Modified: linux4palm/linux/branches/cleanup-branch-never-commit/drivers/misc/samcop_fsi.c
===================================================================
--- linux4palm/linux/branches/cleanup-branch-never-commit/drivers/misc/samcop_fsi.c	2007-09-17 13:32:07 UTC (rev 1324)
+++ linux4palm/linux/branches/cleanup-branch-never-commit/drivers/misc/samcop_fsi.c	2007-09-17 14:11:49 UTC (rev 1325)
@@ -9,6 +9,7 @@
  *
  */
 
+
 #include <linux/module.h>
 #include <linux/init.h>
 #include <linux/kernel.h>
@@ -18,24 +19,24 @@
 #include <linux/clk.h>
 #include <asm/hardware.h>
 #include <asm/io.h>
-#include <asm/arch/ipaq.h>
 #include <asm/hardware/ipaq-samcop.h>
-#include <asm/hardware/samcop_base.h>
+#include <linux/mfd/samcop_base.h>
 #include <asm/hardware/samcop-fsi.h>
 
 #include "samcop_fsi.h"
 
 static inline void
-samcop_fsi_write_register (struct samcop_fsi *fsi, u32 reg, u16 val)
+samcop_fsi_write_register (struct samcop_fsi *fsi, u32 reg, u32 val)
 {
-	__raw_writew (val, reg + fsi->map);
+	fsi->fsi_data->write_reg (fsi->me, reg, val);
 }
 
-static inline u16
+static inline u32
 samcop_fsi_read_register (struct samcop_fsi *fsi, u32 reg)
 {
-	return __raw_readw (reg + fsi->map);
+	return fsi->fsi_data->read_reg (fsi->me, reg);
 }
+
 /*
  * Helper functions that provide samcop access to the fcd and fsi parts of the
  * fingerprint scanner
@@ -44,6 +45,7 @@
 void
 samcop_fsi_set_control (struct samcop_fsi *fsi, u32 val)
 {
+	val &= 0xff;
 	samcop_fsi_write_register (fsi, _SAMCOP_FSI_Control, val);
 }
 
@@ -100,7 +102,7 @@
 	/* tell scanner to sleep */
 	u32 control_register = 0;
 	control_register = samcop_fsi_get_control(fsi);
-	control_register |= ~SAMCOP_FSI_CONTROL_TEMP_PWR_ON;
+	control_register &= ~SAMCOP_FSI_CONTROL_TEMP_PWR_ON; // |= was here originally
 	samcop_fsi_set_control(fsi, control_register);
 
 	/* disable PCLK */
@@ -110,40 +112,69 @@
 void
 samcop_fsi_set_status (struct samcop_fsi *fsi, u32 val)
 {
-	samcop_fsi_write_register (fsi, SAMCOP_FSI_STA, val);
+	samcop_fsi_write_register (fsi, _SAMCOP_FSI_STA, val);
 }
 
 u32
 samcop_fsi_get_status (struct samcop_fsi *fsi)
 {
-	return samcop_fsi_read_register (fsi, SAMCOP_FSI_STA);
+	return samcop_fsi_read_register (fsi, _SAMCOP_FSI_STA);
 }
 
 u32
 samcop_fsi_read_data (struct samcop_fsi *fsi)
 {
-	return samcop_fsi_read_register (fsi, SAMCOP_FSI_DAT);
+	return samcop_fsi_read_register (fsi, _SAMCOP_FSI_DAT);
 }
 
 static int
-samcop_fsi_probe (struct device *dev)
+samcop_fsi_probe (struct platform_device *pdev)
 {
 	int result = 0;
 	struct samcop_fsi *fsi;
-	struct platform_device *sdev = to_platform_device (dev);
 
 	fsi = kmalloc (sizeof (*fsi), GFP_KERNEL);
 	if (!fsi)
 		return -ENOMEM;
 	memset (fsi, 0, sizeof (*fsi));
 
-	fsi->parent = dev->parent;
-	dev->driver_data = fsi;
+	fsi->parent = pdev->dev.parent;
+	platform_set_drvdata(pdev, fsi);
 
-	fsi->map = (void *)sdev->resource[1].start;
-	fsi->irq = sdev->resource[2].start;
+	/* Is this really correct? Some other drivers use this approach, but
+	 * this was already once ioremapped by samcop_base, so we could possibly
+	 * use that mapping and not create new one (approach similar to
+	 * samcop_sdi).
+	 */
 
-	fsi->clk = clk_get(dev, "fsi");
+	fsi->map = ioremap(pdev->resource[0].start, 
+			pdev->resource[0].end - pdev->resource[0].start + 1);
+	fsi->irq = pdev->resource[1].start;
+	pr_debug("FSI at 0x%p, IRQ %d\n", fsi->map, fsi->irq);
+
+	fsi->clk = clk_get(&pdev->dev, "fsi");
+	if (!fsi->clk) {
+		printk(KERN_ERR "samcop_fsi: Could not get fsi clock");
+		iounmap(fsi->map);
+		kfree(fsi);
+		result = -EBUSY;
+	};
+
+	fsi->fsi_data = pdev->dev.platform_data;
+	fsi->me = &pdev->dev;
+/*	
+	fsi->set_control = samcop_fsi_set_control;
+	fsi->get_control = samcop_fsi_get_control;
+	fsi->set_status = samcop_fsi_set_status;
+	fsi->get_status = samcop_fsi_get_status;
+	fsi->read_data = samcop_fsi_read_data;
+	fsi->up = samcop_fsi_up;
+	fsi->down = samcop_fsi_down;
+	fsi->set_fifo_control = samcop_fsi_set_fifo_control;
+	fsi->set_prescaler = samcop_fsi_set_prescaler;
+	fsi->set_dmc = samcop_fsi_set_dmc;
+*/
+
 	if (IS_ERR(fsi->clk)) {
 		printk(KERN_ERR "failed to get fsi clock\n");
 		kfree (fsi);
@@ -154,33 +185,40 @@
 		printk("couldn't attach fsi driver: error %d\n", result);
 		kfree (fsi);
 	}
+	
 
 	return result;
 }
 
 static int
-samcop_fsi_remove (struct device *dev)
+samcop_fsi_remove (struct platform_device *dev)
 {
-	struct samcop_fsi *fsi = dev->driver_data;
-	fsi_detach();
+	struct samcop_fsi *fsi = platform_get_drvdata(dev);
+	int result = 0;
+	result = fsi_detach();
+	if (result != 0)
+		return result;
+	iounmap(fsi->map);
 	kfree (fsi);
-	return 0;
+	return result;
 }
 
 static int
-samcop_fsi_suspend (struct device *dev, pm_message_t state)
+samcop_fsi_suspend (struct platform_device *dev, pm_message_t state)
 {
 	return 0;
 }
 
 static int
-samcop_fsi_resume (struct device *dev)
+samcop_fsi_resume (struct platform_device *dev)
 {
 	return 0;
 }
 
-struct device_driver samcop_fsi_device_driver = {
-	.name    = "samcop fsi",
+struct platform_driver samcop_fsi_device_driver = {
+	.driver = {
+		.name    = "samcop fsi",
+	},
 	.probe   = samcop_fsi_probe,
 	.remove  = samcop_fsi_remove,
 	.suspend = samcop_fsi_suspend,
@@ -189,12 +227,12 @@
 
 static int samcop_fsi_init (void)
 {
-	return driver_register (&samcop_fsi_device_driver);
+	return platform_driver_register (&samcop_fsi_device_driver);
 }
 
 static void samcop_fsi_cleanup (void)
 {
-	driver_unregister (&samcop_fsi_device_driver);
+	platform_driver_unregister (&samcop_fsi_device_driver);
 }
 
 module_init(samcop_fsi_init);
Modified: linux4palm/linux/branches/cleanup-branch-never-commit/drivers/misc/samcop_fsi.h
===================================================================
--- linux4palm/linux/branches/cleanup-branch-never-commit/drivers/misc/samcop_fsi.h	2007-09-17 13:32:07 UTC (rev 1324)
+++ linux4palm/linux/branches/cleanup-branch-never-commit/drivers/misc/samcop_fsi.h	2007-09-17 14:11:49 UTC (rev 1325)
@@ -10,14 +10,26 @@
 #ifndef _SAMCOP_FSI_H_
 #define _SAMCOP_FSI_H_
 
+
+struct samcop_fsi_data {
+	u32     (*read_reg)(struct device *dev, u32 reg);
+	void    (*write_reg)(struct device *dev, u32 reg, u32 val);
+};
+
+
 struct samcop_fsi {
 	struct device 		*parent;	// parent struct for access to
 						// samcop registers
+	struct device 		*me;
 	void			*map;		// fsi register map
 	int			irq;		// data ready irq
 	struct clk		*clk;		// samcop fsi clk
+
+	struct samcop_fsi_data *fsi_data;
 };
 
+
+
 extern void samcop_fsi_set_control (struct samcop_fsi *fsi, u32 val);
 extern u32 samcop_fsi_get_control (struct samcop_fsi *fsi);
 extern void samcop_fsi_set_status (struct samcop_fsi *fsi, u32 val);
@@ -29,7 +41,8 @@
 extern void samcop_fsi_set_prescaler (struct samcop_fsi *fsi, u32 val);
 extern void samcop_fsi_set_dmc (struct samcop_fsi *fsi, u32 val);
 
+
 extern int fsi_attach (struct samcop_fsi *fsi);
-extern void fsi_detach (void);
+extern int fsi_detach (void);
 
 #endif /* _SAMCOP_FSI_H_ */
Modified: linux4palm/linux/branches/cleanup-branch-never-commit/drivers/pcmcia/pxa2xx_base.c
===================================================================
--- linux4palm/linux/branches/cleanup-branch-never-commit/drivers/pcmcia/pxa2xx_base.c	2007-09-17 13:32:07 UTC (rev 1324)
+++ linux4palm/linux/branches/cleanup-branch-never-commit/drivers/pcmcia/pxa2xx_base.c	2007-09-17 14:11:49 UTC (rev 1325)
@@ -59,7 +59,12 @@
 				     u_int mem_clk_10khz)
 {
 	u_int code = pcmcia_cycle_ns * mem_clk_10khz;
+// FIXME: There shouldn't be such #ifdef, added 20070803, resolve max in 6months
+#ifdef CONFIG_ARCH_H5400
+	return (code / 300000) + ((code % 300000) ? 1 : 0) + 1;
+#else
 	return (code / 300000) + ((code % 300000) ? 1 : 0) - 1;
+#endif
 }
 
 static inline u_int pxa2xx_mcxx_setup(u_int pcmcia_cycle_ns,
Modified: linux4palm/linux/branches/cleanup-branch-never-commit/drivers/video/backlight/Makefile
===================================================================
--- linux4palm/linux/branches/cleanup-branch-never-commit/drivers/video/backlight/Makefile	2007-09-17 13:32:07 UTC (rev 1324)
+++ linux4palm/linux/branches/cleanup-branch-never-commit/drivers/video/backlight/Makefile	2007-09-17 14:11:49 UTC (rev 1325)
@@ -1,13 +1,13 @@
 # Backlight & LCD drivers
 
-obj-$(CONFIG_LCD_CLASS_DEVICE)		+= lcd.o
-obj-$(CONFIG_BACKLIGHT_CLASS_DEVICE)	+= backlight.o
-obj-$(CONFIG_BACKLIGHT_CORGI)		+= corgi_bl.o
-obj-$(CONFIG_BACKLIGHT_HP680)		+= hp680_bl.o
-obj-$(CONFIG_BACKLIGHT_LOCOMO)		+= locomolcd.o
-obj-$(CONFIG_BACKLIGHT_PROGEAR)		+= progear_bl.o
-obj-$(CONFIG_BACKLIGHT_HX2750)		+= hx2750_bl.o
-obj-$(CONFIG_BACKLIGHT_H2200)		+= h2200_bl.o
-obj-$(CONFIG_LCD_H2200)			+= h2200_lcd.o
-obj-$(CONFIG_BACKLIGHT_S3C2410)		+= s3c2410_lcd.o
+obj-$(CONFIG_LCD_CLASS_DEVICE)     += lcd.o
+obj-$(CONFIG_BACKLIGHT_CLASS_DEVICE) += backlight.o
+obj-$(CONFIG_BACKLIGHT_CORGI)	+= corgi_bl.o
+obj-$(CONFIG_BACKLIGHT_HP680)	+= hp680_bl.o
+obj-$(CONFIG_BACKLIGHT_LOCOMO)	+= locomolcd.o
+obj-$(CONFIG_BACKLIGHT_PROGEAR) += progear_bl.o
+obj-$(CONFIG_BACKLIGHT_HX2750)	+= hx2750_bl.o
+obj-$(CONFIG_BACKLIGHT_H2200)	+= h2200_bl.o
+obj-$(CONFIG_LCD_H2200)		+= h2200_lcd.o
+obj-$(CONFIG_BACKLIGHT_S3C2410)       += s3c2410_lcd.o
 
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 |