diff options
Diffstat (limited to 'drivers/media/dvb/ttpci/budget-ci.c')
-rw-r--r-- | drivers/media/dvb/ttpci/budget-ci.c | 24 |
1 files changed, 13 insertions, 11 deletions
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); |