[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-ppc] [PATCH 38/40] PPC: e500: pci: Export slot2irq calculation
From: |
Alexander Graf |
Subject: |
[Qemu-ppc] [PATCH 38/40] PPC: e500: pci: Export slot2irq calculation |
Date: |
Fri, 14 Dec 2012 13:13:54 +0100 |
We need the calculation method to get from a PCI slot ID to its respective
interrupt line twice. Once in the internal map function and once when
assembling the device tree.
So let's extract the calculation to a separate function that can be called
by both users.
Signed-off-by: Alexander Graf <address@hidden>
---
hw/ppc/e500.c | 5 ++++-
hw/ppce500_pci.c | 3 ++-
hw/ppce500_pci.h | 9 +++++++++
3 files changed, 15 insertions(+), 2 deletions(-)
create mode 100644 hw/ppce500_pci.h
diff --git a/hw/ppc/e500.c b/hw/ppc/e500.c
index 564f654..af6b671 100644
--- a/hw/ppc/e500.c
+++ b/hw/ppc/e500.c
@@ -34,6 +34,7 @@
#include "hw/sysbus.h"
#include "exec-memory.h"
#include "host-utils.h"
+#include "hw/ppce500_pci.h"
#define BINARY_DEVICE_TREE_FILE "mpc8544ds.dtb"
#define UIMAGE_LOAD_BASE 0
@@ -72,6 +73,7 @@ static uint32_t *pci_map_create(void *fdt, uint32_t mpic, int
first_slot,
int i = 0;
int slot;
int pci_irq;
+ int host_irq;
int last_slot = first_slot + nr_slots;
uint32_t *pci_map;
@@ -85,7 +87,8 @@ static uint32_t *pci_map_create(void *fdt, uint32_t mpic, int
first_slot,
pci_map[i++] = cpu_to_be32(0x0);
pci_map[i++] = cpu_to_be32(pci_irq + 1);
pci_map[i++] = cpu_to_be32(mpic);
- pci_map[i++] = cpu_to_be32(((pci_irq + slot) % 4) + 1);
+ host_irq = ppce500_pci_map_irq_slot(slot, pci_irq);
+ pci_map[i++] = cpu_to_be32(host_irq + 1);
pci_map[i++] = cpu_to_be32(0x1);
}
}
diff --git a/hw/ppce500_pci.c b/hw/ppce500_pci.c
index 561a776..09e3507 100644
--- a/hw/ppce500_pci.c
+++ b/hw/ppce500_pci.c
@@ -19,6 +19,7 @@
#include "pci.h"
#include "pci_host.h"
#include "bswap.h"
+#include "ppce500_pci.h"
#ifdef DEBUG_PCI
#define pci_debug(fmt, ...) fprintf(stderr, fmt, ## __VA_ARGS__)
@@ -256,7 +257,7 @@ static int mpc85xx_pci_map_irq(PCIDevice *pci_dev, int
irq_num)
int devno = pci_dev->devfn >> 3;
int ret;
- ret = (irq_num + devno) % 4;
+ ret = ppce500_pci_map_irq_slot(devno, irq_num);
pci_debug("%s: devfn %x irq %d -> %d devno:%x\n", __func__,
pci_dev->devfn, irq_num, ret, devno);
diff --git a/hw/ppce500_pci.h b/hw/ppce500_pci.h
new file mode 100644
index 0000000..61f773e
--- /dev/null
+++ b/hw/ppce500_pci.h
@@ -0,0 +1,9 @@
+#ifndef PPCE500_PCI_H
+#define PPCE500_PCI_H
+
+static inline int ppce500_pci_map_irq_slot(int devno, int irq_num)
+{
+ return (devno + irq_num) % 4;
+}
+
+#endif
--
1.6.0.2
- [Qemu-ppc] [PATCH 22/40] openpic: convert simple reg operations to builtin bitops, (continued)
- [Qemu-ppc] [PATCH 22/40] openpic: convert simple reg operations to builtin bitops, Alexander Graf, 2012/12/14
- [Qemu-ppc] [PATCH 14/40] openpic: update to proper memory api, Alexander Graf, 2012/12/14
- [Qemu-ppc] [PATCH 04/40] pseries: Allow RTAS tokens without a qemu handler, Alexander Graf, 2012/12/14
- [Qemu-ppc] [PATCH 26/40] openpic: make brr1 model specific, Alexander Graf, 2012/12/14
- [Qemu-ppc] [PATCH 40/40] pseries: Increase default NVRAM size, Alexander Graf, 2012/12/14
- [Qemu-ppc] [PATCH 23/40] openpic: rename openpic_t to OpenPICState, Alexander Graf, 2012/12/14
- [Qemu-ppc] [PATCH 35/40] PPC: E500: Generate dt pci irq map dynamically, Alexander Graf, 2012/12/14
- [Qemu-ppc] [PATCH 08/40] pseries: Update SLOF for NVRAM support, Alexander Graf, 2012/12/14
- [Qemu-ppc] [PATCH 27/40] openpic: add Shared MSI support, Alexander Graf, 2012/12/14
- [Qemu-ppc] [PATCH 34/40] PPC: E500: PCI: Make IRQ calculation more generic, Alexander Graf, 2012/12/14
- [Qemu-ppc] [PATCH 38/40] PPC: e500: pci: Export slot2irq calculation,
Alexander Graf <=
- [Qemu-ppc] [PATCH 28/40] PPC: e500: Add MSI support, Alexander Graf, 2012/12/14
- [Qemu-ppc] [PATCH 20/40] openpic: unify memory api subregions, Alexander Graf, 2012/12/14
- [Qemu-ppc] [PATCH 36/40] PPC: E500: Move PCI slot information into params, Alexander Graf, 2012/12/14
- [Qemu-ppc] [PATCH 24/40] openpic: remove irq_out, Alexander Graf, 2012/12/14
- [Qemu-ppc] [PATCH 02/40] pseries: Use #define for XICS base irq number, Alexander Graf, 2012/12/14
- [Qemu-ppc] [PATCH 16/40] openpic: Convert subregions to memory api, Alexander Graf, 2012/12/14
- [Qemu-ppc] [PATCH 07/40] pseries: Implement PAPR NVRAM, Alexander Graf, 2012/12/14
- [Qemu-ppc] [PATCH 31/40] openpic: fix minor coding style issues, Alexander Graf, 2012/12/14
- [Qemu-ppc] [PATCH 15/40] openpic: combine mpic and openpic src handlers, Alexander Graf, 2012/12/14
- [Qemu-ppc] [PATCH 06/40] pseries: Split xics irq configuration from state information, Alexander Graf, 2012/12/14