			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,
  S3C2412, S3C2413, S3C2416 S3C2440, S3C2442, S3C2443 and S3C2450 devices
  are supported.

  Support for the S3C2400 and S3C24A0 series are in progress.

  The S3C2416 and S3C2450 devices are very similar and S3C2450 support is
  included under the arch/arm/mach-s3c2416 directory. Note, whilst core
  support for these SoCs is in, work on some of the extra peripherals
  and extra interrupts is still ongoing.


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.


Layout
------

  The core support files are located in the platform code contained in
  arch/arm/plat-s3c24xx with headers in include/asm-arm/plat-s3c24xx.
  This directory should be kept to items shared between the platform
  code (arch/arm/plat-s3c24xx) and the arch/arm/mach-s3c24* code.

  Each cpu has a directory with the support files for it, and the
  machines that carry the device. For example S3C2410 is contained
  in arch/arm/mach-s3c2410 and S3C2440 in arch/arm/mach-s3c2440

  Register, kernel and platform data definitions are held in the
  arch/arm/mach-s3c2410 directory./include/mach

arch/arm/plat-s3c24xx:

  Files in here are either common to all the s3c24xx family,
  or are common to only some of them with names to indicate this
  status. The files that are not common to all are generally named
  with the initial cpu they support in the series to ensure a short
  name without any possibility of confusion with newer devices.

  As an example, initially s3c244x would cover s3c2440 and s3c2442, but
  with the s3c2443 which does not share many of the same drivers in
  this directory, the name becomes invalid. We stick to s3c2440-<x>
  to indicate a driver that is s3c2440 and s3c2442 compatible.

  This does mean that to find the status of any given SoC, a number
  of directories may need to be searched.


Machines
--------

  The currently supported machines are as follows:

  Simtec Electronics EB2410ITX (BAST)

    A general purpose development board, see EB2410ITX.txt for further
    details

  Simtec Electronics IM2440D20 (Osiris)

    CPU Module from Simtec Electronics, with a S3C2440A CPU, nand flash
    and a PCMCIA controller.

  Samsung SMDK2410

    Samsung's own development board, geared for PDA work.

  Samsung/Aiji SMDK2412

    The S3C2412 version of the SMDK2440.

  Samsung/Aiji SMDK2413

    The S3C2412 version of the SMDK2440.

  Samsung/Meritech SMDK2440

    The S3C2440 compatible version of the SMDK2440, which has the
    option of an S3C2440 or S3C2442 CPU module.

  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 .

  AML M5900

    American Microsystems' M5900

  Nex Vision Nexcoder
  Nex Vision Otom

    Two machines by Nex Vision


Adding New Machines
-------------------

  The architecture 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.


I2C
---

  The hardware I2C core in the CPU is supported in single master
  mode, and can be configured via platform data.


RTC
---

  Support for the onboard RTC unit, including alarm function.

  This has recently been upgraded to use the new RTC core,
  and the module has been renamed to rtc-s3c to fit in with
  the new rtc naming scheme.


Watchdog
--------

  The onchip watchdog is available via the standard watchdog
  interface.


NAND
----

  The current kernels now have support for the s3c2410 NAND
  controller. If there are any problems the latest linux-mtd
  code can be found from http://www.linux-mtd.infradead.org/

  For more information see Documentation/arm/Samsung-S3C24XX/NAND.txt


SD/MMC
------

  The SD/MMC hardware pre S3C2443 is supported in the current
  kernel, the driver is drivers/mmc/host/s3cmci.c and supports
  1 and 4 bit SD or MMC cards.

  The SDIO behaviour of this driver has not been fully tested. There is no
  current support for hardware SDIO interrupts.


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.

  Newer kernels carry GPIOLIB, and support is being moved towards
  this with some of the older support in line to be removed.

  As of v2.6.34, the move towards using gpiolib support is almost
  complete, and very little of the old calls are left.


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


Suspend to RAM
--------------

  For boards that provide support for suspend to RAM, the
  system can be placed into low power suspend.

  See Suspend.txt for more information.


SPI
---

  SPI drivers are available for both the in-built hardware
  (although there is no DMA support yet) and a generic
  GPIO based solution.


LEDs
----

  There is support for GPIO based LEDs via a platform driver
  in the LED subsystem.


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 Author
---------------

Ben Dooks, Copyright 2004-2006 Simtec Electronics
