2021-08-12 12:33:54 +03:00
|
|
|
/*
|
|
|
|
* Luminary Micro Stellaris General Purpose Timer Module
|
|
|
|
*
|
|
|
|
* Copyright (c) 2006 CodeSourcery.
|
|
|
|
* Written by Paul Brook
|
|
|
|
*
|
|
|
|
* This code is licensed under the GPL.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef HW_TIMER_STELLARIS_GPTM_H
|
|
|
|
#define HW_TIMER_STELLARIS_GPTM_H
|
|
|
|
|
|
|
|
#include "qom/object.h"
|
|
|
|
#include "hw/sysbus.h"
|
|
|
|
#include "hw/irq.h"
|
2021-08-12 12:33:55 +03:00
|
|
|
#include "hw/clock.h"
|
2021-08-12 12:33:54 +03:00
|
|
|
|
|
|
|
#define TYPE_STELLARIS_GPTM "stellaris-gptm"
|
|
|
|
OBJECT_DECLARE_SIMPLE_TYPE(gptm_state, STELLARIS_GPTM)
|
|
|
|
|
|
|
|
/*
|
|
|
|
* QEMU interface:
|
|
|
|
* + sysbus MMIO region 0: register bank
|
|
|
|
* + sysbus IRQ 0: timer interrupt
|
|
|
|
* + unnamed GPIO output 0: trigger output for the ADC
|
2021-08-12 12:33:55 +03:00
|
|
|
* + Clock input "clk": the 32-bit countdown timer runs at this speed
|
2021-08-12 12:33:54 +03:00
|
|
|
*/
|
|
|
|
struct gptm_state {
|
|
|
|
SysBusDevice parent_obj;
|
|
|
|
|
|
|
|
MemoryRegion iomem;
|
|
|
|
uint32_t config;
|
|
|
|
uint32_t mode[2];
|
|
|
|
uint32_t control;
|
|
|
|
uint32_t state;
|
|
|
|
uint32_t mask;
|
|
|
|
uint32_t load[2];
|
|
|
|
uint32_t match[2];
|
|
|
|
uint32_t prescale[2];
|
|
|
|
uint32_t match_prescale[2];
|
|
|
|
uint32_t rtc;
|
|
|
|
int64_t tick[2];
|
|
|
|
struct gptm_state *opaque[2];
|
|
|
|
QEMUTimer *timer[2];
|
|
|
|
/* The timers have an alternate output used to trigger the ADC. */
|
|
|
|
qemu_irq trigger;
|
|
|
|
qemu_irq irq;
|
2021-08-12 12:33:55 +03:00
|
|
|
Clock *clk;
|
2021-08-12 12:33:54 +03:00
|
|
|
};
|
|
|
|
|
|
|
|
#endif
|