aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-omap2/board-h4.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@woody.linux-foundation.org>2007-03-04 16:15:48 -0500
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-03-04 16:15:48 -0500
commit42270035c6550101f7dc742a630c2590dd2d3ae0 (patch)
tree7b3d198f01b5c4c6b64f4cedf747f729438b7247 /arch/arm/mach-omap2/board-h4.c
parent2c89a8d09f03bc569d3237d97e2293d67c36d75d (diff)
parent8d91cbad8e6fd5b37bf584740f134508709ba035 (diff)
Merge master.kernel.org:/home/rmk/linux-2.6-arm
* master.kernel.org:/home/rmk/linux-2.6-arm: (30 commits) [ARM] Acorn: move the i2c bus driver into drivers/i2c [ARM] ARM SCSI: Don't try to dma_map_sg too many scatterlist entries [ARM] ARM FAS216: don't modify scsi_cmnd request_bufflen [ARM] rtc-pcf8583: Final fixes for this RTC on RiscPC [ARM] rtc-pcf8583: correct month and year offsets [ARM] rtc-pcf8583: don't use BCD_TO_BIN/BIN_TO_BCD [ARM] EBSA110: Work around build errors [ARM] 4241/1: Define mb() as compiler barrier on a uniprocessor system [ARM] 4239/1: S3C24XX: Update kconfig entries for PM [ARM] 4238/1: S3C24XX: docs: update suspend and resume [ARM] 4237/2: oprofile: Always allow backtraces on ARM [ARM] Yet more asm/apm-emulation.h stuff ARM: OMAP: Add missing get_irqnr_preamble and arch_ret_to_user for omap2 ARM: OMAP: Use linux/delay.h not asm/delay.h ARM: OMAP: Remove obsolete alsa typedefs ARM: OMAP: omap1510->15xx conversions needed for sx1 ARM: OMAP: Add missing includes to board-nokia770 ARM: OMAP: Workqueue changes for board-h4.c ARM: OMAP: dmtimer.c omap1 register fix ARM: OMAP: board-nokia770: correct lcd name ...
Diffstat (limited to 'arch/arm/mach-omap2/board-h4.c')
-rw-r--r--arch/arm/mach-omap2/board-h4.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/arch/arm/mach-omap2/board-h4.c b/arch/arm/mach-omap2/board-h4.c
index 3b1ad1d981a3..1e7ed6d22ca9 100644
--- a/arch/arm/mach-omap2/board-h4.c
+++ b/arch/arm/mach-omap2/board-h4.c
@@ -39,7 +39,6 @@
39#include "prcm-regs.h" 39#include "prcm-regs.h"
40 40
41#include <asm/io.h> 41#include <asm/io.h>
42#include <asm/delay.h>
43 42
44static unsigned int row_gpios[6] = { 88, 89, 124, 11, 6, 96 }; 43static unsigned int row_gpios[6] = { 88, 89, 124, 11, 6, 96 };
45static unsigned int col_gpios[7] = { 90, 91, 100, 36, 12, 97, 98 }; 44static unsigned int col_gpios[7] = { 90, 91, 100, 36, 12, 97, 98 };
@@ -179,9 +178,11 @@ static int h4_select_irda(struct device *dev, int state)
179 return err; 178 return err;
180} 179}
181 180
182static void set_trans_mode(void *data) 181static void set_trans_mode(struct work_struct *work)
183{ 182{
184 int *mode = data; 183 struct omap_irda_config *irda_config =
184 container_of(work, struct omap_irda_config, gpio_expa.work);
185 int mode = irda_config->mode;
185 unsigned char expa; 186 unsigned char expa;
186 int err = 0; 187 int err = 0;
187 188
@@ -191,7 +192,7 @@ static void set_trans_mode(void *data)
191 192
192 expa &= ~0x01; 193 expa &= ~0x01;
193 194
194 if (!(*mode & IR_SIRMODE)) { /* MIR/FIR */ 195 if (!(mode & IR_SIRMODE)) { /* MIR/FIR */
195 expa |= 0x01; 196 expa |= 0x01;
196 } 197 }
197 198
@@ -204,9 +205,9 @@ static int h4_transceiver_mode(struct device *dev, int mode)
204{ 205{
205 struct omap_irda_config *irda_config = dev->platform_data; 206 struct omap_irda_config *irda_config = dev->platform_data;
206 207
208 irda_config->mode = mode;
207 cancel_delayed_work(&irda_config->gpio_expa); 209 cancel_delayed_work(&irda_config->gpio_expa);
208 PREPARE_WORK(&irda_config->gpio_expa, set_trans_mode, &mode); 210 PREPARE_DELAYED_WORK(&irda_config->gpio_expa, set_trans_mode);
209#error this is not permitted - mode is an argument variable
210 schedule_delayed_work(&irda_config->gpio_expa, 0); 211 schedule_delayed_work(&irda_config->gpio_expa, 0);
211 212
212 return 0; 213 return 0;