This pull request contains the following changes for MTD:
MTD core changes: - New AFS partition parser - Update MAINTAINERS entry - Use of fall-throughs markers NAND core changes: - Support having the bad block markers in either the first, second or last page of a block. The combination of all three location is now possible. - Constification of NAND_OP_PARSER(_PATTERN) elements. - Generic NAND DT bindings changed to yaml format (can be used to check the proposed bindings. First platform to be fully supported: sunxi. - Stopped using several legacy hooks. - Preparation to use the generic NAND layer with the addition of several helpers and the removal of the struct nand_chip from generic functions. - Kconfig cleanup to prepare the introduction of external ECC engines support. - Fallthrough comments. - Introduction of the SPI-mem dirmap API for SPI-NAND devices. Raw NAND controller drivers changes: - nandsim: * Switch to ->exec-op(). - meson: * Misc cleanups and fixes. * New OOB layout. - Sunxi: * A23/A33 NAND DMA support. - Ingenic: * Full reorganization and cleanup. * Clear separation between NAND controller and ECC engine. * Support JZ4740 an JZ4725B. - Denali: * Clear controller/chip separation. * ->exec_op() migration. * Various cleanups. - fsl_elbc: * Enable software ECC support. - Atmel: * Sam9x60 support. - GPMI: * Introduce the GPMI_IS_MXS() macro. - Various trivial/spelling/coding style fixes. SPI NOR core changes: - Print all JEDEC ID bytes on error - Fix comment of spi_nor_find_best_erase_type() - Add region locking flags for s25fl512s SPI NOR controller drivers changes: - intel-spi: * Avoid crossing 4K address boundary on read/write * Add support for Intel Comet Lake SPI serial flash -----BEGIN PGP SIGNATURE----- iQJKBAABCAA0FiEEdgfidid8lnn52cLTZvlZhesYu8EFAlzYiU4WHHJpY2hhcmRA c2lnbWEtc3Rhci5hdAAKCRBm+VmF6xi7wX1HEACay8s/mUEWcLO3JKWy6KiC3756 1CGB3p5b621kKP6ooPWvV7UAv1Q2IKkLIwKaLE5W5FuKW9bVnN6H/yejVT8vYPK9 /5AbcqbdNKfrnYBnfv3SHH8jSYo6HjwwNsF7OcR/yiXvk/JUFX+VJQdR01HEzz+Z TWzkm4n5+vat5pJSGBs7JwRBlatuiCHul7Lz2dZYkF/ZdGIQgL5ftOr1goLsr88+ Hxn7Wmp3eBVZbQMf83BD7wf/Nv+oycToKBqklMZqMBEgK5mT6WDkT65HG4XMfzMz 0CcPReMHlTZVqJHHZFgTSXVPJJHu8Nl4qmJIAaf1hnmvx7yFW6LD0C1zKpu6uwRm +qVpe/fTDArLCEwLouLND6Y9MC7kkERkDE3jwcwSQ/PZcE3kdHKwIhmJ/19utI8k zk9pWGAWvtuoY1b+dNFxT4YcUxrHOWSxYcUZHcZvQHQr7Bvxskg92P1fOU0wlgC/ tXRtXUNCB5YsUU5x8Ph6+786dsCMcwCDoQQzwegecrbc6sK7n3KSYAcoNfv5ATwI C+Myoawul/XsxQvUyYbDIr8T4Yyda1BLs92XHxg1Di3kTC2m0OZL8sWJboQ7I/CI GkiJm5hFvzwniE+yrqE4n4jnCkoP5Y4kRtX70VDK3pIVDZFPs93lgYaYTFcfp93G scfn1MoI/bE7jDzpbA== =HXap -----END PGP SIGNATURE----- Merge tag 'mtd/for-5.2' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/mtd/linux Pull MTD updates from Richard Weinberger: "MTD core changes: - New AFS partition parser - Update MAINTAINERS entry - Use of fall-throughs markers NAND core changes: - Support having the bad block markers in either the first, second or last page of a block. The combination of all three location is now possible. - Constification of NAND_OP_PARSER(_PATTERN) elements. - Generic NAND DT bindings changed to yaml format (can be used to check the proposed bindings. First platform to be fully supported: sunxi. - Stopped using several legacy hooks. - Preparation to use the generic NAND layer with the addition of several helpers and the removal of the struct nand_chip from generic functions. - Kconfig cleanup to prepare the introduction of external ECC engines support. - Fallthrough comments. - Introduction of the SPI-mem dirmap API for SPI-NAND devices. Raw NAND controller drivers changes: - nandsim: - Switch to ->exec-op(). - meson: - Misc cleanups and fixes. - New OOB layout. - Sunxi: - A23/A33 NAND DMA support. - Ingenic: - Full reorganization and cleanup. - Clear separation between NAND controller and ECC engine. - Support JZ4740 an JZ4725B. - Denali: - Clear controller/chip separation. - ->exec_op() migration. - Various cleanups. - fsl_elbc: - Enable software ECC support. - Atmel: - Sam9x60 support. - GPMI: - Introduce the GPMI_IS_MXS() macro. - Various trivial/spelling/coding style fixes. SPI NOR core changes: - Print all JEDEC ID bytes on error - Fix comment of spi_nor_find_best_erase_type() - Add region locking flags for s25fl512s SPI NOR controller drivers changes: - intel-spi: - Avoid crossing 4K address boundary on read/write - Add support for Intel Comet Lake SPI serial flash" * tag 'mtd/for-5.2' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/mtd/linux: (120 commits) mtd: part: fix incorrect format specifier for an unsigned long long mtd: lpddr_cmds: Mark expected switch fall-through mtd: phram: Mark expected switch fall-throughs mtd: cfi_cmdset_0002: Mark expected switch fall-throughs mtd: cfi_util: mark expected switch fall-throughs MAINTAINERS: MTD Git repository is hosted on kernel.org MAINTAINERS: Update jffs2 entry mtd: afs: add v2 partition parsing mtd: afs: factor the IIS read into partition parser mtd: afs: factor footer parsing into the v1 part parsing mtd: factor out v1 partition parsing mtd: afs: simplify partition detection mtd: afs: simplify partition parsing mtd: partitions: Add OF support to AFS partitions mtd: partitions: Add AFS partitions DT bindings mtd: afs: Move AFS partition parser to parsers subdir mtd: maps: Make uclinux_ram_map static mtd: maps: Allow MTD_PHYSMAP with MTD_RAM MAINTAINERS: Add myself as MTD maintainer MAINTAINERS: Remove my name from the MTD and NAND entries ...hifive-unleashed-5.2
commit
4dbf09fea6
|
@ -15,6 +15,7 @@ Required properties:
|
||||||
"atmel,at91sam9g45-ebi"
|
"atmel,at91sam9g45-ebi"
|
||||||
"atmel,at91sam9x5-ebi"
|
"atmel,at91sam9x5-ebi"
|
||||||
"atmel,sama5d3-ebi"
|
"atmel,sama5d3-ebi"
|
||||||
|
"microchip,sam9x60-ebi"
|
||||||
|
|
||||||
- reg: Contains offset/length value for EBI memory mapping.
|
- reg: Contains offset/length value for EBI memory mapping.
|
||||||
This property might contain several entries if the EBI
|
This property might contain several entries if the EBI
|
||||||
|
|
|
@ -0,0 +1,97 @@
|
||||||
|
# SPDX-License-Identifier: GPL-2.0
|
||||||
|
%YAML 1.2
|
||||||
|
---
|
||||||
|
$id: http://devicetree.org/schemas/mtd/allwinner,sun4i-a10-nand.yaml#
|
||||||
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||||
|
|
||||||
|
title: Allwinner A10 NAND Controller Device Tree Bindings
|
||||||
|
|
||||||
|
allOf:
|
||||||
|
- $ref: "nand-controller.yaml"
|
||||||
|
|
||||||
|
maintainers:
|
||||||
|
- Chen-Yu Tsai <wens@csie.org>
|
||||||
|
- Maxime Ripard <maxime.ripard@bootlin.com>
|
||||||
|
|
||||||
|
properties:
|
||||||
|
"#address-cells": true
|
||||||
|
"#size-cells": true
|
||||||
|
|
||||||
|
compatible:
|
||||||
|
enum:
|
||||||
|
- allwinner,sun4i-a10-nand
|
||||||
|
- allwinner,sun8i-a23-nand-controller
|
||||||
|
reg:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
interrupts:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
clocks:
|
||||||
|
items:
|
||||||
|
- description: Bus Clock
|
||||||
|
- description: Module Clock
|
||||||
|
|
||||||
|
clock-names:
|
||||||
|
items:
|
||||||
|
- const: ahb
|
||||||
|
- const: mod
|
||||||
|
|
||||||
|
resets:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
reset-names:
|
||||||
|
const: ahb
|
||||||
|
|
||||||
|
dmas:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
dma-names:
|
||||||
|
const: rxtx
|
||||||
|
|
||||||
|
pinctrl-names: true
|
||||||
|
|
||||||
|
patternProperties:
|
||||||
|
"^pinctrl-[0-9]+$": true
|
||||||
|
|
||||||
|
"^nand@[a-f0-9]+$":
|
||||||
|
properties:
|
||||||
|
reg:
|
||||||
|
maxItems: 1
|
||||||
|
minimum: 0
|
||||||
|
maximum: 7
|
||||||
|
|
||||||
|
nand-ecc-mode: true
|
||||||
|
|
||||||
|
nand-ecc-algo:
|
||||||
|
const: bch
|
||||||
|
|
||||||
|
nand-ecc-step-size:
|
||||||
|
enum: [ 512, 1024 ]
|
||||||
|
|
||||||
|
nand-ecc-strength:
|
||||||
|
maximum: 80
|
||||||
|
|
||||||
|
allwinner,rb:
|
||||||
|
description:
|
||||||
|
Contains the native Ready/Busy IDs.
|
||||||
|
allOf:
|
||||||
|
- $ref: /schemas/types.yaml#/definitions/uint32-array
|
||||||
|
- minItems: 1
|
||||||
|
maxItems: 2
|
||||||
|
items:
|
||||||
|
minimum: 0
|
||||||
|
maximum: 1
|
||||||
|
|
||||||
|
additionalProperties: false
|
||||||
|
|
||||||
|
required:
|
||||||
|
- compatible
|
||||||
|
- reg
|
||||||
|
- interrupts
|
||||||
|
- clocks
|
||||||
|
- clock-names
|
||||||
|
|
||||||
|
additionalProperties: false
|
||||||
|
|
||||||
|
...
|
|
@ -14,6 +14,7 @@ Required properties:
|
||||||
"atmel,at91sam9261-nand-controller"
|
"atmel,at91sam9261-nand-controller"
|
||||||
"atmel,at91sam9g45-nand-controller"
|
"atmel,at91sam9g45-nand-controller"
|
||||||
"atmel,sama5d3-nand-controller"
|
"atmel,sama5d3-nand-controller"
|
||||||
|
"microchip,sam9x60-nand-controller"
|
||||||
- ranges: empty ranges property to forward EBI ranges definitions.
|
- ranges: empty ranges property to forward EBI ranges definitions.
|
||||||
- #address-cells: should be set to 2.
|
- #address-cells: should be set to 2.
|
||||||
- #size-cells: should be set to 1.
|
- #size-cells: should be set to 1.
|
||||||
|
|
|
@ -7,34 +7,48 @@ Required properties:
|
||||||
"socionext,uniphier-denali-nand-v5b" - for Socionext UniPhier (v5b)
|
"socionext,uniphier-denali-nand-v5b" - for Socionext UniPhier (v5b)
|
||||||
- reg : should contain registers location and length for data and reg.
|
- reg : should contain registers location and length for data and reg.
|
||||||
- reg-names: Should contain the reg names "nand_data" and "denali_reg"
|
- reg-names: Should contain the reg names "nand_data" and "denali_reg"
|
||||||
|
- #address-cells: should be 1. The cell encodes the chip select connection.
|
||||||
|
- #size-cells : should be 0.
|
||||||
- interrupts : The interrupt number.
|
- interrupts : The interrupt number.
|
||||||
- clocks: should contain phandle of the controller core clock, the bus
|
- clocks: should contain phandle of the controller core clock, the bus
|
||||||
interface clock, and the ECC circuit clock.
|
interface clock, and the ECC circuit clock.
|
||||||
- clock-names: should contain "nand", "nand_x", "ecc"
|
- clock-names: should contain "nand", "nand_x", "ecc"
|
||||||
|
|
||||||
Optional properties:
|
Sub-nodes:
|
||||||
- nand-ecc-step-size: see nand.txt for details. If present, the value must be
|
Sub-nodes represent available NAND chips.
|
||||||
512 for "altr,socfpga-denali-nand"
|
|
||||||
1024 for "socionext,uniphier-denali-nand-v5a"
|
|
||||||
1024 for "socionext,uniphier-denali-nand-v5b"
|
|
||||||
- nand-ecc-strength: see nand.txt for details. Valid values are:
|
|
||||||
8, 15 for "altr,socfpga-denali-nand"
|
|
||||||
8, 16, 24 for "socionext,uniphier-denali-nand-v5a"
|
|
||||||
8, 16 for "socionext,uniphier-denali-nand-v5b"
|
|
||||||
- nand-ecc-maximize: see nand.txt for details
|
|
||||||
|
|
||||||
The device tree may optionally contain sub-nodes describing partitions of the
|
Required properties:
|
||||||
|
- reg: should contain the bank ID of the controller to which each chip
|
||||||
|
select is connected.
|
||||||
|
|
||||||
|
Optional properties:
|
||||||
|
- nand-ecc-step-size: see nand.txt for details.
|
||||||
|
If present, the value must be
|
||||||
|
512 for "altr,socfpga-denali-nand"
|
||||||
|
1024 for "socionext,uniphier-denali-nand-v5a"
|
||||||
|
1024 for "socionext,uniphier-denali-nand-v5b"
|
||||||
|
- nand-ecc-strength: see nand.txt for details. Valid values are:
|
||||||
|
8, 15 for "altr,socfpga-denali-nand"
|
||||||
|
8, 16, 24 for "socionext,uniphier-denali-nand-v5a"
|
||||||
|
8, 16 for "socionext,uniphier-denali-nand-v5b"
|
||||||
|
- nand-ecc-maximize: see nand.txt for details
|
||||||
|
|
||||||
|
The chip nodes may optionally contain sub-nodes describing partitions of the
|
||||||
address space. See partition.txt for more detail.
|
address space. See partition.txt for more detail.
|
||||||
|
|
||||||
Examples:
|
Examples:
|
||||||
|
|
||||||
nand: nand@ff900000 {
|
nand: nand@ff900000 {
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <1>;
|
#size-cells = <0>;
|
||||||
compatible = "altr,socfpga-denali-nand";
|
compatible = "altr,socfpga-denali-nand";
|
||||||
reg = <0xff900000 0x20>, <0xffb80000 0x1000>;
|
reg = <0xff900000 0x20>, <0xffb80000 0x1000>;
|
||||||
reg-names = "nand_data", "denali_reg";
|
reg-names = "nand_data", "denali_reg";
|
||||||
clocks = <&nand_clk>, <&nand_x_clk>, <&nand_ecc_clk>;
|
clocks = <&nand_clk>, <&nand_x_clk>, <&nand_ecc_clk>;
|
||||||
clock-names = "nand", "nand_x", "ecc";
|
clock-names = "nand", "nand_x", "ecc";
|
||||||
interrupts = <0 144 4>;
|
interrupts = <0 144 4>;
|
||||||
|
|
||||||
|
nand@0 {
|
||||||
|
reg = <0>;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
* Ingenic JZ4780 NAND/BCH
|
* Ingenic JZ4780 NAND/ECC
|
||||||
|
|
||||||
This file documents the device tree bindings for NAND flash devices on the
|
This file documents the device tree bindings for NAND flash devices on the
|
||||||
JZ4780. NAND devices are connected to the NEMC controller (described in
|
JZ4780. NAND devices are connected to the NEMC controller (described in
|
||||||
|
@ -6,15 +6,18 @@ memory-controllers/ingenic,jz4780-nemc.txt), and thus NAND device nodes must
|
||||||
be children of the NEMC node.
|
be children of the NEMC node.
|
||||||
|
|
||||||
Required NAND controller device properties:
|
Required NAND controller device properties:
|
||||||
- compatible: Should be set to "ingenic,jz4780-nand".
|
- compatible: Should be one of:
|
||||||
|
* ingenic,jz4740-nand
|
||||||
|
* ingenic,jz4725b-nand
|
||||||
|
* ingenic,jz4780-nand
|
||||||
- reg: For each bank with a NAND chip attached, should specify a bank number,
|
- reg: For each bank with a NAND chip attached, should specify a bank number,
|
||||||
an offset of 0 and a size of 0x1000000 (i.e. the whole NEMC bank).
|
an offset of 0 and a size of 0x1000000 (i.e. the whole NEMC bank).
|
||||||
|
|
||||||
Optional NAND controller device properties:
|
Optional NAND controller device properties:
|
||||||
- ingenic,bch-controller: To make use of the hardware BCH controller, this
|
- ecc-engine: To make use of the hardware ECC controller, this
|
||||||
property must contain a phandle for the BCH controller node. The required
|
property must contain a phandle for the ECC controller node. The required
|
||||||
properties for this node are described below. If this is not specified,
|
properties for this node are described below. If this is not specified,
|
||||||
software BCH will be used instead.
|
software ECC will be used instead.
|
||||||
|
|
||||||
Optional children nodes:
|
Optional children nodes:
|
||||||
- Individual NAND chips are children of the NAND controller node.
|
- Individual NAND chips are children of the NAND controller node.
|
||||||
|
@ -45,7 +48,7 @@ nemc: nemc@13410000 {
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
|
|
||||||
ingenic,bch-controller = <&bch>;
|
ecc-engine = <&bch>;
|
||||||
|
|
||||||
nand@1 {
|
nand@1 {
|
||||||
reg = <1>;
|
reg = <1>;
|
||||||
|
@ -67,14 +70,17 @@ nemc: nemc@13410000 {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
The BCH controller is a separate SoC component used for error correction on
|
The ECC controller is a separate SoC component used for error correction on
|
||||||
NAND devices. The following is a description of the device properties for a
|
NAND devices. The following is a description of the device properties for a
|
||||||
BCH controller.
|
ECC controller.
|
||||||
|
|
||||||
Required BCH properties:
|
Required ECC properties:
|
||||||
- compatible: Should be set to "ingenic,jz4780-bch".
|
- compatible: Should be one of:
|
||||||
- reg: Should specify the BCH controller registers location and length.
|
* ingenic,jz4740-ecc
|
||||||
- clocks: Clock for the BCH controller.
|
* ingenic,jz4725b-bch
|
||||||
|
* ingenic,jz4780-bch
|
||||||
|
- reg: Should specify the ECC controller registers location and length.
|
||||||
|
- clocks: Clock for the ECC controller.
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
|
|
|
@ -96,3 +96,19 @@ An example using SRAM:
|
||||||
bank-width = <2>;
|
bank-width = <2>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
An example using gpio-addrs
|
||||||
|
|
||||||
|
flash@20000000 {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <1>;
|
||||||
|
compatible = "cfi-flash", "jedec-flash";
|
||||||
|
reg = <0x20000000 0x02000000>;
|
||||||
|
ranges = <0 0x00000000 0x02000000
|
||||||
|
1 0x02000000 0x02000000>;
|
||||||
|
bank-width = <2>;
|
||||||
|
addr-gpios = <&gpio1 2 GPIO_ACTIVE_HIGH>;
|
||||||
|
partition@0 {
|
||||||
|
label = "test-part1";
|
||||||
|
reg = <0 0x04000000>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
|
@ -0,0 +1,143 @@
|
||||||
|
# SPDX-License-Identifier: GPL-2.0
|
||||||
|
%YAML 1.2
|
||||||
|
---
|
||||||
|
$id: http://devicetree.org/schemas/mtd/nand-controller.yaml#
|
||||||
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||||
|
|
||||||
|
title: NAND Chip and NAND Controller Generic Binding
|
||||||
|
|
||||||
|
maintainers:
|
||||||
|
- Miquel Raynal <miquel.raynal@bootlin.com>
|
||||||
|
- Richard Weinberger <richard@nod.at>
|
||||||
|
|
||||||
|
description: |
|
||||||
|
The NAND controller should be represented with its own DT node, and
|
||||||
|
all NAND chips attached to this controller should be defined as
|
||||||
|
children nodes of the NAND controller. This representation should be
|
||||||
|
enforced even for simple controllers supporting only one chip.
|
||||||
|
|
||||||
|
The ECC strength and ECC step size properties define the user
|
||||||
|
desires in terms of correction capability of a controller. Together,
|
||||||
|
they request the ECC engine to correct {strength} bit errors per
|
||||||
|
{size} bytes.
|
||||||
|
|
||||||
|
The interpretation of these parameters is implementation-defined, so
|
||||||
|
not all implementations must support all possible
|
||||||
|
combinations. However, implementations are encouraged to further
|
||||||
|
specify the value(s) they support.
|
||||||
|
|
||||||
|
properties:
|
||||||
|
$nodename:
|
||||||
|
pattern: "^nand-controller(@.*)?"
|
||||||
|
|
||||||
|
"#address-cells":
|
||||||
|
const: 1
|
||||||
|
|
||||||
|
"#size-cells":
|
||||||
|
const: 0
|
||||||
|
|
||||||
|
ranges: true
|
||||||
|
|
||||||
|
patternProperties:
|
||||||
|
"^nand@[a-f0-9]$":
|
||||||
|
properties:
|
||||||
|
reg:
|
||||||
|
description:
|
||||||
|
Contains the native Ready/Busy IDs.
|
||||||
|
|
||||||
|
nand-ecc-mode:
|
||||||
|
allOf:
|
||||||
|
- $ref: /schemas/types.yaml#/definitions/string
|
||||||
|
- enum: [ none, soft, hw, hw_syndrome, hw_oob_first, on-die ]
|
||||||
|
description:
|
||||||
|
Desired ECC engine, either hardware (most of the time
|
||||||
|
embedded in the NAND controller) or software correction
|
||||||
|
(Linux will handle the calculations). soft_bch is deprecated
|
||||||
|
and should be replaced by soft and nand-ecc-algo.
|
||||||
|
|
||||||
|
nand-ecc-algo:
|
||||||
|
allOf:
|
||||||
|
- $ref: /schemas/types.yaml#/definitions/string
|
||||||
|
- enum: [ hamming, bch, rs ]
|
||||||
|
description:
|
||||||
|
Desired ECC algorithm.
|
||||||
|
|
||||||
|
nand-bus-width:
|
||||||
|
allOf:
|
||||||
|
- $ref: /schemas/types.yaml#/definitions/uint32
|
||||||
|
- enum: [ 8, 16 ]
|
||||||
|
- default: 8
|
||||||
|
description:
|
||||||
|
Bus width to the NAND chip
|
||||||
|
|
||||||
|
nand-on-flash-bbt:
|
||||||
|
$ref: /schemas/types.yaml#/definitions/flag
|
||||||
|
description:
|
||||||
|
With this property, the OS will search the device for a Bad
|
||||||
|
Block Table (BBT). If not found, it will create one, reserve
|
||||||
|
a few blocks at the end of the device to store it and update
|
||||||
|
it as the device ages. Otherwise, the out-of-band area of a
|
||||||
|
few pages of all the blocks will be scanned at boot time to
|
||||||
|
find Bad Block Markers (BBM). These markers will help to
|
||||||
|
build a volatile BBT in RAM.
|
||||||
|
|
||||||
|
nand-ecc-strength:
|
||||||
|
allOf:
|
||||||
|
- $ref: /schemas/types.yaml#/definitions/uint32
|
||||||
|
- minimum: 1
|
||||||
|
description:
|
||||||
|
Maximum number of bits that can be corrected per ECC step.
|
||||||
|
|
||||||
|
nand-ecc-step-size:
|
||||||
|
allOf:
|
||||||
|
- $ref: /schemas/types.yaml#/definitions/uint32
|
||||||
|
- minimum: 1
|
||||||
|
description:
|
||||||
|
Number of data bytes covered by a single ECC step.
|
||||||
|
|
||||||
|
nand-ecc-maximize:
|
||||||
|
$ref: /schemas/types.yaml#/definitions/flag
|
||||||
|
description:
|
||||||
|
Whether or not the ECC strength should be maximized. The
|
||||||
|
maximum ECC strength is both controller and chip
|
||||||
|
dependent. The ECC engine has to select the ECC config
|
||||||
|
providing the best strength and taking the OOB area size
|
||||||
|
constraint into account. This is particularly useful when
|
||||||
|
only the in-band area is used by the upper layers, and you
|
||||||
|
want to make your NAND as reliable as possible.
|
||||||
|
|
||||||
|
nand-is-boot-medium:
|
||||||
|
$ref: /schemas/types.yaml#/definitions/flag
|
||||||
|
description:
|
||||||
|
Whether or not the NAND chip is a boot medium. Drivers might
|
||||||
|
use this information to select ECC algorithms supported by
|
||||||
|
the boot ROM or similar restrictions.
|
||||||
|
|
||||||
|
nand-rb:
|
||||||
|
$ref: /schemas/types.yaml#/definitions/uint32-array
|
||||||
|
description:
|
||||||
|
Contains the native Ready/Busy IDs.
|
||||||
|
|
||||||
|
required:
|
||||||
|
- reg
|
||||||
|
|
||||||
|
required:
|
||||||
|
- "#address-cells"
|
||||||
|
- "#size-cells"
|
||||||
|
|
||||||
|
examples:
|
||||||
|
- |
|
||||||
|
nand-controller {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
|
/* controller specific properties */
|
||||||
|
|
||||||
|
nand@0 {
|
||||||
|
reg = <0>;
|
||||||
|
nand-ecc-mode = "soft";
|
||||||
|
nand-ecc-algo = "bch";
|
||||||
|
|
||||||
|
/* controller specific properties */
|
||||||
|
};
|
||||||
|
};
|
|
@ -1,75 +0,0 @@
|
||||||
* NAND chip and NAND controller generic binding
|
|
||||||
|
|
||||||
NAND controller/NAND chip representation:
|
|
||||||
|
|
||||||
The NAND controller should be represented with its own DT node, and all
|
|
||||||
NAND chips attached to this controller should be defined as children nodes
|
|
||||||
of the NAND controller. This representation should be enforced even for
|
|
||||||
simple controllers supporting only one chip.
|
|
||||||
|
|
||||||
Mandatory NAND controller properties:
|
|
||||||
- #address-cells: depends on your controller. Should at least be 1 to
|
|
||||||
encode the CS line id.
|
|
||||||
- #size-cells: depends on your controller. Put zero unless you need a
|
|
||||||
mapping between CS lines and dedicated memory regions
|
|
||||||
|
|
||||||
Optional NAND controller properties
|
|
||||||
- ranges: only needed if you need to define a mapping between CS lines and
|
|
||||||
memory regions
|
|
||||||
|
|
||||||
Optional NAND chip properties:
|
|
||||||
|
|
||||||
- nand-ecc-mode : String, operation mode of the NAND ecc mode.
|
|
||||||
Supported values are: "none", "soft", "hw", "hw_syndrome",
|
|
||||||
"hw_oob_first", "on-die".
|
|
||||||
Deprecated values:
|
|
||||||
"soft_bch": use "soft" and nand-ecc-algo instead
|
|
||||||
- nand-ecc-algo: string, algorithm of NAND ECC.
|
|
||||||
Valid values are: "hamming", "bch", "rs".
|
|
||||||
- nand-bus-width : 8 or 16 bus width if not present 8
|
|
||||||
- nand-on-flash-bbt: boolean to enable on flash bbt option if not present false
|
|
||||||
|
|
||||||
- nand-ecc-strength: integer representing the number of bits to correct
|
|
||||||
per ECC step.
|
|
||||||
|
|
||||||
- nand-ecc-step-size: integer representing the number of data bytes
|
|
||||||
that are covered by a single ECC step.
|
|
||||||
|
|
||||||
- nand-ecc-maximize: boolean used to specify that you want to maximize ECC
|
|
||||||
strength. The maximum ECC strength is both controller and
|
|
||||||
chip dependent. The controller side has to select the ECC
|
|
||||||
config providing the best strength and taking the OOB area
|
|
||||||
size constraint into account.
|
|
||||||
This is particularly useful when only the in-band area is
|
|
||||||
used by the upper layers, and you want to make your NAND
|
|
||||||
as reliable as possible.
|
|
||||||
- nand-is-boot-medium: Whether the NAND chip is a boot medium. Drivers might use
|
|
||||||
this information to select ECC algorithms supported by
|
|
||||||
the boot ROM or similar restrictions.
|
|
||||||
|
|
||||||
- nand-rb: shall contain the native Ready/Busy ids.
|
|
||||||
|
|
||||||
The ECC strength and ECC step size properties define the correction capability
|
|
||||||
of a controller. Together, they say a controller can correct "{strength} bit
|
|
||||||
errors per {size} bytes".
|
|
||||||
|
|
||||||
The interpretation of these parameters is implementation-defined, so not all
|
|
||||||
implementations must support all possible combinations. However, implementations
|
|
||||||
are encouraged to further specify the value(s) they support.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
nand-controller {
|
|
||||||
#address-cells = <1>;
|
|
||||||
#size-cells = <0>;
|
|
||||||
|
|
||||||
/* controller specific properties */
|
|
||||||
|
|
||||||
nand@0 {
|
|
||||||
reg = <0>;
|
|
||||||
nand-ecc-mode = "soft";
|
|
||||||
nand-ecc-algo = "bch";
|
|
||||||
|
|
||||||
/* controller specific properties */
|
|
||||||
};
|
|
||||||
};
|
|
|
@ -0,0 +1,17 @@
|
||||||
|
ARM AFS - ARM Firmware Suite Partitions
|
||||||
|
=======================================
|
||||||
|
|
||||||
|
The ARM Firmware Suite is a flash partitioning system found on the
|
||||||
|
ARM reference designs: Integrator AP, Integrator CP, Versatile AB,
|
||||||
|
Versatile PB, the RealView family, Versatile Express and Juno.
|
||||||
|
|
||||||
|
Required properties:
|
||||||
|
- compatible : (required) must be "arm,arm-firmware-suite"
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
flash@0 {
|
||||||
|
partitions {
|
||||||
|
compatible = "arm,arm-firmware-suite";
|
||||||
|
};
|
||||||
|
};
|
|
@ -0,0 +1,24 @@
|
||||||
|
Broadcom BCM963XX CFE Loader NOR Flash Partitions
|
||||||
|
=================================================
|
||||||
|
|
||||||
|
Most Broadcom BCM63XX SoC based devices follow the Broadcom reference layout for
|
||||||
|
NOR. The first erase block used for the CFE bootloader, the last for an
|
||||||
|
NVRAM partition, and the remainder in-between for one to two firmware partitions
|
||||||
|
at fixed offsets. A valid firmware partition is identified by the ImageTag
|
||||||
|
header found at beginning of the second erase block, containing the rootfs and
|
||||||
|
kernel offsets and sizes within the firmware partition.
|
||||||
|
|
||||||
|
Required properties:
|
||||||
|
- compatible : must be "brcm,bcm963xx-cfe-nor-partitions"
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
flash@1fc00000 {
|
||||||
|
compatible = "cfi-flash";
|
||||||
|
reg = <0x1fc00000 0x400000>;
|
||||||
|
bank-width = <2>;
|
||||||
|
|
||||||
|
partitions {
|
||||||
|
compatible = "brcm,bcm963xx-cfe-nor-partitions";
|
||||||
|
};
|
||||||
|
};
|
|
@ -0,0 +1,45 @@
|
||||||
|
Broadcom BCM963XX ImageTag Partition Container
|
||||||
|
==============================================
|
||||||
|
|
||||||
|
Some Broadcom BCM63XX SoC based devices contain additional, non discoverable
|
||||||
|
partitions or non standard bootloader partition sizes. For these a mixed layout
|
||||||
|
needs to be used with an explicit firmware partition.
|
||||||
|
|
||||||
|
The BCM963XX ImageTag is a simple firmware header describing the offsets and
|
||||||
|
sizes of the rootfs and kernel parts contained in the firmware.
|
||||||
|
|
||||||
|
Required properties:
|
||||||
|
- compatible : must be "brcm,bcm963xx-imagetag"
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
flash@1e000000 {
|
||||||
|
compatible = "cfi-flash";
|
||||||
|
reg = <0x1e000000 0x2000000>;
|
||||||
|
bank-width = <2>;
|
||||||
|
|
||||||
|
partitions {
|
||||||
|
compatible = "fixed-partitions";
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <1>;
|
||||||
|
|
||||||
|
cfe@0 {
|
||||||
|
reg = <0x0 0x10000>;
|
||||||
|
read-only;
|
||||||
|
};
|
||||||
|
|
||||||
|
firmware@10000 {
|
||||||
|
reg = <0x10000 0x7d0000>;
|
||||||
|
compatible = "brcm,bcm963xx-imagetag";
|
||||||
|
};
|
||||||
|
|
||||||
|
caldata@7e0000 {
|
||||||
|
reg = <0x7e0000 0x10000>;
|
||||||
|
read-only;
|
||||||
|
};
|
||||||
|
|
||||||
|
nvram@7f0000 {
|
||||||
|
reg = <0x7f0000 0x10000>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
|
@ -1,48 +0,0 @@
|
||||||
Allwinner NAND Flash Controller (NFC)
|
|
||||||
|
|
||||||
Required properties:
|
|
||||||
- compatible : "allwinner,sun4i-a10-nand".
|
|
||||||
- reg : shall contain registers location and length for data and reg.
|
|
||||||
- interrupts : shall define the nand controller interrupt.
|
|
||||||
- #address-cells: shall be set to 1. Encode the nand CS.
|
|
||||||
- #size-cells : shall be set to 0.
|
|
||||||
- clocks : shall reference nand controller clocks.
|
|
||||||
- clock-names : nand controller internal clock names. Shall contain :
|
|
||||||
* "ahb" : AHB gating clock
|
|
||||||
* "mod" : nand controller clock
|
|
||||||
|
|
||||||
Optional properties:
|
|
||||||
- dmas : shall reference DMA channel associated to the NAND controller.
|
|
||||||
- dma-names : shall be "rxtx".
|
|
||||||
|
|
||||||
Optional children nodes:
|
|
||||||
Children nodes represent the available nand chips.
|
|
||||||
|
|
||||||
Optional properties:
|
|
||||||
- reset : phandle + reset specifier pair
|
|
||||||
- reset-names : must contain "ahb"
|
|
||||||
- allwinner,rb : shall contain the native Ready/Busy ids.
|
|
||||||
- nand-ecc-mode : one of the supported ECC modes ("hw", "soft", "soft_bch" or
|
|
||||||
"none")
|
|
||||||
|
|
||||||
see Documentation/devicetree/bindings/mtd/nand.txt for generic bindings.
|
|
||||||
|
|
||||||
|
|
||||||
Examples:
|
|
||||||
nfc: nand@1c03000 {
|
|
||||||
compatible = "allwinner,sun4i-a10-nand";
|
|
||||||
reg = <0x01c03000 0x1000>;
|
|
||||||
interrupts = <0 37 1>;
|
|
||||||
clocks = <&ahb_gates 13>, <&nand_clk>;
|
|
||||||
clock-names = "ahb", "mod";
|
|
||||||
#address-cells = <1>;
|
|
||||||
#size-cells = <0>;
|
|
||||||
pinctrl-names = "default";
|
|
||||||
pinctrl-0 = <&nand_pins_a &nand_cs0_pins_a &nand_rb0_pins_a>;
|
|
||||||
|
|
||||||
nand@0 {
|
|
||||||
reg = <0>;
|
|
||||||
allwinner,rb = <0>;
|
|
||||||
nand-ecc-mode = "soft_bch";
|
|
||||||
};
|
|
||||||
};
|
|
18
MAINTAINERS
18
MAINTAINERS
|
@ -8418,9 +8418,11 @@ F: drivers/net/ethernet/jme.*
|
||||||
|
|
||||||
JOURNALLING FLASH FILE SYSTEM V2 (JFFS2)
|
JOURNALLING FLASH FILE SYSTEM V2 (JFFS2)
|
||||||
M: David Woodhouse <dwmw2@infradead.org>
|
M: David Woodhouse <dwmw2@infradead.org>
|
||||||
|
M: Richard Weinberger <richard@nod.at>
|
||||||
L: linux-mtd@lists.infradead.org
|
L: linux-mtd@lists.infradead.org
|
||||||
W: http://www.linux-mtd.infradead.org/doc/jffs2.html
|
W: http://www.linux-mtd.infradead.org/doc/jffs2.html
|
||||||
S: Maintained
|
T: git git://git.infradead.org/ubifs-2.6.git
|
||||||
|
S: Odd Fixes
|
||||||
F: fs/jffs2/
|
F: fs/jffs2/
|
||||||
F: include/uapi/linux/jffs2.h
|
F: include/uapi/linux/jffs2.h
|
||||||
|
|
||||||
|
@ -10114,14 +10116,15 @@ F: mm/
|
||||||
MEMORY TECHNOLOGY DEVICES (MTD)
|
MEMORY TECHNOLOGY DEVICES (MTD)
|
||||||
M: David Woodhouse <dwmw2@infradead.org>
|
M: David Woodhouse <dwmw2@infradead.org>
|
||||||
M: Brian Norris <computersforpeace@gmail.com>
|
M: Brian Norris <computersforpeace@gmail.com>
|
||||||
M: Boris Brezillon <bbrezillon@kernel.org>
|
|
||||||
M: Marek Vasut <marek.vasut@gmail.com>
|
M: Marek Vasut <marek.vasut@gmail.com>
|
||||||
|
M: Miquel Raynal <miquel.raynal@bootlin.com>
|
||||||
M: Richard Weinberger <richard@nod.at>
|
M: Richard Weinberger <richard@nod.at>
|
||||||
|
M: Vignesh Raghavendra <vigneshr@ti.com>
|
||||||
L: linux-mtd@lists.infradead.org
|
L: linux-mtd@lists.infradead.org
|
||||||
W: http://www.linux-mtd.infradead.org/
|
W: http://www.linux-mtd.infradead.org/
|
||||||
Q: http://patchwork.ozlabs.org/project/linux-mtd/list/
|
Q: http://patchwork.ozlabs.org/project/linux-mtd/list/
|
||||||
T: git git://git.infradead.org/linux-mtd.git master
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux.git mtd/fixes
|
||||||
T: git git://git.infradead.org/linux-mtd.git mtd/next
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux.git mtd/next
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/devicetree/bindings/mtd/
|
F: Documentation/devicetree/bindings/mtd/
|
||||||
F: drivers/mtd/
|
F: drivers/mtd/
|
||||||
|
@ -10730,14 +10733,12 @@ S: Supported
|
||||||
F: drivers/net/ethernet/myricom/myri10ge/
|
F: drivers/net/ethernet/myricom/myri10ge/
|
||||||
|
|
||||||
NAND FLASH SUBSYSTEM
|
NAND FLASH SUBSYSTEM
|
||||||
M: Boris Brezillon <bbrezillon@kernel.org>
|
|
||||||
M: Miquel Raynal <miquel.raynal@bootlin.com>
|
M: Miquel Raynal <miquel.raynal@bootlin.com>
|
||||||
R: Richard Weinberger <richard@nod.at>
|
R: Richard Weinberger <richard@nod.at>
|
||||||
L: linux-mtd@lists.infradead.org
|
L: linux-mtd@lists.infradead.org
|
||||||
W: http://www.linux-mtd.infradead.org/
|
W: http://www.linux-mtd.infradead.org/
|
||||||
Q: http://patchwork.ozlabs.org/project/linux-mtd/list/
|
Q: http://patchwork.ozlabs.org/project/linux-mtd/list/
|
||||||
T: git git://git.infradead.org/linux-mtd.git nand/fixes
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux.git nand/next
|
||||||
T: git git://git.infradead.org/linux-mtd.git nand/next
|
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/mtd/nand/
|
F: drivers/mtd/nand/
|
||||||
F: include/linux/mtd/*nand*.h
|
F: include/linux/mtd/*nand*.h
|
||||||
|
@ -14751,8 +14752,7 @@ M: Tudor Ambarus <tudor.ambarus@microchip.com>
|
||||||
L: linux-mtd@lists.infradead.org
|
L: linux-mtd@lists.infradead.org
|
||||||
W: http://www.linux-mtd.infradead.org/
|
W: http://www.linux-mtd.infradead.org/
|
||||||
Q: http://patchwork.ozlabs.org/project/linux-mtd/list/
|
Q: http://patchwork.ozlabs.org/project/linux-mtd/list/
|
||||||
T: git git://git.infradead.org/linux-mtd.git spi-nor/fixes
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux.git spi-nor/next
|
||||||
T: git git://git.infradead.org/linux-mtd.git spi-nor/next
|
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/mtd/spi-nor/
|
F: drivers/mtd/spi-nor/
|
||||||
F: include/linux/mtd/spi-nor.h
|
F: include/linux/mtd/spi-nor.h
|
||||||
|
|
|
@ -55,7 +55,7 @@ CONFIG_MTD=y
|
||||||
CONFIG_MTD_CMDLINE_PARTS=y
|
CONFIG_MTD_CMDLINE_PARTS=y
|
||||||
CONFIG_MTD_BLOCK=y
|
CONFIG_MTD_BLOCK=y
|
||||||
CONFIG_MTD_DATAFLASH=y
|
CONFIG_MTD_DATAFLASH=y
|
||||||
CONFIG_MTD_NAND=y
|
CONFIG_MTD_RAW_NAND=y
|
||||||
CONFIG_MTD_NAND_ATMEL=y
|
CONFIG_MTD_NAND_ATMEL=y
|
||||||
CONFIG_MTD_UBI=y
|
CONFIG_MTD_UBI=y
|
||||||
CONFIG_MTD_UBI_GLUEBI=y
|
CONFIG_MTD_UBI_GLUEBI=y
|
||||||
|
|
|
@ -35,7 +35,7 @@ CONFIG_MTD_CFI_INTELEXT=y
|
||||||
CONFIG_MTD_CFI_AMDSTD=y
|
CONFIG_MTD_CFI_AMDSTD=y
|
||||||
CONFIG_MTD_CFI_STAA=y
|
CONFIG_MTD_CFI_STAA=y
|
||||||
CONFIG_MTD_PLATRAM=y
|
CONFIG_MTD_PLATRAM=y
|
||||||
CONFIG_MTD_NAND=y
|
CONFIG_MTD_RAW_NAND=y
|
||||||
CONFIG_MTD_NAND_GPIO=y
|
CONFIG_MTD_NAND_GPIO=y
|
||||||
CONFIG_NETDEVICES=y
|
CONFIG_NETDEVICES=y
|
||||||
# CONFIG_NET_CADENCE is not set
|
# CONFIG_NET_CADENCE is not set
|
||||||
|
|
|
@ -58,7 +58,7 @@ CONFIG_MTD_CFI_AMDSTD=y
|
||||||
CONFIG_MTD_CFI_STAA=y
|
CONFIG_MTD_CFI_STAA=y
|
||||||
CONFIG_MTD_PHYSMAP=y
|
CONFIG_MTD_PHYSMAP=y
|
||||||
CONFIG_MTD_PXA2XX=y
|
CONFIG_MTD_PXA2XX=y
|
||||||
CONFIG_MTD_NAND=y
|
CONFIG_MTD_RAW_NAND=y
|
||||||
CONFIG_MTD_NAND_GPIO=m
|
CONFIG_MTD_NAND_GPIO=m
|
||||||
CONFIG_MTD_NAND_CM_X270=y
|
CONFIG_MTD_NAND_CM_X270=y
|
||||||
CONFIG_MTD_NAND_PLATFORM=y
|
CONFIG_MTD_NAND_PLATFORM=y
|
||||||
|
|
|
@ -48,7 +48,7 @@ CONFIG_LIB80211=m
|
||||||
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||||
CONFIG_MTD=y
|
CONFIG_MTD=y
|
||||||
CONFIG_MTD_BLOCK=y
|
CONFIG_MTD_BLOCK=y
|
||||||
CONFIG_MTD_NAND=y
|
CONFIG_MTD_RAW_NAND=y
|
||||||
CONFIG_MTD_NAND_MARVELL=y
|
CONFIG_MTD_NAND_MARVELL=y
|
||||||
CONFIG_MTD_UBI=y
|
CONFIG_MTD_UBI=y
|
||||||
CONFIG_BLK_DEV_LOOP=y
|
CONFIG_BLK_DEV_LOOP=y
|
||||||
|
|
|
@ -64,7 +64,7 @@ CONFIG_MTD_COMPLEX_MAPPINGS=y
|
||||||
CONFIG_MTD_PHYSMAP=y
|
CONFIG_MTD_PHYSMAP=y
|
||||||
CONFIG_MTD_PXA2XX=y
|
CONFIG_MTD_PXA2XX=y
|
||||||
CONFIG_MTD_BLOCK2MTD=y
|
CONFIG_MTD_BLOCK2MTD=y
|
||||||
CONFIG_MTD_NAND=y
|
CONFIG_MTD_RAW_NAND=y
|
||||||
CONFIG_MTD_NAND_DISKONCHIP=y
|
CONFIG_MTD_NAND_DISKONCHIP=y
|
||||||
CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADVANCED=y
|
CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADVANCED=y
|
||||||
CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADDRESS=0x4000000
|
CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADDRESS=0x4000000
|
||||||
|
|
|
@ -87,7 +87,7 @@ CONFIG_MTD_CMDLINE_PARTS=y
|
||||||
CONFIG_MTD_BLOCK=y
|
CONFIG_MTD_BLOCK=y
|
||||||
CONFIG_MTD_ROM=y
|
CONFIG_MTD_ROM=y
|
||||||
CONFIG_MTD_COMPLEX_MAPPINGS=y
|
CONFIG_MTD_COMPLEX_MAPPINGS=y
|
||||||
CONFIG_MTD_NAND=y
|
CONFIG_MTD_RAW_NAND=y
|
||||||
CONFIG_MTD_NAND_SHARPSL=y
|
CONFIG_MTD_NAND_SHARPSL=y
|
||||||
CONFIG_BLK_DEV_LOOP=y
|
CONFIG_BLK_DEV_LOOP=y
|
||||||
CONFIG_BLK_DEV_SD=y
|
CONFIG_BLK_DEV_SD=y
|
||||||
|
|
|
@ -74,7 +74,7 @@ CONFIG_MTD_CFI_INTELEXT=m
|
||||||
CONFIG_MTD_CFI_AMDSTD=m
|
CONFIG_MTD_CFI_AMDSTD=m
|
||||||
CONFIG_MTD_PHYSMAP=m
|
CONFIG_MTD_PHYSMAP=m
|
||||||
CONFIG_MTD_M25P80=m
|
CONFIG_MTD_M25P80=m
|
||||||
CONFIG_MTD_NAND=m
|
CONFIG_MTD_RAW_NAND=m
|
||||||
CONFIG_MTD_NAND_DAVINCI=m
|
CONFIG_MTD_NAND_DAVINCI=m
|
||||||
CONFIG_MTD_SPI_NOR=m
|
CONFIG_MTD_SPI_NOR=m
|
||||||
CONFIG_MTD_UBI=m
|
CONFIG_MTD_UBI=m
|
||||||
|
|
|
@ -54,7 +54,7 @@ CONFIG_MTD_CFI_AMDSTD=y
|
||||||
CONFIG_MTD_CFI_STAA=y
|
CONFIG_MTD_CFI_STAA=y
|
||||||
CONFIG_MTD_PHYSMAP=y
|
CONFIG_MTD_PHYSMAP=y
|
||||||
CONFIG_MTD_PXA2XX=y
|
CONFIG_MTD_PXA2XX=y
|
||||||
CONFIG_MTD_NAND=y
|
CONFIG_MTD_RAW_NAND=y
|
||||||
CONFIG_MTD_NAND_PLATFORM=y
|
CONFIG_MTD_NAND_PLATFORM=y
|
||||||
CONFIG_BLK_DEV_LOOP=y
|
CONFIG_BLK_DEV_LOOP=y
|
||||||
CONFIG_BLK_DEV_RAM=y
|
CONFIG_BLK_DEV_RAM=y
|
||||||
|
|
|
@ -63,7 +63,7 @@ CONFIG_MTD_CFI_AMDSTD=y
|
||||||
CONFIG_MTD_CFI_STAA=y
|
CONFIG_MTD_CFI_STAA=y
|
||||||
CONFIG_MTD_ROM=y
|
CONFIG_MTD_ROM=y
|
||||||
CONFIG_MTD_PHYSMAP=y
|
CONFIG_MTD_PHYSMAP=y
|
||||||
CONFIG_MTD_NAND=y
|
CONFIG_MTD_RAW_NAND=y
|
||||||
CONFIG_BLK_DEV_NBD=y
|
CONFIG_BLK_DEV_NBD=y
|
||||||
CONFIG_EEPROM_LEGACY=y
|
CONFIG_EEPROM_LEGACY=y
|
||||||
CONFIG_SCSI=y
|
CONFIG_SCSI=y
|
||||||
|
|
|
@ -43,7 +43,7 @@ CONFIG_MAC80211_RC_PID=y
|
||||||
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||||
# CONFIG_STANDALONE is not set
|
# CONFIG_STANDALONE is not set
|
||||||
CONFIG_MTD=m
|
CONFIG_MTD=m
|
||||||
CONFIG_MTD_NAND=m
|
CONFIG_MTD_RAW_NAND=m
|
||||||
CONFIG_MTD_NAND_TMIO=m
|
CONFIG_MTD_NAND_TMIO=m
|
||||||
CONFIG_BLK_DEV_LOOP=m
|
CONFIG_BLK_DEV_LOOP=m
|
||||||
# CONFIG_SCSI_PROC_FS is not set
|
# CONFIG_SCSI_PROC_FS is not set
|
||||||
|
|
|
@ -61,7 +61,7 @@ CONFIG_MTD_CFI_GEOMETRY=y
|
||||||
# CONFIG_MTD_CFI_I2 is not set
|
# CONFIG_MTD_CFI_I2 is not set
|
||||||
CONFIG_MTD_CFI_INTELEXT=y
|
CONFIG_MTD_CFI_INTELEXT=y
|
||||||
CONFIG_MTD_PHYSMAP=y
|
CONFIG_MTD_PHYSMAP=y
|
||||||
CONFIG_MTD_NAND=y
|
CONFIG_MTD_RAW_NAND=y
|
||||||
CONFIG_MTD_NAND_MXC=y
|
CONFIG_MTD_NAND_MXC=y
|
||||||
CONFIG_MTD_UBI=y
|
CONFIG_MTD_UBI=y
|
||||||
CONFIG_EEPROM_AT24=y
|
CONFIG_EEPROM_AT24=y
|
||||||
|
|
|
@ -110,7 +110,7 @@ CONFIG_MTD_PHYSMAP_OF=y
|
||||||
CONFIG_MTD_DATAFLASH=y
|
CONFIG_MTD_DATAFLASH=y
|
||||||
CONFIG_MTD_M25P80=y
|
CONFIG_MTD_M25P80=y
|
||||||
CONFIG_MTD_SST25L=y
|
CONFIG_MTD_SST25L=y
|
||||||
CONFIG_MTD_NAND=y
|
CONFIG_MTD_RAW_NAND=y
|
||||||
CONFIG_MTD_NAND_GPMI_NAND=y
|
CONFIG_MTD_NAND_GPMI_NAND=y
|
||||||
CONFIG_MTD_NAND_VF610_NFC=y
|
CONFIG_MTD_NAND_VF610_NFC=y
|
||||||
CONFIG_MTD_NAND_MXC=y
|
CONFIG_MTD_NAND_MXC=y
|
||||||
|
|
|
@ -112,7 +112,7 @@ CONFIG_MTD_CFI=y
|
||||||
CONFIG_MTD_CFI_INTELEXT=y
|
CONFIG_MTD_CFI_INTELEXT=y
|
||||||
CONFIG_MTD_COMPLEX_MAPPINGS=y
|
CONFIG_MTD_COMPLEX_MAPPINGS=y
|
||||||
CONFIG_MTD_IXP4XX=y
|
CONFIG_MTD_IXP4XX=y
|
||||||
CONFIG_MTD_NAND=m
|
CONFIG_MTD_RAW_NAND=m
|
||||||
CONFIG_BLK_DEV_LOOP=y
|
CONFIG_BLK_DEV_LOOP=y
|
||||||
CONFIG_BLK_DEV_RAM=y
|
CONFIG_BLK_DEV_RAM=y
|
||||||
CONFIG_BLK_DEV_RAM_SIZE=8192
|
CONFIG_BLK_DEV_RAM_SIZE=8192
|
||||||
|
|
|
@ -124,7 +124,7 @@ CONFIG_MTD_CMDLINE_PARTS=y
|
||||||
CONFIG_MTD_BLOCK=y
|
CONFIG_MTD_BLOCK=y
|
||||||
CONFIG_MTD_PLATRAM=y
|
CONFIG_MTD_PLATRAM=y
|
||||||
CONFIG_MTD_M25P80=y
|
CONFIG_MTD_M25P80=y
|
||||||
CONFIG_MTD_NAND=y
|
CONFIG_MTD_RAW_NAND=y
|
||||||
CONFIG_MTD_NAND_DAVINCI=y
|
CONFIG_MTD_NAND_DAVINCI=y
|
||||||
CONFIG_MTD_SPI_NOR=y
|
CONFIG_MTD_SPI_NOR=y
|
||||||
CONFIG_MTD_UBI=y
|
CONFIG_MTD_UBI=y
|
||||||
|
|
|
@ -47,7 +47,7 @@ CONFIG_DEVTMPFS_MOUNT=y
|
||||||
CONFIG_MTD=y
|
CONFIG_MTD=y
|
||||||
CONFIG_MTD_CMDLINE_PARTS=y
|
CONFIG_MTD_CMDLINE_PARTS=y
|
||||||
CONFIG_MTD_BLOCK=y
|
CONFIG_MTD_BLOCK=y
|
||||||
CONFIG_MTD_NAND=y
|
CONFIG_MTD_RAW_NAND=y
|
||||||
CONFIG_MTD_NAND_SLC_LPC32XX=y
|
CONFIG_MTD_NAND_SLC_LPC32XX=y
|
||||||
CONFIG_MTD_NAND_MLC_LPC32XX=y
|
CONFIG_MTD_NAND_MLC_LPC32XX=y
|
||||||
CONFIG_MTD_UBI=y
|
CONFIG_MTD_UBI=y
|
||||||
|
|
|
@ -92,7 +92,7 @@ CONFIG_MTD_CFI_AMDSTD=y
|
||||||
CONFIG_MTD_CFI_STAA=y
|
CONFIG_MTD_CFI_STAA=y
|
||||||
CONFIG_MTD_RAM=y
|
CONFIG_MTD_RAM=y
|
||||||
CONFIG_MTD_ROM=y
|
CONFIG_MTD_ROM=y
|
||||||
CONFIG_MTD_NAND=y
|
CONFIG_MTD_RAW_NAND=y
|
||||||
CONFIG_MTD_NAND_S3C2410=y
|
CONFIG_MTD_NAND_S3C2410=y
|
||||||
CONFIG_MTD_NAND_PLATFORM=y
|
CONFIG_MTD_NAND_PLATFORM=y
|
||||||
CONFIG_MTD_LPDDR=y
|
CONFIG_MTD_LPDDR=y
|
||||||
|
|
|
@ -28,7 +28,7 @@ CONFIG_IP_PNP=y
|
||||||
CONFIG_MTD=y
|
CONFIG_MTD=y
|
||||||
CONFIG_MTD_CMDLINE_PARTS=y
|
CONFIG_MTD_CMDLINE_PARTS=y
|
||||||
CONFIG_MTD_BLOCK=y
|
CONFIG_MTD_BLOCK=y
|
||||||
CONFIG_MTD_NAND=y
|
CONFIG_MTD_RAW_NAND=y
|
||||||
CONFIG_MTD_ONENAND=y
|
CONFIG_MTD_ONENAND=y
|
||||||
CONFIG_MTD_ONENAND_GENERIC=y
|
CONFIG_MTD_ONENAND_GENERIC=y
|
||||||
# CONFIG_BLK_DEV is not set
|
# CONFIG_BLK_DEV is not set
|
||||||
|
|
|
@ -38,7 +38,7 @@ CONFIG_MTD_CFI_INTELEXT=y
|
||||||
CONFIG_MTD_CFI_AMDSTD=y
|
CONFIG_MTD_CFI_AMDSTD=y
|
||||||
CONFIG_MTD_CFI_STAA=y
|
CONFIG_MTD_CFI_STAA=y
|
||||||
CONFIG_MTD_PLATRAM=y
|
CONFIG_MTD_PLATRAM=y
|
||||||
CONFIG_MTD_NAND=y
|
CONFIG_MTD_RAW_NAND=y
|
||||||
CONFIG_MTD_NAND_GPIO=y
|
CONFIG_MTD_NAND_GPIO=y
|
||||||
# CONFIG_INPUT is not set
|
# CONFIG_INPUT is not set
|
||||||
# CONFIG_SERIO is not set
|
# CONFIG_SERIO is not set
|
||||||
|
|
|
@ -87,7 +87,7 @@ CONFIG_MTD_CFI_GEOMETRY=y
|
||||||
CONFIG_MTD_CFI_INTELEXT=y
|
CONFIG_MTD_CFI_INTELEXT=y
|
||||||
CONFIG_MTD_CFI_STAA=y
|
CONFIG_MTD_CFI_STAA=y
|
||||||
CONFIG_MTD_PHYSMAP=y
|
CONFIG_MTD_PHYSMAP=y
|
||||||
CONFIG_MTD_NAND=y
|
CONFIG_MTD_RAW_NAND=y
|
||||||
CONFIG_MTD_NAND_ATMEL=y
|
CONFIG_MTD_NAND_ATMEL=y
|
||||||
CONFIG_MTD_NAND_ORION=y
|
CONFIG_MTD_NAND_ORION=y
|
||||||
CONFIG_MTD_SPI_NOR=y
|
CONFIG_MTD_SPI_NOR=y
|
||||||
|
|
|
@ -184,7 +184,7 @@ CONFIG_MTD=y
|
||||||
CONFIG_MTD_CMDLINE_PARTS=y
|
CONFIG_MTD_CMDLINE_PARTS=y
|
||||||
CONFIG_MTD_BLOCK=y
|
CONFIG_MTD_BLOCK=y
|
||||||
CONFIG_MTD_M25P80=y
|
CONFIG_MTD_M25P80=y
|
||||||
CONFIG_MTD_NAND=y
|
CONFIG_MTD_RAW_NAND=y
|
||||||
CONFIG_MTD_NAND_DENALI_DT=y
|
CONFIG_MTD_NAND_DENALI_DT=y
|
||||||
CONFIG_MTD_NAND_OMAP2=y
|
CONFIG_MTD_NAND_OMAP2=y
|
||||||
CONFIG_MTD_NAND_OMAP_BCH=y
|
CONFIG_MTD_NAND_OMAP_BCH=y
|
||||||
|
|
|
@ -47,7 +47,7 @@ CONFIG_MTD_CFI_GEOMETRY=y
|
||||||
CONFIG_MTD_CFI_INTELEXT=y
|
CONFIG_MTD_CFI_INTELEXT=y
|
||||||
CONFIG_MTD_CFI_AMDSTD=y
|
CONFIG_MTD_CFI_AMDSTD=y
|
||||||
CONFIG_MTD_PHYSMAP=y
|
CONFIG_MTD_PHYSMAP=y
|
||||||
CONFIG_MTD_NAND=y
|
CONFIG_MTD_RAW_NAND=y
|
||||||
CONFIG_MTD_NAND_ORION=y
|
CONFIG_MTD_NAND_ORION=y
|
||||||
CONFIG_BLK_DEV_LOOP=y
|
CONFIG_BLK_DEV_LOOP=y
|
||||||
# CONFIG_SCSI_PROC_FS is not set
|
# CONFIG_SCSI_PROC_FS is not set
|
||||||
|
|
|
@ -77,7 +77,7 @@ CONFIG_MTD_CFI_INTELEXT=y
|
||||||
CONFIG_MTD_CFI_STAA=y
|
CONFIG_MTD_CFI_STAA=y
|
||||||
CONFIG_MTD_PHYSMAP=y
|
CONFIG_MTD_PHYSMAP=y
|
||||||
CONFIG_MTD_M25P80=y
|
CONFIG_MTD_M25P80=y
|
||||||
CONFIG_MTD_NAND=y
|
CONFIG_MTD_RAW_NAND=y
|
||||||
CONFIG_MTD_NAND_ORION=y
|
CONFIG_MTD_NAND_ORION=y
|
||||||
CONFIG_MTD_SPI_NOR=y
|
CONFIG_MTD_SPI_NOR=y
|
||||||
CONFIG_BLK_DEV_LOOP=y
|
CONFIG_BLK_DEV_LOOP=y
|
||||||
|
|
|
@ -52,7 +52,7 @@ CONFIG_MTD_CFI_AMDSTD=y
|
||||||
CONFIG_MTD_CFI_STAA=y
|
CONFIG_MTD_CFI_STAA=y
|
||||||
CONFIG_MTD_PHYSMAP_OF=y
|
CONFIG_MTD_PHYSMAP_OF=y
|
||||||
CONFIG_MTD_M25P80=y
|
CONFIG_MTD_M25P80=y
|
||||||
CONFIG_MTD_NAND=y
|
CONFIG_MTD_RAW_NAND=y
|
||||||
CONFIG_MTD_NAND_MARVELL=y
|
CONFIG_MTD_NAND_MARVELL=y
|
||||||
CONFIG_MTD_SPI_NOR=y
|
CONFIG_MTD_SPI_NOR=y
|
||||||
CONFIG_MTD_UBI=y
|
CONFIG_MTD_UBI=y
|
||||||
|
|
|
@ -50,7 +50,7 @@ CONFIG_MTD_BLOCK=y
|
||||||
CONFIG_MTD_DATAFLASH=y
|
CONFIG_MTD_DATAFLASH=y
|
||||||
CONFIG_MTD_M25P80=y
|
CONFIG_MTD_M25P80=y
|
||||||
CONFIG_MTD_SST25L=y
|
CONFIG_MTD_SST25L=y
|
||||||
CONFIG_MTD_NAND=y
|
CONFIG_MTD_RAW_NAND=y
|
||||||
CONFIG_MTD_NAND_GPMI_NAND=y
|
CONFIG_MTD_NAND_GPMI_NAND=y
|
||||||
CONFIG_MTD_SPI_NOR=y
|
CONFIG_MTD_SPI_NOR=y
|
||||||
CONFIG_MTD_UBI=y
|
CONFIG_MTD_UBI=y
|
||||||
|
|
|
@ -53,8 +53,8 @@ CONFIG_MTD_BLOCK=y
|
||||||
CONFIG_MTD_ONENAND=y
|
CONFIG_MTD_ONENAND=y
|
||||||
CONFIG_MTD_ONENAND_VERIFY_WRITE=y
|
CONFIG_MTD_ONENAND_VERIFY_WRITE=y
|
||||||
CONFIG_MTD_ONENAND_GENERIC=y
|
CONFIG_MTD_ONENAND_GENERIC=y
|
||||||
CONFIG_MTD_NAND_ECC_SMC=y
|
CONFIG_MTD_NAND_ECC_SW_HAMMING_SMC=y
|
||||||
CONFIG_MTD_NAND=y
|
CONFIG_MTD_RAW_NAND=y
|
||||||
CONFIG_MTD_NAND_FSMC=y
|
CONFIG_MTD_NAND_FSMC=y
|
||||||
CONFIG_BLK_DEV_LOOP=y
|
CONFIG_BLK_DEV_LOOP=y
|
||||||
CONFIG_BLK_DEV_CRYPTOLOOP=y
|
CONFIG_BLK_DEV_CRYPTOLOOP=y
|
||||||
|
|
|
@ -89,7 +89,7 @@ CONFIG_MTD_CMDLINE_PARTS=y
|
||||||
CONFIG_MTD_BLOCK=y
|
CONFIG_MTD_BLOCK=y
|
||||||
CONFIG_MTD_CFI=y
|
CONFIG_MTD_CFI=y
|
||||||
CONFIG_MTD_CFI_INTELEXT=y
|
CONFIG_MTD_CFI_INTELEXT=y
|
||||||
CONFIG_MTD_NAND=y
|
CONFIG_MTD_RAW_NAND=y
|
||||||
CONFIG_BLK_DEV_LOOP=y
|
CONFIG_BLK_DEV_LOOP=y
|
||||||
CONFIG_BLK_DEV_RAM=y
|
CONFIG_BLK_DEV_RAM=y
|
||||||
CONFIG_BLK_DEV_RAM_COUNT=2
|
CONFIG_BLK_DEV_RAM_COUNT=2
|
||||||
|
|
|
@ -143,8 +143,8 @@ CONFIG_MTD_M25P80=m
|
||||||
CONFIG_MTD_ONENAND=y
|
CONFIG_MTD_ONENAND=y
|
||||||
CONFIG_MTD_ONENAND_VERIFY_WRITE=y
|
CONFIG_MTD_ONENAND_VERIFY_WRITE=y
|
||||||
CONFIG_MTD_ONENAND_OMAP2=y
|
CONFIG_MTD_ONENAND_OMAP2=y
|
||||||
CONFIG_MTD_NAND=y
|
CONFIG_MTD_RAW_NAND=y
|
||||||
CONFIG_MTD_NAND_ECC_BCH=y
|
CONFIG_MTD_NAND_ECC_SW_BCH=y
|
||||||
CONFIG_MTD_NAND_OMAP2=y
|
CONFIG_MTD_NAND_OMAP2=y
|
||||||
CONFIG_MTD_NAND_OMAP_BCH=y
|
CONFIG_MTD_NAND_OMAP_BCH=y
|
||||||
CONFIG_MTD_SPI_NOR=m
|
CONFIG_MTD_SPI_NOR=m
|
||||||
|
|
|
@ -70,7 +70,7 @@ CONFIG_MTD_CFI_GEOMETRY=y
|
||||||
CONFIG_MTD_CFI_INTELEXT=y
|
CONFIG_MTD_CFI_INTELEXT=y
|
||||||
CONFIG_MTD_CFI_AMDSTD=y
|
CONFIG_MTD_CFI_AMDSTD=y
|
||||||
CONFIG_MTD_PHYSMAP=y
|
CONFIG_MTD_PHYSMAP=y
|
||||||
CONFIG_MTD_NAND=y
|
CONFIG_MTD_RAW_NAND=y
|
||||||
CONFIG_MTD_NAND_PLATFORM=y
|
CONFIG_MTD_NAND_PLATFORM=y
|
||||||
CONFIG_MTD_NAND_ORION=y
|
CONFIG_MTD_NAND_ORION=y
|
||||||
CONFIG_BLK_DEV_LOOP=y
|
CONFIG_BLK_DEV_LOOP=y
|
||||||
|
|
|
@ -50,7 +50,7 @@ CONFIG_SIMPLE_PM_BUS=y
|
||||||
CONFIG_MTD=y
|
CONFIG_MTD=y
|
||||||
CONFIG_MTD_CMDLINE_PARTS=y
|
CONFIG_MTD_CMDLINE_PARTS=y
|
||||||
CONFIG_MTD_BLOCK=y
|
CONFIG_MTD_BLOCK=y
|
||||||
CONFIG_MTD_NAND=y
|
CONFIG_MTD_RAW_NAND=y
|
||||||
CONFIG_MTD_NAND_OXNAS=y
|
CONFIG_MTD_NAND_OXNAS=y
|
||||||
CONFIG_MTD_UBI=y
|
CONFIG_MTD_UBI=y
|
||||||
CONFIG_BLK_DEV_LOOP=y
|
CONFIG_BLK_DEV_LOOP=y
|
||||||
|
|
|
@ -31,7 +31,7 @@ CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||||
# CONFIG_PREVENT_FIRMWARE_BUILD is not set
|
# CONFIG_PREVENT_FIRMWARE_BUILD is not set
|
||||||
CONFIG_MTD=y
|
CONFIG_MTD=y
|
||||||
CONFIG_MTD_BLOCK=y
|
CONFIG_MTD_BLOCK=y
|
||||||
CONFIG_MTD_NAND=y
|
CONFIG_MTD_RAW_NAND=y
|
||||||
CONFIG_MTD_NAND_MARVELL=y
|
CONFIG_MTD_NAND_MARVELL=y
|
||||||
CONFIG_MTD_ONENAND=y
|
CONFIG_MTD_ONENAND=y
|
||||||
CONFIG_MTD_ONENAND_VERIFY_WRITE=y
|
CONFIG_MTD_ONENAND_VERIFY_WRITE=y
|
||||||
|
|
|
@ -185,8 +185,8 @@ CONFIG_MTD_PXA2XX=m
|
||||||
CONFIG_MTD_M25P80=m
|
CONFIG_MTD_M25P80=m
|
||||||
CONFIG_MTD_BLOCK2MTD=y
|
CONFIG_MTD_BLOCK2MTD=y
|
||||||
CONFIG_MTD_DOCG3=m
|
CONFIG_MTD_DOCG3=m
|
||||||
CONFIG_MTD_NAND=m
|
CONFIG_MTD_RAW_NAND=m
|
||||||
CONFIG_MTD_NAND_ECC_BCH=y
|
CONFIG_MTD_NAND_ECC_SW_BCH=y
|
||||||
CONFIG_MTD_NAND_GPIO=m
|
CONFIG_MTD_NAND_GPIO=m
|
||||||
CONFIG_MTD_NAND_DISKONCHIP=m
|
CONFIG_MTD_NAND_DISKONCHIP=m
|
||||||
CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADVANCED=y
|
CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADVANCED=y
|
||||||
|
|
|
@ -57,7 +57,7 @@ CONFIG_DEVTMPFS_MOUNT=y
|
||||||
CONFIG_MTD=y
|
CONFIG_MTD=y
|
||||||
CONFIG_MTD_BLOCK=y
|
CONFIG_MTD_BLOCK=y
|
||||||
CONFIG_MTD_M25P80=y
|
CONFIG_MTD_M25P80=y
|
||||||
CONFIG_MTD_NAND=y
|
CONFIG_MTD_RAW_NAND=y
|
||||||
CONFIG_MTD_NAND_QCOM=y
|
CONFIG_MTD_NAND_QCOM=y
|
||||||
CONFIG_MTD_SPI_NOR=y
|
CONFIG_MTD_SPI_NOR=y
|
||||||
CONFIG_BLK_DEV_LOOP=y
|
CONFIG_BLK_DEV_LOOP=y
|
||||||
|
|
|
@ -192,7 +192,7 @@ CONFIG_MTD_JEDECPROBE=y
|
||||||
CONFIG_MTD_CFI_INTELEXT=y
|
CONFIG_MTD_CFI_INTELEXT=y
|
||||||
CONFIG_MTD_CFI_AMDSTD=y
|
CONFIG_MTD_CFI_AMDSTD=y
|
||||||
CONFIG_MTD_ROM=y
|
CONFIG_MTD_ROM=y
|
||||||
CONFIG_MTD_NAND=y
|
CONFIG_MTD_RAW_NAND=y
|
||||||
CONFIG_MTD_NAND_S3C2410=y
|
CONFIG_MTD_NAND_S3C2410=y
|
||||||
CONFIG_PARPORT=y
|
CONFIG_PARPORT=y
|
||||||
CONFIG_PARPORT_PC=m
|
CONFIG_PARPORT_PC=m
|
||||||
|
|
|
@ -23,7 +23,7 @@ CONFIG_CMDLINE="console=ttySAC0,115200 root=/dev/ram init=/linuxrc initrd=0x5100
|
||||||
CONFIG_VFP=y
|
CONFIG_VFP=y
|
||||||
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||||
CONFIG_MTD=y
|
CONFIG_MTD=y
|
||||||
CONFIG_MTD_NAND=y
|
CONFIG_MTD_RAW_NAND=y
|
||||||
CONFIG_MTD_NAND_S3C2410=y
|
CONFIG_MTD_NAND_S3C2410=y
|
||||||
CONFIG_BLK_DEV_LOOP=y
|
CONFIG_BLK_DEV_LOOP=y
|
||||||
CONFIG_BLK_DEV_RAM=y
|
CONFIG_BLK_DEV_RAM=y
|
||||||
|
|
|
@ -66,7 +66,7 @@ CONFIG_MTD_CMDLINE_PARTS=y
|
||||||
CONFIG_MTD_BLOCK=y
|
CONFIG_MTD_BLOCK=y
|
||||||
CONFIG_MTD_CFI=y
|
CONFIG_MTD_CFI=y
|
||||||
CONFIG_MTD_M25P80=y
|
CONFIG_MTD_M25P80=y
|
||||||
CONFIG_MTD_NAND=y
|
CONFIG_MTD_RAW_NAND=y
|
||||||
CONFIG_MTD_NAND_ATMEL=y
|
CONFIG_MTD_NAND_ATMEL=y
|
||||||
CONFIG_MTD_SPI_NOR=y
|
CONFIG_MTD_SPI_NOR=y
|
||||||
CONFIG_MTD_UBI=y
|
CONFIG_MTD_UBI=y
|
||||||
|
|
|
@ -51,7 +51,7 @@ CONFIG_DEVTMPFS_MOUNT=y
|
||||||
CONFIG_MTD=y
|
CONFIG_MTD=y
|
||||||
CONFIG_MTD_BLOCK=y
|
CONFIG_MTD_BLOCK=y
|
||||||
CONFIG_MTD_M25P80=y
|
CONFIG_MTD_M25P80=y
|
||||||
CONFIG_MTD_NAND=y
|
CONFIG_MTD_RAW_NAND=y
|
||||||
CONFIG_MTD_NAND_DENALI_DT=y
|
CONFIG_MTD_NAND_DENALI_DT=y
|
||||||
CONFIG_MTD_SPI_NOR=y
|
CONFIG_MTD_SPI_NOR=y
|
||||||
# CONFIG_MTD_SPI_NOR_USE_4K_SECTORS is not set
|
# CONFIG_MTD_SPI_NOR_USE_4K_SECTORS is not set
|
||||||
|
|
|
@ -32,7 +32,7 @@ CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||||
CONFIG_MTD=y
|
CONFIG_MTD=y
|
||||||
CONFIG_MTD_OF_PARTS=y
|
CONFIG_MTD_OF_PARTS=y
|
||||||
CONFIG_MTD_BLOCK=y
|
CONFIG_MTD_BLOCK=y
|
||||||
CONFIG_MTD_NAND=y
|
CONFIG_MTD_RAW_NAND=y
|
||||||
CONFIG_MTD_NAND_FSMC=y
|
CONFIG_MTD_NAND_FSMC=y
|
||||||
CONFIG_BLK_DEV_RAM=y
|
CONFIG_BLK_DEV_RAM=y
|
||||||
CONFIG_BLK_DEV_RAM_SIZE=16384
|
CONFIG_BLK_DEV_RAM_SIZE=16384
|
||||||
|
|
|
@ -17,7 +17,7 @@ CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||||
CONFIG_MTD=y
|
CONFIG_MTD=y
|
||||||
CONFIG_MTD_OF_PARTS=y
|
CONFIG_MTD_OF_PARTS=y
|
||||||
CONFIG_MTD_BLOCK=y
|
CONFIG_MTD_BLOCK=y
|
||||||
CONFIG_MTD_NAND=y
|
CONFIG_MTD_RAW_NAND=y
|
||||||
CONFIG_MTD_NAND_FSMC=y
|
CONFIG_MTD_NAND_FSMC=y
|
||||||
CONFIG_BLK_DEV_RAM=y
|
CONFIG_BLK_DEV_RAM=y
|
||||||
CONFIG_BLK_DEV_RAM_SIZE=16384
|
CONFIG_BLK_DEV_RAM_SIZE=16384
|
||||||
|
|
|
@ -14,7 +14,7 @@ CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||||
CONFIG_MTD=y
|
CONFIG_MTD=y
|
||||||
CONFIG_MTD_OF_PARTS=y
|
CONFIG_MTD_OF_PARTS=y
|
||||||
CONFIG_MTD_BLOCK=y
|
CONFIG_MTD_BLOCK=y
|
||||||
CONFIG_MTD_NAND=y
|
CONFIG_MTD_RAW_NAND=y
|
||||||
CONFIG_MTD_NAND_FSMC=y
|
CONFIG_MTD_NAND_FSMC=y
|
||||||
CONFIG_BLK_DEV_RAM=y
|
CONFIG_BLK_DEV_RAM=y
|
||||||
CONFIG_BLK_DEV_RAM_SIZE=16384
|
CONFIG_BLK_DEV_RAM_SIZE=16384
|
||||||
|
|
|
@ -84,7 +84,7 @@ CONFIG_MTD_CMDLINE_PARTS=y
|
||||||
CONFIG_MTD_BLOCK=y
|
CONFIG_MTD_BLOCK=y
|
||||||
CONFIG_MTD_ROM=y
|
CONFIG_MTD_ROM=y
|
||||||
CONFIG_MTD_COMPLEX_MAPPINGS=y
|
CONFIG_MTD_COMPLEX_MAPPINGS=y
|
||||||
CONFIG_MTD_NAND=y
|
CONFIG_MTD_RAW_NAND=y
|
||||||
CONFIG_MTD_NAND_SHARPSL=y
|
CONFIG_MTD_NAND_SHARPSL=y
|
||||||
CONFIG_BLK_DEV_LOOP=y
|
CONFIG_BLK_DEV_LOOP=y
|
||||||
CONFIG_BLK_DEV_SD=y
|
CONFIG_BLK_DEV_SD=y
|
||||||
|
|
|
@ -39,7 +39,7 @@ CONFIG_DEVTMPFS_MOUNT=y
|
||||||
CONFIG_MTD=y
|
CONFIG_MTD=y
|
||||||
CONFIG_MTD_TESTS=m
|
CONFIG_MTD_TESTS=m
|
||||||
CONFIG_MTD_CMDLINE_PARTS=y
|
CONFIG_MTD_CMDLINE_PARTS=y
|
||||||
CONFIG_MTD_NAND=y
|
CONFIG_MTD_RAW_NAND=y
|
||||||
CONFIG_MTD_NAND_TANGO=y
|
CONFIG_MTD_NAND_TANGO=y
|
||||||
CONFIG_BLK_DEV_LOOP=y
|
CONFIG_BLK_DEV_LOOP=y
|
||||||
CONFIG_SCSI=y
|
CONFIG_SCSI=y
|
||||||
|
|
|
@ -76,7 +76,7 @@ CONFIG_MTD_DOC2001PLUS=y
|
||||||
CONFIG_MTD_DOCPROBE_ADVANCED=y
|
CONFIG_MTD_DOCPROBE_ADVANCED=y
|
||||||
CONFIG_MTD_DOCPROBE_ADDRESS=0x4000000
|
CONFIG_MTD_DOCPROBE_ADDRESS=0x4000000
|
||||||
CONFIG_MTD_DOCPROBE_HIGH=y
|
CONFIG_MTD_DOCPROBE_HIGH=y
|
||||||
CONFIG_MTD_NAND=y
|
CONFIG_MTD_RAW_NAND=y
|
||||||
CONFIG_MTD_NAND_DISKONCHIP=y
|
CONFIG_MTD_NAND_DISKONCHIP=y
|
||||||
CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADVANCED=y
|
CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADVANCED=y
|
||||||
CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADDRESS=0x4000000
|
CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADDRESS=0x4000000
|
||||||
|
|
|
@ -26,7 +26,7 @@ CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||||
# CONFIG_PREVENT_FIRMWARE_BUILD is not set
|
# CONFIG_PREVENT_FIRMWARE_BUILD is not set
|
||||||
CONFIG_MTD=y
|
CONFIG_MTD=y
|
||||||
CONFIG_MTD_CMDLINE_PARTS=y
|
CONFIG_MTD_CMDLINE_PARTS=y
|
||||||
CONFIG_MTD_NAND=y
|
CONFIG_MTD_RAW_NAND=y
|
||||||
CONFIG_MTD_NAND_FSMC=y
|
CONFIG_MTD_NAND_FSMC=y
|
||||||
# CONFIG_INPUT_MOUSEDEV is not set
|
# CONFIG_INPUT_MOUSEDEV is not set
|
||||||
CONFIG_INPUT_EVDEV=y
|
CONFIG_INPUT_EVDEV=y
|
||||||
|
|
|
@ -206,7 +206,7 @@ CONFIG_SIMPLE_PM_BUS=y
|
||||||
CONFIG_MTD=y
|
CONFIG_MTD=y
|
||||||
CONFIG_MTD_BLOCK=y
|
CONFIG_MTD_BLOCK=y
|
||||||
CONFIG_MTD_M25P80=y
|
CONFIG_MTD_M25P80=y
|
||||||
CONFIG_MTD_NAND=y
|
CONFIG_MTD_RAW_NAND=y
|
||||||
CONFIG_MTD_NAND_DENALI_DT=y
|
CONFIG_MTD_NAND_DENALI_DT=y
|
||||||
CONFIG_MTD_NAND_MARVELL=y
|
CONFIG_MTD_NAND_MARVELL=y
|
||||||
CONFIG_MTD_NAND_QCOM=y
|
CONFIG_MTD_NAND_QCOM=y
|
||||||
|
|
|
@ -41,7 +41,7 @@ CONFIG_MTD_CFI_AMDSTD=y
|
||||||
CONFIG_MTD_COMPLEX_MAPPINGS=y
|
CONFIG_MTD_COMPLEX_MAPPINGS=y
|
||||||
CONFIG_MTD_PHYSMAP=y
|
CONFIG_MTD_PHYSMAP=y
|
||||||
CONFIG_MTD_BCM47XXSFLASH=y
|
CONFIG_MTD_BCM47XXSFLASH=y
|
||||||
CONFIG_MTD_NAND=y
|
CONFIG_MTD_RAW_NAND=y
|
||||||
CONFIG_MTD_NAND_BCM47XXNFLASH=y
|
CONFIG_MTD_NAND_BCM47XXNFLASH=y
|
||||||
CONFIG_NETDEVICES=y
|
CONFIG_NETDEVICES=y
|
||||||
CONFIG_B44=y
|
CONFIG_B44=y
|
||||||
|
|
|
@ -51,7 +51,7 @@ CONFIG_DEVTMPFS=y
|
||||||
CONFIG_DMA_CMA=y
|
CONFIG_DMA_CMA=y
|
||||||
CONFIG_CMA_SIZE_MBYTES=32
|
CONFIG_CMA_SIZE_MBYTES=32
|
||||||
CONFIG_MTD=y
|
CONFIG_MTD=y
|
||||||
CONFIG_MTD_NAND=y
|
CONFIG_MTD_RAW_NAND=y
|
||||||
CONFIG_MTD_NAND_JZ4780=y
|
CONFIG_MTD_NAND_JZ4780=y
|
||||||
CONFIG_MTD_UBI=y
|
CONFIG_MTD_UBI=y
|
||||||
CONFIG_MTD_UBI_FASTMAP=y
|
CONFIG_MTD_UBI_FASTMAP=y
|
||||||
|
|
|
@ -95,8 +95,8 @@ CONFIG_MTD_CFI_AMDSTD=y
|
||||||
CONFIG_MTD_PHYSMAP=y
|
CONFIG_MTD_PHYSMAP=y
|
||||||
CONFIG_MTD_M25P80=y
|
CONFIG_MTD_M25P80=y
|
||||||
CONFIG_MTD_SST25L=y
|
CONFIG_MTD_SST25L=y
|
||||||
CONFIG_MTD_NAND=y
|
CONFIG_MTD_RAW_NAND=y
|
||||||
CONFIG_MTD_NAND_ECC_BCH=y
|
CONFIG_MTD_NAND_ECC_SW_BCH=y
|
||||||
CONFIG_MTD_NAND_AU1550=y
|
CONFIG_MTD_NAND_AU1550=y
|
||||||
CONFIG_MTD_NAND_PLATFORM=y
|
CONFIG_MTD_NAND_PLATFORM=y
|
||||||
CONFIG_MTD_SPI_NOR=y
|
CONFIG_MTD_SPI_NOR=y
|
||||||
|
|
|
@ -15,9 +15,9 @@ CONFIG_MTD=y
|
||||||
CONFIG_MTD_BLOCK=y
|
CONFIG_MTD_BLOCK=y
|
||||||
CONFIG_MTD_CMDLINE_PARTS=y
|
CONFIG_MTD_CMDLINE_PARTS=y
|
||||||
|
|
||||||
CONFIG_MTD_NAND_ECC=y
|
CONFIG_MTD_NAND_ECC_SW_HAMMING=y
|
||||||
CONFIG_MTD_NAND_ECC_BCH=y
|
CONFIG_MTD_NAND_ECC_SW_BCH=y
|
||||||
CONFIG_MTD_NAND=y
|
CONFIG_MTD_RAW_NAND=y
|
||||||
CONFIG_MTD_NAND_GPIO=y
|
CONFIG_MTD_NAND_GPIO=y
|
||||||
CONFIG_MTD_NAND_IDS=y
|
CONFIG_MTD_NAND_IDS=y
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,7 @@ CONFIG_MTD=y
|
||||||
CONFIG_MTD_CMDLINE_PARTS=y
|
CONFIG_MTD_CMDLINE_PARTS=y
|
||||||
CONFIG_MTD_BLOCK=y
|
CONFIG_MTD_BLOCK=y
|
||||||
CONFIG_MTD_M25P80=y
|
CONFIG_MTD_M25P80=y
|
||||||
CONFIG_MTD_NAND=y
|
CONFIG_MTD_RAW_NAND=y
|
||||||
CONFIG_MTD_NAND_PLATFORM=y
|
CONFIG_MTD_NAND_PLATFORM=y
|
||||||
CONFIG_MTD_SPI_NOR=y
|
CONFIG_MTD_SPI_NOR=y
|
||||||
CONFIG_MTD_UBI=y
|
CONFIG_MTD_UBI=y
|
||||||
|
|
|
@ -41,7 +41,7 @@ CONFIG_DEVTMPFS_MOUNT=y
|
||||||
CONFIG_MTD=y
|
CONFIG_MTD=y
|
||||||
CONFIG_MTD_CMDLINE_PARTS=y
|
CONFIG_MTD_CMDLINE_PARTS=y
|
||||||
CONFIG_MTD_BLOCK=y
|
CONFIG_MTD_BLOCK=y
|
||||||
CONFIG_MTD_NAND=y
|
CONFIG_MTD_RAW_NAND=y
|
||||||
CONFIG_MTD_UBI=y
|
CONFIG_MTD_UBI=y
|
||||||
CONFIG_BLK_DEV_LOOP=y
|
CONFIG_BLK_DEV_LOOP=y
|
||||||
CONFIG_SCSI=m
|
CONFIG_SCSI=m
|
||||||
|
|
|
@ -42,7 +42,7 @@ CONFIG_DEVTMPFS_MOUNT=y
|
||||||
CONFIG_MTD=y
|
CONFIG_MTD=y
|
||||||
CONFIG_MTD_CMDLINE_PARTS=y
|
CONFIG_MTD_CMDLINE_PARTS=y
|
||||||
CONFIG_MTD_BLOCK=y
|
CONFIG_MTD_BLOCK=y
|
||||||
CONFIG_MTD_NAND=y
|
CONFIG_MTD_RAW_NAND=y
|
||||||
CONFIG_MTD_UBI=y
|
CONFIG_MTD_UBI=y
|
||||||
CONFIG_BLK_DEV_LOOP=y
|
CONFIG_BLK_DEV_LOOP=y
|
||||||
CONFIG_SCSI=m
|
CONFIG_SCSI=m
|
||||||
|
|
|
@ -44,7 +44,7 @@ CONFIG_TCP_CONG_WESTWOOD=y
|
||||||
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||||
CONFIG_MTD=y
|
CONFIG_MTD=y
|
||||||
CONFIG_MTD_BLOCK=y
|
CONFIG_MTD_BLOCK=y
|
||||||
CONFIG_MTD_NAND=y
|
CONFIG_MTD_RAW_NAND=y
|
||||||
CONFIG_MTD_NAND_JZ4740=y
|
CONFIG_MTD_NAND_JZ4740=y
|
||||||
CONFIG_MTD_UBI=y
|
CONFIG_MTD_UBI=y
|
||||||
CONFIG_NETDEVICES=y
|
CONFIG_NETDEVICES=y
|
||||||
|
|
|
@ -109,7 +109,7 @@ CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||||
CONFIG_MTD=y
|
CONFIG_MTD=y
|
||||||
CONFIG_MTD_BLOCK=y
|
CONFIG_MTD_BLOCK=y
|
||||||
CONFIG_MTD_BLOCK2MTD=y
|
CONFIG_MTD_BLOCK2MTD=y
|
||||||
CONFIG_MTD_NAND=y
|
CONFIG_MTD_RAW_NAND=y
|
||||||
CONFIG_MTD_NAND_PLATFORM=y
|
CONFIG_MTD_NAND_PLATFORM=y
|
||||||
CONFIG_ATA=y
|
CONFIG_ATA=y
|
||||||
# CONFIG_ATA_VERBOSE_ERROR is not set
|
# CONFIG_ATA_VERBOSE_ERROR is not set
|
||||||
|
|
|
@ -39,7 +39,7 @@ CONFIG_MTD_CFI_AMDSTD=y
|
||||||
CONFIG_MTD_COMPLEX_MAPPINGS=y
|
CONFIG_MTD_COMPLEX_MAPPINGS=y
|
||||||
CONFIG_MTD_PHYSMAP=y
|
CONFIG_MTD_PHYSMAP=y
|
||||||
CONFIG_MTD_RBTX4939=y
|
CONFIG_MTD_RBTX4939=y
|
||||||
CONFIG_MTD_NAND=m
|
CONFIG_MTD_RAW_NAND=m
|
||||||
CONFIG_MTD_NAND_TXX9NDFMC=m
|
CONFIG_MTD_NAND_TXX9NDFMC=m
|
||||||
CONFIG_BLK_DEV_LOOP=y
|
CONFIG_BLK_DEV_LOOP=y
|
||||||
CONFIG_BLK_DEV_RAM=y
|
CONFIG_BLK_DEV_RAM=y
|
||||||
|
|
|
@ -81,7 +81,7 @@ CONFIG_MTD_COMPLEX_MAPPINGS=y
|
||||||
CONFIG_MTD_PHYSMAP=y
|
CONFIG_MTD_PHYSMAP=y
|
||||||
CONFIG_MTD_PHYSMAP_OF=y
|
CONFIG_MTD_PHYSMAP_OF=y
|
||||||
CONFIG_MTD_LANTIQ=y
|
CONFIG_MTD_LANTIQ=y
|
||||||
CONFIG_MTD_NAND=y
|
CONFIG_MTD_RAW_NAND=y
|
||||||
CONFIG_MTD_NAND_XWAY=y
|
CONFIG_MTD_NAND_XWAY=y
|
||||||
CONFIG_EEPROM_93CX6=m
|
CONFIG_EEPROM_93CX6=m
|
||||||
CONFIG_SCSI=y
|
CONFIG_SCSI=y
|
||||||
|
|
|
@ -33,7 +33,7 @@ CONFIG_MTD_CFI=y
|
||||||
CONFIG_MTD_JEDECPROBE=y
|
CONFIG_MTD_JEDECPROBE=y
|
||||||
CONFIG_MTD_CFI_AMDSTD=y
|
CONFIG_MTD_CFI_AMDSTD=y
|
||||||
CONFIG_MTD_PHYSMAP_OF=y
|
CONFIG_MTD_PHYSMAP_OF=y
|
||||||
CONFIG_MTD_NAND=y
|
CONFIG_MTD_RAW_NAND=y
|
||||||
CONFIG_MTD_NAND_NDFC=y
|
CONFIG_MTD_NAND_NDFC=y
|
||||||
CONFIG_BLK_DEV_RAM=y
|
CONFIG_BLK_DEV_RAM=y
|
||||||
CONFIG_BLK_DEV_RAM_SIZE=35000
|
CONFIG_BLK_DEV_RAM_SIZE=35000
|
||||||
|
|
|
@ -33,7 +33,7 @@ CONFIG_MTD_CFI=y
|
||||||
CONFIG_MTD_JEDECPROBE=y
|
CONFIG_MTD_JEDECPROBE=y
|
||||||
CONFIG_MTD_CFI_AMDSTD=y
|
CONFIG_MTD_CFI_AMDSTD=y
|
||||||
CONFIG_MTD_PHYSMAP_OF=y
|
CONFIG_MTD_PHYSMAP_OF=y
|
||||||
CONFIG_MTD_NAND=y
|
CONFIG_MTD_RAW_NAND=y
|
||||||
CONFIG_MTD_NAND_NDFC=y
|
CONFIG_MTD_NAND_NDFC=y
|
||||||
CONFIG_BLK_DEV_RAM=y
|
CONFIG_BLK_DEV_RAM=y
|
||||||
CONFIG_BLK_DEV_RAM_SIZE=35000
|
CONFIG_BLK_DEV_RAM_SIZE=35000
|
||||||
|
|
|
@ -32,7 +32,7 @@ CONFIG_MTD_BLOCK=y
|
||||||
CONFIG_MTD_CFI=y
|
CONFIG_MTD_CFI=y
|
||||||
CONFIG_MTD_CFI_AMDSTD=y
|
CONFIG_MTD_CFI_AMDSTD=y
|
||||||
CONFIG_MTD_PHYSMAP_OF=y
|
CONFIG_MTD_PHYSMAP_OF=y
|
||||||
CONFIG_MTD_NAND=y
|
CONFIG_MTD_RAW_NAND=y
|
||||||
CONFIG_MTD_NAND_NDFC=y
|
CONFIG_MTD_NAND_NDFC=y
|
||||||
CONFIG_BLK_DEV_RAM=y
|
CONFIG_BLK_DEV_RAM=y
|
||||||
CONFIG_BLK_DEV_RAM_SIZE=35000
|
CONFIG_BLK_DEV_RAM_SIZE=35000
|
||||||
|
|
|
@ -33,7 +33,7 @@ CONFIG_MTD_BLOCK=y
|
||||||
CONFIG_MTD_CFI=y
|
CONFIG_MTD_CFI=y
|
||||||
CONFIG_MTD_CFI_AMDSTD=y
|
CONFIG_MTD_CFI_AMDSTD=y
|
||||||
CONFIG_MTD_PHYSMAP_OF=y
|
CONFIG_MTD_PHYSMAP_OF=y
|
||||||
CONFIG_MTD_NAND=y
|
CONFIG_MTD_RAW_NAND=y
|
||||||
CONFIG_MTD_NAND_NDFC=y
|
CONFIG_MTD_NAND_NDFC=y
|
||||||
CONFIG_BLK_DEV_RAM=y
|
CONFIG_BLK_DEV_RAM=y
|
||||||
CONFIG_BLK_DEV_RAM_SIZE=35000
|
CONFIG_BLK_DEV_RAM_SIZE=35000
|
||||||
|
|
|
@ -33,7 +33,7 @@ CONFIG_MTD_JEDECPROBE=y
|
||||||
CONFIG_MTD_CFI_INTELEXT=y
|
CONFIG_MTD_CFI_INTELEXT=y
|
||||||
CONFIG_MTD_CFI_AMDSTD=y
|
CONFIG_MTD_CFI_AMDSTD=y
|
||||||
CONFIG_MTD_PHYSMAP_OF=y
|
CONFIG_MTD_PHYSMAP_OF=y
|
||||||
CONFIG_MTD_NAND=y
|
CONFIG_MTD_RAW_NAND=y
|
||||||
CONFIG_MTD_NAND_NDFC=y
|
CONFIG_MTD_NAND_NDFC=y
|
||||||
CONFIG_BLK_DEV_RAM=y
|
CONFIG_BLK_DEV_RAM=y
|
||||||
CONFIG_BLK_DEV_RAM_SIZE=35000
|
CONFIG_BLK_DEV_RAM_SIZE=35000
|
||||||
|
|
|
@ -34,7 +34,7 @@ CONFIG_MTD_BLOCK=y
|
||||||
CONFIG_MTD_CFI=y
|
CONFIG_MTD_CFI=y
|
||||||
CONFIG_MTD_CFI_AMDSTD=y
|
CONFIG_MTD_CFI_AMDSTD=y
|
||||||
CONFIG_MTD_PHYSMAP_OF=y
|
CONFIG_MTD_PHYSMAP_OF=y
|
||||||
CONFIG_MTD_NAND=y
|
CONFIG_MTD_RAW_NAND=y
|
||||||
CONFIG_MTD_NAND_NDFC=y
|
CONFIG_MTD_NAND_NDFC=y
|
||||||
CONFIG_MTD_UBI=y
|
CONFIG_MTD_UBI=y
|
||||||
CONFIG_BLK_DEV_RAM=y
|
CONFIG_BLK_DEV_RAM=y
|
||||||
|
|
|
@ -31,7 +31,7 @@ CONFIG_MTD_BLOCK=y
|
||||||
CONFIG_MTD_CFI=y
|
CONFIG_MTD_CFI=y
|
||||||
CONFIG_MTD_CFI_AMDSTD=y
|
CONFIG_MTD_CFI_AMDSTD=y
|
||||||
CONFIG_MTD_PHYSMAP_OF=y
|
CONFIG_MTD_PHYSMAP_OF=y
|
||||||
CONFIG_MTD_NAND=y
|
CONFIG_MTD_RAW_NAND=y
|
||||||
CONFIG_MTD_NAND_FSL_ELBC=y
|
CONFIG_MTD_NAND_FSL_ELBC=y
|
||||||
CONFIG_BLK_DEV_LOOP=y
|
CONFIG_BLK_DEV_LOOP=y
|
||||||
CONFIG_BLK_DEV_RAM=y
|
CONFIG_BLK_DEV_RAM=y
|
||||||
|
|
|
@ -31,7 +31,7 @@ CONFIG_MTD_BLOCK=y
|
||||||
CONFIG_MTD_CFI=y
|
CONFIG_MTD_CFI=y
|
||||||
CONFIG_MTD_CFI_AMDSTD=y
|
CONFIG_MTD_CFI_AMDSTD=y
|
||||||
CONFIG_MTD_PHYSMAP_OF=y
|
CONFIG_MTD_PHYSMAP_OF=y
|
||||||
CONFIG_MTD_NAND=y
|
CONFIG_MTD_RAW_NAND=y
|
||||||
CONFIG_BLK_DEV_LOOP=y
|
CONFIG_BLK_DEV_LOOP=y
|
||||||
CONFIG_BLK_DEV_RAM=y
|
CONFIG_BLK_DEV_RAM=y
|
||||||
CONFIG_BLK_DEV_RAM_SIZE=32768
|
CONFIG_BLK_DEV_RAM_SIZE=32768
|
||||||
|
|
|
@ -71,7 +71,7 @@ CONFIG_MTD_CMDLINE_PARTS=y
|
||||||
CONFIG_MTD_M25P80=y
|
CONFIG_MTD_M25P80=y
|
||||||
CONFIG_MTD_NAND_FSL_ELBC=y
|
CONFIG_MTD_NAND_FSL_ELBC=y
|
||||||
CONFIG_MTD_NAND_FSL_IFC=y
|
CONFIG_MTD_NAND_FSL_IFC=y
|
||||||
CONFIG_MTD_NAND=y
|
CONFIG_MTD_RAW_NAND=y
|
||||||
CONFIG_MTD_PHYSMAP_OF=y
|
CONFIG_MTD_PHYSMAP_OF=y
|
||||||
CONFIG_MTD_PHYSMAP=y
|
CONFIG_MTD_PHYSMAP=y
|
||||||
CONFIG_MTD_PLATRAM=y
|
CONFIG_MTD_PLATRAM=y
|
||||||
|
|
|
@ -73,7 +73,7 @@ CONFIG_MTD_JEDECPROBE=y
|
||||||
CONFIG_MTD_CFI_INTELEXT=y
|
CONFIG_MTD_CFI_INTELEXT=y
|
||||||
CONFIG_MTD_CFI_AMDSTD=y
|
CONFIG_MTD_CFI_AMDSTD=y
|
||||||
CONFIG_MTD_PHYSMAP_OF=y
|
CONFIG_MTD_PHYSMAP_OF=y
|
||||||
CONFIG_MTD_NAND=y
|
CONFIG_MTD_RAW_NAND=y
|
||||||
CONFIG_MTD_NAND_FSL_ELBC=y
|
CONFIG_MTD_NAND_FSL_ELBC=y
|
||||||
CONFIG_BLK_DEV_LOOP=m
|
CONFIG_BLK_DEV_LOOP=m
|
||||||
CONFIG_BLK_DEV_CRYPTOLOOP=m
|
CONFIG_BLK_DEV_CRYPTOLOOP=m
|
||||||
|
|
|
@ -31,7 +31,7 @@ CONFIG_MTD_CFI=y
|
||||||
CONFIG_MTD_JEDECPROBE=y
|
CONFIG_MTD_JEDECPROBE=y
|
||||||
CONFIG_MTD_CFI_AMDSTD=y
|
CONFIG_MTD_CFI_AMDSTD=y
|
||||||
CONFIG_MTD_PHYSMAP_OF=y
|
CONFIG_MTD_PHYSMAP_OF=y
|
||||||
CONFIG_MTD_NAND=y
|
CONFIG_MTD_RAW_NAND=y
|
||||||
CONFIG_MTD_NAND_SOCRATES=y
|
CONFIG_MTD_NAND_SOCRATES=y
|
||||||
CONFIG_BLK_DEV_LOOP=y
|
CONFIG_BLK_DEV_LOOP=y
|
||||||
CONFIG_BLK_DEV_RAM=y
|
CONFIG_BLK_DEV_RAM=y
|
||||||
|
|
|
@ -35,8 +35,8 @@ CONFIG_MTD=y
|
||||||
CONFIG_MTD_CFI=y
|
CONFIG_MTD_CFI=y
|
||||||
CONFIG_MTD_CFI_AMDSTD=y
|
CONFIG_MTD_CFI_AMDSTD=y
|
||||||
CONFIG_MTD_PHYSMAP_OF=y
|
CONFIG_MTD_PHYSMAP_OF=y
|
||||||
CONFIG_MTD_NAND_ECC_SMC=y
|
CONFIG_MTD_NAND_ECC_SW_HAMMING_SMC=y
|
||||||
CONFIG_MTD_NAND=y
|
CONFIG_MTD_RAW_NAND=y
|
||||||
CONFIG_MTD_NAND_FSL_UPM=y
|
CONFIG_MTD_NAND_FSL_UPM=y
|
||||||
CONFIG_BLK_DEV_LOOP=y
|
CONFIG_BLK_DEV_LOOP=y
|
||||||
CONFIG_BLK_DEV_RAM=y
|
CONFIG_BLK_DEV_RAM=y
|
||||||
|
|
|
@ -65,7 +65,7 @@ CONFIG_MTD_CFI_INTELEXT=y
|
||||||
CONFIG_MTD_CFI_AMDSTD=y
|
CONFIG_MTD_CFI_AMDSTD=y
|
||||||
CONFIG_MTD_CFI_STAA=y
|
CONFIG_MTD_CFI_STAA=y
|
||||||
CONFIG_MTD_PHYSMAP_OF=y
|
CONFIG_MTD_PHYSMAP_OF=y
|
||||||
CONFIG_MTD_NAND=y
|
CONFIG_MTD_RAW_NAND=y
|
||||||
CONFIG_MTD_NAND_FSL_ELBC=y
|
CONFIG_MTD_NAND_FSL_ELBC=y
|
||||||
CONFIG_MTD_NAND_FSL_UPM=y
|
CONFIG_MTD_NAND_FSL_UPM=y
|
||||||
CONFIG_BLK_DEV_LOOP=y
|
CONFIG_BLK_DEV_LOOP=y
|
||||||
|
|
|
@ -47,7 +47,7 @@ CONFIG_MTD_CFI=y
|
||||||
CONFIG_MTD_CMDLINE_PARTS=y
|
CONFIG_MTD_CMDLINE_PARTS=y
|
||||||
CONFIG_MTD_JEDECPROBE=y
|
CONFIG_MTD_JEDECPROBE=y
|
||||||
CONFIG_MTD_NAND_FSL_ELBC=y
|
CONFIG_MTD_NAND_FSL_ELBC=y
|
||||||
CONFIG_MTD_NAND=y
|
CONFIG_MTD_RAW_NAND=y
|
||||||
CONFIG_MTD_PHYSMAP_OF=y
|
CONFIG_MTD_PHYSMAP_OF=y
|
||||||
CONFIG_NETDEVICES=y
|
CONFIG_NETDEVICES=y
|
||||||
CONFIG_NET_TULIP=y
|
CONFIG_NET_TULIP=y
|
||||||
|
|
|
@ -46,7 +46,7 @@ CONFIG_MTD_CFI=y
|
||||||
CONFIG_MTD_CFI_AMDSTD=y
|
CONFIG_MTD_CFI_AMDSTD=y
|
||||||
CONFIG_MTD_ROM=y
|
CONFIG_MTD_ROM=y
|
||||||
CONFIG_MTD_PHYSMAP_OF=y
|
CONFIG_MTD_PHYSMAP_OF=y
|
||||||
CONFIG_MTD_NAND=y
|
CONFIG_MTD_RAW_NAND=y
|
||||||
CONFIG_MTD_NAND_MPC5121_NFC=y
|
CONFIG_MTD_NAND_MPC5121_NFC=y
|
||||||
CONFIG_MTD_UBI=y
|
CONFIG_MTD_UBI=y
|
||||||
CONFIG_BLK_DEV_RAM=y
|
CONFIG_BLK_DEV_RAM=y
|
||||||
|
|
|
@ -46,7 +46,7 @@ CONFIG_MTD_BLOCK=y
|
||||||
CONFIG_MTD_CFI=y
|
CONFIG_MTD_CFI=y
|
||||||
CONFIG_MTD_CFI_AMDSTD=y
|
CONFIG_MTD_CFI_AMDSTD=y
|
||||||
CONFIG_MTD_PHYSMAP_OF=y
|
CONFIG_MTD_PHYSMAP_OF=y
|
||||||
CONFIG_MTD_NAND=y
|
CONFIG_MTD_RAW_NAND=y
|
||||||
CONFIG_MTD_NAND_FSL_ELBC=y
|
CONFIG_MTD_NAND_FSL_ELBC=y
|
||||||
CONFIG_BLK_DEV_LOOP=y
|
CONFIG_BLK_DEV_LOOP=y
|
||||||
CONFIG_BLK_DEV_RAM=y
|
CONFIG_BLK_DEV_RAM=y
|
||||||
|
|
|
@ -51,7 +51,7 @@ CONFIG_MTD=y
|
||||||
CONFIG_MTD_BLOCK=y
|
CONFIG_MTD_BLOCK=y
|
||||||
CONFIG_MTD_SLRAM=y
|
CONFIG_MTD_SLRAM=y
|
||||||
CONFIG_MTD_PHRAM=y
|
CONFIG_MTD_PHRAM=y
|
||||||
CONFIG_MTD_NAND=y
|
CONFIG_MTD_RAW_NAND=y
|
||||||
CONFIG_MTD_NAND_PASEMI=y
|
CONFIG_MTD_NAND_PASEMI=y
|
||||||
CONFIG_BLK_DEV_LOOP=y
|
CONFIG_BLK_DEV_LOOP=y
|
||||||
CONFIG_BLK_DEV_RAM=y
|
CONFIG_BLK_DEV_RAM=y
|
||||||
|
|
|
@ -44,7 +44,7 @@ CONFIG_MTD_CFI=y
|
||||||
CONFIG_MTD_JEDECPROBE=y
|
CONFIG_MTD_JEDECPROBE=y
|
||||||
CONFIG_MTD_CFI_AMDSTD=y
|
CONFIG_MTD_CFI_AMDSTD=y
|
||||||
CONFIG_MTD_PHYSMAP_OF=y
|
CONFIG_MTD_PHYSMAP_OF=y
|
||||||
CONFIG_MTD_NAND=m
|
CONFIG_MTD_RAW_NAND=m
|
||||||
CONFIG_MTD_NAND_NDFC=m
|
CONFIG_MTD_NAND_NDFC=m
|
||||||
CONFIG_MTD_UBI=m
|
CONFIG_MTD_UBI=m
|
||||||
CONFIG_MTD_UBI_GLUEBI=m
|
CONFIG_MTD_UBI_GLUEBI=m
|
||||||
|
|
|
@ -35,7 +35,7 @@ CONFIG_MTD_BLOCK=y
|
||||||
CONFIG_MTD_CFI=y
|
CONFIG_MTD_CFI=y
|
||||||
CONFIG_MTD_CFI_AMDSTD=y
|
CONFIG_MTD_CFI_AMDSTD=y
|
||||||
CONFIG_MTD_PHYSMAP=y
|
CONFIG_MTD_PHYSMAP=y
|
||||||
CONFIG_MTD_NAND=y
|
CONFIG_MTD_RAW_NAND=y
|
||||||
CONFIG_MTD_NAND_SH_FLCTL=y
|
CONFIG_MTD_NAND_SH_FLCTL=y
|
||||||
CONFIG_MTD_UBI=y
|
CONFIG_MTD_UBI=y
|
||||||
CONFIG_BLK_DEV_RAM=y
|
CONFIG_BLK_DEV_RAM=y
|
||||||
|
|
|
@ -38,7 +38,7 @@ CONFIG_MTD_BLOCK=y
|
||||||
CONFIG_MTD_CFI=y
|
CONFIG_MTD_CFI=y
|
||||||
CONFIG_MTD_CFI_AMDSTD=y
|
CONFIG_MTD_CFI_AMDSTD=y
|
||||||
CONFIG_MTD_PHYSMAP=y
|
CONFIG_MTD_PHYSMAP=y
|
||||||
CONFIG_MTD_NAND=y
|
CONFIG_MTD_RAW_NAND=y
|
||||||
CONFIG_MTD_UBI=y
|
CONFIG_MTD_UBI=y
|
||||||
CONFIG_BLK_DEV_RAM=y
|
CONFIG_BLK_DEV_RAM=y
|
||||||
CONFIG_BLK_DEV_RAM_COUNT=4
|
CONFIG_BLK_DEV_RAM_COUNT=4
|
||||||
|
|
|
@ -34,7 +34,7 @@ CONFIG_MTD_BLOCK=y
|
||||||
CONFIG_MTD_CFI=y
|
CONFIG_MTD_CFI=y
|
||||||
CONFIG_MTD_CFI_AMDSTD=y
|
CONFIG_MTD_CFI_AMDSTD=y
|
||||||
CONFIG_MTD_PHYSMAP=y
|
CONFIG_MTD_PHYSMAP=y
|
||||||
CONFIG_MTD_NAND=y
|
CONFIG_MTD_RAW_NAND=y
|
||||||
CONFIG_MTD_NAND_PLATFORM=y
|
CONFIG_MTD_NAND_PLATFORM=y
|
||||||
CONFIG_BLK_DEV_RAM=y
|
CONFIG_BLK_DEV_RAM=y
|
||||||
CONFIG_SCSI=y
|
CONFIG_SCSI=y
|
||||||
|
|
|
@ -108,7 +108,7 @@ CONFIG_MTD_ROM=m
|
||||||
CONFIG_MTD_ABSENT=m
|
CONFIG_MTD_ABSENT=m
|
||||||
CONFIG_MTD_PLATRAM=y
|
CONFIG_MTD_PLATRAM=y
|
||||||
CONFIG_MTD_PHRAM=y
|
CONFIG_MTD_PHRAM=y
|
||||||
CONFIG_MTD_NAND=y
|
CONFIG_MTD_RAW_NAND=y
|
||||||
CONFIG_MTD_NAND_PLATFORM=y
|
CONFIG_MTD_NAND_PLATFORM=y
|
||||||
CONFIG_MTD_NAND_SH_FLCTL=m
|
CONFIG_MTD_NAND_SH_FLCTL=m
|
||||||
CONFIG_MTD_UBI=y
|
CONFIG_MTD_UBI=y
|
||||||
|
|
|
@ -37,7 +37,7 @@ CONFIG_MTD_BLOCK=y
|
||||||
CONFIG_MTD_CFI=y
|
CONFIG_MTD_CFI=y
|
||||||
CONFIG_MTD_CFI_AMDSTD=y
|
CONFIG_MTD_CFI_AMDSTD=y
|
||||||
CONFIG_MTD_PHYSMAP=y
|
CONFIG_MTD_PHYSMAP=y
|
||||||
CONFIG_MTD_NAND=y
|
CONFIG_MTD_RAW_NAND=y
|
||||||
CONFIG_MTD_UBI=y
|
CONFIG_MTD_UBI=y
|
||||||
CONFIG_BLK_DEV_RAM=y
|
CONFIG_BLK_DEV_RAM=y
|
||||||
CONFIG_BLK_DEV_RAM_COUNT=4
|
CONFIG_BLK_DEV_RAM_COUNT=4
|
||||||
|
|
|
@ -155,7 +155,7 @@ CONFIG_INFTL=m
|
||||||
CONFIG_RFD_FTL=m
|
CONFIG_RFD_FTL=m
|
||||||
CONFIG_MTD_CFI=m
|
CONFIG_MTD_CFI=m
|
||||||
CONFIG_MTD_JEDECPROBE=m
|
CONFIG_MTD_JEDECPROBE=m
|
||||||
CONFIG_MTD_NAND=m
|
CONFIG_MTD_RAW_NAND=m
|
||||||
CONFIG_BLK_DEV_LOOP=m
|
CONFIG_BLK_DEV_LOOP=m
|
||||||
CONFIG_BLK_DEV_CRYPTOLOOP=m
|
CONFIG_BLK_DEV_CRYPTOLOOP=m
|
||||||
CONFIG_BLK_DEV_RAM=y
|
CONFIG_BLK_DEV_RAM=y
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
#include <linux/of_device.h>
|
#include <linux/of_device.h>
|
||||||
#include <linux/regmap.h>
|
#include <linux/regmap.h>
|
||||||
|
#include <soc/at91/atmel-sfr.h>
|
||||||
|
|
||||||
struct atmel_ebi_dev_config {
|
struct atmel_ebi_dev_config {
|
||||||
int cs;
|
int cs;
|
||||||
|
@ -36,6 +37,7 @@ struct atmel_ebi_dev {
|
||||||
struct atmel_ebi_caps {
|
struct atmel_ebi_caps {
|
||||||
unsigned int available_cs;
|
unsigned int available_cs;
|
||||||
unsigned int ebi_csa_offs;
|
unsigned int ebi_csa_offs;
|
||||||
|
const char *regmap_name;
|
||||||
void (*get_config)(struct atmel_ebi_dev *ebid,
|
void (*get_config)(struct atmel_ebi_dev *ebid,
|
||||||
struct atmel_ebi_dev_config *conf);
|
struct atmel_ebi_dev_config *conf);
|
||||||
int (*xlate_config)(struct atmel_ebi_dev *ebid,
|
int (*xlate_config)(struct atmel_ebi_dev *ebid,
|
||||||
|
@ -47,7 +49,7 @@ struct atmel_ebi_caps {
|
||||||
|
|
||||||
struct atmel_ebi {
|
struct atmel_ebi {
|
||||||
struct clk *clk;
|
struct clk *clk;
|
||||||
struct regmap *matrix;
|
struct regmap *regmap;
|
||||||
struct {
|
struct {
|
||||||
struct regmap *regmap;
|
struct regmap *regmap;
|
||||||
struct clk *clk;
|
struct clk *clk;
|
||||||
|
@ -357,7 +359,7 @@ static int atmel_ebi_dev_setup(struct atmel_ebi *ebi, struct device_node *np,
|
||||||
* one "atmel,smc-" property is present.
|
* one "atmel,smc-" property is present.
|
||||||
*/
|
*/
|
||||||
if (ebi->caps->ebi_csa_offs && apply)
|
if (ebi->caps->ebi_csa_offs && apply)
|
||||||
regmap_update_bits(ebi->matrix,
|
regmap_update_bits(ebi->regmap,
|
||||||
ebi->caps->ebi_csa_offs,
|
ebi->caps->ebi_csa_offs,
|
||||||
BIT(cs), 0);
|
BIT(cs), 0);
|
||||||
|
|
||||||
|
@ -372,6 +374,7 @@ static int atmel_ebi_dev_setup(struct atmel_ebi *ebi, struct device_node *np,
|
||||||
static const struct atmel_ebi_caps at91sam9260_ebi_caps = {
|
static const struct atmel_ebi_caps at91sam9260_ebi_caps = {
|
||||||
.available_cs = 0xff,
|
.available_cs = 0xff,
|
||||||
.ebi_csa_offs = AT91SAM9260_MATRIX_EBICSA,
|
.ebi_csa_offs = AT91SAM9260_MATRIX_EBICSA,
|
||||||
|
.regmap_name = "atmel,matrix",
|
||||||
.get_config = at91sam9_ebi_get_config,
|
.get_config = at91sam9_ebi_get_config,
|
||||||
.xlate_config = atmel_ebi_xslate_smc_config,
|
.xlate_config = atmel_ebi_xslate_smc_config,
|
||||||
.apply_config = at91sam9_ebi_apply_config,
|
.apply_config = at91sam9_ebi_apply_config,
|
||||||
|
@ -380,6 +383,7 @@ static const struct atmel_ebi_caps at91sam9260_ebi_caps = {
|
||||||
static const struct atmel_ebi_caps at91sam9261_ebi_caps = {
|
static const struct atmel_ebi_caps at91sam9261_ebi_caps = {
|
||||||
.available_cs = 0xff,
|
.available_cs = 0xff,
|
||||||
.ebi_csa_offs = AT91SAM9261_MATRIX_EBICSA,
|
.ebi_csa_offs = AT91SAM9261_MATRIX_EBICSA,
|
||||||
|
.regmap_name = "atmel,matrix",
|
||||||
.get_config = at91sam9_ebi_get_config,
|
.get_config = at91sam9_ebi_get_config,
|
||||||
.xlate_config = atmel_ebi_xslate_smc_config,
|
.xlate_config = atmel_ebi_xslate_smc_config,
|
||||||
.apply_config = at91sam9_ebi_apply_config,
|
.apply_config = at91sam9_ebi_apply_config,
|
||||||
|
@ -388,6 +392,7 @@ static const struct atmel_ebi_caps at91sam9261_ebi_caps = {
|
||||||
static const struct atmel_ebi_caps at91sam9263_ebi0_caps = {
|
static const struct atmel_ebi_caps at91sam9263_ebi0_caps = {
|
||||||
.available_cs = 0x3f,
|
.available_cs = 0x3f,
|
||||||
.ebi_csa_offs = AT91SAM9263_MATRIX_EBI0CSA,
|
.ebi_csa_offs = AT91SAM9263_MATRIX_EBI0CSA,
|
||||||
|
.regmap_name = "atmel,matrix",
|
||||||
.get_config = at91sam9_ebi_get_config,
|
.get_config = at91sam9_ebi_get_config,
|
||||||
.xlate_config = atmel_ebi_xslate_smc_config,
|
.xlate_config = atmel_ebi_xslate_smc_config,
|
||||||
.apply_config = at91sam9_ebi_apply_config,
|
.apply_config = at91sam9_ebi_apply_config,
|
||||||
|
@ -396,6 +401,7 @@ static const struct atmel_ebi_caps at91sam9263_ebi0_caps = {
|
||||||
static const struct atmel_ebi_caps at91sam9263_ebi1_caps = {
|
static const struct atmel_ebi_caps at91sam9263_ebi1_caps = {
|
||||||
.available_cs = 0x7,
|
.available_cs = 0x7,
|
||||||
.ebi_csa_offs = AT91SAM9263_MATRIX_EBI1CSA,
|
.ebi_csa_offs = AT91SAM9263_MATRIX_EBI1CSA,
|
||||||
|
.regmap_name = "atmel,matrix",
|
||||||
.get_config = at91sam9_ebi_get_config,
|
.get_config = at91sam9_ebi_get_config,
|
||||||
.xlate_config = atmel_ebi_xslate_smc_config,
|
.xlate_config = atmel_ebi_xslate_smc_config,
|
||||||
.apply_config = at91sam9_ebi_apply_config,
|
.apply_config = at91sam9_ebi_apply_config,
|
||||||
|
@ -404,6 +410,7 @@ static const struct atmel_ebi_caps at91sam9263_ebi1_caps = {
|
||||||
static const struct atmel_ebi_caps at91sam9rl_ebi_caps = {
|
static const struct atmel_ebi_caps at91sam9rl_ebi_caps = {
|
||||||
.available_cs = 0x3f,
|
.available_cs = 0x3f,
|
||||||
.ebi_csa_offs = AT91SAM9RL_MATRIX_EBICSA,
|
.ebi_csa_offs = AT91SAM9RL_MATRIX_EBICSA,
|
||||||
|
.regmap_name = "atmel,matrix",
|
||||||
.get_config = at91sam9_ebi_get_config,
|
.get_config = at91sam9_ebi_get_config,
|
||||||
.xlate_config = atmel_ebi_xslate_smc_config,
|
.xlate_config = atmel_ebi_xslate_smc_config,
|
||||||
.apply_config = at91sam9_ebi_apply_config,
|
.apply_config = at91sam9_ebi_apply_config,
|
||||||
|
@ -412,6 +419,7 @@ static const struct atmel_ebi_caps at91sam9rl_ebi_caps = {
|
||||||
static const struct atmel_ebi_caps at91sam9g45_ebi_caps = {
|
static const struct atmel_ebi_caps at91sam9g45_ebi_caps = {
|
||||||
.available_cs = 0x3f,
|
.available_cs = 0x3f,
|
||||||
.ebi_csa_offs = AT91SAM9G45_MATRIX_EBICSA,
|
.ebi_csa_offs = AT91SAM9G45_MATRIX_EBICSA,
|
||||||
|
.regmap_name = "atmel,matrix",
|
||||||
.get_config = at91sam9_ebi_get_config,
|
.get_config = at91sam9_ebi_get_config,
|
||||||
.xlate_config = atmel_ebi_xslate_smc_config,
|
.xlate_config = atmel_ebi_xslate_smc_config,
|
||||||
.apply_config = at91sam9_ebi_apply_config,
|
.apply_config = at91sam9_ebi_apply_config,
|
||||||
|
@ -420,6 +428,7 @@ static const struct atmel_ebi_caps at91sam9g45_ebi_caps = {
|
||||||
static const struct atmel_ebi_caps at91sam9x5_ebi_caps = {
|
static const struct atmel_ebi_caps at91sam9x5_ebi_caps = {
|
||||||
.available_cs = 0x3f,
|
.available_cs = 0x3f,
|
||||||
.ebi_csa_offs = AT91SAM9X5_MATRIX_EBICSA,
|
.ebi_csa_offs = AT91SAM9X5_MATRIX_EBICSA,
|
||||||
|
.regmap_name = "atmel,matrix",
|
||||||
.get_config = at91sam9_ebi_get_config,
|
.get_config = at91sam9_ebi_get_config,
|
||||||
.xlate_config = atmel_ebi_xslate_smc_config,
|
.xlate_config = atmel_ebi_xslate_smc_config,
|
||||||
.apply_config = at91sam9_ebi_apply_config,
|
.apply_config = at91sam9_ebi_apply_config,
|
||||||
|
@ -432,6 +441,15 @@ static const struct atmel_ebi_caps sama5d3_ebi_caps = {
|
||||||
.apply_config = sama5_ebi_apply_config,
|
.apply_config = sama5_ebi_apply_config,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static const struct atmel_ebi_caps sam9x60_ebi_caps = {
|
||||||
|
.available_cs = 0x3f,
|
||||||
|
.ebi_csa_offs = AT91_SFR_CCFG_EBICSA,
|
||||||
|
.regmap_name = "microchip,sfr",
|
||||||
|
.get_config = at91sam9_ebi_get_config,
|
||||||
|
.xlate_config = atmel_ebi_xslate_smc_config,
|
||||||
|
.apply_config = at91sam9_ebi_apply_config,
|
||||||
|
};
|
||||||
|
|
||||||
static const struct of_device_id atmel_ebi_id_table[] = {
|
static const struct of_device_id atmel_ebi_id_table[] = {
|
||||||
{
|
{
|
||||||
.compatible = "atmel,at91sam9260-ebi",
|
.compatible = "atmel,at91sam9260-ebi",
|
||||||
|
@ -465,6 +483,10 @@ static const struct of_device_id atmel_ebi_id_table[] = {
|
||||||
.compatible = "atmel,sama5d3-ebi",
|
.compatible = "atmel,sama5d3-ebi",
|
||||||
.data = &sama5d3_ebi_caps,
|
.data = &sama5d3_ebi_caps,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
.compatible = "microchip,sam9x60-ebi",
|
||||||
|
.data = &sam9x60_ebi_caps,
|
||||||
|
},
|
||||||
{ /* sentinel */ }
|
{ /* sentinel */ }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -543,13 +565,14 @@ static int atmel_ebi_probe(struct platform_device *pdev)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The sama5d3 does not provide an EBICSA register and thus does need
|
* The sama5d3 does not provide an EBICSA register and thus does need
|
||||||
* to access the matrix registers.
|
* to access it.
|
||||||
*/
|
*/
|
||||||
if (ebi->caps->ebi_csa_offs) {
|
if (ebi->caps->ebi_csa_offs) {
|
||||||
ebi->matrix =
|
ebi->regmap =
|
||||||
syscon_regmap_lookup_by_phandle(np, "atmel,matrix");
|
syscon_regmap_lookup_by_phandle(np,
|
||||||
if (IS_ERR(ebi->matrix))
|
ebi->caps->regmap_name);
|
||||||
return PTR_ERR(ebi->matrix);
|
if (IS_ERR(ebi->regmap))
|
||||||
|
return PTR_ERR(ebi->regmap);
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = of_property_read_u32(np, "#address-cells", &val);
|
ret = of_property_read_u32(np, "#address-cells", &val);
|
||||||
|
|
|
@ -60,22 +60,6 @@ config MTD_CMDLINE_PARTS
|
||||||
|
|
||||||
If unsure, say 'N'.
|
If unsure, say 'N'.
|
||||||
|
|
||||||
config MTD_AFS_PARTS
|
|
||||||
tristate "ARM Firmware Suite partition parsing"
|
|
||||||
depends on (ARM || ARM64)
|
|
||||||
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
|
|
||||||
'physmap' map driver (CONFIG_MTD_PHYSMAP) does this, for example.
|
|
||||||
|
|
||||||
config MTD_OF_PARTS
|
config MTD_OF_PARTS
|
||||||
tristate "OpenFirmware partitioning information support"
|
tristate "OpenFirmware partitioning information support"
|
||||||
default y
|
default y
|
||||||
|
@ -94,6 +78,7 @@ config MTD_BCM63XX_PARTS
|
||||||
tristate "BCM63XX CFE partitioning support"
|
tristate "BCM63XX CFE partitioning support"
|
||||||
depends on BCM63XX || BMIPS_GENERIC || COMPILE_TEST
|
depends on BCM63XX || BMIPS_GENERIC || COMPILE_TEST
|
||||||
select CRC32
|
select CRC32
|
||||||
|
select MTD_PARSER_IMAGETAG
|
||||||
help
|
help
|
||||||
This provides partition parsing for BCM63xx devices with CFE
|
This provides partition parsing for BCM63xx devices with CFE
|
||||||
bootloaders.
|
bootloaders.
|
||||||
|
@ -230,12 +215,11 @@ config SSFDC
|
||||||
This enables read only access to SmartMedia formatted NAND
|
This enables read only access to SmartMedia formatted NAND
|
||||||
flash. You can mount it with FAT file system.
|
flash. You can mount it with FAT file system.
|
||||||
|
|
||||||
|
|
||||||
config SM_FTL
|
config SM_FTL
|
||||||
tristate "SmartMedia/xD new translation layer"
|
tristate "SmartMedia/xD new translation layer"
|
||||||
depends on BLOCK
|
depends on BLOCK
|
||||||
select MTD_BLKDEVS
|
select MTD_BLKDEVS
|
||||||
select MTD_NAND_ECC
|
select MTD_NAND_ECC_SW_HAMMING
|
||||||
help
|
help
|
||||||
This enables EXPERIMENTAL R/W support for SmartMedia/xD
|
This enables EXPERIMENTAL R/W support for SmartMedia/xD
|
||||||
FTL (Flash translation layer).
|
FTL (Flash translation layer).
|
||||||
|
|
|
@ -9,7 +9,6 @@ mtd-y := mtdcore.o mtdsuper.o mtdconcat.o mtdpart.o mtdchar.o
|
||||||
|
|
||||||
obj-$(CONFIG_MTD_OF_PARTS) += ofpart.o
|
obj-$(CONFIG_MTD_OF_PARTS) += ofpart.o
|
||||||
obj-$(CONFIG_MTD_CMDLINE_PARTS) += cmdlinepart.o
|
obj-$(CONFIG_MTD_CMDLINE_PARTS) += cmdlinepart.o
|
||||||
obj-$(CONFIG_MTD_AFS_PARTS) += afs.o
|
|
||||||
obj-$(CONFIG_MTD_AR7_PARTS) += ar7part.o
|
obj-$(CONFIG_MTD_AR7_PARTS) += ar7part.o
|
||||||
obj-$(CONFIG_MTD_BCM63XX_PARTS) += bcm63xxpart.o
|
obj-$(CONFIG_MTD_BCM63XX_PARTS) += bcm63xxpart.o
|
||||||
obj-$(CONFIG_MTD_BCM47XX_PARTS) += bcm47xxpart.o
|
obj-$(CONFIG_MTD_BCM47XX_PARTS) += bcm47xxpart.o
|
||||||
|
|
|
@ -1,266 +0,0 @@
|
||||||
/*======================================================================
|
|
||||||
|
|
||||||
drivers/mtd/afs.c: ARM Flash Layout/Partitioning
|
|
||||||
|
|
||||||
Copyright © 2000 ARM Limited
|
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation; either version 2 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program; if not, write to the Free Software
|
|
||||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
|
|
||||||
This is access code for flashes using ARM's flash partitioning
|
|
||||||
standards.
|
|
||||||
|
|
||||||
======================================================================*/
|
|
||||||
|
|
||||||
#include <linux/module.h>
|
|
||||||
#include <linux/types.h>
|
|
||||||
#include <linux/kernel.h>
|
|
||||||
#include <linux/slab.h>
|
|
||||||
#include <linux/string.h>
|
|
||||||
#include <linux/init.h>
|
|
||||||
|
|
||||||
#include <linux/mtd/mtd.h>
|
|
||||||
#include <linux/mtd/map.h>
|
|
||||||
#include <linux/mtd/partitions.h>
|
|
||||||
|
|
||||||
#define AFSV1_FOOTER_MAGIC 0xA0FFFF9F
|
|
||||||
|
|
||||||
struct footer_v1 {
|
|
||||||
u32 image_info_base; /* Address of first word of ImageFooter */
|
|
||||||
u32 image_start; /* Start of area reserved by this footer */
|
|
||||||
u32 signature; /* 'Magic' number proves it's a footer */
|
|
||||||
u32 type; /* Area type: ARM Image, SIB, customer */
|
|
||||||
u32 checksum; /* Just this structure */
|
|
||||||
};
|
|
||||||
|
|
||||||
struct image_info_v1 {
|
|
||||||
u32 bootFlags; /* Boot flags, compression etc. */
|
|
||||||
u32 imageNumber; /* Unique number, selects for boot etc. */
|
|
||||||
u32 loadAddress; /* Address program should be loaded to */
|
|
||||||
u32 length; /* Actual size of image */
|
|
||||||
u32 address; /* Image is executed from here */
|
|
||||||
char name[16]; /* Null terminated */
|
|
||||||
u32 headerBase; /* Flash Address of any stripped header */
|
|
||||||
u32 header_length; /* Length of header in memory */
|
|
||||||
u32 headerType; /* AIF, RLF, s-record etc. */
|
|
||||||
u32 checksum; /* Image checksum (inc. this struct) */
|
|
||||||
};
|
|
||||||
|
|
||||||
static u32 word_sum(void *words, int num)
|
|
||||||
{
|
|
||||||
u32 *p = words;
|
|
||||||
u32 sum = 0;
|
|
||||||
|
|
||||||
while (num--)
|
|
||||||
sum += *p++;
|
|
||||||
|
|
||||||
return sum;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
|
||||||
afs_read_footer_v1(struct mtd_info *mtd, u_int *img_start, u_int *iis_start,
|
|
||||||
u_int off, u_int mask)
|
|
||||||
{
|
|
||||||
struct footer_v1 fs;
|
|
||||||
u_int ptr = off + mtd->erasesize - sizeof(fs);
|
|
||||||
size_t sz;
|
|
||||||
int ret;
|
|
||||||
|
|
||||||
ret = mtd_read(mtd, ptr, sizeof(fs), &sz, (u_char *)&fs);
|
|
||||||
if (ret >= 0 && sz != sizeof(fs))
|
|
||||||
ret = -EINVAL;
|
|
||||||
|
|
||||||
if (ret < 0) {
|
|
||||||
printk(KERN_ERR "AFS: mtd read failed at 0x%x: %d\n",
|
|
||||||
ptr, ret);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Does it contain the magic number?
|
|
||||||
*/
|
|
||||||
if (fs.signature != AFSV1_FOOTER_MAGIC)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Check the checksum.
|
|
||||||
*/
|
|
||||||
if (word_sum(&fs, sizeof(fs) / sizeof(u32)) != 0xffffffff)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Don't touch the SIB.
|
|
||||||
*/
|
|
||||||
if (fs.type == 2)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
*iis_start = fs.image_info_base & mask;
|
|
||||||
*img_start = fs.image_start & mask;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Check the image info base. This can not
|
|
||||||
* be located after the footer structure.
|
|
||||||
*/
|
|
||||||
if (*iis_start >= ptr)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Check the start of this image. The image
|
|
||||||
* data can not be located after this block.
|
|
||||||
*/
|
|
||||||
if (*img_start > off)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
|
||||||
afs_read_iis_v1(struct mtd_info *mtd, struct image_info_v1 *iis, u_int ptr)
|
|
||||||
{
|
|
||||||
size_t sz;
|
|
||||||
int ret, i;
|
|
||||||
|
|
||||||
memset(iis, 0, sizeof(*iis));
|
|
||||||
ret = mtd_read(mtd, ptr, sizeof(*iis), &sz, (u_char *)iis);
|
|
||||||
if (ret < 0)
|
|
||||||
goto failed;
|
|
||||||
|
|
||||||
if (sz != sizeof(*iis)) {
|
|
||||||
ret = -EINVAL;
|
|
||||||
goto failed;
|
|
||||||
}
|
|
||||||
|
|
||||||
ret = 0;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Validate the name - it must be NUL terminated.
|
|
||||||
*/
|
|
||||||
for (i = 0; i < sizeof(iis->name); i++)
|
|
||||||
if (iis->name[i] == '\0')
|
|
||||||
break;
|
|
||||||
|
|
||||||
if (i < sizeof(iis->name))
|
|
||||||
ret = 1;
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
|
|
||||||
failed:
|
|
||||||
printk(KERN_ERR "AFS: mtd read failed at 0x%x: %d\n",
|
|
||||||
ptr, ret);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int parse_afs_partitions(struct mtd_info *mtd,
|
|
||||||
const struct mtd_partition **pparts,
|
|
||||||
struct mtd_part_parser_data *data)
|
|
||||||
{
|
|
||||||
struct mtd_partition *parts;
|
|
||||||
u_int mask, off, idx, sz;
|
|
||||||
int ret = 0;
|
|
||||||
char *str;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* This is the address mask; we use this to mask off out of
|
|
||||||
* range address bits.
|
|
||||||
*/
|
|
||||||
mask = mtd->size - 1;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* First, calculate the size of the array we need for the
|
|
||||||
* partition information. We include in this the size of
|
|
||||||
* the strings.
|
|
||||||
*/
|
|
||||||
for (idx = off = sz = 0; off < mtd->size; off += mtd->erasesize) {
|
|
||||||
struct image_info_v1 iis;
|
|
||||||
u_int iis_ptr, img_ptr;
|
|
||||||
|
|
||||||
ret = afs_read_footer_v1(mtd, &img_ptr, &iis_ptr, off, mask);
|
|
||||||
if (ret < 0)
|
|
||||||
break;
|
|
||||||
if (ret) {
|
|
||||||
ret = afs_read_iis_v1(mtd, &iis, iis_ptr);
|
|
||||||
if (ret < 0)
|
|
||||||
break;
|
|
||||||
if (ret == 0)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
sz += sizeof(struct mtd_partition);
|
|
||||||
sz += strlen(iis.name) + 1;
|
|
||||||
idx += 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!sz)
|
|
||||||
return ret;
|
|
||||||
|
|
||||||
parts = kzalloc(sz, GFP_KERNEL);
|
|
||||||
if (!parts)
|
|
||||||
return -ENOMEM;
|
|
||||||
|
|
||||||
str = (char *)(parts + idx);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Identify the partitions
|
|
||||||
*/
|
|
||||||
for (idx = off = 0; off < mtd->size; off += mtd->erasesize) {
|
|
||||||
struct image_info_v1 iis;
|
|
||||||
u_int iis_ptr, img_ptr;
|
|
||||||
|
|
||||||
/* Read the footer. */
|
|
||||||
ret = afs_read_footer_v1(mtd, &img_ptr, &iis_ptr, off, mask);
|
|
||||||
if (ret < 0)
|
|
||||||
break;
|
|
||||||
if (ret == 0)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
/* Read the image info block */
|
|
||||||
ret = afs_read_iis_v1(mtd, &iis, iis_ptr);
|
|
||||||
if (ret < 0)
|
|
||||||
break;
|
|
||||||
if (ret == 0)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
strcpy(str, iis.name);
|
|
||||||
|
|
||||||
parts[idx].name = str;
|
|
||||||
parts[idx].size = (iis.length + mtd->erasesize - 1) & ~(mtd->erasesize - 1);
|
|
||||||
parts[idx].offset = img_ptr;
|
|
||||||
parts[idx].mask_flags = 0;
|
|
||||||
|
|
||||||
printk(" mtd%d: at 0x%08x, %5lluKiB, %8u, %s\n",
|
|
||||||
idx, img_ptr, parts[idx].size / 1024,
|
|
||||||
iis.imageNumber, str);
|
|
||||||
|
|
||||||
idx += 1;
|
|
||||||
str = str + strlen(iis.name) + 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!idx) {
|
|
||||||
kfree(parts);
|
|
||||||
parts = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
*pparts = parts;
|
|
||||||
return idx ? idx : ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
static struct mtd_part_parser afs_parser = {
|
|
||||||
.parse_fn = parse_afs_partitions,
|
|
||||||
.name = "afs",
|
|
||||||
};
|
|
||||||
module_mtd_part_parser(afs_parser);
|
|
||||||
|
|
||||||
MODULE_AUTHOR("ARM Ltd");
|
|
||||||
MODULE_DESCRIPTION("ARM Firmware Suite partition parser");
|
|
||||||
MODULE_LICENSE("GPL");
|
|
|
@ -34,6 +34,7 @@
|
||||||
#include <linux/vmalloc.h>
|
#include <linux/vmalloc.h>
|
||||||
#include <linux/mtd/mtd.h>
|
#include <linux/mtd/mtd.h>
|
||||||
#include <linux/mtd/partitions.h>
|
#include <linux/mtd/partitions.h>
|
||||||
|
#include <linux/of.h>
|
||||||
|
|
||||||
#define BCM963XX_CFE_BLOCK_SIZE SZ_64K /* always at least 64KiB */
|
#define BCM963XX_CFE_BLOCK_SIZE SZ_64K /* always at least 64KiB */
|
||||||
|
|
||||||
|
@ -93,51 +94,19 @@ static int bcm63xx_read_nvram(struct mtd_info *master,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int bcm63xx_read_image_tag(struct mtd_info *master, const char *name,
|
static const char * const bcm63xx_cfe_part_types[] = {
|
||||||
loff_t tag_offset, struct bcm_tag *buf)
|
"bcm963xx-imagetag",
|
||||||
{
|
NULL,
|
||||||
int ret;
|
};
|
||||||
size_t retlen;
|
|
||||||
u32 computed_crc;
|
|
||||||
|
|
||||||
ret = mtd_read(master, tag_offset, sizeof(*buf), &retlen, (void *)buf);
|
|
||||||
if (ret)
|
|
||||||
return ret;
|
|
||||||
|
|
||||||
if (retlen != sizeof(*buf))
|
|
||||||
return -EIO;
|
|
||||||
|
|
||||||
computed_crc = crc32_le(IMAGETAG_CRC_START, (u8 *)buf,
|
|
||||||
offsetof(struct bcm_tag, header_crc));
|
|
||||||
if (computed_crc == buf->header_crc) {
|
|
||||||
STR_NULL_TERMINATE(buf->board_id);
|
|
||||||
STR_NULL_TERMINATE(buf->tag_version);
|
|
||||||
|
|
||||||
pr_info("%s: CFE image tag found at 0x%llx with version %s, board type %s\n",
|
|
||||||
name, tag_offset, buf->tag_version, buf->board_id);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
pr_warn("%s: CFE image tag at 0x%llx CRC invalid (expected %08x, actual %08x)\n",
|
|
||||||
name, tag_offset, buf->header_crc, computed_crc);
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int bcm63xx_parse_cfe_nor_partitions(struct mtd_info *master,
|
static int bcm63xx_parse_cfe_nor_partitions(struct mtd_info *master,
|
||||||
const struct mtd_partition **pparts, struct bcm963xx_nvram *nvram)
|
const struct mtd_partition **pparts, struct bcm963xx_nvram *nvram)
|
||||||
{
|
{
|
||||||
/* CFE, NVRAM and global Linux are always present */
|
|
||||||
int nrparts = 3, curpart = 0;
|
|
||||||
struct bcm_tag *buf = NULL;
|
|
||||||
struct mtd_partition *parts;
|
struct mtd_partition *parts;
|
||||||
int ret;
|
int nrparts = 3, curpart = 0;
|
||||||
unsigned int rootfsaddr, kerneladdr, spareaddr;
|
|
||||||
unsigned int rootfslen, kernellen, sparelen, totallen;
|
|
||||||
unsigned int cfelen, nvramlen;
|
unsigned int cfelen, nvramlen;
|
||||||
unsigned int cfe_erasesize;
|
unsigned int cfe_erasesize;
|
||||||
int i;
|
int i;
|
||||||
bool rootfs_first = false;
|
|
||||||
|
|
||||||
cfe_erasesize = max_t(uint32_t, master->erasesize,
|
cfe_erasesize = max_t(uint32_t, master->erasesize,
|
||||||
BCM963XX_CFE_BLOCK_SIZE);
|
BCM963XX_CFE_BLOCK_SIZE);
|
||||||
|
@ -146,83 +115,9 @@ static int bcm63xx_parse_cfe_nor_partitions(struct mtd_info *master,
|
||||||
nvramlen = nvram->psi_size * SZ_1K;
|
nvramlen = nvram->psi_size * SZ_1K;
|
||||||
nvramlen = roundup(nvramlen, cfe_erasesize);
|
nvramlen = roundup(nvramlen, cfe_erasesize);
|
||||||
|
|
||||||
buf = vmalloc(sizeof(struct bcm_tag));
|
|
||||||
if (!buf)
|
|
||||||
return -ENOMEM;
|
|
||||||
|
|
||||||
/* Get the tag */
|
|
||||||
ret = bcm63xx_read_image_tag(master, "rootfs", cfelen, buf);
|
|
||||||
if (!ret) {
|
|
||||||
STR_NULL_TERMINATE(buf->flash_image_start);
|
|
||||||
if (kstrtouint(buf->flash_image_start, 10, &rootfsaddr) ||
|
|
||||||
rootfsaddr < BCM963XX_EXTENDED_SIZE) {
|
|
||||||
pr_err("invalid rootfs address: %*ph\n",
|
|
||||||
(int)sizeof(buf->flash_image_start),
|
|
||||||
buf->flash_image_start);
|
|
||||||
goto invalid_tag;
|
|
||||||
}
|
|
||||||
|
|
||||||
STR_NULL_TERMINATE(buf->kernel_address);
|
|
||||||
if (kstrtouint(buf->kernel_address, 10, &kerneladdr) ||
|
|
||||||
kerneladdr < BCM963XX_EXTENDED_SIZE) {
|
|
||||||
pr_err("invalid kernel address: %*ph\n",
|
|
||||||
(int)sizeof(buf->kernel_address),
|
|
||||||
buf->kernel_address);
|
|
||||||
goto invalid_tag;
|
|
||||||
}
|
|
||||||
|
|
||||||
STR_NULL_TERMINATE(buf->kernel_length);
|
|
||||||
if (kstrtouint(buf->kernel_length, 10, &kernellen)) {
|
|
||||||
pr_err("invalid kernel length: %*ph\n",
|
|
||||||
(int)sizeof(buf->kernel_length),
|
|
||||||
buf->kernel_length);
|
|
||||||
goto invalid_tag;
|
|
||||||
}
|
|
||||||
|
|
||||||
STR_NULL_TERMINATE(buf->total_length);
|
|
||||||
if (kstrtouint(buf->total_length, 10, &totallen)) {
|
|
||||||
pr_err("invalid total length: %*ph\n",
|
|
||||||
(int)sizeof(buf->total_length),
|
|
||||||
buf->total_length);
|
|
||||||
goto invalid_tag;
|
|
||||||
}
|
|
||||||
|
|
||||||
kerneladdr = kerneladdr - BCM963XX_EXTENDED_SIZE;
|
|
||||||
rootfsaddr = rootfsaddr - BCM963XX_EXTENDED_SIZE;
|
|
||||||
spareaddr = roundup(totallen, master->erasesize) + cfelen;
|
|
||||||
|
|
||||||
if (rootfsaddr < kerneladdr) {
|
|
||||||
/* default Broadcom layout */
|
|
||||||
rootfslen = kerneladdr - rootfsaddr;
|
|
||||||
rootfs_first = true;
|
|
||||||
} else {
|
|
||||||
/* OpenWrt layout */
|
|
||||||
rootfsaddr = kerneladdr + kernellen;
|
|
||||||
rootfslen = spareaddr - rootfsaddr;
|
|
||||||
}
|
|
||||||
} else if (ret > 0) {
|
|
||||||
invalid_tag:
|
|
||||||
kernellen = 0;
|
|
||||||
rootfslen = 0;
|
|
||||||
rootfsaddr = 0;
|
|
||||||
spareaddr = cfelen;
|
|
||||||
} else {
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
sparelen = master->size - spareaddr - nvramlen;
|
|
||||||
|
|
||||||
/* Determine number of partitions */
|
|
||||||
if (rootfslen > 0)
|
|
||||||
nrparts++;
|
|
||||||
|
|
||||||
if (kernellen > 0)
|
|
||||||
nrparts++;
|
|
||||||
|
|
||||||
parts = kzalloc(sizeof(*parts) * nrparts + 10 * nrparts, GFP_KERNEL);
|
parts = kzalloc(sizeof(*parts) * nrparts + 10 * nrparts, GFP_KERNEL);
|
||||||
if (!parts) {
|
if (!parts)
|
||||||
ret = -ENOMEM;
|
return -ENOMEM;
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Start building partition list */
|
/* Start building partition list */
|
||||||
parts[curpart].name = "CFE";
|
parts[curpart].name = "CFE";
|
||||||
|
@ -230,30 +125,6 @@ invalid_tag:
|
||||||
parts[curpart].size = cfelen;
|
parts[curpart].size = cfelen;
|
||||||
curpart++;
|
curpart++;
|
||||||
|
|
||||||
if (kernellen > 0) {
|
|
||||||
int kernelpart = curpart;
|
|
||||||
|
|
||||||
if (rootfslen > 0 && rootfs_first)
|
|
||||||
kernelpart++;
|
|
||||||
parts[kernelpart].name = "kernel";
|
|
||||||
parts[kernelpart].offset = kerneladdr;
|
|
||||||
parts[kernelpart].size = kernellen;
|
|
||||||
curpart++;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (rootfslen > 0) {
|
|
||||||
int rootfspart = curpart;
|
|
||||||
|
|
||||||
if (kernellen > 0 && rootfs_first)
|
|
||||||
rootfspart--;
|
|
||||||
parts[rootfspart].name = "rootfs";
|
|
||||||
parts[rootfspart].offset = rootfsaddr;
|
|
||||||
parts[rootfspart].size = rootfslen;
|
|
||||||
if (sparelen > 0 && !rootfs_first)
|
|
||||||
parts[rootfspart].size += sparelen;
|
|
||||||
curpart++;
|
|
||||||
}
|
|
||||||
|
|
||||||
parts[curpart].name = "nvram";
|
parts[curpart].name = "nvram";
|
||||||
parts[curpart].offset = master->size - nvramlen;
|
parts[curpart].offset = master->size - nvramlen;
|
||||||
parts[curpart].size = nvramlen;
|
parts[curpart].size = nvramlen;
|
||||||
|
@ -263,22 +134,13 @@ invalid_tag:
|
||||||
parts[curpart].name = "linux";
|
parts[curpart].name = "linux";
|
||||||
parts[curpart].offset = cfelen;
|
parts[curpart].offset = cfelen;
|
||||||
parts[curpart].size = master->size - cfelen - nvramlen;
|
parts[curpart].size = master->size - cfelen - nvramlen;
|
||||||
|
parts[curpart].types = bcm63xx_cfe_part_types;
|
||||||
|
|
||||||
for (i = 0; i < nrparts; i++)
|
for (i = 0; i < nrparts; i++)
|
||||||
pr_info("Partition %d is %s offset %llx and length %llx\n", i,
|
pr_info("Partition %d is %s offset %llx and length %llx\n", i,
|
||||||
parts[i].name, parts[i].offset, parts[i].size);
|
parts[i].name, parts[i].offset, parts[i].size);
|
||||||
|
|
||||||
pr_info("Spare partition is offset %x and length %x\n", spareaddr,
|
|
||||||
sparelen);
|
|
||||||
|
|
||||||
*pparts = parts;
|
*pparts = parts;
|
||||||
ret = 0;
|
|
||||||
|
|
||||||
out:
|
|
||||||
vfree(buf);
|
|
||||||
|
|
||||||
if (ret)
|
|
||||||
return ret;
|
|
||||||
|
|
||||||
return nrparts;
|
return nrparts;
|
||||||
}
|
}
|
||||||
|
@ -311,9 +173,16 @@ out:
|
||||||
return ret;
|
return ret;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static const struct of_device_id parse_bcm63xx_cfe_match_table[] = {
|
||||||
|
{ .compatible = "brcm,bcm963xx-cfe-nor-partitions" },
|
||||||
|
{},
|
||||||
|
};
|
||||||
|
MODULE_DEVICE_TABLE(of, parse_bcm63xx_cfe_match_table);
|
||||||
|
|
||||||
static struct mtd_part_parser bcm63xx_cfe_parser = {
|
static struct mtd_part_parser bcm63xx_cfe_parser = {
|
||||||
.parse_fn = bcm63xx_parse_cfe_partitions,
|
.parse_fn = bcm63xx_parse_cfe_partitions,
|
||||||
.name = "bcm63xxpart",
|
.name = "bcm63xxpart",
|
||||||
|
.of_match_table = parse_bcm63xx_cfe_match_table,
|
||||||
};
|
};
|
||||||
module_mtd_part_parser(bcm63xx_cfe_parser);
|
module_mtd_part_parser(bcm63xx_cfe_parser);
|
||||||
|
|
||||||
|
|
|
@ -869,6 +869,7 @@ static int get_chip(struct map_info *map, struct flchip *chip, unsigned long adr
|
||||||
/* Only if there's no operation suspended... */
|
/* Only if there's no operation suspended... */
|
||||||
if (mode == FL_READY && chip->oldstate == FL_READY)
|
if (mode == FL_READY && chip->oldstate == FL_READY)
|
||||||
return 0;
|
return 0;
|
||||||
|
/* fall through */
|
||||||
|
|
||||||
default:
|
default:
|
||||||
sleep:
|
sleep:
|
||||||
|
@ -2751,6 +2752,7 @@ static void cfi_amdstd_sync (struct mtd_info *mtd)
|
||||||
* as the whole point is that nobody can do anything
|
* as the whole point is that nobody can do anything
|
||||||
* with the chip now anyway.
|
* with the chip now anyway.
|
||||||
*/
|
*/
|
||||||
|
/* fall through */
|
||||||
case FL_SYNCING:
|
case FL_SYNCING:
|
||||||
mutex_unlock(&chip->mutex);
|
mutex_unlock(&chip->mutex);
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -109,10 +109,13 @@ map_word cfi_build_cmd(u_long cmd, struct map_info *map, struct cfi_private *cfi
|
||||||
case 8:
|
case 8:
|
||||||
onecmd |= (onecmd << (chip_mode * 32));
|
onecmd |= (onecmd << (chip_mode * 32));
|
||||||
#endif
|
#endif
|
||||||
|
/* fall through */
|
||||||
case 4:
|
case 4:
|
||||||
onecmd |= (onecmd << (chip_mode * 16));
|
onecmd |= (onecmd << (chip_mode * 16));
|
||||||
|
/* fall through */
|
||||||
case 2:
|
case 2:
|
||||||
onecmd |= (onecmd << (chip_mode * 8));
|
onecmd |= (onecmd << (chip_mode * 8));
|
||||||
|
/* fall through */
|
||||||
case 1:
|
case 1:
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
|
@ -162,10 +165,13 @@ unsigned long cfi_merge_status(map_word val, struct map_info *map,
|
||||||
case 8:
|
case 8:
|
||||||
res |= (onestat >> (chip_mode * 32));
|
res |= (onestat >> (chip_mode * 32));
|
||||||
#endif
|
#endif
|
||||||
|
/* fall through */
|
||||||
case 4:
|
case 4:
|
||||||
res |= (onestat >> (chip_mode * 16));
|
res |= (onestat >> (chip_mode * 16));
|
||||||
|
/* fall through */
|
||||||
case 2:
|
case 2:
|
||||||
res |= (onestat >> (chip_mode * 8));
|
res |= (onestat >> (chip_mode * 8));
|
||||||
|
/* fall through */
|
||||||
case 1:
|
case 1:
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
|
|
|
@ -207,7 +207,7 @@ comment "Disk-On-Chip Device Drivers"
|
||||||
config MTD_DOCG3
|
config MTD_DOCG3
|
||||||
tristate "M-Systems Disk-On-Chip G3"
|
tristate "M-Systems Disk-On-Chip G3"
|
||||||
select BCH
|
select BCH
|
||||||
select BCH_CONST_PARAMS if !MTD_NAND_BCH
|
select BCH_CONST_PARAMS if !MTD_NAND_ECC_SW_BCH
|
||||||
select BITREVERSE
|
select BITREVERSE
|
||||||
help
|
help
|
||||||
This provides an MTD device driver for the M-Systems DiskOnChip
|
This provides an MTD device driver for the M-Systems DiskOnChip
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue