 4b23aff083
			
		
	
	
	4b23aff083
	
	
	
		
			
			Kernel oops and panic messages are invaluable when debugging crashes. These messages often don't make it to flash based logging methods (say a syslog on jffs2) due to the overheads involved in writing to flash. This patch allows you to turn an MTD partition into a circular log buffer where kernel oops and panic messages are written to. The messages are obtained by registering a console driver and checking oops_in_progress. Erases are performed in advance to maximise the chances of a saving messages. To activate it, add console=ttyMTDx to the kernel commandline (where x is the mtd device number to use). Signed-off-by: Richard Purdie <rpurdie@openedhand.com> Signed-off-by: David Woodhouse <dwmw2@infradead.org>
		
			
				
	
	
		
			301 lines
		
	
	
	
		
			10 KiB
			
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			301 lines
		
	
	
	
		
			10 KiB
			
		
	
	
	
		
			Text
		
	
	
	
	
	
| # $Id: Kconfig,v 1.11 2005/11/07 11:14:19 gleixner Exp $
 | |
| 
 | |
| menuconfig MTD
 | |
| 	tristate "Memory Technology Device (MTD) support"
 | |
| 	depends on HAS_IOMEM
 | |
| 	help
 | |
| 	  Memory Technology Devices are flash, RAM and similar chips, often
 | |
| 	  used for solid state file systems on embedded devices. This option
 | |
| 	  will provide the generic support for MTD drivers to register
 | |
| 	  themselves with the kernel and for potential users of MTD devices
 | |
| 	  to enumerate the devices which are present and obtain a handle on
 | |
| 	  them. It will also allow you to select individual drivers for
 | |
| 	  particular hardware and users of MTD devices. If unsure, say N.
 | |
| 
 | |
| if MTD
 | |
| 
 | |
| config MTD_DEBUG
 | |
| 	bool "Debugging"
 | |
| 	help
 | |
| 	  This turns on low-level debugging for the entire MTD sub-system.
 | |
| 	  Normally, you should say 'N'.
 | |
| 
 | |
| config MTD_DEBUG_VERBOSE
 | |
| 	int "Debugging verbosity (0 = quiet, 3 = noisy)"
 | |
| 	depends on MTD_DEBUG
 | |
| 	default "0"
 | |
| 	help
 | |
| 	  Determines the verbosity level of the MTD debugging messages.
 | |
| 
 | |
| config MTD_CONCAT
 | |
| 	tristate "MTD concatenating support"
 | |
| 	help
 | |
| 	  Support for concatenating several MTD devices into a single
 | |
| 	  (virtual) one. This allows you to have -for example- a JFFS(2)
 | |
| 	  file system spanning multiple physical flash chips. If unsure,
 | |
| 	  say 'Y'.
 | |
| 
 | |
| config MTD_PARTITIONS
 | |
| 	bool "MTD partitioning support"
 | |
| 	help
 | |
| 	  If you have a device which needs to divide its flash chip(s) up
 | |
| 	  into multiple 'partitions', each of which appears to the user as
 | |
| 	  a separate MTD device, you require this option to be enabled. If
 | |
| 	  unsure, say 'Y'.
 | |
| 
 | |
| 	  Note, however, that you don't need this option for the DiskOnChip
 | |
| 	  devices. Partitioning on NFTL 'devices' is a different - that's the
 | |
| 	  'normal' form of partitioning used on a block device.
 | |
| 
 | |
| config MTD_REDBOOT_PARTS
 | |
| 	tristate "RedBoot partition table parsing"
 | |
| 	depends on MTD_PARTITIONS
 | |
| 	---help---
 | |
| 	  RedBoot is a ROM monitor and bootloader which deals with multiple
 | |
| 	  'images' in flash devices by putting a table one of the erase
 | |
| 	  blocks on the device, similar to a partition table, which gives
 | |
| 	  the offsets, lengths and names of all the images stored in the
 | |
| 	  flash.
 | |
| 
 | |
| 	  If you need code which can detect and parse this table, and register
 | |
| 	  MTD 'partitions' corresponding to each image in the table, enable
 | |
| 	  this option.
 | |
| 
 | |
| 	  You will still need the parsing functions to be called by the driver
 | |
| 	  for your particular device. It won't happen automatically. The
 | |
| 	  SA1100 map driver (CONFIG_MTD_SA1100) has an option for this, for
 | |
| 	  example.
 | |
| 
 | |
| config MTD_REDBOOT_DIRECTORY_BLOCK
 | |
| 	int "Location of RedBoot partition table"
 | |
| 	depends on MTD_REDBOOT_PARTS
 | |
| 	default "-1"
 | |
| 	---help---
 | |
| 	  This option is the Linux counterpart to the
 | |
| 	  CYGNUM_REDBOOT_FIS_DIRECTORY_BLOCK RedBoot compile time
 | |
| 	  option.
 | |
| 
 | |
| 	  The option specifies which Flash sectors holds the RedBoot
 | |
| 	  partition table.  A zero or positive value gives an absolute
 | |
| 	  erase block number. A negative value specifies a number of
 | |
| 	  sectors before the end of the device.
 | |
| 
 | |
| 	  For example "2" means block number 2, "-1" means the last
 | |
| 	  block and "-2" means the penultimate block.
 | |
| 
 | |
| config MTD_REDBOOT_PARTS_UNALLOCATED
 | |
| 	bool "Include unallocated flash regions"
 | |
| 	depends on MTD_REDBOOT_PARTS
 | |
| 	help
 | |
| 	  If you need to register each unallocated flash region as a MTD
 | |
| 	  'partition', enable this option.
 | |
| 
 | |
| config MTD_REDBOOT_PARTS_READONLY
 | |
| 	bool "Force read-only for RedBoot system images"
 | |
| 	depends on MTD_REDBOOT_PARTS
 | |
| 	help
 | |
| 	  If you need to force read-only for 'RedBoot', 'RedBoot Config' and
 | |
| 	  'FIS directory' images, enable this option.
 | |
| 
 | |
| config MTD_CMDLINE_PARTS
 | |
| 	bool "Command line partition table parsing"
 | |
| 	depends on MTD_PARTITIONS = "y" && MTD = "y"
 | |
| 	---help---
 | |
| 	  Allow generic configuration of the MTD partition tables via the kernel
 | |
| 	  command line. Multiple flash resources are supported for hardware where
 | |
| 	  different kinds of flash memory are available.
 | |
| 
 | |
| 	  You will still need the parsing functions to be called by the driver
 | |
| 	  for your particular device. It won't happen automatically. The
 | |
| 	  SA1100 map driver (CONFIG_MTD_SA1100) has an option for this, for
 | |
| 	  example.
 | |
| 
 | |
| 	  The format for the command line is as follows:
 | |
| 
 | |
| 	  mtdparts=<mtddef>[;<mtddef]
 | |
| 	  <mtddef>  := <mtd-id>:<partdef>[,<partdef>]
 | |
| 	  <partdef> := <size>[@offset][<name>][ro]
 | |
| 	  <mtd-id>  := unique id used in mapping driver/device
 | |
| 	  <size>    := standard linux memsize OR "-" to denote all
 | |
| 	  remaining space
 | |
| 	  <name>    := (NAME)
 | |
| 
 | |
| 	  Due to the way Linux handles the command line, no spaces are
 | |
| 	  allowed in the partition definition, including mtd id's and partition
 | |
| 	  names.
 | |
| 
 | |
| 	  Examples:
 | |
| 
 | |
| 	  1 flash resource (mtd-id "sa1100"), with 1 single writable partition:
 | |
| 	  mtdparts=sa1100:-
 | |
| 
 | |
| 	  Same flash, but 2 named partitions, the first one being read-only:
 | |
| 	  mtdparts=sa1100:256k(ARMboot)ro,-(root)
 | |
| 
 | |
| 	  If unsure, say 'N'.
 | |
| 
 | |
| config MTD_AFS_PARTS
 | |
| 	tristate "ARM Firmware Suite partition parsing"
 | |
| 	depends on ARM && MTD_PARTITIONS
 | |
| 	---help---
 | |
| 	  The ARM Firmware Suite allows the user to divide flash devices into
 | |
| 	  multiple 'images'. Each such image has a header containing its name
 | |
| 	  and offset/size etc.
 | |
| 
 | |
| 	  If you need code which can detect and parse these tables, and
 | |
| 	  register MTD 'partitions' corresponding to each image detected,
 | |
| 	  enable this option.
 | |
| 
 | |
| 	  You will still need the parsing functions to be called by the driver
 | |
| 	  for your particular device. It won't happen automatically. The
 | |
| 	  'armflash' map driver (CONFIG_MTD_ARMFLASH) does this, for example.
 | |
| 
 | |
| comment "User Modules And Translation Layers"
 | |
| 
 | |
| config MTD_CHAR
 | |
| 	tristate "Direct char device access to MTD devices"
 | |
| 	help
 | |
| 	  This provides a character device for each MTD device present in
 | |
| 	  the system, allowing the user to read and write directly to the
 | |
| 	  memory chips, and also use ioctl() to obtain information about
 | |
| 	  the device, or to erase parts of it.
 | |
| 
 | |
| config MTD_BLKDEVS
 | |
| 	tristate "Common interface to block layer for MTD 'translation layers'"
 | |
| 	depends on BLOCK
 | |
| 	default n
 | |
| 
 | |
| config MTD_BLOCK
 | |
| 	tristate "Caching block device access to MTD devices"
 | |
| 	depends on BLOCK
 | |
| 	select MTD_BLKDEVS
 | |
| 	---help---
 | |
| 	  Although most flash chips have an erase size too large to be useful
 | |
| 	  as block devices, it is possible to use MTD devices which are based
 | |
| 	  on RAM chips in this manner. This block device is a user of MTD
 | |
| 	  devices performing that function.
 | |
| 
 | |
| 	  At the moment, it is also required for the Journalling Flash File
 | |
| 	  System(s) to obtain a handle on the MTD device when it's mounted
 | |
| 	  (although JFFS and JFFS2 don't actually use any of the functionality
 | |
| 	  of the mtdblock device).
 | |
| 
 | |
| 	  Later, it may be extended to perform read/erase/modify/write cycles
 | |
| 	  on flash chips to emulate a smaller block size. Needless to say,
 | |
| 	  this is very unsafe, but could be useful for file systems which are
 | |
| 	  almost never written to.
 | |
| 
 | |
| 	  You do not need this option for use with the DiskOnChip devices. For
 | |
| 	  those, enable NFTL support (CONFIG_NFTL) instead.
 | |
| 
 | |
| config MTD_BLOCK_RO
 | |
| 	tristate "Readonly block device access to MTD devices"
 | |
| 	depends on MTD_BLOCK!=y && BLOCK
 | |
| 	select MTD_BLKDEVS
 | |
| 	help
 | |
| 	  This allows you to mount read-only file systems (such as cramfs)
 | |
| 	  from an MTD device, without the overhead (and danger) of the caching
 | |
| 	  driver.
 | |
| 
 | |
| 	  You do not need this option for use with the DiskOnChip devices. For
 | |
| 	  those, enable NFTL support (CONFIG_NFTL) instead.
 | |
| 
 | |
| config FTL
 | |
| 	tristate "FTL (Flash Translation Layer) support"
 | |
| 	depends on BLOCK
 | |
| 	select MTD_BLKDEVS
 | |
| 	---help---
 | |
| 	  This provides support for the original Flash Translation Layer which
 | |
| 	  is part of the PCMCIA specification. It uses a kind of pseudo-
 | |
| 	  file system on a flash device to emulate a block device with
 | |
| 	  512-byte sectors, on top of which you put a 'normal' file system.
 | |
| 
 | |
| 	  You may find that the algorithms used in this code are patented
 | |
| 	  unless you live in the Free World where software patents aren't
 | |
| 	  legal - in the USA you are only permitted to use this on PCMCIA
 | |
| 	  hardware, although under the terms of the GPL you're obviously
 | |
| 	  permitted to copy, modify and distribute the code as you wish. Just
 | |
| 	  not use it.
 | |
| 
 | |
| config NFTL
 | |
| 	tristate "NFTL (NAND Flash Translation Layer) support"
 | |
| 	depends on BLOCK
 | |
| 	select MTD_BLKDEVS
 | |
| 	---help---
 | |
| 	  This provides support for the NAND Flash Translation Layer which is
 | |
| 	  used on M-Systems' DiskOnChip devices. It uses a kind of pseudo-
 | |
| 	  file system on a flash device to emulate a block device with
 | |
| 	  512-byte sectors, on top of which you put a 'normal' file system.
 | |
| 
 | |
| 	  You may find that the algorithms used in this code are patented
 | |
| 	  unless you live in the Free World where software patents aren't
 | |
| 	  legal - in the USA you are only permitted to use this on DiskOnChip
 | |
| 	  hardware, although under the terms of the GPL you're obviously
 | |
| 	  permitted to copy, modify and distribute the code as you wish. Just
 | |
| 	  not use it.
 | |
| 
 | |
| config NFTL_RW
 | |
| 	bool "Write support for NFTL"
 | |
| 	depends on NFTL
 | |
| 	help
 | |
| 	  Support for writing to the NAND Flash Translation Layer, as used
 | |
| 	  on the DiskOnChip.
 | |
| 
 | |
| config INFTL
 | |
| 	tristate "INFTL (Inverse NAND Flash Translation Layer) support"
 | |
| 	depends on BLOCK
 | |
| 	select MTD_BLKDEVS
 | |
| 	---help---
 | |
| 	  This provides support for the Inverse NAND Flash Translation
 | |
| 	  Layer which is used on M-Systems' newer DiskOnChip devices. It
 | |
| 	  uses a kind of pseudo-file system on a flash device to emulate
 | |
| 	  a block device with 512-byte sectors, on top of which you put
 | |
| 	  a 'normal' file system.
 | |
| 
 | |
| 	  You may find that the algorithms used in this code are patented
 | |
| 	  unless you live in the Free World where software patents aren't
 | |
| 	  legal - in the USA you are only permitted to use this on DiskOnChip
 | |
| 	  hardware, although under the terms of the GPL you're obviously
 | |
| 	  permitted to copy, modify and distribute the code as you wish. Just
 | |
| 	  not use it.
 | |
| 
 | |
| config RFD_FTL
 | |
|         tristate "Resident Flash Disk (Flash Translation Layer) support"
 | |
| 	depends on BLOCK
 | |
| 	select MTD_BLKDEVS
 | |
| 	---help---
 | |
| 	  This provides support for the flash translation layer known
 | |
| 	  as the Resident Flash Disk (RFD), as used by the Embedded BIOS
 | |
| 	  of General Software. There is a blurb at:
 | |
| 
 | |
| 		http://www.gensw.com/pages/prod/bios/rfd.htm
 | |
| 
 | |
| config SSFDC
 | |
| 	tristate "NAND SSFDC (SmartMedia) read only translation layer"
 | |
| 	depends on BLOCK
 | |
| 	select MTD_BLKDEVS
 | |
| 	help
 | |
| 	  This enables read only access to SmartMedia formatted NAND
 | |
| 	  flash. You can mount it with FAT file system.
 | |
| 
 | |
| config MTD_OOPS
 | |
| 	tristate "Log panic/oops to an MTD buffer"
 | |
| 	depends on MTD
 | |
| 	help
 | |
| 	  This enables panic and oops messages to be logged to a circular
 | |
| 	  buffer in a flash partition where it can be read back at some
 | |
| 	  later point.
 | |
| 
 | |
| source "drivers/mtd/chips/Kconfig"
 | |
| 
 | |
| source "drivers/mtd/maps/Kconfig"
 | |
| 
 | |
| source "drivers/mtd/devices/Kconfig"
 | |
| 
 | |
| source "drivers/mtd/nand/Kconfig"
 | |
| 
 | |
| source "drivers/mtd/onenand/Kconfig"
 | |
| 
 | |
| source "drivers/mtd/ubi/Kconfig"
 | |
| 
 | |
| endif # MTD
 |