ARM: pxa: magician: Fix support for Intel Strata NOR Flash
Old definition for the physmap-flash driver is incomplete: - Use of an EGPIO without previous request - Missing the MTD partitions This patch fixes it. Read functionality was tested on the machine with board_id 0x3a. Writing was not tested. Signed-off-by: Petr Cvek <petr.cvek@tul.cz> Signed-off-by: Robert Jarzmik <robert.jarzmik@free.fr>
This commit is contained in:
Родитель
0f073e3e0c
Коммит
fdb902b6fc
|
@ -710,20 +710,65 @@ static struct pxaohci_platform_data magician_ohci_info = {
|
||||||
* StrataFlash
|
* StrataFlash
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
static int magician_flash_init(struct platform_device *pdev)
|
||||||
|
{
|
||||||
|
int ret = gpio_request(EGPIO_MAGICIAN_FLASH_VPP, "flash Vpp enable");
|
||||||
|
|
||||||
|
if (ret) {
|
||||||
|
pr_err("Cannot request flash enable GPIO (%i)\n", ret);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = gpio_direction_output(EGPIO_MAGICIAN_FLASH_VPP, 1);
|
||||||
|
if (ret) {
|
||||||
|
pr_err("Cannot set direction for flash enable (%i)\n", ret);
|
||||||
|
gpio_free(EGPIO_MAGICIAN_FLASH_VPP);
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
static void magician_set_vpp(struct platform_device *pdev, int vpp)
|
static void magician_set_vpp(struct platform_device *pdev, int vpp)
|
||||||
{
|
{
|
||||||
gpio_set_value(EGPIO_MAGICIAN_FLASH_VPP, vpp);
|
gpio_set_value(EGPIO_MAGICIAN_FLASH_VPP, vpp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void magician_flash_exit(struct platform_device *pdev)
|
||||||
|
{
|
||||||
|
gpio_free(EGPIO_MAGICIAN_FLASH_VPP);
|
||||||
|
}
|
||||||
|
|
||||||
static struct resource strataflash_resource = {
|
static struct resource strataflash_resource = {
|
||||||
.start = PXA_CS0_PHYS,
|
.start = PXA_CS0_PHYS,
|
||||||
.end = PXA_CS0_PHYS + SZ_64M - 1,
|
.end = PXA_CS0_PHYS + SZ_64M - 1,
|
||||||
.flags = IORESOURCE_MEM,
|
.flags = IORESOURCE_MEM,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static struct mtd_partition magician_flash_parts[] = {
|
||||||
|
{
|
||||||
|
.name = "Bootloader",
|
||||||
|
.offset = 0x0,
|
||||||
|
.size = 0x40000,
|
||||||
|
.mask_flags = MTD_WRITEABLE, /* EXPERIMENTAL */
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.name = "Linux Kernel",
|
||||||
|
.offset = 0x40000,
|
||||||
|
.size = MTDPART_SIZ_FULL,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* physmap-flash driver
|
||||||
|
*/
|
||||||
|
|
||||||
static struct physmap_flash_data strataflash_data = {
|
static struct physmap_flash_data strataflash_data = {
|
||||||
.width = 4,
|
.width = 4,
|
||||||
|
.init = magician_flash_init,
|
||||||
.set_vpp = magician_set_vpp,
|
.set_vpp = magician_set_vpp,
|
||||||
|
.exit = magician_flash_exit,
|
||||||
|
.parts = magician_flash_parts,
|
||||||
|
.nr_parts = ARRAY_SIZE(magician_flash_parts),
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct platform_device strataflash = {
|
static struct platform_device strataflash = {
|
||||||
|
|
Загрузка…
Ссылка в новой задаче