Statistics
| Branch: | Revision:

root / hw / i8254.h @ 43997225

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 */