xref: /freebsd/sys/arm/ti/ti_cpuid.h (revision e53470fee3cf7ba343701650d5e75b8142046acf)
1*e53470feSOleksandr Tymoshenko /*-
2*e53470feSOleksandr Tymoshenko  * Copyright (c) 2011
3*e53470feSOleksandr Tymoshenko  *	Ben Gray <ben.r.gray@gmail.com>.
4*e53470feSOleksandr Tymoshenko  * All rights reserved.
5*e53470feSOleksandr Tymoshenko  *
6*e53470feSOleksandr Tymoshenko  * Redistribution and use in source and binary forms, with or without
7*e53470feSOleksandr Tymoshenko  * modification, are permitted provided that the following conditions
8*e53470feSOleksandr Tymoshenko  * are met:
9*e53470feSOleksandr Tymoshenko  * 1. Redistributions of source code must retain the above copyright
10*e53470feSOleksandr Tymoshenko  *    notice, this list of conditions and the following disclaimer.
11*e53470feSOleksandr Tymoshenko  * 2. Redistributions in binary form must reproduce the above copyright
12*e53470feSOleksandr Tymoshenko  *    notice, this list of conditions and the following disclaimer in the
13*e53470feSOleksandr Tymoshenko  *    documentation and/or other materials provided with the distribution.
14*e53470feSOleksandr Tymoshenko  *
15*e53470feSOleksandr Tymoshenko  * THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND
16*e53470feSOleksandr Tymoshenko  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17*e53470feSOleksandr Tymoshenko  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18*e53470feSOleksandr Tymoshenko  * ARE DISCLAIMED.  IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE
19*e53470feSOleksandr Tymoshenko  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20*e53470feSOleksandr Tymoshenko  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21*e53470feSOleksandr Tymoshenko  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22*e53470feSOleksandr Tymoshenko  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23*e53470feSOleksandr Tymoshenko  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24*e53470feSOleksandr Tymoshenko  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25*e53470feSOleksandr Tymoshenko  * SUCH DAMAGE.
26*e53470feSOleksandr Tymoshenko  *
27*e53470feSOleksandr Tymoshenko  * $FreeBSD$
28*e53470feSOleksandr Tymoshenko  */
29*e53470feSOleksandr Tymoshenko 
30*e53470feSOleksandr Tymoshenko #ifndef _TI_CPUID_H_
31*e53470feSOleksandr Tymoshenko #define	_TI_CPUID_H_
32*e53470feSOleksandr Tymoshenko 
33*e53470feSOleksandr Tymoshenko #define OMAP_MAKEREV(d, a, b, c) \
34*e53470feSOleksandr Tymoshenko 	(uint32_t)(((d) << 16) | (((a) & 0xf) << 8) | (((b) & 0xf) << 4) | ((c) & 0xf))
35*e53470feSOleksandr Tymoshenko 
36*e53470feSOleksandr Tymoshenko #define OMAP_REV_DEVICE(x)      (((x) >> 16) & 0xffff)
37*e53470feSOleksandr Tymoshenko #define OMAP_REV_MAJOR(x)       (((x) >> 8) & 0xf)
38*e53470feSOleksandr Tymoshenko #define OMAP_REV_MINOR(x)       (((x) >> 4) & 0xf)
39*e53470feSOleksandr Tymoshenko #define OMAP_REV_MINOR_MINOR(x) (((x) >> 0) & 0xf)
40*e53470feSOleksandr Tymoshenko 
41*e53470feSOleksandr Tymoshenko #define	OMAP3350_DEV		0x3530
42*e53470feSOleksandr Tymoshenko #define OMAP3350_REV_ES1_0      OMAP_MAKEREV(OMAP3350_DEV, 1, 0, 0)
43*e53470feSOleksandr Tymoshenko #define OMAP3530_REV_ES2_0      OMAP_MAKEREV(OMAP3350_DEV, 2, 0, 0)
44*e53470feSOleksandr Tymoshenko #define OMAP3530_REV_ES2_1      OMAP_MAKEREV(OMAP3350_DEV, 2, 1, 0)
45*e53470feSOleksandr Tymoshenko #define OMAP3530_REV_ES3_0      OMAP_MAKEREV(OMAP3350_DEV, 3, 0, 0)
46*e53470feSOleksandr Tymoshenko #define OMAP3530_REV_ES3_1      OMAP_MAKEREV(OMAP3350_DEV, 3, 1, 0)
47*e53470feSOleksandr Tymoshenko #define OMAP3530_REV_ES3_1_2    OMAP_MAKEREV(OMAP3350_DEV, 3, 1, 2)
48*e53470feSOleksandr Tymoshenko 
49*e53470feSOleksandr Tymoshenko #define	OMAP4430_DEV		0x4430
50*e53470feSOleksandr Tymoshenko #define OMAP4430_REV_ES1_0      OMAP_MAKEREV(OMAP4430_DEV, 1, 0, 0)
51*e53470feSOleksandr Tymoshenko #define OMAP4430_REV_ES2_0      OMAP_MAKEREV(OMAP4430_DEV, 2, 0, 0)
52*e53470feSOleksandr Tymoshenko #define OMAP4430_REV_ES2_1      OMAP_MAKEREV(OMAP4430_DEV, 2, 1, 0)
53*e53470feSOleksandr Tymoshenko #define OMAP4430_REV_ES2_2      OMAP_MAKEREV(OMAP4430_DEV, 2, 2, 0)
54*e53470feSOleksandr Tymoshenko #define OMAP4430_REV_ES2_3      OMAP_MAKEREV(OMAP4430_DEV, 2, 3, 0)
55*e53470feSOleksandr Tymoshenko 
56*e53470feSOleksandr Tymoshenko #define AM335X_DEVREV(x)	((x) >> 28)
57*e53470feSOleksandr Tymoshenko 
58*e53470feSOleksandr Tymoshenko #define CHIP_OMAP_3	0
59*e53470feSOleksandr Tymoshenko #define CHIP_OMAP_4	1
60*e53470feSOleksandr Tymoshenko #define CHIP_AM335X	2
61*e53470feSOleksandr Tymoshenko 
62*e53470feSOleksandr Tymoshenko static __inline int ti_chip(void)
63*e53470feSOleksandr Tymoshenko {
64*e53470feSOleksandr Tymoshenko #if defined(SOC_OMAP4)
65*e53470feSOleksandr Tymoshenko 	return CHIP_OMAP_4;
66*e53470feSOleksandr Tymoshenko #elif defined(SOC_OMAP3)
67*e53470feSOleksandr Tymoshenko 	return CHIP_OMAP_3;
68*e53470feSOleksandr Tymoshenko #elif defined(SOC_TI_AM335X)
69*e53470feSOleksandr Tymoshenko 	return CHIP_AM335X;
70*e53470feSOleksandr Tymoshenko #else
71*e53470feSOleksandr Tymoshenko #  error Chip type not defined, ensure SOC_xxxx is defined
72*e53470feSOleksandr Tymoshenko #endif
73*e53470feSOleksandr Tymoshenko }
74*e53470feSOleksandr Tymoshenko 
75*e53470feSOleksandr Tymoshenko uint32_t ti_revision(void);
76*e53470feSOleksandr Tymoshenko 
77*e53470feSOleksandr Tymoshenko #endif  /* _TI_CPUID_H_ */
78