Overview.txt 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253
  1. S3C24XX ARM Linux Overview
  2. ==========================
  3. Introduction
  4. ------------
  5. The Samsung S3C24XX range of ARM9 System-on-Chip CPUs are supported
  6. by the 's3c2410' architecture of ARM Linux. Currently the S3C2410,
  7. S3C2412, S3C2413, S3C2440 and S3C2442 devices are supported.
  8. Support for the S3C2400 series is in progress.
  9. Configuration
  10. -------------
  11. A generic S3C2410 configuration is provided, and can be used as the
  12. default by `make s3c2410_defconfig`. This configuration has support
  13. for all the machines, and the commonly used features on them.
  14. Certain machines may have their own default configurations as well,
  15. please check the machine specific documentation.
  16. Machines
  17. --------
  18. The currently supported machines are as follows:
  19. Simtec Electronics EB2410ITX (BAST)
  20. A general purpose development board, see EB2410ITX.txt for further
  21. details
  22. Simtec Electronics IM2440D20 (Osiris)
  23. CPU Module from Simtec Electronics, with a S3C2440A CPU, nand flash
  24. and a PCMCIA controller.
  25. Samsung SMDK2410
  26. Samsung's own development board, geared for PDA work.
  27. Samsung/Aiji SMDK2412
  28. The S3C2412 version of the SMDK2440.
  29. Samsung/Aiji SMDK2413
  30. The S3C2412 version of the SMDK2440.
  31. Samsung/Meritech SMDK2440
  32. The S3C2440 compatible version of the SMDK2440, which has the
  33. option of an S3C2440 or S3C2442 CPU module.
  34. Thorcom VR1000
  35. Custom embedded board
  36. HP IPAQ 1940
  37. Handheld (IPAQ), available in several varieties
  38. HP iPAQ rx3715
  39. S3C2440 based IPAQ, with a number of variations depending on
  40. features shipped.
  41. Acer N30
  42. A S3C2410 based PDA from Acer. There is a Wiki page at
  43. http://handhelds.org/moin/moin.cgi/AcerN30Documentation .
  44. AML M5900
  45. American Microsystems' M5900
  46. Nex Vision Nexcoder
  47. Nex Vision Otom
  48. Two machines by Nex Vision
  49. Adding New Machines
  50. -------------------
  51. The architecture has been designed to support as many machines as can
  52. be configured for it in one kernel build, and any future additions
  53. should keep this in mind before altering items outside of their own
  54. machine files.
  55. Machine definitions should be kept in linux/arch/arm/mach-s3c2410,
  56. and there are a number of examples that can be looked at.
  57. Read the kernel patch submission policies as well as the
  58. Documentation/arm directory before submitting patches. The
  59. ARM kernel series is managed by Russell King, and has a patch system
  60. located at http://www.arm.linux.org.uk/developer/patches/
  61. as well as mailing lists that can be found from the same site.
  62. As a courtesy, please notify <ben-linux@fluff.org> of any new
  63. machines or other modifications.
  64. Any large scale modifications, or new drivers should be discussed
  65. on the ARM kernel mailing list (linux-arm-kernel) before being
  66. attempted. See http://www.arm.linux.org.uk/mailinglists/ for the
  67. mailing list information.
  68. I2C
  69. ---
  70. The hardware I2C core in the CPU is supported in single master
  71. mode, and can be configured via platform data.
  72. RTC
  73. ---
  74. Support for the onboard RTC unit, including alarm function.
  75. This has recently been upgraded to use the new RTC core,
  76. and the module has been renamed to rtc-s3c to fit in with
  77. the new rtc naming scheme.
  78. Watchdog
  79. --------
  80. The onchip watchdog is available via the standard watchdog
  81. interface.
  82. NAND
  83. ----
  84. The current kernels now have support for the s3c2410 NAND
  85. controller. If there are any problems the latest linux-mtd
  86. code can be found from http://www.linux-mtd.infradead.org/
  87. Serial
  88. ------
  89. The s3c2410 serial driver provides support for the internal
  90. serial ports. These devices appear as /dev/ttySAC0 through 3.
  91. To create device nodes for these, use the following commands
  92. mknod ttySAC0 c 204 64
  93. mknod ttySAC1 c 204 65
  94. mknod ttySAC2 c 204 66
  95. GPIO
  96. ----
  97. The core contains support for manipulating the GPIO, see the
  98. documentation in GPIO.txt in the same directory as this file.
  99. Clock Management
  100. ----------------
  101. The core provides the interface defined in the header file
  102. include/asm-arm/hardware/clock.h, to allow control over the
  103. various clock units
  104. Suspend to RAM
  105. --------------
  106. For boards that provide support for suspend to RAM, the
  107. system can be placed into low power suspend.
  108. See Suspend.txt for more information.
  109. SPI
  110. ---
  111. SPI drivers are available for both the in-built hardware
  112. (although there is no DMA support yet) and a generic
  113. GPIO based solution.
  114. LEDs
  115. ----
  116. There is support for GPIO based LEDs via a platform driver
  117. in the LED subsystem.
  118. Platform Data
  119. -------------
  120. Whenever a device has platform specific data that is specified
  121. on a per-machine basis, care should be taken to ensure the
  122. following:
  123. 1) that default data is not left in the device to confuse the
  124. driver if a machine does not set it at startup
  125. 2) the data should (if possible) be marked as __initdata,
  126. to ensure that the data is thrown away if the machine is
  127. not the one currently in use.
  128. The best way of doing this is to make a function that
  129. kmalloc()s an area of memory, and copies the __initdata
  130. and then sets the relevant device's platform data. Making
  131. the function `__init` takes care of ensuring it is discarded
  132. with the rest of the initialisation code
  133. static __init void s3c24xx_xxx_set_platdata(struct xxx_data *pd)
  134. {
  135. struct s3c2410_xxx_mach_info *npd;
  136. npd = kmalloc(sizeof(struct s3c2410_xxx_mach_info), GFP_KERNEL);
  137. if (npd) {
  138. memcpy(npd, pd, sizeof(struct s3c2410_xxx_mach_info));
  139. s3c_device_xxx.dev.platform_data = npd;
  140. } else {
  141. printk(KERN_ERR "no memory for xxx platform data\n");
  142. }
  143. }
  144. Note, since the code is marked as __init, it should not be
  145. exported outside arch/arm/mach-s3c2410/, or exported to
  146. modules via EXPORT_SYMBOL() and related functions.
  147. Port Contributors
  148. -----------------
  149. Ben Dooks (BJD)
  150. Vincent Sanders
  151. Herbert Potzl
  152. Arnaud Patard (RTP)
  153. Roc Wu
  154. Klaus Fetscher
  155. Dimitry Andric
  156. Shannon Holland
  157. Guillaume Gourat (NexVision)
  158. Christer Weinigel (wingel) (Acer N30)
  159. Lucas Correia Villa Real (S3C2400 port)
  160. Document Author
  161. ---------------
  162. Ben Dooks, (c) 2004-2005,2006 Simtec Electronics