diff options
author | Dmitry Torokhov <dtor_core@ameritech.net> | 2005-09-15 03:01:53 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2005-10-28 12:52:53 -0400 |
commit | b7df3910c1298fee8ed7b9dfd2da74b85df5539c (patch) | |
tree | 1948ee697c23a384dd0be625ebeee13062d73882 /drivers/media/dvb/ttpci | |
parent | 76b7cddfd576331761e945a508254abad11039e9 (diff) |
[PATCH] drivers/media: convert to dynamic input_dev allocation
Input: convert drivers/media to dynamic input_dev allocation
This is required for input_dev sysfs integration
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/media/dvb/ttpci')
-rw-r--r-- | drivers/media/dvb/ttpci/av7110_ir.c | 37 | ||||
-rw-r--r-- | drivers/media/dvb/ttpci/budget-ci.c | 24 |
2 files changed, 34 insertions, 27 deletions
diff --git a/drivers/media/dvb/ttpci/av7110_ir.c b/drivers/media/dvb/ttpci/av7110_ir.c index 357a3728ec68..f5e59fc924af 100644 --- a/drivers/media/dvb/ttpci/av7110_ir.c +++ b/drivers/media/dvb/ttpci/av7110_ir.c | |||
@@ -15,7 +15,7 @@ | |||
15 | 15 | ||
16 | static int av_cnt; | 16 | static int av_cnt; |
17 | static struct av7110 *av_list[4]; | 17 | static struct av7110 *av_list[4]; |
18 | static struct input_dev input_dev; | 18 | static struct input_dev *input_dev; |
19 | 19 | ||
20 | static u16 key_map [256] = { | 20 | static u16 key_map [256] = { |
21 | KEY_0, KEY_1, KEY_2, KEY_3, KEY_4, KEY_5, KEY_6, KEY_7, | 21 | KEY_0, KEY_1, KEY_2, KEY_3, KEY_4, KEY_5, KEY_6, KEY_7, |
@@ -43,10 +43,10 @@ static u16 key_map [256] = { | |||
43 | 43 | ||
44 | static void av7110_emit_keyup(unsigned long data) | 44 | static void av7110_emit_keyup(unsigned long data) |
45 | { | 45 | { |
46 | if (!data || !test_bit(data, input_dev.key)) | 46 | if (!data || !test_bit(data, input_dev->key)) |
47 | return; | 47 | return; |
48 | 48 | ||
49 | input_event(&input_dev, EV_KEY, data, !!0); | 49 | input_event(input_dev, EV_KEY, data, !!0); |
50 | } | 50 | } |
51 | 51 | ||
52 | 52 | ||
@@ -112,13 +112,13 @@ static void av7110_emit_key(unsigned long parm) | |||
112 | if (timer_pending(&keyup_timer)) { | 112 | if (timer_pending(&keyup_timer)) { |
113 | del_timer(&keyup_timer); | 113 | del_timer(&keyup_timer); |
114 | if (keyup_timer.data != keycode || new_toggle != old_toggle) { | 114 | if (keyup_timer.data != keycode || new_toggle != old_toggle) { |
115 | input_event(&input_dev, EV_KEY, keyup_timer.data, !!0); | 115 | input_event(input_dev, EV_KEY, keyup_timer.data, !!0); |
116 | input_event(&input_dev, EV_KEY, keycode, !0); | 116 | input_event(input_dev, EV_KEY, keycode, !0); |
117 | } else | 117 | } else |
118 | input_event(&input_dev, EV_KEY, keycode, 2); | 118 | input_event(input_dev, EV_KEY, keycode, 2); |
119 | 119 | ||
120 | } else | 120 | } else |
121 | input_event(&input_dev, EV_KEY, keycode, !0); | 121 | input_event(input_dev, EV_KEY, keycode, !0); |
122 | 122 | ||
123 | keyup_timer.expires = jiffies + UP_TIMEOUT; | 123 | keyup_timer.expires = jiffies + UP_TIMEOUT; |
124 | keyup_timer.data = keycode; | 124 | keyup_timer.data = keycode; |
@@ -132,13 +132,13 @@ static void input_register_keys(void) | |||
132 | { | 132 | { |
133 | int i; | 133 | int i; |
134 | 134 | ||
135 | memset(input_dev.keybit, 0, sizeof(input_dev.keybit)); | 135 | memset(input_dev->keybit, 0, sizeof(input_dev->keybit)); |
136 | 136 | ||
137 | for (i = 0; i < sizeof(key_map) / sizeof(key_map[0]); i++) { | 137 | for (i = 0; i < ARRAY_SIZE(key_map); i++) { |
138 | if (key_map[i] > KEY_MAX) | 138 | if (key_map[i] > KEY_MAX) |
139 | key_map[i] = 0; | 139 | key_map[i] = 0; |
140 | else if (key_map[i] > KEY_RESERVED) | 140 | else if (key_map[i] > KEY_RESERVED) |
141 | set_bit(key_map[i], input_dev.keybit); | 141 | set_bit(key_map[i], input_dev->keybit); |
142 | } | 142 | } |
143 | } | 143 | } |
144 | 144 | ||
@@ -216,12 +216,17 @@ int __init av7110_ir_init(struct av7110 *av7110) | |||
216 | init_timer(&keyup_timer); | 216 | init_timer(&keyup_timer); |
217 | keyup_timer.data = 0; | 217 | keyup_timer.data = 0; |
218 | 218 | ||
219 | input_dev.name = "DVB on-card IR receiver"; | 219 | input_dev = input_allocate_device(); |
220 | set_bit(EV_KEY, input_dev.evbit); | 220 | if (!input_dev) |
221 | set_bit(EV_REP, input_dev.evbit); | 221 | return -ENOMEM; |
222 | |||
223 | input_dev->name = "DVB on-card IR receiver"; | ||
224 | |||
225 | set_bit(EV_KEY, input_dev->evbit); | ||
226 | set_bit(EV_REP, input_dev->evbit); | ||
222 | input_register_keys(); | 227 | input_register_keys(); |
223 | input_register_device(&input_dev); | 228 | input_register_device(input_dev); |
224 | input_dev.timer.function = input_repeat_key; | 229 | input_dev->timer.function = input_repeat_key; |
225 | 230 | ||
226 | e = create_proc_entry("av7110_ir", S_IFREG | S_IRUGO | S_IWUSR, NULL); | 231 | e = create_proc_entry("av7110_ir", S_IFREG | S_IRUGO | S_IWUSR, NULL); |
227 | if (e) { | 232 | if (e) { |
@@ -256,7 +261,7 @@ void __exit av7110_ir_exit(struct av7110 *av7110) | |||
256 | if (av_cnt == 1) { | 261 | if (av_cnt == 1) { |
257 | del_timer_sync(&keyup_timer); | 262 | del_timer_sync(&keyup_timer); |
258 | remove_proc_entry("av7110_ir", NULL); | 263 | remove_proc_entry("av7110_ir", NULL); |
259 | input_unregister_device(&input_dev); | 264 | input_unregister_device(input_dev); |
260 | } | 265 | } |
261 | 266 | ||
262 | av_cnt--; | 267 | av_cnt--; |
diff --git a/drivers/media/dvb/ttpci/budget-ci.c b/drivers/media/dvb/ttpci/budget-ci.c index 2980db3ef22f..51c30ba68140 100644 --- a/drivers/media/dvb/ttpci/budget-ci.c +++ b/drivers/media/dvb/ttpci/budget-ci.c | |||
@@ -64,7 +64,7 @@ | |||
64 | 64 | ||
65 | struct budget_ci { | 65 | struct budget_ci { |
66 | struct budget budget; | 66 | struct budget budget; |
67 | struct input_dev input_dev; | 67 | struct input_dev *input_dev; |
68 | struct tasklet_struct msp430_irq_tasklet; | 68 | struct tasklet_struct msp430_irq_tasklet; |
69 | struct tasklet_struct ciintf_irq_tasklet; | 69 | struct tasklet_struct ciintf_irq_tasklet; |
70 | int slot_status; | 70 | int slot_status; |
@@ -145,7 +145,7 @@ static void msp430_ir_debounce(unsigned long data) | |||
145 | static void msp430_ir_interrupt(unsigned long data) | 145 | static void msp430_ir_interrupt(unsigned long data) |
146 | { | 146 | { |
147 | struct budget_ci *budget_ci = (struct budget_ci *) data; | 147 | struct budget_ci *budget_ci = (struct budget_ci *) data; |
148 | struct input_dev *dev = &budget_ci->input_dev; | 148 | struct input_dev *dev = budget_ci->input_dev; |
149 | unsigned int code = | 149 | unsigned int code = |
150 | ttpci_budget_debiread(&budget_ci->budget, DEBINOSWAP, DEBIADDR_IR, 2, 1, 0) >> 8; | 150 | ttpci_budget_debiread(&budget_ci->budget, DEBINOSWAP, DEBIADDR_IR, 2, 1, 0) >> 8; |
151 | 151 | ||
@@ -181,25 +181,27 @@ static void msp430_ir_interrupt(unsigned long data) | |||
181 | static int msp430_ir_init(struct budget_ci *budget_ci) | 181 | static int msp430_ir_init(struct budget_ci *budget_ci) |
182 | { | 182 | { |
183 | struct saa7146_dev *saa = budget_ci->budget.dev; | 183 | struct saa7146_dev *saa = budget_ci->budget.dev; |
184 | struct input_dev *input_dev; | ||
184 | int i; | 185 | int i; |
185 | 186 | ||
186 | memset(&budget_ci->input_dev, 0, sizeof(struct input_dev)); | 187 | budget_ci->input_dev = input_dev = input_allocate_device(); |
188 | if (!input_dev) | ||
189 | return -ENOMEM; | ||
187 | 190 | ||
188 | sprintf(budget_ci->ir_dev_name, "Budget-CI dvb ir receiver %s", saa->name); | 191 | sprintf(budget_ci->ir_dev_name, "Budget-CI dvb ir receiver %s", saa->name); |
189 | budget_ci->input_dev.name = budget_ci->ir_dev_name; | ||
190 | 192 | ||
191 | set_bit(EV_KEY, budget_ci->input_dev.evbit); | 193 | input_dev->name = budget_ci->ir_dev_name; |
192 | 194 | ||
193 | for (i = 0; i < sizeof(key_map) / sizeof(*key_map); i++) | 195 | set_bit(EV_KEY, input_dev->evbit); |
196 | for (i = 0; i < ARRAY_SIZE(key_map); i++) | ||
194 | if (key_map[i]) | 197 | if (key_map[i]) |
195 | set_bit(key_map[i], budget_ci->input_dev.keybit); | 198 | set_bit(key_map[i], input_dev->keybit); |
196 | 199 | ||
197 | input_register_device(&budget_ci->input_dev); | 200 | input_register_device(budget_ci->input_dev); |
198 | 201 | ||
199 | budget_ci->input_dev.timer.function = msp430_ir_debounce; | 202 | input_dev->timer.function = msp430_ir_debounce; |
200 | 203 | ||
201 | saa7146_write(saa, IER, saa7146_read(saa, IER) | MASK_06); | 204 | saa7146_write(saa, IER, saa7146_read(saa, IER) | MASK_06); |
202 | |||
203 | saa7146_setgpio(saa, 3, SAA7146_GPIO_IRQHI); | 205 | saa7146_setgpio(saa, 3, SAA7146_GPIO_IRQHI); |
204 | 206 | ||
205 | return 0; | 207 | return 0; |
@@ -208,7 +210,7 @@ static int msp430_ir_init(struct budget_ci *budget_ci) | |||
208 | static void msp430_ir_deinit(struct budget_ci *budget_ci) | 210 | static void msp430_ir_deinit(struct budget_ci *budget_ci) |
209 | { | 211 | { |
210 | struct saa7146_dev *saa = budget_ci->budget.dev; | 212 | struct saa7146_dev *saa = budget_ci->budget.dev; |
211 | struct input_dev *dev = &budget_ci->input_dev; | 213 | struct input_dev *dev = budget_ci->input_dev; |
212 | 214 | ||
213 | saa7146_write(saa, IER, saa7146_read(saa, IER) & ~MASK_06); | 215 | saa7146_write(saa, IER, saa7146_read(saa, IER) & ~MASK_06); |
214 | saa7146_setgpio(saa, 3, SAA7146_GPIO_INPUT); | 216 | saa7146_setgpio(saa, 3, SAA7146_GPIO_INPUT); |