]>
Commit | Line | Data |
---|---|---|
6494d708 SG |
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_LISTS_H_ | |
11 | #define _DM_LISTS_H_ | |
12 | ||
f5b5719c | 13 | #include <dm/ofnode.h> |
6494d708 SG |
14 | #include <dm/uclass-id.h> |
15 | ||
16 | /** | |
17 | * lists_driver_lookup_name() - Return u_boot_driver corresponding to name | |
18 | * | |
19 | * This function returns a pointer to a driver given its name. This is used | |
20 | * for binding a driver given its name and platdata. | |
21 | * | |
22 | * @name: Name of driver to look up | |
23 | * @return pointer to driver, or NULL if not found | |
24 | */ | |
25 | struct driver *lists_driver_lookup_name(const char *name); | |
26 | ||
27 | /** | |
28 | * lists_uclass_lookup() - Return uclass_driver based on ID of the class | |
29 | * id: ID of the class | |
30 | * | |
31 | * This function returns the pointer to uclass_driver, which is the class's | |
32 | * base structure based on the ID of the class. Returns NULL on error. | |
33 | */ | |
34 | struct uclass_driver *lists_uclass_lookup(enum uclass_id id); | |
35 | ||
f2bc6fc3 SG |
36 | /** |
37 | * lists_bind_drivers() - search for and bind all drivers to parent | |
38 | * | |
39 | * This searches the U_BOOT_DEVICE() structures and creates new devices for | |
40 | * each one. The devices will have @parent as their parent. | |
41 | * | |
81b4e751 | 42 | * @parent: parent device (root) |
f2bc6fc3 SG |
43 | * @early_only: If true, bind only drivers with the DM_INIT_F flag. If false |
44 | * bind all drivers. | |
45 | */ | |
00606d7e | 46 | int lists_bind_drivers(struct udevice *parent, bool pre_reloc_only); |
6494d708 | 47 | |
f2bc6fc3 SG |
48 | /** |
49 | * lists_bind_fdt() - bind a device tree node | |
50 | * | |
51 | * This creates a new device bound to the given device tree node, with | |
52 | * @parent as its parent. | |
53 | * | |
81b4e751 | 54 | * @parent: parent device (root) |
f5b5719c | 55 | * @node: device tree node to bind |
1f359e36 SG |
56 | * @devp: if non-NULL, returns a pointer to the bound device |
57 | * @return 0 if device was bound, -EINVAL if the device tree is invalid, | |
58 | * other -ve value on error | |
f2bc6fc3 | 59 | */ |
f5b5719c | 60 | int lists_bind_fdt(struct udevice *parent, ofnode node, struct udevice **devp); |
6494d708 | 61 | |
e33dc221 SG |
62 | /** |
63 | * device_bind_driver() - bind a device to a driver | |
64 | * | |
65 | * This binds a new device to a driver. | |
66 | * | |
67 | * @parent: Parent device | |
68 | * @drv_name: Name of driver to attach to this parent | |
69 | * @dev_name: Name of the new device thus created | |
e6cabe4a | 70 | * @devp: If non-NULL, returns the newly bound device |
e33dc221 SG |
71 | */ |
72 | int device_bind_driver(struct udevice *parent, const char *drv_name, | |
73 | const char *dev_name, struct udevice **devp); | |
74 | ||
5b9000dd SG |
75 | /** |
76 | * device_bind_driver_to_node() - bind a device to a driver for a node | |
77 | * | |
78 | * This binds a new device to a driver for a given device tree node. This | |
79 | * should only be needed if the node lacks a compatible strings. | |
80 | * | |
81 | * @parent: Parent device | |
82 | * @drv_name: Name of driver to attach to this parent | |
83 | * @dev_name: Name of the new device thus created | |
84 | * @node: Device tree node | |
e6cabe4a | 85 | * @devp: If non-NULL, returns the newly bound device |
5b9000dd SG |
86 | */ |
87 | int device_bind_driver_to_node(struct udevice *parent, const char *drv_name, | |
45a26867 | 88 | const char *dev_name, ofnode node, |
5b9000dd SG |
89 | struct udevice **devp); |
90 | ||
6494d708 | 91 | #endif |