blob: bcffd7ca1ca21d13921c388bdfb19ec3a1a5e21f [file] [log] [blame]
Saeed Bishara651c74c2008-06-22 22:45:06 +02001/*
2 * arch/arm/mach-kirkwood/common.h
3 *
4 * Core functions for Marvell Kirkwood SoCs
5 *
6 * This file is licensed under the terms of the GNU General Public
7 * License version 2. This program is licensed "as is" without any
8 * warranty of any kind, whether express or implied.
9 */
10
11#ifndef __ARCH_KIRKWOOD_COMMON_H
12#define __ARCH_KIRKWOOD_COMMON_H
13
Lennert Buytenhekdcf1cec2008-09-25 16:23:48 +020014struct dsa_platform_data;
Saeed Bishara651c74c2008-06-22 22:45:06 +020015struct mv643xx_eth_platform_data;
16struct mv_sata_platform_data;
Nicolas Pitre8235ee02009-02-14 03:15:55 -050017struct mvsdio_platform_data;
Nicolas Pitrefb7b2d32009-06-01 15:36:36 -040018struct mtd_partition;
Ben Dooks010937e2010-04-20 10:26:19 +010019struct mtd_info;
apatard@mandriva.com49106c72010-05-31 13:49:12 +020020struct kirkwood_asoc_platform_data;
Saeed Bishara651c74c2008-06-22 22:45:06 +020021
Saeed Bisharaffd58bd2010-06-08 14:21:34 +030022#define KW_PCIE0 (1 << 0)
23#define KW_PCIE1 (1 << 1)
24
Saeed Bishara651c74c2008-06-22 22:45:06 +020025/*
26 * Basic Kirkwood init functions used early by machine-setup.
27 */
28void kirkwood_map_io(void);
29void kirkwood_init(void);
Lennert Buytenhek4ee1f6b2010-10-15 16:50:26 +020030void kirkwood_init_early(void);
Saeed Bishara651c74c2008-06-22 22:45:06 +020031void kirkwood_init_irq(void);
32
Saeed Bishara651c74c2008-06-22 22:45:06 +020033void kirkwood_setup_cpu_mbus(void);
Saeed Bishara651c74c2008-06-22 22:45:06 +020034
Eric Cooper0e0cdd32011-02-02 17:16:10 -050035void kirkwood_enable_pcie(void);
Ronen Shitritb2b3dc22008-09-15 10:40:35 +030036void kirkwood_pcie_id(u32 *dev, u32 *rev);
37
Saeed Bishara651c74c2008-06-22 22:45:06 +020038void kirkwood_ehci_init(void);
39void kirkwood_ge00_init(struct mv643xx_eth_platform_data *eth_data);
Ronen Shitritd15fb9e2008-10-19 23:10:14 +020040void kirkwood_ge01_init(struct mv643xx_eth_platform_data *eth_data);
Lennert Buytenhekdcf1cec2008-09-25 16:23:48 +020041void kirkwood_ge00_switch_init(struct dsa_platform_data *d, int irq);
Saeed Bisharaffd58bd2010-06-08 14:21:34 +030042void kirkwood_pcie_init(unsigned int portmask);
Saeed Bishara651c74c2008-06-22 22:45:06 +020043void kirkwood_sata_init(struct mv_sata_platform_data *sata_data);
Nicolas Pitre8235ee02009-02-14 03:15:55 -050044void kirkwood_sdio_init(struct mvsdio_platform_data *mvsdio_data);
Lennert Buytenhek18365d12008-08-09 15:38:18 +020045void kirkwood_spi_init(void);
Martin Michlmayr6574e002009-03-23 19:13:21 +010046void kirkwood_i2c_init(void);
Saeed Bishara651c74c2008-06-22 22:45:06 +020047void kirkwood_uart0_init(void);
48void kirkwood_uart1_init(void);
Nicolas Pitrefb7b2d32009-06-01 15:36:36 -040049void kirkwood_nand_init(struct mtd_partition *parts, int nr_parts, int delay);
Ben Dooks010937e2010-04-20 10:26:19 +010050void kirkwood_nand_init_rnb(struct mtd_partition *parts, int nr_parts, int (*dev_ready)(struct mtd_info *));
apatard@mandriva.com49106c72010-05-31 13:49:12 +020051void kirkwood_audio_init(void);
Russell Kingcb15dff2011-11-05 10:03:47 +000052void kirkwood_restart(char, const char *);
Andrew Lunn2f129bf2011-12-15 08:15:07 +010053void kirkwood_clk_init(void);
Saeed Bishara651c74c2008-06-22 22:45:06 +020054
Jason Cooper6fa6b872012-03-15 00:52:31 +000055/* board init functions for boards not fully converted to fdt */
56#ifdef CONFIG_MACH_DREAMPLUG_DT
57void dreamplug_init(void);
58#else
59static inline void dreamplug_init(void) {};
60#endif
Andrew Lunn9eb61f42012-05-12 14:57:59 +020061#ifdef CONFIG_MACH_TS219_DT
62void qnap_dt_ts219_init(void);
63#else
64static inline void qnap_dt_ts219_init(void) {};
65#endif
Jason Cooper6fa6b872012-03-15 00:52:31 +000066
Jamie Lentin9007d102012-04-18 11:06:40 +010067#ifdef CONFIG_MACH_DLINK_KIRKWOOD_DT
68void dnskw_init(void);
69#else
70static inline void dnskw_init(void) {};
71#endif
72
Arnaud Patard (Rtp)c06cd9b2012-04-18 23:16:41 +020073#ifdef CONFIG_MACH_ICONNECT_DT
74void iconnect_init(void);
75#else
76static inline void iconnect_init(void) {};
77#endif
78
Simon Baatzf5520362012-04-30 23:55:17 +020079#ifdef CONFIG_MACH_IB62X0_DT
80void ib62x0_init(void);
81#else
82static inline void ib62x0_init(void) {};
83#endif
84
Sebastian Hesselbarthdd88db72012-08-14 22:43:41 +020085#ifdef CONFIG_MACH_DOCKSTAR_DT
86void dockstar_dt_init(void);
87#else
88static inline void dockstar_dt_init(void) {};
89#endif
90
Josh Coombs5136b2a2012-07-16 11:52:50 +020091#ifdef CONFIG_MACH_GOFLEXNET_DT
92void goflexnet_init(void);
93#else
94static inline void goflexnet_init(void) {};
95#endif
96
Michael Walle4aff38a2012-07-17 07:25:55 +020097#ifdef CONFIG_MACH_LSXL_DT
98void lsxl_init(void);
99#else
100static inline void lsxl_init(void) {};
101#endif
102
Alan M Butler4f48b7f2012-08-20 15:29:07 +0100103#ifdef CONFIG_MACH_IOMEGA_IX2_200_DT
104void iomega_ix2_200_init(void);
105#else
106static inline void iomega_ix2_200_init(void) {};
107#endif
108
Valentin Longchamp0510c8a2012-09-04 11:55:02 +0200109#ifdef CONFIG_MACH_KM_KIRKWOOD_DT
110void km_kirkwood_init(void);
111#else
112static inline void km_kirkwood_init(void) {};
113#endif
114
Jason Cooper6fa6b872012-03-15 00:52:31 +0000115/* early init functions not converted to fdt yet */
Jason Cooper2b45e052012-02-29 17:39:08 +0000116char *kirkwood_id(void);
117void kirkwood_l2_init(void);
Jason Cooper2b45e052012-02-29 17:39:08 +0000118void kirkwood_wdt_init(void);
119void kirkwood_xor0_init(void);
120void kirkwood_xor1_init(void);
121void kirkwood_crypto_init(void);
122
Martin Michlmayr586dcf22009-03-22 15:22:11 +0100123extern int kirkwood_tclk;
Saeed Bishara651c74c2008-06-22 22:45:06 +0200124extern struct sys_timer kirkwood_timer;
125
Nicolas Pitrefb7b2d32009-06-01 15:36:36 -0400126#define ARRAY_AND_SIZE(x) (x), ARRAY_SIZE(x)
Saeed Bishara651c74c2008-06-22 22:45:06 +0200127
128#endif