aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-omap1/board-h3.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@woody.linux-foundation.org>2007-08-31 00:54:57 -0400
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-08-31 00:54:57 -0400
commitfeabb06bd70551668540f2305047675667f5f60f (patch)
treeda65dedf73cae1e6fa59f923267a1b25501523a9 /arch/arm/mach-omap1/board-h3.c
parent62e6f1e8bb7c48c02b8bdb3085c5f6365682149b (diff)
parenta98b38b83db3d377ede6b72cebe7ed2dc4127766 (diff)
Merge master.kernel.org:/home/rmk/linux-2.6-arm
* master.kernel.org:/home/rmk/linux-2.6-arm: [ARM] 4561/1: i.MX/MX1 GPIO parenthes omission and input setup fix [ARM] 4557/1: Fix PXA irq gpio initialization [ARM] 4551/1: s3c24xx: fix wrong virtual address offsets [ARM] 4552/1: i.MX/MX1 GPIO output setup fix [ARM] 4553/1: ARM at91: define FIQ_START [ARM] 4554/1: replace consistent_sync() with flush_ioremap_region() ARM: OMAP: Enable serial idling and wakeup features ARM: OMAP2: Force APLLs always active ARM: OMAP: H3 workqueue fixes ARM: OMAP: OSK led fixes ARM: OMAP: fix OMAP1 dmtimer build warning ARM: OMAP: Fix 32k timer unsupported one-shot mode
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;