Signed-off-by: Sergey Ryazanov <ryazanov.s.a@xxxxxxxxx> --- arch/mips/ar231x/ar5312.c | 34 ++++++++++++++++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/arch/mips/ar231x/ar5312.c b/arch/mips/ar231x/ar5312.c index 6a429d2..944cd16 100644 --- a/arch/mips/ar231x/ar5312.c +++ b/arch/mips/ar231x/ar5312.c @@ -17,6 +17,7 @@ #include <linux/init.h> #include <linux/kernel.h> #include <linux/platform_device.h> +#include <linux/mtd/physmap.h> #include <linux/reboot.h> #include <asm/bootinfo.h> #include <asm/reboot.h> @@ -120,6 +121,24 @@ void __init ar5312_arch_init_irq(void) irq_set_chained_handler(AR5312_IRQ_MISC, ar5312_misc_irq_handler); } +static struct physmap_flash_data ar5312_flash_data = { + .width = 2, +}; + +static struct resource ar5312_flash_resource = { + .start = AR5312_FLASH, + .end = AR5312_FLASH + 0x800000 - 1, + .flags = IORESOURCE_MEM, +}; + +static struct platform_device ar5312_physmap_flash = { + .name = "physmap-flash", + .id = 0, + .dev.platform_data = &ar5312_flash_data, + .resource = &ar5312_flash_resource, + .num_resources = 1, +}; + static struct resource ar5312_gpio_res[] = { { .name = "ar5312-gpio", @@ -138,13 +157,23 @@ static struct platform_device ar5312_gpio = { static void __init ar5312_flash_init(void) { - u32 ctl; + u32 ctl = ar231x_read_reg(AR5312_FLASHCTL0) & AR5312_FLASHCTL_MW; + + /* fixup flash width */ + switch (ctl) { + case AR5312_FLASHCTL_MW16: + ar5312_flash_data.width = 2; + break; + case AR5312_FLASHCTL_MW8: + default: + ar5312_flash_data.width = 1; + break; + } /* * Configure flash bank 0. * Assume 8M window size. Flash will be aliased if it's smaller */ - ctl = ar231x_read_reg(AR5312_FLASHCTL0) & AR5312_FLASHCTL_MW; ctl |= AR5312_FLASHCTL_E | AR5312_FLASHCTL_AC_8M | AR5312_FLASHCTL_RBLE; ctl |= 0x01 << AR5312_FLASHCTL_IDCY_S; ctl |= 0x07 << AR5312_FLASHCTL_WST1_S; @@ -191,6 +220,7 @@ void __init ar5312_init_devices(void) else ar231x_devtype = DEV_TYPE_AR5312; + platform_device_register(&ar5312_physmap_flash); platform_device_register(&ar5312_gpio); } -- 1.8.1.5