ip22.h 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. /*
  2. * This file is subject to the terms and conditions of the GNU General Public
  3. * License. See the file "COPYING" in the main directory of this archive
  4. * for more details.
  5. *
  6. * ip22.h: Definitions for SGI IP22 machines
  7. *
  8. * Copyright (C) 1996 David S. Miller
  9. * Copyright (C) 1997, 1998, 1999, 2000 Ralf Baechle
  10. */
  11. #ifndef _SGI_IP22_H
  12. #define _SGI_IP22_H
  13. /*
  14. * These are the virtual IRQ numbers, we divide all IRQ's into
  15. * 'spaces', the 'space' determines where and how to enable/disable
  16. * that particular IRQ on an SGI machine. HPC DMA and MC DMA interrupts
  17. * are not supported this way. Driver is supposed to allocate HPC/MC
  18. * interrupt as shareable and then look to proper status bit (see
  19. * HAL2 driver). This will prevent many complications, trust me ;-)
  20. */
  21. #include <irq.h>
  22. #include <asm/sgi/ioc.h>
  23. #define SGINT_EISA 0 /* 16 EISA irq levels (Indigo2) */
  24. #define SGINT_CPU MIPS_CPU_IRQ_BASE /* MIPS CPU define 8 interrupt sources */
  25. #define SGINT_LOCAL0 (SGINT_CPU+8) /* 8 local0 irq levels */
  26. #define SGINT_LOCAL1 (SGINT_CPU+16) /* 8 local1 irq levels */
  27. #define SGINT_LOCAL2 (SGINT_CPU+24) /* 8 local2 vectored irq levels */
  28. #define SGINT_LOCAL3 (SGINT_CPU+32) /* 8 local3 vectored irq levels */
  29. #define SGINT_END (SGINT_CPU+40) /* End of 'spaces' */
  30. /*
  31. * Individual interrupt definitions for the Indy and Indigo2
  32. */
  33. #define SGI_SOFT_0_IRQ SGINT_CPU + 0
  34. #define SGI_SOFT_1_IRQ SGINT_CPU + 1
  35. #define SGI_LOCAL_0_IRQ SGINT_CPU + 2
  36. #define SGI_LOCAL_1_IRQ SGINT_CPU + 3
  37. #define SGI_8254_0_IRQ SGINT_CPU + 4
  38. #define SGI_8254_1_IRQ SGINT_CPU + 5
  39. #define SGI_BUSERR_IRQ SGINT_CPU + 6
  40. #define SGI_TIMER_IRQ SGINT_CPU + 7
  41. #define SGI_FIFO_IRQ SGINT_LOCAL0 + 0 /* FIFO full */
  42. #define SGI_GIO_0_IRQ SGI_FIFO_IRQ /* GIO-0 */
  43. #define SGI_WD93_0_IRQ SGINT_LOCAL0 + 1 /* 1st onboard WD93 */
  44. #define SGI_WD93_1_IRQ SGINT_LOCAL0 + 2 /* 2nd onboard WD93 */
  45. #define SGI_ENET_IRQ SGINT_LOCAL0 + 3 /* onboard ethernet */
  46. #define SGI_MCDMA_IRQ SGINT_LOCAL0 + 4 /* MC DMA done */
  47. #define SGI_PARPORT_IRQ SGINT_LOCAL0 + 5 /* Parallel port */
  48. #define SGI_GIO_1_IRQ SGINT_LOCAL0 + 6 /* GE / GIO-1 / 2nd-HPC */
  49. #define SGI_MAP_0_IRQ SGINT_LOCAL0 + 7 /* Mappable interrupt 0 */
  50. #define SGI_GPL0_IRQ SGINT_LOCAL1 + 0 /* General Purpose LOCAL1_N<0> */
  51. #define SGI_PANEL_IRQ SGINT_LOCAL1 + 1 /* front panel */
  52. #define SGI_GPL2_IRQ SGINT_LOCAL1 + 2 /* General Purpose LOCAL1_N<2> */
  53. #define SGI_MAP_1_IRQ SGINT_LOCAL1 + 3 /* Mappable interrupt 1 */
  54. #define SGI_HPCDMA_IRQ SGINT_LOCAL1 + 4 /* HPC DMA done */
  55. #define SGI_ACFAIL_IRQ SGINT_LOCAL1 + 5 /* AC fail */
  56. #define SGI_VINO_IRQ SGINT_LOCAL1 + 6 /* Indy VINO */
  57. #define SGI_GIO_2_IRQ SGINT_LOCAL1 + 7 /* Vert retrace / GIO-2 */
  58. /* Mapped interrupts. These interrupts may be mapped to either 0, or 1 */
  59. #define SGI_VERT_IRQ SGINT_LOCAL2 + 0 /* INT3: newport vertical status */
  60. #define SGI_EISA_IRQ SGINT_LOCAL2 + 3 /* EISA interrupts */
  61. #define SGI_KEYBD_IRQ SGINT_LOCAL2 + 4 /* keyboard */
  62. #define SGI_SERIAL_IRQ SGINT_LOCAL2 + 5 /* onboard serial */
  63. #define SGI_GIOEXP0_IRQ (SGINT_LOCAL2 + 6) /* Indy GIO EXP0 */
  64. #define SGI_GIOEXP1_IRQ (SGINT_LOCAL2 + 7) /* Indy GIO EXP1 */
  65. #define ip22_is_fullhouse() (sgioc->sysid & SGIOC_SYSID_FULLHOUSE)
  66. extern unsigned short ip22_eeprom_read(unsigned int *ctrl, int reg);
  67. extern unsigned short ip22_nvram_read(int reg);
  68. #endif