1 /* SPDX-License-Identifier: GPL-2.0 */
3 * Copyright (C) 2016-2018 Xilinx
6 #ifndef __LINUX_CLK_ZYNQMP_H_
7 #define __LINUX_CLK_ZYNQMP_H_
9 #include <linux/spinlock.h>
11 #include <linux/firmware/xlnx-zynqmp.h>
13 /* Clock APIs payload parameters */
14 #define CLK_GET_NAME_RESP_LEN 16
15 #define CLK_GET_TOPOLOGY_RESP_WORDS 3
16 #define CLK_GET_PARENTS_RESP_WORDS 3
17 #define CLK_GET_ATTR_RESP_WORDS 1
30 * struct clock_topology - Clock topology
31 * @type: Type of topology
32 * @flag: Topology flags
33 * @type_flag: Topology type specific flag
35 struct clock_topology {
41 struct clk_hw *zynqmp_clk_register_pll(const char *name, u32 clk_id,
42 const char * const *parents,
44 const struct clock_topology *nodes);
46 struct clk_hw *zynqmp_clk_register_gate(const char *name, u32 clk_id,
47 const char * const *parents,
49 const struct clock_topology *nodes);
51 struct clk_hw *zynqmp_clk_register_divider(const char *name,
53 const char * const *parents,
55 const struct clock_topology *nodes);
57 struct clk_hw *zynqmp_clk_register_mux(const char *name, u32 clk_id,
58 const char * const *parents,
60 const struct clock_topology *nodes);
62 struct clk_hw *zynqmp_clk_register_fixed_factor(const char *name,
64 const char * const *parents,
66 const struct clock_topology *nodes);