1 /******************************************************************************
3 ** FILE NAME : ifxmips_mei_linux.h
9 ** DESCRIPTION : MEI Driver
10 ** COPYRIGHT : Copyright (c) 2006
11 ** Infineon Technologies AG
12 ** Am Campeon 1-12, 85579 Neubiberg, Germany
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.
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>
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>
37 #undef CONFIG_DEVFS_FS //165204:henryhsu devfs will make mei open file fail.
39 #ifdef CONFIG_DEVFS_FS
40 #include <linux/devfs_fs_kernel.h>
43 #include <linux/proc_fs.h>
46 #include <linux/list.h>
47 #include <linux/delay.h>
52 #define MEI_DIRNAME "mei"
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>
64 #ifdef CONFIG_DEVFS_FS
65 #define IFXMIPS_DEVNAME "ifxmips"
66 #endif //ifdef CONFIG_DEVFS_FS
68 #define MEI_LOCKINT(var) \
69 local_save_flags(var);\
71 #define MEI_UNLOCKINT(var) \
72 local_irq_restore(var)
74 #define MEI_MUTEX_INIT(id,flag) \
76 #define MEI_MUTEX_LOCK(id) \
77 down_interruptible(&id)
78 #define MEI_MUTEX_UNLOCK(id) \
81 #define MEI_MASK_AND_ACK_IRQ \
82 mask_and_ack_ifxmips_irq
84 #define MEI_DISABLE_IRQ \
86 #define MEI_ENABLE_IRQ \
89 #define MEI_WAIT(ms) \
91 set_current_state(TASK_INTERRUPTIBLE);\
92 schedule_timeout(ms);\
95 #define MEI_INIT_WAKELIST(name,queue) \
96 init_waitqueue_head(&queue)
98 #define MEI_WAIT_EVENT_TIMEOUT(ev,timeout)\
99 interruptible_sleep_on_timeout(&ev,timeout)
101 #define MEI_WAIT_EVENT(ev)\
102 interruptible_sleep_on(&ev)
103 #define MEI_WAKEUP_EVENT(ev)\
104 wake_up_interruptible(&ev)
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
;
111 extern void mask_and_ack_ifxmips_irq (unsigned int irq_nr
);