diff options
Diffstat (limited to 'drivers/mtd/mtdcore.c')
| -rw-r--r-- | drivers/mtd/mtdcore.c | 11 | 
1 files changed, 9 insertions, 2 deletions
diff --git a/drivers/mtd/mtdcore.c b/drivers/mtd/mtdcore.c index 7731796024e0..9eb0680db312 100644 --- a/drivers/mtd/mtdcore.c +++ b/drivers/mtd/mtdcore.c @@ -557,9 +557,10 @@ static int mtd_nvmem_add(struct mtd_info *mtd)  int add_mtd_device(struct mtd_info *mtd)  { +	struct device_node *np = mtd_get_of_node(mtd);  	struct mtd_info *master = mtd_get_master(mtd);  	struct mtd_notifier *not; -	int i, error; +	int i, error, ofidx;  	/*  	 * May occur, for instance, on buggy drivers which call @@ -598,7 +599,13 @@ int add_mtd_device(struct mtd_info *mtd)  	mutex_lock(&mtd_table_mutex); -	i = idr_alloc(&mtd_idr, mtd, 0, 0, GFP_KERNEL); +	ofidx = -1; +	if (np) +		ofidx = of_alias_get_id(np, "mtd"); +	if (ofidx >= 0) +		i = idr_alloc(&mtd_idr, mtd, ofidx, ofidx + 1, GFP_KERNEL); +	else +		i = idr_alloc(&mtd_idr, mtd, 0, 0, GFP_KERNEL);  	if (i < 0) {  		error = i;  		goto fail_locked;  | 
