power: pmic: sunxi: add SPL support for the AXP803
The AXP803 has been around for about a decade now, but so far we didn't need SPL support, since the DRAM rail was wired up correctly at reset. Now some boards using the A133 SoC use the (compatible) AXP707 with DDR4 memory, which requires the SPL to set the required 1.1V voltage manually. Add the descriptions for the DC/DC regulators of the AXP803, and enable that when CONFIG_AXP803_POWER is enabled. Signed-off-by: Andre Przywara <andre.przywara@arm.com> Acked-by: Jernej Skrabec <jernej.skrabec@gmail.com>
This commit is contained in:
@@ -563,7 +563,8 @@ void sunxi_board_init(void)
|
||||
#if defined CONFIG_AXP152_POWER || defined CONFIG_AXP209_POWER || \
|
||||
defined CONFIG_AXP221_POWER || defined CONFIG_AXP305_POWER || \
|
||||
defined CONFIG_AXP809_POWER || defined CONFIG_AXP818_POWER || \
|
||||
defined CONFIG_AXP313_POWER || defined CONFIG_AXP717_POWER
|
||||
defined CONFIG_AXP313_POWER || defined CONFIG_AXP717_POWER || \
|
||||
defined CONFIG_AXP803_POWER
|
||||
power_failed = axp_init();
|
||||
|
||||
if (IS_ENABLED(CONFIG_AXP_DISABLE_BOOT_ON_POWERON) && !power_failed) {
|
||||
@@ -581,6 +582,8 @@ void sunxi_board_init(void)
|
||||
#endif
|
||||
#ifdef CONFIG_AXP_DCDC2_VOLT
|
||||
power_failed |= axp_set_dcdc2(CONFIG_AXP_DCDC2_VOLT);
|
||||
#endif
|
||||
#ifdef CONFIG_AXP_DCDC3_VOLT
|
||||
power_failed |= axp_set_dcdc3(CONFIG_AXP_DCDC3_VOLT);
|
||||
#endif
|
||||
#ifdef CONFIG_AXP_DCDC4_VOLT
|
||||
|
@@ -116,6 +116,12 @@ config AXP717_POWER
|
||||
---help---
|
||||
Select this to enable support for the AXP717 PMIC found on some boards.
|
||||
|
||||
config AXP803_POWER
|
||||
bool "AXP803 PMIC support"
|
||||
select AXP_PMIC_BUS
|
||||
---help---
|
||||
Select this to enable support for the AXP803 PMIC found on some boards.
|
||||
|
||||
config AXP809_POWER
|
||||
bool "axp809 pmic support"
|
||||
depends on MACH_SUN9I
|
||||
@@ -144,8 +150,8 @@ endchoice
|
||||
|
||||
config AXP_DCDC1_VOLT
|
||||
int "axp pmic dcdc1 voltage"
|
||||
depends on AXP221_POWER || AXP809_POWER || AXP818_POWER
|
||||
default 3300 if AXP818_POWER || MACH_SUN8I_R40
|
||||
depends on AXP221_POWER || AXP809_POWER || AXP818_POWER || AXP803_POWER
|
||||
default 3300 if AXP818_POWER || MACH_SUN8I_R40 || AXP803_POWER
|
||||
default 3000 if MACH_SUN6I || MACH_SUN8I || MACH_SUN9I
|
||||
---help---
|
||||
Set the voltage (mV) to program the axp pmic dcdc1 at, set to 0 to
|
||||
@@ -158,11 +164,12 @@ config AXP_DCDC1_VOLT
|
||||
|
||||
config AXP_DCDC2_VOLT
|
||||
int "axp pmic dcdc2 voltage"
|
||||
depends on AXP152_POWER || AXP209_POWER || AXP221_POWER || AXP809_POWER || AXP818_POWER || AXP313_POWER || AXP717_POWER
|
||||
depends on AXP152_POWER || AXP209_POWER || AXP221_POWER || AXP809_POWER || AXP818_POWER || AXP313_POWER || AXP717_POWER || AXP803_POWER
|
||||
default 900 if AXP818_POWER
|
||||
default 1400 if AXP152_POWER || AXP209_POWER
|
||||
default 1000 if AXP313_POWER
|
||||
default 1000 if AXP717_POWER
|
||||
default 1000 if AXP803_POWER
|
||||
default 1200 if MACH_SUN6I
|
||||
default 1100 if MACH_SUN8I
|
||||
default 0 if MACH_SUN9I
|
||||
@@ -219,7 +226,7 @@ config AXP_DCDC4_VOLT
|
||||
|
||||
config AXP_DCDC5_VOLT
|
||||
int "axp pmic dcdc5 voltage"
|
||||
depends on AXP221_POWER || AXP809_POWER || AXP818_POWER
|
||||
depends on AXP221_POWER || AXP809_POWER || AXP818_POWER || AXP803_POWER
|
||||
default 1500 if MACH_SUN6I || MACH_SUN8I || MACH_SUN9I
|
||||
---help---
|
||||
Set the voltage (mV) to program the axp pmic dcdc5 at, set to 0 to
|
||||
|
@@ -17,6 +17,7 @@ obj-$(CONFIG_AXP313_POWER) += axp_spl.o
|
||||
obj-$(CONFIG_AXP717_POWER) += axp_spl.o
|
||||
obj-$(CONFIG_AXP809_POWER) += axp809.o
|
||||
obj-$(CONFIG_AXP818_POWER) += axp818.o
|
||||
obj-$(CONFIG_AXP803_POWER) += axp_spl.o
|
||||
endif
|
||||
obj-$(CONFIG_EXYNOS_TMU) += exynos-tmu.o
|
||||
obj-$(CONFIG_SY8106A_POWER) += sy8106a.o
|
||||
|
@@ -36,6 +36,23 @@ static const struct axp_reg_desc_spl axp_spl_dcdc_regulators[] = {
|
||||
#define AXP_SHUTDOWN_REG 0x27
|
||||
#define AXP_SHUTDOWN_MASK BIT(0)
|
||||
|
||||
#elif defined(CONFIG_AXP803_POWER) /* AXP803 */
|
||||
|
||||
static const struct axp_reg_desc_spl axp_spl_dcdc_regulators[] = {
|
||||
{ 0x10, BIT(0), 0x20, 0x1f, 1600, 3400, 100, NA },
|
||||
{ 0x10, BIT(1), 0x21, 0x7f, 500, 1300, 10, 70 },
|
||||
{ 0x10, BIT(2), 0x22, 0x7f, 500, 1300, 10, 70 },
|
||||
{ 0x10, BIT(3), 0x23, 0x7f, 500, 1300, 10, 70 },
|
||||
{ 0x10, BIT(4), 0x24, 0x7f, 800, 1840, 10, 32 },
|
||||
{ 0x10, BIT(5), 0x25, 0x7f, 600, 1520, 10, 50 },
|
||||
};
|
||||
|
||||
#define AXP_CHIP_VERSION 0x3
|
||||
#define AXP_CHIP_VERSION_MASK 0xcf
|
||||
#define AXP_CHIP_ID 0x41
|
||||
#define AXP_SHUTDOWN_REG 0x32
|
||||
#define AXP_SHUTDOWN_MASK BIT(7)
|
||||
|
||||
#elif defined(CONFIG_AXP313_POWER) /* AXP313 */
|
||||
|
||||
static const struct axp_reg_desc_spl axp_spl_dcdc_regulators[] = {
|
||||
|
Reference in New Issue
Block a user