Commit 55725495 authored by Tony Luck's avatar Tony Luck
Browse files

Auto-update from upstream

parents 067794a1 06024f21
Loading
Loading
Loading
Loading
+40 −1
Original line number Diff line number Diff line
@@ -81,7 +81,8 @@ Adding New Machines

  Any large scale modifications, or new drivers should be discussed
  on the ARM kernel mailing list (linux-arm-kernel) before being
  attempted.
  attempted. See http://www.arm.linux.org.uk/mailinglists/ for the
  mailing list information.


NAND
@@ -120,6 +121,43 @@ Clock Management
  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
-----------------

@@ -149,6 +187,7 @@ Document Changes
  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
---------------
+57 −9
Original line number Diff line number Diff line
@@ -116,12 +116,15 @@ hardware.
	line becoming inactive or the tty layer indicating we want
	to stop transmission due to an XOFF character.

	The driver should stop transmitting characters as soon as
	possible.

	Locking: port->lock taken.
	Interrupts: locally disabled.
	This call must not sleep

  start_tx(port)
	start transmitting characters.
	Start transmitting characters.

	Locking: port->lock taken.
	Interrupts: locally disabled.
@@ -281,26 +284,31 @@ hardware.
Other functions
---------------

uart_update_timeout(port,cflag,quot)
uart_update_timeout(port,cflag,baud)
	Update the FIFO drain timeout, port->timeout, according to the
	number of bits, parity, stop bits and quotient.
	number of bits, parity, stop bits and baud rate.

	Locking: caller is expected to take port->lock
	Interrupts: n/a

uart_get_baud_rate(port,termios)
uart_get_baud_rate(port,termios,old,min,max)
	Return the numeric baud rate for the specified termios, taking
	account of the special 38400 baud "kludge".  The B0 baud rate
	is mapped to 9600 baud.

	If the baud rate is not within min..max, then if old is non-NULL,
	the original baud rate will be tried.  If that exceeds the
	min..max constraint, 9600 baud will be returned.  termios will
	be updated to the baud rate in use.

	Note: min..max must always allow 9600 baud to be selected.

	Locking: caller dependent.
	Interrupts: n/a

uart_get_divisor(port,termios,oldtermios)
	Return the divsor (baud_base / baud) for the selected baud rate
	specified by termios.  If the baud rate is out of range, try
	the original baud rate specified by oldtermios (if non-NULL).
	If that fails, try 9600 baud.
uart_get_divisor(port,baud)
	Return the divsor (baud_base / baud) for the specified baud
	rate, appropriately rounded.

	If 38400 baud and custom divisor is selected, return the
	custom divisor instead.
@@ -308,6 +316,46 @@ uart_get_divisor(port,termios,oldtermios)
	Locking: caller dependent.
	Interrupts: n/a

uart_match_port(port1,port2)
	This utility function can be used to determine whether two
	uart_port structures describe the same port.

	Locking: n/a
	Interrupts: n/a

uart_write_wakeup(port)
	A driver is expected to call this function when the number of
	characters in the transmit buffer have dropped below a threshold.

	Locking: port->lock should be held.
	Interrupts: n/a

uart_register_driver(drv)
	Register a uart driver with the core driver.  We in turn register
	with the tty layer, and initialise the core driver per-port state.

	drv->port should be NULL, and the per-port structures should be
	registered using uart_add_one_port after this call has succeeded.

	Locking: none
	Interrupts: enabled

uart_unregister_driver()
	Remove all references to a driver from the core driver.  The low
	level driver must have removed all its ports via the
	uart_remove_one_port() if it registered them with uart_add_one_port().

	Locking: none
	Interrupts: enabled

uart_suspend_port()

uart_resume_port()

uart_add_one_port()

uart_remove_one_port()

Other notes
-----------

+16 −0
Original line number Diff line number Diff line
@@ -194,6 +194,13 @@ config ARCH_VERSATILE
	help
	  This enables support for ARM Ltd Versatile board.

config ARCH_REALVIEW
	bool "RealView"
	select ARM_AMBA
	select ICST307
	help
	  This enables support for ARM Ltd RealView boards.

config ARCH_IMX
	bool "IMX"

@@ -244,6 +251,8 @@ source "arch/arm/mach-versatile/Kconfig"

source "arch/arm/mach-aaec2000/Kconfig"

source "arch/arm/mach-realview/Kconfig"

# Definitions to make life easier
config ARCH_ACORN
	bool
@@ -340,6 +349,13 @@ config NR_CPUS
	depends on SMP
	default "4"

config HOTPLUG_CPU
	bool "Support for hot-pluggable CPUs (EXPERIMENTAL)"
	depends on SMP && HOTPLUG && EXPERIMENTAL
	help
	  Say Y here to experiment with turning CPUs off and on.  CPUs
	  can be controlled through /sys/devices/system/cpu.

config PREEMPT
	bool "Preemptible Kernel (EXPERIMENTAL)"
	depends on EXPERIMENTAL
+1 −0
Original line number Diff line number Diff line
@@ -99,6 +99,7 @@ textaddr-$(CONFIG_ARCH_FORTUNET) := 0xc0008000
 machine-$(CONFIG_ARCH_IMX)	   := imx
 machine-$(CONFIG_ARCH_H720X)	   := h720x
 machine-$(CONFIG_ARCH_AAEC2000)   := aaec2000
 machine-$(CONFIG_ARCH_REALVIEW)   := realview

ifeq ($(CONFIG_ARCH_EBSA110),y)
# This is what happens if you forget the IOCS16 line.
+1 −1
Original line number Diff line number Diff line
@@ -104,7 +104,7 @@ CONFIG_ARCH_IXCDP1100=y
CONFIG_ARCH_PRPMC1100=y
CONFIG_ARCH_IXDP4XX=y
CONFIG_CPU_IXP46X=y
CONFIG_MACH_GTWX5715=y
# CONFIG_MACH_GTWX5715 is not set

#
# IXP4xx Options
Loading