uboot/cmd/dm.c
<<
>>
Prefs
   1// SPDX-License-Identifier: GPL-2.0+
   2/*
   3 * Copyright (c) 2013 Google, Inc
   4 *
   5 * (C) Copyright 2012
   6 * Marek Vasut <marex@denx.de>
   7 */
   8
   9#include <common.h>
  10#include <command.h>
  11#include <dm.h>
  12#include <malloc.h>
  13#include <mapmem.h>
  14#include <errno.h>
  15#include <asm/io.h>
  16#include <dm/root.h>
  17#include <dm/util.h>
  18
  19static int do_dm_dump_all(struct cmd_tbl *cmdtp, int flag, int argc,
  20                          char *const argv[])
  21{
  22        dm_dump_all();
  23
  24        return 0;
  25}
  26
  27static int do_dm_dump_uclass(struct cmd_tbl *cmdtp, int flag, int argc,
  28                             char *const argv[])
  29{
  30        dm_dump_uclass();
  31
  32        return 0;
  33}
  34
  35static int do_dm_dump_devres(struct cmd_tbl *cmdtp, int flag, int argc,
  36                             char *const argv[])
  37{
  38        dm_dump_devres();
  39
  40        return 0;
  41}
  42
  43static int do_dm_dump_drivers(struct cmd_tbl *cmdtp, int flag, int argc,
  44                              char *const argv[])
  45{
  46        dm_dump_drivers();
  47
  48        return 0;
  49}
  50
  51static int do_dm_dump_driver_compat(struct cmd_tbl *cmdtp, int flag, int argc,
  52                                    char * const argv[])
  53{
  54        dm_dump_driver_compat();
  55
  56        return 0;
  57}
  58
  59static int do_dm_dump_static_driver_info(struct cmd_tbl *cmdtp, int flag, int argc,
  60                                         char * const argv[])
  61{
  62        dm_dump_static_driver_info();
  63
  64        return 0;
  65}
  66
  67static struct cmd_tbl test_commands[] = {
  68        U_BOOT_CMD_MKENT(tree, 0, 1, do_dm_dump_all, "", ""),
  69        U_BOOT_CMD_MKENT(uclass, 1, 1, do_dm_dump_uclass, "", ""),
  70        U_BOOT_CMD_MKENT(devres, 1, 1, do_dm_dump_devres, "", ""),
  71        U_BOOT_CMD_MKENT(drivers, 1, 1, do_dm_dump_drivers, "", ""),
  72        U_BOOT_CMD_MKENT(compat, 1, 1, do_dm_dump_driver_compat, "", ""),
  73        U_BOOT_CMD_MKENT(static, 1, 1, do_dm_dump_static_driver_info, "", ""),
  74};
  75
  76static __maybe_unused void dm_reloc(void)
  77{
  78        static int relocated;
  79
  80        if (!relocated) {
  81                fixup_cmdtable(test_commands, ARRAY_SIZE(test_commands));
  82                relocated = 1;
  83        }
  84}
  85
  86static int do_dm(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
  87{
  88        struct cmd_tbl *test_cmd;
  89        int ret;
  90
  91#ifdef CONFIG_NEEDS_MANUAL_RELOC
  92        dm_reloc();
  93#endif
  94
  95        if (argc < 2)
  96                return CMD_RET_USAGE;
  97        test_cmd = find_cmd_tbl(argv[1], test_commands,
  98                                ARRAY_SIZE(test_commands));
  99        argc -= 2;
 100        argv += 2;
 101        if (!test_cmd || argc > test_cmd->maxargs)
 102                return CMD_RET_USAGE;
 103
 104        ret = test_cmd->cmd(test_cmd, flag, argc, argv);
 105
 106        return cmd_process_error(test_cmd, ret);
 107}
 108
 109U_BOOT_CMD(
 110        dm,     3,      1,      do_dm,
 111        "Driver model low level access",
 112        "tree          Dump driver model tree ('*' = activated)\n"
 113        "dm uclass        Dump list of instances for each uclass\n"
 114        "dm devres        Dump list of device resources for each device\n"
 115        "dm drivers       Dump list of drivers with uclass and instances\n"
 116        "dm compat        Dump list of drivers with compatibility strings\n"
 117        "dm static        Dump list of drivers with static platform data"
 118);
 119