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.

Linux/TPS65916: TPS65916 Device Control

Part Number: TPS65916
Other Parts Discussed in Thread: DRA752, TPS65917-Q1

Tool/software: Linux

I am using TPS65916 IC in my board design, when I switched ON the board the all SMPS, LDOs volatges are generated and after some 8 seconds again all the voltages generated are zero. I am simply giving the supply only and not booting the board with SD card. In datasheet it is mentioned that you have to change the DEVON bit to make the PMIC in active state and else it will go to OFF state after 8 seconds. How to solve this?

  • Hi,

    Which kernel is this? Which SoC does your board use?

    In general the drivers that take care of the pmic is:
    drivers/mfd/palmas.c

    Best Regards,
    Yordan

  • Hi Yordan,

    I am using AM571x with Processor SDK Linux 02.00.02. My question is, SDK is released for TPS659039 PMIC with AM572x and we are using AM571x with TPS65916 PMIC. So in u-boot where should I mention that I am using TPS65916.

    In board.c, hw_data_init function the initialization is done according for TPS659038 PMIC, but i am using AM571x processor and TPS65916 PMIC. So kindly tell me how to modify the u-boot accordingly.

    void hw_data_init(void)
    {
        *prcm = &dra7xx_prcm;
        *dplls_data = &dra7xx_dplls;
        *omap_vcores = &beagle_x15_volts;
        *ctrl = &dra7xx_ctrl;
    }

    struct vcores_data beagle_x15_volts = {
        .mpu.value        = VDD_MPU_DRA752,
        .mpu.efuse.reg        = STD_FUSE_OPP_VMIN_MPU_NOM,
        .mpu.efuse.reg_bits     = DRA752_EFUSE_REGBITS,
        .mpu.addr        = TPS659038_REG_ADDR_SMPS12,
        .mpu.pmic        = &tps659038,

        .eve.value        = VDD_EVE_DRA752_HIGH,
        .eve.efuse.reg        = STD_FUSE_OPP_VMIN_DSPEVE_HIGH,
        .eve.efuse.reg_bits    = DRA752_EFUSE_REGBITS,
        .eve.addr        = TPS659038_REG_ADDR_SMPS45,
        .eve.pmic        = &tps659038,

        .gpu.value        = VDD_GPU_DRA752_HIGH,
        .gpu.efuse.reg        = STD_FUSE_OPP_VMIN_GPU_HIGH,
        .gpu.efuse.reg_bits    = DRA752_EFUSE_REGBITS,
        .gpu.addr        = TPS659038_REG_ADDR_SMPS45,
        .gpu.pmic        = &tps659038,

        .core.value        = VDD_CORE_DRA752,
        .core.efuse.reg        = STD_FUSE_OPP_VMIN_CORE_NOM,
        .core.efuse.reg_bits    = DRA752_EFUSE_REGBITS,
        .core.addr        = TPS659038_REG_ADDR_SMPS6,
        .core.pmic        = &tps659038,

        .iva.value        = VDD_IVA_DRA752_HIGH,
        .iva.efuse.reg        = STD_FUSE_OPP_VMIN_IVA_HIGH,
        .iva.efuse.reg_bits    = DRA752_EFUSE_REGBITS,
        .iva.addr        = TPS659038_REG_ADDR_SMPS45,
        .iva.pmic        = &tps659038,
    };



    Best Regards,
    Ganesh

  • Hi,

    how to ensure that DEVON bit is changed in order to keep PMIC in active state until no input power.


    In the driver source, you need to perform I2C write to the DEVON bit. The u-boot driver is:
    drivers/power/palmas.c

    Best Regards,
    Yordan
  • Hi Yordan,

    I am using TPS65916 PMIC, so in u-boot where I need to change the code like in board.c, hw_data_init function the initialization is done for TPS659038 PMIC, but I am using AM571x processor and TPS65916 PMIC. Also please help me where I need to modify as I am using AM571x processor.

    void hw_data_init(void)
    {
    *prcm = &dra7xx_prcm;
    *dplls_data = &dra7xx_dplls;
    *omap_vcores = &beagle_x15_volts;
    *ctrl = &dra7xx_ctrl;
    }

    struct vcores_data beagle_x15_volts = {
    .mpu.value = VDD_MPU_DRA752,
    .mpu.efuse.reg = STD_FUSE_OPP_VMIN_MPU_NOM,
    .mpu.efuse.reg_bits = DRA752_EFUSE_REGBITS,
    .mpu.addr = TPS659038_REG_ADDR_SMPS12,
    .mpu.pmic = &tps659038,

    .eve.value = VDD_EVE_DRA752_HIGH,
    .eve.efuse.reg = STD_FUSE_OPP_VMIN_DSPEVE_HIGH,
    .eve.efuse.reg_bits = DRA752_EFUSE_REGBITS,
    .eve.addr = TPS659038_REG_ADDR_SMPS45,
    .eve.pmic = &tps659038,

    .gpu.value = VDD_GPU_DRA752_HIGH,
    .gpu.efuse.reg = STD_FUSE_OPP_VMIN_GPU_HIGH,
    .gpu.efuse.reg_bits = DRA752_EFUSE_REGBITS,
    .gpu.addr = TPS659038_REG_ADDR_SMPS45,
    .gpu.pmic = &tps659038,

    .core.value = VDD_CORE_DRA752,
    .core.efuse.reg = STD_FUSE_OPP_VMIN_CORE_NOM,
    .core.efuse.reg_bits = DRA752_EFUSE_REGBITS,
    .core.addr = TPS659038_REG_ADDR_SMPS6,
    .core.pmic = &tps659038,

    .iva.value = VDD_IVA_DRA752_HIGH,
    .iva.efuse.reg = STD_FUSE_OPP_VMIN_IVA_HIGH,
    .iva.efuse.reg_bits = DRA752_EFUSE_REGBITS,
    .iva.addr = TPS659038_REG_ADDR_SMPS45,
    .iva.pmic = &tps659038,
    };


    Best Regards,
    Ganesh
  • Ganesh,

    DRA72x TI EVM comes with TPS65917-Q1 PMIC, which is the automotive variant of catalog TPS65916 PMIC. You can explore how TPS65917-Q1 PMIC is ported and used in DRA72x, you can reuse this approach for your AM571x custom board.

    You can download the latest AM57x PSDK 3.02 and see the below files:

    u-boot-2016.05/arch/arm/dts/dra72-evm-common.dtsi
    u-boot-2016.05/arch/arm/dts/dra72-evm-revc.dts
    u-boot-2016.05/board/ti/dra7xx/evm.c

    For AM571x board you should use am571x_idk_volts or beagle_x15_volts, and change this am571x_idk_volts/beagle_x15_volts to TPS65917, see how in dra7xx/evm.c file, dra722_volts.

    You should also align your dts files with dra72-evm-common.dtsi and dra72-evm-revc.dts, regarding TPS65917

    Regards,
    Pavel