18a4da6e3SMark Rutland /* 28a4da6e3SMark Rutland * Copyright (C) 2012 ARM Ltd. 38a4da6e3SMark Rutland * 48a4da6e3SMark Rutland * This program is free software; you can redistribute it and/or modify 58a4da6e3SMark Rutland * it under the terms of the GNU General Public License version 2 as 68a4da6e3SMark Rutland * published by the Free Software Foundation. 78a4da6e3SMark Rutland * 88a4da6e3SMark Rutland * This program is distributed in the hope that it will be useful, 98a4da6e3SMark Rutland * but WITHOUT ANY WARRANTY; without even the implied warranty of 108a4da6e3SMark Rutland * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 118a4da6e3SMark Rutland * GNU General Public License for more details. 128a4da6e3SMark Rutland * 138a4da6e3SMark Rutland * You should have received a copy of the GNU General Public License 148a4da6e3SMark Rutland * along with this program. If not, see <http://www.gnu.org/licenses/>. 158a4da6e3SMark Rutland */ 168a4da6e3SMark Rutland #ifndef __CLKSOURCE_ARM_ARCH_TIMER_H 178a4da6e3SMark Rutland #define __CLKSOURCE_ARM_ARCH_TIMER_H 188a4da6e3SMark Rutland 198a4da6e3SMark Rutland #include <linux/clocksource.h> 208a4da6e3SMark Rutland #include <linux/types.h> 218a4da6e3SMark Rutland 228a4da6e3SMark Rutland #define ARCH_TIMER_CTRL_ENABLE (1 << 0) 238a4da6e3SMark Rutland #define ARCH_TIMER_CTRL_IT_MASK (1 << 1) 248a4da6e3SMark Rutland #define ARCH_TIMER_CTRL_IT_STAT (1 << 2) 258a4da6e3SMark Rutland 26e09f3cc0SStephen Boyd enum arch_timer_reg { 27e09f3cc0SStephen Boyd ARCH_TIMER_REG_CTRL, 28e09f3cc0SStephen Boyd ARCH_TIMER_REG_TVAL, 29e09f3cc0SStephen Boyd }; 308a4da6e3SMark Rutland 318a4da6e3SMark Rutland #define ARCH_TIMER_PHYS_ACCESS 0 328a4da6e3SMark Rutland #define ARCH_TIMER_VIRT_ACCESS 1 338a4da6e3SMark Rutland 348a4da6e3SMark Rutland #ifdef CONFIG_ARM_ARCH_TIMER 358a4da6e3SMark Rutland 368a4da6e3SMark Rutland extern u32 arch_timer_get_rate(void); 370d651e4eSMark Rutland extern u64 arch_timer_read_counter(void); 388a4da6e3SMark Rutland extern struct timecounter *arch_timer_get_timecounter(void); 398a4da6e3SMark Rutland 408a4da6e3SMark Rutland #else 418a4da6e3SMark Rutland 428a4da6e3SMark Rutland static inline u32 arch_timer_get_rate(void) 438a4da6e3SMark Rutland { 448a4da6e3SMark Rutland return 0; 458a4da6e3SMark Rutland } 468a4da6e3SMark Rutland 478a4da6e3SMark Rutland static inline u64 arch_timer_read_counter(void) 488a4da6e3SMark Rutland { 498a4da6e3SMark Rutland return 0; 508a4da6e3SMark Rutland } 518a4da6e3SMark Rutland 520582b053SOlof Johansson static inline struct timecounter *arch_timer_get_timecounter(void) 538a4da6e3SMark Rutland { 548a4da6e3SMark Rutland return NULL; 558a4da6e3SMark Rutland } 568a4da6e3SMark Rutland 578a4da6e3SMark Rutland #endif 588a4da6e3SMark Rutland 598a4da6e3SMark Rutland #endif 60