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-mips / vr41xx / vrc4173.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-08-11  |  6.5 KB  |  222 lines

  1. /*
  2.  *  vrc4173.h, Include file for NEC VRC4173.
  3.  *
  4.  *  Copyright (C) 2000  Michael R. McDonald
  5.  *  Copyright (C) 2001-2003 Montavista Software Inc.
  6.  *    Author: Yoichi Yuasa <yyuasa@mvista.com, or source@mvista.com>
  7.  *  Copyright (C) 2004  Yoichi Yuasa <yoichi_yuasa@tripeaks.co.jp>
  8.  *  Copyright (C) 2005 Ralf Baechle (ralf@linux-mips.org)
  9.  *
  10.  *  This program is free software; you can redistribute it and/or modify
  11.  *  it under the terms of the GNU General Public License as published by
  12.  *  the Free Software Foundation; either version 2 of the License, or
  13.  *  (at your option) any later version.
  14.  *
  15.  *  This program is distributed in the hope that it will be useful,
  16.  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  17.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  18.  *  GNU General Public License for more details.
  19.  *
  20.  *  You should have received a copy of the GNU General Public License
  21.  *  along with this program; if not, write to the Free Software
  22.  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  23.  */
  24. #ifndef __NEC_VRC4173_H
  25. #define __NEC_VRC4173_H
  26.  
  27. #include <asm/io.h>
  28.  
  29. /*
  30.  * Interrupt Number
  31.  */
  32. #define VRC4173_IRQ_BASE    72
  33. #define VRC4173_IRQ(x)        (VRC4173_IRQ_BASE + (x))
  34. #define VRC4173_USB_IRQ        VRC4173_IRQ(0)
  35. #define VRC4173_PCMCIA2_IRQ    VRC4173_IRQ(1)
  36. #define VRC4173_PCMCIA1_IRQ    VRC4173_IRQ(2)
  37. #define VRC4173_PS2CH2_IRQ    VRC4173_IRQ(3)
  38. #define VRC4173_PS2CH1_IRQ    VRC4173_IRQ(4)
  39. #define VRC4173_PIU_IRQ        VRC4173_IRQ(5)
  40. #define VRC4173_AIU_IRQ        VRC4173_IRQ(6)
  41. #define VRC4173_KIU_IRQ        VRC4173_IRQ(7)
  42. #define VRC4173_GIU_IRQ        VRC4173_IRQ(8)
  43. #define VRC4173_AC97_IRQ    VRC4173_IRQ(9)
  44. #define VRC4173_AC97INT1_IRQ    VRC4173_IRQ(10)
  45. /* RFU */
  46. #define VRC4173_DOZEPIU_IRQ    VRC4173_IRQ(13)
  47. #define VRC4173_IRQ_LAST    VRC4173_DOZEPIU_IRQ
  48.  
  49. /*
  50.  * PCI I/O accesses
  51.  */
  52. #ifdef CONFIG_VRC4173
  53.  
  54. extern unsigned long vrc4173_io_offset;
  55.  
  56. #define set_vrc4173_io_offset(offset)    do { vrc4173_io_offset = (offset); } while (0)
  57.  
  58. #define vrc4173_outb(val,port)        outb((val), vrc4173_io_offset+(port))
  59. #define vrc4173_outw(val,port)        outw((val), vrc4173_io_offset+(port))
  60. #define vrc4173_outl(val,port)        outl((val), vrc4173_io_offset+(port))
  61. #define vrc4173_outb_p(val,port)    outb_p((val), vrc4173_io_offset+(port))
  62. #define vrc4173_outw_p(val,port)    outw_p((val), vrc4173_io_offset+(port))
  63. #define vrc4173_outl_p(val,port)    outl_p((val), vrc4173_io_offset+(port))
  64.  
  65. #define vrc4173_inb(port)        inb(vrc4173_io_offset+(port))
  66. #define vrc4173_inw(port)        inw(vrc4173_io_offset+(port))
  67. #define vrc4173_inl(port)        inl(vrc4173_io_offset+(port))
  68. #define vrc4173_inb_p(port)        inb_p(vrc4173_io_offset+(port))
  69. #define vrc4173_inw_p(port)        inw_p(vrc4173_io_offset+(port))
  70. #define vrc4173_inl_p(port)        inl_p(vrc4173_io_offset+(port))
  71.  
  72. #define vrc4173_outsb(port,addr,count)    outsb(vrc4173_io_offset+(port),(addr),(count))
  73. #define vrc4173_outsw(port,addr,count)    outsw(vrc4173_io_offset+(port),(addr),(count))
  74. #define vrc4173_outsl(port,addr,count)    outsl(vrc4173_io_offset+(port),(addr),(count))
  75.  
  76. #define vrc4173_insb(port,addr,count)    insb(vrc4173_io_offset+(port),(addr),(count))
  77. #define vrc4173_insw(port,addr,count)    insw(vrc4173_io_offset+(port),(addr),(count))
  78. #define vrc4173_insl(port,addr,count)    insl(vrc4173_io_offset+(port),(addr),(count))
  79.  
  80. #else
  81.  
  82. #define set_vrc4173_io_offset(offset)    do {} while (0)
  83.  
  84. #define vrc4173_outb(val,port)        do {} while (0)
  85. #define vrc4173_outw(val,port)        do {} while (0)
  86. #define vrc4173_outl(val,port)        do {} while (0)
  87. #define vrc4173_outb_p(val,port)    do {} while (0)
  88. #define vrc4173_outw_p(val,port)    do {} while (0)
  89. #define vrc4173_outl_p(val,port)    do {} while (0)
  90.  
  91. #define vrc4173_inb(port)        0
  92. #define vrc4173_inw(port)        0
  93. #define vrc4173_inl(port)        0
  94. #define vrc4173_inb_p(port)        0
  95. #define vrc4173_inw_p(port)        0
  96. #define vrc4173_inl_p(port)        0
  97.  
  98. #define vrc4173_outsb(port,addr,count)    do {} while (0)
  99. #define vrc4173_outsw(port,addr,count)    do {} while (0)
  100. #define vrc4173_outsl(port,addr,count)    do {} while (0)
  101.  
  102. #define vrc4173_insb(port,addr,count)    do {} while (0)
  103. #define vrc4173_insw(port,addr,count)    do {} while (0)
  104. #define vrc4173_insl(port,addr,count)    do {} while (0)
  105.  
  106. #endif
  107.  
  108. /*
  109.  * Clock Mask Unit
  110.  */
  111. typedef enum vrc4173_clock {
  112.     VRC4173_PIU_CLOCK,
  113.     VRC4173_KIU_CLOCK,
  114.     VRC4173_AIU_CLOCK,
  115.     VRC4173_PS2_CH1_CLOCK,
  116.     VRC4173_PS2_CH2_CLOCK,
  117.     VRC4173_USBU_PCI_CLOCK,
  118.     VRC4173_CARDU1_PCI_CLOCK,
  119.     VRC4173_CARDU2_PCI_CLOCK,
  120.     VRC4173_AC97U_PCI_CLOCK,
  121.     VRC4173_USBU_48MHz_CLOCK,
  122.     VRC4173_EXT_48MHz_CLOCK,
  123.     VRC4173_48MHz_CLOCK,
  124. } vrc4173_clock_t;
  125.  
  126. #ifdef CONFIG_VRC4173
  127.  
  128. extern void vrc4173_supply_clock(vrc4173_clock_t clock);
  129. extern void vrc4173_mask_clock(vrc4173_clock_t clock);
  130.  
  131. #else
  132.  
  133. static inline void vrc4173_supply_clock(vrc4173_clock_t clock) {}
  134. static inline void vrc4173_mask_clock(vrc4173_clock_t clock) {}
  135.  
  136. #endif
  137.  
  138. /*
  139.  * Interupt Control Unit
  140.  */
  141.  
  142. #define VRC4173_PIUINT_COMMAND        0x0040
  143. #define VRC4173_PIUINT_DATA        0x0020
  144. #define VRC4173_PIUINT_PAGE1        0x0010
  145. #define VRC4173_PIUINT_PAGE0        0x0008
  146. #define VRC4173_PIUINT_DATALOST        0x0004
  147. #define VRC4173_PIUINT_STATUSCHANGE    0x0001
  148.  
  149. #ifdef CONFIG_VRC4173
  150.  
  151. extern void vrc4173_enable_piuint(uint16_t mask);
  152. extern void vrc4173_disable_piuint(uint16_t mask);
  153.  
  154. #else
  155.  
  156. static inline void vrc4173_enable_piuint(uint16_t mask) {}
  157. static inline void vrc4173_disable_piuint(uint16_t mask) {}
  158.  
  159. #endif
  160.  
  161. #define VRC4173_AIUINT_INPUT_DMAEND    0x0800
  162. #define VRC4173_AIUINT_INPUT_DMAHALT    0x0400
  163. #define VRC4173_AIUINT_INPUT_DATALOST    0x0200
  164. #define VRC4173_AIUINT_INPUT_DATA    0x0100
  165. #define VRC4173_AIUINT_OUTPUT_DMAEND    0x0008
  166. #define VRC4173_AIUINT_OUTPUT_DMAHALT    0x0004
  167. #define VRC4173_AIUINT_OUTPUT_NODATA    0x0002
  168.  
  169. #ifdef CONFIG_VRC4173
  170.  
  171. extern void vrc4173_enable_aiuint(uint16_t mask);
  172. extern void vrc4173_disable_aiuint(uint16_t mask);
  173.  
  174. #else
  175.  
  176. static inline void vrc4173_enable_aiuint(uint16_t mask) {}
  177. static inline void vrc4173_disable_aiuint(uint16_t mask) {}
  178.  
  179. #endif
  180.  
  181. #define VRC4173_KIUINT_DATALOST        0x0004
  182. #define VRC4173_KIUINT_DATAREADY    0x0002
  183. #define VRC4173_KIUINT_SCAN        0x0001
  184.  
  185. #ifdef CONFIG_VRC4173
  186.  
  187. extern void vrc4173_enable_kiuint(uint16_t mask);
  188. extern void vrc4173_disable_kiuint(uint16_t mask);
  189.  
  190. #else
  191.  
  192. static inline void vrc4173_enable_kiuint(uint16_t mask) {}
  193. static inline void vrc4173_disable_kiuint(uint16_t mask) {}
  194.  
  195. #endif
  196.  
  197. /*
  198.  * General-Purpose I/O Unit
  199.  */
  200. typedef enum vrc4173_function {
  201.     PS2_CHANNEL1,
  202.     PS2_CHANNEL2,
  203.     TOUCHPANEL,
  204.     KEYBOARD_8SCANLINES,
  205.     KEYBOARD_10SCANLINES,
  206.     KEYBOARD_12SCANLINES,
  207.     GPIO_0_15PINS,
  208.     GPIO_16_20PINS,
  209. } vrc4173_function_t;
  210.  
  211. #ifdef CONFIG_VRC4173
  212.  
  213. extern void vrc4173_select_function(vrc4173_function_t function);
  214.  
  215. #else
  216.  
  217. static inline void vrc4173_select_function(vrc4173_function_t function) {}
  218.  
  219. #endif
  220.  
  221. #endif /* __NEC_VRC4173_H */
  222.