18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
28c2ecf20Sopenharmony_ci
38c2ecf20Sopenharmony_ci#ifndef __QCOM_CLK_KRAIT_H
48c2ecf20Sopenharmony_ci#define __QCOM_CLK_KRAIT_H
58c2ecf20Sopenharmony_ci
68c2ecf20Sopenharmony_ci#include <linux/clk-provider.h>
78c2ecf20Sopenharmony_ci
88c2ecf20Sopenharmony_cistruct krait_mux_clk {
98c2ecf20Sopenharmony_ci	unsigned int	*parent_map;
108c2ecf20Sopenharmony_ci	u32		offset;
118c2ecf20Sopenharmony_ci	u32		mask;
128c2ecf20Sopenharmony_ci	u32		shift;
138c2ecf20Sopenharmony_ci	u32		en_mask;
148c2ecf20Sopenharmony_ci	bool		lpl;
158c2ecf20Sopenharmony_ci	u8		safe_sel;
168c2ecf20Sopenharmony_ci	u8		old_index;
178c2ecf20Sopenharmony_ci	bool		reparent;
188c2ecf20Sopenharmony_ci
198c2ecf20Sopenharmony_ci	struct clk_hw	hw;
208c2ecf20Sopenharmony_ci	struct notifier_block   clk_nb;
218c2ecf20Sopenharmony_ci};
228c2ecf20Sopenharmony_ci
238c2ecf20Sopenharmony_ci#define to_krait_mux_clk(_hw) container_of(_hw, struct krait_mux_clk, hw)
248c2ecf20Sopenharmony_ci
258c2ecf20Sopenharmony_ciextern const struct clk_ops krait_mux_clk_ops;
268c2ecf20Sopenharmony_ci
278c2ecf20Sopenharmony_cistruct krait_div2_clk {
288c2ecf20Sopenharmony_ci	u32		offset;
298c2ecf20Sopenharmony_ci	u8		width;
308c2ecf20Sopenharmony_ci	u32		shift;
318c2ecf20Sopenharmony_ci	bool		lpl;
328c2ecf20Sopenharmony_ci
338c2ecf20Sopenharmony_ci	struct clk_hw	hw;
348c2ecf20Sopenharmony_ci};
358c2ecf20Sopenharmony_ci
368c2ecf20Sopenharmony_ci#define to_krait_div2_clk(_hw) container_of(_hw, struct krait_div2_clk, hw)
378c2ecf20Sopenharmony_ci
388c2ecf20Sopenharmony_ciextern const struct clk_ops krait_div2_clk_ops;
398c2ecf20Sopenharmony_ci
408c2ecf20Sopenharmony_ci#endif
41