linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
From: Geoff Levand <geoffrey.levand@am.sony.com>
To: paulus@samba.org
Cc: linuxppc-dev@ozlabs.org
Subject: [patch 08/33] PS3: Move chip mask defs up
Date: Fri, 15 Jun 2007 14:19:18 -0700	[thread overview]
Message-ID: <46730256.4060802@am.sony.com> (raw)
In-Reply-To: <20070615204749.629571012@am.sony.com>>

This just moves the definitions of the PS3 chip_mask routines up
above the irq setup routines.  This change is needed for the
kexec updates that follow.  Also adds some inline documentation
to the routines.

Signed-off-by: Geoff Levand <geoffrey.levand@am.sony.com>
---
 arch/powerpc/platforms/ps3/interrupt.c |  147 +++++++++++++++++++--------------
 1 file changed, 86 insertions(+), 61 deletions(-)

--- a/arch/powerpc/platforms/ps3/interrupt.c
+++ b/arch/powerpc/platforms/ps3/interrupt.c
@@ -91,6 +91,92 @@ struct ps3_private {
 static DEFINE_PER_CPU(struct ps3_private, ps3_private);
 
 /**
+ * ps3_chip_mask - Set an interrupt mask bit in ps3_bmp.
+ * @virq: The assigned Linux virq.
+ *
+ * Sets ps3_bmp.mask and calls lv1_did_update_interrupt_mask().
+ */
+
+static void ps3_chip_mask(unsigned int virq)
+{
+	struct ps3_private *pd = get_irq_chip_data(virq);
+	u64 bit = 0x8000000000000000UL >> virq;
+	u64 *p = &pd->bmp.mask;
+	u64 old;
+	unsigned long flags;
+
+	pr_debug("%s:%d: cpu %u, virq %d\n", __func__, __LINE__, pd->cpu, virq);
+
+	local_irq_save(flags);
+	asm volatile(
+		     "1:	ldarx %0,0,%3\n"
+		     "andc	%0,%0,%2\n"
+		     "stdcx.	%0,0,%3\n"
+		     "bne-	1b"
+		     : "=&r" (old), "+m" (*p)
+		     : "r" (bit), "r" (p)
+		     : "cc" );
+
+	lv1_did_update_interrupt_mask(pd->node, pd->cpu);
+	local_irq_restore(flags);
+}
+
+/**
+ * ps3_chip_unmask - Clear an interrupt mask bit in ps3_bmp.
+ * @virq: The assigned Linux virq.
+ *
+ * Clears ps3_bmp.mask and calls lv1_did_update_interrupt_mask().
+ */
+
+static void ps3_chip_unmask(unsigned int virq)
+{
+	struct ps3_private *pd = get_irq_chip_data(virq);
+	u64 bit = 0x8000000000000000UL >> virq;
+	u64 *p = &pd->bmp.mask;
+	u64 old;
+	unsigned long flags;
+
+	pr_debug("%s:%d: cpu %u, virq %d\n", __func__, __LINE__, pd->cpu, virq);
+
+	local_irq_save(flags);
+	asm volatile(
+		     "1:	ldarx %0,0,%3\n"
+		     "or	%0,%0,%2\n"
+		     "stdcx.	%0,0,%3\n"
+		     "bne-	1b"
+		     : "=&r" (old), "+m" (*p)
+		     : "r" (bit), "r" (p)
+		     : "cc" );
+
+	lv1_did_update_interrupt_mask(pd->node, pd->cpu);
+	local_irq_restore(flags);
+}
+
+/**
+ * ps3_chip_eoi - HV end-of-interrupt.
+ * @virq: The assigned Linux virq.
+ *
+ * Calls lv1_end_of_interrupt_ext().
+ */
+
+static void ps3_chip_eoi(unsigned int virq)
+{
+	const struct ps3_private *pd = get_irq_chip_data(virq);
+	lv1_end_of_interrupt_ext(pd->node, pd->cpu, virq);
+}
+
+/**
+ * ps3_irq_chip - Represents the ps3_bmp as a Linux struct irq_chip.
+ */
+
+static struct irq_chip ps3_irq_chip = {
+	.typename = "ps3",
+	.mask = ps3_chip_mask,
+	.unmask = ps3_chip_unmask,
+	.eoi = ps3_chip_eoi,
+};
+
+/**
  * ps3_virq_setup - virq related setup.
  * @cpu: enum ps3_cpu_binding indicating the cpu the interrupt should be
  * serviced on.
@@ -565,67 +651,6 @@ static void __maybe_unused _dump_mask(st
 static void dump_bmp(struct ps3_private* pd) {};
 #endif /* defined(DEBUG) */
 
-static void ps3_chip_mask(unsigned int virq)
-{
-	struct ps3_private *pd = get_irq_chip_data(virq);
-	u64 bit = 0x8000000000000000UL >> virq;
-	u64 *p = &pd->bmp.mask;
-	u64 old;
-	unsigned long flags;
-
-	pr_debug("%s:%d: cpu %u, virq %d\n", __func__, __LINE__, pd->cpu, virq);
-
-	local_irq_save(flags);
-	asm volatile(
-		     "1:	ldarx %0,0,%3\n"
-		     "andc	%0,%0,%2\n"
-		     "stdcx.	%0,0,%3\n"
-		     "bne-	1b"
-		     : "=&r" (old), "+m" (*p)
-		     : "r" (bit), "r" (p)
-		     : "cc" );
-
-	lv1_did_update_interrupt_mask(pd->node, pd->cpu);
-	local_irq_restore(flags);
-}
-
-static void ps3_chip_unmask(unsigned int virq)
-{
-	struct ps3_private *pd = get_irq_chip_data(virq);
-	u64 bit = 0x8000000000000000UL >> virq;
-	u64 *p = &pd->bmp.mask;
-	u64 old;
-	unsigned long flags;
-
-	pr_debug("%s:%d: cpu %u, virq %d\n", __func__, __LINE__, pd->cpu, virq);
-
-	local_irq_save(flags);
-	asm volatile(
-		     "1:	ldarx %0,0,%3\n"
-		     "or	%0,%0,%2\n"
-		     "stdcx.	%0,0,%3\n"
-		     "bne-	1b"
-		     : "=&r" (old), "+m" (*p)
-		     : "r" (bit), "r" (p)
-		     : "cc" );
-
-	lv1_did_update_interrupt_mask(pd->node, pd->cpu);
-	local_irq_restore(flags);
-}
-
-static void ps3_chip_eoi(unsigned int virq)
-{
-	const struct ps3_private *pd = get_irq_chip_data(virq);
-	lv1_end_of_interrupt_ext(pd->node, pd->cpu, virq);
-}
-
-static struct irq_chip irq_chip = {
-	.typename = "ps3",
-	.mask = ps3_chip_mask,
-	.unmask = ps3_chip_unmask,
-	.eoi = ps3_chip_eoi,
-};
-
 static void ps3_host_unmap(struct irq_host *h, unsigned int virq)
 {
 	set_irq_chip_data(virq, NULL);

-- 

  parent reply	other threads:[~2007-06-15 22:23 UTC|newest]

Thread overview: 55+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20070615204749.629571012@am.sony.com>
2007-06-15 21:17 ` [patch 01/33] Cell: Add spu shutdown method Geoff Levand
2007-06-15 21:17 ` [patch 02/33] PS3: Rename IPI symbols Geoff Levand
2007-06-15 21:18 ` [patch 03/33] PS3: Use __maybe_unused Geoff Levand
2007-06-15 21:18 ` [patch 04/33] PS3: Compare firmware version Geoff Levand
2007-06-15 21:18 ` [patch 05/33] PS3: Use ioremap_flags Geoff Levand
2007-06-15 21:19 ` [patch 06/33] PS3: Fix sparse warnings Geoff Levand
2007-06-15 21:19 ` [patch 07/33] PS3: Add support for HDMI RGB Full Range mode Geoff Levand
2007-06-15 21:19 ` Geoff Levand [this message]
2007-06-15 21:19 ` [patch 09/33] PS3: Simplify definition of DBG Geoff Levand
2007-06-15 21:19 ` [patch 10/33] PS3: Kexec support Geoff Levand
2007-06-15 21:52 ` [patch 11/33] PS3: System-bus rework Geoff Levand
2007-06-15 21:55 ` [patch 12/33] PS3: System-bus uevent Geoff Levand
2007-06-15 21:55 ` [patch 13/33] PS3: System-bus modinfo attribute Geoff Levand
2007-06-15 21:55 ` [patch 14/33] PS3: Repository probe cleanups Geoff Levand
2007-06-15 22:01 ` [patch 15/33] PS3: Vuart rework Geoff Levand
2007-06-15 22:03 ` [patch 16/33] PS3: System manager re-work Geoff Levand
2007-06-15 22:05 ` [patch 17/33] PS3: Rework AV settings driver Geoff Levand
2007-06-15 22:05 ` [patch 18/33] PS3: Frame buffer system-bus rework Geoff Levand
2007-06-19  6:47   ` Paul Mackerras
2007-06-19  7:09     ` Geert Uytterhoeven
2007-06-21 22:18     ` Levand, Geoffrey
2007-06-15 22:05 ` [patch 19/33] PS3: Device registration routines Geoff Levand
2007-06-15 22:06 ` [patch 20/33] PS3: Rename processor id symbols Geoff Levand
2007-06-15 22:06 ` [patch 21/33] PS3: Use clear_bit Geoff Levand
2007-06-15 23:43   ` Benjamin Herrenschmidt
2007-06-15 22:06 ` [patch 22/33] powerpc: Output params value in early_init_devtree Geoff Levand
2007-06-15 22:06 ` [patch 23/33] powerpc: Localize mmu_off Geoff Levand
2007-06-18 14:08   ` Milton Miller
2007-06-18 22:47     ` Geoff Levand
2007-06-19  6:46   ` Paul Mackerras
2007-06-23 19:24     ` Geoff Levand
2007-06-15 22:06 ` [patch 24/33] powerpc: Correct __secondary_hold comment Geoff Levand
2007-06-18 14:08   ` Milton Miller
2007-06-18 16:56     ` Segher Boessenkool
2007-06-18 22:47     ` Geoff Levand
2007-06-15 22:06 ` [patch 25/33] Powerpc: Add signed types to bootwrapper Geoff Levand
2007-06-15 22:06 ` [patch 26/33] Powerpc: Add u64 printf " Geoff Levand
2007-06-15 22:06 ` [patch 27/33] Powerpc: Fix constantness of bootwrapper arg Geoff Levand
2007-06-15 22:06 ` [patch 28/33] powerpc: Bootwrapper global scope kernel_entry_t Geoff Levand
2007-06-15 22:06 ` [patch 29/33] PS3: Device tree source Geoff Levand
2007-06-15 23:48   ` Segher Boessenkool
2007-06-15 22:07 ` [patch 30/33] PS3: Bootwrapper support Geoff Levand
2007-06-18 14:20   ` Milton Miller
2007-06-18 22:47     ` Geoff Levand
2007-06-18 22:55     ` Mark A. Greer
2007-06-19  0:01       ` Geoff Levand
2007-06-19  5:58         ` Mark A. Greer
2007-06-19  6:44         ` Paul Mackerras
2007-06-21 22:24           ` Levand, Geoffrey
2007-06-18 22:47   ` [patch 30/33 v2] " Geoff Levand
2007-06-23 19:16   ` [patch 30/33 v3] " Geoff Levand
2007-07-03 23:07     ` [patch v4] " Geoff Levand
2007-06-15 22:07 ` [patch 31/33] PS3: Select MEMORY_HOTPLUG Geoff Levand
2007-06-15 22:07 ` [patch 32/33] PS3: Fix more sparse warnings Geoff Levand
2007-06-15 22:07 ` [patch 33/33] PS3: Update ps3_defconfig Geoff Levand

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=46730256.4060802@am.sony.com \
    --to=geoffrey.levand@am.sony.com \
    --cc=linuxppc-dev@ozlabs.org \
    --cc=paulus@samba.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).