cachepc-qemu

Fork of AMDESE/qemu with changes for cachepc side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-qemu
Log | Files | Refs | Submodules | LICENSE | sfeed.txt

imx7_ccm.h (3223B)


      1/*
      2 * Copyright (c) 2017, Impinj, Inc.
      3 *
      4 * i.MX7 CCM, PMU and ANALOG IP blocks emulation code
      5 *
      6 * Author: Andrey Smirnov <andrew.smirnov@gmail.com>
      7 *
      8 * This work is licensed under the terms of the GNU GPL, version 2 or later.
      9 * See the COPYING file in the top-level directory.
     10 */
     11
     12#ifndef IMX7_CCM_H
     13#define IMX7_CCM_H
     14
     15#include "hw/misc/imx_ccm.h"
     16#include "qemu/bitops.h"
     17#include "qom/object.h"
     18
     19enum IMX7AnalogRegisters {
     20    ANALOG_PLL_ARM,
     21    ANALOG_PLL_ARM_SET,
     22    ANALOG_PLL_ARM_CLR,
     23    ANALOG_PLL_ARM_TOG,
     24    ANALOG_PLL_DDR,
     25    ANALOG_PLL_DDR_SET,
     26    ANALOG_PLL_DDR_CLR,
     27    ANALOG_PLL_DDR_TOG,
     28    ANALOG_PLL_DDR_SS,
     29    ANALOG_PLL_DDR_SS_SET,
     30    ANALOG_PLL_DDR_SS_CLR,
     31    ANALOG_PLL_DDR_SS_TOG,
     32    ANALOG_PLL_DDR_NUM,
     33    ANALOG_PLL_DDR_NUM_SET,
     34    ANALOG_PLL_DDR_NUM_CLR,
     35    ANALOG_PLL_DDR_NUM_TOG,
     36    ANALOG_PLL_DDR_DENOM,
     37    ANALOG_PLL_DDR_DENOM_SET,
     38    ANALOG_PLL_DDR_DENOM_CLR,
     39    ANALOG_PLL_DDR_DENOM_TOG,
     40    ANALOG_PLL_480,
     41    ANALOG_PLL_480_SET,
     42    ANALOG_PLL_480_CLR,
     43    ANALOG_PLL_480_TOG,
     44    ANALOG_PLL_480A,
     45    ANALOG_PLL_480A_SET,
     46    ANALOG_PLL_480A_CLR,
     47    ANALOG_PLL_480A_TOG,
     48    ANALOG_PLL_480B,
     49    ANALOG_PLL_480B_SET,
     50    ANALOG_PLL_480B_CLR,
     51    ANALOG_PLL_480B_TOG,
     52    ANALOG_PLL_ENET,
     53    ANALOG_PLL_ENET_SET,
     54    ANALOG_PLL_ENET_CLR,
     55    ANALOG_PLL_ENET_TOG,
     56    ANALOG_PLL_AUDIO,
     57    ANALOG_PLL_AUDIO_SET,
     58    ANALOG_PLL_AUDIO_CLR,
     59    ANALOG_PLL_AUDIO_TOG,
     60    ANALOG_PLL_AUDIO_SS,
     61    ANALOG_PLL_AUDIO_SS_SET,
     62    ANALOG_PLL_AUDIO_SS_CLR,
     63    ANALOG_PLL_AUDIO_SS_TOG,
     64    ANALOG_PLL_AUDIO_NUM,
     65    ANALOG_PLL_AUDIO_NUM_SET,
     66    ANALOG_PLL_AUDIO_NUM_CLR,
     67    ANALOG_PLL_AUDIO_NUM_TOG,
     68    ANALOG_PLL_AUDIO_DENOM,
     69    ANALOG_PLL_AUDIO_DENOM_SET,
     70    ANALOG_PLL_AUDIO_DENOM_CLR,
     71    ANALOG_PLL_AUDIO_DENOM_TOG,
     72    ANALOG_PLL_VIDEO,
     73    ANALOG_PLL_VIDEO_SET,
     74    ANALOG_PLL_VIDEO_CLR,
     75    ANALOG_PLL_VIDEO_TOG,
     76    ANALOG_PLL_VIDEO_SS,
     77    ANALOG_PLL_VIDEO_SS_SET,
     78    ANALOG_PLL_VIDEO_SS_CLR,
     79    ANALOG_PLL_VIDEO_SS_TOG,
     80    ANALOG_PLL_VIDEO_NUM,
     81    ANALOG_PLL_VIDEO_NUM_SET,
     82    ANALOG_PLL_VIDEO_NUM_CLR,
     83    ANALOG_PLL_VIDEO_NUM_TOG,
     84    ANALOG_PLL_VIDEO_DENOM,
     85    ANALOG_PLL_VIDEO_DENOM_SET,
     86    ANALOG_PLL_VIDEO_DENOM_CLR,
     87    ANALOG_PLL_VIDEO_DENOM_TOG,
     88    ANALOG_PLL_MISC0,
     89    ANALOG_PLL_MISC0_SET,
     90    ANALOG_PLL_MISC0_CLR,
     91    ANALOG_PLL_MISC0_TOG,
     92
     93    ANALOG_DIGPROG = 0x800 / sizeof(uint32_t),
     94    ANALOG_MAX,
     95
     96    ANALOG_PLL_LOCK = BIT(31)
     97};
     98
     99enum IMX7CCMRegisters {
    100    CCM_MAX = 0xBE00 / sizeof(uint32_t) + 1,
    101};
    102
    103enum IMX7PMURegisters {
    104    PMU_MAX = 0x140 / sizeof(uint32_t),
    105};
    106
    107#define TYPE_IMX7_CCM "imx7.ccm"
    108OBJECT_DECLARE_SIMPLE_TYPE(IMX7CCMState, IMX7_CCM)
    109
    110struct IMX7CCMState {
    111    /* <private> */
    112    IMXCCMState parent_obj;
    113
    114    /* <public> */
    115    MemoryRegion iomem;
    116
    117    uint32_t ccm[CCM_MAX];
    118};
    119
    120
    121#define TYPE_IMX7_ANALOG "imx7.analog"
    122OBJECT_DECLARE_SIMPLE_TYPE(IMX7AnalogState, IMX7_ANALOG)
    123
    124struct IMX7AnalogState {
    125    /* <private> */
    126    IMXCCMState parent_obj;
    127
    128    /* <public> */
    129    struct {
    130        MemoryRegion container;
    131        MemoryRegion analog;
    132        MemoryRegion digprog;
    133        MemoryRegion pmu;
    134    } mmio;
    135
    136    uint32_t analog[ANALOG_MAX];
    137    uint32_t pmu[PMU_MAX];
    138};
    139
    140#endif /* IMX7_CCM_H */