summaryrefslogtreecommitdiffstats
path: root/target/linux/adm8668/files/arch/mips/adm8668/platform.c
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/adm8668/files/arch/mips/adm8668/platform.c')
-rw-r--r--target/linux/adm8668/files/arch/mips/adm8668/platform.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/target/linux/adm8668/files/arch/mips/adm8668/platform.c b/target/linux/adm8668/files/arch/mips/adm8668/platform.c
index 5030565a2c..264eaf4858 100644
--- a/target/linux/adm8668/files/arch/mips/adm8668/platform.c
+++ b/target/linux/adm8668/files/arch/mips/adm8668/platform.c
@@ -1,4 +1,6 @@
/*
+ * Infineon/ADMTek 8668 (WildPass) platform devices support
+ *
* Copyright (C) 2010 Scott Nicholas <neutronscott@scottn.us>
* Copyright (C) 2012 Florian Fainelli <florian@openwrt.org>
*
@@ -11,6 +13,7 @@
#include <linux/kernel.h>
#include <linux/platform_device.h>
#include <linux/mtd/physmap.h>
+#include <linux/mtd/partitions.h>
#include <linux/pci.h>
#include <linux/slab.h>
#include <linux/ioport.h>
@@ -89,9 +92,33 @@ static struct platform_device adm8668_eth1_device = {
.num_resources = ARRAY_SIZE(eth1_resources),
};
+static const char *nor_probe_types[] = { "adm8668part", NULL };
+
+static struct physmap_flash_data nor_flash_data = {
+ .width = 2,
+ .part_probe_types = nor_probe_types,
+};
+
+static struct resource nor_resources[] = {
+ {
+ .start = ADM8668_SMEM1_BASE,
+ .end = ADM8668_SMEM1_BASE + 0x800000 - 1,
+ .flags = IORESOURCE_MEM,
+ },
+};
+
+static struct platform_device adm8668_nor_device = {
+ .name = "physmap-flash",
+ .id = -1,
+ .resource = nor_resources,
+ .num_resources = ARRAY_SIZE(nor_resources),
+ .dev.platform_data = &nor_flash_data,
+};
+
static struct platform_device *adm8668_devs[] = {
&adm8668_eth0_device,
&adm8668_eth1_device,
+ &adm8668_nor_device,
};
int __devinit adm8668_devs_register(void)