Back to home page

OSCL-LXR

 
 

    


0001 // SPDX-License-Identifier: GPL-2.0-or-later
0002 /*
0003  * MX35 CPU type detection
0004  *
0005  * Copyright (c) 2009 Daniel Mack <daniel@caiaq.de>
0006  */
0007 #include <linux/module.h>
0008 #include <linux/of_address.h>
0009 #include <linux/io.h>
0010 
0011 #include "hardware.h"
0012 #include "iim.h"
0013 
0014 static int mx35_cpu_rev = -1;
0015 
0016 static int mx35_read_cpu_rev(void)
0017 {
0018     void __iomem *iim_base;
0019     struct device_node *np;
0020     u32 rev;
0021 
0022     np = of_find_compatible_node(NULL, NULL, "fsl,imx35-iim");
0023     iim_base = of_iomap(np, 0);
0024     BUG_ON(!iim_base);
0025 
0026     rev = imx_readl(iim_base + MXC_IIMSREV);
0027     switch (rev) {
0028     case 0x00:
0029         return IMX_CHIP_REVISION_1_0;
0030     case 0x10:
0031         return IMX_CHIP_REVISION_2_0;
0032     case 0x11:
0033         return IMX_CHIP_REVISION_2_1;
0034     default:
0035         return IMX_CHIP_REVISION_UNKNOWN;
0036     }
0037 }
0038 
0039 int mx35_revision(void)
0040 {
0041     if (mx35_cpu_rev == -1)
0042         mx35_cpu_rev = mx35_read_cpu_rev();
0043 
0044     return mx35_cpu_rev;
0045 }
0046 EXPORT_SYMBOL(mx35_revision);