qemu/include/hw/timer/arm_mptimer.h
<<
>>
Prefs
   1/*
   2 * Private peripheral timer/watchdog blocks for ARM 11MPCore and A9MP
   3 *
   4 * Copyright (c) 2006-2007 CodeSourcery.
   5 * Copyright (c) 2011 Linaro Limited
   6 * Written by Paul Brook, Peter Maydell
   7 *
   8 * This program is free software; you can redistribute it and/or
   9 * modify it under the terms of the GNU General Public License
  10 * as published by the Free Software Foundation; either version
  11 * 2 of the License, or (at your option) any later version.
  12 *
  13 * This program is distributed in the hope that it will be useful,
  14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
  15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  16 * GNU General Public License for more details.
  17 *
  18 * You should have received a copy of the GNU General Public License along
  19 * with this program; if not, see <http://www.gnu.org/licenses/>.
  20 */
  21#ifndef HW_TIMER_ARM_MPTIMER_H
  22#define HW_TIMER_ARM_MPTIMER_H
  23
  24#include "hw/sysbus.h"
  25
  26#define ARM_MPTIMER_MAX_CPUS 4
  27
  28/* State of a single timer or watchdog block */
  29typedef struct {
  30    uint32_t control;
  31    uint32_t status;
  32    struct ptimer_state *timer;
  33    qemu_irq irq;
  34    MemoryRegion iomem;
  35} TimerBlock;
  36
  37#define TYPE_ARM_MPTIMER "arm_mptimer"
  38#define ARM_MPTIMER(obj) \
  39    OBJECT_CHECK(ARMMPTimerState, (obj), TYPE_ARM_MPTIMER)
  40
  41typedef struct {
  42    /*< private >*/
  43    SysBusDevice parent_obj;
  44    /*< public >*/
  45
  46    uint32_t num_cpu;
  47    TimerBlock timerblock[ARM_MPTIMER_MAX_CPUS];
  48    MemoryRegion iomem;
  49} ARMMPTimerState;
  50
  51#endif
  52