qemu/include/hw/timer/mips_gictimer.h
<<
>>
Prefs
   1/*
   2 * This file is subject to the terms and conditions of the GNU General Public
   3 * License.  See the file "COPYING" in the main directory of this archive
   4 * for more details.
   5 *
   6 * Copyright (C) 2016 Imagination Technologies
   7 *
   8 */
   9
  10#ifndef MIPS_GICTIMER_H
  11#define MIPS_GICTIMER_H
  12
  13typedef struct MIPSGICTimerVPState MIPSGICTimerVPState;
  14typedef struct MIPSGICTimerState MIPSGICTimerState;
  15
  16typedef void MIPSGICTimerCB(void *opaque, uint32_t vp_index);
  17
  18struct MIPSGICTimerVPState {
  19    QEMUTimer *qtimer;
  20    uint32_t vp_index;
  21    uint32_t comparelo;
  22    MIPSGICTimerState *gictimer;
  23};
  24
  25struct MIPSGICTimerState {
  26    void *opaque;
  27    uint8_t countstop;
  28    uint32_t sh_counterlo;
  29    int32_t num_vps;
  30    MIPSGICTimerVPState *vptimers;
  31    MIPSGICTimerCB *cb;
  32};
  33
  34uint32_t mips_gictimer_get_sh_count(MIPSGICTimerState *gic);
  35void mips_gictimer_store_sh_count(MIPSGICTimerState *gic, uint64_t count);
  36uint32_t mips_gictimer_get_vp_compare(MIPSGICTimerState *gictimer,
  37                                      uint32_t vp_index);
  38void mips_gictimer_store_vp_compare(MIPSGICTimerState *gic, uint32_t vp_index,
  39                                    uint64_t compare);
  40uint8_t mips_gictimer_get_countstop(MIPSGICTimerState *gic);
  41void mips_gictimer_start_count(MIPSGICTimerState *gic);
  42void mips_gictimer_stop_count(MIPSGICTimerState *gic);
  43MIPSGICTimerState *mips_gictimer_init(void *opaque, uint32_t nvps,
  44                                      MIPSGICTimerCB *cb);
  45
  46#endif /* MIPS_GICTIMER_H */
  47