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.

Smart Reflex Support for AM335x + TPS65217

Other Parts Discussed in Thread: TPS65217, TPS65910, AM3354

Does the Linux kernel have Smart Reflex support for AM335x + TPS65217 (i.e. BeagleBone)?  This wiki page says nothing at all about Smart Reflex:

http://processors.wiki.ti.com/index.php/AM335x_Power_Management_User_guide

I saw a different wiki page (don't see it now!) which had mentioned Smart Reflex is enabled by default for AM335x, so it was a bit confusing.

  • I have updated the wiki page to better reflect the status.  We added SmartReflex driver support to the SDK starting with 05.05.00.00.  The driver has not yet been upstreamed into the PSP, but that work is in progress.

    The SmartReflex driver supports both the TPS65217 (Beagle) and TPS65910 (EVM and SK) PMICs.

    If the SmartReflex driver recognizes the certain prerequisites are met (supported PMIC is in use, ZCZ package - not ZCE, and a voltage target was programmed by the factory), then the driver will enable itself by "default".  This requires no further input on the part of the user.  The wiki page contains instructions to disable the SmartReflex driver if so desired - perhaps to quantify the positive impact of SmartReflex.

    Certain AM335x samples did not have voltage targets programmed by the factory.  If you mount the debug filesystem and you cannot see /debug/smartreflex, this is likely the case for your board.  You can further verify this by checking the Linux boot log ('dmesg'), and look for the string "Zero NValue read from EFUSE".  This will simply result in the SmartReflex driver to fail to initialize, which is otherwise harmless.

  • I have a customer who is having the same issue. They are using the TPS65910A3A1RSL PMIC along with the ZCZ package. Following capture of the Linux log shows SmartReflex failure. 

    Question I have is that, Can it be verified by device date and lot code whether the given devices have the voltage targets programmed by the factory or not? 

    Will appreciate if someone can advise. Meanwhile, following is the Linux log showing the SmartReflex Failure:

    ----------------------------------------

    [ 1.312469] ThumbEE CPU extension supported.
    [ 1.317016] mux: Failed to setup hwmod io irq -22
    [ 1.322631] Power Management for AM33XX family
    [ 1.327484] Trying to load am335x-pm-firmware.bin (60 secs timeout)
    [ 1.334167] Copied the M3 firmware to UMEM
    [ 1.338531] Cortex M3 Firmware Version = 0x18
    [ 1.343170] Compensating OPP0 for 0mV Orig nvalue:0x999888 New nvalue:0x99988
    8
    [ 1.350830] Compensating OPP1 for 0mV Orig nvalue:0x9a8efd New nvalue:0x9a8ef
    d
    [ 1.359985] Compensating OPP0 for 0mV Orig nvalue:0x99a696 New nvalue:0x99a69
    6
    [ 1.367645] Compensating OPP1 for 0mV Orig nvalue:0x999a88 New nvalue:0x999a8
    8
    [ 1.375274] Compensating OPP2 for 0mV Orig nvalue:0x9a85ee New nvalue:0x9a85e
    e
    [ 1.382904] smartreflex smartreflex: am33xx_sr_probe: Zero NValue read from E
    FUSE
    [ 1.390747] smartreflex: probe of smartreflex failed with error -22
    [ 1.397827] sr_init: platform driver register failed
    [ 1.406768] clock: disabling unused clocks to save power

  • PSB said:
    [ 1.382904] smartreflex smartreflex: am33xx_sr_probe: Zero NValue read from E
    FUSE

    This is the error message Greg stated.  It does not have SmartReflex values fused.  I expect this is an early pre-production part (TMX part number).  Can you confirm?  The best way to avoid the issue would be to use TMS silicon, which is the production-intent silicon.

  • Thanks!  The complete p/n from the customer is AM3354ZCZ60 which does not have the 'X' Prefix so I am thinking that this is production silicon. Is that correct?  How can one verify TMX versus TMS? I am requesting some additional information from the customer including schematics. 

  • PSB -- I got the complete scoop from our Product Engineering team.  Here's the summary:

    • PG1.0 silicon does not have the Smart Reflex values. (None of them...)
    • PG2.1 silicon has the Smart Reflex values. (All of them...)
    • You can tell the difference by part number, i.e. the 'B' devices are PG2.1.

    So AM3354ZCZ60 is a PG1.0 device.  The equivalent part number would be AM3354BZCZ60 for PG2.1 silicon.