f4b2add6cc
Most clocks supported by the CCM are useless to the qemu framework. Only clocks related to timers (EPIT, GPT, PWM, WATCHDOG, ...) are usefull to QEMU code. Therefore this patch removes clock computation handling for all clocks but: * CLK_NONE, * CLK_IPG, * CLK_32k Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Jean-Christophe Dubois <jcd@tribudubois.net> Message-id: 9e7222efb349801032e60c0f6b0fbad0e5dcf648.1456868959.git.jcd@tribudubois.net Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
64 lines
1.5 KiB
C
64 lines
1.5 KiB
C
/*
|
|
* IMX Clock Control Module base class
|
|
*
|
|
* 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 IMX_CCM_H
|
|
#define IMX_CCM_H
|
|
|
|
#include "hw/sysbus.h"
|
|
|
|
#define CKIL_FREQ 32768 /* nominal 32khz clock */
|
|
|
|
/* PLL control registers */
|
|
#define PD(v) (((v) >> 26) & 0xf)
|
|
#define MFD(v) (((v) >> 16) & 0x3ff)
|
|
#define MFI(v) (((v) >> 10) & 0xf);
|
|
#define MFN(v) ((v) & 0x3ff)
|
|
|
|
#define PLL_PD(x) (((x) & 0xf) << 26)
|
|
#define PLL_MFD(x) (((x) & 0x3ff) << 16)
|
|
#define PLL_MFI(x) (((x) & 0xf) << 10)
|
|
#define PLL_MFN(x) (((x) & 0x3ff) << 0)
|
|
|
|
#define TYPE_IMX_CCM "imx.ccm"
|
|
#define IMX_CCM(obj) \
|
|
OBJECT_CHECK(IMXCCMState, (obj), TYPE_IMX_CCM)
|
|
#define IMX_CCM_CLASS(klass) \
|
|
OBJECT_CLASS_CHECK(IMXCCMClass, (klass), TYPE_IMX_CCM)
|
|
#define IMX_GET_CLASS(obj) \
|
|
OBJECT_GET_CLASS(IMXCCMClass, (obj), TYPE_IMX_CCM)
|
|
|
|
typedef struct IMXCCMState {
|
|
/* <private> */
|
|
SysBusDevice parent_obj;
|
|
|
|
/* <public> */
|
|
|
|
} IMXCCMState;
|
|
|
|
typedef enum {
|
|
CLK_NONE,
|
|
CLK_IPG,
|
|
CLK_32k
|
|
} IMXClk;
|
|
|
|
typedef struct IMXCCMClass {
|
|
/* <private> */
|
|
SysBusDeviceClass parent_class;
|
|
|
|
/* <public> */
|
|
uint32_t (*get_clock_frequency)(IMXCCMState *s, IMXClk clk);
|
|
} IMXCCMClass;
|
|
|
|
uint32_t imx_ccm_calc_pll(uint32_t pllreg, uint32_t base_freq);
|
|
|
|
uint32_t imx_ccm_get_clock_frequency(IMXCCMState *s, IMXClk clock);
|
|
|
|
#endif /* IMX_CCM_H */
|