#include <linux/spi/flash.h>
#include <linux/mtd/mtd.h>
#include <linux/mtd/partitions.h>
static struct mtd_partition epc_partitions[] = {
[0] = {
.name = "epc-bootloader",
.offset = 0x0,
.size = 0x010000,
},
[1] = {
.name = "epc-nonvolperm",
.offset = 0x010000,
.size = 0x010000,
},
[2] = {
.name = "epc-firmware12",
.offset = 0x20000,
.size = 0x7C0000,
},
[3] = {
.name = "epc-firmware1",
.offset = 0x20000,
.size = 0x3E0000,
},
[4] = {
.name = "epc-firmware2",
.offset = 0x400000,
.size = 0x3E0000,
},
[5] = {
.name = "epc-nonvoldyn",
.offset = 0x7E0000,
.size = 0x20000,
},
[6] = {
.name = "epc-whole_flash",
.offset = 0x0,
.size = 0x800000,
},
};
static struct flash_platform_data hw556_spiflash_data = {
.parts = epc_partitions,
.nr_parts = ARRAY_SIZE(epc_partitions),
.max_transfer_len = SPI_6358_MSG_DATA_SIZE,
};
static struct spi_board_info hw556_spi_info[] = {
{
.bus_num = 0,
.chip_select = 1,
.mode = 0,
.max_speed_hz = 781000,
.modalias = "m25p80",
.platform_data = &hw556_spiflash_data,
},
};
static struct board_info __initdata board_HW556 = {
.name = "HW556",
.expected_cpu_id = 0x6358,
.has_uart0 = 1,
.has_pci = 1,
.has_ohci0 = 1,
.has_ehci0 = 1,
.num_usbh_ports = 2,
.has_caldata = 1,
.caldata = {
{
.caldata_offset = 0xe00000,
},
},
.has_enet1 = 1,
.enet1 = {
.has_phy = 1,
.phy_id = 0,
.force_speed_100 = 1,
.force_duplex_full = 1,
},
.leds = {
{
.name = "HW556:red:message",
.gpio = 0,
.active_low = 1,
},
{
.name = "HW556:red:hspa",
.gpio = 1,
.active_low = 1,
},
{
.name = "HW556:red:dsl",
.gpio = 2,
.active_low = 1,
},
{
.name = "HW556:red:power",
.gpio = 3,
.active_low = 1,
.default_trigger = "default-on",
},
{
.name = "HW556:red:all",
.gpio = 6,
.active_low = 1,
.default_trigger = "default-on",
},
},
.buttons = {
{
.desc = "help",
.gpio = 8,
.active_low = 1,
.type = EV_KEY,
.code = KEY_HELP,
.debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
},
{
.desc = "wlan",
.gpio = 9,
.active_low = 1,
.type = EV_KEY,
.code = KEY_WLAN,
.debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
},
{
.desc = "restart",
.gpio = 10,
.active_low = 1,
.type = EV_KEY,
.code = KEY_RESTART,
.debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
},
{
.desc = "reset",
.gpio = 11,
.active_low = 1,
.type = EV_KEY,
.code = KEY_CONFIG,
.debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
},
},
.spis = hw556_spi_info,
.num_spis = ARRAY_SIZE(hw556_spi_info),
};
static struct board_info __initdata board_HW556_A = {
.name = "HW556_A",
.expected_cpu_id = 0x6358,
.has_uart0 = 1,
.has_pci = 1,
.has_ohci0 = 1,
.has_ehci0 = 1,
.num_usbh_ports = 2,
.has_caldata = 1,
.caldata = {
{
.vendor = PCI_VENDOR_ID_RALINK,
.caldata_offset = 0xeffe00,
.slot = 1,
.eeprom = "rt2x00.eeprom",
},
},
.has_enet1 = 1,
.enet1 = {
.has_phy = 1,
.phy_id = 0,
.force_speed_100 = 1,
.force_duplex_full = 1,
},
.leds = {
{
.name = "HW556:green:lan1",
.gpio = 0,
.active_low = 1,
},
{
.name = "HW556:green:lan2",
.gpio = 1,
.active_low = 1,
},
{
.name = "HW556:red:dsl",
.gpio = 2,
.active_low = 1,
},
{
.name = "HW556:red:power",
.gpio = 3,
.active_low = 1,
.default_trigger = "default-on",
},
{
.name = "HW556:red:message",
.gpio = 12,
.active_low = 1,
},
{
.name = "HW556:red:lan1",
.gpio = 13,
.active_low = 1,
},
{
.name = "HW556:red:hspa",
.gpio = 15,
.active_low = 1,
},
{
.name = "HW556:red:lan2",
.gpio = 22,
.active_low = 1,
},
{
.name = "HW556:green:lan3",
.gpio = 23,
.active_low = 1,
},
{
.name = "HW556:red:lan3",
.gpio = 26,
.active_low = 1,
},
{
.name = "HW556:green:lan4",
.gpio = 27,
.active_low = 1,
},
{
.name = "HW556:red:lan4",
.gpio = 28,
.active_low = 1,
},
},
.buttons = {
{
.desc = "help",
.gpio = 8,
.active_low = 1,
.type = EV_KEY,
.code = KEY_HELP,
.debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
},
{
.desc = "wlan",
.gpio = 9,
.active_low = 1,
.type = EV_KEY,
.code = KEY_WLAN,
.debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
},
{
.desc = "restart",
.gpio = 10,
.active_low = 1,
.type = EV_KEY,
.code = KEY_RESTART,
.debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
},
{
.desc = "reset",
.gpio = 11,
.active_low = 1,
.type = EV_KEY,
.code = KEY_CONFIG,
.debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
},
},
.spis = hw556_spi_info,
.num_spis = ARRAY_SIZE(hw556_spi_info),
};
static struct board_info __initdata board_HW556_B = {
.name = "HW556_B",
.expected_cpu_id = 0x6358,
.has_uart0 = 1,
.has_pci = 1,
.has_ohci0 = 1,
.has_ehci0 = 1,
.num_usbh_ports = 2,
.has_caldata = 1,
.caldata = {
{
.vendor = PCI_VENDOR_ID_ATHEROS,
.caldata_offset = 0xf7e000,
.slot = 1,
.endian_check = 1,
.led_pin = 2,
},
},
.has_enet1 = 1,
.enet1 = {
.has_phy = 1,
.phy_id = 0,
.force_speed_100 = 1,
.force_duplex_full = 1,
},
.leds = {
{
.name = "HW556:red:message",
.gpio = 0,
.active_low = 1,
},
{
.name = "HW556:red:hspa",
.gpio = 1,
.active_low = 1,
},
{
.name = "HW556:red:dsl",
.gpio = 2,
.active_low = 1,
},
{
.name = "HW556:red:power",
.gpio = 3,
.active_low = 1,
.default_trigger = "default-on",
},
{
.name = "HW556:red:all",
.gpio = 6,
.active_low = 1,
.default_trigger = "default-on",
},
{
.name = "HW556:green:lan1",
.gpio = 12,
.active_low = 1,
},
{
.name = "HW556:red:lan1",
.gpio = 13,
.active_low = 1,
},
{
.name = "HW556:green:lan2",
.gpio = 15,
.active_low = 1,
},
{
.name = "HW556:red:lan2",
.gpio = 22,
.active_low = 1,
},
{
.name = "HW556:green:lan3",
.gpio = 23,
.active_low = 1,
},
{
.name = "HW556:red:lan3",
.gpio = 26,
.active_low = 1,
},
{
.name = "HW556:green:lan4",
.gpio = 27,
.active_low = 1,
},
{
.name = "HW556:red:lan4",
.gpio = 28,
.active_low = 1,
},
},
.buttons = {
{
.desc = "help",
.gpio = 8,
.active_low = 1,
.type = EV_KEY,
.code = KEY_HELP,
.debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
},
{
.desc = "wlan",
.gpio = 9,
.active_low = 1,
.type = EV_KEY,
.code = KEY_WLAN,
.debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
},
{
.desc = "restart",
.gpio = 10,
.active_low = 1,
.type = EV_KEY,
.code = KEY_RESTART,
.debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
},
{
.desc = "reset",
.gpio = 11,
.active_low = 1,
.type = EV_KEY,
.code = KEY_CONFIG,
.debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
},
},
.spis = hw556_spi_info,
.num_spis = ARRAY_SIZE(hw556_spi_info),
};
static struct board_info __initdata board_HW556_C = {
.name = "HW556_C",
.expected_cpu_id = 0x6358,
.has_uart0 = 1,
.has_pci = 1,
.has_ohci0 = 1,
.has_ehci0 = 1,
.num_usbh_ports = 2,
.has_caldata = 1,
.caldata = {
{
.vendor = PCI_VENDOR_ID_ATHEROS,
.caldata_offset = 0xefe000,
.slot = 1,
.endian_check = 1,
.led_pin = 2,
},
},
.has_enet1 = 1,
.enet1 = {
.has_phy = 1,
.phy_id = 0,
.force_speed_100 = 1,
.force_duplex_full = 1,
},
.leds = {
{
.name = "HW556:red:message",
.gpio = 0,
.active_low = 1,
},
{
.name = "HW556:red:hspa",
.gpio = 1,
.active_low = 1,
},
{
.name = "HW556:red:dsl",
.gpio = 2,
.active_low = 1,
},
{
.name = "HW556:red:power",
.gpio = 3,
.active_low = 1,
.default_trigger = "default-on",
},
{
.name = "HW556:red:all",
.gpio = 6,
.active_low = 1,
.default_trigger = "default-on",
},
{
.name = "HW556:green:lan1",
.gpio = 12,
.active_low = 1,
},
{
.name = "HW556:red:lan1",
.gpio = 13,
.active_low = 1,
},
{
.name = "HW556:green:lan2",
.gpio = 15,
.active_low = 1,
},
{
.name = "HW556:red:lan2",
.gpio = 22,
.active_low = 1,
},
{
.name = "HW556:green:lan3",
.gpio = 23,
.active_low = 1,
},
{
.name = "HW556:red:lan3",
.gpio = 26,
.active_low = 1,
},
{
.name = "HW556:green:lan4",
.gpio = 27,
.active_low = 1,
},
{
.name = "HW556:red:lan4",
.gpio = 28,
.active_low = 1,
},
},
.buttons = {
{
.desc = "help",
.gpio = 8,
.active_low = 1,
.type = EV_KEY,
.code = KEY_HELP,
.debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
},
{
.desc = "wlan",
.gpio = 9,
.active_low = 1,
.type = EV_KEY,
.code = KEY_WLAN,
.debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
},
{
.desc = "restart",
.gpio = 10,
.active_low = 1,
.type = EV_KEY,
.code = KEY_RESTART,
.debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
},
{
.desc = "reset",
.gpio = 11,
.active_low = 1,
.type = EV_KEY,
.code = KEY_CONFIG,
.debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
},
},
.spis = hw556_spi_info,
.num_spis = ARRAY_SIZE(hw556_spi_info),
};