home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / src / linux-headers-2.6.17-6 / include / asm-arm / arch-sa1100 / h3600.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-08-11  |  4.7 KB  |  165 lines

  1. /*
  2.  *
  3.  * Definitions for H3600 Handheld Computer
  4.  *
  5.  * Copyright 2000 Compaq Computer Corporation.
  6.  *
  7.  * Use consistent with the GNU GPL is permitted,
  8.  * provided that this copyright notice is
  9.  * preserved in its entirety in all copies and derived works.
  10.  *
  11.  * COMPAQ COMPUTER CORPORATION MAKES NO WARRANTIES, EXPRESSED OR IMPLIED,
  12.  * AS TO THE USEFULNESS OR CORRECTNESS OF THIS CODE OR ITS
  13.  * FITNESS FOR ANY PARTICULAR PURPOSE.
  14.  *
  15.  * Author: Jamey Hicks.
  16.  *
  17.  * History:
  18.  *
  19.  * 2001-10-??    Andrew Christian   Added support for iPAQ H3800
  20.  *
  21.  */
  22.  
  23. #ifndef _INCLUDE_H3600_H_
  24. #define _INCLUDE_H3600_H_
  25.  
  26. /* generalized support for H3xxx series Compaq Pocket PC's */
  27. #define machine_is_h3xxx() (machine_is_h3100() || machine_is_h3600() || machine_is_h3800())
  28.  
  29. /* Physical memory regions corresponding to chip selects */
  30. #define H3600_EGPIO_PHYS     (SA1100_CS5_PHYS + 0x01000000)
  31. #define H3600_BANK_2_PHYS    SA1100_CS2_PHYS
  32. #define H3600_BANK_4_PHYS    SA1100_CS4_PHYS
  33.  
  34. /* Virtual memory regions corresponding to chip selects 2 & 4 (used on sleeves) */
  35. #define H3600_EGPIO_VIRT     0xf0000000
  36. #define H3600_BANK_2_VIRT    0xf1000000
  37. #define H3600_BANK_4_VIRT    0xf3800000
  38.  
  39. /*
  40.    Machine-independent GPIO definitions
  41.    --- these are common across all current iPAQ platforms
  42. */
  43.  
  44. #define GPIO_H3600_NPOWER_BUTTON    GPIO_GPIO (0)    /* Also known as the "off button"  */
  45.  
  46. #define GPIO_H3600_PCMCIA_CD1        GPIO_GPIO (10)
  47. #define GPIO_H3600_PCMCIA_IRQ1        GPIO_GPIO (11)
  48.  
  49. /* UDA1341 L3 Interface */
  50. #define GPIO_H3600_L3_DATA        GPIO_GPIO (14)
  51. #define GPIO_H3600_L3_MODE        GPIO_GPIO (15)
  52. #define GPIO_H3600_L3_CLOCK        GPIO_GPIO (16)
  53.  
  54. #define GPIO_H3600_PCMCIA_CD0        GPIO_GPIO (17)
  55. #define GPIO_H3600_SYS_CLK        GPIO_GPIO (19)
  56. #define GPIO_H3600_PCMCIA_IRQ0        GPIO_GPIO (21)
  57.  
  58. #define GPIO_H3600_COM_DCD        GPIO_GPIO (23)
  59. #define GPIO_H3600_OPT_IRQ        GPIO_GPIO (24)
  60. #define GPIO_H3600_COM_CTS        GPIO_GPIO (25)
  61. #define GPIO_H3600_COM_RTS        GPIO_GPIO (26)
  62.  
  63. #define IRQ_GPIO_H3600_NPOWER_BUTTON    IRQ_GPIO0
  64. #define IRQ_GPIO_H3600_PCMCIA_CD1    IRQ_GPIO10
  65. #define IRQ_GPIO_H3600_PCMCIA_IRQ1    IRQ_GPIO11
  66. #define IRQ_GPIO_H3600_PCMCIA_CD0    IRQ_GPIO17
  67. #define IRQ_GPIO_H3600_PCMCIA_IRQ0    IRQ_GPIO21
  68. #define IRQ_GPIO_H3600_COM_DCD        IRQ_GPIO23
  69. #define IRQ_GPIO_H3600_OPT_IRQ        IRQ_GPIO24
  70. #define IRQ_GPIO_H3600_COM_CTS        IRQ_GPIO25
  71.  
  72.  
  73. #ifndef __ASSEMBLY__
  74.  
  75. enum ipaq_egpio_type {
  76.     IPAQ_EGPIO_LCD_POWER,      /* Power to the LCD panel */
  77.     IPAQ_EGPIO_CODEC_NRESET,  /* Clear to reset the audio codec (remember to return high) */
  78.     IPAQ_EGPIO_AUDIO_ON,      /* Audio power */
  79.     IPAQ_EGPIO_QMUTE,      /* Audio muting */
  80.     IPAQ_EGPIO_OPT_NVRAM_ON,  /* Non-volatile RAM on extension sleeves (SPI interface) */
  81.     IPAQ_EGPIO_OPT_ON,      /* Power to extension sleeves */
  82.     IPAQ_EGPIO_CARD_RESET,      /* Reset PCMCIA cards on extension sleeve (???) */
  83.     IPAQ_EGPIO_OPT_RESET,      /* Reset option pack (???) */
  84.     IPAQ_EGPIO_IR_ON,      /* IR sensor/emitter power */
  85.     IPAQ_EGPIO_IR_FSEL,      /* IR speed selection 1->fast, 0->slow */
  86.     IPAQ_EGPIO_RS232_ON,      /* Maxim RS232 chip power */
  87.     IPAQ_EGPIO_VPP_ON,      /* Turn on power to flash programming */
  88.     IPAQ_EGPIO_LCD_ENABLE,      /* Enable/disable LCD controller */
  89. };
  90.  
  91. struct ipaq_model_ops {
  92.     const char     *generic_name;
  93.     void          (*control)(enum ipaq_egpio_type, int);
  94.     unsigned long (*read)(void);
  95.     void          (*blank_callback)(int blank);
  96.     int          (*pm_callback)(int req);        /* Primary model callback */
  97.     int          (*pm_callback_aux)(int req);  /* Secondary callback (used by HAL modules) */
  98. };
  99.  
  100. extern struct ipaq_model_ops ipaq_model_ops;
  101.  
  102. static __inline__ const char * h3600_generic_name(void)
  103. {
  104.     return ipaq_model_ops.generic_name;
  105. }
  106.  
  107. static __inline__ void assign_h3600_egpio(enum ipaq_egpio_type x, int level)
  108. {
  109.     if (ipaq_model_ops.control)
  110.         ipaq_model_ops.control(x,level);
  111. }
  112.  
  113. static __inline__ void clr_h3600_egpio(enum ipaq_egpio_type x)
  114. {
  115.     if (ipaq_model_ops.control)
  116.         ipaq_model_ops.control(x,0);
  117. }
  118.  
  119. static __inline__ void set_h3600_egpio(enum ipaq_egpio_type x)
  120. {
  121.     if (ipaq_model_ops.control)
  122.         ipaq_model_ops.control(x,1);
  123. }
  124.  
  125. static __inline__ unsigned long read_h3600_egpio(void)
  126. {
  127.     if (ipaq_model_ops.read)
  128.         return ipaq_model_ops.read();
  129.     return 0;
  130. }
  131.  
  132. static __inline__ int  h3600_register_blank_callback(void (*f)(int))
  133. {
  134.     ipaq_model_ops.blank_callback = f;
  135.     return 0;
  136. }
  137.  
  138. static __inline__ void h3600_unregister_blank_callback(void (*f)(int))
  139. {
  140.     ipaq_model_ops.blank_callback = NULL;
  141. }
  142.  
  143.  
  144. static __inline__ int  h3600_register_pm_callback(int (*f)(int))
  145. {
  146.     ipaq_model_ops.pm_callback_aux = f;
  147.     return 0;
  148. }
  149.  
  150. static __inline__ void h3600_unregister_pm_callback(int (*f)(int))
  151. {
  152.     ipaq_model_ops.pm_callback_aux = NULL;
  153. }
  154.  
  155. static __inline__ int h3600_power_management(int req)
  156. {
  157.     if (ipaq_model_ops.pm_callback)
  158.         return ipaq_model_ops.pm_callback(req);
  159.     return 0;
  160. }
  161.  
  162. #endif /* ASSEMBLY */
  163.  
  164. #endif /* _INCLUDE_H3600_H_ */
  165.