version 1.20.2.4, 2018/09/06 06:55:30 |
version 1.20.2.5, 2018/09/30 01:45:41 |
Line 38 __KERNEL_RCSID(0, "$NetBSD$"); |
|
Line 38 __KERNEL_RCSID(0, "$NetBSD$"); |
|
#include "opt_cpuoptions.h" |
#include "opt_cpuoptions.h" |
|
|
#include "ukbd.h" |
#include "ukbd.h" |
|
#include "wsdisplay.h" |
|
|
#include <sys/param.h> |
#include <sys/param.h> |
#include <sys/systm.h> |
#include <sys/systm.h> |
Line 84 __KERNEL_RCSID(0, "$NetBSD$"); |
|
Line 85 __KERNEL_RCSID(0, "$NetBSD$"); |
|
#if NUKBD > 0 |
#if NUKBD > 0 |
#include <dev/usb/ukbdvar.h> |
#include <dev/usb/ukbdvar.h> |
#endif |
#endif |
|
#if NWSDISPLAY > 0 |
|
#include <dev/wscons/wsdisplayvar.h> |
|
#endif |
|
|
#ifdef MEMORY_DISK_DYNAMIC |
#ifdef MEMORY_DISK_DYNAMIC |
#include <dev/md.h> |
#include <dev/md.h> |
Line 108 static uint64_t initrd_start, initrd_end |
|
Line 112 static uint64_t initrd_start, initrd_end |
|
|
|
#include <libfdt.h> |
#include <libfdt.h> |
#include <dev/fdt/fdtvar.h> |
#include <dev/fdt/fdtvar.h> |
#define FDT_BUF_SIZE (256*1024) |
#define FDT_BUF_SIZE (512*1024) |
static uint8_t fdt_data[FDT_BUF_SIZE]; |
static uint8_t fdt_data[FDT_BUF_SIZE]; |
|
|
extern char KERNEL_BASE_phys[]; |
extern char KERNEL_BASE_phys[]; |
Line 116 extern char KERNEL_BASE_phys[]; |
|
Line 120 extern char KERNEL_BASE_phys[]; |
|
|
|
static void fdt_update_stdout_path(void); |
static void fdt_update_stdout_path(void); |
static void fdt_device_register(device_t, void *); |
static void fdt_device_register(device_t, void *); |
|
static void fdt_device_register_post_config(device_t, void *); |
static void fdt_cpu_rootconf(void); |
static void fdt_cpu_rootconf(void); |
static void fdt_reset(void); |
static void fdt_reset(void); |
static void fdt_powerdown(void); |
static void fdt_powerdown(void); |
Line 160 earlyconsgetc(dev_t dev) |
|
Line 165 earlyconsgetc(dev_t dev) |
|
#ifdef VERBOSE_INIT_ARM |
#ifdef VERBOSE_INIT_ARM |
#define VPRINTF(...) printf(__VA_ARGS__) |
#define VPRINTF(...) printf(__VA_ARGS__) |
#else |
#else |
#define VPRINTF(...) |
#define VPRINTF(...) do { } while (/* CONSTCOND */ 0) |
#endif |
#endif |
|
|
/* |
/* |
Line 372 initarm(void *arg) |
|
Line 377 initarm(void *arg) |
|
/* Load FDT */ |
/* Load FDT */ |
int error = fdt_check_header(fdt_addr_r); |
int error = fdt_check_header(fdt_addr_r); |
if (error == 0) { |
if (error == 0) { |
error = fdt_move(fdt_addr_r, fdt_data, sizeof(fdt_data)); |
/* If the DTB is too big, try to pack it in place first. */ |
|
if (fdt_totalsize(fdt_addr_r) > sizeof(fdt_data)) |
|
(void)fdt_pack(__UNCONST(fdt_addr_r)); |
|
error = fdt_open_into(fdt_addr_r, fdt_data, sizeof(fdt_data)); |
if (error != 0) |
if (error != 0) |
panic("fdt_move failed: %s", fdt_strerror(error)); |
panic("fdt_move failed: %s", fdt_strerror(error)); |
fdtbus_set_data(fdt_data); |
fdtbus_set_data(fdt_data); |
Line 413 initarm(void *arg) |
|
Line 421 initarm(void *arg) |
|
*/ |
*/ |
fdt_update_stdout_path(); |
fdt_update_stdout_path(); |
|
|
|
/* |
|
* Done making changes to the FDT. |
|
*/ |
|
fdt_pack(fdt_data); |
|
|
VPRINTF("consinit "); |
VPRINTF("consinit "); |
consinit(); |
consinit(); |
VPRINTF("ok\n"); |
VPRINTF("ok\n"); |
Line 423 initarm(void *arg) |
|
Line 436 initarm(void *arg) |
|
cpu_reset_address = fdt_reset; |
cpu_reset_address = fdt_reset; |
cpu_powerdown_address = fdt_powerdown; |
cpu_powerdown_address = fdt_powerdown; |
evbarm_device_register = fdt_device_register; |
evbarm_device_register = fdt_device_register; |
|
evbarm_device_register_post_config = fdt_device_register_post_config; |
evbarm_cpu_rootconf = fdt_cpu_rootconf; |
evbarm_cpu_rootconf = fdt_cpu_rootconf; |
|
|
/* Talk to the user */ |
/* Talk to the user */ |
Line 459 initarm(void *arg) |
|
Line 473 initarm(void *arg) |
|
|
|
parse_mi_bootargs(boot_args); |
parse_mi_bootargs(boot_args); |
|
|
#define MAX_PHYSMEM 16 |
#define MAX_PHYSMEM 64 |
static struct boot_physmem fdt_physmem[MAX_PHYSMEM]; |
static struct boot_physmem fdt_physmem[MAX_PHYSMEM]; |
int nfdt_physmem = 0; |
int nfdt_physmem = 0; |
struct extent_region *er; |
struct extent_region *er; |
|
|
|
|
cons->consinit(&faa, uart_freq); |
cons->consinit(&faa, uart_freq); |
|
|
#if NUKBD > 0 |
|
ukbd_cnattach(); /* allow USB keyboard to become console */ |
|
#endif |
|
|
|
initialized = true; |
initialized = true; |
} |
} |
|
|
Line 621 fdt_device_register(device_t self, void |
|
Line 631 fdt_device_register(device_t self, void |
|
} |
} |
|
|
static void |
static void |
|
fdt_device_register_post_config(device_t self, void *aux) |
|
{ |
|
#if NUKBD > 0 && NWSDISPLAY > 0 |
|
if (device_is_a(self, "wsdisplay")) { |
|
struct wsdisplay_softc *sc = device_private(self); |
|
if (wsdisplay_isconsole(sc)) |
|
ukbd_cnattach(); |
|
} |
|
#endif |
|
} |
|
|
|
static void |
fdt_cpu_rootconf(void) |
fdt_cpu_rootconf(void) |
{ |
{ |
device_t dev; |
device_t dev; |
Line 634 fdt_cpu_rootconf(void) |
|
Line 656 fdt_cpu_rootconf(void) |
|
if (get_bootconf_option(boot_args, "root", BOOTOPT_TYPE_STRING, &ptr) != 0) |
if (get_bootconf_option(boot_args, "root", BOOTOPT_TYPE_STRING, &ptr) != 0) |
break; |
break; |
|
|
if (device_is_a(dev, "ld") || device_is_a(dev, "sd") || device_is_a(dev, "ld")) |
if (device_is_a(dev, "ld") || device_is_a(dev, "sd") || device_is_a(dev, "wd")) |
fdt_detect_root_device(dev); |
fdt_detect_root_device(dev); |
} |
} |
deviter_release(&di); |
deviter_release(&di); |