162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci *
462306a36Sopenharmony_ci * Copyright (C) 2010 John Crispin <john@phrozen.org>
562306a36Sopenharmony_ci */
662306a36Sopenharmony_ci
762306a36Sopenharmony_ci#ifndef _LTQ_CLK_H__
862306a36Sopenharmony_ci#define _LTQ_CLK_H__
962306a36Sopenharmony_ci
1062306a36Sopenharmony_ci#include <linux/clkdev.h>
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_ci/* clock speeds */
1362306a36Sopenharmony_ci#define CLOCK_33M	33333333
1462306a36Sopenharmony_ci#define CLOCK_60M	60000000
1562306a36Sopenharmony_ci#define CLOCK_62_5M	62500000
1662306a36Sopenharmony_ci#define CLOCK_83M	83333333
1762306a36Sopenharmony_ci#define CLOCK_83_5M	83500000
1862306a36Sopenharmony_ci#define CLOCK_98_304M	98304000
1962306a36Sopenharmony_ci#define CLOCK_100M	100000000
2062306a36Sopenharmony_ci#define CLOCK_111M	111111111
2162306a36Sopenharmony_ci#define CLOCK_125M	125000000
2262306a36Sopenharmony_ci#define CLOCK_133M	133333333
2362306a36Sopenharmony_ci#define CLOCK_150M	150000000
2462306a36Sopenharmony_ci#define CLOCK_166M	166666666
2562306a36Sopenharmony_ci#define CLOCK_167M	166666667
2662306a36Sopenharmony_ci#define CLOCK_196_608M	196608000
2762306a36Sopenharmony_ci#define CLOCK_200M	200000000
2862306a36Sopenharmony_ci#define CLOCK_222M	222000000
2962306a36Sopenharmony_ci#define CLOCK_240M	240000000
3062306a36Sopenharmony_ci#define CLOCK_250M	250000000
3162306a36Sopenharmony_ci#define CLOCK_266M	266666666
3262306a36Sopenharmony_ci#define CLOCK_288M	288888888
3362306a36Sopenharmony_ci#define CLOCK_300M	300000000
3462306a36Sopenharmony_ci#define CLOCK_333M	333333333
3562306a36Sopenharmony_ci#define CLOCK_360M	360000000
3662306a36Sopenharmony_ci#define CLOCK_393M	393215332
3762306a36Sopenharmony_ci#define CLOCK_400M	400000000
3862306a36Sopenharmony_ci#define CLOCK_432M	432000000
3962306a36Sopenharmony_ci#define CLOCK_450M	450000000
4062306a36Sopenharmony_ci#define CLOCK_500M	500000000
4162306a36Sopenharmony_ci#define CLOCK_600M	600000000
4262306a36Sopenharmony_ci#define CLOCK_666M	666666666
4362306a36Sopenharmony_ci#define CLOCK_720M	720000000
4462306a36Sopenharmony_ci
4562306a36Sopenharmony_ci/* clock out speeds */
4662306a36Sopenharmony_ci#define CLOCK_32_768K	32768
4762306a36Sopenharmony_ci#define CLOCK_1_536M	1536000
4862306a36Sopenharmony_ci#define CLOCK_2_5M	2500000
4962306a36Sopenharmony_ci#define CLOCK_12M	12000000
5062306a36Sopenharmony_ci#define CLOCK_24M	24000000
5162306a36Sopenharmony_ci#define CLOCK_25M	25000000
5262306a36Sopenharmony_ci#define CLOCK_30M	30000000
5362306a36Sopenharmony_ci#define CLOCK_40M	40000000
5462306a36Sopenharmony_ci#define CLOCK_48M	48000000
5562306a36Sopenharmony_ci#define CLOCK_50M	50000000
5662306a36Sopenharmony_ci#define CLOCK_60M	60000000
5762306a36Sopenharmony_ci
5862306a36Sopenharmony_cistruct clk {
5962306a36Sopenharmony_ci	struct clk_lookup cl;
6062306a36Sopenharmony_ci	unsigned long rate;
6162306a36Sopenharmony_ci	unsigned long *rates;
6262306a36Sopenharmony_ci	unsigned int module;
6362306a36Sopenharmony_ci	unsigned int bits;
6462306a36Sopenharmony_ci	unsigned long (*get_rate) (void);
6562306a36Sopenharmony_ci	int (*enable) (struct clk *clk);
6662306a36Sopenharmony_ci	void (*disable) (struct clk *clk);
6762306a36Sopenharmony_ci	int (*activate) (struct clk *clk);
6862306a36Sopenharmony_ci	void (*deactivate) (struct clk *clk);
6962306a36Sopenharmony_ci	void (*reboot) (struct clk *clk);
7062306a36Sopenharmony_ci};
7162306a36Sopenharmony_ci
7262306a36Sopenharmony_ciextern void clkdev_add_static(unsigned long cpu, unsigned long fpi,
7362306a36Sopenharmony_ci				unsigned long io, unsigned long ppe);
7462306a36Sopenharmony_ci
7562306a36Sopenharmony_ciextern unsigned long ltq_danube_cpu_hz(void);
7662306a36Sopenharmony_ciextern unsigned long ltq_danube_fpi_hz(void);
7762306a36Sopenharmony_ciextern unsigned long ltq_danube_pp32_hz(void);
7862306a36Sopenharmony_ci
7962306a36Sopenharmony_ciextern unsigned long ltq_ar9_cpu_hz(void);
8062306a36Sopenharmony_ciextern unsigned long ltq_ar9_fpi_hz(void);
8162306a36Sopenharmony_ci
8262306a36Sopenharmony_ciextern unsigned long ltq_vr9_cpu_hz(void);
8362306a36Sopenharmony_ciextern unsigned long ltq_vr9_fpi_hz(void);
8462306a36Sopenharmony_ciextern unsigned long ltq_vr9_pp32_hz(void);
8562306a36Sopenharmony_ci
8662306a36Sopenharmony_ciextern unsigned long ltq_ar10_cpu_hz(void);
8762306a36Sopenharmony_ciextern unsigned long ltq_ar10_fpi_hz(void);
8862306a36Sopenharmony_ciextern unsigned long ltq_ar10_pp32_hz(void);
8962306a36Sopenharmony_ci
9062306a36Sopenharmony_ciextern unsigned long ltq_grx390_cpu_hz(void);
9162306a36Sopenharmony_ciextern unsigned long ltq_grx390_fpi_hz(void);
9262306a36Sopenharmony_ciextern unsigned long ltq_grx390_pp32_hz(void);
9362306a36Sopenharmony_ci
9462306a36Sopenharmony_ci#endif
95