ARM: OMAP: Workqueue changes for board-h4.c
Subsystems (3)
PATCH 1/1 ARM: OMAP: Workqueue changes for board-h4.c
ARM: OMAP: Workqueue changes for board-h4.c
Signed-off-by Dirk Behme <dirk.behme_at_gmail.com>
arch/arm/mach-omap2/board-h4.c +7 -5
@@ -164,9 +164,11 @@ static int h4_select_irda(struct devicereturn err; } -static void set_trans_mode (void *data) +static void set_trans_mode (struct work_struct *work) { -int *mode = data; +struct omap_irda_config *irda_config = + container_of(work, struct omap_irda_config, gpio_expa.work); +int mode = irda_config->mode;unsigned char expa;int err =0 ;
@@ -176,7 +178,7 @@ static void set_trans_mode(void *data) expa &= ~0x01 ; -if (!(*mode &IR_SIRMODE )) {/* MIR/FIR */ +if (!(mode &IR_SIRMODE )) {/* MIR/FIR */ expa |=0x01 ; }
@@ -189,9 +191,9 @@ static int h4_transceiver_mode(struct de {struct omap_irda_config *irda_config = dev->platform_data; + irda_config->mode = mode;cancel_delayed_work (&irda_config->gpio_expa); -PREPARE_WORK (&irda_config->gpio_expa, set_trans_mode, &mode); -#error this is not permitted - mode is an argument variable +PREPARE_DELAYED_WORK (&irda_config->gpio_expa, set_trans_mode);schedule_delayed_work (&irda_config->gpio_expa,0 );return 0 ;
Tony Lindgren
maintainerQuoted 36 lines · Dirk Behme
ARM: OMAP: Workqueue changes for
board-h4.cSigned-off-by Dirk Behme <dirk.behme_at_gmail.com>Index:
linux-osk/arch/arm/mach-omap2/board-h4.c
===================================================================arch/arm/mach-omap2/board-h4.c +5
-3@@ -164,9 +164,11 @@ static int h4_select_irda(struct devicereturn err; } -static void set_trans_mode (void *data) +static void set_trans_mode (struct work_struct *work) { -int *mode = data; +struct omap_irda_config *irda_config = + container_of(work, struct omap_irda_config, gpio_expa.work); +int mode = irda_config->mode;unsigned char expa;int err =0 ;@@ -176,7 +178,7 @@ static void set_trans_mode(void *data) expa &= ~0x01 ; -if (!(*mode &IR_SIRMODE )) {/* MIR/FIR */ +if (!(mode &IR_SIRMODE )) {/* MIR/FIR */ expa |=0x01 ; }@@ -189,9 +191,9 @@ static int h4_transceiver_mode(struct de {
arch/arm/mach-omap2/board-h4.c static int h4_transceiver_mode(struct de · line 199
Quoted 10 lines
arch/arm/mach-omap2/board-h4.c +2
-2struct omap_irda_config *irda_config = dev->platform_data; + irda_config->mode = mode;cancel_delayed_work (&irda_config->gpio_expa); -PREPARE_WORK (&irda_config->gpio_expa, set_trans_mode, &mode); -#error this is not permitted - mode is an argument variable +PREPARE_DELAYED_WORK (&irda_config->gpio_expa, set_trans_mode);schedule_delayed_work (&irda_config->gpio_expa,0 );return 0 ;
Pushing today.
Tony