This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AM6422: PMIC TI TPS65220 is not initialized in U-Boot

Part Number: AM6422
Other Parts Discussed in Thread: AM6442, TPS65220, TPS65219, SK-AM64B, SK-AM62-LP

Tool/software:

Dear community,

For a custom board we use the AM6442 SOC. As PMIC we use the TI TPS65220, and for ethernet we use two TI DP83822 PHYs.
We want to operate the PHYs with AVD=1.8V. Therefore we connected them to LDO4 (default: 2.5V), which output voltage shall be set to 1.8V (PMIC Vsys=3.3V) as fast as possible after power on.

My observation is that the PMIC is not initialized at all during the boot sequence. Only linux configures the PMIC during kernel boot. I expected that preferably the SPL (R5 or A53), or at least U-Boot initializes all regulators which have the properties "regulator-boot-on;" and "regulator-always-on;" set.

Since the PMIC is initialized by linux, I suppose I have done something wrong in U-Boot.

Here is my the PMIC snippet from my u-boot device tree (which is equal to the device tree used by linux).

&main_i2c0 {
    bootph-all;
    status = "okay";
    pinctrl-names = "default";
    pinctrl-0 = <&main_i2c0_pins_default>;
    clock-frequency = <400000>;

    tps65219: pmic@30 {
        bootph-all;
        compatible = "ti,tps65219";
        reg = <0x30>;
        buck1-supply = <&vcc_3v3_sys>;
        buck2-supply = <&vcc_3v3_sys>;
        buck3-supply = <&vcc_3v3_sys>;
        ldo1-supply = <&vcc_3v3>;
        ldo2-supply = <&buck2_reg>;
        ldo3-supply = <&vcc_3v3>;
        ldo4-supply = <&vcc_3v3>;

        pinctrl-names = "default";
        pinctrl-0 = <&pmic_irq_pins_default>;

        interrupt-parent = <&gic500>;                   
        interrupts = <GIC_SPI 224 IRQ_TYPE_LEVEL_HIGH>; 

        regulators {
            buck1_reg: buck1 {
                bootph-all;
                regulator-name = "VDD_CORE";
                regulator-min-microvolt = <750000>;
                regulator-max-microvolt = <750000>;
                regulator-boot-on;
                regulator-always-on;
            };

            buck2_reg: buck2 {
                bootph-all;
                regulator-name = "VCC1V8_SYS";
                regulator-min-microvolt = <1800000>;
                regulator-max-microvolt = <1800000>;
                regulator-boot-on;
                regulator-always-on;
            };

            buck3_reg: buck3 {
                bootph-all;
                regulator-name = "VDD_LPDDR4";
                regulator-min-microvolt = <1100000>;
                regulator-max-microvolt = <1100000>;
                regulator-boot-on;
                regulator-always-on;
            };

            ldo1_reg: ldo1 {
                bootph-all;
                regulator-name = "VDDSHV_SDIO_PMIC";
                regulator-min-microvolt = <1800000>;
                regulator-max-microvolt = <1800000>;
                regulator-always-on;
            };

            ldo2_reg: ldo2 {
                bootph-all;
                regulator-name = "VDDAR_CORE";
                regulator-min-microvolt = <850000>;
                regulator-max-microvolt = <850000>;
                regulator-boot-on;
                regulator-always-on;
            };

            ldo3_reg: ldo3 {
                bootph-all;
                regulator-name = "VDDA_1V8";
                regulator-min-microvolt = <1800000>;
                regulator-max-microvolt = <1800000>;
                regulator-boot-on;
                regulator-always-on;
            };

            ldo4_reg: ldo4 {
                bootph-all;
                regulator-name = "VDD_PHY_1V8";
                regulator-min-microvolt = <1800000>;
                regulator-max-microvolt = <1800000>;
                regulator-boot-on;
                regulator-always-on;
            };
        };
    };
};
I also have a u-boot.dtsi entry (not sure if I need it):
&pmic_irq_pins_default {
    bootph-all;
};

&ldo4_reg{
    regulator-init-microvolt = <1800000>;
};
Here are settings in my a53 defconfig:
CONFIG_DM_PMIC=y
CONFIG_PMIC_TPS65219=y
CONFIG_DM_REGULATOR=y
CONFIG_DM_REGULATOR_TPS65219=y
Here are settings in my r5 defconfig:
CONFIG_DM_REGULATOR=y
CONFIG_SPL_DM_REGULATOR=y
CONFIG_DM_REGULATOR_GPIO=y
CONFIG_SPL_DM_REGULATOR_GPIO=y
So why doesn't u-boot initialize the PMIC? The SK-AM64B has a PMIC, but it is not configured at all during boot, since the output voltages are correct by default.
 
Any help is appreciated.
BR Benjamin