Re: [PATCH 1/2] Add support for OneWire (W1) devices family 0x26 (MAX17211/MAX17215)

From: Alex A. Mihaylov
Date: Mon May 01 2017 - 02:14:57 EST


30.04.17 23:53, Sebastian Reichel wrote::
Slave device provide software layer for access to internal registers
MAX17211/MAX17215 chip.
Please convert this to regmap.There is no generic w1 handler, but you can provide custom
read/write functions.
I think regmap be overkill for this driver. the perception.
I did not ask for full usage of all regmap features. Just register
the read/write handler as regmap handler and use regmap_read/write
to get values.

OK, I think about this. But max17211-battery use ONLY w1_max12711x_reg_get(). This is very simple function.

Second function w1_max1721x_reg_set() writen for extend feature list (factory calibrating and init battery). I think, this code must _NOT_ be writen, and must _NOT_ be accessible for end user. Change calibration values potentially can damage battery or device. Theory, I can unexport this function and remove them from drivers code.

So output registers of Maxim M5 Fuel Gauge algorithm very simple: one register - one value. In driver I have two points with bitfield. First - battery connected from power supply props. Second: very optional device type from probe. This value _NOT_ used from driver - just write device type, if manufacturer not fill this data in chip nvram.

This moment driver use 14 registers. Ok, let's some time above will be 14*3=42 registers accessible with w1_max1721x_reg_get(). This value is greatly overestimated - so many properties are not in the class POWER_SUPPLY. But register range in MAX1721X is 0x1F0 (496 words or 992 bytes) of RAM for cache registers. As embedded system developer I dislike so ram management.

As result I repeat: regmap will be overkill for this driver. But OK, I try to write this code. Just for fun.