xref: /kernel/linux/linux-5.10/arch/mips/lantiq/clk.h (revision 8c2ecf20)
18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */
28c2ecf20Sopenharmony_ci/*
38c2ecf20Sopenharmony_ci *
48c2ecf20Sopenharmony_ci * Copyright (C) 2010 John Crispin <john@phrozen.org>
58c2ecf20Sopenharmony_ci */
68c2ecf20Sopenharmony_ci
78c2ecf20Sopenharmony_ci#ifndef _LTQ_CLK_H__
88c2ecf20Sopenharmony_ci#define _LTQ_CLK_H__
98c2ecf20Sopenharmony_ci
108c2ecf20Sopenharmony_ci#include <linux/clkdev.h>
118c2ecf20Sopenharmony_ci
128c2ecf20Sopenharmony_ci/* clock speeds */
138c2ecf20Sopenharmony_ci#define CLOCK_33M	33333333
148c2ecf20Sopenharmony_ci#define CLOCK_60M	60000000
158c2ecf20Sopenharmony_ci#define CLOCK_62_5M	62500000
168c2ecf20Sopenharmony_ci#define CLOCK_83M	83333333
178c2ecf20Sopenharmony_ci#define CLOCK_83_5M	83500000
188c2ecf20Sopenharmony_ci#define CLOCK_98_304M	98304000
198c2ecf20Sopenharmony_ci#define CLOCK_100M	100000000
208c2ecf20Sopenharmony_ci#define CLOCK_111M	111111111
218c2ecf20Sopenharmony_ci#define CLOCK_125M	125000000
228c2ecf20Sopenharmony_ci#define CLOCK_133M	133333333
238c2ecf20Sopenharmony_ci#define CLOCK_150M	150000000
248c2ecf20Sopenharmony_ci#define CLOCK_166M	166666666
258c2ecf20Sopenharmony_ci#define CLOCK_167M	166666667
268c2ecf20Sopenharmony_ci#define CLOCK_196_608M	196608000
278c2ecf20Sopenharmony_ci#define CLOCK_200M	200000000
288c2ecf20Sopenharmony_ci#define CLOCK_222M	222000000
298c2ecf20Sopenharmony_ci#define CLOCK_240M	240000000
308c2ecf20Sopenharmony_ci#define CLOCK_250M	250000000
318c2ecf20Sopenharmony_ci#define CLOCK_266M	266666666
328c2ecf20Sopenharmony_ci#define CLOCK_288M	288888888
338c2ecf20Sopenharmony_ci#define CLOCK_300M	300000000
348c2ecf20Sopenharmony_ci#define CLOCK_333M	333333333
358c2ecf20Sopenharmony_ci#define CLOCK_360M	360000000
368c2ecf20Sopenharmony_ci#define CLOCK_393M	393215332
378c2ecf20Sopenharmony_ci#define CLOCK_400M	400000000
388c2ecf20Sopenharmony_ci#define CLOCK_432M	432000000
398c2ecf20Sopenharmony_ci#define CLOCK_450M	450000000
408c2ecf20Sopenharmony_ci#define CLOCK_500M	500000000
418c2ecf20Sopenharmony_ci#define CLOCK_600M	600000000
428c2ecf20Sopenharmony_ci#define CLOCK_666M	666666666
438c2ecf20Sopenharmony_ci#define CLOCK_720M	720000000
448c2ecf20Sopenharmony_ci
458c2ecf20Sopenharmony_ci/* clock out speeds */
468c2ecf20Sopenharmony_ci#define CLOCK_32_768K	32768
478c2ecf20Sopenharmony_ci#define CLOCK_1_536M	1536000
488c2ecf20Sopenharmony_ci#define CLOCK_2_5M	2500000
498c2ecf20Sopenharmony_ci#define CLOCK_12M	12000000
508c2ecf20Sopenharmony_ci#define CLOCK_24M	24000000
518c2ecf20Sopenharmony_ci#define CLOCK_25M	25000000
528c2ecf20Sopenharmony_ci#define CLOCK_30M	30000000
538c2ecf20Sopenharmony_ci#define CLOCK_40M	40000000
548c2ecf20Sopenharmony_ci#define CLOCK_48M	48000000
558c2ecf20Sopenharmony_ci#define CLOCK_50M	50000000
568c2ecf20Sopenharmony_ci#define CLOCK_60M	60000000
578c2ecf20Sopenharmony_ci
588c2ecf20Sopenharmony_cistruct clk {
598c2ecf20Sopenharmony_ci	struct clk_lookup cl;
608c2ecf20Sopenharmony_ci	unsigned long rate;
618c2ecf20Sopenharmony_ci	unsigned long *rates;
628c2ecf20Sopenharmony_ci	unsigned int module;
638c2ecf20Sopenharmony_ci	unsigned int bits;
648c2ecf20Sopenharmony_ci	unsigned long (*get_rate) (void);
658c2ecf20Sopenharmony_ci	int (*enable) (struct clk *clk);
668c2ecf20Sopenharmony_ci	void (*disable) (struct clk *clk);
678c2ecf20Sopenharmony_ci	int (*activate) (struct clk *clk);
688c2ecf20Sopenharmony_ci	void (*deactivate) (struct clk *clk);
698c2ecf20Sopenharmony_ci	void (*reboot) (struct clk *clk);
708c2ecf20Sopenharmony_ci};
718c2ecf20Sopenharmony_ci
728c2ecf20Sopenharmony_ciextern void clkdev_add_static(unsigned long cpu, unsigned long fpi,
738c2ecf20Sopenharmony_ci				unsigned long io, unsigned long ppe);
748c2ecf20Sopenharmony_ci
758c2ecf20Sopenharmony_ciextern unsigned long ltq_danube_cpu_hz(void);
768c2ecf20Sopenharmony_ciextern unsigned long ltq_danube_fpi_hz(void);
778c2ecf20Sopenharmony_ciextern unsigned long ltq_danube_pp32_hz(void);
788c2ecf20Sopenharmony_ci
798c2ecf20Sopenharmony_ciextern unsigned long ltq_ar9_cpu_hz(void);
808c2ecf20Sopenharmony_ciextern unsigned long ltq_ar9_fpi_hz(void);
818c2ecf20Sopenharmony_ci
828c2ecf20Sopenharmony_ciextern unsigned long ltq_vr9_cpu_hz(void);
838c2ecf20Sopenharmony_ciextern unsigned long ltq_vr9_fpi_hz(void);
848c2ecf20Sopenharmony_ciextern unsigned long ltq_vr9_pp32_hz(void);
858c2ecf20Sopenharmony_ci
868c2ecf20Sopenharmony_ciextern unsigned long ltq_ar10_cpu_hz(void);
878c2ecf20Sopenharmony_ciextern unsigned long ltq_ar10_fpi_hz(void);
888c2ecf20Sopenharmony_ciextern unsigned long ltq_ar10_pp32_hz(void);
898c2ecf20Sopenharmony_ci
908c2ecf20Sopenharmony_ciextern unsigned long ltq_grx390_cpu_hz(void);
918c2ecf20Sopenharmony_ciextern unsigned long ltq_grx390_fpi_hz(void);
928c2ecf20Sopenharmony_ciextern unsigned long ltq_grx390_pp32_hz(void);
938c2ecf20Sopenharmony_ci
948c2ecf20Sopenharmony_ci#endif
95