diff options
-rw-r--r-- | target/linux/ar71xx/files/arch/mips/ar71xx/mach-ap81.c | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/target/linux/ar71xx/files/arch/mips/ar71xx/mach-ap81.c b/target/linux/ar71xx/files/arch/mips/ar71xx/mach-ap81.c index 5a48dffa4d..98a319aa7a 100644 --- a/target/linux/ar71xx/files/arch/mips/ar71xx/mach-ap81.c +++ b/target/linux/ar71xx/files/arch/mips/ar71xx/mach-ap81.c @@ -9,6 +9,11 @@ * by the Free Software Foundation. */ +#include <linux/platform_device.h> +#include <linux/mtd/mtd.h> +#include <linux/mtd/partitions.h> +#include <linux/spi/spi.h> +#include <linux/spi/flash.h> #include <linux/input.h> #include <asm/mips_machine.h> @@ -21,6 +26,51 @@ #define AP81_BUTTONS_POLL_INTERVAL 20 +#ifdef CONFIG_MTD_PARTITIONS +static struct mtd_partition ap81_partitions[] = { + { + .name = "u-boot", + .offset = 0, + .size = 0x040000, + .mask_flags = MTD_WRITEABLE, + } , { + .name = "u-boot-env", + .offset = 0x040000, + .size = 0x010000, + } , { + .name = "rootfs", + .offset = 0x050000, + .size = 0x500000, + } , { + .name = "uImage", + .offset = 0x550000, + .size = 0x100000, + } , { + .name = "ART", + .offset = 0x650000, + .size = 0x1b0000, + .mask_flags = MTD_WRITEABLE, + } +}; +#endif /* CONFIG_MTD_PARTITIONS */ + +static struct flash_platform_data ap81_flash_data = { +#ifdef CONFIG_MTD_PARTITIONS + .parts = ap81_partitions, + .nr_parts = ARRAY_SIZE(ap81_partitions), +#endif +}; + +static struct spi_board_info ap81_spi_info[] = { + { + .bus_num = 0, + .chip_select = 0, + .max_speed_hz = 25000000, + .modalias = "m25p80", + .platform_data = &ap81_flash_data, + } +}; + static struct gpio_button ap81_gpio_buttons[] __initdata = { { .desc = "sw1", @@ -57,6 +107,9 @@ static void __init ap81_setup(void) ar71xx_add_device_usb(); + ar71xx_add_device_spi(NULL, ap81_spi_info, + ARRAY_SIZE(ap81_spi_info)); + ar71xx_add_device_gpio_buttons(-1, AP81_BUTTONS_POLL_INTERVAL, ARRAY_SIZE(ap81_gpio_buttons), ap81_gpio_buttons); |