Linux Audio

Check our new training course

Loading...
Note: File does not exist in v3.1.
 1// SPDX-License-Identifier: GPL-2.0-or-later
 2/*
 3 * MX25 CPU type detection
 4 *
 5 * Copyright (c) 2009 Daniel Mack <daniel@caiaq.de>
 6 * Copyright (C) 2011 Freescale Semiconductor, Inc. All Rights Reserved
 7 */
 8#include <linux/module.h>
 9#include <linux/io.h>
10#include <linux/of.h>
11#include <linux/of_address.h>
12
13#include "iim.h"
14#include "hardware.h"
15
16static int mx25_cpu_rev = -1;
17
18static int mx25_read_cpu_rev(void)
19{
20	u32 rev;
21	void __iomem *iim_base;
22	struct device_node *np;
23
24	np = of_find_compatible_node(NULL, NULL, "fsl,imx25-iim");
25	iim_base = of_iomap(np, 0);
26	of_node_put(np);
27	BUG_ON(!iim_base);
28	rev = readl(iim_base + MXC_IIMSREV);
29	iounmap(iim_base);
30
31	switch (rev) {
32	case 0x00:
33		return IMX_CHIP_REVISION_1_0;
34	case 0x01:
35		return IMX_CHIP_REVISION_1_1;
36	case 0x02:
37		return IMX_CHIP_REVISION_1_2;
38	default:
39		return IMX_CHIP_REVISION_UNKNOWN;
40	}
41}
42
43int mx25_revision(void)
44{
45	if (mx25_cpu_rev == -1)
46		mx25_cpu_rev = mx25_read_cpu_rev();
47
48	return mx25_cpu_rev;
49}
50EXPORT_SYMBOL(mx25_revision);