* [PATCH 0/2] Add MAX17055 fuel guage
@ 2019-12-02 15:25 Angus Ainslie (Purism)
2019-12-02 15:25 ` [PATCH 1/2] power: supply: max17042: add MAX17055 support Angus Ainslie (Purism)
2019-12-02 15:25 ` [PATCH 2/2] dts: bindings: max17042_battery: add all of the compatible strings Angus Ainslie (Purism)
0 siblings, 2 replies; 6+ messages in thread
From: Angus Ainslie (Purism) @ 2019-12-02 15:25 UTC (permalink / raw)
To: linux-pm
Cc: Sebastian Reichel, Rob Herring, Mark Rutland, devicetree,
linux-kernel, kernel, Angus Ainslie (Purism)
Extend the max17042_battery driver to include the MAX17055.
Angus Ainslie (Purism) (2):
power: supply: max17042: add MAX17055 support
dts: bindings: max17042_battery: add all of the compatible strings
.../power/supply/max17042_battery.txt | 6 ++-
drivers/power/supply/max17042_battery.c | 15 ++++--
include/linux/power/max17042_battery.h | 48 ++++++++++++++++++-
3 files changed, 64 insertions(+), 5 deletions(-)
--
2.17.1
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 1/2] power: supply: max17042: add MAX17055 support
2019-12-02 15:25 [PATCH 0/2] Add MAX17055 fuel guage Angus Ainslie (Purism)
@ 2019-12-02 15:25 ` Angus Ainslie (Purism)
2019-12-04 7:21 ` Krzysztof Kozlowski
2019-12-02 15:25 ` [PATCH 2/2] dts: bindings: max17042_battery: add all of the compatible strings Angus Ainslie (Purism)
1 sibling, 1 reply; 6+ messages in thread
From: Angus Ainslie (Purism) @ 2019-12-02 15:25 UTC (permalink / raw)
To: linux-pm
Cc: Sebastian Reichel, Rob Herring, Mark Rutland, devicetree,
linux-kernel, kernel, Angus Ainslie (Purism)
The MAX17055 is very similar to the MAX17042 so extend the driver.
Signed-off-by: Angus Ainslie (Purism) <angus@akkea.ca>
---
drivers/power/supply/max17042_battery.c | 15 ++++++--
include/linux/power/max17042_battery.h | 48 ++++++++++++++++++++++++-
2 files changed, 59 insertions(+), 4 deletions(-)
diff --git a/drivers/power/supply/max17042_battery.c b/drivers/power/supply/max17042_battery.c
index 0dfad2cf13fe..cecf6e2d8329 100644
--- a/drivers/power/supply/max17042_battery.c
+++ b/drivers/power/supply/max17042_battery.c
@@ -282,6 +282,8 @@ static int max17042_get_property(struct power_supply *psy,
case POWER_SUPPLY_PROP_VOLTAGE_MIN_DESIGN:
if (chip->chip_type == MAXIM_DEVICE_TYPE_MAX17042)
ret = regmap_read(map, MAX17042_V_empty, &data);
+ else if (chip->chip_type == MAXIM_DEVICE_TYPE_MAX17055)
+ ret = regmap_read(map, MAX17055_V_empty, &data);
else
ret = regmap_read(map, MAX17047_V_empty, &data);
if (ret < 0)
@@ -627,7 +629,8 @@ static void max17042_write_config_regs(struct max17042_chip *chip)
config->filter_cfg);
regmap_write(map, MAX17042_RelaxCFG, config->relax_cfg);
if (chip->chip_type == MAXIM_DEVICE_TYPE_MAX17047 ||
- chip->chip_type == MAXIM_DEVICE_TYPE_MAX17050)
+ chip->chip_type == MAXIM_DEVICE_TYPE_MAX17050 ||
+ chip->chip_type == MAXIM_DEVICE_TYPE_MAX17055)
regmap_write(map, MAX17047_FullSOCThr,
config->full_soc_thresh);
}
@@ -758,6 +761,8 @@ static inline void max17042_override_por_values(struct max17042_chip *chip)
if (chip->chip_type == MAXIM_DEVICE_TYPE_MAX17042)
max17042_override_por(map, MAX17042_V_empty, config->vempty);
+ if (chip->chip_type == MAXIM_DEVICE_TYPE_MAX17055)
+ max17042_override_por(map, MAX17055_V_empty, config->vempty);
else
max17042_override_por(map, MAX17047_V_empty, config->vempty);
max17042_override_por(map, MAX17042_TempNom, config->temp_nom);
@@ -765,7 +770,8 @@ static inline void max17042_override_por_values(struct max17042_chip *chip)
max17042_override_por(map, MAX17042_FCTC, config->fctc);
max17042_override_por(map, MAX17042_RCOMP0, config->rcomp0);
max17042_override_por(map, MAX17042_TempCo, config->tcompc0);
- if (chip->chip_type) {
+ if (chip->chip_type &&
+ (chip->chip_type != MAXIM_DEVICE_TYPE_MAX17055)) {
max17042_override_por(map, MAX17042_EmptyTempCo,
config->empty_tempco);
max17042_override_por(map, MAX17042_K_empty0,
@@ -929,7 +935,8 @@ max17042_get_default_pdata(struct max17042_chip *chip)
if (!pdata)
return pdata;
- if (chip->chip_type != MAXIM_DEVICE_TYPE_MAX17042) {
+ if (chip->chip_type != MAXIM_DEVICE_TYPE_MAX17042 &&
+ chip->chip_type != MAXIM_DEVICE_TYPE_MAX17055) {
pdata->init_data = max17047_default_pdata_init_regs;
pdata->num_init_data =
ARRAY_SIZE(max17047_default_pdata_init_regs);
@@ -1167,6 +1174,7 @@ static const struct of_device_id max17042_dt_match[] = {
{ .compatible = "maxim,max17042" },
{ .compatible = "maxim,max17047" },
{ .compatible = "maxim,max17050" },
+ { .compatible = "maxim,max17055" },
{ },
};
MODULE_DEVICE_TABLE(of, max17042_dt_match);
@@ -1176,6 +1184,7 @@ static const struct i2c_device_id max17042_id[] = {
{ "max17042", MAXIM_DEVICE_TYPE_MAX17042 },
{ "max17047", MAXIM_DEVICE_TYPE_MAX17047 },
{ "max17050", MAXIM_DEVICE_TYPE_MAX17050 },
+ { "max17055", MAXIM_DEVICE_TYPE_MAX17055 },
{ }
};
MODULE_DEVICE_TABLE(i2c, max17042_id);
diff --git a/include/linux/power/max17042_battery.h b/include/linux/power/max17042_battery.h
index 4badd5322949..d55c746ac56e 100644
--- a/include/linux/power/max17042_battery.h
+++ b/include/linux/power/max17042_battery.h
@@ -105,11 +105,56 @@ enum max17042_register {
MAX17042_OCV = 0xEE,
- MAX17042_OCVInternal = 0xFB,
+ MAX17042_OCVInternal = 0xFB, /* MAX17055 VFOCV */
MAX17042_VFSOC = 0xFF,
};
+enum max17055_register {
+ MAX17055_QRes = 0x0C,
+ MAX17055_TTF = 0x20,
+ MAX17055_V_empty = 0x3A,
+ MAX17055_TIMER = 0x3E,
+ MAX17055_USER_MEM = 0x40,
+ MAX17055_RGAIN = 0x42,
+
+ MAX17055_ConvgCfg = 0x49,
+ MAX17055_VFRemCap = 0x4A,
+
+ MAX17055_STATUS2 = 0xB0,
+ MAX17055_POWER = 0xB1,
+ MAX17055_ID = 0xB2,
+ MAX17055_AvgPower = 0xB3,
+ MAX17055_IAlrtTh = 0xB4,
+ MAX17055_TTFCfg = 0xB5,
+ MAX17055_CVMixCap = 0xB6,
+ MAX17055_CVHalfTime = 0xB7,
+ MAX17055_CGTempCo = 0xB8,
+ MAX17055_Curve = 0xB9,
+ MAX17055_HibCfg = 0xBA,
+ MAX17055_Config2 = 0xBB,
+ MAX17055_VRipple = 0xBC,
+ MAX17055_RippleCfg = 0xBD,
+ MAX17055_TimerH = 0xBE,
+
+ MAX17055_RSense = 0xD0,
+ MAX17055_ScOcvLim = 0xD1,
+
+ MAX17055_SOCHold = 0xD3,
+ MAX17055_MaxPeakPwr = 0xD4,
+ MAX17055_SusPeakPwr = 0xD5,
+ MAX17055_PackResistance = 0xD6,
+ MAX17055_SysResistance = 0xD7,
+ MAX17055_MinSysV = 0xD8,
+ MAX17055_MPPCurrent = 0xD9,
+ MAX17055_SPPCurrent = 0xDA,
+ MAX17055_ModelCfg = 0xDB,
+ MAX17055_AtQResidual = 0xDC,
+ MAX17055_AtTTE = 0xDD,
+ MAX17055_AtAvSOC = 0xDE,
+ MAX17055_AtAvCap = 0xDF,
+};
+
/* Registers specific to max17047/50 */
enum max17047_register {
MAX17047_QRTbl00 = 0x12,
@@ -125,6 +170,7 @@ enum max170xx_chip_type {
MAXIM_DEVICE_TYPE_MAX17042,
MAXIM_DEVICE_TYPE_MAX17047,
MAXIM_DEVICE_TYPE_MAX17050,
+ MAXIM_DEVICE_TYPE_MAX17055,
MAXIM_DEVICE_TYPE_NUM
};
--
2.17.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 2/2] dts: bindings: max17042_battery: add all of the compatible strings
2019-12-02 15:25 [PATCH 0/2] Add MAX17055 fuel guage Angus Ainslie (Purism)
2019-12-02 15:25 ` [PATCH 1/2] power: supply: max17042: add MAX17055 support Angus Ainslie (Purism)
@ 2019-12-02 15:25 ` Angus Ainslie (Purism)
2019-12-04 7:24 ` Krzysztof Kozlowski
2019-12-13 23:27 ` Rob Herring
1 sibling, 2 replies; 6+ messages in thread
From: Angus Ainslie (Purism) @ 2019-12-02 15:25 UTC (permalink / raw)
To: linux-pm
Cc: Sebastian Reichel, Rob Herring, Mark Rutland, devicetree,
linux-kernel, kernel, Angus Ainslie (Purism)
The bindings are missing documentation for some of the compatible
strings.
Signed-off-by: Angus Ainslie (Purism) <angus@akkea.ca>
---
.../devicetree/bindings/power/supply/max17042_battery.txt | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/Documentation/devicetree/bindings/power/supply/max17042_battery.txt b/Documentation/devicetree/bindings/power/supply/max17042_battery.txt
index 3f3894aaeebc..f34c5daae9af 100644
--- a/Documentation/devicetree/bindings/power/supply/max17042_battery.txt
+++ b/Documentation/devicetree/bindings/power/supply/max17042_battery.txt
@@ -2,7 +2,11 @@ max17042_battery
~~~~~~~~~~~~~~~~
Required properties :
- - compatible : "maxim,max17042"
+ - compatible : one of the following
+ * "maxim,max17042"
+ * "maxim,max17047"
+ * "maxim,max17050"
+ * "maxim,max17055"
Optional properties :
- maxim,rsns-microohm : Resistance of rsns resistor in micro Ohms
--
2.17.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH 1/2] power: supply: max17042: add MAX17055 support
2019-12-02 15:25 ` [PATCH 1/2] power: supply: max17042: add MAX17055 support Angus Ainslie (Purism)
@ 2019-12-04 7:21 ` Krzysztof Kozlowski
0 siblings, 0 replies; 6+ messages in thread
From: Krzysztof Kozlowski @ 2019-12-04 7:21 UTC (permalink / raw)
To: Angus Ainslie (Purism)
Cc: linux-pm, Sebastian Reichel, Rob Herring, Mark Rutland,
devicetree, linux-kernel, kernel
On Mon, 2 Dec 2019 at 23:27, Angus Ainslie (Purism) <angus@akkea.ca> wrote:
>
> The MAX17055 is very similar to the MAX17042 so extend the driver.
>
> Signed-off-by: Angus Ainslie (Purism) <angus@akkea.ca>
> ---
> drivers/power/supply/max17042_battery.c | 15 ++++++--
> include/linux/power/max17042_battery.h | 48 ++++++++++++++++++++++++-
> 2 files changed, 59 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/power/supply/max17042_battery.c b/drivers/power/supply/max17042_battery.c
> index 0dfad2cf13fe..cecf6e2d8329 100644
> --- a/drivers/power/supply/max17042_battery.c
> +++ b/drivers/power/supply/max17042_battery.c
> @@ -282,6 +282,8 @@ static int max17042_get_property(struct power_supply *psy,
> case POWER_SUPPLY_PROP_VOLTAGE_MIN_DESIGN:
> if (chip->chip_type == MAXIM_DEVICE_TYPE_MAX17042)
> ret = regmap_read(map, MAX17042_V_empty, &data);
> + else if (chip->chip_type == MAXIM_DEVICE_TYPE_MAX17055)
> + ret = regmap_read(map, MAX17055_V_empty, &data);
> else
> ret = regmap_read(map, MAX17047_V_empty, &data);
> if (ret < 0)
> @@ -627,7 +629,8 @@ static void max17042_write_config_regs(struct max17042_chip *chip)
> config->filter_cfg);
> regmap_write(map, MAX17042_RelaxCFG, config->relax_cfg);
> if (chip->chip_type == MAXIM_DEVICE_TYPE_MAX17047 ||
> - chip->chip_type == MAXIM_DEVICE_TYPE_MAX17050)
> + chip->chip_type == MAXIM_DEVICE_TYPE_MAX17050 ||
> + chip->chip_type == MAXIM_DEVICE_TYPE_MAX17055)
> regmap_write(map, MAX17047_FullSOCThr,
> config->full_soc_thresh);
> }
> @@ -758,6 +761,8 @@ static inline void max17042_override_por_values(struct max17042_chip *chip)
>
> if (chip->chip_type == MAXIM_DEVICE_TYPE_MAX17042)
> max17042_override_por(map, MAX17042_V_empty, config->vempty);
> + if (chip->chip_type == MAXIM_DEVICE_TYPE_MAX17055)
> + max17042_override_por(map, MAX17055_V_empty, config->vempty);
> else
> max17042_override_por(map, MAX17047_V_empty, config->vempty);
> max17042_override_por(map, MAX17042_TempNom, config->temp_nom);
> @@ -765,7 +770,8 @@ static inline void max17042_override_por_values(struct max17042_chip *chip)
> max17042_override_por(map, MAX17042_FCTC, config->fctc);
> max17042_override_por(map, MAX17042_RCOMP0, config->rcomp0);
> max17042_override_por(map, MAX17042_TempCo, config->tcompc0);
> - if (chip->chip_type) {
> + if (chip->chip_type &&
> + (chip->chip_type != MAXIM_DEVICE_TYPE_MAX17055)) {
Since the list is growing, I would prefer here similar approach as in
max17042_write_config_regs() - explicitly list devices (white list,
not black list).
> max17042_override_por(map, MAX17042_EmptyTempCo,
> config->empty_tempco);
> max17042_override_por(map, MAX17042_K_empty0,
> @@ -929,7 +935,8 @@ max17042_get_default_pdata(struct max17042_chip *chip)
> if (!pdata)
> return pdata;
>
> - if (chip->chip_type != MAXIM_DEVICE_TYPE_MAX17042) {
> + if (chip->chip_type != MAXIM_DEVICE_TYPE_MAX17042 &&
> + chip->chip_type != MAXIM_DEVICE_TYPE_MAX17055) {
The same.
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 2/2] dts: bindings: max17042_battery: add all of the compatible strings
2019-12-02 15:25 ` [PATCH 2/2] dts: bindings: max17042_battery: add all of the compatible strings Angus Ainslie (Purism)
@ 2019-12-04 7:24 ` Krzysztof Kozlowski
2019-12-13 23:27 ` Rob Herring
1 sibling, 0 replies; 6+ messages in thread
From: Krzysztof Kozlowski @ 2019-12-04 7:24 UTC (permalink / raw)
To: Angus Ainslie (Purism)
Cc: linux-pm, Sebastian Reichel, Rob Herring, Mark Rutland,
devicetree, linux-kernel, kernel
On Mon, 2 Dec 2019 at 23:26, Angus Ainslie (Purism) <angus@akkea.ca> wrote:
>
> The bindings are missing documentation for some of the compatible
> strings.
>
> Signed-off-by: Angus Ainslie (Purism) <angus@akkea.ca>
> ---
> .../devicetree/bindings/power/supply/max17042_battery.txt | 6 +++++-
> 1 file changed, 5 insertions(+), 1 deletion(-)
Reviewed-by: Krzysztof Kozlowski <krzk@kernel.org>
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 2/2] dts: bindings: max17042_battery: add all of the compatible strings
2019-12-02 15:25 ` [PATCH 2/2] dts: bindings: max17042_battery: add all of the compatible strings Angus Ainslie (Purism)
2019-12-04 7:24 ` Krzysztof Kozlowski
@ 2019-12-13 23:27 ` Rob Herring
1 sibling, 0 replies; 6+ messages in thread
From: Rob Herring @ 2019-12-13 23:27 UTC (permalink / raw)
To: Angus Ainslie (Purism)
Cc: linux-pm, Sebastian Reichel, Mark Rutland, devicetree,
linux-kernel, kernel, Angus Ainslie (Purism)
On Mon, 2 Dec 2019 08:25:20 -0700, "Angus Ainslie (Purism)" wrote:
> The bindings are missing documentation for some of the compatible
> strings.
>
> Signed-off-by: Angus Ainslie (Purism) <angus@akkea.ca>
> ---
> .../devicetree/bindings/power/supply/max17042_battery.txt | 6 +++++-
> 1 file changed, 5 insertions(+), 1 deletion(-)
>
Acked-by: Rob Herring <robh@kernel.org>
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2019-12-13 23:27 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-12-02 15:25 [PATCH 0/2] Add MAX17055 fuel guage Angus Ainslie (Purism)
2019-12-02 15:25 ` [PATCH 1/2] power: supply: max17042: add MAX17055 support Angus Ainslie (Purism)
2019-12-04 7:21 ` Krzysztof Kozlowski
2019-12-02 15:25 ` [PATCH 2/2] dts: bindings: max17042_battery: add all of the compatible strings Angus Ainslie (Purism)
2019-12-04 7:24 ` Krzysztof Kozlowski
2019-12-13 23:27 ` Rob Herring
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).