Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 22910
b: refs/heads/master
c: 30f5933
h: refs/heads/master
v: v3
  • Loading branch information
Kumar Gala authored and Paul Mackerras committed Feb 7, 2006
1 parent e0a7180 commit 1b8115b
Show file tree
Hide file tree
Showing 6 changed files with 72 additions and 63 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 4b10cfd40e3fa1c1663b9c9fa22260d41e669c6f
refs/heads/master: 30f5933657d17fbbc743ce9522543ba50ce2e834
4 changes: 3 additions & 1 deletion trunk/arch/powerpc/platforms/83xx/Makefile
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
#
# Makefile for the PowerPC 83xx linux kernel.
#
obj-$(CONFIG_MPC834x_SYS) += mpc834x_sys.o pci.o
obj-y := misc.o
obj-$(CONFIG_PCI) += pci.o
obj-$(CONFIG_MPC834x_SYS) += mpc834x_sys.o
55 changes: 55 additions & 0 deletions trunk/arch/powerpc/platforms/83xx/misc.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
/*
* misc setup functions for MPC83xx
*
* Maintainer: Kumar Gala <galak@kernel.crashing.org>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
* Free Software Foundation; either version 2 of the License, or (at your
* option) any later version.
*/

#include <linux/config.h>
#include <linux/stddef.h>
#include <linux/kernel.h>

#include <asm/io.h>
#include <asm/hw_irq.h>
#include <sysdev/fsl_soc.h>

#include "mpc83xx.h"

void mpc83xx_restart(char *cmd)
{
#define RST_OFFSET 0x00000900
#define RST_PROT_REG 0x00000018
#define RST_CTRL_REG 0x0000001c
__be32 __iomem *reg;

/* map reset register space */
reg = ioremap(get_immrbase() + 0x900, 0xff);

local_irq_disable();

/* enable software reset "RSTE" */
out_be32(reg + (RST_PROT_REG >> 2), 0x52535445);

/* set software hard reset */
out_be32(reg + (RST_CTRL_REG >> 2), 0x52535445);
for (;;) ;
}

long __init mpc83xx_time_init(void)
{
#define SPCR_OFFSET 0x00000110
#define SPCR_TBEN 0x00400000
__be32 __iomem *spcr = ioremap(get_immrbase() + SPCR_OFFSET, 4);
__be32 tmp;

tmp = in_be32(spcr);
out_be32(spcr, tmp | SPCR_TBEN);

iounmap(spcr);

return 0;
}
58 changes: 0 additions & 58 deletions trunk/arch/powerpc/platforms/83xx/mpc834x_sys.c
Original file line number Diff line number Diff line change
Expand Up @@ -24,22 +24,15 @@
#include <linux/delay.h>
#include <linux/seq_file.h>
#include <linux/root_dev.h>
#include <linux/module.h>
#include <linux/fsl_devices.h>

#include <asm/system.h>
#include <asm/pgtable.h>
#include <asm/page.h>
#include <asm/atomic.h>
#include <asm/time.h>
#include <asm/io.h>
#include <asm/machdep.h>
#include <asm/ipic.h>
#include <asm/bootinfo.h>
#include <asm/pci-bridge.h>
#include <asm/mpc83xx.h>
#include <asm/irq.h>
#include <mm/mmu_decl.h>
#include <asm/prom.h>
#include <asm/udbg.h>
#include <sysdev/fsl_soc.h>
Expand All @@ -52,8 +45,6 @@ unsigned long isa_mem_base = 0;
#endif

#ifdef CONFIG_PCI
extern int mpc83xx_pci2_busno;

static int
mpc83xx_map_irq(struct pci_dev *dev, unsigned char idsel, unsigned char pin)
{
Expand All @@ -78,17 +69,6 @@ mpc83xx_map_irq(struct pci_dev *dev, unsigned char idsel, unsigned char pin)
const long min_idsel = 0x11, max_idsel = 0x20, irqs_per_slot = 4;
return PCI_IRQ_TABLE_LOOKUP;
}

static int
mpc83xx_exclude_device(u_char bus, u_char devfn)
{
if (bus == 0 && PCI_SLOT(devfn) == 0)
return PCIBIOS_DEVICE_NOT_FOUND;
if (mpc83xx_pci2_busno)
if (bus == (mpc83xx_pci2_busno) && PCI_SLOT(devfn) == 0)
return PCIBIOS_DEVICE_NOT_FOUND;
return PCIBIOS_SUCCESSFUL;
}
#endif /* CONFIG_PCI */

/* ************************************************************************
Expand Down Expand Up @@ -180,42 +160,6 @@ mpc834x_rtc_hookup(void)
late_initcall(mpc834x_rtc_hookup);
#endif

static void
mpc83xx_restart(char *cmd)
{
#define RST_OFFSET 0x00000900
#define RST_PROT_REG 0x00000018
#define RST_CTRL_REG 0x0000001c
__be32 __iomem *reg;

// map reset register space
reg = ioremap(get_immrbase() + 0x900, 0xff);

local_irq_disable();

/* enable software reset "RSTE" */
out_be32(reg + (RST_PROT_REG >> 2), 0x52535445);

/* set software hard reset */
out_be32(reg + (RST_CTRL_REG >> 2), 0x52535445);
for(;;);
}

static long __init
mpc83xx_time_init(void)
{
#define SPCR_OFFSET 0x00000110
#define SPCR_TBEN 0x00400000
__be32 __iomem *spcr = ioremap(get_immrbase() + SPCR_OFFSET, 4);
__be32 tmp;

tmp = in_be32(spcr);
out_be32(spcr, tmp|SPCR_TBEN);

iounmap(spcr);

return 0;
}
void __init
platform_init(void)
{
Expand All @@ -239,5 +183,3 @@ platform_init(void)

return;
}


3 changes: 3 additions & 0 deletions trunk/arch/powerpc/platforms/83xx/mpc83xx.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,5 +10,8 @@
*/

extern int add_bridge(struct device_node *dev);
extern int mpc83xx_exclude_device(u_char bus, u_char devfn);
extern void mpc83xx_restart(char *cmd);
extern long mpc83xx_time_init(void);

#endif /* __MPC83XX_H__ */
13 changes: 10 additions & 3 deletions trunk/arch/powerpc/platforms/83xx/pci.c
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,16 @@

int mpc83xx_pci2_busno;

#ifdef CONFIG_PCI
int mpc83xx_exclude_device(u_char bus, u_char devfn)
{
if (bus == 0 && PCI_SLOT(devfn) == 0)
return PCIBIOS_DEVICE_NOT_FOUND;
if (mpc83xx_pci2_busno)
if (bus == (mpc83xx_pci2_busno) && PCI_SLOT(devfn) == 0)
return PCIBIOS_DEVICE_NOT_FOUND;
return PCIBIOS_SUCCESSFUL;
}

int __init add_bridge(struct device_node *dev)
{
int len;
Expand Down Expand Up @@ -95,5 +104,3 @@ int __init add_bridge(struct device_node *dev)

return 0;
}

#endif

0 comments on commit 1b8115b

Please sign in to comment.