powerpc/85xx: separate cpm2 pic init
Separate handling of CPM2 PIC initialization to mpc85xx_cpm2_pic_init() function. Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com> Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
This commit is contained in:
parent
5d71349580
commit
543a07b173
|
@ -3,6 +3,8 @@
|
|||
#
|
||||
obj-$(CONFIG_SMP) += smp.o
|
||||
|
||||
obj-y += mpc85xx_common.o
|
||||
|
||||
obj-$(CONFIG_MPC8540_ADS) += mpc85xx_ads.o
|
||||
obj-$(CONFIG_MPC8560_ADS) += mpc85xx_ads.o
|
||||
obj-$(CONFIG_MPC85xx_CDS) += mpc85xx_cds.o
|
||||
|
|
|
@ -35,6 +35,7 @@
|
|||
#include <asm/cpm2.h>
|
||||
#include <sysdev/cpm2_pic.h>
|
||||
|
||||
#include "mpc85xx.h"
|
||||
|
||||
#define KSI8560_CPLD_HVR 0x04 /* Hardware Version Register */
|
||||
#define KSI8560_CPLD_PVR 0x08 /* PLD Version Register */
|
||||
|
@ -54,25 +55,11 @@ static void machine_restart(char *cmd)
|
|||
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)
|
||||
{
|
||||
struct mpic *mpic;
|
||||
struct resource r;
|
||||
struct device_node *np;
|
||||
#ifdef CONFIG_CPM2
|
||||
int irq;
|
||||
#endif
|
||||
|
||||
np = of_find_node_by_type(NULL, "open-pic");
|
||||
|
||||
|
@ -95,19 +82,7 @@ static void __init ksi8560_pic_init(void)
|
|||
|
||||
mpic_init(mpic);
|
||||
|
||||
#ifdef CONFIG_CPM2
|
||||
/* 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
|
||||
mpc85xx_cpm2_pic_init();
|
||||
}
|
||||
|
||||
#ifdef CONFIG_CPM2
|
||||
|
|
|
@ -32,6 +32,8 @@
|
|||
#include <sysdev/fsl_soc.h>
|
||||
#include <sysdev/fsl_pci.h>
|
||||
|
||||
#include "mpc85xx.h"
|
||||
|
||||
void __init mpc8536_ds_pic_init(void)
|
||||
{
|
||||
struct mpic *mpic;
|
||||
|
|
9
arch/powerpc/platforms/85xx/mpc85xx.h
Normal file
9
arch/powerpc/platforms/85xx/mpc85xx.h
Normal file
|
@ -0,0 +1,9 @@
|
|||
#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 @@
|
|||
#include <sysdev/cpm2_pic.h>
|
||||
#endif
|
||||
|
||||
#include "mpc85xx.h"
|
||||
|
||||
#ifdef CONFIG_PCI
|
||||
static int mpc85xx_exclude_device(struct pci_controller *hose,
|
||||
u_char bus, u_char devfn)
|
||||
|
@ -46,29 +48,11 @@ static int mpc85xx_exclude_device(struct pci_controller *hose,
|
|||
}
|
||||
#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)
|
||||
{
|
||||
struct mpic *mpic;
|
||||
struct resource r;
|
||||
struct device_node *np = NULL;
|
||||
#ifdef CONFIG_CPM2
|
||||
int irq;
|
||||
#endif
|
||||
|
||||
np = of_find_node_by_type(np, "open-pic");
|
||||
if (!np) {
|
||||
|
@ -90,19 +74,7 @@ static void __init mpc85xx_ads_pic_init(void)
|
|||
|
||||
mpic_init(mpic);
|
||||
|
||||
#ifdef CONFIG_CPM2
|
||||
/* 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
|
||||
mpc85xx_cpm2_pic_init();
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -46,6 +46,8 @@
|
|||
#include <sysdev/fsl_soc.h>
|
||||
#include <sysdev/fsl_pci.h>
|
||||
|
||||
#include "mpc85xx.h"
|
||||
|
||||
/* CADMUS info */
|
||||
/* xxx - galak, move into device tree */
|
||||
#define CADMUS_BASE (0xf8004000)
|
||||
|
|
49
arch/powerpc/platforms/85xx/mpc85xx_common.c
Normal file
49
arch/powerpc/platforms/85xx/mpc85xx_common.c
Normal file
|
@ -0,0 +1,49 @@
|
|||
/*
|
||||
* 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 @@
|
|||
#include <sysdev/fsl_soc.h>
|
||||
#include <sysdev/fsl_pci.h>
|
||||
|
||||
#include "mpc85xx.h"
|
||||
|
||||
#undef DEBUG
|
||||
|
||||
#ifdef DEBUG
|
||||
|
|
|
@ -52,6 +52,8 @@
|
|||
#include <asm/mpic.h>
|
||||
#include <asm/swiotlb.h>
|
||||
|
||||
#include "mpc85xx.h"
|
||||
|
||||
#undef DEBUG
|
||||
#ifdef DEBUG
|
||||
#define DBG(fmt...) udbg_printf(fmt)
|
||||
|
|
|
@ -30,6 +30,8 @@
|
|||
#include <sysdev/fsl_soc.h>
|
||||
#include <sysdev/fsl_pci.h>
|
||||
|
||||
#include "mpc85xx.h"
|
||||
|
||||
#undef DEBUG
|
||||
|
||||
#ifdef DEBUG
|
||||
|
|
|
@ -27,6 +27,8 @@
|
|||
#include <sysdev/fsl_pci.h>
|
||||
#include <asm/fsl_guts.h>
|
||||
|
||||
#include "mpc85xx.h"
|
||||
|
||||
#if defined(CONFIG_FB_FSL_DIU) || defined(CONFIG_FB_FSL_DIU_MODULE)
|
||||
|
||||
/*
|
||||
|
|
|
@ -32,34 +32,18 @@
|
|||
#include <sysdev/fsl_soc.h>
|
||||
#include <sysdev/fsl_pci.h>
|
||||
|
||||
#include "mpc85xx.h"
|
||||
|
||||
#ifdef CONFIG_CPM2
|
||||
#include <asm/cpm2.h>
|
||||
#include <sysdev/cpm2_pic.h>
|
||||
#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)
|
||||
{
|
||||
struct mpic *mpic;
|
||||
struct resource r;
|
||||
struct device_node *np = NULL;
|
||||
#ifdef CONFIG_CPM2
|
||||
int irq;
|
||||
#endif
|
||||
|
||||
np = of_find_node_by_type(np, "open-pic");
|
||||
if (!np) {
|
||||
|
@ -81,19 +65,7 @@ static void __init sbc8560_pic_init(void)
|
|||
|
||||
mpic_init(mpic);
|
||||
|
||||
#ifdef CONFIG_CPM2
|
||||
/* 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
|
||||
mpc85xx_cpm2_pic_init();
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -41,6 +41,7 @@
|
|||
#include <sysdev/fsl_soc.h>
|
||||
#include <sysdev/fsl_pci.h>
|
||||
|
||||
#include "mpc85xx.h"
|
||||
#include "socrates_fpga_pic.h"
|
||||
|
||||
static void __init socrates_pic_init(void)
|
||||
|
|
|
@ -40,20 +40,10 @@
|
|||
#include <sysdev/fsl_soc.h>
|
||||
#include <sysdev/fsl_pci.h>
|
||||
|
||||
#include "mpc85xx.h"
|
||||
|
||||
#ifdef CONFIG_CPM2
|
||||
#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 */
|
||||
|
||||
static void __init stx_gp3_pic_init(void)
|
||||
|
@ -61,9 +51,6 @@ static void __init stx_gp3_pic_init(void)
|
|||
struct mpic *mpic;
|
||||
struct resource r;
|
||||
struct device_node *np;
|
||||
#ifdef CONFIG_CPM2
|
||||
int irq;
|
||||
#endif
|
||||
|
||||
np = of_find_node_by_type(NULL, "open-pic");
|
||||
if (!np) {
|
||||
|
@ -85,25 +72,7 @@ static void __init stx_gp3_pic_init(void)
|
|||
|
||||
mpic_init(mpic);
|
||||
|
||||
#ifdef CONFIG_CPM2
|
||||
/* 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
|
||||
mpc85xx_cpm2_pic_init();
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -38,20 +38,10 @@
|
|||
#include <sysdev/fsl_soc.h>
|
||||
#include <sysdev/fsl_pci.h>
|
||||
|
||||
#include "mpc85xx.h"
|
||||
|
||||
#ifdef CONFIG_CPM2
|
||||
#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 */
|
||||
|
||||
static void __init tqm85xx_pic_init(void)
|
||||
|
@ -59,9 +49,6 @@ static void __init tqm85xx_pic_init(void)
|
|||
struct mpic *mpic;
|
||||
struct resource r;
|
||||
struct device_node *np;
|
||||
#ifdef CONFIG_CPM2
|
||||
int irq;
|
||||
#endif
|
||||
|
||||
np = of_find_node_by_type(NULL, "open-pic");
|
||||
if (!np) {
|
||||
|
@ -83,25 +70,7 @@ static void __init tqm85xx_pic_init(void)
|
|||
|
||||
mpic_init(mpic);
|
||||
|
||||
#ifdef CONFIG_CPM2
|
||||
/* 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
|
||||
mpc85xx_cpm2_pic_init();
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -33,6 +33,8 @@
|
|||
#include <sysdev/fsl_soc.h>
|
||||
#include <sysdev/fsl_pci.h>
|
||||
|
||||
#include "mpc85xx.h"
|
||||
|
||||
/* A few bit definitions needed for fixups on some boards */
|
||||
#define MPC85xx_L2CTL_L2E 0x80000000 /* L2 enable */
|
||||
#define MPC85xx_L2CTL_L2I 0x40000000 /* L2 flash invalidate */
|
||||
|
|
Loading…
Reference in a new issue