kernel: add pending mtd patches adding NVMEM support
It's meant to provide upstream support for mtd & NVMEM. It's required e.g. for reading MAC address from mtd partition content. It seems to be in a final shape so it's worth testing. Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
From a5d83d6e2bc747b13f347962d4b335d70b23559b Mon Sep 17 00:00:00 2001
|
||||
From: Ansuel Smith <ansuelsmth@gmail.com>
|
||||
Date: Fri, 12 Mar 2021 07:28:19 +0100
|
||||
Subject: [PATCH] mtd: core: add nvmem-cells compatible to parse mtd as nvmem
|
||||
cells
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Partitions that contains the nvmem-cells compatible will register
|
||||
their direct subonodes as nvmem cells and the node will be treated as a
|
||||
nvmem provider.
|
||||
|
||||
Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
|
||||
Tested-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
---
|
||||
drivers/mtd/mtdcore.c | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/mtd/mtdcore.c
|
||||
+++ b/drivers/mtd/mtdcore.c
|
||||
@@ -559,6 +559,7 @@ static int mtd_nvmem_reg_read(void *priv
|
||||
|
||||
static int mtd_nvmem_add(struct mtd_info *mtd)
|
||||
{
|
||||
+ struct device_node *node = mtd_get_of_node(mtd);
|
||||
struct nvmem_config config = {};
|
||||
|
||||
config.id = -1;
|
||||
@@ -571,7 +572,7 @@ static int mtd_nvmem_add(struct mtd_info
|
||||
config.stride = 1;
|
||||
config.read_only = true;
|
||||
config.root_only = true;
|
||||
- config.no_of_node = true;
|
||||
+ config.no_of_node = !of_device_is_compatible(node, "nvmem-cells");
|
||||
config.priv = mtd;
|
||||
|
||||
mtd->nvmem = nvmem_register(&config);
|
||||
@@ -0,0 +1,25 @@
|
||||
From 42645976c3289b03a12f1bd2bc131fd98fc27170 Mon Sep 17 00:00:00 2001
|
||||
From: Ansuel Smith <ansuelsmth@gmail.com>
|
||||
Date: Fri, 12 Mar 2021 07:28:20 +0100
|
||||
Subject: [PATCH] devicetree: nvmem: nvmem: drop $nodename restriction
|
||||
|
||||
Drop $nodename restriction as now mtd partition can also be used as
|
||||
nvmem provider.
|
||||
|
||||
Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
|
||||
---
|
||||
Documentation/devicetree/bindings/nvmem/nvmem.yaml | 3 ---
|
||||
1 file changed, 3 deletions(-)
|
||||
|
||||
--- a/Documentation/devicetree/bindings/nvmem/nvmem.yaml
|
||||
+++ b/Documentation/devicetree/bindings/nvmem/nvmem.yaml
|
||||
@@ -20,9 +20,6 @@ description: |
|
||||
storage device.
|
||||
|
||||
properties:
|
||||
- $nodename:
|
||||
- pattern: "^(eeprom|efuse|nvram)(@.*|-[0-9a-f])*$"
|
||||
-
|
||||
"#address-cells":
|
||||
const: 1
|
||||
|
||||
@@ -0,0 +1,117 @@
|
||||
From 377aa0135dc8489312edd3184d143ce3a89ff7ee Mon Sep 17 00:00:00 2001
|
||||
From: Ansuel Smith <ansuelsmth@gmail.com>
|
||||
Date: Fri, 12 Mar 2021 07:28:21 +0100
|
||||
Subject: [PATCH] dt-bindings: mtd: Document use of nvmem-cells compatible
|
||||
|
||||
Document nvmem-cells compatible used to treat mtd partitions as a
|
||||
nvmem provider.
|
||||
|
||||
Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
|
||||
Reviewed-by: Rob Herring <robh@kernel.org>
|
||||
---
|
||||
.../bindings/mtd/partitions/nvmem-cells.yaml | 99 +++++++++++++++++++
|
||||
1 file changed, 99 insertions(+)
|
||||
create mode 100644 Documentation/devicetree/bindings/mtd/partitions/nvmem-cells.yaml
|
||||
|
||||
--- /dev/null
|
||||
+++ b/Documentation/devicetree/bindings/mtd/partitions/nvmem-cells.yaml
|
||||
@@ -0,0 +1,99 @@
|
||||
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
|
||||
+%YAML 1.2
|
||||
+---
|
||||
+$id: http://devicetree.org/schemas/mtd/partitions/nvmem-cells.yaml#
|
||||
+$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
+
|
||||
+title: Nvmem cells
|
||||
+
|
||||
+description: |
|
||||
+ Any partition containing the compatible "nvmem-cells" will register as a
|
||||
+ nvmem provider.
|
||||
+ Each direct subnodes represents a nvmem cell following the nvmem binding.
|
||||
+ Nvmem binding to declare nvmem-cells can be found in:
|
||||
+ Documentation/devicetree/bindings/nvmem/nvmem.yaml
|
||||
+
|
||||
+maintainers:
|
||||
+ - Ansuel Smith <ansuelsmth@gmail.com>
|
||||
+
|
||||
+allOf:
|
||||
+ - $ref: /schemas/nvmem/nvmem.yaml#
|
||||
+
|
||||
+properties:
|
||||
+ compatible:
|
||||
+ const: nvmem-cells
|
||||
+
|
||||
+required:
|
||||
+ - compatible
|
||||
+
|
||||
+additionalProperties: true
|
||||
+
|
||||
+examples:
|
||||
+ - |
|
||||
+ partitions {
|
||||
+ compatible = "fixed-partitions";
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <1>;
|
||||
+
|
||||
+ /* ... */
|
||||
+
|
||||
+ };
|
||||
+ art: art@1200000 {
|
||||
+ compatible = "nvmem-cells";
|
||||
+ reg = <0x1200000 0x0140000>;
|
||||
+ label = "art";
|
||||
+ read-only;
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <1>;
|
||||
+
|
||||
+ macaddr_gmac1: macaddr_gmac1@0 {
|
||||
+ reg = <0x0 0x6>;
|
||||
+ };
|
||||
+
|
||||
+ macaddr_gmac2: macaddr_gmac2@6 {
|
||||
+ reg = <0x6 0x6>;
|
||||
+ };
|
||||
+
|
||||
+ pre_cal_24g: pre_cal_24g@1000 {
|
||||
+ reg = <0x1000 0x2f20>;
|
||||
+ };
|
||||
+
|
||||
+ pre_cal_5g: pre_cal_5g@5000{
|
||||
+ reg = <0x5000 0x2f20>;
|
||||
+ };
|
||||
+ };
|
||||
+ - |
|
||||
+ partitions {
|
||||
+ compatible = "fixed-partitions";
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <1>;
|
||||
+
|
||||
+ partition@0 {
|
||||
+ label = "bootloader";
|
||||
+ reg = <0x000000 0x100000>;
|
||||
+ read-only;
|
||||
+ };
|
||||
+
|
||||
+ firmware@100000 {
|
||||
+ compatible = "brcm,trx";
|
||||
+ label = "firmware";
|
||||
+ reg = <0x100000 0xe00000>;
|
||||
+ };
|
||||
+
|
||||
+ calibration@f00000 {
|
||||
+ compatible = "nvmem-cells";
|
||||
+ label = "calibration";
|
||||
+ reg = <0xf00000 0x100000>;
|
||||
+ ranges = <0 0xf00000 0x100000>;
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <1>;
|
||||
+
|
||||
+ wifi0@0 {
|
||||
+ reg = <0x000000 0x080000>;
|
||||
+ };
|
||||
+
|
||||
+ wifi1@80000 {
|
||||
+ reg = <0x080000 0x080000>;
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
@@ -20,7 +20,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
||||
#include <linux/nvmem-provider.h>
|
||||
|
||||
#include <linux/mtd/mtd.h>
|
||||
@@ -698,6 +699,15 @@ int add_mtd_device(struct mtd_info *mtd)
|
||||
@@ -699,6 +700,15 @@ int add_mtd_device(struct mtd_info *mtd)
|
||||
of this try_ nonsense, and no bitching about it
|
||||
either. :) */
|
||||
__module_get(THIS_MODULE);
|
||||
|
||||
@@ -17,7 +17,7 @@ Reviewed-by: Miquel Raynal <miquel.raynal@bootlin.com>
|
||||
|
||||
--- a/drivers/mtd/mtdcore.c
|
||||
+++ b/drivers/mtd/mtdcore.c
|
||||
@@ -1049,6 +1049,44 @@ out_unlock:
|
||||
@@ -1050,6 +1050,44 @@ out_unlock:
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(get_mtd_device_nm);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user