| 
									
										
										
										
											2005-04-16 15:20:36 -07: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 19:45:05 +09:00
										 |  |  | #include <linux/init.h>
 | 
					
						
							| 
									
										
										
										
											2007-10-02 23:17:38 +09:00
										 |  |  | #include <linux/io.h>
 | 
					
						
							| 
									
										
										
										
											2007-10-01 19:45:05 +09:00
										 |  |  | #include <linux/leds.h>
 | 
					
						
							| 
									
										
										
										
											2007-03-06 21:34:44 +09:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-05-21 16:59:19 +02:00
										 |  |  | #include <asm/idle.h>
 | 
					
						
							| 
									
										
										
										
											2007-12-12 22:23:13 +09:00
										 |  |  | #include <asm/processor.h>
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-03-06 21:34:44 +09:00
										 |  |  | #include <cobalt.h>
 | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-10-02 23:17:38 +09:00
										 |  |  | #define RESET_PORT	((void __iomem *)CKSEG1ADDR(0x1c000000))
 | 
					
						
							|  |  |  | #define RESET		0x0f
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-10-01 19:45:05 +09: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 16:18:36 +00:00
										 |  |  | void cobalt_machine_halt(void) | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | { | 
					
						
							|  |  |  | 	/*
 | 
					
						
							| 
									
										
										
										
											2007-10-01 19:45:05 +09:00
										 |  |  | 	 * turn on power off LED on RaQ | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 	 */ | 
					
						
							| 
									
										
										
										
											2007-10-01 19:45:05 +09:00
										 |  |  | 	led_trigger_event(power_off_led_trigger, LED_FULL); | 
					
						
							| 
									
										
										
										
											2005-02-21 16:18:36 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-12-12 22:20:19 +09:00
										 |  |  | 	local_irq_disable(); | 
					
						
							| 
									
										
										
										
											2007-12-12 22:23:13 +09:00
										 |  |  | 	while (1) { | 
					
						
							|  |  |  | 		if (cpu_wait) | 
					
						
							|  |  |  | 			cpu_wait(); | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-02-21 16:18:36 +00:00
										 |  |  | void cobalt_machine_restart(char *command) | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2007-10-02 23:17:38 +09:00
										 |  |  | 	writeb(RESET, RESET_PORT); | 
					
						
							| 
									
										
										
										
											2005-02-21 16:18:36 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	/* we should never get here */ | 
					
						
							|  |  |  | 	cobalt_machine_halt(); | 
					
						
							|  |  |  | } |