diff options
Diffstat (limited to 'arch/arm/mach-pxa/mainstone.c')
-rw-r--r-- | arch/arm/mach-pxa/mainstone.c | 32 |
1 files changed, 31 insertions, 1 deletions
diff --git a/arch/arm/mach-pxa/mainstone.c b/arch/arm/mach-pxa/mainstone.c index 85fdb5b1470a..a48c64026e1f 100644 --- a/arch/arm/mach-pxa/mainstone.c +++ b/arch/arm/mach-pxa/mainstone.c | |||
@@ -37,6 +37,7 @@ | |||
37 | #include <asm/arch/audio.h> | 37 | #include <asm/arch/audio.h> |
38 | #include <asm/arch/pxafb.h> | 38 | #include <asm/arch/pxafb.h> |
39 | #include <asm/arch/mmc.h> | 39 | #include <asm/arch/mmc.h> |
40 | #include <asm/arch/irda.h> | ||
40 | 41 | ||
41 | #include "generic.h" | 42 | #include "generic.h" |
42 | 43 | ||
@@ -294,6 +295,29 @@ static struct pxamci_platform_data mainstone_mci_platform_data = { | |||
294 | .exit = mainstone_mci_exit, | 295 | .exit = mainstone_mci_exit, |
295 | }; | 296 | }; |
296 | 297 | ||
298 | static void mainstone_irda_transceiver_mode(struct device *dev, int mode) | ||
299 | { | ||
300 | unsigned long flags; | ||
301 | |||
302 | local_irq_save(flags); | ||
303 | if (mode & IR_SIRMODE) { | ||
304 | MST_MSCWR1 &= ~MST_MSCWR1_IRDA_FIR; | ||
305 | } else if (mode & IR_FIRMODE) { | ||
306 | MST_MSCWR1 |= MST_MSCWR1_IRDA_FIR; | ||
307 | } | ||
308 | if (mode & IR_OFF) { | ||
309 | MST_MSCWR1 = (MST_MSCWR1 & ~MST_MSCWR1_IRDA_MASK) | MST_MSCWR1_IRDA_OFF; | ||
310 | } else { | ||
311 | MST_MSCWR1 = (MST_MSCWR1 & ~MST_MSCWR1_IRDA_MASK) | MST_MSCWR1_IRDA_FULL; | ||
312 | } | ||
313 | local_irq_restore(flags); | ||
314 | } | ||
315 | |||
316 | static struct pxaficp_platform_data mainstone_ficp_platform_data = { | ||
317 | .transceiver_cap = IR_SIRMODE | IR_FIRMODE | IR_OFF, | ||
318 | .transceiver_mode = mainstone_irda_transceiver_mode, | ||
319 | }; | ||
320 | |||
297 | static void __init mainstone_init(void) | 321 | static void __init mainstone_init(void) |
298 | { | 322 | { |
299 | /* | 323 | /* |
@@ -313,11 +337,17 @@ static void __init mainstone_init(void) | |||
313 | set_pxa_fb_info(&toshiba_ltm035a776c); | 337 | set_pxa_fb_info(&toshiba_ltm035a776c); |
314 | 338 | ||
315 | pxa_set_mci_info(&mainstone_mci_platform_data); | 339 | pxa_set_mci_info(&mainstone_mci_platform_data); |
340 | pxa_set_ficp_info(&mainstone_ficp_platform_data); | ||
316 | } | 341 | } |
317 | 342 | ||
318 | 343 | ||
319 | static struct map_desc mainstone_io_desc[] __initdata = { | 344 | static struct map_desc mainstone_io_desc[] __initdata = { |
320 | { MST_FPGA_VIRT, MST_FPGA_PHYS, 0x00100000, MT_DEVICE }, /* CPLD */ | 345 | { /* CPLD */ |
346 | .virtual = MST_FPGA_VIRT, | ||
347 | .pfn = __phys_to_pfn(MST_FPGA_PHYS), | ||
348 | .length = 0x00100000, | ||
349 | .type = MT_DEVICE | ||
350 | } | ||
321 | }; | 351 | }; |
322 | 352 | ||
323 | static void __init mainstone_map_io(void) | 353 | static void __init mainstone_map_io(void) |