xref: /OK3568_Linux_fs/u-boot/arch/arm/mach-omap2/sysinfo-common.c (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /*
2*4882a593Smuzhiyun  * System information routines for all OMAP based boards.
3*4882a593Smuzhiyun  *
4*4882a593Smuzhiyun  * (C) Copyright 2017 Linaro Ltd.
5*4882a593Smuzhiyun  * Sam Protsenko <semen.protsenko@linaro.org>
6*4882a593Smuzhiyun  *
7*4882a593Smuzhiyun  * SPDX-License-Identifier:	GPL-2.0+
8*4882a593Smuzhiyun  */
9*4882a593Smuzhiyun 
10*4882a593Smuzhiyun #include <asm/arch/omap.h>
11*4882a593Smuzhiyun #include <asm/io.h>
12*4882a593Smuzhiyun #include <asm/omap_common.h>
13*4882a593Smuzhiyun 
14*4882a593Smuzhiyun /**
15*4882a593Smuzhiyun  * Tell if device is GP/HS/EMU/TST.
16*4882a593Smuzhiyun  */
get_device_type(void)17*4882a593Smuzhiyun u32 get_device_type(void)
18*4882a593Smuzhiyun {
19*4882a593Smuzhiyun #if defined(CONFIG_OMAP34XX)
20*4882a593Smuzhiyun 	/*
21*4882a593Smuzhiyun 	 * On OMAP3 systems we call this early enough that we must just
22*4882a593Smuzhiyun 	 * use the direct offset for safety.
23*4882a593Smuzhiyun 	 */
24*4882a593Smuzhiyun 	return (readl(OMAP34XX_CTRL_BASE + 0x2f0) & DEVICE_TYPE_MASK) >>
25*4882a593Smuzhiyun 		DEVICE_TYPE_SHIFT;
26*4882a593Smuzhiyun #else
27*4882a593Smuzhiyun 	return (readl((*ctrl)->control_status) & DEVICE_TYPE_MASK) >>
28*4882a593Smuzhiyun 		DEVICE_TYPE_SHIFT;
29*4882a593Smuzhiyun #endif
30*4882a593Smuzhiyun }
31