From: Scott Wood <scottwood@freescale.com>
To: Alexander Graf <agraf@suse.de>
Cc: Scott Wood <scottwood@freescale.com>,
qemu-ppc@nongnu.org, qemu-devel@nongnu.org
Subject: [Qemu-devel] [RFC PATCH v2 4/6] openpic: factor out some common defines into openpic.h
Date: Mon, 15 Apr 2013 18:19:32 -0500 [thread overview]
Message-ID: <1366067974-5413-5-git-send-email-scottwood@freescale.com> (raw)
In-Reply-To: <1366067974-5413-1-git-send-email-scottwood@freescale.com>
...for use by the KVM in-kernel irqchip stub.
Signed-off-by: Scott Wood <scottwood@freescale.com>
---
hw/openpic.c | 40 ++++++++++++++++++----------------------
hw/openpic.h | 11 +++++++++++
2 files changed, 29 insertions(+), 22 deletions(-)
diff --git a/hw/openpic.c b/hw/openpic.c
index 03a7075..b655381 100644
--- a/hw/openpic.c
+++ b/hw/openpic.c
@@ -57,11 +57,7 @@ static const int debug_openpic = 0;
} while (0)
#define MAX_CPU 32
-#define MAX_SRC 256
-#define MAX_TMR 4
-#define MAX_IPI 4
#define MAX_MSI 8
-#define MAX_IRQ (MAX_SRC + MAX_IPI + MAX_TMR)
#define VID 0x03 /* MPIC version ID */
/* OpenPIC capability flags */
@@ -78,7 +74,7 @@ static const int debug_openpic = 0;
#define OPENPIC_SUMMARY_REG_START 0x3800
#define OPENPIC_SUMMARY_REG_SIZE 0x800
#define OPENPIC_SRC_REG_START 0x10000
-#define OPENPIC_SRC_REG_SIZE (MAX_SRC * 0x20)
+#define OPENPIC_SRC_REG_SIZE (OPENPIC_MAX_SRC * 0x20)
#define OPENPIC_CPU_REG_START 0x20000
#define OPENPIC_CPU_REG_SIZE 0x100 + ((MAX_CPU - 1) * 0x1000)
@@ -86,8 +82,8 @@ static const int debug_openpic = 0;
#define RAVEN_MAX_CPU 2
#define RAVEN_MAX_EXT 48
#define RAVEN_MAX_IRQ 64
-#define RAVEN_MAX_TMR MAX_TMR
-#define RAVEN_MAX_IPI MAX_IPI
+#define RAVEN_MAX_TMR OPENPIC_MAX_TMR
+#define RAVEN_MAX_IPI OPENPIC_MAX_IPI
/* Interrupt definitions */
#define RAVEN_FE_IRQ (RAVEN_MAX_EXT) /* Internal functional IRQ */
@@ -209,7 +205,7 @@ typedef struct IRQQueue {
/* Round up to the nearest 64 IRQs so that the queue length
* won't change when moving between 32 and 64 bit hosts.
*/
- unsigned long queue[BITS_TO_LONGS((MAX_IRQ + 63) & ~63)];
+ unsigned long queue[BITS_TO_LONGS((OPENPIC_MAX_IRQ + 63) & ~63)];
int next;
int priority;
} IRQQueue;
@@ -283,7 +279,7 @@ typedef struct OpenPICState {
uint32_t spve; /* Spurious vector register */
uint32_t tfrr; /* Timer frequency reporting register */
/* Source registers */
- IRQSource src[MAX_IRQ];
+ IRQSource src[OPENPIC_MAX_IRQ];
/* Local registers per output pin */
IRQDest dst[MAX_CPU];
uint32_t nb_cpus;
@@ -291,7 +287,7 @@ typedef struct OpenPICState {
struct {
uint32_t tccr; /* Global timer current count register */
uint32_t tbcr; /* Global timer base count register */
- } timers[MAX_TMR];
+ } timers[OPENPIC_MAX_TMR];
/* Shared MSI registers */
struct {
uint32_t msir; /* Shared Message Signaled Interrupt Register */
@@ -503,7 +499,7 @@ static void openpic_set_irq(void *opaque, int n_IRQ, int level)
OpenPICState *opp = opaque;
IRQSource *src;
- if (n_IRQ >= MAX_IRQ) {
+ if (n_IRQ >= OPENPIC_MAX_IRQ) {
fprintf(stderr, "%s: IRQ %d out of range\n", __func__, n_IRQ);
abort();
}
@@ -576,7 +572,7 @@ static void openpic_reset(DeviceState *d)
opp->dst[i].servicing.next = -1;
}
/* Initialise timers */
- for (i = 0; i < MAX_TMR; i++) {
+ for (i = 0; i < OPENPIC_MAX_TMR; i++) {
opp->timers[i].tccr = 0;
opp->timers[i].tbcr = TBCR_CI;
}
@@ -1182,7 +1178,7 @@ static uint32_t openpic_iack(OpenPICState *opp, IRQDest *dst, int cpu)
IRQ_resetbit(&dst->raised, irq);
}
- if ((irq >= opp->irq_ipi0) && (irq < (opp->irq_ipi0 + MAX_IPI))) {
+ if ((irq >= opp->irq_ipi0) && (irq < (opp->irq_ipi0 + OPENPIC_MAX_IPI))) {
src->destmask &= ~(1 << cpu);
if (src->destmask && !src->level) {
/* trigger on CPUs that didn't know about it yet */
@@ -1381,7 +1377,7 @@ static void openpic_save(QEMUFile* f, void *opaque)
sizeof(opp->dst[i].outputs_active));
}
- for (i = 0; i < MAX_TMR; i++) {
+ for (i = 0; i < OPENPIC_MAX_TMR; i++) {
qemu_put_be32s(f, &opp->timers[i].tccr);
qemu_put_be32s(f, &opp->timers[i].tbcr);
}
@@ -1440,7 +1436,7 @@ static int openpic_load(QEMUFile* f, void *opaque, int version_id)
sizeof(opp->dst[i].outputs_active));
}
- for (i = 0; i < MAX_TMR; i++) {
+ for (i = 0; i < OPENPIC_MAX_TMR; i++) {
qemu_get_be32s(f, &opp->timers[i].tccr);
qemu_get_be32s(f, &opp->timers[i].tbcr);
}
@@ -1473,7 +1469,7 @@ typedef struct MemReg {
static void fsl_common_init(OpenPICState *opp)
{
int i;
- int virq = MAX_SRC;
+ int virq = OPENPIC_MAX_SRC;
opp->vid = VID_REVISION_1_2;
opp->vir = VIR_GENERIC;
@@ -1481,14 +1477,14 @@ static void fsl_common_init(OpenPICState *opp)
opp->tfrr_reset = 0;
opp->ivpr_reset = IVPR_MASK_MASK;
opp->idr_reset = 1 << 0;
- opp->max_irq = MAX_IRQ;
+ opp->max_irq = OPENPIC_MAX_IRQ;
opp->irq_ipi0 = virq;
- virq += MAX_IPI;
+ virq += OPENPIC_MAX_IPI;
opp->irq_tim0 = virq;
- virq += MAX_TMR;
+ virq += OPENPIC_MAX_TMR;
- assert(virq <= MAX_IRQ);
+ assert(virq <= OPENPIC_MAX_IRQ);
opp->irq_msi = 224;
@@ -1498,13 +1494,13 @@ static void fsl_common_init(OpenPICState *opp)
}
/* Internal interrupts, including message and MSI */
- for (i = 16; i < MAX_SRC; i++) {
+ for (i = 16; i < OPENPIC_MAX_SRC; i++) {
opp->src[i].type = IRQ_TYPE_FSLINT;
opp->src[i].level = true;
}
/* timers and IPIs */
- for (i = MAX_SRC; i < virq; i++) {
+ for (i = OPENPIC_MAX_SRC; i < virq; i++) {
opp->src[i].type = IRQ_TYPE_FSLSPECIAL;
opp->src[i].level = false;
}
diff --git a/hw/openpic.h b/hw/openpic.h
index 9dcaf0e..d873bb6 100644
--- a/hw/openpic.h
+++ b/hw/openpic.h
@@ -1,6 +1,9 @@
#if !defined(__OPENPIC_H__)
#define __OPENPIC_H__
+#include "qemu-common.h"
+#include "hw/qdev.h"
+
/* OpenPIC have 5 outputs per CPU connected and one IRQ out single output */
enum {
OPENPIC_OUTPUT_INT = 0, /* IRQ */
@@ -15,4 +18,12 @@ enum {
#define OPENPIC_MODEL_FSL_MPIC_20 1
#define OPENPIC_MODEL_FSL_MPIC_42 2
+#define OPENPIC_MAX_SRC 256
+#define OPENPIC_MAX_TMR 4
+#define OPENPIC_MAX_IPI 4
+#define OPENPIC_MAX_IRQ (OPENPIC_MAX_SRC + OPENPIC_MAX_IPI + \
+ OPENPIC_MAX_TMR)
+
+DeviceState *kvm_openpic_create(BusState *bus, int model);
+
#endif /* __OPENPIC_H__ */
--
1.7.10.4
next prev parent reply other threads:[~2013-04-15 23:20 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <1360823521-32306-1-git-send-email-scottwood@freescale.com>
[not found] ` <1360823521-32306-3-git-send-email-scottwood@freescale.com>
2013-03-21 8:30 ` [Qemu-devel] [RFC ppc-next PATCH 2/6] kvm: hw/kvm is not x86-specific Alexander Graf
[not found] ` <1360823521-32306-4-git-send-email-scottwood@freescale.com>
2013-03-21 8:31 ` [Qemu-devel] [RFC ppc-next PATCH 3/6] memory: add memory_region_to_address() Alexander Graf
2013-03-21 10:53 ` Peter Maydell
2013-03-21 10:59 ` Alexander Graf
2013-03-21 11:01 ` Peter Maydell
2013-03-21 11:05 ` Alexander Graf
2013-03-21 11:09 ` Peter Maydell
2013-03-21 11:14 ` Alexander Graf
2013-03-21 11:22 ` Peter Maydell
2013-03-21 11:29 ` Alexander Graf
2013-03-21 11:32 ` Peter Maydell
2013-03-21 11:38 ` Alexander Graf
2013-03-21 11:44 ` Peter Maydell
2013-03-21 11:49 ` Alexander Graf
2013-03-21 11:51 ` [Qemu-devel] [Qemu-ppc] " Alexander Graf
2013-03-21 22:43 ` Scott Wood
2013-03-22 13:08 ` Peter Maydell
2013-03-22 22:05 ` Scott Wood
2013-03-23 11:24 ` Peter Maydell
2013-03-25 18:23 ` Scott Wood
2013-03-21 11:53 ` [Qemu-devel] " Peter Maydell
[not found] ` <1360823521-32306-6-git-send-email-scottwood@freescale.com>
2013-03-21 8:34 ` [Qemu-devel] [RFC ppc-next PATCH 5/6] kvm: export result of irqchip config check Alexander Graf
2013-03-21 8:45 ` Jan Kiszka
2013-03-21 8:50 ` Alexander Graf
[not found] ` <1360823521-32306-7-git-send-email-scottwood@freescale.com>
2013-03-21 8:41 ` [Qemu-devel] [RFC ppc-next PATCH 6/6] kvm/openpic: in-kernel mpic support Alexander Graf
2013-03-21 20:50 ` Scott Wood
2013-03-21 21:29 ` Alexander Graf
2013-03-21 21:59 ` Scott Wood
2013-03-21 23:45 ` Alexander Graf
2013-03-22 22:51 ` Scott Wood
2013-04-15 23:19 ` [Qemu-devel] [RFC PATCH v2 0/6] kvm/openpic: in-kernel irqchip Scott Wood
2013-04-15 23:19 ` [Qemu-devel] [RFC PATCH v2 1/6] kvm: update linux-headers Scott Wood
2013-04-15 23:19 ` [Qemu-devel] [RFC PATCH v2 2/6] kvm: use hw/kvm/Makefile.objs consistently for all relevant architectures Scott Wood
2013-04-15 23:19 ` [Qemu-devel] [RFC PATCH v2 3/6] memory: add memory_region_to_address() Scott Wood
2013-04-16 8:25 ` Peter Maydell
2013-04-17 0:10 ` Scott Wood
2013-04-17 9:14 ` Peter Maydell
2013-04-15 23:19 ` Scott Wood [this message]
2013-04-15 23:19 ` [Qemu-devel] [RFC PATCH v2 5/6] PPC: e500: factor out mpic init code Scott Wood
2013-04-15 23:19 ` [Qemu-devel] [RFC PATCH v2 6/6] kvm/openpic: in-kernel mpic support Scott Wood
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1366067974-5413-5-git-send-email-scottwood@freescale.com \
--to=scottwood@freescale.com \
--cc=agraf@suse.de \
--cc=qemu-devel@nongnu.org \
--cc=qemu-ppc@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).