1/* SPDX-License-Identifier: GPL-2.0+ */ 2/* 3 * Rockchip Electronics Co., Ltd. 4 */ 5 6#ifndef __ASM_ARCH_CPU_RK3288_H 7#define __ASM_ARCH_CPU_RK3288_H 8 9#include <asm/io.h> 10 11#define ROCKCHIP_CPU_MASK 0xffff0000 12#define ROCKCHIP_CPU_RK3288 0x32880000 13 14#define ROCKCHIP_SOC_MASK (ROCKCHIP_CPU_MASK | 0xff) 15#define ROCKCHIP_SOC_RK3288 (ROCKCHIP_CPU_RK3288 | 0x00) 16#define ROCKCHIP_SOC_RK3288W (ROCKCHIP_CPU_RK3288 | 0x01) 17 18#define RK3288_HDMI_PHYS 0xff980000 19#define HDMI_CONFIG0_ID 0x4 20#define RK3288W_HDMI_REVID 0x1a 21 22static inline int rockchip_soc_id(void) 23{ 24 u8 reg; 25 26#if defined(CONFIG_ROCKCHIP_RK3288) 27 reg = readb(RK3288_HDMI_PHYS + HDMI_CONFIG0_ID); 28 if (reg == RK3288W_HDMI_REVID) 29 return ROCKCHIP_SOC_RK3288W; 30 else 31 return ROCKCHIP_SOC_RK3288; 32#else 33 return 0; 34#endif 35} 36 37#define ROCKCHIP_SOC(id, ID) \ 38static inline bool soc_is_##id(void) \ 39{ \ 40 int soc_id = rockchip_soc_id(); \ 41 if (soc_id) \ 42 return ((soc_id & ROCKCHIP_SOC_MASK) == ROCKCHIP_SOC_ ##ID); \ 43 return false; \ 44} 45 46ROCKCHIP_SOC(rk3288, RK3288) 47ROCKCHIP_SOC(rk3288w, RK3288W) 48 49#endif /* __ASM_ARCH_CPU_RK3288_H */ 50