Blame view

include/dm/lists.h 2.95 KB
83d290c56   Tom Rini   SPDX: Convert all...
1
  /* SPDX-License-Identifier: GPL-2.0+ */
6494d708b   Simon Glass   dm: Add base driv...
2
3
4
5
6
  /*
   * Copyright (c) 2013 Google, Inc
   *
   * (C) Copyright 2012
   * Pavel Herrmann <morpheus.ibis@gmail.com>
6494d708b   Simon Glass   dm: Add base driv...
7
8
9
10
   */
  
  #ifndef _DM_LISTS_H_
  #define _DM_LISTS_H_
f5b5719cd   Simon Glass   dm: core: Update ...
11
  #include <dm/ofnode.h>
6494d708b   Simon Glass   dm: Add base driv...
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
  #include <dm/uclass-id.h>
  
  /**
   * lists_driver_lookup_name() - Return u_boot_driver corresponding to name
   *
   * This function returns a pointer to a driver given its name. This is used
   * for binding a driver given its name and platdata.
   *
   * @name: Name of driver to look up
   * @return pointer to driver, or NULL if not found
   */
  struct driver *lists_driver_lookup_name(const char *name);
  
  /**
   * lists_uclass_lookup() - Return uclass_driver based on ID of the class
   * id:		ID of the class
   *
   * This function returns the pointer to uclass_driver, which is the class's
   * base structure based on the ID of the class. Returns NULL on error.
   */
  struct uclass_driver *lists_uclass_lookup(enum uclass_id id);
f2bc6fc33   Simon Glass   dm: Tidy up four ...
33
34
35
36
37
38
  /**
   * lists_bind_drivers() - search for and bind all drivers to parent
   *
   * This searches the U_BOOT_DEVICE() structures and creates new devices for
   * each one. The devices will have @parent as their parent.
   *
81b4e751c   Masahiro Yamada   dm: fix comments
39
   * @parent: parent device (root)
6244fc64c   Bin Meng   dm: Correct pre_r...
40
41
   * @pre_reloc_only: If true, bind only drivers with the DM_FLAG_PRE_RELOC flag.
   * If false bind all drivers.
f2bc6fc33   Simon Glass   dm: Tidy up four ...
42
   */
00606d7e3   Simon Glass   dm: Allow drivers...
43
  int lists_bind_drivers(struct udevice *parent, bool pre_reloc_only);
6494d708b   Simon Glass   dm: Add base driv...
44

f2bc6fc33   Simon Glass   dm: Tidy up four ...
45
46
47
48
49
50
  /**
   * lists_bind_fdt() - bind a device tree node
   *
   * This creates a new device bound to the given device tree node, with
   * @parent as its parent.
   *
81b4e751c   Masahiro Yamada   dm: fix comments
51
   * @parent: parent device (root)
f5b5719cd   Simon Glass   dm: core: Update ...
52
   * @node: device tree node to bind
1f359e361   Simon Glass   dm: Adjust lists_...
53
   * @devp: if non-NULL, returns a pointer to the bound device
8d773c4ab   Bin Meng   dm: core: Respect...
54
55
   * @pre_reloc_only: If true, bind only nodes with special devicetree properties,
   * or drivers with the DM_FLAG_PRE_RELOC flag. If false bind all drivers.
1f359e361   Simon Glass   dm: Adjust lists_...
56
57
   * @return 0 if device was bound, -EINVAL if the device tree is invalid,
   * other -ve value on error
f2bc6fc33   Simon Glass   dm: Tidy up four ...
58
   */
8d773c4ab   Bin Meng   dm: core: Respect...
59
60
  int lists_bind_fdt(struct udevice *parent, ofnode node, struct udevice **devp,
  		   bool pre_reloc_only);
6494d708b   Simon Glass   dm: Add base driv...
61

e33dc221f   Simon Glass   dm: Add a functio...
62
63
64
65
66
67
68
69
  /**
   * device_bind_driver() - bind a device to a driver
   *
   * This binds a new device to a driver.
   *
   * @parent:	Parent device
   * @drv_name:	Name of driver to attach to this parent
   * @dev_name:	Name of the new device thus created
e6cabe4a6   Masahiro Yamada   dm: core: allow d...
70
   * @devp:	If non-NULL, returns the newly bound device
e33dc221f   Simon Glass   dm: Add a functio...
71
72
73
   */
  int device_bind_driver(struct udevice *parent, const char *drv_name,
  		       const char *dev_name, struct udevice **devp);
5b9000dd2   Simon Glass   dm: core: Add a f...
74
75
76
77
78
79
80
81
82
83
  /**
   * device_bind_driver_to_node() - bind a device to a driver for a node
   *
   * This binds a new device to a driver for a given device tree node. This
   * should only be needed if the node lacks a compatible strings.
   *
   * @parent:	Parent device
   * @drv_name:	Name of driver to attach to this parent
   * @dev_name:	Name of the new device thus created
   * @node:	Device tree node
e6cabe4a6   Masahiro Yamada   dm: core: allow d...
84
   * @devp:	If non-NULL, returns the newly bound device
5b9000dd2   Simon Glass   dm: core: Add a f...
85
86
   */
  int device_bind_driver_to_node(struct udevice *parent, const char *drv_name,
45a26867e   Simon Glass   dm: core: Update ...
87
  			       const char *dev_name, ofnode node,
5b9000dd2   Simon Glass   dm: core: Add a f...
88
  			       struct udevice **devp);
6494d708b   Simon Glass   dm: Add base driv...
89
  #endif