blob: 9a8fd97a8befe1502c9dc12ed64ecc597b2d98b1 [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-VILLARD546c8302013-06-01 16:40:11 +02009 u32 extern_irq;
Jean-Christophe PLAGNIOL-VILLARD92100c12011-04-23 15:28:34 +080010 unsigned int *default_irq_priority;
Jean-Christophe PLAGNIOL-VILLARD21d08b92011-04-23 15:28:34 +080011 void (*map_io)(void);
Jean-Christophe PLAGNIOL-VILLARDcfa5a1f2011-10-14 01:17:18 +080012 void (*ioremap_registers)(void);
Jean-Christophe PLAGNIOL-VILLARD51ddec72011-04-24 18:15:34 +080013 void (*register_clocks)(void);
Maxime Ripard65f2ce92014-07-02 17:49:28 +020014 void (*register_devices)(void);
Jean-Christophe PLAGNIOL-VILLARD46539372011-04-24 18:20:28 +080015 void (*init)(void);
Maxime Ripardd2992e52014-09-02 18:05:04 +020016 void (*init_time)(void);
Jean-Christophe PLAGNIOL-VILLARD21d08b92011-04-23 15:28:34 +080017};
18
Jean-Christophe PLAGNIOL-VILLARD8c3583b2011-04-23 22:12:57 +080019extern struct at91_init_soc at91_boot_soc;
Jean-Christophe PLAGNIOL-VILLARD8c3583b2011-04-23 22:12:57 +080020extern struct at91_init_soc at91rm9200_soc;
21extern struct at91_init_soc at91sam9260_soc;
22extern struct at91_init_soc at91sam9261_soc;
23extern struct at91_init_soc at91sam9263_soc;
24extern struct at91_init_soc at91sam9g45_soc;
25extern struct at91_init_soc at91sam9rl_soc;
26extern struct at91_init_soc at91sam9x5_soc;
Hong Xu02059682012-04-17 14:26:30 +080027extern struct at91_init_soc at91sam9n12_soc;
Ludovic Desroches8f4b4792013-03-22 13:24:12 +000028extern struct at91_init_soc sama5d3_soc;
Nicolas Ferre2dc850b2014-09-15 18:15:54 +020029extern struct at91_init_soc sama5d4_soc;
Jean-Christophe PLAGNIOL-VILLARD8c3583b2011-04-23 22:12:57 +080030
Jean-Christophe PLAGNIOL-VILLARD8d39e0fd02012-08-16 17:36:55 +080031#define AT91_SOC_START(_name) \
Ludovic Desroches84ddb082013-03-22 13:24:09 +000032struct at91_init_soc __initdata _name##_soc \
Jean-Christophe PLAGNIOL-VILLARD8d39e0fd02012-08-16 17:36:55 +080033 __used \
34 = { \
35 .builtin = 1, \
36
37#define AT91_SOC_END \
38};
39
Jean-Christophe PLAGNIOL-VILLARD8c3583b2011-04-23 22:12:57 +080040static inline int at91_soc_is_enabled(void)
41{
Jean-Christophe PLAGNIOL-VILLARD8d39e0fd02012-08-16 17:36:55 +080042 return at91_boot_soc.builtin;
Jean-Christophe PLAGNIOL-VILLARD8c3583b2011-04-23 22:12:57 +080043}
44
Jean-Christophe PLAGNIOL-VILLARD1e3ce2b2012-04-06 11:51:50 +080045#if !defined(CONFIG_SOC_AT91RM9200)
Jean-Christophe PLAGNIOL-VILLARD8c3583b2011-04-23 22:12:57 +080046#define at91rm9200_soc at91_boot_soc
47#endif
48
Jean-Christophe PLAGNIOL-VILLARD1e3ce2b2012-04-06 11:51:50 +080049#if !defined(CONFIG_SOC_AT91SAM9260)
Jean-Christophe PLAGNIOL-VILLARD8c3583b2011-04-23 22:12:57 +080050#define at91sam9260_soc at91_boot_soc
51#endif
52
Jean-Christophe PLAGNIOL-VILLARD1e3ce2b2012-04-06 11:51:50 +080053#if !defined(CONFIG_SOC_AT91SAM9261)
Jean-Christophe PLAGNIOL-VILLARD8c3583b2011-04-23 22:12:57 +080054#define at91sam9261_soc at91_boot_soc
55#endif
56
Jean-Christophe PLAGNIOL-VILLARD1e3ce2b2012-04-06 11:51:50 +080057#if !defined(CONFIG_SOC_AT91SAM9263)
Jean-Christophe PLAGNIOL-VILLARD8c3583b2011-04-23 22:12:57 +080058#define at91sam9263_soc at91_boot_soc
59#endif
60
Jean-Christophe PLAGNIOL-VILLARD1e3ce2b2012-04-06 11:51:50 +080061#if !defined(CONFIG_SOC_AT91SAM9G45)
Jean-Christophe PLAGNIOL-VILLARD8c3583b2011-04-23 22:12:57 +080062#define at91sam9g45_soc at91_boot_soc
63#endif
64
Jean-Christophe PLAGNIOL-VILLARD1e3ce2b2012-04-06 11:51:50 +080065#if !defined(CONFIG_SOC_AT91SAM9RL)
Jean-Christophe PLAGNIOL-VILLARD8c3583b2011-04-23 22:12:57 +080066#define at91sam9rl_soc at91_boot_soc
67#endif
68
Jean-Christophe PLAGNIOL-VILLARD1e3ce2b2012-04-06 11:51:50 +080069#if !defined(CONFIG_SOC_AT91SAM9X5)
Jean-Christophe PLAGNIOL-VILLARD8c3583b2011-04-23 22:12:57 +080070#define at91sam9x5_soc at91_boot_soc
71#endif
Hong Xu02059682012-04-17 14:26:30 +080072
73#if !defined(CONFIG_SOC_AT91SAM9N12)
74#define at91sam9n12_soc at91_boot_soc
75#endif
Ludovic Desroches8f4b4792013-03-22 13:24:12 +000076
77#if !defined(CONFIG_SOC_SAMA5D3)
78#define sama5d3_soc at91_boot_soc
79#endif
Nicolas Ferre2dc850b2014-09-15 18:15:54 +020080
81#if !defined(CONFIG_SOC_SAMA5D4)
82#define sama5d4_soc at91_boot_soc
83#endif