uboot/include/dm/root.h
<<
>>
Prefs
   1/*
   2 * Copyright (c) 2013 Google, Inc
   3 *
   4 * (C) Copyright 2012
   5 * Pavel Herrmann <morpheus.ibis@gmail.com>
   6 *
   7 * SPDX-License-Identifier:     GPL-2.0+
   8 */
   9
  10#ifndef _DM_ROOT_H_
  11#define _DM_ROOT_H_
  12
  13struct udevice;
  14
  15/**
  16 * dm_root() - Return pointer to the top of the driver tree
  17 *
  18 * This function returns pointer to the root node of the driver tree,
  19 *
  20 * @return pointer to root device, or NULL if not inited yet
  21 */
  22struct udevice *dm_root(void);
  23
  24struct global_data;
  25/**
  26 * dm_fixup_for_gd_move() - Handle global_data moving to a new place
  27 *
  28 * The uclass list is part of global_data. Due to the way lists work, moving
  29 * the list will cause it to become invalid. This function fixes that up so
  30 * that the uclass list will work correctly.
  31 */
  32void dm_fixup_for_gd_move(struct global_data *new_gd);
  33
  34/**
  35 * dm_scan_platdata() - Scan all platform data and bind drivers
  36 *
  37 * This scans all available platdata and creates drivers for each
  38 *
  39 * @pre_reloc_only: If true, bind only drivers with the DM_FLAG_PRE_RELOC
  40 * flag. If false bind all drivers.
  41 * @return 0 if OK, -ve on error
  42 */
  43int dm_scan_platdata(bool pre_reloc_only);
  44
  45/**
  46 * dm_scan_fdt() - Scan the device tree and bind drivers
  47 *
  48 * This scans the device tree and creates a driver for each node. Only
  49 * the top-level subnodes are examined.
  50 *
  51 * @blob: Pointer to device tree blob
  52 * @pre_reloc_only: If true, bind only drivers with the DM_FLAG_PRE_RELOC
  53 * flag. If false bind all drivers.
  54 * @return 0 if OK, -ve on error
  55 */
  56int dm_scan_fdt(const void *blob, bool pre_reloc_only);
  57
  58/**
  59 * dm_scan_fdt_node() - Scan the device tree and bind drivers for a node
  60 *
  61 * This scans the subnodes of a device tree node and and creates a driver
  62 * for each one.
  63 *
  64 * @parent: Parent device for the devices that will be created
  65 * @blob: Pointer to device tree blob
  66 * @offset: Offset of node to scan
  67 * @pre_reloc_only: If true, bind only drivers with the DM_FLAG_PRE_RELOC
  68 * flag. If false bind all drivers.
  69 * @return 0 if OK, -ve on error
  70 */
  71int dm_scan_fdt_node(struct udevice *parent, const void *blob, int offset,
  72                     bool pre_reloc_only);
  73
  74/**
  75 * dm_scan_other() - Scan for other devices
  76 *
  77 * Some devices may not be visible to Driver Model. This weak function can
  78 * be provided by boards which wish to create their own devices
  79 * programmaticaly. They should do this by calling device_bind() on each
  80 * device.
  81 *
  82 * @pre_reloc_only: If true, bind only drivers with the DM_FLAG_PRE_RELOC
  83 * flag. If false bind all drivers.
  84 */
  85int dm_scan_other(bool pre_reloc_only);
  86
  87/**
  88 * dm_init_and_scan() - Initialise Driver Model structures and scan for devices
  89 *
  90 * This function initialises the roots of the driver tree and uclass trees,
  91 * then scans and binds available devices from platform data and the FDT.
  92 * This calls dm_init() to set up Driver Model structures.
  93 *
  94 * @pre_reloc_only: If true, bind only drivers with the DM_FLAG_PRE_RELOC
  95 * flag. If false bind all drivers.
  96 * @return 0 if OK, -ve on error
  97 */
  98int dm_init_and_scan(bool pre_reloc_only);
  99
 100/**
 101 * dm_init() - Initialise Driver Model structures
 102 *
 103 * This function will initialize roots of driver tree and class tree.
 104 * This needs to be called before anything uses the DM
 105 *
 106 * @return 0 if OK, -ve on error
 107 */
 108int dm_init(void);
 109
 110/**
 111 * dm_uninit - Uninitialise Driver Model structures
 112 *
 113 * All devices will be removed and unbound
 114 * @return 0 if OK, -ve on error
 115 */
 116int dm_uninit(void);
 117
 118#endif
 119