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_freq(MIPSGICTimerState *gic);
  35uint32_t mips_gictimer_get_sh_count(MIPSGICTimerState *gic);
  36void mips_gictimer_store_sh_count(MIPSGICTimerState *gic, uint64_t count);
  37uint32_t mips_gictimer_get_vp_compare(MIPSGICTimerState *gictimer,
  38                                      uint32_t vp_index);
  39void mips_gictimer_store_vp_compare(MIPSGICTimerState *gic, uint32_t vp_index,
  40                                    uint64_t compare);
  41uint8_t mips_gictimer_get_countstop(MIPSGICTimerState *gic);
  42void mips_gictimer_start_count(MIPSGICTimerState *gic);
  43void mips_gictimer_stop_count(MIPSGICTimerState *gic);
  44MIPSGICTimerState *mips_gictimer_init(void *opaque, uint32_t nvps,
  45                                      MIPSGICTimerCB *cb);
  46
  47#endif /* MIPS_GICTIMER_H */
  48