aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/tifm.h
diff options
context:
space:
mode:
authorAlex Dubov <oakad@yahoo.com>2006-12-11 01:55:33 +1100
committerPierre Ossman <drzeus@drzeus.cx>2007-02-04 20:54:09 +0100
commit6412d927313f08808d61b7efba8da43717d4e8d2 (patch)
tree5fc40ebbf578a9d7cd15fa8d61236f270ac4f6b8 /include/linux/tifm.h
parent1499ead31ede528a657c50761c4780c40f929d6d (diff)
downloadkernel_samsung_smdk4412-6412d927313f08808d61b7efba8da43717d4e8d2.zip
kernel_samsung_smdk4412-6412d927313f08808d61b7efba8da43717d4e8d2.tar.gz
kernel_samsung_smdk4412-6412d927313f08808d61b7efba8da43717d4e8d2.tar.bz2
tifm_7xx1: Merge media insert and media remove functions
Hardware does not say whether card was inserted or removed when reporting socket events. Moreover, during suspend, media can be removed or switched to some other card type without notification. Therefore, for each socket in the change set the following is performed: 1. If there's active device in the socket it's unregistered 2. Media detection is performed 3. If detection recognizes supportable media, new device is registered This patch also alters some macros and variable names to enhance clarity. Signed-off-by: Alex Dubov <oakad@yahoo.com> Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
Diffstat (limited to 'include/linux/tifm.h')
-rw-r--r--include/linux/tifm.h19
1 files changed, 8 insertions, 11 deletions
diff --git a/include/linux/tifm.h b/include/linux/tifm.h
index 5b0baef..eaf9e1f 100644
--- a/include/linux/tifm.h
+++ b/include/linux/tifm.h
@@ -62,11 +62,10 @@ enum {
#define TIFM_IRQ_ENABLE 0x80000000
-#define TIFM_IRQ_SOCKMASK 0x00000001
-#define TIFM_IRQ_CARDMASK 0x00000100
-#define TIFM_IRQ_FIFOMASK 0x00010000
+#define TIFM_IRQ_SOCKMASK(x) (x)
+#define TIFM_IRQ_CARDMASK(x) ((x) << 8)
+#define TIFM_IRQ_FIFOMASK(x) ((x) << 16)
#define TIFM_IRQ_SETALL 0xffffffff
-#define TIFM_IRQ_SETALLSOCK 0x0000000f
#define TIFM_CTRL_LED 0x00000040
#define TIFM_CTRL_FAST_CLK 0x00000100
@@ -108,18 +107,16 @@ struct tifm_driver {
struct tifm_adapter {
char __iomem *addr;
- unsigned int irq_status;
- unsigned int insert_mask;
- unsigned int remove_mask;
spinlock_t lock;
+ unsigned int irq_status;
+ unsigned int socket_change_set;
unsigned int id;
- unsigned int max_sockets;
+ unsigned int num_sockets;
+ struct tifm_dev **sockets;
char wq_name[KOBJ_NAME_LEN];
unsigned int inhibit_new_cards;
struct workqueue_struct *wq;
- struct work_struct media_inserter;
- struct work_struct media_remover;
- struct tifm_dev **sockets;
+ struct work_struct media_switcher;
struct class_device cdev;
struct device *dev;