ARM: versatile: move flash registration to the device tree

This moves the boardfile definition of the flash memory in the
Versatile board into the device tree. The flash was already
defined with the property "arm,versatile-flash" which was
not handled by the kernel: instead define it as compatible
also with "cfi-flash" so it detects properly, and delete the
corresponding boardfile code so we get a smooth transition.

The old compatible string "arm,versatile-flash" is reused to
indicate to the MTD physmap subsystem that this flash requires
special VPP handling. (See separate patch.)

Cc: Grant Likely <grant.likely@linaro.org>
Cc: Rob Herring <robh@kernel.org>
Cc: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
This commit is contained in:
Linus Walleij 2016-01-26 10:55:32 +01:00
parent 81fc3eb2b3
commit 7bb73fd719
2 changed files with 3 additions and 49 deletions

View File

@ -119,8 +119,9 @@
}; };
flash@34000000 { flash@34000000 {
compatible = "arm,versatile-flash"; /* 64 MiB NOR flash in non-interleaved chips */
reg = <0x34000000 0x4000000>; compatible = "arm,versatile-flash", "cfi-flash";
reg = <0x34000000 0x04000000>;
bank-width = <4>; bank-width = <4>;
}; };

View File

@ -32,7 +32,6 @@
#include <linux/amba/clcd.h> #include <linux/amba/clcd.h>
#include <linux/platform_data/video-clcd-versatile.h> #include <linux/platform_data/video-clcd-versatile.h>
#include <linux/amba/mmci.h> #include <linux/amba/mmci.h>
#include <linux/mtd/physmap.h>
#include <asm/mach-types.h> #include <asm/mach-types.h>
#include <asm/mach/arch.h> #include <asm/mach/arch.h>
#include <asm/mach/map.h> #include <asm/mach/map.h>
@ -41,12 +40,6 @@
#define IO_ADDRESS(x) (((x) & 0x0fffffff) + (((x) >> 4) & 0x0f000000) + 0xf0000000) #define IO_ADDRESS(x) (((x) & 0x0fffffff) + (((x) >> 4) & 0x0f000000) + 0xf0000000)
#define __io_address(n) ((void __iomem __force *)IO_ADDRESS(n)) #define __io_address(n) ((void __iomem __force *)IO_ADDRESS(n))
/*
* Memory definitions
*/
#define VERSATILE_FLASH_BASE 0x34000000
#define VERSATILE_FLASH_SIZE SZ_64M
/* /*
* ------------------------------------------------------------------------ * ------------------------------------------------------------------------
* Versatile Registers * Versatile Registers
@ -54,14 +47,8 @@
*/ */
#define VERSATILE_SYS_PCICTL_OFFSET 0x44 #define VERSATILE_SYS_PCICTL_OFFSET 0x44
#define VERSATILE_SYS_MCI_OFFSET 0x48 #define VERSATILE_SYS_MCI_OFFSET 0x48
#define VERSATILE_SYS_FLASH_OFFSET 0x4C
#define VERSATILE_SYS_CLCD_OFFSET 0x50 #define VERSATILE_SYS_CLCD_OFFSET 0x50
/*
* VERSATILE_SYS_FLASH
*/
#define VERSATILE_FLASHPROG_FLVPPEN (1 << 0) /* Enable writing to flash */
/* /*
* VERSATILE peripheral addresses * VERSATILE peripheral addresses
*/ */
@ -86,39 +73,6 @@
static void __iomem *versatile_sys_base; static void __iomem *versatile_sys_base;
static void __iomem *versatile_ib2_ctrl; static void __iomem *versatile_ib2_ctrl;
static void versatile_flash_set_vpp(struct platform_device *pdev, int on)
{
u32 val;
val = readl(versatile_sys_base + VERSATILE_SYS_FLASH_OFFSET);
if (on)
val |= VERSATILE_FLASHPROG_FLVPPEN;
else
val &= ~VERSATILE_FLASHPROG_FLVPPEN;
writel(val, versatile_sys_base + VERSATILE_SYS_FLASH_OFFSET);
}
static struct physmap_flash_data versatile_flash_data = {
.width = 4,
.set_vpp = versatile_flash_set_vpp,
};
static struct resource versatile_flash_resource = {
.start = VERSATILE_FLASH_BASE,
.end = VERSATILE_FLASH_BASE + VERSATILE_FLASH_SIZE - 1,
.flags = IORESOURCE_MEM,
};
struct platform_device versatile_flash_device = {
.name = "physmap-flash",
.id = 0,
.dev = {
.platform_data = &versatile_flash_data,
},
.num_resources = 1,
.resource = &versatile_flash_resource,
};
unsigned int mmc_status(struct device *dev) unsigned int mmc_status(struct device *dev)
{ {
struct amba_device *adev = container_of(dev, struct amba_device, dev); struct amba_device *adev = container_of(dev, struct amba_device, dev);
@ -390,7 +344,6 @@ static void __init versatile_dt_init(void)
versatile_dt_pci_init(); versatile_dt_pci_init();
platform_device_register(&versatile_flash_device);
of_platform_populate(NULL, of_default_bus_match_table, of_platform_populate(NULL, of_default_bus_match_table,
versatile_auxdata_lookup, NULL); versatile_auxdata_lookup, NULL);
} }