aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
authorAlex Dubov <oakad@yahoo.com>2006-12-17 22:20:06 -0500
committerPierre Ossman <drzeus@drzeus.cx>2007-02-04 14:54:09 -0500
commit7146f0d3bd2bcd0100a5db54f4ba9edc1042fe01 (patch)
treebb8dd99b153d6aa8fe565be7256a586b0abd2977 /include/linux
parent6412d927313f08808d61b7efba8da43717d4e8d2 (diff)
tifm_7xx1: switch from workqueue to kthread
As there's only one work item (media_switcher) to handle and it's effectively serialized with itself, I found it more convenient to use kthread instead of workqueue. This also allows for a working implementation of suspend/resume, which were totally broken in the past version. Signed-off-by: Alex Dubov <oakad@yahoo.com> Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/tifm.h10
1 files changed, 4 insertions, 6 deletions
diff --git a/include/linux/tifm.h b/include/linux/tifm.h
index eaf9e1f48780..e5a8295f9fbc 100644
--- a/include/linux/tifm.h
+++ b/include/linux/tifm.h
@@ -17,7 +17,7 @@
17#include <linux/wait.h> 17#include <linux/wait.h>
18#include <linux/delay.h> 18#include <linux/delay.h>
19#include <linux/pci.h> 19#include <linux/pci.h>
20#include <linux/scatterlist.h> 20#include <linux/kthread.h>
21 21
22/* Host registers (relative to pci base address): */ 22/* Host registers (relative to pci base address): */
23enum { 23enum {
@@ -110,13 +110,11 @@ struct tifm_adapter {
110 spinlock_t lock; 110 spinlock_t lock;
111 unsigned int irq_status; 111 unsigned int irq_status;
112 unsigned int socket_change_set; 112 unsigned int socket_change_set;
113 wait_queue_head_t change_set_notify;
113 unsigned int id; 114 unsigned int id;
114 unsigned int num_sockets; 115 unsigned int num_sockets;
115 struct tifm_dev **sockets; 116 struct tifm_dev **sockets;
116 char wq_name[KOBJ_NAME_LEN]; 117 struct task_struct *media_switcher;
117 unsigned int inhibit_new_cards;
118 struct workqueue_struct *wq;
119 struct work_struct media_switcher;
120 struct class_device cdev; 118 struct class_device cdev;
121 struct device *dev; 119 struct device *dev;
122 120
@@ -126,7 +124,7 @@ struct tifm_adapter {
126struct tifm_adapter *tifm_alloc_adapter(void); 124struct tifm_adapter *tifm_alloc_adapter(void);
127void tifm_free_device(struct device *dev); 125void tifm_free_device(struct device *dev);
128void tifm_free_adapter(struct tifm_adapter *fm); 126void tifm_free_adapter(struct tifm_adapter *fm);
129int tifm_add_adapter(struct tifm_adapter *fm); 127int tifm_add_adapter(struct tifm_adapter *fm, int (*mediathreadfn)(void *data));
130void tifm_remove_adapter(struct tifm_adapter *fm); 128void tifm_remove_adapter(struct tifm_adapter *fm);
131struct tifm_dev *tifm_alloc_device(struct tifm_adapter *fm); 129struct tifm_dev *tifm_alloc_device(struct tifm_adapter *fm);
132int tifm_register_driver(struct tifm_driver *drv); 130int tifm_register_driver(struct tifm_driver *drv);