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.

PROCESSOR-SDK-AM64X: POWER Management config continue.

Part Number: PROCESSOR-SDK-AM64X

Tool/software:

Hi, 

Now, I know power managerment will initialize the power management capabilities of system firmware.

I have more questions about coding. 

I am using mcu_plus_sdk_am243x_09_20_00_50.

under C:\ti\mcu_plus_sdk_am243x_09_02_00_50\source\drivers\sciclient\include\sciclient_boardcfg.h
in code power management is using below structure.
<code>
typedef struct
{
    uint32_t boardConfigLow;
    /**< Low 32-bits of physical pointer to \#tisci_boardConfig /
    \#tisci_boardcfg_pm / \#local_rm_boardcfg / \#tisci_boardcfg_sec .
     struct.
     */
    uint32_t boardConfigHigh;
    /**< High 32-bits of physical pointer to \#tisci_boardConfig /
    \#tisci_boardcfg_pm / \#local_rm_boardcfg / \#tisci_boardcfg_sec .
     struct.
     */
    uint16_t boardConfigSize;
    /**< (uint16_t) sizeof(<board configuration structure>) */
    uint8_t  devGrp;
    /**< SoC defined SYSFW devgrp. Example: #DEVGRP_ALL
     */
} Sciclient_BoardCfgPrms_t;

</code>

1.  what is low address and high address for? Does it like an addition?  eg: I have 

tisci_boardcfg_pm power1.  
tisci_boardcfg_pm  power2


then I assign them to 

.boardConfigLow =&power1
.boardConfigHigh =&power2

2. why in the description we are allowed to pass the board configuration into  boardConfigLow.  is there a relationship between resource management and power management. 

in the document, power management is more Independent..


3. why in your examples all of them are 0? Does 0 indicate it will use default value. 

eg: under  C:\ti\mcu_plus_sdk_am243x_09_02_00_50\examples\drivers\boot\sbl_dfu\am243x-lp\r5fss0-0_nortos\main.c
<code>

        Sciclient_BoardCfgPrms_t boardCfgPrms_pm =
            {
                .boardConfigLow = (uint32_t)0,
                .boardConfigHigh = 0,
                .boardConfigSize = 0,
                .devGrp = DEVGRP_ALL,
            };
</code>


4.  why your boardcfg is too simple. there is no info but revision at all.

in C:\ti\mcu_plus_sdk_am243x_09_02_00_50\source\drivers\sciclient\sciclient_default_boardcfg\am243x\sciclient_defaultBoardcfg_pm.c
<code>
struct tisci_boardcfg_pm {
    struct tisci_boardcfg_abi_rev    rev;
} __attribute__((__packed__));

</code>



I believe there some description mistake. eg:  you can not assign  resource boardcfg to boardConfigLow

 uint32_t boardConfigLow;
    /**< Low 32-bits of physical pointer to \#tisci_boardConfig /
    \#tisci_boardcfg_pm / \#local_rm_boardcfg / \#tisci_boardcfg_sec .
     struct.

 

Thanks. 

  • Hello Jun,

    I am looking at your queries, and you may expect reply in one or two days.

    Regards,

    Anil.

  • Hi Jun,

    Apologies for the delayed response.

    1.  what is low address and high address for? Does it like an addition?  eg: I have 

    It is not an addition to the power config. The high and low parameter expects the address for the boardcfg_pm. The high holds the upper 32bit address and the low holds the lower 32bit address of boardcfg_pm. They together represent a 64bit address.

    2. why in the description we are allowed to pass the board configuration into  boardConfigLow.  is there a relationship between resource management and power management. 

    This reason is explained above. The high and low together represents the address where the boardcfg_pm is stored.

    3. why in your examples all of them are 0? Does 0 indicate it will use default value

    This values are set to 0 because we are passing an empty boardcfg_pm to the Sysfw. This high and low parameters are unused in the Sysfw. That's why we are currently setting it to value 0.

    4.  why your boardcfg is too simple. there is no info but revision at all.

    As already mention we are just passing an empty boardcfg_pm to the Sysfw as this parameters are not used. The ideal way is to populate the structure and set the correct ABI rev value and pass its address in high and low. But the Sysfw is not using this parameters so you do not need to worry about those details.

    Hope the above information helps.

    Regards,

    Tushar