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.

TPS65987D: Method to update the TPS65987D Firmware Version register

Part Number: TPS65987D
Other Parts Discussed in Thread: TPS65987, TPS65982, TPS65981

Tool/software:

Hello There,

In one of our projects, We are interfacing external pd controller IC TPS65987 with Qualcomm chipset. There is a requirement from client to read the TPS firmware version through registers of the TPS65987 IC. We went through the application note TPS65982 FW Update from Embedded Controller Over I2C (Rev. A) from the below link:

https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.ti.com%2Flit%2Fan%2Fslva783a%2Fslva783a.pdf%3Fts%3D1736953498891%26ref_url%3Dhttps%25253A%25252F%25252Fwww.ti.com%25252Fsitesearch%25252Fen-us%25252Fdocs%25252Funiversalsearch.tsp%25253FlangPref%25253Den-US%252526nr%25253D31%252526searchTerm%25253Dslva783a.pdf&data=05%7C02%7Cniraj.ranpara%40einfochips.com%7Cff45ab448fcd4d9baaf008dd3a29f386%7C0beb0c359cbb4feb99e5589e415c7944%7C1%7C0%7C638730675391900538%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=y2vcrs2nCzo1LvOiEJkmr%2FkOPERvZvx5j7L3XXZQ%2Fq8%3D&reserved=0

As per the application note, register 0xF can be used to read the firmware version. We tried to check in TPS65981_2_6_7_8 Application Customization 6.1.4 tool, but could not find a way to update this register value while creating the firmware. Can you please let us know what is the way to change this register value?

Your help here would be much appreciated!!

Thanks,

Niraj

  • Hi Niraj,

    Thanks for reaching out on E2E!

    The firmware version is a static field that cannot be updated as it is a part of the status register and it uses the PD firmware version.

    If you want your own internal version control, I suggest using the customer use register 0x6 since that is read and write wheras 0xf is a read only register.

    Thank you,

    Kevin Kosta

  • Hello Kevin,

    Thanks for the prompt response!

    We tried to check for register 6 details in the technical manual available at below link:
    TPS65987DDH and TPS65988DH Host Interface Technical Reference Manual (Rev. B)

    As per this, This register is readonly and in the description, it is mentioned that "These 8 bytes are allocated for customer use as needed. Initialized by Application Customization." Does it mean It can be modified using the customization tool?

    Thanks

  • Hi Niraj,

    Of course!

    And that is correct this is something you can use in the GUI for your own version control.

    Thank you,

    Kevin

  • Hi Kevin,

    Thanks for the response!

    We tried to check in the customization tool and updated the customer use register value.

    However, our requirement is to flash the firmware using i2c. For that we are generating the .c file through the tool, include the register data in a header file and flash that through some utility with the help of fourcc commands.

    Sharing the steps followed  below for more detail:

    1. We have set some value(Hex value) in customer use resgister (0x06) in Application customization Tools check attached image.

    2. We have generated .c file,copy that array in to some header file let's say xyz.h file which we use in other .c file where we have implemented 4CC commands.

    3. Compiled the source and generated the binary.

    4. pushed the binary on the device and executed it to flash the TPS controller

    5. After flashing the fimware, checking 0x06 regitser value.

    6. when we are reading those register it is still showing old value. Please see below response for your reference.

    / # i2cget -f -y -a 4 0x20 0x06 i 8
    0x08 0x08 0x02 0x00 0x00 0x00 0x00 0x00

    Can you please let us know if the mechanism we followed can be used to update the register 0x6?

  • Hi Niraj,

    Give me some time to take a look!

    Thank you,

    Kevin

  • Hi Niraj,

    / # i2cget -f -y -a 4 0x20 0x06 i 8
    0x08 0x08 0x02 0x00 0x00 0x00 0x00 0x00

    Can you confirm the value of the 0x6 register before?

    I have not seen any issues with updating this register and creating a new binary with changed values should not have any issues since our FW does not overwrite this register. 

    On an EVM using debug mode flashing a new config I am able to see this register value change.

    Thank you,

    Kevin

  • Hi Kevin,

    Apologies for the delayed response as was occupied with some other things.

    / # i2cget -f -y -a 4 0x20 0x06 i 8
    0x08 0x08 0x02 0x00 0x00 0x00 0x00 0x00

    Can you confirm the value of the 0x6 register before?
    Ans: Yes the same value as above stored in 0x06 register.


    Note that, we are not directly generating bin file from USB PD Tool. We are generating the .c and .h files and using that data in our utility
    which writes that data using fourcc commands.

    Please refer below steps for reference:


    snapshot 1 : general settings

    snapshot 2 : 0x06 register value

    snapshot 3 : save Binary as a c file

    We have created flashing utility by taking reference note from below link

    TPS65982 FW Update from Embedded Controller Over I2C (Rev. A) 

    So as per our understanding, it would not be possible to update the register value through the fourcc commands as the register is read only and can only be updated through the tool and only way to have the register value updated is by flashing the binary generated through the customization tool.

    Can you please confirm the same?

  • Hi,

    Thanks for the reply I will get back to this by early next week.

    Thank you,

    Kevin

  • Hi Kevin, Is there any update from your side? 

  • Hi Niraj,

    Correct that register is indeed read only.

    Thanks for confirming your flashing method as well.

    It is something I don't have experience with so I will ask another member of my team tomorrow to help take a look at that.

    Thank you,

    Kevin

  • Hi Kevin, Did you get a chance to check with your team member about the register 0x06 configuration? 

    Thanks,

    Niraj

  • Hi,

    I am ooo and will respond when I'm back,

    Thank you,

    Kevin