Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 279961
b: refs/heads/master
c: 1139b92
h: refs/heads/master
i:
  279959: d6c3762
v: v3
  • Loading branch information
Russell King committed Jan 5, 2012
1 parent b61654f commit 01e7663
Show file tree
Hide file tree
Showing 8 changed files with 41 additions and 30 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: 00aa78eea20645a751db45ae4a46dae15a4576cf
refs/heads/master: 1139b926c4b1754276fc5e2556cc9c0f46b010c6
4 changes: 4 additions & 0 deletions trunk/arch/arm/mach-ixp2000/core.c
Original file line number Diff line number Diff line change
Expand Up @@ -515,3 +515,7 @@ void __init ixp2000_init_irq(void)
}
}

void ixp2000_restart(char mode, const char *cmd)
{
ixp2000_reg_wrb(IXP2000_RESET0, RSTALL);
}
1 change: 1 addition & 0 deletions trunk/arch/arm/mach-ixp2000/enp2611.c
Original file line number Diff line number Diff line change
Expand Up @@ -259,6 +259,7 @@ MACHINE_START(ENP2611, "Radisys ENP-2611 PCI network processor board")
.init_irq = ixp2000_init_irq,
.timer = &enp2611_timer,
.init_machine = enp2611_init_machine,
.restart = ixp2000_restart,
MACHINE_END


1 change: 1 addition & 0 deletions trunk/arch/arm/mach-ixp2000/include/mach/platform.h
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,7 @@ void ixp2000_map_io(void);
void ixp2000_uart_init(void);
void ixp2000_init_irq(void);
void ixp2000_init_time(unsigned long);
void ixp2000_restart(char, const char *);
unsigned long ixp2000_gettimeoffset(void);

struct pci_sys_data;
Expand Down
29 changes: 0 additions & 29 deletions trunk/arch/arm/mach-ixp2000/include/mach/system.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,40 +8,11 @@
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/

#include <mach/hardware.h>
#include <asm/mach-types.h>

static inline void arch_idle(void)
{
cpu_do_idle();
}

static inline void arch_reset(char mode, const char *cmd)
{
/*
* Reset flash banking register so that we are pointing at
* RedBoot bank.
*/
if (machine_is_ixdp2401()) {
ixp2000_reg_write(IXDP2X01_CPLD_FLASH_REG,
((0 >> IXDP2X01_FLASH_WINDOW_BITS)
| IXDP2X01_CPLD_FLASH_INTERN));
ixp2000_reg_wrb(IXDP2X01_CPLD_RESET_REG, 0xffffffff);
}

/*
* On IXDP2801 we need to write this magic sequence to the CPLD
* to cause a complete reset of the CPU and all external devices
* and move the flash bank register back to 0.
*/
if (machine_is_ixdp2801() || machine_is_ixdp28x5()) {
unsigned long reset_reg = *IXDP2X01_CPLD_RESET_REG;

reset_reg = 0x55AA0000 | (reset_reg & 0x0000FFFF);
ixp2000_reg_write(IXDP2X01_CPLD_RESET_REG, reset_reg);
ixp2000_reg_wrb(IXDP2X01_CPLD_RESET_REG, 0x80000000);
}

ixp2000_reg_wrb(IXP2000_RESET0, RSTALL);
}
1 change: 1 addition & 0 deletions trunk/arch/arm/mach-ixp2000/ixdp2400.c
Original file line number Diff line number Diff line change
Expand Up @@ -176,5 +176,6 @@ MACHINE_START(IXDP2400, "Intel IXDP2400 Development Platform")
.init_irq = ixdp2400_init_irq,
.timer = &ixdp2400_timer,
.init_machine = ixdp2x00_init_machine,
.restart = ixp2000_restart,
MACHINE_END

1 change: 1 addition & 0 deletions trunk/arch/arm/mach-ixp2000/ixdp2800.c
Original file line number Diff line number Diff line change
Expand Up @@ -291,5 +291,6 @@ MACHINE_START(IXDP2800, "Intel IXDP2800 Development Platform")
.init_irq = ixdp2800_init_irq,
.timer = &ixdp2800_timer,
.init_machine = ixdp2x00_init_machine,
.restart = ixp2000_restart,
MACHINE_END

32 changes: 32 additions & 0 deletions trunk/arch/arm/mach-ixp2000/ixdp2x01.c
Original file line number Diff line number Diff line change
Expand Up @@ -413,6 +413,35 @@ static void __init ixdp2x01_init_machine(void)
ixdp2x01_uart_init();
}

static void ixdp2401_restart(char mode, const char *cmd)
{
/*
* Reset flash banking register so that we are pointing at
* RedBoot bank.
*/
ixp2000_reg_write(IXDP2X01_CPLD_FLASH_REG,
((0 >> IXDP2X01_FLASH_WINDOW_BITS)
| IXDP2X01_CPLD_FLASH_INTERN));
ixp2000_reg_wrb(IXDP2X01_CPLD_RESET_REG, 0xffffffff);

ixp2000_restart(mode, cmd);
}

static void ixdp280x_restart(char mode, const char *cmd)
{
/*
* On IXDP2801 we need to write this magic sequence to the CPLD
* to cause a complete reset of the CPU and all external devices
* and move the flash bank register back to 0.
*/
unsigned long reset_reg = *IXDP2X01_CPLD_RESET_REG;

reset_reg = 0x55AA0000 | (reset_reg & 0x0000FFFF);
ixp2000_reg_write(IXDP2X01_CPLD_RESET_REG, reset_reg);
ixp2000_reg_wrb(IXDP2X01_CPLD_RESET_REG, 0x80000000);

ixp2000_restart(mode, cmd);
}

#ifdef CONFIG_ARCH_IXDP2401
MACHINE_START(IXDP2401, "Intel IXDP2401 Development Platform")
Expand All @@ -422,6 +451,7 @@ MACHINE_START(IXDP2401, "Intel IXDP2401 Development Platform")
.init_irq = ixdp2x01_init_irq,
.timer = &ixdp2x01_timer,
.init_machine = ixdp2x01_init_machine,
.restart = ixdp2401_restart,
MACHINE_END
#endif

Expand All @@ -433,6 +463,7 @@ MACHINE_START(IXDP2801, "Intel IXDP2801 Development Platform")
.init_irq = ixdp2x01_init_irq,
.timer = &ixdp2x01_timer,
.init_machine = ixdp2x01_init_machine,
.restart = ixdp280x_restart,
MACHINE_END

/*
Expand All @@ -446,6 +477,7 @@ MACHINE_START(IXDP28X5, "Intel IXDP2805/2855 Development Platform")
.init_irq = ixdp2x01_init_irq,
.timer = &ixdp2x01_timer,
.init_machine = ixdp2x01_init_machine,
.restart = ixdp280x_restart,
MACHINE_END
#endif

Expand Down

0 comments on commit 01e7663

Please sign in to comment.