162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Clocks for ux500 platforms
462306a36Sopenharmony_ci *
562306a36Sopenharmony_ci * Copyright (C) 2012 ST-Ericsson SA
662306a36Sopenharmony_ci * Author: Ulf Hansson <ulf.hansson@linaro.org>
762306a36Sopenharmony_ci */
862306a36Sopenharmony_ci
962306a36Sopenharmony_ci#ifndef __UX500_CLK_H
1062306a36Sopenharmony_ci#define __UX500_CLK_H
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_ci#include <linux/device.h>
1362306a36Sopenharmony_ci#include <linux/types.h>
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_cistruct clk;
1662306a36Sopenharmony_cistruct clk_hw;
1762306a36Sopenharmony_ci
1862306a36Sopenharmony_cistruct clk *clk_reg_prcc_pclk(const char *name,
1962306a36Sopenharmony_ci			      const char *parent_name,
2062306a36Sopenharmony_ci			      resource_size_t phy_base,
2162306a36Sopenharmony_ci			      u32 cg_sel,
2262306a36Sopenharmony_ci			      unsigned long flags);
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_cistruct clk *clk_reg_prcc_kclk(const char *name,
2562306a36Sopenharmony_ci			      const char *parent_name,
2662306a36Sopenharmony_ci			      resource_size_t phy_base,
2762306a36Sopenharmony_ci			      u32 cg_sel,
2862306a36Sopenharmony_ci			      unsigned long flags);
2962306a36Sopenharmony_ci
3062306a36Sopenharmony_cistruct clk_hw *clk_reg_prcmu_scalable(const char *name,
3162306a36Sopenharmony_ci				      const char *parent_name,
3262306a36Sopenharmony_ci				      u8 cg_sel,
3362306a36Sopenharmony_ci				      unsigned long rate,
3462306a36Sopenharmony_ci				      unsigned long flags);
3562306a36Sopenharmony_ci
3662306a36Sopenharmony_cistruct clk_hw *clk_reg_prcmu_gate(const char *name,
3762306a36Sopenharmony_ci				  const char *parent_name,
3862306a36Sopenharmony_ci				  u8 cg_sel,
3962306a36Sopenharmony_ci				  unsigned long flags);
4062306a36Sopenharmony_ci
4162306a36Sopenharmony_cistruct clk_hw *clk_reg_prcmu_scalable_rate(const char *name,
4262306a36Sopenharmony_ci					   const char *parent_name,
4362306a36Sopenharmony_ci					   u8 cg_sel,
4462306a36Sopenharmony_ci					   unsigned long rate,
4562306a36Sopenharmony_ci					   unsigned long flags);
4662306a36Sopenharmony_ci
4762306a36Sopenharmony_cistruct clk_hw *clk_reg_prcmu_rate(const char *name,
4862306a36Sopenharmony_ci				  const char *parent_name,
4962306a36Sopenharmony_ci				  u8 cg_sel,
5062306a36Sopenharmony_ci				  unsigned long flags);
5162306a36Sopenharmony_ci
5262306a36Sopenharmony_cistruct clk_hw *clk_reg_prcmu_opp_gate(const char *name,
5362306a36Sopenharmony_ci				      const char *parent_name,
5462306a36Sopenharmony_ci				      u8 cg_sel,
5562306a36Sopenharmony_ci				      unsigned long flags);
5662306a36Sopenharmony_ci
5762306a36Sopenharmony_cistruct clk_hw *clk_reg_prcmu_opp_volt_scalable(const char *name,
5862306a36Sopenharmony_ci					       const char *parent_name,
5962306a36Sopenharmony_ci					       u8 cg_sel,
6062306a36Sopenharmony_ci					       unsigned long rate,
6162306a36Sopenharmony_ci					       unsigned long flags);
6262306a36Sopenharmony_ci
6362306a36Sopenharmony_cistruct clk_hw *clk_reg_prcmu_clkout(const char *name,
6462306a36Sopenharmony_ci				    const char * const *parent_names,
6562306a36Sopenharmony_ci				    int num_parents,
6662306a36Sopenharmony_ci				    u8 source, u8 divider);
6762306a36Sopenharmony_ci
6862306a36Sopenharmony_cistruct clk *clk_reg_sysctrl_gate(struct device *dev,
6962306a36Sopenharmony_ci				 const char *name,
7062306a36Sopenharmony_ci				 const char *parent_name,
7162306a36Sopenharmony_ci				 u16 reg_sel,
7262306a36Sopenharmony_ci				 u8 reg_mask,
7362306a36Sopenharmony_ci				 u8 reg_bits,
7462306a36Sopenharmony_ci				 unsigned long enable_delay_us,
7562306a36Sopenharmony_ci				 unsigned long flags);
7662306a36Sopenharmony_ci
7762306a36Sopenharmony_cistruct clk *clk_reg_sysctrl_gate_fixed_rate(struct device *dev,
7862306a36Sopenharmony_ci					    const char *name,
7962306a36Sopenharmony_ci					    const char *parent_name,
8062306a36Sopenharmony_ci					    u16 reg_sel,
8162306a36Sopenharmony_ci					    u8 reg_mask,
8262306a36Sopenharmony_ci					    u8 reg_bits,
8362306a36Sopenharmony_ci					    unsigned long rate,
8462306a36Sopenharmony_ci					    unsigned long enable_delay_us,
8562306a36Sopenharmony_ci					    unsigned long flags);
8662306a36Sopenharmony_ci
8762306a36Sopenharmony_cistruct clk *clk_reg_sysctrl_set_parent(struct device *dev,
8862306a36Sopenharmony_ci				       const char *name,
8962306a36Sopenharmony_ci				       const char **parent_names,
9062306a36Sopenharmony_ci				       u8 num_parents,
9162306a36Sopenharmony_ci				       u16 *reg_sel,
9262306a36Sopenharmony_ci				       u8 *reg_mask,
9362306a36Sopenharmony_ci				       u8 *reg_bits,
9462306a36Sopenharmony_ci				       unsigned long flags);
9562306a36Sopenharmony_ci
9662306a36Sopenharmony_ci#endif /* __UX500_CLK_H */
97