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