* [PATCH v6 0/5] Add MediaTek MT7986 NAND ECC engine support
@ 2023-02-01 2:14 Xiangsheng Hou
2023-02-01 2:14 ` [PATCH v6 1/5] dt-bindings: mtd: Split ECC engine with rawnand controller Xiangsheng Hou
` (4 more replies)
0 siblings, 5 replies; 12+ messages in thread
From: Xiangsheng Hou @ 2023-02-01 2:14 UTC (permalink / raw)
To: Miquel Raynal, Richard Weinberger, Vignesh Raghavendra,
Rob Herring, Krzysztof Kozlowski, Matthias Brugger
Cc: Xiangsheng Hou, linux-mtd, devicetree, linux-arm-kernel,
linux-mediatek, linux-kernel, benliang.zhao, bin.zhang
This patch series split from bellow series which pick-up mtd relevant patches
https://lore.kernel.org/all/20230130030656.12127-1-xiangsheng.hou@mediatek.com.
This series add MediaTek MT7986 NAND ECC controller support, split ECC engine
with rawnand controller in bindings and change to YAML schema.
Changes since V5:
- Split from previous series V4.
- Fix warning by change mtk-nand.txt references to new yaml file.
Changes since V4:
- Split arm and arm64 dts patch for fix existing NAND controller node name.
Changes since V3:
- Correct mediatek,mtk-nfc.yaml dt-bindings.
Changes since V2:
- Change ECC err_mask value with GENMASK macro.
- Change snfi mediatek,rx-latch-latency to mediatek,rx-latch-latency-ns.
- Add a separate patch for DTS change.
- Move common description to top-level pattern properties.
- Drop redundant parts in dt-bindings.
Changes since V1:
- Improve and perfect dt-bindings documentation.
- Change existing node name to match NAND controller DT bingings.
- Fix issues reported by dt_binding_check.
- Fix issues reported by dtbs_check.
Xiangsheng Hou (5):
dt-bindings: mtd: Split ECC engine with rawnand controller
arm64: dts: mediatek: Fix existing NAND controller node name
arm: dts: mediatek: Fix existing NAND controller node name
dt-bindings: mtd: mediatek,nand-ecc-engine: Add compatible for MT7986
mtd: nand: ecc-mtk: Add ECC support fot MT7986 IC
.../bindings/mtd/mediatek,mtk-nfc.yaml | 155 +++++++++++++++
.../mtd/mediatek,nand-ecc-engine.yaml | 63 +++++++
.../devicetree/bindings/mtd/mtk-nand.txt | 176 ------------------
MAINTAINERS | 2 +-
arch/arm/boot/dts/mt2701.dtsi | 2 +-
arch/arm64/boot/dts/mediatek/mt2712e.dtsi | 2 +-
arch/arm64/boot/dts/mediatek/mt7622.dtsi | 2 +-
drivers/mtd/nand/ecc-mtk.c | 28 ++-
8 files changed, 247 insertions(+), 183 deletions(-)
create mode 100644 Documentation/devicetree/bindings/mtd/mediatek,mtk-nfc.yaml
create mode 100644 Documentation/devicetree/bindings/mtd/mediatek,nand-ecc-engine.yaml
delete mode 100644 Documentation/devicetree/bindings/mtd/mtk-nand.txt
--
2.25.1
^ permalink raw reply [flat|nested] 12+ messages in thread* [PATCH v6 1/5] dt-bindings: mtd: Split ECC engine with rawnand controller 2023-02-01 2:14 [PATCH v6 0/5] Add MediaTek MT7986 NAND ECC engine support Xiangsheng Hou @ 2023-02-01 2:14 ` Xiangsheng Hou 2023-02-03 18:10 ` Miquel Raynal 2023-02-01 2:14 ` [PATCH v6 2/5] arm64: dts: mediatek: Fix existing NAND controller node name Xiangsheng Hou ` (3 subsequent siblings) 4 siblings, 1 reply; 12+ messages in thread From: Xiangsheng Hou @ 2023-02-01 2:14 UTC (permalink / raw) To: Miquel Raynal, Richard Weinberger, Vignesh Raghavendra, Rob Herring, Krzysztof Kozlowski, Matthias Brugger Cc: Xiangsheng Hou, linux-mtd, devicetree, linux-arm-kernel, linux-mediatek, linux-kernel, benliang.zhao, bin.zhang, Krzysztof Kozlowski, kernel test robot Split MediaTek ECC engine with rawnand controller and convert to YAML schema. Signed-off-by: Xiangsheng Hou <xiangsheng.hou@mediatek.com> Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> Reported-by: kernel test robot <lkp@intel.com> --- .../bindings/mtd/mediatek,mtk-nfc.yaml | 155 +++++++++++++++ .../mtd/mediatek,nand-ecc-engine.yaml | 62 ++++++ .../devicetree/bindings/mtd/mtk-nand.txt | 176 ------------------ MAINTAINERS | 2 +- 4 files changed, 218 insertions(+), 177 deletions(-) create mode 100644 Documentation/devicetree/bindings/mtd/mediatek,mtk-nfc.yaml create mode 100644 Documentation/devicetree/bindings/mtd/mediatek,nand-ecc-engine.yaml delete mode 100644 Documentation/devicetree/bindings/mtd/mtk-nand.txt diff --git a/Documentation/devicetree/bindings/mtd/mediatek,mtk-nfc.yaml b/Documentation/devicetree/bindings/mtd/mediatek,mtk-nfc.yaml new file mode 100644 index 000000000000..a6e7f123eda7 --- /dev/null +++ b/Documentation/devicetree/bindings/mtd/mediatek,mtk-nfc.yaml @@ -0,0 +1,155 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/mtd/mediatek,mtk-nfc.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: MediaTek(MTK) SoCs raw NAND FLASH controller (NFC) + +maintainers: + - Xiangsheng Hou <xiangsheng.hou@mediatek.com> + +properties: + compatible: + enum: + - mediatek,mt2701-nfc + - mediatek,mt2712-nfc + - mediatek,mt7622-nfc + + reg: + items: + - description: Base physical address and size of NFI. + + interrupts: + items: + - description: NFI interrupt + + clocks: + items: + - description: clock used for the controller + - description: clock used for the pad + + clock-names: + items: + - const: nfi_clk + - const: pad_clk + + ecc-engine: + description: device-tree node of the required ECC engine. + $ref: /schemas/types.yaml#/definitions/phandle + +patternProperties: + "^nand@[a-f0-9]$": + $ref: nand-chip.yaml# + unevaluatedProperties: false + properties: + reg: + maximum: 1 + nand-on-flash-bbt: true + nand-ecc-mode: + const: hw + +allOf: + - $ref: nand-controller.yaml# + + - if: + properties: + compatible: + contains: + const: mediatek,mt2701-nfc + then: + patternProperties: + "^nand@[a-f0-9]$": + properties: + nand-ecc-step-size: + enum: [ 512, 1024 ] + nand-ecc-strength: + enum: [4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 28, 32, 36, + 40, 44, 48, 52, 56, 60] + + - if: + properties: + compatible: + contains: + const: mediatek,mt2712-nfc + then: + patternProperties: + "^nand@[a-f0-9]$": + properties: + nand-ecc-step-size: + enum: [ 512, 1024 ] + nand-ecc-strength: + enum: [4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 28, 32, 36, + 40, 44, 48, 52, 56, 60, 68, 72, 80] + + - if: + properties: + compatible: + contains: + const: mediatek,mt7622-nfc + then: + patternProperties: + "^nand@[a-f0-9]$": + properties: + nand-ecc-step-size: + const: 512 + nand-ecc-strength: + enum: [4, 6, 8, 10, 12] + +required: + - compatible + - reg + - interrupts + - clocks + - clock-names + - ecc-engine + +unevaluatedProperties: false + +examples: + - | + #include <dt-bindings/clock/mt2701-clk.h> + #include <dt-bindings/interrupt-controller/arm-gic.h> + #include <dt-bindings/interrupt-controller/irq.h> + + soc { + #address-cells = <2>; + #size-cells = <2>; + + nand-controller@1100d000 { + compatible = "mediatek,mt2701-nfc"; + reg = <0 0x1100d000 0 0x1000>; + interrupts = <GIC_SPI 56 IRQ_TYPE_LEVEL_LOW>; + clocks = <&pericfg CLK_PERI_NFI>, + <&pericfg CLK_PERI_NFI_PAD>; + clock-names = "nfi_clk", "pad_clk"; + ecc-engine = <&bch>; + #address-cells = <1>; + #size-cells = <0>; + + nand@0 { + reg = <0>; + + nand-on-flash-bbt; + nand-ecc-mode = "hw"; + nand-ecc-step-size = <1024>; + nand-ecc-strength = <24>; + + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + preloader@0 { + label = "pl"; + read-only; + reg = <0x0 0x400000>; + }; + android@400000 { + label = "android"; + reg = <0x400000 0x12c00000>; + }; + }; + }; + }; + }; diff --git a/Documentation/devicetree/bindings/mtd/mediatek,nand-ecc-engine.yaml b/Documentation/devicetree/bindings/mtd/mediatek,nand-ecc-engine.yaml new file mode 100644 index 000000000000..b13d801eda76 --- /dev/null +++ b/Documentation/devicetree/bindings/mtd/mediatek,nand-ecc-engine.yaml @@ -0,0 +1,62 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/mtd/mediatek,nand-ecc-engine.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: MediaTek(MTK) SoCs NAND ECC engine + +maintainers: + - Xiangsheng Hou <xiangsheng.hou@mediatek.com> + +description: | + MTK NAND ECC engine can cowork with MTK raw NAND and SPI NAND controller. + +properties: + compatible: + enum: + - mediatek,mt2701-ecc + - mediatek,mt2712-ecc + - mediatek,mt7622-ecc + + reg: + items: + - description: Base physical address and size of ECC. + + interrupts: + items: + - description: ECC interrupt + + clocks: + maxItems: 1 + + clock-names: + const: nfiecc_clk + +required: + - compatible + - reg + - interrupts + - clocks + - clock-names + +additionalProperties: false + +examples: + - | + #include <dt-bindings/clock/mt2701-clk.h> + #include <dt-bindings/interrupt-controller/arm-gic.h> + #include <dt-bindings/interrupt-controller/irq.h> + + soc { + #address-cells = <2>; + #size-cells = <2>; + + bch: ecc@1100e000 { + compatible = "mediatek,mt2701-ecc"; + reg = <0 0x1100e000 0 0x1000>; + interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_LOW>; + clocks = <&pericfg CLK_PERI_NFI_ECC>; + clock-names = "nfiecc_clk"; + }; + }; diff --git a/Documentation/devicetree/bindings/mtd/mtk-nand.txt b/Documentation/devicetree/bindings/mtd/mtk-nand.txt deleted file mode 100644 index 839ea2f93d04..000000000000 --- a/Documentation/devicetree/bindings/mtd/mtk-nand.txt +++ /dev/null @@ -1,176 +0,0 @@ -MTK SoCs NAND FLASH controller (NFC) DT binding - -This file documents the device tree bindings for MTK SoCs NAND controllers. -The functional split of the controller requires two drivers to operate: -the nand controller interface driver and the ECC engine driver. - -The hardware description for both devices must be captured as device -tree nodes. - -1) NFC NAND Controller Interface (NFI): -======================================= - -The first part of NFC is NAND Controller Interface (NFI) HW. -Required NFI properties: -- compatible: Should be one of - "mediatek,mt2701-nfc", - "mediatek,mt2712-nfc", - "mediatek,mt7622-nfc". -- reg: Base physical address and size of NFI. -- interrupts: Interrupts of NFI. -- clocks: NFI required clocks. -- clock-names: NFI clocks internal name. -- ecc-engine: Required ECC Engine node. -- #address-cells: NAND chip index, should be 1. -- #size-cells: Should be 0. - -Example: - - nandc: nfi@1100d000 { - compatible = "mediatek,mt2701-nfc"; - reg = <0 0x1100d000 0 0x1000>; - interrupts = <GIC_SPI 56 IRQ_TYPE_LEVEL_LOW>; - clocks = <&pericfg CLK_PERI_NFI>, - <&pericfg CLK_PERI_NFI_PAD>; - clock-names = "nfi_clk", "pad_clk"; - ecc-engine = <&bch>; - #address-cells = <1>; - #size-cells = <0>; - }; - -Platform related properties, should be set in {platform_name}.dts: -- children nodes: NAND chips. - -Children nodes properties: -- reg: Chip Select Signal, default 0. - Set as reg = <0>, <1> when need 2 CS. -Optional: -- nand-on-flash-bbt: Store BBT on NAND Flash. -- nand-ecc-mode: the NAND ecc mode (check driver for supported modes) -- nand-ecc-step-size: Number of data bytes covered by a single ECC step. - valid values: - 512 and 1024 on mt2701 and mt2712. - 512 only on mt7622. - 1024 is recommended for large page NANDs. -- nand-ecc-strength: Number of bits to correct per ECC step. - The valid values that each controller supports: - mt2701: 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 28, - 32, 36, 40, 44, 48, 52, 56, 60. - mt2712: 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 28, - 32, 36, 40, 44, 48, 52, 56, 60, 68, 72, 80. - mt7622: 4, 6, 8, 10, 12, 14, 16. - The strength should be calculated as follows: - E = (S - F) * 8 / B - S = O / (P / Q) - E : nand-ecc-strength. - S : spare size per sector. - F : FDM size, should be in the range [1,8]. - It is used to store free oob data. - O : oob size. - P : page size. - Q : nand-ecc-step-size. - B : number of parity bits needed to correct - 1 bitflip. - According to MTK NAND controller design, - this number depends on max ecc step size - that MTK NAND controller supports. - If max ecc step size supported is 1024, - then it should be always 14. And if max - ecc step size is 512, then it should be - always 13. - If the result does not match any one of the listed - choices above, please select the smaller valid value from - the list. - (otherwise the driver will do the adjustment at runtime) -- pinctrl-names: Default NAND pin GPIO setting name. -- pinctrl-0: GPIO setting node. - -Example: - &pio { - nand_pins_default: nanddefault { - pins_dat { - pinmux = <MT2701_PIN_111_MSDC0_DAT7__FUNC_NLD7>, - <MT2701_PIN_112_MSDC0_DAT6__FUNC_NLD6>, - <MT2701_PIN_114_MSDC0_DAT4__FUNC_NLD4>, - <MT2701_PIN_118_MSDC0_DAT3__FUNC_NLD3>, - <MT2701_PIN_121_MSDC0_DAT0__FUNC_NLD0>, - <MT2701_PIN_120_MSDC0_DAT1__FUNC_NLD1>, - <MT2701_PIN_113_MSDC0_DAT5__FUNC_NLD5>, - <MT2701_PIN_115_MSDC0_RSTB__FUNC_NLD8>, - <MT2701_PIN_119_MSDC0_DAT2__FUNC_NLD2>; - input-enable; - drive-strength = <MTK_DRIVE_8mA>; - bias-pull-up; - }; - - pins_we { - pinmux = <MT2701_PIN_117_MSDC0_CLK__FUNC_NWEB>; - drive-strength = <MTK_DRIVE_8mA>; - bias-pull-up = <MTK_PUPD_SET_R1R0_10>; - }; - - pins_ale { - pinmux = <MT2701_PIN_116_MSDC0_CMD__FUNC_NALE>; - drive-strength = <MTK_DRIVE_8mA>; - bias-pull-down = <MTK_PUPD_SET_R1R0_10>; - }; - }; - }; - - &nandc { - status = "okay"; - pinctrl-names = "default"; - pinctrl-0 = <&nand_pins_default>; - nand@0 { - reg = <0>; - nand-on-flash-bbt; - nand-ecc-mode = "hw"; - nand-ecc-strength = <24>; - nand-ecc-step-size = <1024>; - }; - }; - -NAND chip optional subnodes: -- Partitions, see Documentation/devicetree/bindings/mtd/mtd.yaml - -Example: - nand@0 { - partitions { - compatible = "fixed-partitions"; - #address-cells = <1>; - #size-cells = <1>; - - preloader@0 { - label = "pl"; - read-only; - reg = <0x00000000 0x00400000>; - }; - android@00400000 { - label = "android"; - reg = <0x00400000 0x12c00000>; - }; - }; - }; - -2) ECC Engine: -============== - -Required BCH properties: -- compatible: Should be one of - "mediatek,mt2701-ecc", - "mediatek,mt2712-ecc", - "mediatek,mt7622-ecc". -- reg: Base physical address and size of ECC. -- interrupts: Interrupts of ECC. -- clocks: ECC required clocks. -- clock-names: ECC clocks internal name. - -Example: - - bch: ecc@1100e000 { - compatible = "mediatek,mt2701-ecc"; - reg = <0 0x1100e000 0 0x1000>; - interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_LOW>; - clocks = <&pericfg CLK_PERI_NFI_ECC>; - clock-names = "nfiecc_clk"; - }; diff --git a/MAINTAINERS b/MAINTAINERS index 263d37a129b1..6994757da949 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -13088,7 +13088,7 @@ F: drivers/phy/ralink/phy-mt7621-pci.c MEDIATEK NAND CONTROLLER DRIVER L: linux-mtd@lists.infradead.org S: Orphan -F: Documentation/devicetree/bindings/mtd/mtk-nand.txt +F: Documentation/devicetree/bindings/mtd/mediatek,mtk-nfc.yaml F: drivers/mtd/nand/raw/mtk_* MEDIATEK PMIC LED DRIVER -- 2.25.1 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH v6 1/5] dt-bindings: mtd: Split ECC engine with rawnand controller 2023-02-01 2:14 ` [PATCH v6 1/5] dt-bindings: mtd: Split ECC engine with rawnand controller Xiangsheng Hou @ 2023-02-03 18:10 ` Miquel Raynal 0 siblings, 0 replies; 12+ messages in thread From: Miquel Raynal @ 2023-02-03 18:10 UTC (permalink / raw) To: Xiangsheng Hou, Miquel Raynal, Richard Weinberger, Vignesh Raghavendra, Rob Herring, Krzysztof Kozlowski, Matthias Brugger Cc: linux-mtd, devicetree, linux-arm-kernel, linux-mediatek, linux-kernel, benliang.zhao, bin.zhang, Krzysztof Kozlowski, kernel test robot On Wed, 2023-02-01 at 02:14:56 UTC, Xiangsheng Hou wrote: > Split MediaTek ECC engine with rawnand controller and convert to > YAML schema. > > Signed-off-by: Xiangsheng Hou <xiangsheng.hou@mediatek.com> > Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> > Reported-by: kernel test robot <lkp@intel.com> Applied to https://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux.git nand/next, thanks. Miquel ^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH v6 2/5] arm64: dts: mediatek: Fix existing NAND controller node name 2023-02-01 2:14 [PATCH v6 0/5] Add MediaTek MT7986 NAND ECC engine support Xiangsheng Hou 2023-02-01 2:14 ` [PATCH v6 1/5] dt-bindings: mtd: Split ECC engine with rawnand controller Xiangsheng Hou @ 2023-02-01 2:14 ` Xiangsheng Hou 2023-02-02 12:13 ` Matthias Brugger 2023-02-01 2:14 ` [PATCH v6 3/5] arm: " Xiangsheng Hou ` (2 subsequent siblings) 4 siblings, 1 reply; 12+ messages in thread From: Xiangsheng Hou @ 2023-02-01 2:14 UTC (permalink / raw) To: Miquel Raynal, Richard Weinberger, Vignesh Raghavendra, Rob Herring, Krzysztof Kozlowski, Matthias Brugger Cc: Xiangsheng Hou, linux-mtd, devicetree, linux-arm-kernel, linux-mediatek, linux-kernel, benliang.zhao, bin.zhang, AngeloGioacchino Del Regno Change the existing node name in order to match NAND controller DT bindings. Signed-off-by: Xiangsheng Hou <xiangsheng.hou@mediatek.com> Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> --- arch/arm64/boot/dts/mediatek/mt2712e.dtsi | 2 +- arch/arm64/boot/dts/mediatek/mt7622.dtsi | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/arm64/boot/dts/mediatek/mt2712e.dtsi b/arch/arm64/boot/dts/mediatek/mt2712e.dtsi index 879dff24dcd3..ed1a9d319415 100644 --- a/arch/arm64/boot/dts/mediatek/mt2712e.dtsi +++ b/arch/arm64/boot/dts/mediatek/mt2712e.dtsi @@ -559,7 +559,7 @@ spi0: spi@1100a000 { status = "disabled"; }; - nandc: nfi@1100e000 { + nandc: nand-controller@1100e000 { compatible = "mediatek,mt2712-nfc"; reg = <0 0x1100e000 0 0x1000>; interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_LOW>; diff --git a/arch/arm64/boot/dts/mediatek/mt7622.dtsi b/arch/arm64/boot/dts/mediatek/mt7622.dtsi index 62487a3c4db1..eb4e4638b548 100644 --- a/arch/arm64/boot/dts/mediatek/mt7622.dtsi +++ b/arch/arm64/boot/dts/mediatek/mt7622.dtsi @@ -538,7 +538,7 @@ bluetooth { }; }; - nandc: nfi@1100d000 { + nandc: nand-controller@1100d000 { compatible = "mediatek,mt7622-nfc"; reg = <0 0x1100D000 0 0x1000>; interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_LOW>; -- 2.25.1 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH v6 2/5] arm64: dts: mediatek: Fix existing NAND controller node name 2023-02-01 2:14 ` [PATCH v6 2/5] arm64: dts: mediatek: Fix existing NAND controller node name Xiangsheng Hou @ 2023-02-02 12:13 ` Matthias Brugger 0 siblings, 0 replies; 12+ messages in thread From: Matthias Brugger @ 2023-02-02 12:13 UTC (permalink / raw) To: Xiangsheng Hou, Miquel Raynal, Richard Weinberger, Vignesh Raghavendra, Rob Herring, Krzysztof Kozlowski Cc: linux-mtd, devicetree, linux-arm-kernel, linux-mediatek, linux-kernel, benliang.zhao, bin.zhang, AngeloGioacchino Del Regno On 01/02/2023 03:14, Xiangsheng Hou wrote: > Change the existing node name in order to match NAND controller DT > bindings. > > Signed-off-by: Xiangsheng Hou <xiangsheng.hou@mediatek.com> > Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> Queued for the next merge window, thanks! > --- > arch/arm64/boot/dts/mediatek/mt2712e.dtsi | 2 +- > arch/arm64/boot/dts/mediatek/mt7622.dtsi | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) > > diff --git a/arch/arm64/boot/dts/mediatek/mt2712e.dtsi b/arch/arm64/boot/dts/mediatek/mt2712e.dtsi > index 879dff24dcd3..ed1a9d319415 100644 > --- a/arch/arm64/boot/dts/mediatek/mt2712e.dtsi > +++ b/arch/arm64/boot/dts/mediatek/mt2712e.dtsi > @@ -559,7 +559,7 @@ spi0: spi@1100a000 { > status = "disabled"; > }; > > - nandc: nfi@1100e000 { > + nandc: nand-controller@1100e000 { > compatible = "mediatek,mt2712-nfc"; > reg = <0 0x1100e000 0 0x1000>; > interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_LOW>; > diff --git a/arch/arm64/boot/dts/mediatek/mt7622.dtsi b/arch/arm64/boot/dts/mediatek/mt7622.dtsi > index 62487a3c4db1..eb4e4638b548 100644 > --- a/arch/arm64/boot/dts/mediatek/mt7622.dtsi > +++ b/arch/arm64/boot/dts/mediatek/mt7622.dtsi > @@ -538,7 +538,7 @@ bluetooth { > }; > }; > > - nandc: nfi@1100d000 { > + nandc: nand-controller@1100d000 { > compatible = "mediatek,mt7622-nfc"; > reg = <0 0x1100D000 0 0x1000>; > interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_LOW>; ^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH v6 3/5] arm: dts: mediatek: Fix existing NAND controller node name 2023-02-01 2:14 [PATCH v6 0/5] Add MediaTek MT7986 NAND ECC engine support Xiangsheng Hou 2023-02-01 2:14 ` [PATCH v6 1/5] dt-bindings: mtd: Split ECC engine with rawnand controller Xiangsheng Hou 2023-02-01 2:14 ` [PATCH v6 2/5] arm64: dts: mediatek: Fix existing NAND controller node name Xiangsheng Hou @ 2023-02-01 2:14 ` Xiangsheng Hou 2023-02-02 12:13 ` Matthias Brugger 2023-02-01 2:14 ` [PATCH v6 4/5] dt-bindings: mtd: mediatek,nand-ecc-engine: Add compatible for MT7986 Xiangsheng Hou 2023-02-01 2:15 ` [PATCH v6 5/5] mtd: nand: ecc-mtk: Add ECC support fot MT7986 IC Xiangsheng Hou 4 siblings, 1 reply; 12+ messages in thread From: Xiangsheng Hou @ 2023-02-01 2:14 UTC (permalink / raw) To: Miquel Raynal, Richard Weinberger, Vignesh Raghavendra, Rob Herring, Krzysztof Kozlowski, Matthias Brugger Cc: Xiangsheng Hou, linux-mtd, devicetree, linux-arm-kernel, linux-mediatek, linux-kernel, benliang.zhao, bin.zhang, AngeloGioacchino Del Regno Change the existing node name in order to match NAND controller DT bindings. Signed-off-by: Xiangsheng Hou <xiangsheng.hou@mediatek.com> Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> --- arch/arm/boot/dts/mt2701.dtsi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/arm/boot/dts/mt2701.dtsi b/arch/arm/boot/dts/mt2701.dtsi index 0a0fe8c5a405..ce6a4015fed5 100644 --- a/arch/arm/boot/dts/mt2701.dtsi +++ b/arch/arm/boot/dts/mt2701.dtsi @@ -359,7 +359,7 @@ thermal: thermal@1100b000 { mediatek,apmixedsys = <&apmixedsys>; }; - nandc: nfi@1100d000 { + nandc: nand-controller@1100d000 { compatible = "mediatek,mt2701-nfc"; reg = <0 0x1100d000 0 0x1000>; interrupts = <GIC_SPI 56 IRQ_TYPE_LEVEL_LOW>; -- 2.25.1 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH v6 3/5] arm: dts: mediatek: Fix existing NAND controller node name 2023-02-01 2:14 ` [PATCH v6 3/5] arm: " Xiangsheng Hou @ 2023-02-02 12:13 ` Matthias Brugger 0 siblings, 0 replies; 12+ messages in thread From: Matthias Brugger @ 2023-02-02 12:13 UTC (permalink / raw) To: Xiangsheng Hou, Miquel Raynal, Richard Weinberger, Vignesh Raghavendra, Rob Herring, Krzysztof Kozlowski Cc: linux-mtd, devicetree, linux-arm-kernel, linux-mediatek, linux-kernel, benliang.zhao, bin.zhang, AngeloGioacchino Del Regno On 01/02/2023 03:14, Xiangsheng Hou wrote: > Change the existing node name in order to match NAND controller DT > bindings. > > Signed-off-by: Xiangsheng Hou <xiangsheng.hou@mediatek.com> > Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> Queued for the next merge window, thanks! > --- > arch/arm/boot/dts/mt2701.dtsi | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/arch/arm/boot/dts/mt2701.dtsi b/arch/arm/boot/dts/mt2701.dtsi > index 0a0fe8c5a405..ce6a4015fed5 100644 > --- a/arch/arm/boot/dts/mt2701.dtsi > +++ b/arch/arm/boot/dts/mt2701.dtsi > @@ -359,7 +359,7 @@ thermal: thermal@1100b000 { > mediatek,apmixedsys = <&apmixedsys>; > }; > > - nandc: nfi@1100d000 { > + nandc: nand-controller@1100d000 { > compatible = "mediatek,mt2701-nfc"; > reg = <0 0x1100d000 0 0x1000>; > interrupts = <GIC_SPI 56 IRQ_TYPE_LEVEL_LOW>; ^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH v6 4/5] dt-bindings: mtd: mediatek,nand-ecc-engine: Add compatible for MT7986 2023-02-01 2:14 [PATCH v6 0/5] Add MediaTek MT7986 NAND ECC engine support Xiangsheng Hou ` (2 preceding siblings ...) 2023-02-01 2:14 ` [PATCH v6 3/5] arm: " Xiangsheng Hou @ 2023-02-01 2:14 ` Xiangsheng Hou 2023-02-03 18:10 ` Miquel Raynal 2023-02-01 2:15 ` [PATCH v6 5/5] mtd: nand: ecc-mtk: Add ECC support fot MT7986 IC Xiangsheng Hou 4 siblings, 1 reply; 12+ messages in thread From: Xiangsheng Hou @ 2023-02-01 2:14 UTC (permalink / raw) To: Miquel Raynal, Richard Weinberger, Vignesh Raghavendra, Rob Herring, Krzysztof Kozlowski, Matthias Brugger Cc: Xiangsheng Hou, linux-mtd, devicetree, linux-arm-kernel, linux-mediatek, linux-kernel, benliang.zhao, bin.zhang, Krzysztof Kozlowski Add dt-bindings documentation of ECC for MediaTek MT7986 SoC platform. Signed-off-by: Xiangsheng Hou <xiangsheng.hou@mediatek.com> Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> --- .../devicetree/bindings/mtd/mediatek,nand-ecc-engine.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/Documentation/devicetree/bindings/mtd/mediatek,nand-ecc-engine.yaml b/Documentation/devicetree/bindings/mtd/mediatek,nand-ecc-engine.yaml index b13d801eda76..505baf1e8830 100644 --- a/Documentation/devicetree/bindings/mtd/mediatek,nand-ecc-engine.yaml +++ b/Documentation/devicetree/bindings/mtd/mediatek,nand-ecc-engine.yaml @@ -18,6 +18,7 @@ properties: - mediatek,mt2701-ecc - mediatek,mt2712-ecc - mediatek,mt7622-ecc + - mediatek,mt7986-ecc reg: items: -- 2.25.1 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH v6 4/5] dt-bindings: mtd: mediatek,nand-ecc-engine: Add compatible for MT7986 2023-02-01 2:14 ` [PATCH v6 4/5] dt-bindings: mtd: mediatek,nand-ecc-engine: Add compatible for MT7986 Xiangsheng Hou @ 2023-02-03 18:10 ` Miquel Raynal 0 siblings, 0 replies; 12+ messages in thread From: Miquel Raynal @ 2023-02-03 18:10 UTC (permalink / raw) To: Xiangsheng Hou, Miquel Raynal, Richard Weinberger, Vignesh Raghavendra, Rob Herring, Krzysztof Kozlowski, Matthias Brugger Cc: linux-mtd, devicetree, linux-arm-kernel, linux-mediatek, linux-kernel, benliang.zhao, bin.zhang, Krzysztof Kozlowski On Wed, 2023-02-01 at 02:14:59 UTC, Xiangsheng Hou wrote: > Add dt-bindings documentation of ECC for MediaTek MT7986 SoC > platform. > > Signed-off-by: Xiangsheng Hou <xiangsheng.hou@mediatek.com> > Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> Applied to https://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux.git nand/next, thanks. Miquel ^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH v6 5/5] mtd: nand: ecc-mtk: Add ECC support fot MT7986 IC 2023-02-01 2:14 [PATCH v6 0/5] Add MediaTek MT7986 NAND ECC engine support Xiangsheng Hou ` (3 preceding siblings ...) 2023-02-01 2:14 ` [PATCH v6 4/5] dt-bindings: mtd: mediatek,nand-ecc-engine: Add compatible for MT7986 Xiangsheng Hou @ 2023-02-01 2:15 ` Xiangsheng Hou 2023-02-02 12:19 ` Matthias Brugger 2023-02-03 18:10 ` Miquel Raynal 4 siblings, 2 replies; 12+ messages in thread From: Xiangsheng Hou @ 2023-02-01 2:15 UTC (permalink / raw) To: Miquel Raynal, Richard Weinberger, Vignesh Raghavendra, Rob Herring, Krzysztof Kozlowski, Matthias Brugger Cc: Xiangsheng Hou, linux-mtd, devicetree, linux-arm-kernel, linux-mediatek, linux-kernel, benliang.zhao, bin.zhang, AngeloGioacchino Del Regno Add ECC support fot MT7986 IC, and change err_mask value with GENMASK macro. Signed-off-by: Xiangsheng Hou <xiangsheng.hou@mediatek.com> Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> --- drivers/mtd/nand/ecc-mtk.c | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/drivers/mtd/nand/ecc-mtk.c b/drivers/mtd/nand/ecc-mtk.c index 9f9b201fe706..c75bb8b80cc1 100644 --- a/drivers/mtd/nand/ecc-mtk.c +++ b/drivers/mtd/nand/ecc-mtk.c @@ -40,6 +40,10 @@ #define ECC_IDLE_REG(op) ((op) == ECC_ENCODE ? ECC_ENCIDLE : ECC_DECIDLE) #define ECC_CTL_REG(op) ((op) == ECC_ENCODE ? ECC_ENCCON : ECC_DECCON) +#define ECC_ERRMASK_MT7622 GENMASK(4, 0) +#define ECC_ERRMASK_MT2701 GENMASK(5, 0) +#define ECC_ERRMASK_MT2712 GENMASK(6, 0) + struct mtk_ecc_caps { u32 err_mask; u32 err_shift; @@ -79,6 +83,10 @@ static const u8 ecc_strength_mt7622[] = { 4, 6, 8, 10, 12 }; +static const u8 ecc_strength_mt7986[] = { + 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24 +}; + enum mtk_ecc_regs { ECC_ENCPAR00, ECC_ENCIRQ_EN, @@ -451,7 +459,7 @@ unsigned int mtk_ecc_get_parity_bits(struct mtk_ecc *ecc) EXPORT_SYMBOL(mtk_ecc_get_parity_bits); static const struct mtk_ecc_caps mtk_ecc_caps_mt2701 = { - .err_mask = 0x3f, + .err_mask = ECC_ERRMASK_MT2701, .err_shift = 8, .ecc_strength = ecc_strength_mt2701, .ecc_regs = mt2701_ecc_regs, @@ -462,7 +470,7 @@ static const struct mtk_ecc_caps mtk_ecc_caps_mt2701 = { }; static const struct mtk_ecc_caps mtk_ecc_caps_mt2712 = { - .err_mask = 0x7f, + .err_mask = ECC_ERRMASK_MT2712, .err_shift = 8, .ecc_strength = ecc_strength_mt2712, .ecc_regs = mt2712_ecc_regs, @@ -473,7 +481,7 @@ static const struct mtk_ecc_caps mtk_ecc_caps_mt2712 = { }; static const struct mtk_ecc_caps mtk_ecc_caps_mt7622 = { - .err_mask = 0x1f, + .err_mask = ECC_ERRMASK_MT7622, .err_shift = 5, .ecc_strength = ecc_strength_mt7622, .ecc_regs = mt7622_ecc_regs, @@ -483,6 +491,17 @@ static const struct mtk_ecc_caps mtk_ecc_caps_mt7622 = { .pg_irq_sel = 0, }; +static const struct mtk_ecc_caps mtk_ecc_caps_mt7986 = { + .err_mask = ECC_ERRMASK_MT7622, + .err_shift = 8, + .ecc_strength = ecc_strength_mt7986, + .ecc_regs = mt2712_ecc_regs, + .num_ecc_strength = 11, + .ecc_mode_shift = 5, + .parity_bits = 14, + .pg_irq_sel = 1, +}; + static const struct of_device_id mtk_ecc_dt_match[] = { { .compatible = "mediatek,mt2701-ecc", @@ -493,6 +512,9 @@ static const struct of_device_id mtk_ecc_dt_match[] = { }, { .compatible = "mediatek,mt7622-ecc", .data = &mtk_ecc_caps_mt7622, + }, { + .compatible = "mediatek,mt7986-ecc", + .data = &mtk_ecc_caps_mt7986, }, {}, }; -- 2.25.1 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH v6 5/5] mtd: nand: ecc-mtk: Add ECC support fot MT7986 IC 2023-02-01 2:15 ` [PATCH v6 5/5] mtd: nand: ecc-mtk: Add ECC support fot MT7986 IC Xiangsheng Hou @ 2023-02-02 12:19 ` Matthias Brugger 2023-02-03 18:10 ` Miquel Raynal 1 sibling, 0 replies; 12+ messages in thread From: Matthias Brugger @ 2023-02-02 12:19 UTC (permalink / raw) To: Xiangsheng Hou, Miquel Raynal, Richard Weinberger, Vignesh Raghavendra, Rob Herring, Krzysztof Kozlowski Cc: linux-mtd, devicetree, linux-arm-kernel, linux-mediatek, linux-kernel, benliang.zhao, bin.zhang, AngeloGioacchino Del Regno On 01/02/2023 03:15, Xiangsheng Hou wrote: > Add ECC support fot MT7986 IC, and change err_mask value with > GENMASK macro. > > Signed-off-by: Xiangsheng Hou <xiangsheng.hou@mediatek.com> > Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> Reviewed-by: Matthias Brugger <matthias.bgg@gmail.com> > --- > drivers/mtd/nand/ecc-mtk.c | 28 +++++++++++++++++++++++++--- > 1 file changed, 25 insertions(+), 3 deletions(-) > > diff --git a/drivers/mtd/nand/ecc-mtk.c b/drivers/mtd/nand/ecc-mtk.c > index 9f9b201fe706..c75bb8b80cc1 100644 > --- a/drivers/mtd/nand/ecc-mtk.c > +++ b/drivers/mtd/nand/ecc-mtk.c > @@ -40,6 +40,10 @@ > #define ECC_IDLE_REG(op) ((op) == ECC_ENCODE ? ECC_ENCIDLE : ECC_DECIDLE) > #define ECC_CTL_REG(op) ((op) == ECC_ENCODE ? ECC_ENCCON : ECC_DECCON) > > +#define ECC_ERRMASK_MT7622 GENMASK(4, 0) > +#define ECC_ERRMASK_MT2701 GENMASK(5, 0) > +#define ECC_ERRMASK_MT2712 GENMASK(6, 0) > + > struct mtk_ecc_caps { > u32 err_mask; > u32 err_shift; > @@ -79,6 +83,10 @@ static const u8 ecc_strength_mt7622[] = { > 4, 6, 8, 10, 12 > }; > > +static const u8 ecc_strength_mt7986[] = { > + 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24 > +}; > + > enum mtk_ecc_regs { > ECC_ENCPAR00, > ECC_ENCIRQ_EN, > @@ -451,7 +459,7 @@ unsigned int mtk_ecc_get_parity_bits(struct mtk_ecc *ecc) > EXPORT_SYMBOL(mtk_ecc_get_parity_bits); > > static const struct mtk_ecc_caps mtk_ecc_caps_mt2701 = { > - .err_mask = 0x3f, > + .err_mask = ECC_ERRMASK_MT2701, > .err_shift = 8, > .ecc_strength = ecc_strength_mt2701, > .ecc_regs = mt2701_ecc_regs, > @@ -462,7 +470,7 @@ static const struct mtk_ecc_caps mtk_ecc_caps_mt2701 = { > }; > > static const struct mtk_ecc_caps mtk_ecc_caps_mt2712 = { > - .err_mask = 0x7f, > + .err_mask = ECC_ERRMASK_MT2712, > .err_shift = 8, > .ecc_strength = ecc_strength_mt2712, > .ecc_regs = mt2712_ecc_regs, > @@ -473,7 +481,7 @@ static const struct mtk_ecc_caps mtk_ecc_caps_mt2712 = { > }; > > static const struct mtk_ecc_caps mtk_ecc_caps_mt7622 = { > - .err_mask = 0x1f, > + .err_mask = ECC_ERRMASK_MT7622, > .err_shift = 5, > .ecc_strength = ecc_strength_mt7622, > .ecc_regs = mt7622_ecc_regs, > @@ -483,6 +491,17 @@ static const struct mtk_ecc_caps mtk_ecc_caps_mt7622 = { > .pg_irq_sel = 0, > }; > > +static const struct mtk_ecc_caps mtk_ecc_caps_mt7986 = { > + .err_mask = ECC_ERRMASK_MT7622, > + .err_shift = 8, > + .ecc_strength = ecc_strength_mt7986, > + .ecc_regs = mt2712_ecc_regs, > + .num_ecc_strength = 11, > + .ecc_mode_shift = 5, > + .parity_bits = 14, > + .pg_irq_sel = 1, > +}; > + > static const struct of_device_id mtk_ecc_dt_match[] = { > { > .compatible = "mediatek,mt2701-ecc", > @@ -493,6 +512,9 @@ static const struct of_device_id mtk_ecc_dt_match[] = { > }, { > .compatible = "mediatek,mt7622-ecc", > .data = &mtk_ecc_caps_mt7622, > + }, { > + .compatible = "mediatek,mt7986-ecc", > + .data = &mtk_ecc_caps_mt7986, > }, > {}, > }; ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v6 5/5] mtd: nand: ecc-mtk: Add ECC support fot MT7986 IC 2023-02-01 2:15 ` [PATCH v6 5/5] mtd: nand: ecc-mtk: Add ECC support fot MT7986 IC Xiangsheng Hou 2023-02-02 12:19 ` Matthias Brugger @ 2023-02-03 18:10 ` Miquel Raynal 1 sibling, 0 replies; 12+ messages in thread From: Miquel Raynal @ 2023-02-03 18:10 UTC (permalink / raw) To: Xiangsheng Hou, Miquel Raynal, Richard Weinberger, Vignesh Raghavendra, Rob Herring, Krzysztof Kozlowski, Matthias Brugger Cc: linux-mtd, devicetree, linux-arm-kernel, linux-mediatek, linux-kernel, benliang.zhao, bin.zhang, AngeloGioacchino Del Regno On Wed, 2023-02-01 at 02:15:00 UTC, Xiangsheng Hou wrote: > Add ECC support fot MT7986 IC, and change err_mask value with > GENMASK macro. > > Signed-off-by: Xiangsheng Hou <xiangsheng.hou@mediatek.com> > Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> > Reviewed-by: Matthias Brugger <matthias.bgg@gmail.com> Applied to https://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux.git nand/next, thanks. Miquel ^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2023-02-03 18:11 UTC | newest] Thread overview: 12+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2023-02-01 2:14 [PATCH v6 0/5] Add MediaTek MT7986 NAND ECC engine support Xiangsheng Hou 2023-02-01 2:14 ` [PATCH v6 1/5] dt-bindings: mtd: Split ECC engine with rawnand controller Xiangsheng Hou 2023-02-03 18:10 ` Miquel Raynal 2023-02-01 2:14 ` [PATCH v6 2/5] arm64: dts: mediatek: Fix existing NAND controller node name Xiangsheng Hou 2023-02-02 12:13 ` Matthias Brugger 2023-02-01 2:14 ` [PATCH v6 3/5] arm: " Xiangsheng Hou 2023-02-02 12:13 ` Matthias Brugger 2023-02-01 2:14 ` [PATCH v6 4/5] dt-bindings: mtd: mediatek,nand-ecc-engine: Add compatible for MT7986 Xiangsheng Hou 2023-02-03 18:10 ` Miquel Raynal 2023-02-01 2:15 ` [PATCH v6 5/5] mtd: nand: ecc-mtk: Add ECC support fot MT7986 IC Xiangsheng Hou 2023-02-02 12:19 ` Matthias Brugger 2023-02-03 18:10 ` Miquel Raynal
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).