~pmdj/ubuntu/trusty/qemu/2.9+applesmc+fadtv3

« back to all changes in this revision

Viewing changes to include/hw/acpi/pcihp.h

  • Committer: Phil Dennis-Jordan
  • Author(s): Michael Tokarev
  • Date: 2017-05-23 06:58:03 UTC
  • Revision ID: phil@philjordan.eu-20170523065803-3subwvf3y8kzkjry
Tags: upstream-2.8+dfsg
ImportĀ upstreamĀ versionĀ 2.8+dfsg

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * QEMU<->ACPI BIOS PCI hotplug interface
 
3
 *
 
4
 * QEMU supports PCI hotplug via ACPI. This module
 
5
 * implements the interface between QEMU and the ACPI BIOS.
 
6
 * Interface specification - see docs/specs/acpi_pci_hotplug.txt
 
7
 *
 
8
 * Copyright (c) 2013, Red Hat Inc, Michael S. Tsirkin (mst@redhat.com)
 
9
 * Copyright (c) 2006 Fabrice Bellard
 
10
 *
 
11
 * This library is free software; you can redistribute it and/or
 
12
 * modify it under the terms of the GNU Lesser General Public
 
13
 * License version 2 as published by the Free Software Foundation.
 
14
 *
 
15
 * This library is distributed in the hope that it will be useful,
 
16
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 
17
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 
18
 * Lesser General Public License for more details.
 
19
 *
 
20
 * You should have received a copy of the GNU Lesser General Public
 
21
 * License along with this library; if not, see <http://www.gnu.org/licenses/>
 
22
 *
 
23
 * Contributions after 2012-01-13 are licensed under the terms of the
 
24
 * GNU GPL, version 2 or (at your option) any later version.
 
25
 */
 
26
 
 
27
#ifndef HW_ACPI_PCIHP_H
 
28
#define HW_ACPI_PCIHP_H
 
29
 
 
30
#include "hw/acpi/acpi.h"
 
31
#include "migration/vmstate.h"
 
32
#include "hw/hotplug.h"
 
33
 
 
34
#define ACPI_PCIHP_IO_BASE_PROP "acpi-pcihp-io-base"
 
35
#define ACPI_PCIHP_IO_LEN_PROP "acpi-pcihp-io-len"
 
36
 
 
37
typedef struct AcpiPciHpPciStatus {
 
38
    uint32_t up;
 
39
    uint32_t down;
 
40
    uint32_t hotplug_enable;
 
41
} AcpiPciHpPciStatus;
 
42
 
 
43
#define ACPI_PCIHP_PROP_BSEL "acpi-pcihp-bsel"
 
44
#define ACPI_PCIHP_MAX_HOTPLUG_BUS 256
 
45
#define ACPI_PCIHP_BSEL_DEFAULT 0x0
 
46
 
 
47
typedef struct AcpiPciHpState {
 
48
    AcpiPciHpPciStatus acpi_pcihp_pci_status[ACPI_PCIHP_MAX_HOTPLUG_BUS];
 
49
    uint32_t hotplug_select;
 
50
    PCIBus *root;
 
51
    MemoryRegion io;
 
52
    bool legacy_piix;
 
53
    uint16_t io_base;
 
54
    uint16_t io_len;
 
55
} AcpiPciHpState;
 
56
 
 
57
void acpi_pcihp_init(Object *owner, AcpiPciHpState *, PCIBus *root,
 
58
                     MemoryRegion *address_space_io, bool bridges_enabled);
 
59
 
 
60
void acpi_pcihp_device_plug_cb(HotplugHandler *hotplug_dev, AcpiPciHpState *s,
 
61
                               DeviceState *dev, Error **errp);
 
62
void acpi_pcihp_device_unplug_cb(HotplugHandler *hotplug_dev, AcpiPciHpState *s,
 
63
                                 DeviceState *dev, Error **errp);
 
64
 
 
65
/* Called on reset */
 
66
void acpi_pcihp_reset(AcpiPciHpState *s);
 
67
 
 
68
extern const VMStateDescription vmstate_acpi_pcihp_pci_status;
 
69
 
 
70
#define VMSTATE_PCI_HOTPLUG(pcihp, state, test_pcihp) \
 
71
        VMSTATE_UINT32_TEST(pcihp.hotplug_select, state, \
 
72
                            test_pcihp), \
 
73
        VMSTATE_STRUCT_ARRAY_TEST(pcihp.acpi_pcihp_pci_status, state, \
 
74
                                  ACPI_PCIHP_MAX_HOTPLUG_BUS, \
 
75
                                  test_pcihp, 1, \
 
76
                                  vmstate_acpi_pcihp_pci_status, \
 
77
                                  AcpiPciHpPciStatus)
 
78
 
 
79
#endif