Commit 007e8f51 authored by David Gibson's avatar David Gibson Committed by Paul Mackerras

[PATCH] powerpc: Move xics.[ch] into platforms/pseries

This patch moves the XICS interrupt controller code into the
platforms/pseries directory, since it only appears on pSeries
machines.  If it ever appears on some other machine we can move it to
sysdev, although xics.c itself will need a bunch of changes in that
case to remove pSeries specific assumptions.
Signed-off-by: default avatarDavid Gibson <dwg@au1.ibm.com>
Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
parent 22b28032
...@@ -2,3 +2,4 @@ obj-y := pci.o lpar.o hvCall.o nvram.o reconfig.o \ ...@@ -2,3 +2,4 @@ obj-y := pci.o lpar.o hvCall.o nvram.o reconfig.o \
setup.o iommu.o rtas-fw.o ras.o setup.o iommu.o rtas-fw.o ras.o
obj-$(CONFIG_SMP) += smp.o obj-$(CONFIG_SMP) += smp.o
obj-$(CONFIG_IBMVIO) += vio.o obj-$(CONFIG_IBMVIO) += vio.o
obj-$(CONFIG_XICS) += xics.o
...@@ -59,7 +59,7 @@ ...@@ -59,7 +59,7 @@
#include <asm/time.h> #include <asm/time.h>
#include <asm/nvram.h> #include <asm/nvram.h>
#include <asm/plpar_wrappers.h> #include <asm/plpar_wrappers.h>
#include <asm/xics.h> #include "xics.h"
#include <asm/firmware.h> #include <asm/firmware.h>
#include <asm/pmc.h> #include <asm/pmc.h>
#include <asm/mpic.h> #include <asm/mpic.h>
......
...@@ -39,7 +39,7 @@ ...@@ -39,7 +39,7 @@
#include <asm/paca.h> #include <asm/paca.h>
#include <asm/time.h> #include <asm/time.h>
#include <asm/machdep.h> #include <asm/machdep.h>
#include <asm/xics.h> #include "xics.h"
#include <asm/cputable.h> #include <asm/cputable.h>
#include <asm/firmware.h> #include <asm/firmware.h>
#include <asm/system.h> #include <asm/system.h>
......
/* /*
* arch/ppc64/kernel/xics.c * arch/powerpc/platforms/pseries/xics.c
* *
* Copyright 2000 IBM Corporation. * Copyright 2000 IBM Corporation.
* *
...@@ -25,11 +25,12 @@ ...@@ -25,11 +25,12 @@
#include <asm/pgtable.h> #include <asm/pgtable.h>
#include <asm/smp.h> #include <asm/smp.h>
#include <asm/rtas.h> #include <asm/rtas.h>
#include <asm/xics.h>
#include <asm/hvcall.h> #include <asm/hvcall.h>
#include <asm/machdep.h> #include <asm/machdep.h>
#include <asm/i8259.h> #include <asm/i8259.h>
#include "xics.h"
static unsigned int xics_startup(unsigned int irq); static unsigned int xics_startup(unsigned int irq);
static void xics_enable_irq(unsigned int irq); static void xics_enable_irq(unsigned int irq);
static void xics_disable_irq(unsigned int irq); static void xics_disable_irq(unsigned int irq);
...@@ -61,7 +62,7 @@ static struct radix_tree_root irq_map = RADIX_TREE_INIT(GFP_ATOMIC); ...@@ -61,7 +62,7 @@ static struct radix_tree_root irq_map = RADIX_TREE_INIT(GFP_ATOMIC);
/* Want a priority other than 0. Various HW issues require this. */ /* Want a priority other than 0. Various HW issues require this. */
#define DEFAULT_PRIORITY 5 #define DEFAULT_PRIORITY 5
/* /*
* Mark IPIs as higher priority so we can take them inside interrupts that * Mark IPIs as higher priority so we can take them inside interrupts that
* arent marked SA_INTERRUPT * arent marked SA_INTERRUPT
*/ */
...@@ -168,11 +169,11 @@ static inline long plpar_xirr(unsigned long *xirr_ret) ...@@ -168,11 +169,11 @@ static inline long plpar_xirr(unsigned long *xirr_ret)
static int pSeriesLP_xirr_info_get(int n_cpu) static int pSeriesLP_xirr_info_get(int n_cpu)
{ {
unsigned long lpar_rc; unsigned long lpar_rc;
unsigned long return_value; unsigned long return_value;
lpar_rc = plpar_xirr(&return_value); lpar_rc = plpar_xirr(&return_value);
if (lpar_rc != H_Success) if (lpar_rc != H_Success)
panic(" bad return code xirr - rc = %lx \n", lpar_rc); panic(" bad return code xirr - rc = %lx \n", lpar_rc);
return (int)return_value; return (int)return_value;
} }
...@@ -184,7 +185,7 @@ static void pSeriesLP_xirr_info_set(int n_cpu, int value) ...@@ -184,7 +185,7 @@ static void pSeriesLP_xirr_info_set(int n_cpu, int value)
lpar_rc = plpar_eoi(val64); lpar_rc = plpar_eoi(val64);
if (lpar_rc != H_Success) if (lpar_rc != H_Success)
panic("bad return code EOI - rc = %ld, value=%lx\n", lpar_rc, panic("bad return code EOI - rc = %ld, value=%lx\n", lpar_rc,
val64); val64);
} }
void pSeriesLP_cppr_info(int n_cpu, u8 value) void pSeriesLP_cppr_info(int n_cpu, u8 value)
...@@ -193,7 +194,7 @@ void pSeriesLP_cppr_info(int n_cpu, u8 value) ...@@ -193,7 +194,7 @@ void pSeriesLP_cppr_info(int n_cpu, u8 value)
lpar_rc = plpar_cppr(value); lpar_rc = plpar_cppr(value);
if (lpar_rc != H_Success) if (lpar_rc != H_Success)
panic("bad return code cppr - rc = %lx\n", lpar_rc); panic("bad return code cppr - rc = %lx\n", lpar_rc);
} }
static void pSeriesLP_qirr_info(int n_cpu , u8 value) static void pSeriesLP_qirr_info(int n_cpu , u8 value)
...@@ -202,7 +203,7 @@ static void pSeriesLP_qirr_info(int n_cpu , u8 value) ...@@ -202,7 +203,7 @@ static void pSeriesLP_qirr_info(int n_cpu , u8 value)
lpar_rc = plpar_ipi(get_hard_smp_processor_id(n_cpu), value); lpar_rc = plpar_ipi(get_hard_smp_processor_id(n_cpu), value);
if (lpar_rc != H_Success) if (lpar_rc != H_Success)
panic("bad return code qirr - rc = %lx\n", lpar_rc); panic("bad return code qirr - rc = %lx\n", lpar_rc);
} }
xics_ops pSeriesLP_ops = { xics_ops pSeriesLP_ops = {
...@@ -461,7 +462,7 @@ void xics_init_IRQ(void) ...@@ -461,7 +462,7 @@ void xics_init_IRQ(void)
struct xics_interrupt_node { struct xics_interrupt_node {
unsigned long addr; unsigned long addr;
unsigned long size; unsigned long size;
} intnodes[NR_CPUS]; } intnodes[NR_CPUS];
ppc64_boot_msg(0x20, "XICS Init"); ppc64_boot_msg(0x20, "XICS Init");
...@@ -486,7 +487,7 @@ void xics_init_IRQ(void) ...@@ -486,7 +487,7 @@ void xics_init_IRQ(void)
ireg = (uint *)get_property(np, "reg", &ilen); ireg = (uint *)get_property(np, "reg", &ilen);
if (!ireg) if (!ireg)
panic("xics_init_IRQ: can't find interrupt reg property"); panic("xics_init_IRQ: can't find interrupt reg property");
while (ilen) { while (ilen) {
intnodes[indx].addr = (unsigned long)*ireg++ << 32; intnodes[indx].addr = (unsigned long)*ireg++ << 32;
ilen -= sizeof(uint); ilen -= sizeof(uint);
...@@ -554,7 +555,7 @@ void xics_init_IRQ(void) ...@@ -554,7 +555,7 @@ void xics_init_IRQ(void)
continue; continue;
hard_id = get_hard_smp_processor_id(i); hard_id = get_hard_smp_processor_id(i);
xics_per_cpu[i] = ioremap(intnodes[hard_id].addr, xics_per_cpu[i] = ioremap(intnodes[hard_id].addr,
intnodes[hard_id].size); intnodes[hard_id].size);
} }
#else #else
......
/* /*
* arch/ppc64/kernel/xics.h * arch/powerpc/platforms/pseries/xics.h
* *
* Copyright 2000 IBM Corporation. * Copyright 2000 IBM Corporation.
* *
...@@ -9,8 +9,8 @@ ...@@ -9,8 +9,8 @@
* 2 of the License, or (at your option) any later version. * 2 of the License, or (at your option) any later version.
*/ */
#ifndef _PPC64_KERNEL_XICS_H #ifndef _POWERPC_KERNEL_XICS_H
#define _PPC64_KERNEL_XICS_H #define _POWERPC_KERNEL_XICS_H
#include <linux/cache.h> #include <linux/cache.h>
...@@ -31,4 +31,4 @@ struct xics_ipi_struct { ...@@ -31,4 +31,4 @@ struct xics_ipi_struct {
extern struct xics_ipi_struct xics_ipi_message[NR_CPUS] __cacheline_aligned; extern struct xics_ipi_struct xics_ipi_message[NR_CPUS] __cacheline_aligned;
#endif /* _PPC64_KERNEL_XICS_H */ #endif /* _POWERPC_KERNEL_XICS_H */
...@@ -53,8 +53,6 @@ obj-$(CONFIG_BOOTX_TEXT) += btext.o ...@@ -53,8 +53,6 @@ obj-$(CONFIG_BOOTX_TEXT) += btext.o
endif endif
obj-$(CONFIG_HVCS) += hvcserver.o obj-$(CONFIG_HVCS) += hvcserver.o
obj-$(CONFIG_XICS) += xics.o
obj-$(CONFIG_PPC_PMAC) += udbg_scc.o obj-$(CONFIG_PPC_PMAC) += udbg_scc.o
obj-$(CONFIG_PPC_MAPLE) += maple_setup.o maple_pci.o maple_time.o \ obj-$(CONFIG_PPC_MAPLE) += maple_setup.o maple_pci.o maple_time.o \
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment