Provide a new function mips_gictimer_get_freq() which returns the frequency at which a GIC timer will count. This will be useful for boards which perform setup based upon this frequency. Signed-off-by: Paul Burton <paul.burton@imgtec.com> Reviewed-by: Leon Alrae <leon.alrae@imgtec.com> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Signed-off-by: Yongbok Kim <yongbok.kim@imgtec.com>
		
			
				
	
	
		
			48 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/*
 | 
						|
 * This file is subject to the terms and conditions of the GNU General Public
 | 
						|
 * License.  See the file "COPYING" in the main directory of this archive
 | 
						|
 * for more details.
 | 
						|
 *
 | 
						|
 * Copyright (C) 2016 Imagination Technologies
 | 
						|
 *
 | 
						|
 */
 | 
						|
 | 
						|
#ifndef MIPS_GICTIMER_H
 | 
						|
#define MIPS_GICTIMER_H
 | 
						|
 | 
						|
typedef struct MIPSGICTimerVPState MIPSGICTimerVPState;
 | 
						|
typedef struct MIPSGICTimerState MIPSGICTimerState;
 | 
						|
 | 
						|
typedef void MIPSGICTimerCB(void *opaque, uint32_t vp_index);
 | 
						|
 | 
						|
struct MIPSGICTimerVPState {
 | 
						|
    QEMUTimer *qtimer;
 | 
						|
    uint32_t vp_index;
 | 
						|
    uint32_t comparelo;
 | 
						|
    MIPSGICTimerState *gictimer;
 | 
						|
};
 | 
						|
 | 
						|
struct MIPSGICTimerState {
 | 
						|
    void *opaque;
 | 
						|
    uint8_t countstop;
 | 
						|
    uint32_t sh_counterlo;
 | 
						|
    int32_t num_vps;
 | 
						|
    MIPSGICTimerVPState *vptimers;
 | 
						|
    MIPSGICTimerCB *cb;
 | 
						|
};
 | 
						|
 | 
						|
uint32_t mips_gictimer_get_freq(MIPSGICTimerState *gic);
 | 
						|
uint32_t mips_gictimer_get_sh_count(MIPSGICTimerState *gic);
 | 
						|
void mips_gictimer_store_sh_count(MIPSGICTimerState *gic, uint64_t count);
 | 
						|
uint32_t mips_gictimer_get_vp_compare(MIPSGICTimerState *gictimer,
 | 
						|
                                      uint32_t vp_index);
 | 
						|
void mips_gictimer_store_vp_compare(MIPSGICTimerState *gic, uint32_t vp_index,
 | 
						|
                                    uint64_t compare);
 | 
						|
uint8_t mips_gictimer_get_countstop(MIPSGICTimerState *gic);
 | 
						|
void mips_gictimer_start_count(MIPSGICTimerState *gic);
 | 
						|
void mips_gictimer_stop_count(MIPSGICTimerState *gic);
 | 
						|
MIPSGICTimerState *mips_gictimer_init(void *opaque, uint32_t nvps,
 | 
						|
                                      MIPSGICTimerCB *cb);
 | 
						|
 | 
						|
#endif /* MIPS_GICTIMER_H */
 |