|
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.
|