1
2
3
4
5
6
7
8
9
10
11
12
13
14#ifndef __MACH_CPU_H__
15#define __MACH_CPU_H__
16
17#define ARCH_ID_AT91RM9200 0x09290780
18#define ARCH_ID_AT91SAM9260 0x019803a0
19#define ARCH_ID_AT91SAM9261 0x019703a0
20#define ARCH_ID_AT91SAM9263 0x019607a0
21#define ARCH_ID_AT91SAM9G10 0x019903a0
22#define ARCH_ID_AT91SAM9G20 0x019905a0
23#define ARCH_ID_AT91SAM9RL64 0x019b03a0
24#define ARCH_ID_AT91SAM9G45 0x819b05a0
25#define ARCH_ID_AT91SAM9G45MRL 0x819b05a2
26#define ARCH_ID_AT91SAM9G45ES 0x819b05a1
27#define ARCH_ID_AT91SAM9X5 0x819a05a0
28#define ARCH_ID_AT91SAM9N12 0x819a07a0
29
30#define ARCH_ID_AT91SAM9XE128 0x329973a0
31#define ARCH_ID_AT91SAM9XE256 0x329a93a0
32#define ARCH_ID_AT91SAM9XE512 0x329aa3a0
33
34#define ARCH_ID_AT91M40800 0x14080044
35#define ARCH_ID_AT91R40807 0x44080746
36#define ARCH_ID_AT91M40807 0x14080745
37#define ARCH_ID_AT91R40008 0x44000840
38
39#define ARCH_ID_SAMA5D3 0x8A5C07C0
40
41#define ARCH_EXID_AT91SAM9M11 0x00000001
42#define ARCH_EXID_AT91SAM9M10 0x00000002
43#define ARCH_EXID_AT91SAM9G46 0x00000003
44#define ARCH_EXID_AT91SAM9G45 0x00000004
45
46#define ARCH_EXID_AT91SAM9G15 0x00000000
47#define ARCH_EXID_AT91SAM9G35 0x00000001
48#define ARCH_EXID_AT91SAM9X35 0x00000002
49#define ARCH_EXID_AT91SAM9G25 0x00000003
50#define ARCH_EXID_AT91SAM9X25 0x00000004
51
52#define ARCH_EXID_SAMA5D31 0x00444300
53#define ARCH_EXID_SAMA5D33 0x00414300
54#define ARCH_EXID_SAMA5D34 0x00414301
55#define ARCH_EXID_SAMA5D35 0x00584300
56
57#define ARCH_FAMILY_AT91X92 0x09200000
58#define ARCH_FAMILY_AT91SAM9 0x01900000
59#define ARCH_FAMILY_AT91SAM9XE 0x02900000
60
61
62#define ARCH_REVISON_9200_BGA (0 << 0)
63#define ARCH_REVISON_9200_PQFP (1 << 0)
64
65#ifndef __ASSEMBLY__
66enum at91_soc_type {
67
68 AT91_SOC_RM9200,
69
70
71 AT91_SOC_SAM9260, AT91_SOC_SAM9261, AT91_SOC_SAM9263,
72
73
74 AT91_SOC_SAM9G10, AT91_SOC_SAM9G20, AT91_SOC_SAM9G45,
75
76
77 AT91_SOC_SAM9RL,
78
79
80 AT91_SOC_SAM9X5,
81
82
83 AT91_SOC_SAM9N12,
84
85
86 AT91_SOC_SAMA5D3,
87
88
89 AT91_SOC_UNKNOWN,
90};
91
92enum at91_soc_subtype {
93
94 AT91_SOC_RM9200_BGA, AT91_SOC_RM9200_PQFP,
95
96
97 AT91_SOC_SAM9XE,
98
99
100 AT91_SOC_SAM9G45ES, AT91_SOC_SAM9M10, AT91_SOC_SAM9G46, AT91_SOC_SAM9M11,
101
102
103 AT91_SOC_SAM9G15, AT91_SOC_SAM9G35, AT91_SOC_SAM9X35,
104 AT91_SOC_SAM9G25, AT91_SOC_SAM9X25,
105
106
107 AT91_SOC_SAMA5D31, AT91_SOC_SAMA5D33, AT91_SOC_SAMA5D34,
108 AT91_SOC_SAMA5D35,
109
110
111 AT91_SOC_SUBTYPE_NONE,
112
113
114 AT91_SOC_SUBTYPE_UNKNOWN,
115};
116
117struct at91_socinfo {
118 unsigned int type, subtype;
119 unsigned int cidr, exid;
120};
121
122extern struct at91_socinfo at91_soc_initdata;
123const char *at91_get_soc_type(struct at91_socinfo *c);
124const char *at91_get_soc_subtype(struct at91_socinfo *c);
125
126static inline int at91_soc_is_detected(void)
127{
128 return at91_soc_initdata.type != AT91_SOC_UNKNOWN;
129}
130
131#ifdef CONFIG_SOC_AT91RM9200
132#define cpu_is_at91rm9200() (at91_soc_initdata.type == AT91_SOC_RM9200)
133#define cpu_is_at91rm9200_bga() (at91_soc_initdata.subtype == AT91_SOC_RM9200_BGA)
134#define cpu_is_at91rm9200_pqfp() (at91_soc_initdata.subtype == AT91_SOC_RM9200_PQFP)
135#else
136#define cpu_is_at91rm9200() (0)
137#define cpu_is_at91rm9200_bga() (0)
138#define cpu_is_at91rm9200_pqfp() (0)
139#endif
140
141#ifdef CONFIG_SOC_AT91SAM9260
142#define cpu_is_at91sam9xe() (at91_soc_initdata.subtype == AT91_SOC_SAM9XE)
143#define cpu_is_at91sam9260() (at91_soc_initdata.type == AT91_SOC_SAM9260)
144#define cpu_is_at91sam9g20() (at91_soc_initdata.type == AT91_SOC_SAM9G20)
145#else
146#define cpu_is_at91sam9xe() (0)
147#define cpu_is_at91sam9260() (0)
148#define cpu_is_at91sam9g20() (0)
149#endif
150
151#ifdef CONFIG_SOC_AT91SAM9261
152#define cpu_is_at91sam9261() (at91_soc_initdata.type == AT91_SOC_SAM9261)
153#define cpu_is_at91sam9g10() (at91_soc_initdata.type == AT91_SOC_SAM9G10)
154#else
155#define cpu_is_at91sam9261() (0)
156#define cpu_is_at91sam9g10() (0)
157#endif
158
159#ifdef CONFIG_SOC_AT91SAM9263
160#define cpu_is_at91sam9263() (at91_soc_initdata.type == AT91_SOC_SAM9263)
161#else
162#define cpu_is_at91sam9263() (0)
163#endif
164
165#ifdef CONFIG_SOC_AT91SAM9RL
166#define cpu_is_at91sam9rl() (at91_soc_initdata.type == AT91_SOC_SAM9RL)
167#else
168#define cpu_is_at91sam9rl() (0)
169#endif
170
171#ifdef CONFIG_SOC_AT91SAM9G45
172#define cpu_is_at91sam9g45() (at91_soc_initdata.type == AT91_SOC_SAM9G45)
173#define cpu_is_at91sam9g45es() (at91_soc_initdata.subtype == AT91_SOC_SAM9G45ES)
174#define cpu_is_at91sam9m10() (at91_soc_initdata.subtype == AT91_SOC_SAM9M10)
175#define cpu_is_at91sam9g46() (at91_soc_initdata.subtype == AT91_SOC_SAM9G46)
176#define cpu_is_at91sam9m11() (at91_soc_initdata.subtype == AT91_SOC_SAM9M11)
177#else
178#define cpu_is_at91sam9g45() (0)
179#define cpu_is_at91sam9g45es() (0)
180#define cpu_is_at91sam9m10() (0)
181#define cpu_is_at91sam9g46() (0)
182#define cpu_is_at91sam9m11() (0)
183#endif
184
185#ifdef CONFIG_SOC_AT91SAM9X5
186#define cpu_is_at91sam9x5() (at91_soc_initdata.type == AT91_SOC_SAM9X5)
187#define cpu_is_at91sam9g15() (at91_soc_initdata.subtype == AT91_SOC_SAM9G15)
188#define cpu_is_at91sam9g35() (at91_soc_initdata.subtype == AT91_SOC_SAM9G35)
189#define cpu_is_at91sam9x35() (at91_soc_initdata.subtype == AT91_SOC_SAM9X35)
190#define cpu_is_at91sam9g25() (at91_soc_initdata.subtype == AT91_SOC_SAM9G25)
191#define cpu_is_at91sam9x25() (at91_soc_initdata.subtype == AT91_SOC_SAM9X25)
192#else
193#define cpu_is_at91sam9x5() (0)
194#define cpu_is_at91sam9g15() (0)
195#define cpu_is_at91sam9g35() (0)
196#define cpu_is_at91sam9x35() (0)
197#define cpu_is_at91sam9g25() (0)
198#define cpu_is_at91sam9x25() (0)
199#endif
200
201#ifdef CONFIG_SOC_AT91SAM9N12
202#define cpu_is_at91sam9n12() (at91_soc_initdata.type == AT91_SOC_SAM9N12)
203#else
204#define cpu_is_at91sam9n12() (0)
205#endif
206
207#ifdef CONFIG_SOC_SAMA5D3
208#define cpu_is_sama5d3() (at91_soc_initdata.type == AT91_SOC_SAMA5D3)
209#else
210#define cpu_is_sama5d3() (0)
211#endif
212
213
214
215
216
217#define cpu_is_at32ap7000() (0)
218#endif
219
220#endif
221