setup.c 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. /*
  2. * Renesas Technology SH7710 VoIP Gateway
  3. *
  4. * Copyright (C) 2006 Ranjit Deshpande
  5. * Kenati Technologies Inc.
  6. *
  7. * May be copied or modified under the terms of the GNU General Public
  8. * License. See linux/COPYING for more information.
  9. */
  10. #include <linux/init.h>
  11. #include <asm/machvec.h>
  12. #include <asm/irq.h>
  13. #include <asm/io.h>
  14. #include <asm/irq.h>
  15. /*
  16. * Initialize IRQ setting
  17. */
  18. static void __init sh7710voipgw_init_irq(void)
  19. {
  20. /* Disable all interrupts in IPR registers */
  21. ctrl_outw(0x0, INTC_IPRA);
  22. ctrl_outw(0x0, INTC_IPRB);
  23. ctrl_outw(0x0, INTC_IPRC);
  24. ctrl_outw(0x0, INTC_IPRD);
  25. ctrl_outw(0x0, INTC_IPRE);
  26. ctrl_outw(0x0, INTC_IPRF);
  27. ctrl_outw(0x0, INTC_IPRG);
  28. ctrl_outw(0x0, INTC_IPRH);
  29. ctrl_outw(0x0, INTC_IPRI);
  30. /* Ack all interrupt sources in the IRR0 register */
  31. ctrl_outb(0x3f, INTC_IRR0);
  32. /* Use IRQ0 - IRQ3 as active low interrupt lines i.e. disable
  33. * IRL mode.
  34. */
  35. ctrl_outw(0x2aa, INTC_ICR1);
  36. /* Now make IPR interrupts */
  37. make_ipr_irq(TIMER2_IRQ, TIMER2_IPR_ADDR,
  38. TIMER2_IPR_POS, TIMER2_PRIORITY);
  39. make_ipr_irq(WDT_IRQ, WDT_IPR_ADDR, WDT_IPR_POS, WDT_PRIORITY);
  40. /* SCIF0 */
  41. make_ipr_irq(SCIF0_ERI_IRQ, SCIF0_IPR_ADDR, SCIF0_IPR_POS,
  42. SCIF0_PRIORITY);
  43. make_ipr_irq(SCIF0_RXI_IRQ, SCIF0_IPR_ADDR, SCIF0_IPR_POS,
  44. SCIF0_PRIORITY);
  45. make_ipr_irq(SCIF0_BRI_IRQ, SCIF0_IPR_ADDR, SCIF0_IPR_POS,
  46. SCIF0_PRIORITY);
  47. make_ipr_irq(SCIF0_TXI_IRQ, SCIF0_IPR_ADDR, SCIF0_IPR_POS,
  48. SCIF0_PRIORITY);
  49. /* DMAC-1 */
  50. make_ipr_irq(DMTE0_IRQ, DMA_IPR_ADDR, DMA_IPR_POS, DMA_PRIORITY);
  51. make_ipr_irq(DMTE1_IRQ, DMA_IPR_ADDR, DMA_IPR_POS, DMA_PRIORITY);
  52. make_ipr_irq(DMTE2_IRQ, DMA_IPR_ADDR, DMA_IPR_POS, DMA_PRIORITY);
  53. make_ipr_irq(DMTE3_IRQ, DMA_IPR_ADDR, DMA_IPR_POS, DMA_PRIORITY);
  54. /* DMAC-2 */
  55. make_ipr_irq(DMTE4_IRQ, DMA2_IPR_ADDR, DMA2_IPR_POS, DMA2_PRIORITY);
  56. make_ipr_irq(DMTE4_IRQ, DMA2_IPR_ADDR, DMA2_IPR_POS, DMA2_PRIORITY);
  57. /* IPSEC */
  58. make_ipr_irq(IPSEC_IRQ, IPSEC_IPR_ADDR, IPSEC_IPR_POS, IPSEC_PRIORITY);
  59. /* EDMAC */
  60. make_ipr_irq(EDMAC0_IRQ, EDMAC0_IPR_ADDR, EDMAC0_IPR_POS,
  61. EDMAC0_PRIORITY);
  62. make_ipr_irq(EDMAC1_IRQ, EDMAC1_IPR_ADDR, EDMAC1_IPR_POS,
  63. EDMAC1_PRIORITY);
  64. make_ipr_irq(EDMAC2_IRQ, EDMAC2_IPR_ADDR, EDMAC2_IPR_POS,
  65. EDMAC2_PRIORITY);
  66. /* SIOF0 */
  67. make_ipr_irq(SIOF0_ERI_IRQ, SIOF0_IPR_ADDR, SIOF0_IPR_POS,
  68. SIOF0_PRIORITY);
  69. make_ipr_irq(SIOF0_TXI_IRQ, SIOF0_IPR_ADDR, SIOF0_IPR_POS,
  70. SIOF0_PRIORITY);
  71. make_ipr_irq(SIOF0_RXI_IRQ, SIOF0_IPR_ADDR, SIOF0_IPR_POS,
  72. SIOF0_PRIORITY);
  73. make_ipr_irq(SIOF0_CCI_IRQ, SIOF0_IPR_ADDR, SIOF0_IPR_POS,
  74. SIOF0_PRIORITY);
  75. /* SIOF1 */
  76. make_ipr_irq(SIOF1_ERI_IRQ, SIOF1_IPR_ADDR, SIOF1_IPR_POS,
  77. SIOF1_PRIORITY);
  78. make_ipr_irq(SIOF1_TXI_IRQ, SIOF1_IPR_ADDR, SIOF1_IPR_POS,
  79. SIOF1_PRIORITY);
  80. make_ipr_irq(SIOF1_RXI_IRQ, SIOF1_IPR_ADDR, SIOF1_IPR_POS,
  81. SIOF1_PRIORITY);
  82. make_ipr_irq(SIOF1_CCI_IRQ, SIOF1_IPR_ADDR, SIOF1_IPR_POS,
  83. SIOF1_PRIORITY);
  84. /* SLIC IRQ's */
  85. make_ipr_irq(IRQ1_IRQ, IRQ1_IPR_ADDR, IRQ1_IPR_POS, IRQ1_PRIORITY);
  86. make_ipr_irq(IRQ2_IRQ, IRQ2_IPR_ADDR, IRQ2_IPR_POS, IRQ2_PRIORITY);
  87. }
  88. /*
  89. * The Machine Vector
  90. */
  91. struct sh_machine_vector mv_sh7710voipgw __initmv = {
  92. .mv_name = "SH7710 VoIP Gateway",
  93. .mv_nr_irqs = 104,
  94. .mv_init_irq = sh7710voipgw_init_irq,
  95. };
  96. ALIAS_MV(sh7710voipgw)