Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ARM: OMAP: H3 workqueue fixes

Signed-off-by: Dirk Behme <dirk.behme@gmail.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>

authored by

Dirk Behme and committed by
Tony Lindgren
666cd174 eebdf7d7

+8 -5
+7 -5
arch/arm/mach-omap1/board-h3.c
··· 294 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 302 unsigned char expa; 301 303 int err = 0; 302 304 ··· 308 306 309 307 expa &= ~0x03; 310 308 311 - if (*mode & IR_SIRMODE) { 309 + if (mode & IR_SIRMODE) { 312 310 expa |= 0x01; 313 311 } else { /* MIR/FIR */ 314 312 expa |= 0x03; ··· 323 321 { 324 322 struct omap_irda_config *irda_config = dev->platform_data; 325 323 324 + irda_config->mode = mode; 326 325 cancel_delayed_work(&irda_config->gpio_expa); 327 - PREPARE_WORK(&irda_config->gpio_expa, set_trans_mode, &mode); 328 - #error this is not permitted - mode is an argument variable 326 + PREPARE_DELAYED_WORK(&irda_config->gpio_expa, set_trans_mode); 329 327 schedule_delayed_work(&irda_config->gpio_expa, 0); 330 328 331 329 return 0;
+1
include/asm-arm/arch-omap/irda.h
··· 31 31 unsigned long src_start; 32 32 int tx_trigger; 33 33 int rx_trigger; 34 + int mode; 34 35 }; 35 36 36 37 #endif