79849ae4fbefaa197c4d5e0489b37bb353cadbba
[openwrt/svn-archive/archive.git] / target / linux / ifxmips / files / arch / mips / include / asm / 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 #include <asm/ifxmips/ifxmips_irq.h>
64
65 #ifdef CONFIG_DEVFS_FS
66 #define IFXMIPS_DEVNAME "ifxmips"
67 #endif //ifdef CONFIG_DEVFS_FS
68
69 #define MEI_LOCKINT(var) \
70 local_save_flags(var);\
71 local_irq_disable()
72 #define MEI_UNLOCKINT(var) \
73 local_irq_restore(var)
74
75 #define MEI_MUTEX_INIT(id,flag) \
76 sema_init(&id,flag)
77 #define MEI_MUTEX_LOCK(id) \
78 down_interruptible(&id)
79 #define MEI_MUTEX_UNLOCK(id) \
80 up(&id)
81
82 #define MEI_MASK_AND_ACK_IRQ \
83 ifxmips_mask_and_ack_irq
84
85 #define MEI_DISABLE_IRQ \
86 disable_irq
87 #define MEI_ENABLE_IRQ \
88 enable_irq
89
90 #define MEI_WAIT(ms) \
91 {\
92 set_current_state(TASK_INTERRUPTIBLE);\
93 schedule_timeout(ms);\
94 }
95
96 #define MEI_INIT_WAKELIST(name,queue) \
97 init_waitqueue_head(&queue)
98
99 #define MEI_WAIT_EVENT_TIMEOUT(ev,timeout)\
100 interruptible_sleep_on_timeout(&ev,timeout)
101
102 #define MEI_WAIT_EVENT(ev)\
103 interruptible_sleep_on(&ev)
104 #define MEI_WAKEUP_EVENT(ev)\
105 wake_up_interruptible(&ev)
106
107 typedef unsigned long MEI_intstat_t;
108 typedef struct semaphore MEI_mutex_t;
109 typedef struct file MEI_file_t;
110 typedef struct inode MEI_inode_t;
111
112 extern void mask_and_ack_ifxmips_irq (unsigned int irq_nr);