[PATCH 3/6] power: pmic: sunxi: replace AXP717 SPL driver

Chris Morgan macroalpha82 at gmail.com
Thu Jul 11 01:20:01 CEST 2024


On Thu, May 16, 2024 at 12:48:36AM +0100, Andre Przywara wrote:
> We now have a generic AXP SPL driver implementation, that already covers
> the DC/DC converters of the AXP717 PMIC.
> 
> Remove the old, dedicated driver and switch to the new generic driver.
> This should not introduce any change in behaviour.
> 
> Signed-off-by: Andre Przywara <andre.przywara at arm.com>
> ---
>  drivers/power/Makefile |  2 +-
>  drivers/power/axp717.c | 92 ------------------------------------------
>  2 files changed, 1 insertion(+), 93 deletions(-)
>  delete mode 100644 drivers/power/axp717.c
> 
> diff --git a/drivers/power/Makefile b/drivers/power/Makefile
> index 9d1f4c65262..6df23a81c29 100644
> --- a/drivers/power/Makefile
> +++ b/drivers/power/Makefile
> @@ -14,7 +14,7 @@ obj-$(CONFIG_AXP209_POWER)	+= axp209.o
>  obj-$(CONFIG_AXP221_POWER)	+= axp221.o
>  obj-$(CONFIG_AXP305_POWER)	+= axp305.o
>  obj-$(CONFIG_AXP313_POWER)	+= axp313.o
> -obj-$(CONFIG_AXP717_POWER)	+= axp717.o
> +obj-$(CONFIG_AXP717_POWER)	+= axp_spl.o
>  obj-$(CONFIG_AXP809_POWER)	+= axp809.o
>  obj-$(CONFIG_AXP818_POWER)	+= axp818.o
>  endif
> diff --git a/drivers/power/axp717.c b/drivers/power/axp717.c
> deleted file mode 100644
> index 7c77c09ea8f..00000000000
> --- a/drivers/power/axp717.c
> +++ /dev/null
> @@ -1,92 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0+
> -/*
> - * AXP717 SPL driver
> - * (C) Copyright 2024 Arm Ltd.
> - */
> -
> -#include <common.h>
> -#include <command.h>
> -#include <errno.h>
> -#include <asm/arch/pmic_bus.h>
> -#include <axp_pmic.h>
> -
> -enum axp717_reg {
> -	AXP717_CHIP_VERSION = 0x3,
> -	AXP717_SHUTDOWN = 0x27,
> -	AXP717_OUTPUT_CTRL1 = 0x80,
> -	AXP717_DCDC1_VOLTAGE = 0x83,
> -};
> -
> -#define AXP717_CHIP_VERSION_MASK	0xc8
> -#define AXP717_DCDC_1220MV_OFFSET	71
> -#define AXP717_POWEROFF			(1U << 0)
> -#define DCDC_DVM_ENABLE			(1U << 7)
> -
> -static u8 axp_mvolt_to_cfg(int mvolt, int min, int max, int div)
> -{
> -	if (mvolt < min)
> -		mvolt = min;
> -	else if (mvolt > max)
> -		mvolt = max;
> -
> -	return (mvolt - min) / div;
> -}
> -
> -static int axp_set_dcdc(int dcdc_num, unsigned int mvolt)
> -{
> -	int ret;
> -	u8 cfg = DCDC_DVM_ENABLE;
> -
> -	if (dcdc_num < 1 || dcdc_num > 3)
> -		return -EINVAL;
> -
> -	if (mvolt >= 1220)
> -		cfg |= AXP717_DCDC_1220MV_OFFSET +
> -			axp_mvolt_to_cfg(mvolt, 1220,
> -					 dcdc_num == 3 ? 1840 : 1540, 20);
> -	else
> -		cfg |= axp_mvolt_to_cfg(mvolt, 500, 1200, 10);
> -
> -	if (mvolt == 0)
> -		return pmic_bus_clrbits(AXP717_OUTPUT_CTRL1,
> -					1U << (dcdc_num -1));
> -
> -	ret = pmic_bus_write(AXP717_DCDC1_VOLTAGE + dcdc_num - 1, cfg);
> -	if (ret)
> -		return ret;
> -
> -	return pmic_bus_setbits(AXP717_OUTPUT_CTRL1, 1U << (dcdc_num - 1));
> -}
> -
> -int axp_set_dcdc1(unsigned int mvolt)
> -{
> -	return axp_set_dcdc(1, mvolt);
> -}
> -
> -int axp_set_dcdc2(unsigned int mvolt)
> -{
> -	return axp_set_dcdc(2, mvolt);
> -}
> -
> -int axp_set_dcdc3(unsigned int mvolt)
> -{
> -	return axp_set_dcdc(3, mvolt);
> -}
> -
> -int axp_init(void)
> -{
> -	return pmic_bus_init();
> -}
> -
> -#if !CONFIG_IS_ENABLED(ARM_PSCI_FW) && !IS_ENABLED(CONFIG_SYSRESET_CMD_POWEROFF)
> -int do_poweroff(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
> -{
> -	pmic_bus_setbits(AXP717_SHUTDOWN, AXP717_POWEROFF);
> -
> -	/* infinite loop during shutdown */
> -	while (1) {}
> -
> -	/* not reached */
> -	return 0;
> -}
> -#endif
> -- 
> 2.35.8
> 

I've been using this for the past week or so on my RG35XX-H for which
I've been testing some code and it has worked well for me.

Tested-by: Chris Morgan <macromorgan at hotmail.com>


More information about the U-Boot mailing list