Merge git://git.infradead.org/mtd-2.6
* git://git.infradead.org/mtd-2.6: [MTD] [MAPS] Remove MODULE_DEVICE_TABLE() from ck804rom driver. [JFFS2] fix mount crash caused by removed nodes [JFFS2] force the jffs2 GC daemon to behave a bit better [MTD] [MAPS] blackfin async requires complex mappings [MTD] [MAPS] blackfin: fix memory leak in error path [MTD] [MAPS] physmap: fix wrong free and del_mtd_{partition,device} [MTD] slram: Handle negative devlength correctly [MTD] map_rom has NULL erase pointer [MTD] [LPDDR] qinfo_probe depends on lpddr
Этот коммит содержится в:
@@ -491,7 +491,7 @@ config MTD_PCMCIA_ANONYMOUS
|
||||
|
||||
config MTD_BFIN_ASYNC
|
||||
tristate "Blackfin BF533-STAMP Flash Chip Support"
|
||||
depends on BFIN533_STAMP && MTD_CFI
|
||||
depends on BFIN533_STAMP && MTD_CFI && MTD_COMPLEX_MAPPINGS
|
||||
select MTD_PARTITIONS
|
||||
default y
|
||||
help
|
||||
|
@@ -152,14 +152,18 @@ static int __devinit bfin_flash_probe(struct platform_device *pdev)
|
||||
|
||||
if (gpio_request(state->enet_flash_pin, DRIVER_NAME)) {
|
||||
pr_devinit(KERN_ERR DRIVER_NAME ": Failed to request gpio %d\n", state->enet_flash_pin);
|
||||
kfree(state);
|
||||
return -EBUSY;
|
||||
}
|
||||
gpio_direction_output(state->enet_flash_pin, 1);
|
||||
|
||||
pr_devinit(KERN_NOTICE DRIVER_NAME ": probing %d-bit flash bus\n", state->map.bankwidth * 8);
|
||||
state->mtd = do_map_probe(memory->name, &state->map);
|
||||
if (!state->mtd)
|
||||
if (!state->mtd) {
|
||||
gpio_free(state->enet_flash_pin);
|
||||
kfree(state);
|
||||
return -ENXIO;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_MTD_PARTITIONS
|
||||
ret = parse_mtd_partitions(state->mtd, part_probe_types, &pdata->parts, 0);
|
||||
|
@@ -342,9 +342,9 @@ static struct pci_device_id ck804xrom_pci_tbl[] = {
|
||||
{ 0, }
|
||||
};
|
||||
|
||||
#if 0
|
||||
MODULE_DEVICE_TABLE(pci, ck804xrom_pci_tbl);
|
||||
|
||||
#if 0
|
||||
static struct pci_driver ck804xrom_driver = {
|
||||
.name = MOD_NAME,
|
||||
.id_table = ck804xrom_pci_tbl,
|
||||
|
@@ -29,6 +29,7 @@ struct physmap_flash_info {
|
||||
struct map_info map[MAX_RESOURCES];
|
||||
#ifdef CONFIG_MTD_PARTITIONS
|
||||
int nr_parts;
|
||||
struct mtd_partition *parts;
|
||||
#endif
|
||||
};
|
||||
|
||||
@@ -45,25 +46,26 @@ static int physmap_flash_remove(struct platform_device *dev)
|
||||
|
||||
physmap_data = dev->dev.platform_data;
|
||||
|
||||
#ifdef CONFIG_MTD_CONCAT
|
||||
if (info->cmtd != info->mtd[0]) {
|
||||
#ifdef CONFIG_MTD_PARTITIONS
|
||||
if (info->nr_parts) {
|
||||
del_mtd_partitions(info->cmtd);
|
||||
kfree(info->parts);
|
||||
} else if (physmap_data->nr_parts)
|
||||
del_mtd_partitions(info->cmtd);
|
||||
else
|
||||
del_mtd_device(info->cmtd);
|
||||
#else
|
||||
del_mtd_device(info->cmtd);
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_MTD_CONCAT
|
||||
if (info->cmtd != info->mtd[0])
|
||||
mtd_concat_destroy(info->cmtd);
|
||||
}
|
||||
#endif
|
||||
|
||||
for (i = 0; i < MAX_RESOURCES; i++) {
|
||||
if (info->mtd[i] != NULL) {
|
||||
#ifdef CONFIG_MTD_PARTITIONS
|
||||
if (info->nr_parts || physmap_data->nr_parts)
|
||||
del_mtd_partitions(info->mtd[i]);
|
||||
else
|
||||
del_mtd_device(info->mtd[i]);
|
||||
#else
|
||||
del_mtd_device(info->mtd[i]);
|
||||
#endif
|
||||
if (info->mtd[i] != NULL)
|
||||
map_destroy(info->mtd[i]);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@@ -86,9 +88,6 @@ static int physmap_flash_probe(struct platform_device *dev)
|
||||
int err = 0;
|
||||
int i;
|
||||
int devices_found = 0;
|
||||
#ifdef CONFIG_MTD_PARTITIONS
|
||||
struct mtd_partition *parts;
|
||||
#endif
|
||||
|
||||
physmap_data = dev->dev.platform_data;
|
||||
if (physmap_data == NULL)
|
||||
@@ -167,10 +166,11 @@ static int physmap_flash_probe(struct platform_device *dev)
|
||||
goto err_out;
|
||||
|
||||
#ifdef CONFIG_MTD_PARTITIONS
|
||||
err = parse_mtd_partitions(info->cmtd, part_probe_types, &parts, 0);
|
||||
err = parse_mtd_partitions(info->cmtd, part_probe_types,
|
||||
&info->parts, 0);
|
||||
if (err > 0) {
|
||||
add_mtd_partitions(info->cmtd, parts, err);
|
||||
kfree(parts);
|
||||
add_mtd_partitions(info->cmtd, info->parts, err);
|
||||
info->nr_parts = err;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Ссылка в новой задаче
Block a user