Statistics
| Branch: | Revision:

root / hw / pc.h @ c3d420ea

History | View | Annotate | Download (5.1 kB)

1 87ecb68b pbrook
#ifndef HW_PC_H
2 87ecb68b pbrook
#define HW_PC_H
3 376253ec aliguori
4 376253ec aliguori
#include "qemu-common.h"
5 35bed8ee Paul Brook
#include "ioport.h"
6 845773ab Isaku Yamahata
#include "isa.h"
7 845773ab Isaku Yamahata
#include "fdc.h"
8 376253ec aliguori
9 87ecb68b pbrook
/* PC-style peripherals (also used by other machines).  */
10 87ecb68b pbrook
11 87ecb68b pbrook
/* serial.c */
12 87ecb68b pbrook
13 b6cd0ea1 aurel32
SerialState *serial_init(int base, qemu_irq irq, int baudbase,
14 b6cd0ea1 aurel32
                         CharDriverState *chr);
15 c227f099 Anthony Liguori
SerialState *serial_mm_init (target_phys_addr_t base, int it_shift,
16 b6cd0ea1 aurel32
                             qemu_irq irq, int baudbase,
17 2d48377a Blue Swirl
                             CharDriverState *chr, int ioregister,
18 2d48377a Blue Swirl
                             int be);
19 ac0be998 Gerd Hoffmann
SerialState *serial_isa_init(int index, CharDriverState *chr);
20 038eaf82 Stefan Weil
void serial_set_frequency(SerialState *s, uint32_t frequency);
21 87ecb68b pbrook
22 87ecb68b pbrook
/* parallel.c */
23 87ecb68b pbrook
24 87ecb68b pbrook
typedef struct ParallelState ParallelState;
25 021f0674 Gerd Hoffmann
ParallelState *parallel_init(int index, CharDriverState *chr);
26 c227f099 Anthony Liguori
ParallelState *parallel_mm_init(target_phys_addr_t base, int it_shift, qemu_irq irq, CharDriverState *chr);
27 87ecb68b pbrook
28 87ecb68b pbrook
/* i8259.c */
29 87ecb68b pbrook
30 87ecb68b pbrook
typedef struct PicState2 PicState2;
31 87ecb68b pbrook
extern PicState2 *isa_pic;
32 87ecb68b pbrook
void pic_set_irq(int irq, int level);
33 87ecb68b pbrook
void pic_set_irq_new(void *opaque, int irq, int level);
34 87ecb68b pbrook
qemu_irq *i8259_init(qemu_irq parent_irq);
35 87ecb68b pbrook
int pic_read_irq(PicState2 *s);
36 87ecb68b pbrook
void pic_update_irq(PicState2 *s);
37 87ecb68b pbrook
uint32_t pic_intack_read(PicState2 *s);
38 376253ec aliguori
void pic_info(Monitor *mon);
39 376253ec aliguori
void irq_info(Monitor *mon);
40 87ecb68b pbrook
41 845773ab Isaku Yamahata
/* ISA */
42 845773ab Isaku Yamahata
typedef struct isa_irq_state {
43 845773ab Isaku Yamahata
    qemu_irq *i8259;
44 845773ab Isaku Yamahata
    qemu_irq *ioapic;
45 845773ab Isaku Yamahata
} IsaIrqState;
46 845773ab Isaku Yamahata
47 845773ab Isaku Yamahata
void isa_irq_handler(void *opaque, int n, int level);
48 845773ab Isaku Yamahata
49 87ecb68b pbrook
/* i8254.c */
50 87ecb68b pbrook
51 87ecb68b pbrook
#define PIT_FREQ 1193182
52 87ecb68b pbrook
53 87ecb68b pbrook
typedef struct PITState PITState;
54 87ecb68b pbrook
55 87ecb68b pbrook
PITState *pit_init(int base, qemu_irq irq);
56 87ecb68b pbrook
void pit_set_gate(PITState *pit, int channel, int val);
57 87ecb68b pbrook
int pit_get_gate(PITState *pit, int channel);
58 87ecb68b pbrook
int pit_get_initial_count(PITState *pit, int channel);
59 87ecb68b pbrook
int pit_get_mode(PITState *pit, int channel);
60 87ecb68b pbrook
int pit_get_out(PITState *pit, int channel, int64_t current_time);
61 87ecb68b pbrook
62 bf4f74c0 aurel32
void hpet_pit_disable(void);
63 bf4f74c0 aurel32
void hpet_pit_enable(void);
64 bf4f74c0 aurel32
65 87ecb68b pbrook
/* vmport.c */
66 26fb5e48 aurel32
void vmport_init(void);
67 87ecb68b pbrook
void vmport_register(unsigned char command, IOPortReadFunc *func, void *opaque);
68 87ecb68b pbrook
69 87ecb68b pbrook
/* vmmouse.c */
70 87ecb68b pbrook
void *vmmouse_init(void *m);
71 87ecb68b pbrook
72 87ecb68b pbrook
/* pckbd.c */
73 87ecb68b pbrook
74 87ecb68b pbrook
void i8042_init(qemu_irq kbd_irq, qemu_irq mouse_irq, uint32_t io_base);
75 87ecb68b pbrook
void i8042_mm_init(qemu_irq kbd_irq, qemu_irq mouse_irq,
76 c227f099 Anthony Liguori
                   target_phys_addr_t base, ram_addr_t size,
77 c227f099 Anthony Liguori
                   target_phys_addr_t mask);
78 956a3e6b Blue Swirl
void i8042_isa_mouse_fake_event(void *opaque);
79 956a3e6b Blue Swirl
void i8042_setup_a20_line(ISADevice *dev, qemu_irq *a20_out);
80 87ecb68b pbrook
81 87ecb68b pbrook
/* pc.c */
82 87ecb68b pbrook
extern int fd_bootchk;
83 87ecb68b pbrook
84 8e78eb28 Isaku Yamahata
void pc_register_ferr_irq(qemu_irq irq);
85 845773ab Isaku Yamahata
void pc_cmos_set_s3_resume(void *opaque, int irq, int level);
86 845773ab Isaku Yamahata
void pc_acpi_smi_interrupt(void *opaque, int irq, int level);
87 845773ab Isaku Yamahata
88 845773ab Isaku Yamahata
void pc_cpus_init(const char *cpu_model);
89 845773ab Isaku Yamahata
void pc_memory_init(ram_addr_t ram_size,
90 845773ab Isaku Yamahata
                    const char *kernel_filename,
91 845773ab Isaku Yamahata
                    const char *kernel_cmdline,
92 845773ab Isaku Yamahata
                    const char *initrd_filename,
93 845773ab Isaku Yamahata
                    ram_addr_t *below_4g_mem_size_p,
94 845773ab Isaku Yamahata
                    ram_addr_t *above_4g_mem_size_p);
95 845773ab Isaku Yamahata
qemu_irq *pc_allocate_cpu_irq(void);
96 845773ab Isaku Yamahata
void pc_vga_init(PCIBus *pci_bus);
97 845773ab Isaku Yamahata
void pc_basic_device_init(qemu_irq *isa_irq,
98 845773ab Isaku Yamahata
                          FDCtrl **floppy_controller,
99 1d914fa0 Isaku Yamahata
                          ISADevice **rtc_state);
100 845773ab Isaku Yamahata
void pc_init_ne2k_isa(NICInfo *nd);
101 845773ab Isaku Yamahata
#ifdef HAS_AUDIO
102 845773ab Isaku Yamahata
void pc_audio_init (PCIBus *pci_bus, qemu_irq *pic);
103 845773ab Isaku Yamahata
#endif
104 845773ab Isaku Yamahata
void pc_cmos_init(ram_addr_t ram_size, ram_addr_t above_4g_mem_size,
105 845773ab Isaku Yamahata
                  const char *boot_device, DriveInfo **hd_table,
106 1d914fa0 Isaku Yamahata
                  FDCtrl *floppy_controller, ISADevice *s);
107 845773ab Isaku Yamahata
void pc_pci_device_init(PCIBus *pci_bus);
108 8e78eb28 Isaku Yamahata
109 f885f1ea Isaku Yamahata
typedef void (*cpu_set_smm_t)(int smm, void *arg);
110 f885f1ea Isaku Yamahata
void cpu_smm_register(cpu_set_smm_t callback, void *arg);
111 f885f1ea Isaku Yamahata
112 87ecb68b pbrook
/* acpi.c */
113 87ecb68b pbrook
extern int acpi_enabled;
114 80deece2 blueswir1
extern char *acpi_tables;
115 80deece2 blueswir1
extern size_t acpi_tables_len;
116 80deece2 blueswir1
117 9d5e77a2 Isaku Yamahata
void acpi_bios_init(void);
118 9d5e77a2 Isaku Yamahata
int acpi_table_add(const char *table_desc);
119 9d5e77a2 Isaku Yamahata
120 9d5e77a2 Isaku Yamahata
/* acpi_piix.c */
121 53b67b30 Blue Swirl
122 cf7a2fe2 aurel32
i2c_bus *piix4_pm_init(PCIBus *bus, int devfn, uint32_t smb_io_base,
123 53b67b30 Blue Swirl
                       qemu_irq sci_irq, qemu_irq cmos_s3, qemu_irq smi_irq,
124 53b67b30 Blue Swirl
                       int kvm_enabled);
125 87ecb68b pbrook
void piix4_smbus_register_device(SMBusDevice *dev, uint8_t addr);
126 87ecb68b pbrook
127 16b29ae1 aliguori
/* hpet.c */
128 16b29ae1 aliguori
extern int no_hpet;
129 16b29ae1 aliguori
130 87ecb68b pbrook
/* pcspk.c */
131 87ecb68b pbrook
void pcspk_init(PITState *);
132 22d83b14 Paul Brook
int pcspk_audio_init(qemu_irq *pic);
133 87ecb68b pbrook
134 87ecb68b pbrook
/* piix_pci.c */
135 0a3bacf3 Juan Quintela
struct PCII440FXState;
136 0a3bacf3 Juan Quintela
typedef struct PCII440FXState PCII440FXState;
137 0a3bacf3 Juan Quintela
138 97679527 Avi Kivity
PCIBus *i440fx_init(PCII440FXState **pi440fx_state, int *piix_devfn, qemu_irq *pic, ram_addr_t ram_size);
139 0a3bacf3 Juan Quintela
void i440fx_init_memory_mappings(PCII440FXState *d);
140 87ecb68b pbrook
141 823e675a Juan Quintela
/* piix4.c */
142 b1d8e52e blueswir1
extern PCIDevice *piix4_dev;
143 87ecb68b pbrook
int piix4_init(PCIBus *bus, int devfn);
144 87ecb68b pbrook
145 87ecb68b pbrook
/* vga.c */
146 cb5a7aa8 malc
enum vga_retrace_method {
147 cb5a7aa8 malc
    VGA_RETRACE_DUMB,
148 cb5a7aa8 malc
    VGA_RETRACE_PRECISE
149 cb5a7aa8 malc
};
150 cb5a7aa8 malc
151 cb5a7aa8 malc
extern enum vga_retrace_method vga_retrace_method;
152 87ecb68b pbrook
153 fbe1b595 Paul Brook
int isa_vga_init(void);
154 fbe1b595 Paul Brook
int pci_vga_init(PCIBus *bus,
155 87ecb68b pbrook
                 unsigned long vga_bios_offset, int vga_bios_size);
156 c227f099 Anthony Liguori
int isa_vga_mm_init(target_phys_addr_t vram_base,
157 c227f099 Anthony Liguori
                    target_phys_addr_t ctrl_base, int it_shift);
158 87ecb68b pbrook
159 87ecb68b pbrook
/* cirrus_vga.c */
160 fbe1b595 Paul Brook
void pci_cirrus_vga_init(PCIBus *bus);
161 fbe1b595 Paul Brook
void isa_cirrus_vga_init(void);
162 87ecb68b pbrook
163 87ecb68b pbrook
/* ne2000.c */
164 87ecb68b pbrook
165 9453c5bc Gerd Hoffmann
void isa_ne2000_init(int base, int irq, NICInfo *nd);
166 87ecb68b pbrook
167 4c5b10b7 Jes Sorensen
/* e820 types */
168 4c5b10b7 Jes Sorensen
#define E820_RAM        1
169 4c5b10b7 Jes Sorensen
#define E820_RESERVED   2
170 4c5b10b7 Jes Sorensen
#define E820_ACPI       3
171 4c5b10b7 Jes Sorensen
#define E820_NVS        4
172 4c5b10b7 Jes Sorensen
#define E820_UNUSABLE   5
173 4c5b10b7 Jes Sorensen
174 4c5b10b7 Jes Sorensen
int e820_add_entry(uint64_t, uint64_t, uint32_t);
175 4c5b10b7 Jes Sorensen
176 87ecb68b pbrook
#endif