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.

TPS65218D0: Programming Power-Up Default Values in EEPROM

Part Number: TPS65218D0
Other Parts Discussed in Thread: TPS65218

Hello,

I need to change the UVLO threshold and hystersis values in the CONFIG1 and CONFIG2 registers and then to save in EEPROM.

So I modified the linux driver tps65218.c

I am able to change the values of the CONFIG registers. But then the save in EEPROM command (0x50 0x1A 0xCE in the password register) is not working.  The PMIC does not start anymore after a power cycle.

I tried on  3 boards, all of them are killed.

Then I tested only the command  to save in EEPROM (without changing CONFIG registers) on the uboot command line.

U-Boot# i2c mw 24 0x10 0x50 1
U-Boot# i2c mw 24 0x10 0x1A 1
U-Boot# i2c mw 24 0x10 0xCE 1

But same results, my board does not start anymore after a power cycle.

In the spec I read "A consecutive write of 0x50, 0x1A, or 0xCE to the password register commits the current register settings to EEPROM memory so they become the new power-up default values".

What does mean the or 0xCE?

Have and and idea what is going on? Have you some driver code to save the data in EEPROM?

Thanks

Jean-Luc

  • Hi,

    I have forwarded your request to the application engineer supporting this device. He is in US time zone and he will provide you the feedback in a day or two.

    Regards,

    Murthy

  • Jean-Luc,

    I am surprised it says "0x50, 0x1A, or 0xCE".

    It is all three bytes in sequence, in this order: 0x50, then 0x1A, then 0xCE.

    We need to find a way to confirm if the programming was successful, even though the system will not boot completely.

    Can you confirm the Register addresses and bits that you re-programmed?

    Did you record a data-log during the process of sending I2C commands to the PMIC? This would be helpful to objectively determine that the registers were modified as you expected and the programming sequence was completed successfully.

  • Hello Brian ,and Murthy

    Thanks for your feedbacks.

    I think I found the issue.

    I don’t know really why (u-boot does not write it) but some of the other registers also saved in EEPROM (DCDC1, DCDC2, DCDC3, DCDC4, SEQ4, SEQ5) had not their default values after the boot.

    Now I set except of CONFIG1 and CONFIG2 all of them to their default values and saved in EEPROM and It was ok.

    I tried this on the u-boot command line and the PMIC started correctly after a power cycle:


    U-Boot# wd stop

    U-Boot# i2c mw 24 0x10 0x6E

    U-Boot# i2c mw 24 0x13 0x4F

    U-Boot#

    U-Boot# i2c mw 24 0x10 0x69

    U-Boot# i2c mw 24 0x14 0x80

    U-Boot#

    U-Boot# i2c mw 24 0x10 0x6b

    U-Boot# i2c mw 24 0x16 0x99

    U-Boot#

    U-Boot# i2c mw 24 0x10 0x6a

    U-Boot# i2c mw 24 0x17 0x99

    U-Boot#

    U-Boot# i2c mw 24 0x10 0x65

    U-Boot# i2c mw 24 0x18 0x8c

    U-Boot#

    U-Boot# i2c mw 24 0x10 0x64

    U-Boot# i2c mw 24 0x19 0xb2

    U-Boot#

    U-Boot# i2c mw 24 0x10 0x5e

    U-Boot# i2c mw 24 0x23 0x75

    U-Boot#

    U-Boot# i2c mw 24 0x10 0x59

    U-Boot# i2c mw 24 0x24 0x12

    U-Boot#

    U-Boot# i2c mw 24 0x10 0x50

    U-Boot# i2c mw 24 0x10 0x1A

    U-Boot# i2c mw 24 0x10 0xCE

    U-Boot#

    U-Boot# i2c md 24 0x01

    0001: 11 00 00 00 68 00 00 00 00 00 00 00 00 00 00 ce    ....h...........

    U-Boot#

    Then I implemented it in the linux kernel, and was also working fine ;-)

    Best regards

    Jean-Luc

  • Thanks for providing your solution on the forum, Jean-Luc!

    Please give yourself some credit and mark your own reply as "Correct Answer".