blob: bda7394ec06cf38283575c4fea528630ef038f1a [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001/*
2 * arch/arm/mach-iop3xx/common.c
3 *
4 * Common routines shared across all IOP3xx implementations
5 *
6 * Author: Deepak Saxena <dsaxena@mvista.com>
7 *
8 * Copyright 2003 (c) MontaVista, Software, Inc.
9 *
10 * This file is licensed under the terms of the GNU General Public
11 * License version 2. This program is licensed "as is" without any
12 * warranty of any kind, whether express or implied.
13 */
14
15#include <linux/config.h>
16#include <linux/delay.h>
17#include <asm/hardware.h>
18
19/*
20 * Shared variables
21 */
22unsigned long iop3xx_pcibios_min_io = 0;
23unsigned long iop3xx_pcibios_min_mem = 0;
24
25#ifdef CONFIG_ARCH_EP80219
26#include <linux/kernel.h>
27/*
28 * Default power-off for EP80219
29 */
30#include <asm/mach-types.h>
31
32static inline void ep80219_send_to_pic(__u8 c) {
33}
34
35void ep80219_power_off(void)
36{
37 /*
38 * This function will send a SHUTDOWN_COMPLETE message to the PIC controller
39 * over I2C. We are not using the i2c subsystem since we are going to power
40 * off and it may be removed
41 */
42
43 /* Send the Address byte w/ the start condition */
44 *IOP321_IDBR1 = 0x60;
45 *IOP321_ICR1 = 0xE9;
46 mdelay(1);
47
48 /* Send the START_MSG byte w/ no start or stop condition */
49 *IOP321_IDBR1 = 0x0F;
50 *IOP321_ICR1 = 0xE8;
51 mdelay(1);
52
53 /* Send the SHUTDOWN_COMPLETE Message ID byte w/ no start or stop condition */
54 *IOP321_IDBR1 = 0x03;
55 *IOP321_ICR1 = 0xE8;
56 mdelay(1);
57
58 /* Send an ignored byte w/ stop condition */
59 *IOP321_IDBR1 = 0x00;
60 *IOP321_ICR1 = 0xEA;
61
62 while (1) ;
63}
64
65#include <linux/init.h>
66#include <linux/pm.h>
67
68static int __init ep80219_init(void)
69{
70 pm_power_off = ep80219_power_off;
71 return 0;
72}
73arch_initcall(ep80219_init);
74#endif