mirror of
https://github.com/torvalds/linux.git
synced 2024-12-11 13:41:55 +00:00
b3e79e7682
Baikal-T1 Boot Controller provides an access to a RO storages, which are physically mapped into the SoC MMIO space. In particularly there are Internal ROM embedded into the SoC with a pre-installed firmware, externally attached SPI flash (also accessed in the read-only mode) and a memory region, which mirrors one of them in accordance with the currently enabled system boot mode (also called Boot ROM). This commit adds the Internal ROM support to the physmap driver of the MTD kernel subsystem. The driver will create the Internal ROM MTD as long as it is defined in the system dts file. The physically mapped SPI flash region will be used to implement the SPI-mem interface. The mirroring memory region won't be accessible directly since it's redundant due to both bootable regions being exposed anyway. Note we had to create a dedicated code for the ROMs since read from the corresponding memory regions must be done via the dword-aligned addresses. Signed-off-by: Serge Semin <Sergey.Semin@baikalelectronics.ru> Cc: Alexey Malahov <Alexey.Malahov@baikalelectronics.ru> Cc: Pavel Parkhomenko <Pavel.Parkhomenko@baikalelectronics.ru> Cc: Lee Jones <lee.jones@linaro.org> Cc: linux-mips@vger.kernel.org Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com> Link: https://lore.kernel.org/linux-mtd/20200920111445.21816-1-Sergey.Semin@baikalelectronics.ru
427 lines
14 KiB
Plaintext
427 lines
14 KiB
Plaintext
# SPDX-License-Identifier: GPL-2.0-only
|
|
menu "Mapping drivers for chip access"
|
|
depends on MTD!=n
|
|
depends on HAS_IOMEM
|
|
|
|
config MTD_COMPLEX_MAPPINGS
|
|
bool "Support non-linear mappings of flash chips"
|
|
help
|
|
This causes the chip drivers to allow for complicated
|
|
paged mappings of flash chips.
|
|
|
|
config MTD_PHYSMAP
|
|
tristate "Flash device in physical memory map"
|
|
depends on MTD_CFI || MTD_JEDECPROBE || MTD_ROM || MTD_RAM || MTD_LPDDR
|
|
help
|
|
This provides a 'mapping' driver which allows the NOR Flash and
|
|
ROM driver code to communicate with chips which are mapped
|
|
physically into the CPU's memory. You will need to configure
|
|
the physical address and size of the flash chips on your
|
|
particular board as well as the bus width, either statically
|
|
with config options or at run-time.
|
|
|
|
To compile this driver as a module, choose M here: the
|
|
module will be called physmap.
|
|
|
|
config MTD_PHYSMAP_COMPAT
|
|
bool "Physmap compat support"
|
|
depends on MTD_PHYSMAP
|
|
default n
|
|
help
|
|
Setup a simple mapping via the Kconfig options. Normally the
|
|
physmap configuration options are done via your board's
|
|
resource file.
|
|
|
|
If unsure, say N here.
|
|
|
|
config MTD_PHYSMAP_START
|
|
hex "Physical start address of flash mapping"
|
|
depends on MTD_PHYSMAP_COMPAT
|
|
default "0x8000000"
|
|
help
|
|
This is the physical memory location at which the flash chips
|
|
are mapped on your particular target board. Refer to the
|
|
memory map which should hopefully be in the documentation for
|
|
your board.
|
|
|
|
config MTD_PHYSMAP_LEN
|
|
hex "Physical length of flash mapping"
|
|
depends on MTD_PHYSMAP_COMPAT
|
|
default "0"
|
|
help
|
|
This is the total length of the mapping of the flash chips on
|
|
your particular board. If there is space, or aliases, in the
|
|
physical memory map between the chips, this could be larger
|
|
than the total amount of flash present. Refer to the memory
|
|
map which should hopefully be in the documentation for your
|
|
board.
|
|
|
|
config MTD_PHYSMAP_BANKWIDTH
|
|
int "Bank width in octets"
|
|
depends on MTD_PHYSMAP_COMPAT
|
|
default "2"
|
|
help
|
|
This is the total width of the data bus of the flash devices
|
|
in octets. For example, if you have a data bus width of 32
|
|
bits, you would set the bus width octet value to 4. This is
|
|
used internally by the CFI drivers.
|
|
|
|
config MTD_PHYSMAP_OF
|
|
bool "Memory device in physical memory map based on OF description"
|
|
depends on OF && MTD_PHYSMAP
|
|
help
|
|
This provides a 'mapping' driver which allows the NOR Flash, ROM
|
|
and RAM driver code to communicate with chips which are mapped
|
|
physically into the CPU's memory. The mapping description here is
|
|
taken from OF device tree.
|
|
|
|
config MTD_PHYSMAP_BT1_ROM
|
|
bool "Baikal-T1 Boot ROMs OF-based physical memory map handling"
|
|
depends on MTD_PHYSMAP_OF
|
|
depends on MIPS_BAIKAL_T1 || COMPILE_TEST
|
|
select MTD_COMPLEX_MAPPINGS
|
|
select MULTIPLEXER
|
|
select MUX_MMIO
|
|
help
|
|
This provides some extra DT physmap parsing for the Baikal-T1
|
|
platforms, some detection and setting up ROMs-specific accessors.
|
|
|
|
config MTD_PHYSMAP_VERSATILE
|
|
bool "ARM Versatile OF-based physical memory map handling"
|
|
depends on MTD_PHYSMAP_OF
|
|
depends on MFD_SYSCON
|
|
default y if (ARCH_INTEGRATOR || ARCH_VERSATILE || ARCH_REALVIEW)
|
|
help
|
|
This provides some extra DT physmap parsing for the ARM Versatile
|
|
platforms, basically to add a VPP (write protection) callback so
|
|
the flash can be taken out of write protection.
|
|
|
|
config MTD_PHYSMAP_GEMINI
|
|
bool "Cortina Gemini OF-based physical memory map handling"
|
|
depends on MTD_PHYSMAP_OF
|
|
depends on MFD_SYSCON
|
|
select MTD_COMPLEX_MAPPINGS
|
|
default ARCH_GEMINI
|
|
help
|
|
This provides some extra DT physmap parsing for the Gemini
|
|
platforms, some detection and setting up parallel mode on the
|
|
external interface.
|
|
|
|
config MTD_PHYSMAP_IXP4XX
|
|
bool "Intel IXP4xx OF-based physical memory map handling"
|
|
depends on MTD_PHYSMAP_OF
|
|
depends on ARM
|
|
select MTD_COMPLEX_MAPPINGS
|
|
select MTD_CFI_BE_BYTE_SWAP if CPU_BIG_ENDIAN
|
|
default ARCH_IXP4XX
|
|
help
|
|
This provides some extra DT physmap parsing for the Intel IXP4xx
|
|
platforms, some elaborate endianness handling in particular.
|
|
|
|
config MTD_PHYSMAP_GPIO_ADDR
|
|
bool "GPIO-assisted Flash Chip Support"
|
|
depends on MTD_PHYSMAP
|
|
depends on GPIOLIB || COMPILE_TEST
|
|
depends on MTD_COMPLEX_MAPPINGS
|
|
help
|
|
Extend the physmap driver to allow flashes to be partially
|
|
physically addressed and assisted by GPIOs.
|
|
|
|
config MTD_PMC_MSP_EVM
|
|
tristate "CFI Flash device mapped on PMC-Sierra MSP"
|
|
depends on PMC_MSP && MTD_CFI
|
|
help
|
|
This provides a 'mapping' driver which supports the way
|
|
in which user-programmable flash chips are connected on the
|
|
PMC-Sierra MSP eval/demo boards.
|
|
|
|
choice
|
|
prompt "Maximum mappable memory available for flash IO"
|
|
depends on MTD_PMC_MSP_EVM
|
|
default MSP_FLASH_MAP_LIMIT_32M
|
|
|
|
config MSP_FLASH_MAP_LIMIT_32M
|
|
bool "32M"
|
|
|
|
endchoice
|
|
|
|
config MSP_FLASH_MAP_LIMIT
|
|
hex
|
|
default "0x02000000"
|
|
depends on MSP_FLASH_MAP_LIMIT_32M
|
|
|
|
config MTD_SUN_UFLASH
|
|
tristate "Sun Microsystems userflash support"
|
|
depends on SPARC && MTD_CFI && PCI
|
|
help
|
|
This provides a 'mapping' driver which supports the way in
|
|
which user-programmable flash chips are connected on various
|
|
Sun Microsystems boardsets. This driver will require CFI support
|
|
in the kernel, so if you did not enable CFI previously, do that now.
|
|
|
|
config MTD_SC520CDP
|
|
tristate "CFI Flash device mapped on AMD SC520 CDP"
|
|
depends on (MELAN || COMPILE_TEST) && MTD_CFI
|
|
help
|
|
The SC520 CDP board has two banks of CFI-compliant chips and one
|
|
Dual-in-line JEDEC chip. This 'mapping' driver supports that
|
|
arrangement, implementing three MTD devices.
|
|
|
|
config MTD_NETSC520
|
|
tristate "CFI Flash device mapped on AMD NetSc520"
|
|
depends on (MELAN || COMPILE_TEST) && MTD_CFI
|
|
help
|
|
This enables access routines for the flash chips on the AMD NetSc520
|
|
demonstration board. If you have one of these boards and would like
|
|
to use the flash chips on it, say 'Y'.
|
|
|
|
config MTD_TS5500
|
|
tristate "JEDEC Flash device mapped on Technologic Systems TS-5500"
|
|
depends on TS5500 || COMPILE_TEST
|
|
select MTD_JEDECPROBE
|
|
select MTD_CFI_AMDSTD
|
|
help
|
|
This provides a driver for the on-board flash of the Technologic
|
|
System's TS-5500 board. The 2MB flash is split into 3 partitions
|
|
which are accessed as separate MTD devices.
|
|
|
|
mtd0 and mtd2 are the two BIOS drives, which use the resident
|
|
flash disk (RFD) flash translation layer.
|
|
|
|
mtd1 allows you to reprogram your BIOS. BE VERY CAREFUL.
|
|
|
|
Note that jumper 3 ("Write Enable Drive A") must be set
|
|
otherwise detection won't succeed.
|
|
|
|
config MTD_SBC_GXX
|
|
tristate "CFI Flash device mapped on Arcom SBC-GXx boards"
|
|
depends on X86 && MTD_CFI_INTELEXT && MTD_COMPLEX_MAPPINGS
|
|
help
|
|
This provides a driver for the on-board flash of Arcom Control
|
|
Systems' SBC-GXn family of boards, formerly known as SBC-MediaGX.
|
|
By default the flash is split into 3 partitions which are accessed
|
|
as separate MTD devices. This board utilizes Intel StrataFlash.
|
|
More info at
|
|
<http://www.arcomcontrols.com/products/icp/pc104/processors/SBC_GX1.htm>.
|
|
|
|
config MTD_PXA2XX
|
|
tristate "CFI Flash device mapped on Intel XScale PXA2xx based boards"
|
|
depends on (PXA25x || PXA27x) && MTD_CFI_INTELEXT
|
|
help
|
|
This provides a driver for the NOR flash attached to a PXA2xx chip.
|
|
|
|
config MTD_SCx200_DOCFLASH
|
|
tristate "Flash device mapped with DOCCS on NatSemi SCx200"
|
|
depends on SCx200 && MTD_CFI
|
|
help
|
|
Enable support for a flash chip mapped using the DOCCS signal on a
|
|
National Semiconductor SCx200 processor.
|
|
|
|
If you don't know what to do here, say N.
|
|
|
|
If compiled as a module, it will be called scx200_docflash.
|
|
|
|
config MTD_AMD76XROM
|
|
tristate "BIOS flash chip on AMD76x southbridge"
|
|
depends on X86 && MTD_JEDECPROBE
|
|
help
|
|
Support for treating the BIOS flash chip on AMD76x motherboards
|
|
as an MTD device - with this you can reprogram your BIOS.
|
|
|
|
BE VERY CAREFUL.
|
|
|
|
config MTD_ICHXROM
|
|
tristate "BIOS flash chip on Intel Controller Hub 2/3/4/5"
|
|
depends on X86 && MTD_JEDECPROBE
|
|
help
|
|
Support for treating the BIOS flash chip on ICHX motherboards
|
|
as an MTD device - with this you can reprogram your BIOS.
|
|
|
|
BE VERY CAREFUL.
|
|
|
|
config MTD_ESB2ROM
|
|
tristate "BIOS flash chip on Intel ESB Controller Hub 2"
|
|
depends on X86 && MTD_JEDECPROBE && PCI
|
|
help
|
|
Support for treating the BIOS flash chip on ESB2 motherboards
|
|
as an MTD device - with this you can reprogram your BIOS.
|
|
|
|
BE VERY CAREFUL.
|
|
|
|
config MTD_CK804XROM
|
|
tristate "BIOS flash chip on Nvidia CK804"
|
|
depends on X86 && MTD_JEDECPROBE && PCI
|
|
help
|
|
Support for treating the BIOS flash chip on nvidia motherboards
|
|
as an MTD device - with this you can reprogram your BIOS.
|
|
|
|
BE VERY CAREFUL.
|
|
|
|
config MTD_SCB2_FLASH
|
|
tristate "BIOS flash chip on Intel SCB2 boards"
|
|
depends on X86 && MTD_JEDECPROBE && PCI
|
|
help
|
|
Support for treating the BIOS flash chip on Intel SCB2 boards
|
|
as an MTD device - with this you can reprogram your BIOS.
|
|
|
|
BE VERY CAREFUL.
|
|
|
|
config MTD_TSUNAMI
|
|
tristate "Flash chips on Tsunami TIG bus"
|
|
depends on ALPHA_TSUNAMI && MTD_COMPLEX_MAPPINGS
|
|
help
|
|
Support for the flash chip on Tsunami TIG bus.
|
|
|
|
config MTD_NETtel
|
|
tristate "CFI flash device on SnapGear/SecureEdge"
|
|
depends on X86 && MTD_JEDECPROBE
|
|
help
|
|
Support for flash chips on NETtel/SecureEdge/SnapGear boards.
|
|
|
|
config MTD_LANTIQ
|
|
tristate "Lantiq SoC NOR support"
|
|
depends on LANTIQ
|
|
help
|
|
Support for NOR flash attached to the Lantiq SoC's External Bus Unit.
|
|
|
|
config MTD_L440GX
|
|
tristate "BIOS flash chip on Intel L440GX boards"
|
|
depends on X86 && MTD_JEDECPROBE
|
|
help
|
|
Support for treating the BIOS flash chip on Intel L440GX motherboards
|
|
as an MTD device - with this you can reprogram your BIOS.
|
|
|
|
BE VERY CAREFUL.
|
|
|
|
config MTD_CFI_FLAGADM
|
|
tristate "CFI Flash device mapping on FlagaDM"
|
|
depends on PPC_8xx && MTD_CFI
|
|
help
|
|
Mapping for the Flaga digital module. If you don't have one, ignore
|
|
this setting.
|
|
|
|
config MTD_SOLUTIONENGINE
|
|
tristate "CFI Flash device mapped on Hitachi SolutionEngine"
|
|
depends on SOLUTION_ENGINE && MTD_CFI && MTD_REDBOOT_PARTS
|
|
help
|
|
This enables access to the flash chips on the Hitachi SolutionEngine and
|
|
similar boards. Say 'Y' if you are building a kernel for such a board.
|
|
|
|
config MTD_SA1100
|
|
tristate "CFI Flash device mapped on StrongARM SA11x0"
|
|
depends on MTD_CFI && ARCH_SA1100
|
|
help
|
|
This enables access to the flash chips on most platforms based on
|
|
the SA1100 and SA1110, including the Assabet and the Compaq iPAQ.
|
|
If you have such a board, say 'Y'.
|
|
|
|
config MTD_DC21285
|
|
tristate "CFI Flash device mapped on DC21285 Footbridge"
|
|
depends on MTD_CFI && ARCH_FOOTBRIDGE && MTD_COMPLEX_MAPPINGS
|
|
help
|
|
This provides a driver for the flash accessed using Intel's
|
|
21285 bridge used with Intel's StrongARM processors. More info at
|
|
<https://www.intel.com/design/bridge/docs/21285_documentation.htm>.
|
|
|
|
config MTD_IXP4XX
|
|
tristate "CFI Flash device mapped on Intel IXP4xx based systems"
|
|
depends on MTD_CFI && MTD_COMPLEX_MAPPINGS && ARCH_IXP4XX
|
|
help
|
|
This enables MTD access to flash devices on platforms based
|
|
on Intel's IXP4xx family of network processors such as the
|
|
IXDP425 and Coyote. If you have an IXP4xx based board and
|
|
would like to use the flash chips on it, say 'Y'.
|
|
|
|
config MTD_IMPA7
|
|
tristate "JEDEC Flash device mapped on impA7"
|
|
depends on ARM && MTD_JEDECPROBE
|
|
help
|
|
This enables access to the NOR Flash on the impA7 board of
|
|
implementa GmbH. If you have such a board, say 'Y' here.
|
|
|
|
# This needs CFI or JEDEC, depending on the cards found.
|
|
config MTD_PCI
|
|
tristate "PCI MTD driver"
|
|
depends on PCI && MTD_COMPLEX_MAPPINGS
|
|
help
|
|
Mapping for accessing flash devices on add-in cards like the Intel XScale
|
|
IQ80310 card, and the Intel EBSA285 card in blank ROM programming mode
|
|
(please see the manual for the link settings).
|
|
|
|
If you are not sure, say N.
|
|
|
|
config MTD_PCMCIA
|
|
tristate "PCMCIA MTD driver"
|
|
depends on PCMCIA && MTD_COMPLEX_MAPPINGS
|
|
help
|
|
Map driver for accessing PCMCIA linear flash memory cards. These
|
|
cards are usually around 4-16MiB in size. This does not include
|
|
Compact Flash cards which are treated as IDE devices.
|
|
|
|
config MTD_PCMCIA_ANONYMOUS
|
|
bool "Use PCMCIA MTD drivers for anonymous PCMCIA cards"
|
|
depends on MTD_PCMCIA
|
|
help
|
|
If this option is enabled, PCMCIA cards which do not report
|
|
anything about themselves are assumed to be MTD cards.
|
|
|
|
If unsure, say N.
|
|
|
|
config MTD_UCLINUX
|
|
bool "Generic uClinux RAM/ROM filesystem support"
|
|
depends on (MTD_RAM=y || MTD_ROM=y) && (!MMU || COLDFIRE)
|
|
help
|
|
Map driver to support image based filesystems for uClinux.
|
|
|
|
config MTD_INTEL_VR_NOR
|
|
tristate "NOR flash on Intel Vermilion Range Expansion Bus CS0"
|
|
depends on PCI
|
|
help
|
|
Map driver for a NOR flash bank located on the Expansion Bus of the
|
|
Intel Vermilion Range chipset.
|
|
|
|
config MTD_RBTX4939
|
|
tristate "Map driver for RBTX4939 board"
|
|
depends on TOSHIBA_RBTX4939 && MTD_CFI && MTD_COMPLEX_MAPPINGS
|
|
help
|
|
Map driver for NOR flash chips on RBTX4939 board.
|
|
|
|
config MTD_PLATRAM
|
|
tristate "Map driver for platform device RAM (mtd-ram)"
|
|
select MTD_RAM
|
|
help
|
|
Map driver for RAM areas described via the platform device
|
|
system.
|
|
|
|
This selection automatically selects the map_ram driver.
|
|
|
|
config MTD_VMU
|
|
tristate "Map driver for Dreamcast VMU"
|
|
depends on MAPLE
|
|
help
|
|
This driver enables access to the Dreamcast Visual Memory Unit (VMU).
|
|
|
|
Most Dreamcast users will want to say Y here.
|
|
|
|
To build this as a module select M here, the module will be called
|
|
vmu-flash.
|
|
|
|
config MTD_PISMO
|
|
tristate "MTD discovery driver for PISMO modules"
|
|
depends on I2C
|
|
depends on ARCH_VERSATILE
|
|
help
|
|
This driver allows for discovery of PISMO modules - see
|
|
<http://www.pismoworld.org/>. These are small modules containing
|
|
up to five memory devices (eg, SRAM, flash, DOC) described by an
|
|
I2C EEPROM.
|
|
|
|
This driver does not create any MTD maps itself; instead it
|
|
creates MTD physmap and MTD SRAM platform devices. If you
|
|
enable this option, you should consider enabling MTD_PHYSMAP
|
|
and/or MTD_PLATRAM according to the devices on your module.
|
|
|
|
When built as a module, it will be called pismo.ko
|
|
|
|
endmenu
|