aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/firmware
diff options
context:
space:
mode:
authorRajan Vaja <rajanv@xilinx.com>2018-09-12 15:38:38 -0400
committerMichal Simek <michal.simek@xilinx.com>2018-09-26 02:47:34 -0400
commitf9627312e20721681ea326bd2b7935bf8034b288 (patch)
tree02cebd0925084b4dd47e2ffa3746b8d229df7546 /include/linux/firmware
parent59ecdd778879f171072b663f91de6c3a595e2ed4 (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.h30
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 @@
35enum pm_api_id { 35enum 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
60enum 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
51enum pm_query_id { 67enum 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 {
69struct zynqmp_eemi_ops { 90struct 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)