doc: dt: mtd: partitions: add compatible property to "partitions" node

Linux-MTD Mailing List linux-mtd at lists.infradead.org
Tue Dec 8 17:59:02 PST 2015


Gitweb:     http://git.infradead.org/?p=mtd-2.6.git;a=commit;h=e488ca9f8d4f62c2dc36bfa5c32f68e7f05ab381
Commit:     e488ca9f8d4f62c2dc36bfa5c32f68e7f05ab381
Parent:     8c62b4e118cfa7a3c906c01d4ba2c78a5bd97531
Author:     Brian Norris <computersforpeace at gmail.com>
AuthorDate: Thu Dec 3 14:47:32 2015 -0800
Committer:  Brian Norris <computersforpeace at gmail.com>
CommitDate: Tue Dec 8 17:10:20 2015 -0800

    doc: dt: mtd: partitions: add compatible property to "partitions" node
    
    As noted here [1], there are potentially future conflicts if we try to
    use MTD's "partitions" subnode to describe anything besides just the
    fixed-in-the-device-tree partitions currently described in this
    document. Particularly, there was a proposal to use this node for the
    AFS parser too.
    
    It can pose a (small) problem to try to differentiate the following
    nodes:
    
    	// using binding as currently specified
    	partitions {
    		#address-cells = <x>;
    		#size-cells = <y>;
    		partition at 0 {
    			...;
    		};
    	};
    
    and
    
    	// proposed future binding
    	partitions {
    		compatible = "arm,arm-flash-structure";
    	};
    
    It's especially difficult if other uses of this node start having
    subnodes.
    
    So, since the "partitions" node is new in v4.4, let's fixup the binding
    before release so that it requires a compatible property, so it's much
    clearer to distinguish. e.g.:
    
    	// proposed
    	partitions {
    		compatible = "fixed-partitions";
    		#address-cells = <x>;
    		#size-cells = <y>;
    		partition at 0 {
    			...;
    		};
    	};
    
    [1] Subject: "mtd: create a partition type device tree binding"
        http://lkml.kernel.org/g/20151113220039.GA74382@google.com
        http://lists.infradead.org/pipermail/linux-mtd/2015-November/063355.html
        http://lists.infradead.org/pipermail/linux-mtd/2015-November/063364.html
    
    Cc: Michal Suchanek <hramrach at gmail.com>
    Signed-off-by: Brian Norris <computersforpeace at gmail.com>
    Acked-by: Rob Herring <robh at kernel.org>
---
 Documentation/devicetree/bindings/mtd/partition.txt | 7 ++++++-
 drivers/mtd/ofpart.c                                | 3 +++
 2 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/Documentation/devicetree/bindings/mtd/partition.txt b/Documentation/devicetree/bindings/mtd/partition.txt
index f1e2a02..1c63e40 100644
--- a/Documentation/devicetree/bindings/mtd/partition.txt
+++ b/Documentation/devicetree/bindings/mtd/partition.txt
@@ -6,7 +6,9 @@ used for what purposes, but which don't use an on-flash partition table such
 as RedBoot.
 
 The partition table should be a subnode of the mtd node and should be named
-'partitions'. Partitions are defined in subnodes of the partitions node.
+'partitions'. This node should have the following property:
+- compatible : (required) must be "fixed-partitions"
+Partitions are then defined in subnodes of the partitions node.
 
 For backwards compatibility partitions as direct subnodes of the mtd device are
 supported. This use is discouraged.
@@ -36,6 +38,7 @@ Examples:
 
 flash at 0 {
 	partitions {
+		compatible = "fixed-partitions";
 		#address-cells = <1>;
 		#size-cells = <1>;
 
@@ -53,6 +56,7 @@ flash at 0 {
 
 flash at 1 {
 	partitions {
+		compatible = "fixed-partitions";
 		#address-cells = <1>;
 		#size-cells = <2>;
 
@@ -66,6 +70,7 @@ flash at 1 {
 
 flash at 2 {
 	partitions {
+		compatible = "fixed-partitions";
 		#address-cells = <2>;
 		#size-cells = <2>;
 
diff --git a/drivers/mtd/ofpart.c b/drivers/mtd/ofpart.c
index 3e9c585..9ed6038 100644
--- a/drivers/mtd/ofpart.c
+++ b/drivers/mtd/ofpart.c
@@ -55,6 +55,9 @@ static int parse_ofpart_partitions(struct mtd_info *master,
 			 master->name, mtd_node->full_name);
 		ofpart_node = mtd_node;
 		dedicated = false;
+	} else if (!of_device_is_compatible(ofpart_node, "fixed-partitions")) {
+		/* The 'partitions' subnode might be used by another parser */
+		return 0;
 	}
 
 	/* First count the subnodes */



More information about the linux-mtd-cvs mailing list