]>
Commit | Line | Data |
---|---|---|
282e74c8 | 1 | /* |
cb54d868 | 2 | * IMX Clock Control Module base class |
282e74c8 JCD |
3 | * |
4 | * Copyright (C) 2012 NICTA | |
5 | * Updated by Jean-Christophe Dubois <[email protected]> | |
6 | * | |
7 | * This work is licensed under the terms of the GNU GPL, version 2 or later. | |
8 | * See the COPYING file in the top-level directory. | |
9 | */ | |
10 | ||
11 | #ifndef IMX_CCM_H | |
12 | #define IMX_CCM_H | |
13 | ||
14 | #include "hw/sysbus.h" | |
15 | ||
cb54d868 | 16 | #define CKIL_FREQ 32768 /* nominal 32khz clock */ |
282e74c8 JCD |
17 | |
18 | /* PLL control registers */ | |
19 | #define PD(v) (((v) >> 26) & 0xf) | |
20 | #define MFD(v) (((v) >> 16) & 0x3ff) | |
21 | #define MFI(v) (((v) >> 10) & 0xf); | |
22 | #define MFN(v) ((v) & 0x3ff) | |
23 | ||
24 | #define PLL_PD(x) (((x) & 0xf) << 26) | |
25 | #define PLL_MFD(x) (((x) & 0x3ff) << 16) | |
26 | #define PLL_MFI(x) (((x) & 0xf) << 10) | |
27 | #define PLL_MFN(x) (((x) & 0x3ff) << 0) | |
28 | ||
29 | #define TYPE_IMX_CCM "imx.ccm" | |
cb54d868 JCD |
30 | #define IMX_CCM(obj) \ |
31 | OBJECT_CHECK(IMXCCMState, (obj), TYPE_IMX_CCM) | |
32 | #define IMX_CCM_CLASS(klass) \ | |
33 | OBJECT_CLASS_CHECK(IMXCCMClass, (klass), TYPE_IMX_CCM) | |
34 | #define IMX_GET_CLASS(obj) \ | |
35 | OBJECT_GET_CLASS(IMXCCMClass, (obj), TYPE_IMX_CCM) | |
282e74c8 JCD |
36 | |
37 | typedef struct IMXCCMState { | |
38 | /* <private> */ | |
39 | SysBusDevice parent_obj; | |
40 | ||
41 | /* <public> */ | |
282e74c8 | 42 | |
282e74c8 JCD |
43 | } IMXCCMState; |
44 | ||
45 | typedef enum { | |
c91a5883 | 46 | CLK_NONE, |
aaa9ec3b | 47 | CLK_IPG, |
d552f675 | 48 | CLK_IPG_HIGH, |
66542f63 JCD |
49 | CLK_32k, |
50 | CLK_EXT, | |
51 | CLK_HIGH_DIV, | |
52 | CLK_HIGH, | |
282e74c8 JCD |
53 | } IMXClk; |
54 | ||
cb54d868 JCD |
55 | typedef struct IMXCCMClass { |
56 | /* <private> */ | |
57 | SysBusDeviceClass parent_class; | |
58 | ||
59 | /* <public> */ | |
60 | uint32_t (*get_clock_frequency)(IMXCCMState *s, IMXClk clk); | |
61 | } IMXCCMClass; | |
62 | ||
63 | uint32_t imx_ccm_calc_pll(uint32_t pllreg, uint32_t base_freq); | |
64 | ||
65 | uint32_t imx_ccm_get_clock_frequency(IMXCCMState *s, IMXClk clock); | |
282e74c8 JCD |
66 | |
67 | #endif /* IMX_CCM_H */ |