From: Pali Rohár Date: Tue, 10 Jul 2012 09:27:44 +0000 (+0200) Subject: bq27x00_battery: Add patch bq27x00-sysfs-registers.diff which export all registers... X-Git-Tag: v51~3 X-Git-Url: http://vcs.maemo.org/git/?p=kernel-power;a=commitdiff_plain;h=d40aed045abdfa257a112079efe7e4a03d9de656 bq27x00_battery: Add patch bq27x00-sysfs-registers.diff which export all registers to sysfs entry /sys/class/power_supply/bq27200-0/registers --- diff --git a/kernel-power-2.6.28/debian/patches/bq27x00-sysfs-registers.diff b/kernel-power-2.6.28/debian/patches/bq27x00-sysfs-registers.diff new file mode 100644 index 0000000..3f0ac97 --- /dev/null +++ b/kernel-power-2.6.28/debian/patches/bq27x00-sysfs-registers.diff @@ -0,0 +1,89 @@ +--- kernel-power/drivers/power/bq27x00_battery.c.orig 2012-07-10 08:45:20.296054973 +0200 ++++ kernel-power/drivers/power/bq27x00_battery.c 2012-07-10 10:21:21.043990227 +0200 +@@ -718,6 +718,70 @@ static void bq27x00_battery_reg_exit(str + di->regdev = NULL; + } + ++/* code for register device access via sysfs */ ++ ++static ssize_t bq27x00_battery_sysfs_print_reg(struct bq27x00_device_info *di, ++ u8 reg, bool single, char *buf) ++{ ++ int ret = bq27x00_read(di, reg, single); ++ if (ret < 0) ++ return sprintf(buf, "%#.2x=error %d\n", reg, ret); ++ else ++ return sprintf(buf, "%#.2x=%#.2x\n", reg, ret); ++} ++ ++static ssize_t bq27x00_battery_sysfs_show_registers(struct device *dev, ++ struct device_attribute *attr, char *buf) ++{ ++ struct power_supply *psy = dev_get_drvdata(dev); ++ struct bq27x00_device_info *di = container_of(psy, ++ struct bq27x00_device_info, ++ bat); ++ u8 reg; ++ ssize_t ret = 0; ++ ++ for (reg=0x00; reg<=0x01; reg+=1) ++ ret += bq27x00_battery_sysfs_print_reg(di, reg, true, buf+ret); ++ ++ for (reg=0x02; reg<=0x08; reg+=2) ++ ret += bq27x00_battery_sysfs_print_reg(di, reg, false, buf+ret); ++ ++ for (reg=0x0A; reg<=0x0B; reg+=1) ++ ret += bq27x00_battery_sysfs_print_reg(di, reg, true, buf+ret); ++ ++ for (reg=0x0C; reg<=0x2A; reg+=2) ++ ret += bq27x00_battery_sysfs_print_reg(di, reg, false, buf+ret); ++ ++ for (reg=0x2C; reg<=0x7F; reg+=1) ++ ret += bq27x00_battery_sysfs_print_reg(di, reg, true, buf+ret); ++ ++ return ret; ++} ++ ++static DEVICE_ATTR(registers, S_IRUGO, ++ bq27x00_battery_sysfs_show_registers, NULL); ++ ++static struct attribute *bq27x00_battery_sysfs_attributes[] = { ++ &dev_attr_registers.attr, ++ NULL, ++}; ++ ++static const struct attribute_group bq27x00_battery_sysfs_attr_group = { ++ .attrs = bq27x00_battery_sysfs_attributes, ++}; ++ ++static int bq27x00_battery_sysfs_init(struct bq27x00_device_info *di) ++{ ++ return sysfs_create_group(&di->bat.dev->kobj, ++ &bq27x00_battery_sysfs_attr_group); ++} ++ ++static void bq27x00_battery_sysfs_exit(struct bq27x00_device_info *di) ++{ ++ sysfs_remove_group(&di->bat.dev->kobj, ++ &bq27x00_battery_sysfs_attr_group); ++} ++ + static int bq27x00_powersupply_init(struct bq27x00_device_info *di) + { + int ret; +@@ -741,6 +805,7 @@ static int bq27x00_powersupply_init(stru + + bq27x00_update(di); + bq27x00_battery_reg_init(di); ++ bq27x00_battery_sysfs_init(di); + + return 0; + } +@@ -754,6 +819,7 @@ static void bq27x00_powersupply_unregist + cancel_delayed_work_sync(&di->work); + + bq27x00_battery_reg_exit(di); ++ bq27x00_battery_sysfs_exit(di); + + power_supply_unregister(&di->bat); + diff --git a/kernel-power-2.6.28/debian/patches/series b/kernel-power-2.6.28/debian/patches/series index 4128432..50f0f8e 100644 --- a/kernel-power-2.6.28/debian/patches/series +++ b/kernel-power-2.6.28/debian/patches/series @@ -44,6 +44,7 @@ power-supply-no-verbose.diff bq27x00-rx51-board.diff bq27x00-upstream.diff bq27x00-maemo.diff +bq27x00-sysfs-registers.diff l2cap_parent.diff wl12xx-rx-fix.diff anti-io-stalling.diff