qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Alexander Graf <agraf@suse.de>
To: qemu-ppc@nongnu.org
Cc: Blue Swirl <blauwirbel@gmail.com>,
	Scott Wood <scottwood@freescale.com>,
	qemu-devel@nongnu.org, Aurelien Jarno <aurelien@aurel32.net>
Subject: [Qemu-devel] [PATCH 04/32] openpic: factor out some common defines into openpic.h
Date: Sun, 30 Jun 2013 03:44:41 +0200	[thread overview]
Message-ID: <1372556709-23868-5-git-send-email-agraf@suse.de> (raw)
In-Reply-To: <1372556709-23868-1-git-send-email-agraf@suse.de>

From: Scott Wood <scottwood@freescale.com>

...for use by the KVM in-kernel irqchip stub.

Signed-off-by: Scott Wood <scottwood@freescale.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
 hw/intc/openpic.c        | 40 ++++++++++++++++++----------------------
 include/hw/ppc/openpic.h | 11 +++++++++++
 2 files changed, 29 insertions(+), 22 deletions(-)

diff --git a/hw/intc/openpic.c b/hw/intc/openpic.c
index c788714..ae42149 100644
--- a/hw/intc/openpic.c
+++ b/hw/intc/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/include/hw/ppc/openpic.h b/include/hw/ppc/openpic.h
index 9dcaf0e..d873bb6 100644
--- a/include/hw/ppc/openpic.h
+++ b/include/hw/ppc/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.8.1.4

  parent reply	other threads:[~2013-06-30  1:45 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-06-30  1:44 [Qemu-devel] [PULL 00/32] ppc patch queue 2013-06-30 Alexander Graf
2013-06-30  1:44 ` [Qemu-devel] [PATCH 01/32] KVM: Don't assume that mpstate exists with in-kernel PIC always Alexander Graf
2013-06-30  1:44 ` [Qemu-devel] [PATCH 02/32] KVM: Export kvm_init_irq_routing Alexander Graf
2013-06-30  1:44 ` [Qemu-devel] [PATCH 03/32] KVM: MSI: Swap payload to native endianness Alexander Graf
2013-06-30  1:44 ` Alexander Graf [this message]
2013-06-30  1:44 ` [Qemu-devel] [PATCH 05/32] PPC: e500: factor out mpic init code Alexander Graf
2013-06-30  1:44 ` [Qemu-devel] [PATCH 06/32] KVM: PIC: Only commit irq routing when necessary Alexander Graf
2013-06-30  1:44 ` [Qemu-devel] [PATCH 07/32] PPC: Add non-kvm stub file Alexander Graf
2013-06-30  1:44 ` [Qemu-devel] [PATCH 08/32] kvm/openpic: in-kernel mpic support Alexander Graf
2013-06-30  6:13   ` Andreas Färber
2013-06-30 23:01     ` Alexander Graf
2013-06-30 23:18       ` Andreas Färber
2013-07-01 11:17         ` Andreas Färber
2013-06-30  1:44 ` [Qemu-devel] [PATCH 09/32] intc/openpic: QOM'ify Alexander Graf
2013-06-30  1:44 ` [Qemu-devel] [PATCH 10/32] intc/openpic: Convert to QOM realize Alexander Graf
2013-06-30  1:44 ` [Qemu-devel] [PATCH 11/32] intc/openpic_kvm: Fix QOM and build issues Alexander Graf
2013-06-30  1:44 ` [Qemu-devel] [PATCH 12/32] mpc8544_guts: Fix MemoryRegion name Alexander Graf
2013-06-30  1:44 ` [Qemu-devel] [PATCH 13/32] mpc8544_guts: QOM'ify Alexander Graf
2013-06-30  1:44 ` [Qemu-devel] [PATCH 14/32] mpc8544_guts: Turn qdev initfn into instance_init Alexander Graf
2013-06-30  1:44 ` [Qemu-devel] [PATCH 15/32] target-ppc: Drop redundant flags assignments from CPU families Alexander Graf
2013-06-30  1:44 ` [Qemu-devel] [PATCH 16/32] ppc: do not register IABR SPR twice for 603e Alexander Graf
2013-06-30  1:44 ` [Qemu-devel] [PATCH 17/32] target-ppc: Change default machine for 64-bit Alexander Graf
2013-06-30  1:44 ` [Qemu-devel] [PATCH 18/32] spapr-rtas: add CPU argument to RTAS calls Alexander Graf
2013-06-30  1:44 ` [Qemu-devel] [PATCH 19/32] pseries: Fix compiler warning (conversion of pointer to integral value) Alexander Graf
2013-06-30  1:44 ` [Qemu-devel] [PATCH 20/32] target-ppc kvm: save cr register Alexander Graf
2013-06-30  1:44 ` [Qemu-devel] [PATCH 21/32] pseries: Update MAINTAINERS information Alexander Graf
2013-06-30  1:44 ` [Qemu-devel] [PATCH 22/32] Graphics: Switch to 800x600x32 as default mode Alexander Graf
2013-06-30  1:45 ` [Qemu-devel] [PATCH 23/32] booke_ppc: limit booke timer to max when timeout overflow Alexander Graf
2013-06-30  1:45 ` [Qemu-devel] [PATCH 24/32] target-ppc: Introduce unrealizefn for PowerPCCPU Alexander Graf
2013-06-30  1:45 ` [Qemu-devel] [PATCH 25/32] PPC: Add dump_mmu() for 6xx Alexander Graf
2013-06-30  1:45 ` [Qemu-devel] [PATCH 26/32] PPC: Fix GDB read on code area for PPC6xx Alexander Graf
2013-06-30  1:45 ` [Qemu-devel] [PATCH 27/32] PPC: Introduce an alias cache for faster lookups Alexander Graf
2013-06-30  6:25   ` Andreas Färber
2013-06-30 23:08     ` Alexander Graf
2013-06-30  1:45 ` [Qemu-devel] [PATCH 28/32] PPC: Add clock-frequency export for Mac machines Alexander Graf
2013-06-30  1:45 ` [Qemu-devel] [PATCH 29/32] PPC: Newworld: Add uninorth token register Alexander Graf
2013-06-30  1:45 ` [Qemu-devel] [PATCH 30/32] PPC: Newworld: Add second uninorth control register set Alexander Graf
2013-06-30  1:45 ` [Qemu-devel] [PATCH 31/32] mac-io: Add escc-legacy memory alias region Alexander Graf
2013-06-30  1:45 ` [Qemu-devel] [PATCH 32/32] PPC: Ignore writes to L2CR Alexander Graf
2013-09-06 12:54   ` Julio Guerra
2013-09-25 13:00     ` Alexander Graf
2013-09-25 13:40       ` Julio Guerra
2013-06-30 23:14 ` [Qemu-devel] [Qemu-ppc] [PULL 00/32] ppc patch queue 2013-06-30 Alexander Graf

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=1372556709-23868-5-git-send-email-agraf@suse.de \
    --to=agraf@suse.de \
    --cc=aurelien@aurel32.net \
    --cc=blauwirbel@gmail.com \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-ppc@nongnu.org \
    --cc=scottwood@freescale.com \
    /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).