Power: DA9052 battery driver
PATCH 4/11 Power: DA9052 battery driver
Driver for DA9052 battery charger. This driver depends on DA9052 MFD core dirver for definitions and methods.
--- drivers/power/Kconfig | 7 + drivers/power/Makefile | 1 + drivers/power/da9052-battery.c | 602 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 610 insertions(+), 0 deletions(-) create mode 100755 drivers/power/da9052-battery.c
drivers/power/Kconfig +7 -0
@@ -142,6 +142,13 @@ config BATTERY_DA9030 Say Y here to enable support for batteries charger integrated into DA9030 PMIC. +config BATTERY_DA9052 + tristate "Dialog DA9052 Battery" + depends on PMIC_DA9052 + help + Say Y here to enable support for batteries charger integrated into + DA9052 PMIC. + config BATTERY_MAX17040 tristate "Maxim MAX17040 Fuel Gauge" depends on I2C
drivers/power/Makefile +1 -0
@@ -24,6 +24,7 @@ obj-$(CONFIG_BATTERY_WM97XX) += wm97xx_battery.o obj-$(CONFIG_BATTERY_BQ20Z75) += bq20z75.o obj-$(CONFIG_BATTERY_BQ27x00) += bq27x00_battery.o obj-$(CONFIG_BATTERY_DA9030) += da9030_battery.o +obj-$(CONFIG_BATTERY_DA9052) += da9052-battery.o obj-$(CONFIG_BATTERY_MAX17040) += max17040_battery.o obj-$(CONFIG_BATTERY_MAX17042) += max17042_battery.o obj-$(CONFIG_BATTERY_Z2) += z2_battery.o
drivers/power/da9052-battery.c new file +602 -0
602 lines not on this page · raw message
drivers/power/da9052-battery.c line 175
Quoted 4 lines · On Thu, Jul 14, 2011 at 02:27:08PM +0530, ashishj3 wrote:
drivers/power/da9052-battery.c new file +4
-0+static inline int volt_reg_to_mV (int value) + {return ((value*1000 ) /512 ) +2500 ; } +static inline int ichg_reg_to_mA (int value) + {return ((value *3900 ) /1000 ); }
It'd be better to use the standard coding style for this stuff.
Quoted 4 lines
drivers/power/da9052-battery.c new file +4
-0+static int da9052_battery_read_temperature (struct da9052_battery *battery, +int *bat_temp) +{ +int count, avg_value[DA9052_AVERAGE_SIZE ];
drivers/power/da9052-battery.c line 203
Quoted 10 lines
drivers/power/da9052-battery.c new file +10
-0+ +for (count =0 ; count <DA9052_AVERAGE_SIZE ; count++) + avg_value[count] =da9052_adc_temperature_read (battery->da9052); +if (avg_value[count] <0 ) +return avg_value[count]; + + *bat_temp =da9052_average_calcuation (avg_value); + +return 0 ; +}
Don't do this, just return the reading let something higher up the stack figure out if it needs to take an average reading. Probably userspace. This isn't specific to this device, if we need to do something in the kernel it should be a core feature but I'd expect userspace can do a better job by looking at longer term trends.
drivers/power/da9052-battery.c line 509
Quoted 8 lines
drivers/power/da9052-battery.c new file +8
-0+static struct power_supply template_battery = { + .name ="da9052-bat" , + .type =POWER_SUPPLY_TYPE_BATTERY , + .properties = da9052_bat_props, + .num_properties =ARRAY_SIZE (da9052_bat_props), + .get_property = da9052_bat_get_property, + .use_for_apm =1 , +};
Hrm, use_for_apm isn't typically set by embedded battery drivers so probably shouldn't be set by this one. We should figure out some better way to set this, perhaps board specific, if it's needed.