root / hw / i8254.h @ fa156e51
History | View | Annotate | Download (2.1 kB)
1 | b1277b03 | Jan Kiszka | /*
|
---|---|---|---|
2 | b1277b03 | Jan Kiszka | * QEMU 8253/8254 interval timer emulation
|
3 | b1277b03 | Jan Kiszka | *
|
4 | b1277b03 | Jan Kiszka | * Copyright (c) 2003-2004 Fabrice Bellard
|
5 | b1277b03 | Jan Kiszka | *
|
6 | b1277b03 | Jan Kiszka | * Permission is hereby granted, free of charge, to any person obtaining a copy
|
7 | b1277b03 | Jan Kiszka | * of this software and associated documentation files (the "Software"), to deal
|
8 | b1277b03 | Jan Kiszka | * in the Software without restriction, including without limitation the rights
|
9 | b1277b03 | Jan Kiszka | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
10 | b1277b03 | Jan Kiszka | * copies of the Software, and to permit persons to whom the Software is
|
11 | b1277b03 | Jan Kiszka | * furnished to do so, subject to the following conditions:
|
12 | b1277b03 | Jan Kiszka | *
|
13 | b1277b03 | Jan Kiszka | * The above copyright notice and this permission notice shall be included in
|
14 | b1277b03 | Jan Kiszka | * all copies or substantial portions of the Software.
|
15 | b1277b03 | Jan Kiszka | *
|
16 | b1277b03 | Jan Kiszka | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
17 | b1277b03 | Jan Kiszka | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
18 | b1277b03 | Jan Kiszka | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
19 | b1277b03 | Jan Kiszka | * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
20 | b1277b03 | Jan Kiszka | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
21 | b1277b03 | Jan Kiszka | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
22 | b1277b03 | Jan Kiszka | * THE SOFTWARE.
|
23 | b1277b03 | Jan Kiszka | */
|
24 | b1277b03 | Jan Kiszka | |
25 | b1277b03 | Jan Kiszka | #ifndef HW_I8254_H
|
26 | b1277b03 | Jan Kiszka | #define HW_I8254_H
|
27 | b1277b03 | Jan Kiszka | |
28 | b1277b03 | Jan Kiszka | #include "hw.h" |
29 | b1277b03 | Jan Kiszka | #include "isa.h" |
30 | b1277b03 | Jan Kiszka | |
31 | b1277b03 | Jan Kiszka | #define PIT_FREQ 1193182 |
32 | b1277b03 | Jan Kiszka | |
33 | 4aa5d285 | Jan Kiszka | typedef struct PITChannelInfo { |
34 | 4aa5d285 | Jan Kiszka | int gate;
|
35 | 4aa5d285 | Jan Kiszka | int mode;
|
36 | 4aa5d285 | Jan Kiszka | int initial_count;
|
37 | 4aa5d285 | Jan Kiszka | int out;
|
38 | 4aa5d285 | Jan Kiszka | } PITChannelInfo; |
39 | 4aa5d285 | Jan Kiszka | |
40 | 319ba9f5 | Jan Kiszka | static inline ISADevice *pit_init(ISABus *bus, int base, int isa_irq, |
41 | 319ba9f5 | Jan Kiszka | qemu_irq alt_irq) |
42 | b1277b03 | Jan Kiszka | { |
43 | b1277b03 | Jan Kiszka | ISADevice *dev; |
44 | b1277b03 | Jan Kiszka | |
45 | b1277b03 | Jan Kiszka | dev = isa_create(bus, "isa-pit");
|
46 | b1277b03 | Jan Kiszka | qdev_prop_set_uint32(&dev->qdev, "iobase", base);
|
47 | b1277b03 | Jan Kiszka | qdev_init_nofail(&dev->qdev); |
48 | 319ba9f5 | Jan Kiszka | qdev_connect_gpio_out(&dev->qdev, 0,
|
49 | 319ba9f5 | Jan Kiszka | isa_irq >= 0 ? isa_get_irq(dev, isa_irq) : alt_irq);
|
50 | b1277b03 | Jan Kiszka | |
51 | b1277b03 | Jan Kiszka | return dev;
|
52 | b1277b03 | Jan Kiszka | } |
53 | b1277b03 | Jan Kiszka | |
54 | 5d17c0d2 | Jan Kiszka | static inline ISADevice *kvm_pit_init(ISABus *bus, int base) |
55 | 5d17c0d2 | Jan Kiszka | { |
56 | 5d17c0d2 | Jan Kiszka | ISADevice *dev; |
57 | 5d17c0d2 | Jan Kiszka | |
58 | 5d17c0d2 | Jan Kiszka | dev = isa_create(bus, "kvm-pit");
|
59 | 5d17c0d2 | Jan Kiszka | qdev_prop_set_uint32(&dev->qdev, "iobase", base);
|
60 | 5d17c0d2 | Jan Kiszka | qdev_init_nofail(&dev->qdev); |
61 | 5d17c0d2 | Jan Kiszka | |
62 | 5d17c0d2 | Jan Kiszka | return dev;
|
63 | 5d17c0d2 | Jan Kiszka | } |
64 | 5d17c0d2 | Jan Kiszka | |
65 | b1277b03 | Jan Kiszka | void pit_set_gate(ISADevice *dev, int channel, int val); |
66 | 4aa5d285 | Jan Kiszka | void pit_get_channel_info(ISADevice *dev, int channel, PITChannelInfo *info); |
67 | b1277b03 | Jan Kiszka | |
68 | b1277b03 | Jan Kiszka | #endif /* !HW_I8254_H */ |