Dne Pá 24. července 2009 21:44:01 Robert Jarzmik napsal(a): > Marek Vasut <marek.vasut@xxxxxxxxx> writes: > > Dne St 22. července 2009 13:01:03 Marek Vasut napsal(a): > >> Ok, > >> Im sending the set again. > > > > This one should be acked by Anton already. > > > > From 54febe82847aeef3fcc02a074fd9d21def97f174 Mon Sep 17 00:00:00 2001 > > From: Marek Vasut <marek.vasut@xxxxxxxxx> > > Date: Tue, 21 Jul 2009 18:52:28 +0200 > > Subject: [PATCH 3/4] Convert WM97xx driver to use platform_data > > > > This patch converts the wm97xx driver to use platform_data supplied by > > ac97 bus. Also, this fixes the related wm97xx-battery driver to use > > it's platform_data and prepares a structure for touchscreen driver. > > > > Signed-off-by: Marek Vasut <marek.vasut@xxxxxxxxx> > > > > @@ -97,6 +105,7 @@ static void wm97xx_bat_external_power_changed(struct > > power_supply *bat_ps) static void wm97xx_bat_update(struct power_supply > > *bat_ps) > > { > > int old_status = bat_status; > > + struct wm97xx_batt_pdata *pdata = dev_get_drvdata(bat_ps->dev->parent); > > Are you sure of this line ? > Because when I add this line next to it : > printk(KERN_INFO "RJK: charge_gpio = %d\n", pdata->charge_gpio); > I get : > [ 160.079239] power_supply mioa701_battery: prop VOLTAGE_NOW=4012 > [ 160.089767] power_supply mioa701_battery: prop VOLTAGE_MAX=4032 > [ 160.099772] power_supply mioa701_battery: prop VOLTAGE_MIN=3072 > [ 160.111776] RJK: charge_gpio = 260440062 > > Needless to say that my kernel doesn't boot in that case (because of the > following gpio_get_value()). I was expecting to have "-1" in my printk. Argh ... right. Thanks, try attached patch. > > Cheers. > > -- > Robert
From 532c7e0d33c2366e658d13fcb57b68786307b74a Mon Sep 17 00:00:00 2001 From: Marek Vasut <marek.vasut@xxxxxxxxx> Date: Thu, 23 Jul 2009 15:52:08 +0200 Subject: [PATCH 3/7] Convert WM97xx battery to use platform_data This patch converts the wm97xx-battery driver to use platform_data supplied by ac97 bus. Signed-off-by: Marek Vasut <marek.vasut@xxxxxxxxx> --- drivers/power/wm97xx_battery.c | 26 +++++++++++++++++--------- include/linux/wm97xx.h | 18 ++++++++++++++++++ include/linux/wm97xx_batt.h | 26 -------------------------- 3 files changed, 35 insertions(+), 35 deletions(-) delete mode 100644 include/linux/wm97xx_batt.h diff --git a/drivers/power/wm97xx_battery.c b/drivers/power/wm97xx_battery.c index 8bde921..1e33366 100644 --- a/drivers/power/wm97xx_battery.c +++ b/drivers/power/wm97xx_battery.c @@ -22,17 +22,18 @@ #include <linux/spinlock.h> #include <linux/interrupt.h> #include <linux/gpio.h> -#include <linux/wm97xx_batt.h> static DEFINE_MUTEX(bat_lock); static struct work_struct bat_work; struct mutex work_lock; static int bat_status = POWER_SUPPLY_STATUS_UNKNOWN; -static struct wm97xx_batt_info *pdata; static enum power_supply_property *prop; static unsigned long wm97xx_read_bat(struct power_supply *bat_ps) { + struct wm97xx_pdata *wmdata = bat_ps->dev->parent->platform_data; + struct wm97xx_batt_pdata *pdata = wmdata->batt_pdata; + return wm97xx_read_aux_adc(bat_ps->dev->parent->driver_data, pdata->batt_aux) * pdata->batt_mult / pdata->batt_div; @@ -40,6 +41,9 @@ static unsigned long wm97xx_read_bat(struct power_supply *bat_ps) static unsigned long wm97xx_read_temp(struct power_supply *bat_ps) { + struct wm97xx_pdata *wmdata = bat_ps->dev->parent->platform_data; + struct wm97xx_batt_pdata *pdata = wmdata->batt_pdata; + return wm97xx_read_aux_adc(bat_ps->dev->parent->driver_data, pdata->temp_aux) * pdata->temp_mult / pdata->temp_div; @@ -49,6 +53,9 @@ static int wm97xx_bat_get_property(struct power_supply *bat_ps, enum power_supply_property psp, union power_supply_propval *val) { + struct wm97xx_pdata *wmdata = bat_ps->dev->parent->platform_data; + struct wm97xx_batt_pdata *pdata = wmdata->batt_pdata; + switch (psp) { case POWER_SUPPLY_PROP_STATUS: val->intval = bat_status; @@ -97,6 +104,8 @@ static void wm97xx_bat_external_power_changed(struct power_supply *bat_ps) static void wm97xx_bat_update(struct power_supply *bat_ps) { int old_status = bat_status; + struct wm97xx_pdata *wmdata = bat_ps->dev->parent->platform_data; + struct wm97xx_batt_pdata *pdata = wmdata->batt_pdata; mutex_lock(&work_lock); @@ -149,6 +158,8 @@ static int __devinit wm97xx_bat_probe(struct platform_device *dev) int ret = 0; int props = 1; /* POWER_SUPPLY_PROP_PRESENT */ int i = 0; + struct wm97xx_pdata *wmdata = dev->dev.platform_data; + struct wm97xx_batt_pdata *pdata = wmdata->batt_pdata; if (dev->id != -1) return -EINVAL; @@ -156,7 +167,7 @@ static int __devinit wm97xx_bat_probe(struct platform_device *dev) mutex_init(&work_lock); if (!pdata) { - dev_err(&dev->dev, "Please use wm97xx_bat_set_pdata\n"); + dev_err(&dev->dev, "No platform_data supplied\n"); return -EINVAL; } @@ -229,6 +240,9 @@ err: static int __devexit wm97xx_bat_remove(struct platform_device *dev) { + struct wm97xx_pdata *wmdata = dev->dev.platform_data; + struct wm97xx_batt_pdata *pdata = wmdata->batt_pdata; + if (pdata && pdata->charge_gpio && pdata->charge_gpio >= 0) gpio_free(pdata->charge_gpio); flush_scheduled_work(); @@ -258,12 +272,6 @@ static void __exit wm97xx_bat_exit(void) platform_driver_unregister(&wm97xx_bat_driver); } -void __init wm97xx_bat_set_pdata(struct wm97xx_batt_info *data) -{ - pdata = data; -} -EXPORT_SYMBOL_GPL(wm97xx_bat_set_pdata); - module_init(wm97xx_bat_init); module_exit(wm97xx_bat_exit); diff --git a/include/linux/wm97xx.h b/include/linux/wm97xx.h index 0c98781..38e8c4d 100644 --- a/include/linux/wm97xx.h +++ b/include/linux/wm97xx.h @@ -293,6 +293,24 @@ struct wm97xx { u16 suspend_mode; /* PRP in suspend mode */ }; +struct wm97xx_batt_pdata { + int batt_aux; + int temp_aux; + int charge_gpio; + int min_voltage; + int max_voltage; + int batt_div; + int batt_mult; + int temp_div; + int temp_mult; + int batt_tech; + char *batt_name; +}; + +struct wm97xx_pdata { + struct wm97xx_batt_pdata *batt_pdata; /* battery data */ +}; + /* * Codec GPIO access (not supported on WM9705) * This can be used to set/get codec GPIO and Virtual GPIO status. diff --git a/include/linux/wm97xx_batt.h b/include/linux/wm97xx_batt.h deleted file mode 100644 index 9681d1a..0000000 --- a/include/linux/wm97xx_batt.h +++ /dev/null @@ -1,26 +0,0 @@ -#ifndef _LINUX_WM97XX_BAT_H -#define _LINUX_WM97XX_BAT_H - -#include <linux/wm97xx.h> - -struct wm97xx_batt_info { - int batt_aux; - int temp_aux; - int charge_gpio; - int min_voltage; - int max_voltage; - int batt_div; - int batt_mult; - int temp_div; - int temp_mult; - int batt_tech; - char *batt_name; -}; - -#ifdef CONFIG_BATTERY_WM97XX -void __init wm97xx_bat_set_pdata(struct wm97xx_batt_info *data); -#else -static inline void wm97xx_bat_set_pdata(struct wm97xx_batt_info *data) {} -#endif - -#endif -- 1.6.3.3
_______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel