Commit d8140830 authored by Alexey Korolev's avatar Alexey Korolev Committed by David Woodhouse

[MTD] LPDDR extended physmap driver to support LPDDR flash

Physmap is a generic map driver for different platforms and flash types.
We added support of LPDDR to physmap.
All changes here are related to introduction of new pfow_base parameter.
This parameter is valid in case of LPDDR chips only.
Signed-off-by: default avatarAlexey Korolev <akorolev@infradead.org>
Acked-by: default avatarJared Hulbert <jaredeh@gmail.com>
Signed-off-by: default avatarDavid Woodhouse <David.Woodhouse@intel.com>
parent d13e51e7
...@@ -10,8 +10,8 @@ config MTD_COMPLEX_MAPPINGS ...@@ -10,8 +10,8 @@ config MTD_COMPLEX_MAPPINGS
paged mappings of flash chips. paged mappings of flash chips.
config MTD_PHYSMAP config MTD_PHYSMAP
tristate "CFI Flash device in physical memory map" tristate "Flash device in physical memory map"
depends on MTD_CFI || MTD_JEDECPROBE || MTD_ROM depends on MTD_CFI || MTD_JEDECPROBE || MTD_ROM || MTD_LPDDR
help help
This provides a 'mapping' driver which allows the NOR Flash and This provides a 'mapping' driver which allows the NOR Flash and
ROM driver code to communicate with chips which are mapped ROM driver code to communicate with chips which are mapped
......
...@@ -68,7 +68,12 @@ static int physmap_flash_remove(struct platform_device *dev) ...@@ -68,7 +68,12 @@ static int physmap_flash_remove(struct platform_device *dev)
return 0; return 0;
} }
static const char *rom_probe_types[] = { "cfi_probe", "jedec_probe", "map_rom", NULL }; static const char *rom_probe_types[] = {
"cfi_probe",
"jedec_probe",
"qinfo_probe",
"map_rom",
NULL };
#ifdef CONFIG_MTD_PARTITIONS #ifdef CONFIG_MTD_PARTITIONS
static const char *part_probe_types[] = { "cmdlinepart", "RedBoot", NULL }; static const char *part_probe_types[] = { "cmdlinepart", "RedBoot", NULL };
#endif #endif
...@@ -117,6 +122,7 @@ static int physmap_flash_probe(struct platform_device *dev) ...@@ -117,6 +122,7 @@ static int physmap_flash_probe(struct platform_device *dev)
info->map[i].size = dev->resource[i].end - dev->resource[i].start + 1; info->map[i].size = dev->resource[i].end - dev->resource[i].start + 1;
info->map[i].bankwidth = physmap_data->width; info->map[i].bankwidth = physmap_data->width;
info->map[i].set_vpp = physmap_data->set_vpp; info->map[i].set_vpp = physmap_data->set_vpp;
info->map[i].pfow_base = physmap_data->pfow_base;
info->map[i].virt = devm_ioremap(&dev->dev, info->map[i].phys, info->map[i].virt = devm_ioremap(&dev->dev, info->map[i].phys,
info->map[i].size); info->map[i].size);
......
...@@ -24,6 +24,7 @@ struct physmap_flash_data { ...@@ -24,6 +24,7 @@ struct physmap_flash_data {
unsigned int width; unsigned int width;
void (*set_vpp)(struct map_info *, int); void (*set_vpp)(struct map_info *, int);
unsigned int nr_parts; unsigned int nr_parts;
unsigned int pfow_base;
struct mtd_partition *parts; struct mtd_partition *parts;
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment