aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-omap1/board-h3.c
diff options
context:
space:
mode:
authorDirk Behme <dirk.behme@gmail.com>2007-01-25 19:26:46 -0500
committerTony Lindgren <tony@atomide.com>2007-08-22 03:42:51 -0400
commit666cd174c451c172dd115b9d94f150efe627b609 (patch)
tree1217adeb595a949dc556297b5661fe34b0f75826 /arch/arm/mach-omap1/board-h3.c
parenteebdf7d7c478682756fd29d376223f350311f105 (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/board-h3.c')
-rw-r--r--arch/arm/mach-omap1/board-h3.c12
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
297static void set_trans_mode(void *data) 297static 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;