2005-04-17 02:20:36 +04:00
/*
* Cobalt Reset operations
*
* This file is subject to the terms and conditions of the GNU General Public
* License . See the file " COPYING " in the main directory of this archive
* for more details .
*
* Copyright ( C ) 1995 , 1996 , 1997 by Ralf Baechle
* Copyright ( C ) 2001 by Liam Davies ( ldavies @ agile . tv )
*/
2007-10-01 14:45:05 +04:00
# include <linux/init.h>
2007-10-02 18:17:38 +04:00
# include <linux/io.h>
2007-10-01 14:45:05 +04:00
# include <linux/leds.h>
2007-03-06 15:34:44 +03:00
2013-05-21 18:59:19 +04:00
# include <asm/idle.h>
2007-12-12 16:23:13 +03:00
# include <asm/processor.h>
2007-03-06 15:34:44 +03:00
# include <cobalt.h>
2005-04-17 02:20:36 +04:00
2007-10-02 18:17:38 +04:00
# define RESET_PORT ((void __iomem *)CKSEG1ADDR(0x1c000000))
# define RESET 0x0f
2007-10-01 14:45:05 +04:00
DEFINE_LED_TRIGGER ( power_off_led_trigger ) ;
static int __init ledtrig_power_off_init ( void )
{
led_trigger_register_simple ( " power-off " , & power_off_led_trigger ) ;
return 0 ;
}
device_initcall ( ledtrig_power_off_init ) ;
2005-02-21 19:18:36 +03:00
void cobalt_machine_halt ( void )
2005-04-17 02:20:36 +04:00
{
/*
2007-10-01 14:45:05 +04:00
* turn on power off LED on RaQ
2005-04-17 02:20:36 +04:00
*/
2007-10-01 14:45:05 +04:00
led_trigger_event ( power_off_led_trigger , LED_FULL ) ;
2005-02-21 19:18:36 +03:00
2007-12-12 16:20:19 +03:00
local_irq_disable ( ) ;
2007-12-12 16:23:13 +03:00
while ( 1 ) {
if ( cpu_wait )
cpu_wait ( ) ;
}
2005-04-17 02:20:36 +04:00
}
2005-02-21 19:18:36 +03:00
void cobalt_machine_restart ( char * command )
{
2007-10-02 18:17:38 +04:00
writeb ( RESET , RESET_PORT ) ;
2005-02-21 19:18:36 +03:00
/* we should never get here */
cobalt_machine_halt ( ) ;
}