aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-kirkwood/board-ts219.c
diff options
context:
space:
mode:
authorAndrew Lunn <andrew@lunn.ch>2012-05-12 08:57:59 -0400
committerAndrew Lunn <andrew@lunn.ch>2012-07-27 10:48:52 -0400
commit9eb61f473601c047a4c0c84269d0c25493e45277 (patch)
tree2d86f210620e5637f1a95ed7c633a5a10c7b4555 /arch/arm/mach-kirkwood/board-ts219.c
parent97b414e119ccc7216e29c3bd62fe1a1797f21404 (diff)
ARM: Kirkwood: Add basic device tree support for QNAP TS219.
The two different variants of QNAP TS devices, varying by SoC, put the GPIO keys on different GPIO lines. Hence we need two different DT board descriptions, which share the same board-ts219.c file. Signed-off-by: Andrew Lunn <andrew@lunn.ch> Acked-by: Jason Cooper <jason@lakedaemon.net>
Diffstat (limited to 'arch/arm/mach-kirkwood/board-ts219.c')
-rw-r--r--arch/arm/mach-kirkwood/board-ts219.c87
1 files changed, 87 insertions, 0 deletions
diff --git a/arch/arm/mach-kirkwood/board-ts219.c b/arch/arm/mach-kirkwood/board-ts219.c
new file mode 100644
index 000000000000..00b79eaeef53
--- /dev/null
+++ b/arch/arm/mach-kirkwood/board-ts219.c
@@ -0,0 +1,87 @@
1/*
2 *
3 * QNAP TS-11x/TS-21x Turbo NAS Board Setup via DT
4 *
5 * Copyright (C) 2012 Andrew Lunn <andrew@lunn.ch>
6 *
7 * Based on the board file ts219-setup.c:
8 *
9 * Copyright (C) 2009 Martin Michlmayr <tbm@cyrius.com>
10 * Copyright (C) 2008 Byron Bradley <byron.bbradley@gmail.com>
11 *
12 * This program is free software; you can redistribute it and/or
13 * modify it under the terms of the GNU General Public License
14 * as published by the Free Software Foundation; either version
15 * 2 of the License, or (at your option) any later version.
16 */
17
18#include <linux/kernel.h>
19#include <linux/init.h>
20#include <linux/platform_device.h>
21#include <linux/mv643xx_eth.h>
22#include <linux/ata_platform.h>
23#include <linux/gpio_keys.h>
24#include <linux/input.h>
25#include <asm/mach-types.h>
26#include <asm/mach/arch.h>
27#include <mach/kirkwood.h>
28#include "common.h"
29#include "mpp.h"
30#include "tsx1x-common.h"
31
32static struct mv643xx_eth_platform_data qnap_ts219_ge00_data = {
33 .phy_addr = MV643XX_ETH_PHY_ADDR(8),
34};
35
36static struct mv_sata_platform_data qnap_ts219_sata_data = {
37 .n_ports = 2,
38};
39
40static unsigned int qnap_ts219_mpp_config[] __initdata = {
41 MPP0_SPI_SCn,
42 MPP1_SPI_MOSI,
43 MPP2_SPI_SCK,
44 MPP3_SPI_MISO,
45 MPP4_SATA1_ACTn,
46 MPP5_SATA0_ACTn,
47 MPP8_TW0_SDA,
48 MPP9_TW0_SCK,
49 MPP10_UART0_TXD,
50 MPP11_UART0_RXD,
51 MPP13_UART1_TXD, /* PIC controller */
52 MPP14_UART1_RXD, /* PIC controller */
53 MPP15_GPIO, /* USB Copy button (on devices with 88F6281) */
54 MPP16_GPIO, /* Reset button (on devices with 88F6281) */
55 MPP36_GPIO, /* RAM: 0: 256 MB, 1: 512 MB */
56 MPP37_GPIO, /* Reset button (on devices with 88F6282) */
57 MPP43_GPIO, /* USB Copy button (on devices with 88F6282) */
58 MPP44_GPIO, /* Board ID: 0: TS-11x, 1: TS-21x */
59 0
60};
61
62void __init qnap_dt_ts219_init(void)
63{
64 u32 dev, rev;
65
66 kirkwood_mpp_conf(qnap_ts219_mpp_config);
67
68 kirkwood_pcie_id(&dev, &rev);
69 if (dev == MV88F6282_DEV_ID)
70 qnap_ts219_ge00_data.phy_addr = MV643XX_ETH_PHY_ADDR(0);
71
72 kirkwood_ge00_init(&qnap_ts219_ge00_data);
73 kirkwood_sata_init(&qnap_ts219_sata_data);
74 kirkwood_ehci_init();
75
76 pm_power_off = qnap_tsx1x_power_off;
77}
78
79/* FIXME: Will not work with DT. Maybe use MPP40_GPIO? */
80static int __init ts219_pci_init(void)
81{
82 if (machine_is_ts219())
83 kirkwood_pcie_init(KW_PCIE0);
84
85 return 0;
86}
87subsys_initcall(ts219_pci_init);