From: Geert Uytterhoeven on
On Tue, Jul 27, 2010 at 15:51, Anton Vorontsov <cbouatmailru(a)gmail.com> wrote:
> diff --git a/drivers/power/ds2782_battery.c b/drivers/power/ds2782_battery.c
> index d762a0c..9b3b4b7 100644
> --- a/drivers/power/ds2782_battery.c
> +++ b/drivers/power/ds2782_battery.c
> @@ -43,10 +43,9 @@
>  struct ds278x_info;
>
>  struct ds278x_battery_ops {
> -       int     (*get_current)(struct ds278x_info *info, int *current_uA);
> -       int     (*get_voltage)(struct ds278x_info *info, int *voltage_uA);
> -       int     (*get_capacity)(struct ds278x_info *info, int *capacity_uA);
> -
> +       int (*get_battery_current)(struct ds278x_info *info, int *current_uA);
> +       int (*get_battery_voltage)(struct ds278x_info *info, int *voltage_uA);
> +       int (*get_battery_capacity)(struct ds278x_info *info, int *capacity_uA);

What's the meaning of these `uA' namings? At first I thought `micro Ampère', but
that can't be correct for voltage (`uV'?) and capacity (`uAh'?).

So I had a look at the sources, and noticed:

| static int ds2782_get_voltage(struct ds278x_info *info, int *voltage_uA)
| {
| s16 raw;
| int err;
|
| /*
| * Voltage is measured in units of 4.88mV. The voltage is stored as
^^^^
| * a 10-bit number plus sign, in the upper bits of a 16-bit register
| */
| err = ds278x_read_reg16(info, DS278x_REG_VOLT_MSB, &raw);
| if (err)
| return err;
| *voltage_uA = (raw / 32) * 4800;
^^^^
These don't match?

So the voltage_uA unit is 1 mV?

| return 0;
| }
|
| static int ds2786_get_voltage(struct ds278x_info *info, int *voltage_uA)
| {
| s16 raw;
| int err;
|
| /*
| * Voltage is measured in units of 1.22mV. The voltage is stored as
| * a 10-bit number plus sign, in the upper bits of a 16-bit register
| */
| err = ds278x_read_reg16(info, DS278x_REG_VOLT_MSB, &raw);
| if (err)
| return err;
| *voltage_uA = (raw / 8) * 1220;
^
32? Or the comments above are wrong.

| return 0;
| }

Gr{oetje,eeting}s,

                        Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert(a)linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
From: Anton Vorontsov on
On Tue, Jul 27, 2010 at 04:03:14PM +0200, Geert Uytterhoeven wrote:
> On Tue, Jul 27, 2010 at 15:51, Anton Vorontsov <cbouatmailru(a)gmail.com> wrote:
> > diff --git a/drivers/power/ds2782_battery.c b/drivers/power/ds2782_battery.c
> > index d762a0c..9b3b4b7 100644
> > --- a/drivers/power/ds2782_battery.c
> > +++ b/drivers/power/ds2782_battery.c
> > @@ -43,10 +43,9 @@
> >  struct ds278x_info;
> >
> >  struct ds278x_battery_ops {
> > -       int     (*get_current)(struct ds278x_info *info, int *current_uA);
> > -       int     (*get_voltage)(struct ds278x_info *info, int *voltage_uA);
> > -       int     (*get_capacity)(struct ds278x_info *info, int *capacity_uA);
> > -
> > +       int (*get_battery_current)(struct ds278x_info *info, int *current_uA);
> > +       int (*get_battery_voltage)(struct ds278x_info *info, int *voltage_uA);
> > +       int (*get_battery_capacity)(struct ds278x_info *info, int *capacity_uA);
>
> What's the meaning of these `uA' namings? At first I thought `micro Ampère', but
> that can't be correct for voltage (`uV'?) and capacity (`uAh'?).

Yeah, the names aren't quite right. But they were wrong before
that patch too, so a patch on top to fix these issues will work.

Cc'ing driver authors.

Thanks Geert!

--
Anton Vorontsov
email: cbouatmailru(a)gmail.com
irc://irc.freenode.net/bd2
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/