mirror of https://github.com/hak5/openwrt-owl.git
167 lines
4.4 KiB
Diff
167 lines
4.4 KiB
Diff
From ec6ba0f79c010a878d679c057fb6306b50a201b0 Mon Sep 17 00:00:00 2001
|
|
From: John Crispin <blogic@openwrt.org>
|
|
Date: Thu, 11 Aug 2011 14:09:35 +0200
|
|
Subject: [PATCH 08/24] MIPS: lantiq: add support for the EASY98000 evaluation
|
|
board
|
|
|
|
This patch adds the machine code for the EASY9800 evaluation board.
|
|
|
|
Signed-off-by: Thomas Langer <thomas.langer@lantiq.com>
|
|
Signed-off-by: John Crispin <blogic@openwrt.org>
|
|
Cc: linux-mips@linux-mips.org
|
|
---
|
|
arch/mips/lantiq/falcon/Kconfig | 11 +++
|
|
arch/mips/lantiq/falcon/Makefile | 1 +
|
|
arch/mips/lantiq/falcon/mach-easy98000.c | 110 ++++++++++++++++++++++++++++++
|
|
arch/mips/lantiq/machtypes.h | 5 ++
|
|
4 files changed, 127 insertions(+), 0 deletions(-)
|
|
create mode 100644 arch/mips/lantiq/falcon/Kconfig
|
|
create mode 100644 arch/mips/lantiq/falcon/mach-easy98000.c
|
|
|
|
--- /dev/null
|
|
+++ b/arch/mips/lantiq/falcon/Kconfig
|
|
@@ -0,0 +1,11 @@
|
|
+if SOC_FALCON
|
|
+
|
|
+menu "MIPS Machine"
|
|
+
|
|
+config LANTIQ_MACH_EASY98000
|
|
+ bool "Easy98000"
|
|
+ default y
|
|
+
|
|
+endmenu
|
|
+
|
|
+endif
|
|
--- a/arch/mips/lantiq/falcon/Makefile
|
|
+++ b/arch/mips/lantiq/falcon/Makefile
|
|
@@ -1 +1,2 @@
|
|
obj-y := clk.o prom.o reset.o sysctrl.o devices.o gpio.o
|
|
+obj-$(CONFIG_LANTIQ_MACH_EASY98000) += mach-easy98000.o
|
|
--- /dev/null
|
|
+++ b/arch/mips/lantiq/falcon/mach-easy98000.c
|
|
@@ -0,0 +1,110 @@
|
|
+/*
|
|
+ * This program is free software; you can redistribute it and/or modify it
|
|
+ * under the terms of the GNU General Public License version 2 as published
|
|
+ * by the Free Software Foundation.
|
|
+ *
|
|
+ * Copyright (C) 2011 Thomas Langer <thomas.langer@lantiq.com>
|
|
+ * Copyright (C) 2011 John Crispin <blogic@openwrt.org>
|
|
+ */
|
|
+
|
|
+#include <linux/platform_device.h>
|
|
+#include <linux/mtd/partitions.h>
|
|
+#include <linux/spi/spi.h>
|
|
+#include <linux/spi/spi_gpio.h>
|
|
+#include <linux/spi/eeprom.h>
|
|
+
|
|
+#include "../machtypes.h"
|
|
+
|
|
+#include "devices.h"
|
|
+
|
|
+static struct mtd_partition easy98000_nor_partitions[] = {
|
|
+ {
|
|
+ .name = "uboot",
|
|
+ .offset = 0x0,
|
|
+ .size = 0x40000,
|
|
+ },
|
|
+ {
|
|
+ .name = "uboot_env",
|
|
+ .offset = 0x40000,
|
|
+ .size = 0x40000, /* 2 sectors for redundant env. */
|
|
+ },
|
|
+ {
|
|
+ .name = "linux",
|
|
+ .offset = 0x80000,
|
|
+ .size = 0xF80000, /* map only 16 MiB */
|
|
+ },
|
|
+};
|
|
+
|
|
+struct physmap_flash_data easy98000_nor_flash_data = {
|
|
+ .nr_parts = ARRAY_SIZE(easy98000_nor_partitions),
|
|
+ .parts = easy98000_nor_partitions,
|
|
+};
|
|
+
|
|
+/* setup gpio based spi bus/device for access to the eeprom on the board */
|
|
+#define SPI_GPIO_MRST 102
|
|
+#define SPI_GPIO_MTSR 103
|
|
+#define SPI_GPIO_CLK 104
|
|
+#define SPI_GPIO_CS0 105
|
|
+#define SPI_GPIO_CS1 106
|
|
+#define SPI_GPIO_BUS_NUM 1
|
|
+
|
|
+static struct spi_gpio_platform_data easy98000_spi_gpio_data = {
|
|
+ .sck = SPI_GPIO_CLK,
|
|
+ .mosi = SPI_GPIO_MTSR,
|
|
+ .miso = SPI_GPIO_MRST,
|
|
+ .num_chipselect = 2,
|
|
+};
|
|
+
|
|
+static struct platform_device easy98000_spi_gpio_device = {
|
|
+ .name = "spi_gpio",
|
|
+ .id = SPI_GPIO_BUS_NUM,
|
|
+ .dev.platform_data = &easy98000_spi_gpio_data,
|
|
+};
|
|
+
|
|
+static struct spi_eeprom at25160n = {
|
|
+ .byte_len = 16 * 1024 / 8,
|
|
+ .name = "at25160n",
|
|
+ .page_size = 32,
|
|
+ .flags = EE_ADDR2,
|
|
+};
|
|
+
|
|
+static struct spi_board_info easy98000_spi_gpio_devices __initdata = {
|
|
+ .modalias = "at25",
|
|
+ .bus_num = SPI_GPIO_BUS_NUM,
|
|
+ .max_speed_hz = 1000 * 1000,
|
|
+ .mode = SPI_MODE_3,
|
|
+ .chip_select = 1,
|
|
+ .controller_data = (void *) SPI_GPIO_CS1,
|
|
+ .platform_data = &at25160n,
|
|
+};
|
|
+
|
|
+static void __init
|
|
+easy98000_init_common(void)
|
|
+{
|
|
+ spi_register_board_info(&easy98000_spi_gpio_devices, 1);
|
|
+ platform_device_register(&easy98000_spi_gpio_device);
|
|
+}
|
|
+
|
|
+static void __init
|
|
+easy98000_init(void)
|
|
+{
|
|
+ easy98000_init_common();
|
|
+ ltq_register_nor(&easy98000_nor_flash_data);
|
|
+}
|
|
+
|
|
+static void __init
|
|
+easy98000nand_init(void)
|
|
+{
|
|
+ easy98000_init_common();
|
|
+ falcon_register_nand();
|
|
+}
|
|
+
|
|
+MIPS_MACHINE(LANTIQ_MACH_EASY98000,
|
|
+ "EASY98000",
|
|
+ "EASY98000 Eval Board",
|
|
+ easy98000_init);
|
|
+
|
|
+MIPS_MACHINE(LANTIQ_MACH_EASY98000NAND,
|
|
+ "EASY98000NAND",
|
|
+ "EASY98000 Eval Board (NAND Flash)",
|
|
+ easy98000nand_init);
|
|
--- a/arch/mips/lantiq/machtypes.h
|
|
+++ b/arch/mips/lantiq/machtypes.h
|
|
@@ -15,6 +15,11 @@ enum lantiq_mach_type {
|
|
LTQ_MACH_GENERIC = 0,
|
|
LTQ_MACH_EASY50712, /* Danube evaluation board */
|
|
LTQ_MACH_EASY50601, /* Amazon SE evaluation board */
|
|
+
|
|
+ /* FALCON */
|
|
+ LANTIQ_MACH_EASY98000, /* Falcon Eval Board, NOR Flash */
|
|
+ LANTIQ_MACH_EASY98000SF, /* Falcon Eval Board, Serial Flash */
|
|
+ LANTIQ_MACH_EASY98000NAND, /* Falcon Eval Board, NAND Flash */
|
|
};
|
|
|
|
#endif
|