With this CCM, i.MX25 timer is accurate with "real world time". Signed-off-by: Jean-Christophe Dubois <jcd@tribudubois.net> Message-id: 2c0cf90be767bfc8520661eca891ab22c61f18fe.1449528242.git.jcd@tribudubois.net Reviewed-by Peter Crosthwaite <crosthwaite.peter@gmail.com> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
		
			
				
	
	
		
			80 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			80 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/*
 | 
						|
 * IMX25 Clock Control Module
 | 
						|
 *
 | 
						|
 * Copyright (C) 2012 NICTA
 | 
						|
 * Updated by Jean-Christophe Dubois <jcd@tribudubois.net>
 | 
						|
 *
 | 
						|
 * This work is licensed under the terms of the GNU GPL, version 2 or later.
 | 
						|
 * See the COPYING file in the top-level directory.
 | 
						|
 */
 | 
						|
 | 
						|
#ifndef IMX25_CCM_H
 | 
						|
#define IMX25_CCM_H
 | 
						|
 | 
						|
#include "hw/misc/imx_ccm.h"
 | 
						|
 | 
						|
#define IMX25_CCM_MPCTL_REG  0
 | 
						|
#define IMX25_CCM_UPCTL_REG  1
 | 
						|
#define IMX25_CCM_CCTL_REG   2
 | 
						|
#define IMX25_CCM_CGCR0_REG  3
 | 
						|
#define IMX25_CCM_CGCR1_REG  4
 | 
						|
#define IMX25_CCM_CGCR2_REG  5
 | 
						|
#define IMX25_CCM_PCDR0_REG  6
 | 
						|
#define IMX25_CCM_PCDR1_REG  7
 | 
						|
#define IMX25_CCM_PCDR2_REG  8
 | 
						|
#define IMX25_CCM_PCDR3_REG  9
 | 
						|
#define IMX25_CCM_RCSR_REG   10
 | 
						|
#define IMX25_CCM_CRDR_REG   11
 | 
						|
#define IMX25_CCM_DCVR0_REG  12
 | 
						|
#define IMX25_CCM_DCVR1_REG  13
 | 
						|
#define IMX25_CCM_DCVR2_REG  14
 | 
						|
#define IMX25_CCM_DCVR3_REG  15
 | 
						|
#define IMX25_CCM_LTR0_REG   16
 | 
						|
#define IMX25_CCM_LTR1_REG   17
 | 
						|
#define IMX25_CCM_LTR2_REG   18
 | 
						|
#define IMX25_CCM_LTR3_REG   19
 | 
						|
#define IMX25_CCM_LTBR0_REG  20
 | 
						|
#define IMX25_CCM_LTBR1_REG  21
 | 
						|
#define IMX25_CCM_PMCR0_REG  22
 | 
						|
#define IMX25_CCM_PMCR1_REG  23
 | 
						|
#define IMX25_CCM_PMCR2_REG  24
 | 
						|
#define IMX25_CCM_MCR_REG    25
 | 
						|
#define IMX25_CCM_LPIMR0_REG 26
 | 
						|
#define IMX25_CCM_LPIMR1_REG 27
 | 
						|
#define IMX25_CCM_MAX_REG    28
 | 
						|
 | 
						|
/* CCTL */
 | 
						|
#define CCTL_ARM_CLK_DIV_SHIFT (30)
 | 
						|
#define CCTL_ARM_CLK_DIV_MASK  (0x3)
 | 
						|
#define CCTL_AHB_CLK_DIV_SHIFT (28)
 | 
						|
#define CCTL_AHB_CLK_DIV_MASK  (0x3)
 | 
						|
#define CCTL_MPLL_BYPASS_SHIFT (22)
 | 
						|
#define CCTL_MPLL_BYPASS_MASK  (0x1)
 | 
						|
#define CCTL_USB_DIV_SHIFT     (16)
 | 
						|
#define CCTL_USB_DIV_MASK      (0x3F)
 | 
						|
#define CCTL_ARM_SRC_SHIFT     (13)
 | 
						|
#define CCTL_ARM_SRC_MASK      (0x1)
 | 
						|
#define CCTL_UPLL_DIS_SHIFT    (23)
 | 
						|
#define CCTL_UPLL_DIS_MASK     (0x1)
 | 
						|
 | 
						|
#define EXTRACT(value, name) (((value) >> CCTL_##name##_SHIFT) \
 | 
						|
                              & CCTL_##name##_MASK)
 | 
						|
#define INSERT(value, name) (((value) & CCTL_##name##_MASK) << \
 | 
						|
                             CCTL_##name##_SHIFT)
 | 
						|
 | 
						|
#define TYPE_IMX25_CCM "imx25.ccm"
 | 
						|
#define IMX25_CCM(obj) OBJECT_CHECK(IMX25CCMState, (obj), TYPE_IMX25_CCM)
 | 
						|
 | 
						|
typedef struct IMX25CCMState {
 | 
						|
    /* <private> */
 | 
						|
    IMXCCMState parent_obj;
 | 
						|
 | 
						|
    /* <public> */
 | 
						|
    MemoryRegion iomem;
 | 
						|
 | 
						|
    uint32_t reg[IMX25_CCM_MAX_REG];
 | 
						|
 | 
						|
} IMX25CCMState;
 | 
						|
 | 
						|
#endif /* IMX25_CCM_H */
 |