aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm')
-rw-r--r--arch/arm/mach-sa1100/h3600.c139
-rw-r--r--arch/arm/mach-sa1100/include/mach/h3600.h23
-rw-r--r--arch/arm/mach-sa1100/include/mach/h3600_gpio.h22
3 files changed, 0 insertions, 184 deletions
diff --git a/arch/arm/mach-sa1100/h3600.c b/arch/arm/mach-sa1100/h3600.c
index 5e6011ce36ee..6792dd14b6e7 100644
--- a/arch/arm/mach-sa1100/h3600.c
+++ b/arch/arm/mach-sa1100/h3600.c
@@ -49,9 +49,6 @@
49 49
50#include "generic.h" 50#include "generic.h"
51 51
52void (*assign_h3600_egpio)(enum ipaq_egpio_type x, int level);
53EXPORT_SYMBOL(assign_h3600_egpio);
54
55struct gpio_default_state { 52struct gpio_default_state {
56 int gpio; 53 int gpio;
57 int mode; 54 int mode;
@@ -306,72 +303,6 @@ static void __init h3xxx_map_io(void)
306 303
307#ifdef CONFIG_SA1100_H3100 304#ifdef CONFIG_SA1100_H3100
308 305
309#define H3100_EGPIO (*(volatile unsigned int *)H3600_EGPIO_VIRT)
310static unsigned int h3100_egpio = 0;
311
312static void h3100_control_egpio(enum ipaq_egpio_type x, int setp)
313{
314 unsigned int egpio = 0;
315 long gpio = 0;
316 unsigned long flags;
317
318 switch (x) {
319 case IPAQ_EGPIO_LCD_POWER:
320 egpio |= EGPIO_H3600_LCD_ON;
321 gpio |= GPIO_H3100_LCD_3V_ON;
322 break;
323 case IPAQ_EGPIO_LCD_ENABLE:
324 break;
325 case IPAQ_EGPIO_CODEC_NRESET:
326 egpio |= EGPIO_H3600_CODEC_NRESET;
327 break;
328 case IPAQ_EGPIO_AUDIO_ON:
329 gpio |= GPIO_H3100_AUD_PWR_ON
330 | GPIO_H3100_AUD_ON;
331 break;
332 case IPAQ_EGPIO_QMUTE:
333 gpio |= GPIO_H3100_QMUTE;
334 break;
335 case IPAQ_EGPIO_OPT_NVRAM_ON:
336 egpio |= EGPIO_H3600_OPT_NVRAM_ON;
337 break;
338 case IPAQ_EGPIO_OPT_ON:
339 egpio |= EGPIO_H3600_OPT_ON;
340 break;
341 case IPAQ_EGPIO_CARD_RESET:
342 egpio |= EGPIO_H3600_CARD_RESET;
343 break;
344 case IPAQ_EGPIO_OPT_RESET:
345 egpio |= EGPIO_H3600_OPT_RESET;
346 break;
347 case IPAQ_EGPIO_IR_ON:
348 gpio |= GPIO_H3100_IR_ON;
349 break;
350 case IPAQ_EGPIO_IR_FSEL:
351 gpio |= GPIO_H3100_IR_FSEL;
352 break;
353 case IPAQ_EGPIO_RS232_ON:
354 egpio |= EGPIO_H3600_RS232_ON;
355 break;
356 case IPAQ_EGPIO_VPP_ON:
357 egpio |= EGPIO_H3600_VPP_ON;
358 break;
359 }
360
361 if (egpio || gpio) {
362 local_irq_save(flags);
363 if (setp) {
364 h3100_egpio |= egpio;
365 GPSR = gpio;
366 } else {
367 h3100_egpio &= ~egpio;
368 GPCR = gpio;
369 }
370 H3100_EGPIO = h3100_egpio;
371 local_irq_restore(flags);
372 }
373}
374
375#define H3100_DIRECT_EGPIO (GPIO_H3100_BT_ON \ 306#define H3100_DIRECT_EGPIO (GPIO_H3100_BT_ON \
376 | GPIO_H3100_GPIO3 \ 307 | GPIO_H3100_GPIO3 \
377 | GPIO_H3100_QMUTE \ 308 | GPIO_H3100_QMUTE \
@@ -409,9 +340,6 @@ static void __init h3100_map_io(void)
409 /* Older bootldrs put GPIO2-9 in alternate mode on the 340 /* Older bootldrs put GPIO2-9 in alternate mode on the
410 assumption that they are used for video */ 341 assumption that they are used for video */
411 GAFR &= ~H3100_DIRECT_EGPIO; 342 GAFR &= ~H3100_DIRECT_EGPIO;
412
413 H3100_EGPIO = h3100_egpio;
414 assign_h3600_egpio = h3100_control_egpio;
415} 343}
416 344
417/* 345/*
@@ -465,70 +393,6 @@ MACHINE_END
465 393
466#ifdef CONFIG_SA1100_H3600 394#ifdef CONFIG_SA1100_H3600
467 395
468#define H3600_EGPIO (*(volatile unsigned int *)H3600_EGPIO_VIRT)
469static unsigned int h3600_egpio = EGPIO_H3600_RS232_ON;
470
471static void h3600_control_egpio(enum ipaq_egpio_type x, int setp)
472{
473 unsigned int egpio = 0;
474 unsigned long flags;
475
476 switch (x) {
477 case IPAQ_EGPIO_LCD_POWER:
478 egpio |= EGPIO_H3600_LCD_ON |
479 EGPIO_H3600_LCD_PCI |
480 EGPIO_H3600_LCD_5V_ON |
481 EGPIO_H3600_LVDD_ON;
482 break;
483 case IPAQ_EGPIO_LCD_ENABLE:
484 break;
485 case IPAQ_EGPIO_CODEC_NRESET:
486 egpio |= EGPIO_H3600_CODEC_NRESET;
487 break;
488 case IPAQ_EGPIO_AUDIO_ON:
489 egpio |= EGPIO_H3600_AUD_AMP_ON |
490 EGPIO_H3600_AUD_PWR_ON;
491 break;
492 case IPAQ_EGPIO_QMUTE:
493 egpio |= EGPIO_H3600_QMUTE;
494 break;
495 case IPAQ_EGPIO_OPT_NVRAM_ON:
496 egpio |= EGPIO_H3600_OPT_NVRAM_ON;
497 break;
498 case IPAQ_EGPIO_OPT_ON:
499 egpio |= EGPIO_H3600_OPT_ON;
500 break;
501 case IPAQ_EGPIO_CARD_RESET:
502 egpio |= EGPIO_H3600_CARD_RESET;
503 break;
504 case IPAQ_EGPIO_OPT_RESET:
505 egpio |= EGPIO_H3600_OPT_RESET;
506 break;
507 case IPAQ_EGPIO_IR_ON:
508 egpio |= EGPIO_H3600_IR_ON;
509 break;
510 case IPAQ_EGPIO_IR_FSEL:
511 egpio |= EGPIO_H3600_IR_FSEL;
512 break;
513 case IPAQ_EGPIO_RS232_ON:
514 egpio |= EGPIO_H3600_RS232_ON;
515 break;
516 case IPAQ_EGPIO_VPP_ON:
517 egpio |= EGPIO_H3600_VPP_ON;
518 break;
519 }
520
521 if (egpio) {
522 local_irq_save(flags);
523 if (setp)
524 h3600_egpio |= egpio;
525 else
526 h3600_egpio &= ~egpio;
527 H3600_EGPIO = h3600_egpio;
528 local_irq_restore(flags);
529 }
530}
531
532/* 396/*
533 * helper for sa1100fb 397 * helper for sa1100fb
534 */ 398 */
@@ -567,9 +431,6 @@ static void __init h3600_map_io(void)
567 GPDR = GPIO_H3600_L3_CLOCK | 431 GPDR = GPIO_H3600_L3_CLOCK |
568 GPIO_H3600_L3_MODE | GPIO_H3600_L3_DATA | 432 GPIO_H3600_L3_MODE | GPIO_H3600_L3_DATA |
569 GPIO_H3600_CLK_SET1 | GPIO_H3600_CLK_SET0; 433 GPIO_H3600_CLK_SET1 | GPIO_H3600_CLK_SET0;
570
571 H3600_EGPIO = h3600_egpio; /* Maintains across sleep? */
572 assign_h3600_egpio = h3600_control_egpio;
573} 434}
574 435
575/* 436/*
diff --git a/arch/arm/mach-sa1100/include/mach/h3600.h b/arch/arm/mach-sa1100/include/mach/h3600.h
index 69f138c55407..19d7fe1b5874 100644
--- a/arch/arm/mach-sa1100/include/mach/h3600.h
+++ b/arch/arm/mach-sa1100/include/mach/h3600.h
@@ -66,27 +66,4 @@
66#define IRQ_GPIO_H3600_OPT_IRQ IRQ_GPIO24 66#define IRQ_GPIO_H3600_OPT_IRQ IRQ_GPIO24
67#define IRQ_GPIO_H3600_COM_CTS IRQ_GPIO25 67#define IRQ_GPIO_H3600_COM_CTS IRQ_GPIO25
68 68
69
70#ifndef __ASSEMBLY__
71
72enum ipaq_egpio_type {
73 IPAQ_EGPIO_LCD_POWER, /* Power to the LCD panel */
74 IPAQ_EGPIO_CODEC_NRESET, /* Clear to reset the audio codec (remember to return high) */
75 IPAQ_EGPIO_AUDIO_ON, /* Audio power */
76 IPAQ_EGPIO_QMUTE, /* Audio muting */
77 IPAQ_EGPIO_OPT_NVRAM_ON, /* Non-volatile RAM on extension sleeves (SPI interface) */
78 IPAQ_EGPIO_OPT_ON, /* Power to extension sleeves */
79 IPAQ_EGPIO_CARD_RESET, /* Reset PCMCIA cards on extension sleeve (???) */
80 IPAQ_EGPIO_OPT_RESET, /* Reset option pack (???) */
81 IPAQ_EGPIO_IR_ON, /* IR sensor/emitter power */
82 IPAQ_EGPIO_IR_FSEL, /* IR speed selection 1->fast, 0->slow */
83 IPAQ_EGPIO_RS232_ON, /* Maxim RS232 chip power */
84 IPAQ_EGPIO_VPP_ON, /* Turn on power to flash programming */
85 IPAQ_EGPIO_LCD_ENABLE, /* Enable/disable LCD controller */
86};
87
88extern void (*assign_h3600_egpio)(enum ipaq_egpio_type x, int level);
89
90#endif /* ASSEMBLY */
91
92#endif /* _INCLUDE_H3600_H_ */ 69#endif /* _INCLUDE_H3600_H_ */
diff --git a/arch/arm/mach-sa1100/include/mach/h3600_gpio.h b/arch/arm/mach-sa1100/include/mach/h3600_gpio.h
index ce80f1ae0c1a..6cfbc649f189 100644
--- a/arch/arm/mach-sa1100/include/mach/h3600_gpio.h
+++ b/arch/arm/mach-sa1100/include/mach/h3600_gpio.h
@@ -76,28 +76,6 @@
76#define IRQ_GPIO_H3600_ACTION_BUTTON IRQ_GPIO18 76#define IRQ_GPIO_H3600_ACTION_BUTTON IRQ_GPIO18
77#define IRQ_GPIO_H3600_OPT_DET IRQ_GPIO27 77#define IRQ_GPIO_H3600_OPT_DET IRQ_GPIO27
78 78
79/* H3100 / 3600 EGPIO pins */
80#define EGPIO_H3600_VPP_ON (1 << 0)
81#define EGPIO_H3600_CARD_RESET (1 << 1) /* reset the attached pcmcia/compactflash card. active high. */
82#define EGPIO_H3600_OPT_RESET (1 << 2) /* reset the attached option pack. active high. */
83#define EGPIO_H3600_CODEC_NRESET (1 << 3) /* reset the onboard UDA1341. active low. */
84#define EGPIO_H3600_OPT_NVRAM_ON (1 << 4) /* apply power to optionpack nvram, active high. */
85#define EGPIO_H3600_OPT_ON (1 << 5) /* full power to option pack. active high. */
86#define EGPIO_H3600_LCD_ON (1 << 6) /* enable 3.3V to LCD. active high. */
87#define EGPIO_H3600_RS232_ON (1 << 7) /* UART3 transceiver force on. Active high. */
88
89/* H3600 only EGPIO pins */
90#define EGPIO_H3600_LCD_PCI (1 << 8) /* LCD control IC enable. active high. */
91#define EGPIO_H3600_IR_ON (1 << 9) /* apply power to IR module. active high. */
92#define EGPIO_H3600_AUD_AMP_ON (1 << 10) /* apply power to audio power amp. active high. */
93#define EGPIO_H3600_AUD_PWR_ON (1 << 11) /* apply power to reset of audio circuit. active high. */
94#define EGPIO_H3600_QMUTE (1 << 12) /* mute control for onboard UDA1341. active high. */
95#define EGPIO_H3600_IR_FSEL (1 << 13) /* IR speed select: 1->fast, 0->slow */
96#define EGPIO_H3600_LCD_5V_ON (1 << 14) /* enable 5V to LCD. active high. */
97#define EGPIO_H3600_LVDD_ON (1 << 15) /* enable 9V and -6.5V to LCD. */
98
99
100/* gpiolib versions of EGPIOs */
101 79
102/* H3100 / 3600 EGPIO pins */ 80/* H3100 / 3600 EGPIO pins */
103#define H3XXX_EGPIO_BASE (GPIO_MAX + 1) 81#define H3XXX_EGPIO_BASE (GPIO_MAX + 1)