100bbe96eSSemen Protsenko /* 200bbe96eSSemen Protsenko * System information routines for all OMAP based boards. 300bbe96eSSemen Protsenko * 400bbe96eSSemen Protsenko * (C) Copyright 2017 Linaro Ltd. 500bbe96eSSemen Protsenko * Sam Protsenko <semen.protsenko@linaro.org> 600bbe96eSSemen Protsenko * 700bbe96eSSemen Protsenko * SPDX-License-Identifier: GPL-2.0+ 800bbe96eSSemen Protsenko */ 900bbe96eSSemen Protsenko 1000bbe96eSSemen Protsenko #include <asm/arch/omap.h> 1100bbe96eSSemen Protsenko #include <asm/io.h> 1200bbe96eSSemen Protsenko #include <asm/omap_common.h> 1300bbe96eSSemen Protsenko 1400bbe96eSSemen Protsenko /** 1500bbe96eSSemen Protsenko * Tell if device is GP/HS/EMU/TST. 1600bbe96eSSemen Protsenko */ get_device_type(void)1700bbe96eSSemen Protsenkou32 get_device_type(void) 1800bbe96eSSemen Protsenko { 19*da0227f7SDerald D. Woods #if defined(CONFIG_OMAP34XX) 20*da0227f7SDerald D. Woods /* 21*da0227f7SDerald D. Woods * On OMAP3 systems we call this early enough that we must just 22*da0227f7SDerald D. Woods * use the direct offset for safety. 23*da0227f7SDerald D. Woods */ 24*da0227f7SDerald D. Woods return (readl(OMAP34XX_CTRL_BASE + 0x2f0) & DEVICE_TYPE_MASK) >> 25*da0227f7SDerald D. Woods DEVICE_TYPE_SHIFT; 26*da0227f7SDerald D. Woods #else 2700bbe96eSSemen Protsenko return (readl((*ctrl)->control_status) & DEVICE_TYPE_MASK) >> 2800bbe96eSSemen Protsenko DEVICE_TYPE_SHIFT; 29*da0227f7SDerald D. Woods #endif 3000bbe96eSSemen Protsenko } 31