1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- /* SPDX-License-Identifier: GPL-2.0 */
- /*
- * Copyright (C) 2016-2018 Xilinx
- */
- #ifndef __LINUX_CLK_ZYNQMP_H_
- #define __LINUX_CLK_ZYNQMP_H_
- #include <linux/spinlock.h>
- #include <linux/firmware/xlnx-zynqmp.h>
- /* Clock APIs payload parameters */
- #define CLK_GET_NAME_RESP_LEN 16
- #define CLK_GET_TOPOLOGY_RESP_WORDS 3
- #define CLK_GET_PARENTS_RESP_WORDS 3
- #define CLK_GET_ATTR_RESP_WORDS 1
- enum topology_type {
- TYPE_INVALID,
- TYPE_MUX,
- TYPE_PLL,
- TYPE_FIXEDFACTOR,
- TYPE_DIV1,
- TYPE_DIV2,
- TYPE_GATE,
- };
- /**
- * struct clock_topology - Clock topology
- * @type: Type of topology
- * @flag: Topology flags
- * @type_flag: Topology type specific flag
- */
- struct clock_topology {
- u32 type;
- u32 flag;
- u32 type_flag;
- };
- struct clk_hw *zynqmp_clk_register_pll(const char *name, u32 clk_id,
- const char * const *parents,
- u8 num_parents,
- const struct clock_topology *nodes);
- struct clk_hw *zynqmp_clk_register_gate(const char *name, u32 clk_id,
- const char * const *parents,
- u8 num_parents,
- const struct clock_topology *nodes);
- struct clk_hw *zynqmp_clk_register_divider(const char *name,
- u32 clk_id,
- const char * const *parents,
- u8 num_parents,
- const struct clock_topology *nodes);
- struct clk_hw *zynqmp_clk_register_mux(const char *name, u32 clk_id,
- const char * const *parents,
- u8 num_parents,
- const struct clock_topology *nodes);
- struct clk_hw *zynqmp_clk_register_fixed_factor(const char *name,
- u32 clk_id,
- const char * const *parents,
- u8 num_parents,
- const struct clock_topology *nodes);
- #endif
|