diff options
| author | Rajan Vaja <rajanv@xilinx.com> | 2018-09-12 15:38:38 -0400 |
|---|---|---|
| committer | Michal Simek <michal.simek@xilinx.com> | 2018-09-26 02:47:34 -0400 |
| commit | f9627312e20721681ea326bd2b7935bf8034b288 (patch) | |
| tree | 02cebd0925084b4dd47e2ffa3746b8d229df7546 /include/linux/firmware | |
| parent | 59ecdd778879f171072b663f91de6c3a595e2ed4 (diff) | |
firmware: xilinx: Add clock APIs
Add clock APIs to control clocks through firmware
interface.
Signed-off-by: Rajan Vaja <rajanv@xilinx.com>
Signed-off-by: Jolly Shah <jollys@xilinx.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
Diffstat (limited to 'include/linux/firmware')
| -rw-r--r-- | include/linux/firmware/xlnx-zynqmp.h | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/include/linux/firmware/xlnx-zynqmp.h b/include/linux/firmware/xlnx-zynqmp.h index 287f42caa623..015e130431e6 100644 --- a/include/linux/firmware/xlnx-zynqmp.h +++ b/include/linux/firmware/xlnx-zynqmp.h | |||
| @@ -35,6 +35,15 @@ | |||
| 35 | enum pm_api_id { | 35 | enum pm_api_id { |
| 36 | PM_GET_API_VERSION = 1, | 36 | PM_GET_API_VERSION = 1, |
| 37 | PM_QUERY_DATA = 35, | 37 | PM_QUERY_DATA = 35, |
| 38 | PM_CLOCK_ENABLE, | ||
| 39 | PM_CLOCK_DISABLE, | ||
| 40 | PM_CLOCK_GETSTATE, | ||
| 41 | PM_CLOCK_SETDIVIDER, | ||
| 42 | PM_CLOCK_GETDIVIDER, | ||
| 43 | PM_CLOCK_SETRATE, | ||
| 44 | PM_CLOCK_GETRATE, | ||
| 45 | PM_CLOCK_SETPARENT, | ||
| 46 | PM_CLOCK_GETPARENT, | ||
| 38 | }; | 47 | }; |
| 39 | 48 | ||
| 40 | /* PMU-FW return status codes */ | 49 | /* PMU-FW return status codes */ |
| @@ -48,8 +57,20 @@ enum pm_ret_status { | |||
| 48 | XST_PM_ABORT_SUSPEND, | 57 | XST_PM_ABORT_SUSPEND, |
| 49 | }; | 58 | }; |
| 50 | 59 | ||
| 60 | enum pm_ioctl_id { | ||
| 61 | IOCTL_SET_PLL_FRAC_MODE = 8, | ||
| 62 | IOCTL_GET_PLL_FRAC_MODE, | ||
| 63 | IOCTL_SET_PLL_FRAC_DATA, | ||
| 64 | IOCTL_GET_PLL_FRAC_DATA, | ||
| 65 | }; | ||
| 66 | |||
| 51 | enum pm_query_id { | 67 | enum pm_query_id { |
| 52 | PM_QID_INVALID, | 68 | PM_QID_INVALID, |
| 69 | PM_QID_CLOCK_GET_NAME, | ||
| 70 | PM_QID_CLOCK_GET_TOPOLOGY, | ||
| 71 | PM_QID_CLOCK_GET_FIXEDFACTOR_PARAMS, | ||
| 72 | PM_QID_CLOCK_GET_PARENTS, | ||
| 73 | PM_QID_CLOCK_GET_ATTRIBUTES, | ||
| 53 | }; | 74 | }; |
| 54 | 75 | ||
| 55 | /** | 76 | /** |
| @@ -69,6 +90,15 @@ struct zynqmp_pm_query_data { | |||
| 69 | struct zynqmp_eemi_ops { | 90 | struct zynqmp_eemi_ops { |
| 70 | int (*get_api_version)(u32 *version); | 91 | int (*get_api_version)(u32 *version); |
| 71 | int (*query_data)(struct zynqmp_pm_query_data qdata, u32 *out); | 92 | int (*query_data)(struct zynqmp_pm_query_data qdata, u32 *out); |
| 93 | int (*clock_enable)(u32 clock_id); | ||
| 94 | int (*clock_disable)(u32 clock_id); | ||
| 95 | int (*clock_getstate)(u32 clock_id, u32 *state); | ||
| 96 | int (*clock_setdivider)(u32 clock_id, u32 divider); | ||
| 97 | int (*clock_getdivider)(u32 clock_id, u32 *divider); | ||
| 98 | int (*clock_setrate)(u32 clock_id, u64 rate); | ||
| 99 | int (*clock_getrate)(u32 clock_id, u64 *rate); | ||
| 100 | int (*clock_setparent)(u32 clock_id, u32 parent_id); | ||
| 101 | int (*clock_getparent)(u32 clock_id, u32 *parent_id); | ||
| 72 | }; | 102 | }; |
| 73 | 103 | ||
| 74 | #if IS_REACHABLE(CONFIG_ARCH_ZYNQMP) | 104 | #if IS_REACHABLE(CONFIG_ARCH_ZYNQMP) |
