diff options
Diffstat (limited to 'arch/arm/mach-kirkwood/board-ts219.c')
-rw-r--r-- | arch/arm/mach-kirkwood/board-ts219.c | 87 |
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 | |||
32 | static struct mv643xx_eth_platform_data qnap_ts219_ge00_data = { | ||
33 | .phy_addr = MV643XX_ETH_PHY_ADDR(8), | ||
34 | }; | ||
35 | |||
36 | static struct mv_sata_platform_data qnap_ts219_sata_data = { | ||
37 | .n_ports = 2, | ||
38 | }; | ||
39 | |||
40 | static 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 | |||
62 | void __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? */ | ||
80 | static int __init ts219_pci_init(void) | ||
81 | { | ||
82 | if (machine_is_ts219()) | ||
83 | kirkwood_pcie_init(KW_PCIE0); | ||
84 | |||
85 | return 0; | ||
86 | } | ||
87 | subsys_initcall(ts219_pci_init); | ||