sunxi: power: axp818: Add support for switch SW

The AXP818 has a switchable output, SW. This is commonly used for
controlling power to the LCD backlight.

Signed-off-by: Chen-Yu Tsai <wens@csie.org>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
master
Chen-Yu Tsai 9 years ago committed by Hans de Goede
parent a696253c1d
commit 15278ccb84
  1. 1
      board/sunxi/board.c
  2. 7
      drivers/power/Kconfig
  3. 10
      drivers/power/axp818.c
  4. 1
      include/axp818.h
  5. 1
      include/axp_pmic.h

@ -523,6 +523,7 @@ void sunxi_board_init(void)
power_failed |= axp_set_fldo(1, CONFIG_AXP_FLDO1_VOLT); power_failed |= axp_set_fldo(1, CONFIG_AXP_FLDO1_VOLT);
power_failed |= axp_set_fldo(2, CONFIG_AXP_FLDO2_VOLT); power_failed |= axp_set_fldo(2, CONFIG_AXP_FLDO2_VOLT);
power_failed |= axp_set_fldo(3, CONFIG_AXP_FLDO3_VOLT); power_failed |= axp_set_fldo(3, CONFIG_AXP_FLDO3_VOLT);
power_failed |= axp_set_sw(IS_ENABLED(CONFIG_AXP_SW_ON));
#endif #endif
#endif #endif
printf("DRAM:"); printf("DRAM:");

@ -265,6 +265,13 @@ config AXP_FLDO3_VOLT
Set the voltage (mV) to program the axp pmic fldo3 at, set to 0 to Set the voltage (mV) to program the axp pmic fldo3 at, set to 0 to
disable fldo3. disable fldo3.
config AXP_SW_ON
bool "axp pmic sw on"
depends on AXP818_POWER
default n
---help---
Enable to turn on axp pmic sw.
config SY8106A_VOUT1_VOLT config SY8106A_VOUT1_VOLT
int "SY8106A pmic VOUT1 voltage" int "SY8106A pmic VOUT1 voltage"
depends on SY8106A_POWER depends on SY8106A_POWER

@ -225,6 +225,16 @@ int axp_set_fldo(int fldo_num, unsigned int mvolt)
AXP818_OUTPUT_CTRL3_FLDO1_EN << (fldo_num - 1)); AXP818_OUTPUT_CTRL3_FLDO1_EN << (fldo_num - 1));
} }
int axp_set_sw(bool on)
{
if (on)
return pmic_bus_setbits(AXP818_OUTPUT_CTRL2,
AXP818_OUTPUT_CTRL2_SW_EN);
return pmic_bus_clrbits(AXP818_OUTPUT_CTRL2,
AXP818_OUTPUT_CTRL2_SW_EN);
}
int axp_init(void) int axp_init(void)
{ {
u8 axp_chip_id; u8 axp_chip_id;

@ -24,6 +24,7 @@
#define AXP818_OUTPUT_CTRL2_DLDO2_EN (1 << 4) #define AXP818_OUTPUT_CTRL2_DLDO2_EN (1 << 4)
#define AXP818_OUTPUT_CTRL2_DLDO3_EN (1 << 5) #define AXP818_OUTPUT_CTRL2_DLDO3_EN (1 << 5)
#define AXP818_OUTPUT_CTRL2_DLDO4_EN (1 << 6) #define AXP818_OUTPUT_CTRL2_DLDO4_EN (1 << 6)
#define AXP818_OUTPUT_CTRL2_SW_EN (1 << 7)
#define AXP818_OUTPUT_CTRL3 0x13 #define AXP818_OUTPUT_CTRL3 0x13
#define AXP818_OUTPUT_CTRL3_FLDO1_EN (1 << 2) #define AXP818_OUTPUT_CTRL3_FLDO1_EN (1 << 2)
#define AXP818_OUTPUT_CTRL3_FLDO2_EN (1 << 3) #define AXP818_OUTPUT_CTRL3_FLDO2_EN (1 << 3)

@ -32,6 +32,7 @@ int axp_set_aldo4(unsigned int mvolt);
int axp_set_dldo(int dldo_num, unsigned int mvolt); int axp_set_dldo(int dldo_num, unsigned int mvolt);
int axp_set_eldo(int eldo_num, unsigned int mvolt); int axp_set_eldo(int eldo_num, unsigned int mvolt);
int axp_set_fldo(int fldo_num, unsigned int mvolt); int axp_set_fldo(int fldo_num, unsigned int mvolt);
int axp_set_sw(bool on);
int axp_init(void); int axp_init(void);
int axp_get_sid(unsigned int *sid); int axp_get_sid(unsigned int *sid);

Loading…
Cancel
Save