1/* 2 * IMX25 Clock Control Module 3 * 4 * Copyright (C) 2012 NICTA 5 * Updated by Jean-Christophe Dubois <jcd@tribudubois.net> 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 IMX25_CCM_H 12#define IMX25_CCM_H 13 14#include "hw/misc/imx_ccm.h" 15 16#define IMX25_CCM_MPCTL_REG 0 17#define IMX25_CCM_UPCTL_REG 1 18#define IMX25_CCM_CCTL_REG 2 19#define IMX25_CCM_CGCR0_REG 3 20#define IMX25_CCM_CGCR1_REG 4 21#define IMX25_CCM_CGCR2_REG 5 22#define IMX25_CCM_PCDR0_REG 6 23#define IMX25_CCM_PCDR1_REG 7 24#define IMX25_CCM_PCDR2_REG 8 25#define IMX25_CCM_PCDR3_REG 9 26#define IMX25_CCM_RCSR_REG 10 27#define IMX25_CCM_CRDR_REG 11 28#define IMX25_CCM_DCVR0_REG 12 29#define IMX25_CCM_DCVR1_REG 13 30#define IMX25_CCM_DCVR2_REG 14 31#define IMX25_CCM_DCVR3_REG 15 32#define IMX25_CCM_LTR0_REG 16 33#define IMX25_CCM_LTR1_REG 17 34#define IMX25_CCM_LTR2_REG 18 35#define IMX25_CCM_LTR3_REG 19 36#define IMX25_CCM_LTBR0_REG 20 37#define IMX25_CCM_LTBR1_REG 21 38#define IMX25_CCM_PMCR0_REG 22 39#define IMX25_CCM_PMCR1_REG 23 40#define IMX25_CCM_PMCR2_REG 24 41#define IMX25_CCM_MCR_REG 25 42#define IMX25_CCM_LPIMR0_REG 26 43#define IMX25_CCM_LPIMR1_REG 27 44#define IMX25_CCM_MAX_REG 28 45 46/* CCTL */ 47#define CCTL_ARM_CLK_DIV_SHIFT (30) 48#define CCTL_ARM_CLK_DIV_MASK (0x3) 49#define CCTL_AHB_CLK_DIV_SHIFT (28) 50#define CCTL_AHB_CLK_DIV_MASK (0x3) 51#define CCTL_MPLL_BYPASS_SHIFT (22) 52#define CCTL_MPLL_BYPASS_MASK (0x1) 53#define CCTL_USB_DIV_SHIFT (16) 54#define CCTL_USB_DIV_MASK (0x3F) 55#define CCTL_ARM_SRC_SHIFT (13) 56#define CCTL_ARM_SRC_MASK (0x1) 57#define CCTL_UPLL_DIS_SHIFT (23) 58#define CCTL_UPLL_DIS_MASK (0x1) 59 60#define EXTRACT(value, name) (((value) >> CCTL_##name##_SHIFT) \ 61 & CCTL_##name##_MASK) 62#define INSERT(value, name) (((value) & CCTL_##name##_MASK) << \ 63 CCTL_##name##_SHIFT) 64 65#define TYPE_IMX25_CCM "imx25.ccm" 66#define IMX25_CCM(obj) OBJECT_CHECK(IMX25CCMState, (obj), TYPE_IMX25_CCM) 67 68typedef struct IMX25CCMState { 69 /* <private> */ 70 IMXCCMState parent_obj; 71 72 /* <public> */ 73 MemoryRegion iomem; 74 75 uint32_t reg[IMX25_CCM_MAX_REG]; 76 77} IMX25CCMState; 78 79#endif /* IMX25_CCM_H */ 80