xilinx: versal: Implement PLL related PM APIs
Implement below PLL related APIs: - Set PLL parameter - Get PLL parameter - Set PLL mode - Get PLL mode Signed-off-by: Tejas Patel <tejas.patel@xilinx.com> Signed-off-by: Jolly Shah <jolly.shah@xilinx.com> Change-Id: I37749d05cdb73641d32da120d319cf36df97c73f
This commit is contained in:
parent
2394b94bfd
commit
baccc60e8b
|
@ -497,3 +497,78 @@ enum pm_ret_status pm_clock_get_parent(uint32_t clk_id, uint32_t *parent)
|
|||
|
||||
return pm_ipi_send_sync(primary_proc, payload, parent, 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* pm_pll_set_param() - Set PLL parameter
|
||||
* @clk_id PLL clock ID
|
||||
* @param PLL parameter ID
|
||||
* @value Value to set for PLL parameter
|
||||
*
|
||||
* @return Returns status, either success or error+reason
|
||||
*/
|
||||
enum pm_ret_status pm_pll_set_param(uint32_t clk_id, uint32_t param,
|
||||
uint32_t value)
|
||||
{
|
||||
uint32_t payload[PAYLOAD_ARG_CNT];
|
||||
|
||||
/* Send request to the PMC */
|
||||
PM_PACK_PAYLOAD4(payload, LIBPM_MODULE_ID, PM_PLL_SET_PARAMETER, clk_id,
|
||||
param, value);
|
||||
|
||||
return pm_ipi_send_sync(primary_proc, payload, NULL, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* pm_pll_get_param() - Get PLL parameter value
|
||||
* @clk_id PLL clock ID
|
||||
* @param PLL parameter ID
|
||||
* @value: Buffer to store PLL parameter value
|
||||
*
|
||||
* @return Returns status, either success or error+reason
|
||||
*/
|
||||
enum pm_ret_status pm_pll_get_param(uint32_t clk_id, uint32_t param,
|
||||
uint32_t *value)
|
||||
{
|
||||
uint32_t payload[PAYLOAD_ARG_CNT];
|
||||
|
||||
/* Send request to the PMC */
|
||||
PM_PACK_PAYLOAD3(payload, LIBPM_MODULE_ID, PM_PLL_GET_PARAMETER, clk_id,
|
||||
param);
|
||||
|
||||
return pm_ipi_send_sync(primary_proc, payload, value, 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* pm_pll_set_mode() - Set PLL mode
|
||||
* @clk_id PLL clock ID
|
||||
* @mode PLL mode
|
||||
*
|
||||
* @return Returns status, either success or error+reason
|
||||
*/
|
||||
enum pm_ret_status pm_pll_set_mode(uint32_t clk_id, uint32_t mode)
|
||||
{
|
||||
uint32_t payload[PAYLOAD_ARG_CNT];
|
||||
|
||||
/* Send request to the PMC */
|
||||
PM_PACK_PAYLOAD3(payload, LIBPM_MODULE_ID, PM_PLL_SET_MODE, clk_id,
|
||||
mode);
|
||||
|
||||
return pm_ipi_send_sync(primary_proc, payload, NULL, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* pm_pll_get_mode() - Get PLL mode
|
||||
* @clk_id PLL clock ID
|
||||
* @mode: Buffer to store PLL mode
|
||||
*
|
||||
* @return Returns status, either success or error+reason
|
||||
*/
|
||||
enum pm_ret_status pm_pll_get_mode(uint32_t clk_id, uint32_t *mode)
|
||||
{
|
||||
uint32_t payload[PAYLOAD_ARG_CNT];
|
||||
|
||||
/* Send request to the PMC */
|
||||
PM_PACK_PAYLOAD2(payload, LIBPM_MODULE_ID, PM_PLL_GET_MODE, clk_id);
|
||||
|
||||
return pm_ipi_send_sync(primary_proc, payload, mode, 1);
|
||||
}
|
||||
|
|
|
@ -47,5 +47,11 @@ enum pm_ret_status pm_clock_set_divider(uint32_t clk_id, uint32_t divider);
|
|||
enum pm_ret_status pm_clock_get_divider(uint32_t clk_id, uint32_t *divider);
|
||||
enum pm_ret_status pm_clock_set_parent(uint32_t clk_id, uint32_t parent);
|
||||
enum pm_ret_status pm_clock_get_parent(uint32_t clk_id, uint32_t *parent);
|
||||
enum pm_ret_status pm_pll_set_param(uint32_t clk_id, uint32_t param,
|
||||
uint32_t value);
|
||||
enum pm_ret_status pm_pll_get_param(uint32_t clk_id, uint32_t param,
|
||||
uint32_t *value);
|
||||
enum pm_ret_status pm_pll_set_mode(uint32_t clk_id, uint32_t mode);
|
||||
enum pm_ret_status pm_pll_get_mode(uint32_t clk_id, uint32_t *mode);
|
||||
|
||||
#endif /* PM_API_SYS_H */
|
||||
|
|
|
@ -48,6 +48,10 @@
|
|||
#define PM_CLOCK_GETRATE 42U
|
||||
#define PM_CLOCK_SETPARENT 43U
|
||||
#define PM_CLOCK_GETPARENT 44U
|
||||
#define PM_PLL_SET_PARAMETER 48U
|
||||
#define PM_PLL_GET_PARAMETER 49U
|
||||
#define PM_PLL_SET_MODE 50U
|
||||
#define PM_PLL_GET_MODE 51U
|
||||
|
||||
/*********************************************************************
|
||||
* Enum definitions
|
||||
|
|
Loading…
Reference in New Issue