linux/arch/metag/kernel/devtree.c
<<
>>
Prefs
   1/*
   2 *  linux/arch/metag/kernel/devtree.c
   3 *
   4 *  Copyright (C) 2012 Imagination Technologies Ltd.
   5 *
   6 *  Based on ARM version:
   7 *  Copyright (C) 2009 Canonical Ltd. <jeremy.kerr@canonical.com>
   8 *
   9 * This program is free software; you can redistribute it and/or modify
  10 * it under the terms of the GNU General Public License version 2 as
  11 * published by the Free Software Foundation.
  12 */
  13
  14#include <linux/init.h>
  15#include <linux/export.h>
  16#include <linux/types.h>
  17#include <linux/bootmem.h>
  18#include <linux/memblock.h>
  19#include <linux/of.h>
  20#include <linux/of_fdt.h>
  21
  22#include <asm/setup.h>
  23#include <asm/page.h>
  24#include <asm/mach/arch.h>
  25
  26void __init early_init_dt_add_memory_arch(u64 base, u64 size)
  27{
  28        pr_err("%s(%llx, %llx)\n",
  29               __func__, base, size);
  30}
  31
  32void * __init early_init_dt_alloc_memory_arch(u64 size, u64 align)
  33{
  34        return alloc_bootmem_align(size, align);
  35}
  36
  37static const void * __init arch_get_next_mach(const char *const **match)
  38{
  39        static const struct machine_desc *mdesc = __arch_info_begin;
  40        const struct machine_desc *m = mdesc;
  41
  42        if (m >= __arch_info_end)
  43                return NULL;
  44
  45        mdesc++;
  46        *match = m->dt_compat;
  47        return m;
  48}
  49
  50/**
  51 * setup_machine_fdt - Machine setup when an dtb was passed to the kernel
  52 * @dt:         virtual address pointer to dt blob
  53 *
  54 * If a dtb was passed to the kernel, then use it to choose the correct
  55 * machine_desc and to setup the system.
  56 */
  57const struct machine_desc * __init setup_machine_fdt(void *dt)
  58{
  59        const struct machine_desc *mdesc;
  60
  61        /* check device tree validity */
  62        if (!early_init_dt_scan(dt))
  63                return NULL;
  64
  65        mdesc = of_flat_dt_match_machine(NULL, arch_get_next_mach);
  66        if (!mdesc)
  67                dump_machine_table(); /* does not return */
  68        pr_info("Machine name: %s\n", mdesc->name);
  69
  70        return mdesc;
  71}
  72