mtd: grab a reference to the MTD of_node before registering it
PATCH 1/1 mtd: grab a reference to the MTD of_node before registering it
We now stick the device node representing the current MTD (if any) into sysfs, so let's make sure we have a reference to it before doing that.
--- drivers/mtd/mtdcore.c | 4 ++++ 1 file changed, 4 insertions(+)
drivers/mtd/mtdcore.c +4 -0
@@ -32,6 +32,7 @@#include <linux/err.h> #include <linux/ioctl.h> #include <linux/init.h> +#include <linux/of.h> #include <linux/proc_fs.h> #include <linux/idr.h> #include <linux/backing-dev.h>
@@ -454,6 +455,7 @@ int add_mtd_device(struct mtd_info *mtd) mtd->dev.devt =MTD_DEVT (i);dev_set_name (&mtd->dev,"mtd%d" , i);dev_set_drvdata (&mtd->dev, mtd); +of_node_get (mtd_get_of_node (mtd)); error =device_register (&mtd->dev);if (error) goto fail_added;
@@ -476,6 +478,7 @@ int add_mtd_device(struct mtd_info *mtd)return 0 ; fail_added: +of_node_put (mtd_get_of_node (mtd));idr_remove (&mtd_idr, i); fail_locked:mutex_unlock (&mtd_table_mutex);
@@ -517,6 +520,7 @@ int del_mtd_device(struct mtd_info *mtd)device_unregister (&mtd->dev);idr_remove (&mtd_idr, mtd->index); +of_node_put (mtd_get_of_node (mtd));module_put (THIS_MODULE ); ret =0 ;
Signature · 6 lines
2.6.0.rc2.230.g3dd15c0 -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
A message that is not in the archive (sent off-list or not yet received): 1447287964-63309-1-git-send-email-computersforpeace-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org
PATCH v2 1/1 mtd: assign mtd->dev.of_node when creating partition devices
From: Boris BREZILLON <boris.brezillon-wi1+55ScJUtKEb57/[email protected]>
MTD partitions may have been created from a DT definition, and in this case the ->of_node of the struct device embedded in mtd_info should point to the DT node that was used to create the partition.
---
v2: drop most of the get/put node handling; allow the MTD core to do
this in {add,del}_mtd_device()
depends on: http://patchwork.ozlabs.org/patch/543159/
v1: http://patchwork.ozlabs.org/patch/538838/
drivers/mtd/mtdpart.c | 1 + drivers/mtd/ofpart.c | 2 +- include/linux/mtd/partitions.h | 1 + 3 files changed, 3 insertions(+), 1 deletion(-)
drivers/mtd/mtdpart.c +1 -0
@@ -391,6 +391,7 @@ static struct mtd_part *allocate_partition(struct mtd_info *master, slave->mtd.dev.parent =IS_ENABLED (CONFIG_MTD_PARTITIONED_MASTER ) ? &master->dev : master->dev.parent; +mtd_set_of_node (&slave->mtd, part->of_node); slave->mtd._read = part_read; slave->mtd._write = part_write;
drivers/mtd/ofpart.c +1 -1
@@ -111,6 +111,7 @@ static int parse_ofpart_partitions(struct mtd_info *master,if (of_get_property (pp,"lock" , &len)) (*pparts)[i].mask_flags |=MTD_POWERUP_LOCK ; + (*pparts)[i].of_node = pp; i++; }
@@ -124,7 +125,6 @@ ofpart_fail: master->name, pp->full_name, mtd_node->full_name); ret = -EINVAL ; ofpart_none: -of_node_put (pp);kfree (*pparts); *pparts =NULL ;return ret;
include/linux/mtd/partitions.h +1 -0
@@ -42,6 +42,7 @@ struct mtd_partition {uint64_t offset;/* offset within the master MTD space */ uint32_t mask_flags;/* master MTD flags to mask out for this partition */ struct nand_ecclayout *ecclayout;/* out of band layout for this partition (NAND only) */ +struct device_node *of_node;/* OF node attached to the partition */ };#define MTDPART_OFS_RETAIN (-3)
Signature · 6 lines
2.6.0.rc2.230.g3dd15c0 -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
Boris Brezillon
Reviewed-byQuoted 5 lines · On Wed, 11 Nov 2015 16:26:04 -0800 Brian Norris…
We now stick the device node representing the current MTD (if any) into sysfs, so let's make sure we have a reference to it before doing that.
Signed-off-by Brian Norris <[email protected]>
Looks good to me,
Quoted 40 lines
--- drivers/mtd/mtdcore.c | 4 ++++ 1 file changed, 4 insertions(+)drivers/mtd/mtdcore.c +4
-0@@ -32,6 +32,7 @@#include <linux/err.h> #include <linux/ioctl.h> #include <linux/init.h> +#include <linux/of.h> #include <linux/proc_fs.h> #include <linux/idr.h> #include <linux/backing-dev.h> @@ -454,6 +455,7 @@ int add_mtd_device(struct mtd_info *mtd) mtd->dev.devt =MTD_DEVT (i);dev_set_name (&mtd->dev,"mtd%d" , i);dev_set_drvdata (&mtd->dev, mtd); +of_node_get (mtd_get_of_node (mtd)); error =device_register (&mtd->dev);if (error) goto fail_added;@@ -476,6 +478,7 @@ int add_mtd_device(struct mtd_info *mtd)return 0 ; fail_added: +of_node_put (mtd_get_of_node (mtd));idr_remove (&mtd_idr, i); fail_locked:mutex_unlock (&mtd_table_mutex);@@ -517,6 +520,7 @@ int del_mtd_device(struct mtd_info *mtd)device_unregister (&mtd->dev);idr_remove (&mtd_idr, mtd->index); +of_node_put (mtd_get_of_node (mtd));module_put (THIS_MODULE ); ret =0 ;
Signature · 7 lines
Boris Brezillon, Free Electrons Embedded Linux and Kernel engineering http://free-electrons.com -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
Quoted 6 lines · Boris Brezillon
Quoted 3 lines · On Wed, 11 Nov 2015 16:26:04 -0800 Brian Norris…
We now stick the device node representing the current MTD (if any) into sysfs, so let's make sure we have a reference to it before doing that.
Quoted 6 lines
Quoted 2 lines
Signed-off-by Brian Norris <[email protected]>Looks good to me,
Pushed to l2-mtd.git/next
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html