diff options
author | Dirk Behme <dirk.behme@gmail.com> | 2007-01-25 19:26:46 -0500 |
---|---|---|
committer | Tony Lindgren <tony@atomide.com> | 2007-08-22 03:42:51 -0400 |
commit | 666cd174c451c172dd115b9d94f150efe627b609 (patch) | |
tree | 1217adeb595a949dc556297b5661fe34b0f75826 /arch/arm/mach-omap1 | |
parent | eebdf7d7c478682756fd29d376223f350311f105 (diff) |
ARM: OMAP: H3 workqueue fixes
Signed-off-by: Dirk Behme <dirk.behme@gmail.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
Diffstat (limited to 'arch/arm/mach-omap1')
-rw-r--r-- | arch/arm/mach-omap1/board-h3.c | 12 |
1 files changed, 7 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; |