summaryrefslogtreecommitdiff
path: root/arch/powerpc/include/asm/mpc85xx.h
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