linux/arch/arm/mach-imx/cpu-imx25.c
<<
>>
Prefs
   1/*
   2 * MX25 CPU type detection
   3 *
   4 * Copyright (c) 2009 Daniel Mack <daniel@caiaq.de>
   5 * Copyright (C) 2011 Freescale Semiconductor, Inc. All Rights Reserved
   6 *
   7 * This program is free software; you can redistribute it and/or modify
   8 * it under the terms of the GNU General Public License as published by
   9 * the Free Software Foundation; either version 2 of the License, or
  10 * (at your option) any later version.
  11 */
  12#include <linux/module.h>
  13#include <linux/io.h>
  14#include <linux/of.h>
  15#include <linux/of_address.h>
  16
  17#include "iim.h"
  18#include "hardware.h"
  19
  20static int mx25_cpu_rev = -1;
  21
  22static int mx25_read_cpu_rev(void)
  23{
  24        u32 rev;
  25        void __iomem *iim_base;
  26        struct device_node *np;
  27
  28        np = of_find_compatible_node(NULL, NULL, "fsl,imx25-iim");
  29        iim_base = of_iomap(np, 0);
  30        BUG_ON(!iim_base);
  31        rev = readl(iim_base + MXC_IIMSREV);
  32        iounmap(iim_base);
  33
  34        switch (rev) {
  35        case 0x00:
  36                return IMX_CHIP_REVISION_1_0;
  37        case 0x01:
  38                return IMX_CHIP_REVISION_1_1;
  39        default:
  40                return IMX_CHIP_REVISION_UNKNOWN;
  41        }
  42}
  43
  44int mx25_revision(void)
  45{
  46        if (mx25_cpu_rev == -1)
  47                mx25_cpu_rev = mx25_read_cpu_rev();
  48
  49        return mx25_cpu_rev;
  50}
  51EXPORT_SYMBOL(mx25_revision);
  52