dev-uart.c 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. /* linux/arch/arm/plat-s3c64xx/dev-uart.c
  2. *
  3. * Copyright 2008 Openmoko, Inc.
  4. * Copyright 2008 Simtec Electronics
  5. * Ben Dooks <ben@simtec.co.uk>
  6. * http://armlinux.simtec.co.uk/
  7. *
  8. * Base S3C64XX UART resource and device definitions
  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 version 2 as
  12. * published by the Free Software Foundation.
  13. *
  14. */
  15. #include <linux/kernel.h>
  16. #include <linux/types.h>
  17. #include <linux/interrupt.h>
  18. #include <linux/list.h>
  19. #include <linux/platform_device.h>
  20. #include <asm/mach/arch.h>
  21. #include <asm/mach/irq.h>
  22. #include <mach/hardware.h>
  23. #include <mach/map.h>
  24. #include <plat/devs.h>
  25. /* Serial port registrations */
  26. /* 64xx uarts are closer together */
  27. static struct resource s3c64xx_uart0_resource[] = {
  28. [0] = {
  29. .start = S3C_PA_UART0,
  30. .end = S3C_PA_UART0 + 0x100,
  31. .flags = IORESOURCE_MEM,
  32. },
  33. [1] = {
  34. .start = IRQ_S3CUART_RX0,
  35. .end = IRQ_S3CUART_RX0,
  36. .flags = IORESOURCE_IRQ,
  37. },
  38. [2] = {
  39. .start = IRQ_S3CUART_TX0,
  40. .end = IRQ_S3CUART_TX0,
  41. .flags = IORESOURCE_IRQ,
  42. },
  43. [3] = {
  44. .start = IRQ_S3CUART_ERR0,
  45. .end = IRQ_S3CUART_ERR0,
  46. .flags = IORESOURCE_IRQ,
  47. }
  48. };
  49. static struct resource s3c64xx_uart1_resource[] = {
  50. [0] = {
  51. .start = S3C_PA_UART1,
  52. .end = S3C_PA_UART1 + 0x100,
  53. .flags = IORESOURCE_MEM,
  54. },
  55. [1] = {
  56. .start = IRQ_S3CUART_RX1,
  57. .end = IRQ_S3CUART_RX1,
  58. .flags = IORESOURCE_IRQ,
  59. },
  60. [2] = {
  61. .start = IRQ_S3CUART_TX1,
  62. .end = IRQ_S3CUART_TX1,
  63. .flags = IORESOURCE_IRQ,
  64. },
  65. [3] = {
  66. .start = IRQ_S3CUART_ERR1,
  67. .end = IRQ_S3CUART_ERR1,
  68. .flags = IORESOURCE_IRQ,
  69. },
  70. };
  71. static struct resource s3c6xx_uart2_resource[] = {
  72. [0] = {
  73. .start = S3C_PA_UART2,
  74. .end = S3C_PA_UART2 + 0x100,
  75. .flags = IORESOURCE_MEM,
  76. },
  77. [1] = {
  78. .start = IRQ_S3CUART_RX2,
  79. .end = IRQ_S3CUART_RX2,
  80. .flags = IORESOURCE_IRQ,
  81. },
  82. [2] = {
  83. .start = IRQ_S3CUART_TX2,
  84. .end = IRQ_S3CUART_TX2,
  85. .flags = IORESOURCE_IRQ,
  86. },
  87. [3] = {
  88. .start = IRQ_S3CUART_ERR2,
  89. .end = IRQ_S3CUART_ERR2,
  90. .flags = IORESOURCE_IRQ,
  91. },
  92. };
  93. static struct resource s3c64xx_uart3_resource[] = {
  94. [0] = {
  95. .start = S3C_PA_UART3,
  96. .end = S3C_PA_UART3 + 0x100,
  97. .flags = IORESOURCE_MEM,
  98. },
  99. [1] = {
  100. .start = IRQ_S3CUART_RX3,
  101. .end = IRQ_S3CUART_RX3,
  102. .flags = IORESOURCE_IRQ,
  103. },
  104. [2] = {
  105. .start = IRQ_S3CUART_TX3,
  106. .end = IRQ_S3CUART_TX3,
  107. .flags = IORESOURCE_IRQ,
  108. },
  109. [3] = {
  110. .start = IRQ_S3CUART_ERR3,
  111. .end = IRQ_S3CUART_ERR3,
  112. .flags = IORESOURCE_IRQ,
  113. },
  114. };
  115. struct s3c24xx_uart_resources s3c64xx_uart_resources[] __initdata = {
  116. [0] = {
  117. .resources = s3c64xx_uart0_resource,
  118. .nr_resources = ARRAY_SIZE(s3c64xx_uart0_resource),
  119. },
  120. [1] = {
  121. .resources = s3c64xx_uart1_resource,
  122. .nr_resources = ARRAY_SIZE(s3c64xx_uart1_resource),
  123. },
  124. [2] = {
  125. .resources = s3c6xx_uart2_resource,
  126. .nr_resources = ARRAY_SIZE(s3c6xx_uart2_resource),
  127. },
  128. [3] = {
  129. .resources = s3c64xx_uart3_resource,
  130. .nr_resources = ARRAY_SIZE(s3c64xx_uart3_resource),
  131. },
  132. };