On Fri, Nov 16, 2018 at 05:24:03PM +0100, Lubomir Rintel wrote: > The battery and the protocol are essentially the same as OLPC XO 1.5, > but the responses from the EC are LSB first. > > Signed-off-by: Lubomir Rintel <lkundrak@xxxxx> > Acked-by: Pavel Machek <pavel@xxxxxx> > > --- > Changes since v1: > - s/s16 ecword_to_cpu/u16 ecword_to_cpu/ > - s/u16 ec_byte/u16 ec_word/ > > drivers/power/supply/olpc_battery.c | 23 ++++++++++++++++++----- > 1 file changed, 18 insertions(+), 5 deletions(-) > > diff --git a/drivers/power/supply/olpc_battery.c b/drivers/power/supply/olpc_battery.c ... > @@ -626,6 +635,10 @@ static int olpc_battery_probe(struct platform_device *pdev) > if (ecver > 0x44) { > /* XO 1 or 1.5 with a new EC firmware. */ > data->new_proto = 1; > + } else if (of_find_compatible_node(NULL, NULL, "olpc,xo1.75-ec")) { This if/else blocks concerns me a bit, but I might just be missing some context. This tests both ecver as well as the OF compatible string, is this reliable? Do we know that for all xo1.75-ec compatible nodes the ecver will be <= 0x44? Or, is ecver undefined? If the latter, then perhaps this test should be performed first? if (of_find_compatible_node....x01.75-ec...) ... else if (ecver > 0x44) ... else ... And what happens when ecver == 0x44? We test for > and < but not ==, <=, or >= in this block > + /* XO 1.75 */ > + data->new_proto = 1; > + data->little_endian = 1; > } else if (ecver < 0x44) { > /* > * We've seen a number of EC protocol changes; this driver > -- > 2.19.1 > > -- Darren Hart VMware Open Source Technology Center