add ifxmips mei driver, untested and uncleaned
[openwrt/svn-archive/archive.git] / target / linux / ifxmips / files / include / asm-mips / ifxmips / ifxmips_mei_linux.h
1 /******************************************************************************
2 **
3 ** FILE NAME : ifxmips_mei_linux.h
4 ** PROJECT : Danube
5 ** MODULES : MEI
6 **
7 ** DATE : 1 Jan 2006
8 ** AUTHOR : TC Chen
9 ** DESCRIPTION : MEI Driver
10 ** COPYRIGHT : Copyright (c) 2006
11 ** Infineon Technologies AG
12 ** Am Campeon 1-12, 85579 Neubiberg, Germany
13 **
14 ** This program is free software; you can redistribute it and/or modify
15 ** it under the terms of the GNU General Public License as published by
16 ** the Free Software Foundation; either version 2 of the License, or
17 ** (at your option) any later version.
18 **
19 ** HISTORY
20 ** $Version $Date $Author $Comment
21 *******************************************************************************/
22 #include <linux/kernel.h>
23 #include <linux/module.h>
24 #include <linux/version.h>
25 #include <linux/types.h>
26 #include <linux/fs.h>
27 #include <linux/mm.h>
28 #include <linux/errno.h>
29 #include <linux/interrupt.h>
30 #include <linux/netdevice.h>
31 #include <linux/etherdevice.h>
32 #include <asm/semaphore.h>
33 #include <linux/init.h>
34 #include <linux/ioport.h>
35 #include <asm/uaccess.h>
36
37 #undef CONFIG_DEVFS_FS //165204:henryhsu devfs will make mei open file fail.
38
39 #ifdef CONFIG_DEVFS_FS
40 #include <linux/devfs_fs_kernel.h>
41 #endif
42 #ifdef CONFIG_PROC_FS
43 #include <linux/proc_fs.h>
44 #endif
45
46 #include <linux/list.h>
47 #include <linux/delay.h>
48 #define __LINUX__
49
50 #ifdef CONFIG_PROC_FS
51 #define PROC_ITEMS 8
52 #define MEI_DIRNAME "mei"
53 #endif
54
55 #include <asm/ifxmips/ifxmips.h>
56 #include <asm/ifxmips/ifxmips_irq.h>
57 #include <asm/ifxmips/ifxmips_mei.h>
58 #include <asm/ifxmips/ifxmips_mei_app.h>
59 #include <asm/ifxmips/ifxmips_mei_ioctl.h>
60 #include <asm/ifxmips/ifxmips_mei_app_ioctl.h>
61 #include <asm/ifxmips/ifxmips_gpio.h>
62 #include <asm/ifxmips/ifxmips_led.h>
63
64 #ifdef CONFIG_DEVFS_FS
65 #define IFXMIPS_DEVNAME "ifxmips"
66 #endif //ifdef CONFIG_DEVFS_FS
67
68 #define MEI_LOCKINT(var) \
69 local_save_flags(var);\
70 local_irq_disable()
71 #define MEI_UNLOCKINT(var) \
72 local_irq_restore(var)
73
74 #define MEI_MUTEX_INIT(id,flag) \
75 sema_init(&id,flag)
76 #define MEI_MUTEX_LOCK(id) \
77 down_interruptible(&id)
78 #define MEI_MUTEX_UNLOCK(id) \
79 up(&id)
80
81 #define MEI_MASK_AND_ACK_IRQ \
82 mask_and_ack_ifxmips_irq
83
84 #define MEI_DISABLE_IRQ \
85 disable_irq
86 #define MEI_ENABLE_IRQ \
87 enable_irq
88
89 #define MEI_WAIT(ms) \
90 {\
91 set_current_state(TASK_INTERRUPTIBLE);\
92 schedule_timeout(ms);\
93 }
94
95 #define MEI_INIT_WAKELIST(name,queue) \
96 init_waitqueue_head(&queue)
97
98 #define MEI_WAIT_EVENT_TIMEOUT(ev,timeout)\
99 interruptible_sleep_on_timeout(&ev,timeout)
100
101 #define MEI_WAIT_EVENT(ev)\
102 interruptible_sleep_on(&ev)
103 #define MEI_WAKEUP_EVENT(ev)\
104 wake_up_interruptible(&ev)
105
106 typedef unsigned long MEI_intstat_t;
107 typedef struct semaphore MEI_mutex_t;
108 typedef struct file MEI_file_t;
109 typedef struct inode MEI_inode_t;
110
111 extern void mask_and_ack_ifxmips_irq (unsigned int irq_nr);