[PATCH 57/88] power: Drop unused fg_max17042 driver and fuel gauge code

Jaehoon Chung jh80.chung at gmail.com
Tue Jan 31 13:53:23 CET 2023



On 1/24/23 07:00, Simon Glass wrote:
> This driver is not used. Drop it and the entire fuel_gauge directory,
> since there is nothing left.
> 
> Signed-off-by: Simon Glass <sjg at chromium.org>

Reviewed-by: Jaehoon Chung <jh80.chung at samsung.com>

Best Regards,
Jaehoon Chung

> ---
> 
>  drivers/power/Makefile                 |   1 -
>  drivers/power/fuel_gauge/Makefile      |   6 -
>  drivers/power/fuel_gauge/fg_max17042.c | 287 -------------------------
>  include/power/fg_battery_cell_params.h |  73 -------
>  4 files changed, 367 deletions(-)
>  delete mode 100644 drivers/power/fuel_gauge/Makefile
>  delete mode 100644 drivers/power/fuel_gauge/fg_max17042.c
>  delete mode 100644 include/power/fg_battery_cell_params.h
> 
> diff --git a/drivers/power/Makefile b/drivers/power/Makefile
> index efdae3655ac..93003e97e01 100644
> --- a/drivers/power/Makefile
> +++ b/drivers/power/Makefile
> @@ -5,7 +5,6 @@
>  
>  obj-$(CONFIG_$(SPL_TPL_)ACPI_PMC) += acpi_pmc/
>  obj-$(CONFIG_$(SPL_TPL_)POWER_DOMAIN) += domain/
> -obj-y += fuel_gauge/
>  obj-y += mfd/
>  obj-y += pmic/
>  obj-y += regulator/
> diff --git a/drivers/power/fuel_gauge/Makefile b/drivers/power/fuel_gauge/Makefile
> deleted file mode 100644
> index ca2df947585..00000000000
> --- a/drivers/power/fuel_gauge/Makefile
> +++ /dev/null
> @@ -1,6 +0,0 @@
> -# SPDX-License-Identifier: GPL-2.0+
> -#
> -# Copyright (C) 2012 Samsung Electronics
> -# Lukasz Majewski <l.majewski at samsung.com>
> -
> -obj-$(CONFIG_POWER_FG_MAX17042) += fg_max17042.o
> diff --git a/drivers/power/fuel_gauge/fg_max17042.c b/drivers/power/fuel_gauge/fg_max17042.c
> deleted file mode 100644
> index a395d587a86..00000000000
> --- a/drivers/power/fuel_gauge/fg_max17042.c
> +++ /dev/null
> @@ -1,287 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0+
> -/*
> - *  Copyright (C) 2012 Samsung Electronics
> - *  Lukasz Majewski <l.majewski at samsung.com>
> - */
> -
> -#include <common.h>
> -#include <log.h>
> -#include <linux/delay.h>
> -#include <power/pmic.h>
> -#include <power/max17042_fg.h>
> -#include <i2c.h>
> -#include <power/max8997_pmic.h>
> -#include <power/power_chrg.h>
> -#include <power/battery.h>
> -#include <power/fg_battery_cell_params.h>
> -#include <errno.h>
> -
> -static int fg_write_regs(struct pmic *p, u8 addr, u16 *data, int num)
> -{
> -	int ret = 0;
> -	int i;
> -
> -	for (i = 0; i < num; i++, addr++) {
> -		ret = pmic_reg_write(p, addr, *(data + i));
> -		if (ret)
> -			return ret;
> -	}
> -
> -	return 0;
> -}
> -
> -static int fg_read_regs(struct pmic *p, u8 addr, u16 *data, int num)
> -{
> -	unsigned int dat;
> -	int ret = 0;
> -	int i;
> -
> -	for (i = 0; i < num; i++, addr++) {
> -		ret = pmic_reg_read(p, addr, &dat);
> -		if (ret)
> -			return ret;
> -
> -		*(data + i) = (u16)dat;
> -	}
> -
> -	return 0;
> -}
> -
> -static int fg_write_and_verify(struct pmic *p, u8 addr, u16 data)
> -{
> -	unsigned int val = data;
> -	int ret = 0;
> -
> -	ret |= pmic_reg_write(p, addr, val);
> -	ret |= pmic_reg_read(p, addr, &val);
> -
> -	if (ret)
> -		return ret;
> -
> -	if (((u16) val) == data)
> -		return 0;
> -
> -	return -1;
> -}
> -
> -static void por_fuelgauge_init(struct pmic *p)
> -{
> -	u16 r_data0[16], r_data1[16], r_data2[16];
> -	u32 rewrite_count = 5;
> -	u32 check_count;
> -	u32 lock_count;
> -	u32 i = 0;
> -	u32 val;
> -	s32 ret = 0;
> -	char *status_msg;
> -
> -	/* Delay 500 ms */
> -	mdelay(500);
> -	/* Initilize Configuration */
> -	pmic_reg_write(p, MAX17042_CONFIG, 0x2310);
> -
> -rewrite_model:
> -	check_count = 5;
> -	lock_count = 5;
> -
> -	if (!rewrite_count--) {
> -		status_msg = "init failed!";
> -		goto error;
> -	}
> -
> -	/* Unlock Model Access */
> -	pmic_reg_write(p, MAX17042_MLOCKReg1, MODEL_UNLOCK1);
> -	pmic_reg_write(p, MAX17042_MLOCKReg2, MODEL_UNLOCK2);
> -
> -	/* Write/Read/Verify the Custom Model */
> -	ret = fg_write_regs(p, MAX17042_MODEL1, cell_character0,
> -			     ARRAY_SIZE(cell_character0));
> -	if (ret)
> -		goto rewrite_model;
> -
> -	ret = fg_write_regs(p, MAX17042_MODEL2, cell_character1,
> -			     ARRAY_SIZE(cell_character1));
> -	if (ret)
> -		goto rewrite_model;
> -
> -	ret = fg_write_regs(p, MAX17042_MODEL3, cell_character2,
> -			     ARRAY_SIZE(cell_character2));
> -	if (ret)
> -		goto rewrite_model;
> -
> -check_model:
> -	if (!check_count--) {
> -		if (rewrite_count)
> -			goto rewrite_model;
> -		else
> -			status_msg = "check failed!";
> -
> -		goto error;
> -	}
> -
> -	ret = fg_read_regs(p, MAX17042_MODEL1, r_data0, ARRAY_SIZE(r_data0));
> -	if (ret)
> -		goto check_model;
> -
> -	ret = fg_read_regs(p, MAX17042_MODEL2, r_data1, ARRAY_SIZE(r_data1));
> -	if (ret)
> -		goto check_model;
> -
> -	ret = fg_read_regs(p, MAX17042_MODEL3, r_data2, ARRAY_SIZE(r_data2));
> -	if (ret)
> -		goto check_model;
> -
> -	for (i = 0; i < 16; i++) {
> -		if ((cell_character0[i] != r_data0[i])
> -		    || (cell_character1[i] != r_data1[i])
> -		    || (cell_character2[i] != r_data2[i]))
> -			goto rewrite_model;
> -		}
> -
> -lock_model:
> -	if (!lock_count--) {
> -		if (rewrite_count)
> -			goto rewrite_model;
> -		else
> -			status_msg = "lock failed!";
> -
> -		goto error;
> -	}
> -
> -	/* Lock model access */
> -	pmic_reg_write(p, MAX17042_MLOCKReg1, MODEL_LOCK1);
> -	pmic_reg_write(p, MAX17042_MLOCKReg2, MODEL_LOCK2);
> -
> -	/* Verify the model access is locked */
> -	ret = fg_read_regs(p, MAX17042_MODEL1, r_data0, ARRAY_SIZE(r_data0));
> -	if (ret)
> -		goto lock_model;
> -
> -	ret = fg_read_regs(p, MAX17042_MODEL2, r_data1, ARRAY_SIZE(r_data1));
> -	if (ret)
> -		goto lock_model;
> -
> -	ret = fg_read_regs(p, MAX17042_MODEL3, r_data2, ARRAY_SIZE(r_data2));
> -	if (ret)
> -		goto lock_model;
> -
> -	for (i = 0; i < ARRAY_SIZE(r_data0); i++) {
> -		/* Check if model locked */
> -		if (r_data0[i] || r_data1[i] || r_data2[i])
> -			goto lock_model;
> -	}
> -
> -	/* Write Custom Parameters */
> -	fg_write_and_verify(p, MAX17042_RCOMP0, RCOMP0);
> -	fg_write_and_verify(p, MAX17042_TEMPCO, TempCo);
> -
> -	/* Delay at least 350mS */
> -	mdelay(350);
> -
> -	/* Initialization Complete */
> -	pmic_reg_read(p, MAX17042_STATUS, &val);
> -	/* Write and Verify Status with POR bit Cleared */
> -	fg_write_and_verify(p, MAX17042_STATUS, val & ~MAX17042_POR);
> -
> -	/* Delay at least 350 ms */
> -	mdelay(350);
> -
> -	status_msg = "OK!";
> -error:
> -	debug("%s: model init status: %s\n", p->name, status_msg);
> -	return;
> -}
> -
> -static int power_update_battery(struct pmic *p, struct pmic *bat)
> -{
> -	struct power_battery *pb = bat->pbat;
> -	unsigned int val;
> -	int ret = 0;
> -
> -	if (pmic_probe(p)) {
> -		puts("Can't find max17042 fuel gauge\n");
> -		return -ENODEV;
> -	}
> -
> -	ret |= pmic_reg_read(p, MAX17042_VFSOC, &val);
> -	pb->bat->state_of_chrg = (val >> 8);
> -
> -	pmic_reg_read(p, MAX17042_VCELL, &val);
> -	debug("vfsoc: 0x%x\n", val);
> -	pb->bat->voltage_uV = ((val & 0xFFUL) >> 3) + ((val & 0xFF00) >> 3);
> -	pb->bat->voltage_uV = (pb->bat->voltage_uV * 625);
> -
> -	pmic_reg_read(p, 0x05, &val);
> -	pb->bat->capacity = val >> 2;
> -
> -	return ret;
> -}
> -
> -static int power_check_battery(struct pmic *p, struct pmic *bat)
> -{
> -	struct power_battery *pb = bat->pbat;
> -	unsigned int val;
> -	int ret = 0;
> -
> -	if (pmic_probe(p)) {
> -		puts("Can't find max17042 fuel gauge\n");
> -		return -ENODEV;
> -	}
> -
> -	ret |= pmic_reg_read(p, MAX17042_STATUS, &val);
> -	debug("fg status: 0x%x\n", val);
> -
> -	if (val & MAX17042_POR)
> -		por_fuelgauge_init(p);
> -
> -	ret |= pmic_reg_read(p, MAX17042_VERSION, &val);
> -	pb->bat->version = val;
> -
> -	power_update_battery(p, bat);
> -	debug("fg ver: 0x%x\n", pb->bat->version);
> -	printf("BAT: state_of_charge(SOC):%d%%\n",
> -	       pb->bat->state_of_chrg);
> -
> -	printf("     voltage: %d.%6.6d [V] (expected to be %d [mAh])\n",
> -	       pb->bat->voltage_uV / 1000000,
> -	       pb->bat->voltage_uV % 1000000,
> -	       pb->bat->capacity);
> -
> -	if (pb->bat->voltage_uV > 3850000)
> -		pb->bat->state = EXT_SOURCE;
> -	else if (pb->bat->voltage_uV < 3600000 || pb->bat->state_of_chrg < 5)
> -		pb->bat->state = CHARGE;
> -	else
> -		pb->bat->state = NORMAL;
> -
> -	return ret;
> -}
> -
> -static struct power_fg power_fg_ops = {
> -	.fg_battery_check = power_check_battery,
> -	.fg_battery_update = power_update_battery,
> -};
> -
> -int power_fg_init(unsigned char bus)
> -{
> -	static const char name[] = "MAX17042_FG";
> -	struct pmic *p = pmic_alloc();
> -
> -	if (!p) {
> -		printf("%s: POWER allocation error!\n", __func__);
> -		return -ENOMEM;
> -	}
> -
> -	debug("Board Fuel Gauge init\n");
> -
> -	p->name = name;
> -	p->interface = PMIC_I2C;
> -	p->number_of_regs = FG_NUM_OF_REGS;
> -	p->hw.i2c.addr = MAX17042_I2C_ADDR;
> -	p->hw.i2c.tx_num = 2;
> -	p->sensor_byte_order = PMIC_SENSOR_BYTE_ORDER_BIG;
> -	p->bus = bus;
> -
> -	p->fg = &power_fg_ops;
> -	return 0;
> -}
> diff --git a/include/power/fg_battery_cell_params.h b/include/power/fg_battery_cell_params.h
> deleted file mode 100644
> index 500c8ea7174..00000000000
> --- a/include/power/fg_battery_cell_params.h
> +++ /dev/null
> @@ -1,73 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0+ */
> -/*
> - *  Copyright (C) 2012 Samsung Electronics
> - *  Lukasz Majewski <l.majewski at samsung.com>
> - */
> -
> -#ifndef __FG_BATTERY_CELL_PARAMS_H_
> -#define __FG_BATTERY_CELL_PARAMS_H_
> -
> -#if  defined(CONFIG_POWER_FG_MAX17042) && defined(CONFIG_TARGET_TRATS)
> -
> -/* Cell characteristics - Exynos4 TRATS development board */
> -/* Shall be written to addr 0x80h */
> -u16 cell_character0[16] = {
> -	0xA2A0,
> -	0xB6E0,
> -	0xB850,
> -	0xBAD0,
> -	0xBB20,
> -	0xBB70,
> -	0xBBC0,
> -	0xBC20,
> -	0xBC80,
> -	0xBCE0,
> -	0xBD80,
> -	0xBE20,
> -	0xC090,
> -	0xC420,
> -	0xC910,
> -	0xD070
> -};
> -
> -/* Shall be written to addr 0x90h */
> -u16 cell_character1[16] = {
> -	0x0090,
> -	0x1A50,
> -	0x02F0,
> -	0x2060,
> -	0x2060,
> -	0x2E60,
> -	0x26A0,
> -	0x2DB0,
> -	0x2DB0,
> -	0x1870,
> -	0x2A20,
> -	0x16F0,
> -	0x08F0,
> -	0x0D40,
> -	0x08C0,
> -	0x08C0
> -};
> -
> -/* Shall be written to addr 0xA0h */
> -u16 cell_character2[16] = {
> -	0x0100,
> -	0x0100,
> -	0x0100,
> -	0x0100,
> -	0x0100,
> -	0x0100,
> -	0x0100,
> -	0x0100,
> -	0x0100,
> -	0x0100,
> -	0x0100,
> -	0x0100,
> -	0x0100,
> -	0x0100,
> -	0x0100,
> -	0x0100
> -};
> -#endif
> -#endif /* __FG_BATTERY_CELL_PARAMS_H_ */


More information about the U-Boot mailing list