Implement the timers on the Freescale i.MX31 SoC. This is not a complete implementation, but gives enough for Linux to boot and run. In particular external triggers, which are not useful under QEMU, are not implemented. Signed-off-by: Philip O'Sullivan <philipo@ok-labs.com> Signed-off-by: Peter Chubb <peter.chubb@nicta.com.au> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
		
			
				
	
	
		
			35 lines
		
	
	
		
			710 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			35 lines
		
	
	
		
			710 B
		
	
	
	
		
			C
		
	
	
	
	
	
/*
 | 
						|
 * i.MX31 emulation
 | 
						|
 *
 | 
						|
 * Copyright (C) 2012 Peter Chubb
 | 
						|
 * NICTA
 | 
						|
 *
 | 
						|
 * This code is released under the GPL, version 2.0 or later
 | 
						|
 * See the file `../COPYING' for details.
 | 
						|
 */
 | 
						|
 | 
						|
#ifndef IMX_H
 | 
						|
#define IMX_H
 | 
						|
 | 
						|
void imx_serial_create(int uart, const target_phys_addr_t addr, qemu_irq irq);
 | 
						|
 | 
						|
typedef enum  {
 | 
						|
    NOCLK,
 | 
						|
    MCU,
 | 
						|
    HSP,
 | 
						|
    IPG,
 | 
						|
    CLK_32k
 | 
						|
} IMXClk;
 | 
						|
 | 
						|
uint32_t imx_clock_frequency(DeviceState *s, IMXClk clock);
 | 
						|
 | 
						|
void imx_timerp_create(const target_phys_addr_t addr,
 | 
						|
                      qemu_irq irq,
 | 
						|
                      DeviceState *ccm);
 | 
						|
void imx_timerg_create(const target_phys_addr_t addr,
 | 
						|
                      qemu_irq irq,
 | 
						|
                      DeviceState *ccm);
 | 
						|
 | 
						|
 | 
						|
#endif /* IMX_H */
 |