Skip to contentSkip to conversation

Power: DA9052 battery driver

PATCH Superseded ashishj3 2 participants 2 messages Jul 14, 2011 – Jul 15, 2011

v1 of 2 Superseded Latest is v2 →

lore
Share & tools
lore

ashishj3

author
#0 lore raw

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
index cc019c9..0cee85a 100644
@@ -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
index 8fcd93f..933d121 100644
@@ -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

#1 lore raw

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.