blob: 9c6d3d4f9a23ab43d4ba7a1fb58624a0b774b8b4 [file] [log] [blame]
Jean-Christophe PLAGNIOL-VILLARD21d08b92011-04-23 15:28:34 +08001/*
2 * Copyright (C) 2011 Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
3 *
4 * Under GPLv2
5 */
6
Jean-Christophe PLAGNIOL-VILLARD8c3583b2011-04-23 22:12:57 +08007struct at91_init_soc {
Jean-Christophe PLAGNIOL-VILLARD8d39e0fd02012-08-16 17:36:55 +08008 int builtin;
Jean-Christophe PLAGNIOL-VILLARD92100c12011-04-23 15:28:34 +08009 unsigned int *default_irq_priority;
Jean-Christophe PLAGNIOL-VILLARD21d08b92011-04-23 15:28:34 +080010 void (*map_io)(void);
Jean-Christophe PLAGNIOL-VILLARDcfa5a1f2011-10-14 01:17:18 +080011 void (*ioremap_registers)(void);
Jean-Christophe PLAGNIOL-VILLARD51ddec72011-04-24 18:15:34 +080012 void (*register_clocks)(void);
Jean-Christophe PLAGNIOL-VILLARD46539372011-04-24 18:20:28 +080013 void (*init)(void);
Jean-Christophe PLAGNIOL-VILLARD21d08b92011-04-23 15:28:34 +080014};
15
Jean-Christophe PLAGNIOL-VILLARD8c3583b2011-04-23 22:12:57 +080016extern struct at91_init_soc at91_boot_soc;
Jean-Christophe PLAGNIOL-VILLARD8c3583b2011-04-23 22:12:57 +080017extern struct at91_init_soc at91rm9200_soc;
18extern struct at91_init_soc at91sam9260_soc;
19extern struct at91_init_soc at91sam9261_soc;
20extern struct at91_init_soc at91sam9263_soc;
21extern struct at91_init_soc at91sam9g45_soc;
22extern struct at91_init_soc at91sam9rl_soc;
23extern struct at91_init_soc at91sam9x5_soc;
Hong Xu02059682012-04-17 14:26:30 +080024extern struct at91_init_soc at91sam9n12_soc;
Jean-Christophe PLAGNIOL-VILLARD8c3583b2011-04-23 22:12:57 +080025
Jean-Christophe PLAGNIOL-VILLARD8d39e0fd02012-08-16 17:36:55 +080026#define AT91_SOC_START(_name) \
27struct at91_init_soc __initdata at91##_name##_soc \
28 __used \
29 = { \
30 .builtin = 1, \
31
32#define AT91_SOC_END \
33};
34
Jean-Christophe PLAGNIOL-VILLARD8c3583b2011-04-23 22:12:57 +080035static inline int at91_soc_is_enabled(void)
36{
Jean-Christophe PLAGNIOL-VILLARD8d39e0fd02012-08-16 17:36:55 +080037 return at91_boot_soc.builtin;
Jean-Christophe PLAGNIOL-VILLARD8c3583b2011-04-23 22:12:57 +080038}
39
Jean-Christophe PLAGNIOL-VILLARD1e3ce2b2012-04-06 11:51:50 +080040#if !defined(CONFIG_SOC_AT91RM9200)
Jean-Christophe PLAGNIOL-VILLARD8c3583b2011-04-23 22:12:57 +080041#define at91rm9200_soc at91_boot_soc
42#endif
43
Jean-Christophe PLAGNIOL-VILLARD1e3ce2b2012-04-06 11:51:50 +080044#if !defined(CONFIG_SOC_AT91SAM9260)
Jean-Christophe PLAGNIOL-VILLARD8c3583b2011-04-23 22:12:57 +080045#define at91sam9260_soc at91_boot_soc
46#endif
47
Jean-Christophe PLAGNIOL-VILLARD1e3ce2b2012-04-06 11:51:50 +080048#if !defined(CONFIG_SOC_AT91SAM9261)
Jean-Christophe PLAGNIOL-VILLARD8c3583b2011-04-23 22:12:57 +080049#define at91sam9261_soc at91_boot_soc
50#endif
51
Jean-Christophe PLAGNIOL-VILLARD1e3ce2b2012-04-06 11:51:50 +080052#if !defined(CONFIG_SOC_AT91SAM9263)
Jean-Christophe PLAGNIOL-VILLARD8c3583b2011-04-23 22:12:57 +080053#define at91sam9263_soc at91_boot_soc
54#endif
55
Jean-Christophe PLAGNIOL-VILLARD1e3ce2b2012-04-06 11:51:50 +080056#if !defined(CONFIG_SOC_AT91SAM9G45)
Jean-Christophe PLAGNIOL-VILLARD8c3583b2011-04-23 22:12:57 +080057#define at91sam9g45_soc at91_boot_soc
58#endif
59
Jean-Christophe PLAGNIOL-VILLARD1e3ce2b2012-04-06 11:51:50 +080060#if !defined(CONFIG_SOC_AT91SAM9RL)
Jean-Christophe PLAGNIOL-VILLARD8c3583b2011-04-23 22:12:57 +080061#define at91sam9rl_soc at91_boot_soc
62#endif
63
Jean-Christophe PLAGNIOL-VILLARD1e3ce2b2012-04-06 11:51:50 +080064#if !defined(CONFIG_SOC_AT91SAM9X5)
Jean-Christophe PLAGNIOL-VILLARD8c3583b2011-04-23 22:12:57 +080065#define at91sam9x5_soc at91_boot_soc
66#endif
Hong Xu02059682012-04-17 14:26:30 +080067
68#if !defined(CONFIG_SOC_AT91SAM9N12)
69#define at91sam9n12_soc at91_boot_soc
70#endif