Android max17044平台驱动注册
#ifdef CONFIG_BATTERY_MAX17040
#include <linux/max17040_battery.h>
static int max17043_charger_online(void)
{
int res = 0;
gpio_request(S5PV210_GPH1(6), "GPH1_6");
s3c_gpio_cfgpin(S5PV210_GPH1(6), S3C_GPIO_INPUT);
res = gpio_get_value(S5PV210_GPH1(6));
gpio_free(S5PV210_GPH1(6));
return res;
}
//static int max17043_battery_online(void)
static int max17043_ac_online(void)
{
return max17043_charger_online();
}
static int max17043_charger_enable(void)
{
int res = 0;
gpio_request(S5PV210_GPH0(5), "GPH0_5");
s3c_gpio_cfgpin(S5PV210_GPH0(5), S3C_GPIO_INPUT);
res = gpio_get_value(S5PV210_GPH0(5));
gpio_free(S5PV210_GPH0(5));
return res>0 ? 0:1;
}
static struct max17040_platform_data max17043_plat = {
.ac_online = max17043_ac_online,
//.battery_online = max17043_battery_online,
.charger_online = max17043_charger_online,
.charger_enable = max17043_charger_enable,
};
#endif
static struct i2c_board_info smdkv210_i2c_devs0[] __initdata = {
#ifdef CONFIG_BATTERY_MAX17040
{ I2C_BOARD_INFO("max17043", 0x36),
.platform_data = &max17043_plat}, /* MAX17043 */
#endif
};
在内核中配置Power supply class support中打开
Maxim MAX17040 Fuel Gauge的支持
在include/linux/max17040_battery.h中添加如下代码
struct max17040_platform_data {
int (*ac_online)(void);
int (*battery_online)(void);
int (*charger_online)(void);
int (*charger_enable)(void);
};
并修改drivers/power/max17040_battery.c
#define MAX17040_VCELL_MSB 0x02
#define MAX17040_VCELL_LSB 0x03
#define MAX17040_SOC_MSB 0x04
#define MAX17040_SOC_LSB 0x05
#define MAX17040_MODE_MSB 0x06
#define MAX17040_MODE_LSB 0x07
#define MAX17040_VER_MSB 0x08
#define MAX17040_VER_LSB 0x09
#define MAX17040_RCOMP_MSB 0x0C
#define MAX17040_RCOMP_LSB 0x0D
#define MAX17040_CMD_MSB 0xFE
#define MAX17040_CMD_LSB 0xFF
#define MAX17040_DELAY 1000
#define MAX17040_BATTERY_FULL 95
#undef _DPRINT_
#ifdef _DPRINT_
#define dprint(fmt, arg...) printk(fmt, ##arg)
#else
#define dprint(fmt, arg...)
#endif
struct max17040_ch