blob: a49fead7b2a17c1ee728d0e98cb09f6da6fb4b53 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
|
/*
* MPC85xx cpu type detection
*
* Copyright 2011-2012 Freescale Semiconductor, Inc.
*
* This is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*/
#ifndef __ASM_PPC_CPU_H
#define __ASM_PPC_CPU_H
#define SVR_REV(svr) ((svr) & 0xFF) /* SOC design resision */
#define SVR_MAJ(svr) (((svr) >> 4) & 0xF) /* Major revision field*/
#define SVR_MIN(svr) (((svr) >> 0) & 0xF) /* Minor revision field*/
/* Some parts define SVR[0:23] as the SOC version */
#define SVR_SOC_VER(svr) (((svr) >> 8) & 0xFFFFFF) /* SOC Version fields */
#define IS_SVR_REV(svr, maj, min) \
((SVR_MAJ(svr) == (maj)) && (SVR_MIN(svr) == (min)))
#define SVR_8533 0x803400
#define SVR_8533_E 0x803C00
#define SVR_8535 0x803701
#define SVR_8535_E 0x803F01
#define SVR_8536 0x803700
#define SVR_8536_E 0x803F00
#define SVR_8540 0x803000
#define SVR_8541 0x807200
#define SVR_8541_E 0x807A00
#define SVR_8543 0x803200
#define SVR_8543_E 0x803A00
#define SVR_8544 0x803401
#define SVR_8544_E 0x803C01
#define SVR_8545 0x803102
#define SVR_8545_E 0x803902
#define SVR_8547 0x803101
#define SVR_8547_E 0x803901
#define SVR_8548 0x803100
#define SVR_8548_E 0x803900
#define SVR_8555 0x807100
#define SVR_8555_E 0x807900
#define SVR_8560 0x807000
#define SVR_8567 0x807501
#define SVR_8567_E 0x807D01
#define SVR_8568 0x807500
#define SVR_8568_E 0x807D00
#define SVR_8569 0x808000
#define SVR_8569_E 0x808800
#define SVR_8572 0x80E000
#define SVR_8572_E 0x80E800
#define SVR_P1010 0x80f900
#define SVR_P1010_E 0x80F100
#define SVR_P2041 0x821001
#define SVR_P2041_E 0x821801
#define SVR_P3041 0x821103
#define SVR_P3041_E 0x821903
#define SVR_P5010 0x822100
#define SVR_P5010_E 0x822900
#define SVR_P5020 0x822000
#define SVR_P5020_E 0x822800
#define SVR_P5040 0x820400
#define SVR_P5040_E 0x820B00
#define SVR_T4240 0x824800
#define SVR_B4860 0x868800
static inline int fsl_svr_is(u32 svr)
{
u32 id = SVR_SOC_VER(mfspr(SPRN_SVR));
return (id == svr);
}
/* Check the SOC design version of this board */
static inline int fsl_svr_rev_is(u8 maj, u8 min)
{
u32 rev = SVR_REV(mfspr(SPRN_SVR));
u32 cmp = (maj << 4) | min;
return (rev == cmp);
}
/* Return true if current SOC revision is prior to (maj, min) */
static inline int fsl_svr_older_than(u8 maj, u8 min)
{
u32 rev = SVR_REV(mfspr(SPRN_SVR));
u32 cmp = (maj << 4) | min;
return (rev < cmp);
}
#endif
|