mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-02 15:23:53 -06:00
hw: move headers to include/
Many of these should be cleaned up with proper qdev-/QOM-ification. Right now there are many catch-all headers in include/hw/ARCH depending on cpu.h, and this makes it necessary to compile these files per-target. However, fixing this does not belong in these patches. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
bb585a784e
commit
0d09e41a51
511 changed files with 829 additions and 830 deletions
74
include/hw/timer/hpet.h
Normal file
74
include/hw/timer/hpet.h
Normal file
|
@ -0,0 +1,74 @@
|
|||
/*
|
||||
* QEMU Emulated HPET support
|
||||
*
|
||||
* Copyright IBM, Corp. 2008
|
||||
*
|
||||
* Authors:
|
||||
* Beth Kon <bkon@us.ibm.com>
|
||||
*
|
||||
* This work is licensed under the terms of the GNU GPL, version 2. See
|
||||
* the COPYING file in the top-level directory.
|
||||
*
|
||||
*/
|
||||
#ifndef QEMU_HPET_EMUL_H
|
||||
#define QEMU_HPET_EMUL_H
|
||||
|
||||
#define HPET_BASE 0xfed00000
|
||||
#define HPET_CLK_PERIOD 10000000ULL /* 10000000 femtoseconds == 10ns*/
|
||||
|
||||
#define FS_PER_NS 1000000
|
||||
#define HPET_MIN_TIMERS 3
|
||||
#define HPET_MAX_TIMERS 32
|
||||
|
||||
#define HPET_NUM_IRQ_ROUTES 32
|
||||
|
||||
#define HPET_LEGACY_PIT_INT 0
|
||||
#define HPET_LEGACY_RTC_INT 1
|
||||
|
||||
#define HPET_CFG_ENABLE 0x001
|
||||
#define HPET_CFG_LEGACY 0x002
|
||||
|
||||
#define HPET_ID 0x000
|
||||
#define HPET_PERIOD 0x004
|
||||
#define HPET_CFG 0x010
|
||||
#define HPET_STATUS 0x020
|
||||
#define HPET_COUNTER 0x0f0
|
||||
#define HPET_TN_CFG 0x000
|
||||
#define HPET_TN_CMP 0x008
|
||||
#define HPET_TN_ROUTE 0x010
|
||||
#define HPET_CFG_WRITE_MASK 0x3
|
||||
|
||||
#define HPET_ID_NUM_TIM_SHIFT 8
|
||||
#define HPET_ID_NUM_TIM_MASK 0x1f00
|
||||
|
||||
#define HPET_TN_TYPE_LEVEL 0x002
|
||||
#define HPET_TN_ENABLE 0x004
|
||||
#define HPET_TN_PERIODIC 0x008
|
||||
#define HPET_TN_PERIODIC_CAP 0x010
|
||||
#define HPET_TN_SIZE_CAP 0x020
|
||||
#define HPET_TN_SETVAL 0x040
|
||||
#define HPET_TN_32BIT 0x100
|
||||
#define HPET_TN_INT_ROUTE_MASK 0x3e00
|
||||
#define HPET_TN_FSB_ENABLE 0x4000
|
||||
#define HPET_TN_FSB_CAP 0x8000
|
||||
#define HPET_TN_CFG_WRITE_MASK 0x7f4e
|
||||
#define HPET_TN_INT_ROUTE_SHIFT 9
|
||||
#define HPET_TN_INT_ROUTE_CAP_SHIFT 32
|
||||
#define HPET_TN_CFG_BITS_READONLY_OR_RESERVED 0xffff80b1U
|
||||
|
||||
struct hpet_fw_entry
|
||||
{
|
||||
uint32_t event_timer_block_id;
|
||||
uint64_t address;
|
||||
uint16_t min_tick;
|
||||
uint8_t page_prot;
|
||||
} QEMU_PACKED;
|
||||
|
||||
struct hpet_fw_config
|
||||
{
|
||||
uint8_t count;
|
||||
struct hpet_fw_entry hpet[8];
|
||||
} QEMU_PACKED;
|
||||
|
||||
extern struct hpet_fw_config hpet_cfg;
|
||||
#endif
|
68
include/hw/timer/i8254.h
Normal file
68
include/hw/timer/i8254.h
Normal file
|
@ -0,0 +1,68 @@
|
|||
/*
|
||||
* QEMU 8253/8254 interval timer emulation
|
||||
*
|
||||
* Copyright (c) 2003-2004 Fabrice Bellard
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef HW_I8254_H
|
||||
#define HW_I8254_H
|
||||
|
||||
#include "hw/hw.h"
|
||||
#include "hw/isa/isa.h"
|
||||
|
||||
#define PIT_FREQ 1193182
|
||||
|
||||
typedef struct PITChannelInfo {
|
||||
int gate;
|
||||
int mode;
|
||||
int initial_count;
|
||||
int out;
|
||||
} PITChannelInfo;
|
||||
|
||||
static inline ISADevice *pit_init(ISABus *bus, int base, int isa_irq,
|
||||
qemu_irq alt_irq)
|
||||
{
|
||||
ISADevice *dev;
|
||||
|
||||
dev = isa_create(bus, "isa-pit");
|
||||
qdev_prop_set_uint32(&dev->qdev, "iobase", base);
|
||||
qdev_init_nofail(&dev->qdev);
|
||||
qdev_connect_gpio_out(&dev->qdev, 0,
|
||||
isa_irq >= 0 ? isa_get_irq(dev, isa_irq) : alt_irq);
|
||||
|
||||
return dev;
|
||||
}
|
||||
|
||||
static inline ISADevice *kvm_pit_init(ISABus *bus, int base)
|
||||
{
|
||||
ISADevice *dev;
|
||||
|
||||
dev = isa_create(bus, "kvm-pit");
|
||||
qdev_prop_set_uint32(&dev->qdev, "iobase", base);
|
||||
qdev_init_nofail(&dev->qdev);
|
||||
|
||||
return dev;
|
||||
}
|
||||
|
||||
void pit_set_gate(ISADevice *dev, int channel, int val);
|
||||
void pit_get_channel_info(ISADevice *dev, int channel, PITChannelInfo *info);
|
||||
|
||||
#endif /* !HW_I8254_H */
|
85
include/hw/timer/i8254_internal.h
Normal file
85
include/hw/timer/i8254_internal.h
Normal file
|
@ -0,0 +1,85 @@
|
|||
/*
|
||||
* QEMU 8253/8254 - internal interfaces
|
||||
*
|
||||
* Copyright (c) 2011 Jan Kiszka, Siemens AG
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef QEMU_I8254_INTERNAL_H
|
||||
#define QEMU_I8254_INTERNAL_H
|
||||
|
||||
#include "hw/hw.h"
|
||||
#include "hw/i386/pc.h"
|
||||
#include "hw/isa/isa.h"
|
||||
|
||||
typedef struct PITChannelState {
|
||||
int count; /* can be 65536 */
|
||||
uint16_t latched_count;
|
||||
uint8_t count_latched;
|
||||
uint8_t status_latched;
|
||||
uint8_t status;
|
||||
uint8_t read_state;
|
||||
uint8_t write_state;
|
||||
uint8_t write_latch;
|
||||
uint8_t rw_mode;
|
||||
uint8_t mode;
|
||||
uint8_t bcd; /* not supported */
|
||||
uint8_t gate; /* timer start */
|
||||
int64_t count_load_time;
|
||||
/* irq handling */
|
||||
int64_t next_transition_time;
|
||||
QEMUTimer *irq_timer;
|
||||
qemu_irq irq;
|
||||
uint32_t irq_disabled;
|
||||
} PITChannelState;
|
||||
|
||||
typedef struct PITCommonState {
|
||||
ISADevice dev;
|
||||
MemoryRegion ioports;
|
||||
uint32_t iobase;
|
||||
PITChannelState channels[3];
|
||||
} PITCommonState;
|
||||
|
||||
#define TYPE_PIT_COMMON "pit-common"
|
||||
#define PIT_COMMON(obj) \
|
||||
OBJECT_CHECK(PITCommonState, (obj), TYPE_PIT_COMMON)
|
||||
#define PIT_COMMON_CLASS(klass) \
|
||||
OBJECT_CLASS_CHECK(PITCommonClass, (klass), TYPE_PIT_COMMON)
|
||||
#define PIT_COMMON_GET_CLASS(obj) \
|
||||
OBJECT_GET_CLASS(PITCommonClass, (obj), TYPE_PIT_COMMON)
|
||||
|
||||
typedef struct PITCommonClass {
|
||||
ISADeviceClass parent_class;
|
||||
|
||||
int (*init)(PITCommonState *s);
|
||||
void (*set_channel_gate)(PITCommonState *s, PITChannelState *sc, int val);
|
||||
void (*get_channel_info)(PITCommonState *s, PITChannelState *sc,
|
||||
PITChannelInfo *info);
|
||||
void (*pre_save)(PITCommonState *s);
|
||||
void (*post_load)(PITCommonState *s);
|
||||
} PITCommonClass;
|
||||
|
||||
int pit_get_out(PITChannelState *s, int64_t current_time);
|
||||
int64_t pit_get_next_transition_time(PITChannelState *s, int64_t current_time);
|
||||
void pit_get_channel_info_common(PITCommonState *s, PITChannelState *sc,
|
||||
PITChannelInfo *info);
|
||||
void pit_reset_common(PITCommonState *s);
|
||||
|
||||
#endif /* !QEMU_I8254_INTERNAL_H */
|
34
include/hw/timer/m48t59.h
Normal file
34
include/hw/timer/m48t59.h
Normal file
|
@ -0,0 +1,34 @@
|
|||
#ifndef NVRAM_H
|
||||
#define NVRAM_H
|
||||
|
||||
/* NVRAM helpers */
|
||||
typedef uint32_t (*nvram_read_t)(void *private, uint32_t addr);
|
||||
typedef void (*nvram_write_t)(void *private, uint32_t addr, uint32_t val);
|
||||
typedef struct nvram_t {
|
||||
void *opaque;
|
||||
nvram_read_t read_fn;
|
||||
nvram_write_t write_fn;
|
||||
} nvram_t;
|
||||
|
||||
uint32_t NVRAM_get_lword (nvram_t *nvram, uint32_t addr);
|
||||
int NVRAM_get_string (nvram_t *nvram, uint8_t *dst, uint16_t addr, int max);
|
||||
|
||||
int PPC_NVRAM_set_params (nvram_t *nvram, uint16_t NVRAM_size,
|
||||
const char *arch,
|
||||
uint32_t RAM_size, int boot_device,
|
||||
uint32_t kernel_image, uint32_t kernel_size,
|
||||
const char *cmdline,
|
||||
uint32_t initrd_image, uint32_t initrd_size,
|
||||
uint32_t NVRAM_image,
|
||||
int width, int height, int depth);
|
||||
typedef struct M48t59State M48t59State;
|
||||
|
||||
void m48t59_write (void *private, uint32_t addr, uint32_t val);
|
||||
uint32_t m48t59_read (void *private, uint32_t addr);
|
||||
void m48t59_toggle_lock (void *private, int lock);
|
||||
M48t59State *m48t59_init_isa(ISABus *bus, uint32_t io_base, uint16_t size,
|
||||
int type);
|
||||
M48t59State *m48t59_init(qemu_irq IRQ, hwaddr mem_base,
|
||||
uint32_t io_base, uint16_t size, int type);
|
||||
|
||||
#endif /* !NVRAM_H */
|
11
include/hw/timer/mc146818rtc.h
Normal file
11
include/hw/timer/mc146818rtc.h
Normal file
|
@ -0,0 +1,11 @@
|
|||
#ifndef MC146818RTC_H
|
||||
#define MC146818RTC_H
|
||||
|
||||
#include "hw/isa/isa.h"
|
||||
#include "hw/timer/mc146818rtc_regs.h"
|
||||
|
||||
ISADevice *rtc_init(ISABus *bus, int base_year, qemu_irq intercept_irq);
|
||||
void rtc_set_memory(ISADevice *dev, int addr, int val);
|
||||
void rtc_set_date(ISADevice *dev, const struct tm *tm);
|
||||
|
||||
#endif /* !MC146818RTC_H */
|
67
include/hw/timer/mc146818rtc_regs.h
Normal file
67
include/hw/timer/mc146818rtc_regs.h
Normal file
|
@ -0,0 +1,67 @@
|
|||
/*
|
||||
* QEMU MC146818 RTC emulation
|
||||
*
|
||||
* Copyright (c) 2003-2004 Fabrice Bellard
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
#ifndef RTC_REGS_H
|
||||
#define RTC_REGS_H
|
||||
|
||||
#define RTC_ISA_IRQ 8
|
||||
|
||||
#define RTC_SECONDS 0
|
||||
#define RTC_SECONDS_ALARM 1
|
||||
#define RTC_MINUTES 2
|
||||
#define RTC_MINUTES_ALARM 3
|
||||
#define RTC_HOURS 4
|
||||
#define RTC_HOURS_ALARM 5
|
||||
#define RTC_ALARM_DONT_CARE 0xC0
|
||||
|
||||
#define RTC_DAY_OF_WEEK 6
|
||||
#define RTC_DAY_OF_MONTH 7
|
||||
#define RTC_MONTH 8
|
||||
#define RTC_YEAR 9
|
||||
|
||||
#define RTC_REG_A 10
|
||||
#define RTC_REG_B 11
|
||||
#define RTC_REG_C 12
|
||||
#define RTC_REG_D 13
|
||||
|
||||
/* PC cmos mappings */
|
||||
#define RTC_CENTURY 0x32
|
||||
#define RTC_IBM_PS2_CENTURY_BYTE 0x37
|
||||
|
||||
#define REG_A_UIP 0x80
|
||||
|
||||
#define REG_B_SET 0x80
|
||||
#define REG_B_PIE 0x40
|
||||
#define REG_B_AIE 0x20
|
||||
#define REG_B_UIE 0x10
|
||||
#define REG_B_SQWE 0x08
|
||||
#define REG_B_DM 0x04
|
||||
#define REG_B_24H 0x02
|
||||
|
||||
#define REG_C_UF 0x10
|
||||
#define REG_C_IRQF 0x80
|
||||
#define REG_C_PF 0x40
|
||||
#define REG_C_AF 0x20
|
||||
#define REG_C_MASK 0x70
|
||||
|
||||
#endif
|
Loading…
Add table
Add a link
Reference in a new issue