xref: /openbmc/linux/drivers/clk/ux500/clk.h (revision 4f2c0a4acffbec01079c28f839422e64ddeff004)
1af873fceSThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-only */
23b01f87bSUlf Hansson /*
33b01f87bSUlf Hansson  * Clocks for ux500 platforms
43b01f87bSUlf Hansson  *
53b01f87bSUlf Hansson  * Copyright (C) 2012 ST-Ericsson SA
63b01f87bSUlf Hansson  * Author: Ulf Hansson <ulf.hansson@linaro.org>
73b01f87bSUlf Hansson  */
83b01f87bSUlf Hansson 
93b01f87bSUlf Hansson #ifndef __UX500_CLK_H
103b01f87bSUlf Hansson #define __UX500_CLK_H
113b01f87bSUlf Hansson 
125b82d03bSUlf Hansson #include <linux/device.h>
13c700835bSMike Turquette #include <linux/types.h>
143b01f87bSUlf Hansson 
15a162ca91SStephen Boyd struct clk;
16a8173c59SLinus Walleij struct clk_hw;
17a162ca91SStephen Boyd 
183b01f87bSUlf Hansson struct clk *clk_reg_prcc_pclk(const char *name,
193b01f87bSUlf Hansson 			      const char *parent_name,
20c700835bSMike Turquette 			      resource_size_t phy_base,
213b01f87bSUlf Hansson 			      u32 cg_sel,
223b01f87bSUlf Hansson 			      unsigned long flags);
233b01f87bSUlf Hansson 
243b01f87bSUlf Hansson struct clk *clk_reg_prcc_kclk(const char *name,
253b01f87bSUlf Hansson 			      const char *parent_name,
26c700835bSMike Turquette 			      resource_size_t phy_base,
273b01f87bSUlf Hansson 			      u32 cg_sel,
283b01f87bSUlf Hansson 			      unsigned long flags);
293b01f87bSUlf Hansson 
30a8173c59SLinus Walleij struct clk_hw *clk_reg_prcmu_scalable(const char *name,
313b01f87bSUlf Hansson 				      const char *parent_name,
323b01f87bSUlf Hansson 				      u8 cg_sel,
333b01f87bSUlf Hansson 				      unsigned long rate,
343b01f87bSUlf Hansson 				      unsigned long flags);
353b01f87bSUlf Hansson 
36a8173c59SLinus Walleij struct clk_hw *clk_reg_prcmu_gate(const char *name,
373b01f87bSUlf Hansson 				  const char *parent_name,
383b01f87bSUlf Hansson 				  u8 cg_sel,
393b01f87bSUlf Hansson 				  unsigned long flags);
403b01f87bSUlf Hansson 
41a8173c59SLinus Walleij struct clk_hw *clk_reg_prcmu_scalable_rate(const char *name,
42a816d250SUlf Hansson 					   const char *parent_name,
43a816d250SUlf Hansson 					   u8 cg_sel,
44a816d250SUlf Hansson 					   unsigned long rate,
45a816d250SUlf Hansson 					   unsigned long flags);
46a816d250SUlf Hansson 
47a8173c59SLinus Walleij struct clk_hw *clk_reg_prcmu_rate(const char *name,
4870b1fce2SUlf Hansson 				  const char *parent_name,
4970b1fce2SUlf Hansson 				  u8 cg_sel,
5070b1fce2SUlf Hansson 				  unsigned long flags);
5170b1fce2SUlf Hansson 
52a8173c59SLinus Walleij struct clk_hw *clk_reg_prcmu_opp_gate(const char *name,
533b01f87bSUlf Hansson 				      const char *parent_name,
543b01f87bSUlf Hansson 				      u8 cg_sel,
553b01f87bSUlf Hansson 				      unsigned long flags);
563b01f87bSUlf Hansson 
57a8173c59SLinus Walleij struct clk_hw *clk_reg_prcmu_opp_volt_scalable(const char *name,
58b0ea0fc7SUlf Hansson 					       const char *parent_name,
59b0ea0fc7SUlf Hansson 					       u8 cg_sel,
60b0ea0fc7SUlf Hansson 					       unsigned long rate,
61b0ea0fc7SUlf Hansson 					       unsigned long flags);
62b0ea0fc7SUlf Hansson 
63*639d5661SLinus Walleij struct clk_hw *clk_reg_prcmu_clkout(const char *name,
64*639d5661SLinus Walleij 				    const char * const *parent_names,
65*639d5661SLinus Walleij 				    int num_parents,
66*639d5661SLinus Walleij 				    u8 source, u8 divider);
67*639d5661SLinus Walleij 
685b82d03bSUlf Hansson struct clk *clk_reg_sysctrl_gate(struct device *dev,
695b82d03bSUlf Hansson 				 const char *name,
705b82d03bSUlf Hansson 				 const char *parent_name,
715b82d03bSUlf Hansson 				 u16 reg_sel,
725b82d03bSUlf Hansson 				 u8 reg_mask,
735b82d03bSUlf Hansson 				 u8 reg_bits,
745b82d03bSUlf Hansson 				 unsigned long enable_delay_us,
755b82d03bSUlf Hansson 				 unsigned long flags);
765b82d03bSUlf Hansson 
775b82d03bSUlf Hansson struct clk *clk_reg_sysctrl_gate_fixed_rate(struct device *dev,
785b82d03bSUlf Hansson 					    const char *name,
795b82d03bSUlf Hansson 					    const char *parent_name,
805b82d03bSUlf Hansson 					    u16 reg_sel,
815b82d03bSUlf Hansson 					    u8 reg_mask,
825b82d03bSUlf Hansson 					    u8 reg_bits,
835b82d03bSUlf Hansson 					    unsigned long rate,
845b82d03bSUlf Hansson 					    unsigned long enable_delay_us,
855b82d03bSUlf Hansson 					    unsigned long flags);
865b82d03bSUlf Hansson 
875b82d03bSUlf Hansson struct clk *clk_reg_sysctrl_set_parent(struct device *dev,
885b82d03bSUlf Hansson 				       const char *name,
895b82d03bSUlf Hansson 				       const char **parent_names,
905b82d03bSUlf Hansson 				       u8 num_parents,
915b82d03bSUlf Hansson 				       u16 *reg_sel,
925b82d03bSUlf Hansson 				       u8 *reg_mask,
935b82d03bSUlf Hansson 				       u8 *reg_bits,
945b82d03bSUlf Hansson 				       unsigned long flags);
955b82d03bSUlf Hansson 
963b01f87bSUlf Hansson #endif /* __UX500_CLK_H */
97