setup-sh7760.c 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. /*
  2. * SH7760 Setup
  3. *
  4. * Copyright (C) 2006 Paul Mundt
  5. *
  6. * This file is subject to the terms and conditions of the GNU General Public
  7. * License. See the file "COPYING" in the main directory of this archive
  8. * for more details.
  9. */
  10. #include <linux/platform_device.h>
  11. #include <linux/init.h>
  12. #include <linux/serial.h>
  13. #include <asm/sci.h>
  14. static struct plat_sci_port sci_platform_data[] = {
  15. {
  16. .mapbase = 0xfe600000,
  17. .flags = UPF_BOOT_AUTOCONF,
  18. .type = PORT_SCIF,
  19. .irqs = { 52, 53, 55, 54 },
  20. }, {
  21. .mapbase = 0xfe610000,
  22. .flags = UPF_BOOT_AUTOCONF,
  23. .type = PORT_SCIF,
  24. .irqs = { 72, 73, 75, 74 },
  25. }, {
  26. .mapbase = 0xfe620000,
  27. .flags = UPF_BOOT_AUTOCONF,
  28. .type = PORT_SCIF,
  29. .irqs = { 76, 77, 79, 78 },
  30. }, {
  31. .flags = 0,
  32. }
  33. };
  34. static struct platform_device sci_device = {
  35. .name = "sh-sci",
  36. .id = -1,
  37. .dev = {
  38. .platform_data = sci_platform_data,
  39. },
  40. };
  41. static struct platform_device *sh7760_devices[] __initdata = {
  42. &sci_device,
  43. };
  44. static int __init sh7760_devices_setup(void)
  45. {
  46. return platform_add_devices(sh7760_devices,
  47. ARRAY_SIZE(sh7760_devices));
  48. }
  49. __initcall(sh7760_devices_setup);
  50. /*
  51. * SH7760 INTC2-Style interrupts, vectors IRQ48-111 INTEVT 0x800-0xFE0
  52. */
  53. static struct intc2_data intc2_irq_table[] = {
  54. /* INTPRIO0 | INTMSK0 */
  55. {48, 0, 28, 0, 31, 3}, /* IRQ 4 */
  56. {49, 0, 24, 0, 30, 3}, /* IRQ 3 */
  57. {50, 0, 20, 0, 29, 3}, /* IRQ 2 */
  58. {51, 0, 16, 0, 28, 3}, /* IRQ 1 */
  59. /* 52-55 (INTEVT 0x880-0x8E0) unused/reserved */
  60. /* INTPRIO4 | INTMSK0 */
  61. {56, 4, 28, 0, 25, 3}, /* HCAN2_CHAN0 */
  62. {57, 4, 24, 0, 24, 3}, /* HCAN2_CHAN1 */
  63. {58, 4, 20, 0, 23, 3}, /* I2S_CHAN0 */
  64. {59, 4, 16, 0, 22, 3}, /* I2S_CHAN1 */
  65. {60, 4, 12, 0, 21, 3}, /* AC97_CHAN0 */
  66. {61, 4, 8, 0, 20, 3}, /* AC97_CHAN1 */
  67. {62, 4, 4, 0, 19, 3}, /* I2C_CHAN0 */
  68. {63, 4, 0, 0, 18, 3}, /* I2C_CHAN1 */
  69. /* INTPRIO8 | INTMSK0 */
  70. {52, 8, 16, 0, 11, 3}, /* SCIF0_ERI_IRQ */
  71. {53, 8, 16, 0, 10, 3}, /* SCIF0_RXI_IRQ */
  72. {54, 8, 16, 0, 9, 3}, /* SCIF0_BRI_IRQ */
  73. {55, 8, 16, 0, 8, 3}, /* SCIF0_TXI_IRQ */
  74. {64, 8, 28, 0, 17, 3}, /* USBHI_IRQ */
  75. {65, 8, 24, 0, 16, 3}, /* LCDC */
  76. /* 66, 67 unused */
  77. {68, 8, 20, 0, 14, 13}, /* DMABRGI0_IRQ */
  78. {69, 8, 20, 0, 13, 13}, /* DMABRGI1_IRQ */
  79. {70, 8, 20, 0, 12, 13}, /* DMABRGI2_IRQ */
  80. /* 71 unused */
  81. {72, 8, 12, 0, 7, 3}, /* SCIF1_ERI_IRQ */
  82. {73, 8, 12, 0, 6, 3}, /* SCIF1_RXI_IRQ */
  83. {74, 8, 12, 0, 5, 3}, /* SCIF1_BRI_IRQ */
  84. {75, 8, 12, 0, 4, 3}, /* SCIF1_TXI_IRQ */
  85. {76, 8, 8, 0, 3, 3}, /* SCIF2_ERI_IRQ */
  86. {77, 8, 8, 0, 2, 3}, /* SCIF2_RXI_IRQ */
  87. {78, 8, 8, 0, 1, 3}, /* SCIF2_BRI_IRQ */
  88. {79, 8, 8, 0, 0, 3}, /* SCIF2_TXI_IRQ */
  89. /* | INTMSK4 */
  90. {80, 8, 4, 4, 23, 3}, /* SIM_ERI */
  91. {81, 8, 4, 4, 22, 3}, /* SIM_RXI */
  92. {82, 8, 4, 4, 21, 3}, /* SIM_TXI */
  93. {83, 8, 4, 4, 20, 3}, /* SIM_TEI */
  94. {84, 8, 0, 4, 19, 3}, /* HSPII */
  95. /* INTPRIOC | INTMSK4 */
  96. /* 85-87 unused/reserved */
  97. {88, 12, 20, 4, 18, 3}, /* MMCI0 */
  98. {89, 12, 20, 4, 17, 3}, /* MMCI1 */
  99. {90, 12, 20, 4, 16, 3}, /* MMCI2 */
  100. {91, 12, 20, 4, 15, 3}, /* MMCI3 */
  101. {92, 12, 12, 4, 6, 3}, /* MFI (unsure, bug? in my 7760 manual*/
  102. /* 93-107 reserved/undocumented */
  103. {108,12, 4, 4, 1, 3}, /* ADC */
  104. {109,12, 0, 4, 0, 3}, /* CMTI */
  105. /* 110-111 reserved/unused */
  106. };
  107. void __init init_IRQ_intc2(void)
  108. {
  109. make_intc2_irq(intc2_irq_table, ARRAY_SIZE(intc2_irq_table));
  110. }