123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195 |
- S3C24XX ARM Linux Overview
- ==========================
- Introduction
- ------------
- The Samsung S3C24XX range of ARM9 System-on-Chip CPUs are supported
- by the 's3c2410' architecture of ARM Linux. Currently the S3C2410 and
- the S3C2440 are supported CPUs.
- Configuration
- -------------
- A generic S3C2410 configuration is provided, and can be used as the
- default by `make s3c2410_defconfig`. This configuration has support
- for all the machines, and the commonly used features on them.
- Certain machines may have their own default configurations as well,
- please check the machine specific documentation.
- Machines
- --------
- The currently supported machines are as follows:
- Simtec Electronics EB2410ITX (BAST)
- A general purpose development board, see EB2410ITX.txt for further
- details
- Samsung SMDK2410
- Samsung's own development board, geared for PDA work.
- Samsung/Meritech SMDK2440
- The S3C2440 compatible version of the SMDK2440
- Thorcom VR1000
- Custom embedded board
- HP IPAQ 1940
- Handheld (IPAQ), available in several varieties
- HP iPAQ rx3715
- S3C2440 based IPAQ, with a number of variations depending on
- features shipped.
- Acer N30
- A S3C2410 based PDA from Acer. There is a Wiki page at
- http://handhelds.org/moin/moin.cgi/AcerN30Documentation .
- Adding New Machines
- -------------------
- The archicture has been designed to support as many machines as can
- be configured for it in one kernel build, and any future additions
- should keep this in mind before altering items outside of their own
- machine files.
- Machine definitions should be kept in linux/arch/arm/mach-s3c2410,
- and there are a number of examples that can be looked at.
- Read the kernel patch submission policies as well as the
- Documentation/arm directory before submitting patches. The
- ARM kernel series is managed by Russell King, and has a patch system
- located at http://www.arm.linux.org.uk/developer/patches/
- as well as mailing lists that can be found from the same site.
- As a courtesy, please notify <ben-linux@fluff.org> of any new
- machines or other modifications.
- Any large scale modifications, or new drivers should be discussed
- on the ARM kernel mailing list (linux-arm-kernel) before being
- attempted. See http://www.arm.linux.org.uk/mailinglists/ for the
- mailing list information.
- NAND
- ----
- The current kernels now have support for the s3c2410 NAND
- controller. If there are any problems the latest linux-mtd
- CVS can be found from http://www.linux-mtd.infradead.org/
- Serial
- ------
- The s3c2410 serial driver provides support for the internal
- serial ports. These devices appear as /dev/ttySAC0 through 3.
- To create device nodes for these, use the following commands
- mknod ttySAC0 c 204 64
- mknod ttySAC1 c 204 65
- mknod ttySAC2 c 204 66
- GPIO
- ----
- The core contains support for manipulating the GPIO, see the
- documentation in GPIO.txt in the same directory as this file.
- Clock Management
- ----------------
- The core provides the interface defined in the header file
- include/asm-arm/hardware/clock.h, to allow control over the
- various clock units
- Platform Data
- -------------
- Whenever a device has platform specific data that is specified
- on a per-machine basis, care should be taken to ensure the
- following:
- 1) that default data is not left in the device to confuse the
- driver if a machine does not set it at startup
- 2) the data should (if possible) be marked as __initdata,
- to ensure that the data is thrown away if the machine is
- not the one currently in use.
- The best way of doing this is to make a function that
- kmalloc()s an area of memory, and copies the __initdata
- and then sets the relevant device's platform data. Making
- the function `__init` takes care of ensuring it is discarded
- with the rest of the initialisation code
- static __init void s3c24xx_xxx_set_platdata(struct xxx_data *pd)
- {
- struct s3c2410_xxx_mach_info *npd;
- npd = kmalloc(sizeof(struct s3c2410_xxx_mach_info), GFP_KERNEL);
- if (npd) {
- memcpy(npd, pd, sizeof(struct s3c2410_xxx_mach_info));
- s3c_device_xxx.dev.platform_data = npd;
- } else {
- printk(KERN_ERR "no memory for xxx platform data\n");
- }
- }
- Note, since the code is marked as __init, it should not be
- exported outside arch/arm/mach-s3c2410/, or exported to
- modules via EXPORT_SYMBOL() and related functions.
- Port Contributors
- -----------------
- Ben Dooks (BJD)
- Vincent Sanders
- Herbert Potzl
- Arnaud Patard (RTP)
- Roc Wu
- Klaus Fetscher
- Dimitry Andric
- Shannon Holland
- Guillaume Gourat (NexVision)
- Christer Weinigel (wingel) (Acer N30)
- Lucas Correia Villa Real (S3C2400 port)
- Document Changes
- ----------------
- 05 Sep 2004 - BJD - Added Document Changes section
- 05 Sep 2004 - BJD - Added Klaus Fetscher to list of contributors
- 25 Oct 2004 - BJD - Added Dimitry Andric to list of contributors
- 25 Oct 2004 - BJD - Updated the MTD from the 2.6.9 merge
- 21 Jan 2005 - BJD - Added rx3715, added Shannon to contributors
- 10 Feb 2005 - BJD - Added Guillaume Gourat to contributors
- 02 Mar 2005 - BJD - Added SMDK2440 to list of machines
- 06 Mar 2005 - BJD - Added Christer Weinigel
- 08 Mar 2005 - BJD - Added LCVR to list of people, updated introduction
- 08 Mar 2005 - BJD - Added section on adding machines
- 09 Sep 2005 - BJD - Added section on platform data
- Document Author
- ---------------
- Ben Dooks, (c) 2004-2005 Simtec Electronics
|