diff options
| -rw-r--r-- | arch/arm/mach-omap1/board-h3.c | 12 | ||||
| -rw-r--r-- | include/asm-arm/arch-omap/irda.h | 1 |
2 files changed, 8 insertions, 5 deletions
diff --git a/arch/arm/mach-omap1/board-h3.c b/arch/arm/mach-omap1/board-h3.c index 7b260b7c537b..79d4ef4c54d4 100644 --- a/arch/arm/mach-omap1/board-h3.c +++ b/arch/arm/mach-omap1/board-h3.c | |||
| @@ -294,9 +294,11 @@ static int h3_select_irda(struct device *dev, int state) | |||
| 294 | return err; | 294 | return err; |
| 295 | } | 295 | } |
| 296 | 296 | ||
| 297 | static void set_trans_mode(void *data) | 297 | static void set_trans_mode(struct work_struct *work) |
| 298 | { | 298 | { |
| 299 | int *mode = data; | 299 | struct omap_irda_config *irda_config = |
| 300 | container_of(work, struct omap_irda_config, gpio_expa.work); | ||
| 301 | int mode = irda_config->mode; | ||
| 300 | unsigned char expa; | 302 | unsigned char expa; |
| 301 | int err = 0; | 303 | int err = 0; |
| 302 | 304 | ||
| @@ -306,7 +308,7 @@ static void set_trans_mode(void *data) | |||
| 306 | 308 | ||
| 307 | expa &= ~0x03; | 309 | expa &= ~0x03; |
| 308 | 310 | ||
| 309 | if (*mode & IR_SIRMODE) { | 311 | if (mode & IR_SIRMODE) { |
| 310 | expa |= 0x01; | 312 | expa |= 0x01; |
| 311 | } else { /* MIR/FIR */ | 313 | } else { /* MIR/FIR */ |
| 312 | expa |= 0x03; | 314 | expa |= 0x03; |
| @@ -321,9 +323,9 @@ static int h3_transceiver_mode(struct device *dev, int mode) | |||
| 321 | { | 323 | { |
| 322 | struct omap_irda_config *irda_config = dev->platform_data; | 324 | struct omap_irda_config *irda_config = dev->platform_data; |
| 323 | 325 | ||
| 326 | irda_config->mode = mode; | ||
| 324 | cancel_delayed_work(&irda_config->gpio_expa); | 327 | cancel_delayed_work(&irda_config->gpio_expa); |
| 325 | PREPARE_WORK(&irda_config->gpio_expa, set_trans_mode, &mode); | 328 | PREPARE_DELAYED_WORK(&irda_config->gpio_expa, set_trans_mode); |
| 326 | #error this is not permitted - mode is an argument variable | ||
| 327 | schedule_delayed_work(&irda_config->gpio_expa, 0); | 329 | schedule_delayed_work(&irda_config->gpio_expa, 0); |
| 328 | 330 | ||
| 329 | return 0; | 331 | return 0; |
diff --git a/include/asm-arm/arch-omap/irda.h b/include/asm-arm/arch-omap/irda.h index 345a649ec838..96bb12fab438 100644 --- a/include/asm-arm/arch-omap/irda.h +++ b/include/asm-arm/arch-omap/irda.h | |||
| @@ -31,6 +31,7 @@ struct omap_irda_config { | |||
| 31 | unsigned long src_start; | 31 | unsigned long src_start; |
| 32 | int tx_trigger; | 32 | int tx_trigger; |
| 33 | int rx_trigger; | 33 | int rx_trigger; |
| 34 | int mode; | ||
| 34 | }; | 35 | }; |
| 35 | 36 | ||
| 36 | #endif | 37 | #endif |
