blob: 283ab611e8da1344d1372180e7ed8b2a1e8dc014 [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 Shitritb2b3dc2f2008-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);
Andrew Lunn98adf9322012-10-20 13:23:16 +020050void kirkwood_nand_init_rnb(struct mtd_partition *parts, int nr_parts,
51 int (*dev_ready)(struct mtd_info *));
apatard@mandriva.com49106c72010-05-31 13:49:12 +020052void kirkwood_audio_init(void);
Russell Kingcb15dff2011-11-05 10:03:47 +000053void kirkwood_restart(char, const char *);
Andrew Lunn2f129bf2011-12-15 08:15:07 +010054void kirkwood_clk_init(void);
Saeed Bishara651c74c2008-06-22 22:45:06 +020055
Jason Cooper6fa6b872012-03-15 00:52:31 +000056/* board init functions for boards not fully converted to fdt */
57#ifdef CONFIG_MACH_DREAMPLUG_DT
58void dreamplug_init(void);
59#else
60static inline void dreamplug_init(void) {};
61#endif
Andrew Lunn9eb61f42012-05-12 14:57:59 +020062#ifdef CONFIG_MACH_TS219_DT
63void qnap_dt_ts219_init(void);
64#else
65static inline void qnap_dt_ts219_init(void) {};
66#endif
Jason Cooper6fa6b872012-03-15 00:52:31 +000067
Jamie Lentin9007d102012-04-18 11:06:40 +010068#ifdef CONFIG_MACH_DLINK_KIRKWOOD_DT
69void dnskw_init(void);
70#else
71static inline void dnskw_init(void) {};
72#endif
73
Arnaud Patard (Rtp)c06cd9b2012-04-18 23:16:41 +020074#ifdef CONFIG_MACH_ICONNECT_DT
75void iconnect_init(void);
76#else
77static inline void iconnect_init(void) {};
78#endif
79
Simon Baatzf5520362012-04-30 23:55:17 +020080#ifdef CONFIG_MACH_IB62X0_DT
81void ib62x0_init(void);
82#else
83static inline void ib62x0_init(void) {};
84#endif
85
Sebastian Hesselbarthdd88db72012-08-14 22:43:41 +020086#ifdef CONFIG_MACH_DOCKSTAR_DT
87void dockstar_dt_init(void);
88#else
89static inline void dockstar_dt_init(void) {};
90#endif
91
Josh Coombs5136b2a2012-07-16 11:52:50 +020092#ifdef CONFIG_MACH_GOFLEXNET_DT
93void goflexnet_init(void);
94#else
95static inline void goflexnet_init(void) {};
96#endif
97
Michael Walle4aff38a2012-07-17 07:25:55 +020098#ifdef CONFIG_MACH_LSXL_DT
99void lsxl_init(void);
100#else
101static inline void lsxl_init(void) {};
102#endif
103
Alan M Butler4f48b7f2012-08-20 15:29:07 +0100104#ifdef CONFIG_MACH_IOMEGA_IX2_200_DT
105void iomega_ix2_200_init(void);
106#else
107static inline void iomega_ix2_200_init(void) {};
108#endif
109
Valentin Longchamp0510c8a2012-09-04 11:55:02 +0200110#ifdef CONFIG_MACH_KM_KIRKWOOD_DT
111void km_kirkwood_init(void);
112#else
113static inline void km_kirkwood_init(void) {};
114#endif
115
Stefan Peter5492a112012-11-18 16:46:16 +0100116#ifdef CONFIG_MACH_MPLCEC4_DT
117void mplcec4_init(void);
118#else
119static inline void mplcec4_init(void) {};
120#endif
121
Simon Guinotecee1e42012-10-17 12:09:04 +0200122#if defined(CONFIG_MACH_INETSPACE_V2_DT) || \
123 defined(CONFIG_MACH_NETSPACE_V2_DT) || \
Simon Guinotca7d9452012-10-17 12:09:05 +0200124 defined(CONFIG_MACH_NETSPACE_MAX_V2_DT) || \
Simon Guinot7f9871d2012-10-17 12:09:06 +0200125 defined(CONFIG_MACH_NETSPACE_LITE_V2_DT) || \
126 defined(CONFIG_MACH_NETSPACE_MINI_V2_DT)
Simon Guinotecee1e42012-10-17 12:09:04 +0200127void ns2_init(void);
128#else
129static inline void ns2_init(void) {};
130#endif
131
Tero Jaaskoafcad882012-10-26 18:56:16 +0300132#ifdef CONFIG_MACH_NSA310_DT
133void nsa310_init(void);
134#else
135static inline void nsa310_init(void) {};
136#endif
137
Nobuhiro Iwamatsuf17073a2012-11-13 16:43:09 +0900138#ifdef CONFIG_MACH_OPENBLOCKS_A6_DT
139void openblocks_a6_init(void);
140#else
141static inline void openblocks_a6_init(void) {};
142#endif
143
Jason Cooper767fc1e2012-10-22 02:15:35 +0000144#ifdef CONFIG_MACH_TOPKICK_DT
145void usi_topkick_init(void);
146#else
147static inline void usi_topkick_init(void) {};
148#endif
149
Jason Cooper6fa6b872012-03-15 00:52:31 +0000150/* early init functions not converted to fdt yet */
Jason Cooper2b45e052012-02-29 17:39:08 +0000151char *kirkwood_id(void);
152void kirkwood_l2_init(void);
Jason Cooper2b45e052012-02-29 17:39:08 +0000153void kirkwood_wdt_init(void);
154void kirkwood_xor0_init(void);
155void kirkwood_xor1_init(void);
156void kirkwood_crypto_init(void);
157
Martin Michlmayr586dcf22009-03-22 15:22:11 +0100158extern int kirkwood_tclk;
Stephen Warren6bb27d72012-11-08 12:40:59 -0700159extern void kirkwood_timer_init(void);
Saeed Bishara651c74c2008-06-22 22:45:06 +0200160
Nicolas Pitrefb7b2d32009-06-01 15:36:36 -0400161#define ARRAY_AND_SIZE(x) (x), ARRAY_SIZE(x)
Saeed Bishara651c74c2008-06-22 22:45:06 +0200162
163#endif