diff options
author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-08-31 00:54:57 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-08-31 00:54:57 -0400 |
commit | feabb06bd70551668540f2305047675667f5f60f (patch) | |
tree | da65dedf73cae1e6fa59f923267a1b25501523a9 /arch/arm/mach-omap1/board-h3.c | |
parent | 62e6f1e8bb7c48c02b8bdb3085c5f6365682149b (diff) | |
parent | a98b38b83db3d377ede6b72cebe7ed2dc4127766 (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.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; |