linux/arch/arm/mach-imx/mach-imx51.c
<<
>>
Prefs
   1/*
   2 * Copyright 2011 Freescale Semiconductor, Inc. All Rights Reserved.
   3 * Copyright 2011 Linaro Ltd.
   4 *
   5 * The code contained herein is licensed under the GNU General Public
   6 * License. You may obtain a copy of the GNU General Public License
   7 * Version 2 or later at the following locations:
   8 *
   9 * http://www.opensource.org/licenses/gpl-license.html
  10 * http://www.gnu.org/copyleft/gpl.html
  11 */
  12
  13#include <linux/io.h>
  14#include <linux/irq.h>
  15#include <linux/of_irq.h>
  16#include <linux/of_platform.h>
  17#include <asm/mach/arch.h>
  18#include <asm/mach/time.h>
  19
  20#include "common.h"
  21#include "hardware.h"
  22
  23static void __init imx51_init_early(void)
  24{
  25        mxc_set_cpu_type(MXC_CPU_MX51);
  26}
  27
  28/*
  29 * The MIPI HSC unit has been removed from the i.MX51 Reference Manual by
  30 * the Freescale marketing division. However this did not remove the
  31 * hardware from the chip which still needs to be configured for proper
  32 * IPU support.
  33 */
  34#define MX51_MIPI_HSC_BASE 0x83fdc000
  35static void __init imx51_ipu_mipi_setup(void)
  36{
  37        void __iomem *hsc_addr;
  38
  39        hsc_addr = ioremap(MX51_MIPI_HSC_BASE, SZ_16K);
  40        WARN_ON(!hsc_addr);
  41
  42        /* setup MIPI module to legacy mode */
  43        imx_writel(0xf00, hsc_addr);
  44
  45        /* CSI mode: reserved; DI control mode: legacy (from Freescale BSP) */
  46        imx_writel(imx_readl(hsc_addr + 0x800) | 0x30ff, hsc_addr + 0x800);
  47
  48        iounmap(hsc_addr);
  49}
  50
  51static void __init imx51_dt_init(void)
  52{
  53        imx51_ipu_mipi_setup();
  54        imx_src_init();
  55
  56        imx_aips_allow_unprivileged_access("fsl,imx51-aipstz");
  57}
  58
  59static void __init imx51_init_late(void)
  60{
  61        mx51_neon_fixup();
  62        imx51_pm_init();
  63}
  64
  65static const char * const imx51_dt_board_compat[] __initconst = {
  66        "fsl,imx51",
  67        NULL
  68};
  69
  70DT_MACHINE_START(IMX51_DT, "Freescale i.MX51 (Device Tree Support)")
  71        .init_early     = imx51_init_early,
  72        .init_machine   = imx51_dt_init,
  73        .init_late      = imx51_init_late,
  74        .dt_compat      = imx51_dt_board_compat,
  75MACHINE_END
  76