18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-or-later 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * MX35 CPU type detection 48c2ecf20Sopenharmony_ci * 58c2ecf20Sopenharmony_ci * Copyright (c) 2009 Daniel Mack <daniel@caiaq.de> 68c2ecf20Sopenharmony_ci */ 78c2ecf20Sopenharmony_ci#include <linux/module.h> 88c2ecf20Sopenharmony_ci#include <linux/of_address.h> 98c2ecf20Sopenharmony_ci#include <linux/io.h> 108c2ecf20Sopenharmony_ci 118c2ecf20Sopenharmony_ci#include "hardware.h" 128c2ecf20Sopenharmony_ci#include "iim.h" 138c2ecf20Sopenharmony_ci 148c2ecf20Sopenharmony_cistatic int mx35_cpu_rev = -1; 158c2ecf20Sopenharmony_ci 168c2ecf20Sopenharmony_cistatic int mx35_read_cpu_rev(void) 178c2ecf20Sopenharmony_ci{ 188c2ecf20Sopenharmony_ci void __iomem *iim_base; 198c2ecf20Sopenharmony_ci struct device_node *np; 208c2ecf20Sopenharmony_ci u32 rev; 218c2ecf20Sopenharmony_ci 228c2ecf20Sopenharmony_ci np = of_find_compatible_node(NULL, NULL, "fsl,imx35-iim"); 238c2ecf20Sopenharmony_ci iim_base = of_iomap(np, 0); 248c2ecf20Sopenharmony_ci of_node_put(np); 258c2ecf20Sopenharmony_ci BUG_ON(!iim_base); 268c2ecf20Sopenharmony_ci 278c2ecf20Sopenharmony_ci rev = imx_readl(iim_base + MXC_IIMSREV); 288c2ecf20Sopenharmony_ci switch (rev) { 298c2ecf20Sopenharmony_ci case 0x00: 308c2ecf20Sopenharmony_ci return IMX_CHIP_REVISION_1_0; 318c2ecf20Sopenharmony_ci case 0x10: 328c2ecf20Sopenharmony_ci return IMX_CHIP_REVISION_2_0; 338c2ecf20Sopenharmony_ci case 0x11: 348c2ecf20Sopenharmony_ci return IMX_CHIP_REVISION_2_1; 358c2ecf20Sopenharmony_ci default: 368c2ecf20Sopenharmony_ci return IMX_CHIP_REVISION_UNKNOWN; 378c2ecf20Sopenharmony_ci } 388c2ecf20Sopenharmony_ci} 398c2ecf20Sopenharmony_ci 408c2ecf20Sopenharmony_ciint mx35_revision(void) 418c2ecf20Sopenharmony_ci{ 428c2ecf20Sopenharmony_ci if (mx35_cpu_rev == -1) 438c2ecf20Sopenharmony_ci mx35_cpu_rev = mx35_read_cpu_rev(); 448c2ecf20Sopenharmony_ci 458c2ecf20Sopenharmony_ci return mx35_cpu_rev; 468c2ecf20Sopenharmony_ci} 478c2ecf20Sopenharmony_ciEXPORT_SYMBOL(mx35_revision); 48