提交 543a07b1 编写于 作者: D Dmitry Eremin-Solenikov 提交者: Kumar Gala

powerpc/85xx: separate cpm2 pic init

Separate handling of CPM2 PIC initialization to mpc85xx_cpm2_pic_init()
function.
Signed-off-by: NDmitry Eremin-Solenikov <dbaryshkov@gmail.com>
Signed-off-by: NKumar Gala <galak@kernel.crashing.org>
上级 5d713495
...@@ -3,6 +3,8 @@ ...@@ -3,6 +3,8 @@
# #
obj-$(CONFIG_SMP) += smp.o obj-$(CONFIG_SMP) += smp.o
obj-y += mpc85xx_common.o
obj-$(CONFIG_MPC8540_ADS) += mpc85xx_ads.o obj-$(CONFIG_MPC8540_ADS) += mpc85xx_ads.o
obj-$(CONFIG_MPC8560_ADS) += mpc85xx_ads.o obj-$(CONFIG_MPC8560_ADS) += mpc85xx_ads.o
obj-$(CONFIG_MPC85xx_CDS) += mpc85xx_cds.o obj-$(CONFIG_MPC85xx_CDS) += mpc85xx_cds.o
......
...@@ -35,6 +35,7 @@ ...@@ -35,6 +35,7 @@
#include <asm/cpm2.h> #include <asm/cpm2.h>
#include <sysdev/cpm2_pic.h> #include <sysdev/cpm2_pic.h>
#include "mpc85xx.h"
#define KSI8560_CPLD_HVR 0x04 /* Hardware Version Register */ #define KSI8560_CPLD_HVR 0x04 /* Hardware Version Register */
#define KSI8560_CPLD_PVR 0x08 /* PLD Version Register */ #define KSI8560_CPLD_PVR 0x08 /* PLD Version Register */
...@@ -54,25 +55,11 @@ static void machine_restart(char *cmd) ...@@ -54,25 +55,11 @@ static void machine_restart(char *cmd)
for (;;); for (;;);
} }
static void cpm2_cascade(unsigned int irq, struct irq_desc *desc)
{
struct irq_chip *chip = irq_desc_get_chip(desc);
int cascade_irq;
while ((cascade_irq = cpm2_get_irq()) >= 0)
generic_handle_irq(cascade_irq);
chip->irq_eoi(&desc->irq_data);
}
static void __init ksi8560_pic_init(void) static void __init ksi8560_pic_init(void)
{ {
struct mpic *mpic; struct mpic *mpic;
struct resource r; struct resource r;
struct device_node *np; struct device_node *np;
#ifdef CONFIG_CPM2
int irq;
#endif
np = of_find_node_by_type(NULL, "open-pic"); np = of_find_node_by_type(NULL, "open-pic");
...@@ -95,19 +82,7 @@ static void __init ksi8560_pic_init(void) ...@@ -95,19 +82,7 @@ static void __init ksi8560_pic_init(void)
mpic_init(mpic); mpic_init(mpic);
#ifdef CONFIG_CPM2 mpc85xx_cpm2_pic_init();
/* Setup CPM2 PIC */
np = of_find_compatible_node(NULL, NULL, "fsl,cpm2-pic");
if (np == NULL) {
printk(KERN_ERR "PIC init: can not find fsl,cpm2-pic node\n");
return;
}
irq = irq_of_parse_and_map(np, 0);
cpm2_pic_init(np);
of_node_put(np);
irq_set_chained_handler(irq, cpm2_cascade);
#endif
} }
#ifdef CONFIG_CPM2 #ifdef CONFIG_CPM2
......
...@@ -32,6 +32,8 @@ ...@@ -32,6 +32,8 @@
#include <sysdev/fsl_soc.h> #include <sysdev/fsl_soc.h>
#include <sysdev/fsl_pci.h> #include <sysdev/fsl_pci.h>
#include "mpc85xx.h"
void __init mpc8536_ds_pic_init(void) void __init mpc8536_ds_pic_init(void)
{ {
struct mpic *mpic; struct mpic *mpic;
......
#ifndef MPC85xx_H
#define MPC85xx_H
#ifdef CONFIG_CPM2
extern void mpc85xx_cpm2_pic_init(void);
#else
static inline void __init mpc85xx_cpm2_pic_init(void) {}
#endif /* CONFIG_CPM2 */
#endif
...@@ -35,6 +35,8 @@ ...@@ -35,6 +35,8 @@
#include <sysdev/cpm2_pic.h> #include <sysdev/cpm2_pic.h>
#endif #endif
#include "mpc85xx.h"
#ifdef CONFIG_PCI #ifdef CONFIG_PCI
static int mpc85xx_exclude_device(struct pci_controller *hose, static int mpc85xx_exclude_device(struct pci_controller *hose,
u_char bus, u_char devfn) u_char bus, u_char devfn)
...@@ -46,29 +48,11 @@ static int mpc85xx_exclude_device(struct pci_controller *hose, ...@@ -46,29 +48,11 @@ static int mpc85xx_exclude_device(struct pci_controller *hose,
} }
#endif /* CONFIG_PCI */ #endif /* CONFIG_PCI */
#ifdef CONFIG_CPM2
static void cpm2_cascade(unsigned int irq, struct irq_desc *desc)
{
struct irq_chip *chip = irq_desc_get_chip(desc);
int cascade_irq;
while ((cascade_irq = cpm2_get_irq()) >= 0)
generic_handle_irq(cascade_irq);
chip->irq_eoi(&desc->irq_data);
}
#endif /* CONFIG_CPM2 */
static void __init mpc85xx_ads_pic_init(void) static void __init mpc85xx_ads_pic_init(void)
{ {
struct mpic *mpic; struct mpic *mpic;
struct resource r; struct resource r;
struct device_node *np = NULL; struct device_node *np = NULL;
#ifdef CONFIG_CPM2
int irq;
#endif
np = of_find_node_by_type(np, "open-pic"); np = of_find_node_by_type(np, "open-pic");
if (!np) { if (!np) {
...@@ -90,19 +74,7 @@ static void __init mpc85xx_ads_pic_init(void) ...@@ -90,19 +74,7 @@ static void __init mpc85xx_ads_pic_init(void)
mpic_init(mpic); mpic_init(mpic);
#ifdef CONFIG_CPM2 mpc85xx_cpm2_pic_init();
/* Setup CPM2 PIC */
np = of_find_compatible_node(NULL, NULL, "fsl,cpm2-pic");
if (np == NULL) {
printk(KERN_ERR "PIC init: can not find fsl,cpm2-pic node\n");
return;
}
irq = irq_of_parse_and_map(np, 0);
cpm2_pic_init(np);
of_node_put(np);
irq_set_chained_handler(irq, cpm2_cascade);
#endif
} }
/* /*
......
...@@ -46,6 +46,8 @@ ...@@ -46,6 +46,8 @@
#include <sysdev/fsl_soc.h> #include <sysdev/fsl_soc.h>
#include <sysdev/fsl_pci.h> #include <sysdev/fsl_pci.h>
#include "mpc85xx.h"
/* CADMUS info */ /* CADMUS info */
/* xxx - galak, move into device tree */ /* xxx - galak, move into device tree */
#define CADMUS_BASE (0xf8004000) #define CADMUS_BASE (0xf8004000)
......
/*
* Routines common to most mpc85xx-based boards.
*
* This is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/
#include <linux/of_platform.h>
#include <sysdev/cpm2_pic.h>
#include "mpc85xx.h"
#ifdef CONFIG_CPM2
static void cpm2_cascade(unsigned int irq, struct irq_desc *desc)
{
struct irq_chip *chip = irq_desc_get_chip(desc);
int cascade_irq;
while ((cascade_irq = cpm2_get_irq()) >= 0)
generic_handle_irq(cascade_irq);
chip->irq_eoi(&desc->irq_data);
}
void __init mpc85xx_cpm2_pic_init(void)
{
struct device_node *np;
int irq;
/* Setup CPM2 PIC */
np = of_find_compatible_node(NULL, NULL, "fsl,cpm2-pic");
if (np == NULL) {
printk(KERN_ERR "PIC init: can not find fsl,cpm2-pic node\n");
return;
}
irq = irq_of_parse_and_map(np, 0);
if (irq == NO_IRQ) {
of_node_put(np);
printk(KERN_ERR "PIC init: got no IRQ for cpm cascade\n");
return;
}
cpm2_pic_init(np);
of_node_put(np);
irq_set_chained_handler(irq, cpm2_cascade);
}
#endif
...@@ -36,6 +36,8 @@ ...@@ -36,6 +36,8 @@
#include <sysdev/fsl_soc.h> #include <sysdev/fsl_soc.h>
#include <sysdev/fsl_pci.h> #include <sysdev/fsl_pci.h>
#include "mpc85xx.h"
#undef DEBUG #undef DEBUG
#ifdef DEBUG #ifdef DEBUG
......
...@@ -52,6 +52,8 @@ ...@@ -52,6 +52,8 @@
#include <asm/mpic.h> #include <asm/mpic.h>
#include <asm/swiotlb.h> #include <asm/swiotlb.h>
#include "mpc85xx.h"
#undef DEBUG #undef DEBUG
#ifdef DEBUG #ifdef DEBUG
#define DBG(fmt...) udbg_printf(fmt) #define DBG(fmt...) udbg_printf(fmt)
......
...@@ -30,6 +30,8 @@ ...@@ -30,6 +30,8 @@
#include <sysdev/fsl_soc.h> #include <sysdev/fsl_soc.h>
#include <sysdev/fsl_pci.h> #include <sysdev/fsl_pci.h>
#include "mpc85xx.h"
#undef DEBUG #undef DEBUG
#ifdef DEBUG #ifdef DEBUG
......
...@@ -27,6 +27,8 @@ ...@@ -27,6 +27,8 @@
#include <sysdev/fsl_pci.h> #include <sysdev/fsl_pci.h>
#include <asm/fsl_guts.h> #include <asm/fsl_guts.h>
#include "mpc85xx.h"
#if defined(CONFIG_FB_FSL_DIU) || defined(CONFIG_FB_FSL_DIU_MODULE) #if defined(CONFIG_FB_FSL_DIU) || defined(CONFIG_FB_FSL_DIU_MODULE)
/* /*
......
...@@ -32,34 +32,18 @@ ...@@ -32,34 +32,18 @@
#include <sysdev/fsl_soc.h> #include <sysdev/fsl_soc.h>
#include <sysdev/fsl_pci.h> #include <sysdev/fsl_pci.h>
#include "mpc85xx.h"
#ifdef CONFIG_CPM2 #ifdef CONFIG_CPM2
#include <asm/cpm2.h> #include <asm/cpm2.h>
#include <sysdev/cpm2_pic.h> #include <sysdev/cpm2_pic.h>
#endif #endif
#ifdef CONFIG_CPM2
static void cpm2_cascade(unsigned int irq, struct irq_desc *desc)
{
struct irq_chip *chip = irq_desc_get_chip(desc);
int cascade_irq;
while ((cascade_irq = cpm2_get_irq()) >= 0)
generic_handle_irq(cascade_irq);
chip->irq_eoi(&desc->irq_data);
}
#endif /* CONFIG_CPM2 */
static void __init sbc8560_pic_init(void) static void __init sbc8560_pic_init(void)
{ {
struct mpic *mpic; struct mpic *mpic;
struct resource r; struct resource r;
struct device_node *np = NULL; struct device_node *np = NULL;
#ifdef CONFIG_CPM2
int irq;
#endif
np = of_find_node_by_type(np, "open-pic"); np = of_find_node_by_type(np, "open-pic");
if (!np) { if (!np) {
...@@ -81,19 +65,7 @@ static void __init sbc8560_pic_init(void) ...@@ -81,19 +65,7 @@ static void __init sbc8560_pic_init(void)
mpic_init(mpic); mpic_init(mpic);
#ifdef CONFIG_CPM2 mpc85xx_cpm2_pic_init();
/* Setup CPM2 PIC */
np = of_find_compatible_node(NULL, NULL, "fsl,cpm2-pic");
if (np == NULL) {
printk(KERN_ERR "PIC init: can not find fsl,cpm2-pic node\n");
return;
}
irq = irq_of_parse_and_map(np, 0);
cpm2_pic_init(np);
of_node_put(np);
irq_set_chained_handler(irq, cpm2_cascade);
#endif
} }
/* /*
......
...@@ -41,6 +41,7 @@ ...@@ -41,6 +41,7 @@
#include <sysdev/fsl_soc.h> #include <sysdev/fsl_soc.h>
#include <sysdev/fsl_pci.h> #include <sysdev/fsl_pci.h>
#include "mpc85xx.h"
#include "socrates_fpga_pic.h" #include "socrates_fpga_pic.h"
static void __init socrates_pic_init(void) static void __init socrates_pic_init(void)
......
...@@ -40,20 +40,10 @@ ...@@ -40,20 +40,10 @@
#include <sysdev/fsl_soc.h> #include <sysdev/fsl_soc.h>
#include <sysdev/fsl_pci.h> #include <sysdev/fsl_pci.h>
#include "mpc85xx.h"
#ifdef CONFIG_CPM2 #ifdef CONFIG_CPM2
#include <asm/cpm2.h> #include <asm/cpm2.h>
#include <sysdev/cpm2_pic.h>
static void cpm2_cascade(unsigned int irq, struct irq_desc *desc)
{
struct irq_chip *chip = irq_desc_get_chip(desc);
int cascade_irq;
while ((cascade_irq = cpm2_get_irq()) >= 0)
generic_handle_irq(cascade_irq);
chip->irq_eoi(&desc->irq_data);
}
#endif /* CONFIG_CPM2 */ #endif /* CONFIG_CPM2 */
static void __init stx_gp3_pic_init(void) static void __init stx_gp3_pic_init(void)
...@@ -61,9 +51,6 @@ static void __init stx_gp3_pic_init(void) ...@@ -61,9 +51,6 @@ static void __init stx_gp3_pic_init(void)
struct mpic *mpic; struct mpic *mpic;
struct resource r; struct resource r;
struct device_node *np; struct device_node *np;
#ifdef CONFIG_CPM2
int irq;
#endif
np = of_find_node_by_type(NULL, "open-pic"); np = of_find_node_by_type(NULL, "open-pic");
if (!np) { if (!np) {
...@@ -85,25 +72,7 @@ static void __init stx_gp3_pic_init(void) ...@@ -85,25 +72,7 @@ static void __init stx_gp3_pic_init(void)
mpic_init(mpic); mpic_init(mpic);
#ifdef CONFIG_CPM2 mpc85xx_cpm2_pic_init();
/* Setup CPM2 PIC */
np = of_find_compatible_node(NULL, NULL, "fsl,cpm2-pic");
if (np == NULL) {
printk(KERN_ERR "PIC init: can not find fsl,cpm2-pic node\n");
return;
}
irq = irq_of_parse_and_map(np, 0);
if (irq == NO_IRQ) {
of_node_put(np);
printk(KERN_ERR "PIC init: got no IRQ for cpm cascade\n");
return;
}
cpm2_pic_init(np);
of_node_put(np);
irq_set_chained_handler(irq, cpm2_cascade);
#endif
} }
/* /*
......
...@@ -38,20 +38,10 @@ ...@@ -38,20 +38,10 @@
#include <sysdev/fsl_soc.h> #include <sysdev/fsl_soc.h>
#include <sysdev/fsl_pci.h> #include <sysdev/fsl_pci.h>
#include "mpc85xx.h"
#ifdef CONFIG_CPM2 #ifdef CONFIG_CPM2
#include <asm/cpm2.h> #include <asm/cpm2.h>
#include <sysdev/cpm2_pic.h>
static void cpm2_cascade(unsigned int irq, struct irq_desc *desc)
{
struct irq_chip *chip = irq_desc_get_chip(desc);
int cascade_irq;
while ((cascade_irq = cpm2_get_irq()) >= 0)
generic_handle_irq(cascade_irq);
chip->irq_eoi(&desc->irq_data);
}
#endif /* CONFIG_CPM2 */ #endif /* CONFIG_CPM2 */
static void __init tqm85xx_pic_init(void) static void __init tqm85xx_pic_init(void)
...@@ -59,9 +49,6 @@ static void __init tqm85xx_pic_init(void) ...@@ -59,9 +49,6 @@ static void __init tqm85xx_pic_init(void)
struct mpic *mpic; struct mpic *mpic;
struct resource r; struct resource r;
struct device_node *np; struct device_node *np;
#ifdef CONFIG_CPM2
int irq;
#endif
np = of_find_node_by_type(NULL, "open-pic"); np = of_find_node_by_type(NULL, "open-pic");
if (!np) { if (!np) {
...@@ -83,25 +70,7 @@ static void __init tqm85xx_pic_init(void) ...@@ -83,25 +70,7 @@ static void __init tqm85xx_pic_init(void)
mpic_init(mpic); mpic_init(mpic);
#ifdef CONFIG_CPM2 mpc85xx_cpm2_pic_init();
/* Setup CPM2 PIC */
np = of_find_compatible_node(NULL, NULL, "fsl,cpm2-pic");
if (np == NULL) {
printk(KERN_ERR "PIC init: can not find fsl,cpm2-pic node\n");
return;
}
irq = irq_of_parse_and_map(np, 0);
if (irq == NO_IRQ) {
of_node_put(np);
printk(KERN_ERR "PIC init: got no IRQ for cpm cascade\n");
return;
}
cpm2_pic_init(np);
of_node_put(np);
irq_set_chained_handler(irq, cpm2_cascade);
#endif
} }
/* /*
......
...@@ -33,6 +33,8 @@ ...@@ -33,6 +33,8 @@
#include <sysdev/fsl_soc.h> #include <sysdev/fsl_soc.h>
#include <sysdev/fsl_pci.h> #include <sysdev/fsl_pci.h>
#include "mpc85xx.h"
/* A few bit definitions needed for fixups on some boards */ /* A few bit definitions needed for fixups on some boards */
#define MPC85xx_L2CTL_L2E 0x80000000 /* L2 enable */ #define MPC85xx_L2CTL_L2E 0x80000000 /* L2 enable */
#define MPC85xx_L2CTL_L2I 0x40000000 /* L2 flash invalidate */ #define MPC85xx_L2CTL_L2I 0x40000000 /* L2 flash invalidate */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册