~fboudra/qemu-linaro/new-upstream-release-1.2.0-2012.09-0ubuntu1

« back to all changes in this revision

Viewing changes to hw/spapr_pci.h

  • Committer: fboudra at gmail
  • Date: 2012-09-15 07:21:49 UTC
  • Revision ID: fboudra@gmail.com-20120915072149-w4nhqcz1yxoquirf
* New upstream release.
* Add arm-make-smc-calls-behave-as-nops.patch (LP: #1048322)
  Fixes booting upstream kernels after
  8e56130dcbcc0608c2531c61f93175e36a300e58

Show diffs side-by-side

added added

removed removed

Lines of Context:
27
27
#include "hw/pci_host.h"
28
28
#include "hw/xics.h"
29
29
 
 
30
#define SPAPR_MSIX_MAX_DEVS 32
 
31
 
 
32
#define TYPE_SPAPR_PCI_HOST_BRIDGE "spapr-pci-host-bridge"
 
33
 
 
34
#define SPAPR_PCI_HOST_BRIDGE(obj) \
 
35
    OBJECT_CHECK(sPAPRPHBState, (obj), TYPE_SPAPR_PCI_HOST_BRIDGE)
 
36
 
30
37
typedef struct sPAPRPHBState {
31
 
    SysBusDevice busdev;
32
 
    PCIHostState host_state;
 
38
    PCIHostState parent_obj;
33
39
 
34
40
    uint64_t buid;
35
41
    char *busname;
37
43
 
38
44
    MemoryRegion memspace, iospace;
39
45
    target_phys_addr_t mem_win_addr, mem_win_size, io_win_addr, io_win_size;
40
 
    MemoryRegion memwindow, iowindow;
 
46
    target_phys_addr_t msi_win_addr;
 
47
    MemoryRegion memwindow, iowindow, msiwindow;
 
48
 
 
49
    uint32_t dma_liobn;
 
50
    uint64_t dma_window_start;
 
51
    uint64_t dma_window_size;
41
52
    DMAContext *dma;
42
53
 
43
54
    struct {
44
 
        uint32_t dt_irq;
45
 
        qemu_irq qirq;
 
55
        uint32_t irq;
46
56
    } lsi_table[PCI_NUM_PINS];
47
57
 
 
58
    struct {
 
59
        uint32_t config_addr;
 
60
        uint32_t irq;
 
61
        int nvec;
 
62
    } msi_table[SPAPR_MSIX_MAX_DEVS];
 
63
 
48
64
    QLIST_ENTRY(sPAPRPHBState) list;
49
65
} sPAPRPHBState;
50
66
 
 
67
static inline qemu_irq spapr_phb_lsi_qirq(struct sPAPRPHBState *phb, int pin)
 
68
{
 
69
    return xics_get_qirq(spapr->icp, phb->lsi_table[pin].irq);
 
70
}
 
71
 
51
72
#define SPAPR_PCI_MEM_WIN_BUS_OFFSET 0x80000000ULL
52
73
#define SPAPR_PCI_IO_WIN_SIZE        0x10000
53
74
 
54
75
void spapr_create_phb(sPAPREnvironment *spapr,
55
76
                      const char *busname, uint64_t buid,
56
77
                      uint64_t mem_win_addr, uint64_t mem_win_size,
57
 
                      uint64_t io_win_addr);
58
 
 
59
 
int spapr_populate_pci_devices(sPAPRPHBState *phb,
60
 
                               uint32_t xics_phandle,
61
 
                               void *fdt);
 
78
                      uint64_t io_win_addr, uint64_t msi_win_addr);
 
79
 
 
80
int spapr_populate_pci_dt(sPAPRPHBState *phb,
 
81
                          uint32_t xics_phandle,
 
82
                          void *fdt);
 
83
 
 
84
void spapr_pci_rtas_init(void);
62
85
 
63
86
#endif /* __HW_SPAPR_PCI_H__ */