root/arch/mips/kernel/prom.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. mips_set_machine_name
  2. mips_get_machine_name
  3. early_init_dt_add_memory_arch
  4. early_init_dt_reserve_memory_arch
  5. __dt_setup_arch
  6. __dt_register_buses

   1 // SPDX-License-Identifier: GPL-2.0-only
   2 /*
   3  * MIPS support for CONFIG_OF device tree support
   4  *
   5  * Copyright (C) 2010 Cisco Systems Inc. <dediao@cisco.com>
   6  */
   7 
   8 #include <linux/init.h>
   9 #include <linux/export.h>
  10 #include <linux/errno.h>
  11 #include <linux/types.h>
  12 #include <linux/memblock.h>
  13 #include <linux/debugfs.h>
  14 #include <linux/of.h>
  15 #include <linux/of_fdt.h>
  16 #include <linux/of_platform.h>
  17 
  18 #include <asm/bootinfo.h>
  19 #include <asm/page.h>
  20 #include <asm/prom.h>
  21 
  22 static char mips_machine_name[64] = "Unknown";
  23 
  24 __init void mips_set_machine_name(const char *name)
  25 {
  26         if (name == NULL)
  27                 return;
  28 
  29         strlcpy(mips_machine_name, name, sizeof(mips_machine_name));
  30         pr_info("MIPS: machine is %s\n", mips_get_machine_name());
  31 }
  32 
  33 char *mips_get_machine_name(void)
  34 {
  35         return mips_machine_name;
  36 }
  37 
  38 #ifdef CONFIG_USE_OF
  39 void __init early_init_dt_add_memory_arch(u64 base, u64 size)
  40 {
  41         if (base >= PHYS_ADDR_MAX) {
  42                 pr_warn("Trying to add an invalid memory region, skipped\n");
  43                 return;
  44         }
  45 
  46         /* Truncate the passed memory region instead of type casting */
  47         if (base + size - 1 >= PHYS_ADDR_MAX || base + size < base) {
  48                 pr_warn("Truncate memory region %llx @ %llx to size %llx\n",
  49                         size, base, PHYS_ADDR_MAX - base);
  50                 size = PHYS_ADDR_MAX - base;
  51         }
  52 
  53         add_memory_region(base, size, BOOT_MEM_RAM);
  54 }
  55 
  56 int __init early_init_dt_reserve_memory_arch(phys_addr_t base,
  57                                         phys_addr_t size, bool nomap)
  58 {
  59         add_memory_region(base, size,
  60                           nomap ? BOOT_MEM_NOMAP : BOOT_MEM_RESERVED);
  61 
  62         return 0;
  63 }
  64 
  65 void __init __dt_setup_arch(void *bph)
  66 {
  67         if (!early_init_dt_scan(bph))
  68                 return;
  69 
  70         mips_set_machine_name(of_flat_dt_get_machine_name());
  71 }
  72 
  73 int __init __dt_register_buses(const char *bus0, const char *bus1)
  74 {
  75         static struct of_device_id of_ids[3];
  76 
  77         if (!of_have_populated_dt())
  78                 panic("device tree not present");
  79 
  80         strlcpy(of_ids[0].compatible, bus0, sizeof(of_ids[0].compatible));
  81         if (bus1) {
  82                 strlcpy(of_ids[1].compatible, bus1,
  83                         sizeof(of_ids[1].compatible));
  84         }
  85 
  86         if (of_platform_populate(NULL, of_ids, NULL, NULL))
  87                 panic("failed to populate DT");
  88 
  89         return 0;
  90 }
  91 
  92 #endif

/* [<][>][^][v][top][bottom][index][help] */