]>
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_ROOT_H_ | |
11 | #define _DM_ROOT_H_ | |
12 | ||
54c5d08a | 13 | struct udevice; |
6494d708 SG |
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 | */ | |
54c5d08a | 22 | struct udevice *dm_root(void); |
6494d708 SG |
23 | |
24 | /** | |
25 | * dm_scan_platdata() - Scan all platform data and bind drivers | |
26 | * | |
27 | * This scans all available platdata and creates drivers for each | |
28 | * | |
00606d7e SG |
29 | * @pre_reloc_only: If true, bind only drivers with the DM_FLAG_PRE_RELOC |
30 | * flag. If false bind all drivers. | |
6494d708 SG |
31 | * @return 0 if OK, -ve on error |
32 | */ | |
00606d7e | 33 | int dm_scan_platdata(bool pre_reloc_only); |
6494d708 SG |
34 | |
35 | /** | |
36 | * dm_scan_fdt() - Scan the device tree and bind drivers | |
37 | * | |
0040b944 SG |
38 | * This scans the device tree and creates a driver for each node. Only |
39 | * the top-level subnodes are examined. | |
6494d708 SG |
40 | * |
41 | * @blob: Pointer to device tree blob | |
00606d7e SG |
42 | * @pre_reloc_only: If true, bind only drivers with the DM_FLAG_PRE_RELOC |
43 | * flag. If false bind all drivers. | |
6494d708 SG |
44 | * @return 0 if OK, -ve on error |
45 | */ | |
00606d7e | 46 | int dm_scan_fdt(const void *blob, bool pre_reloc_only); |
6494d708 | 47 | |
1ca7e206 SG |
48 | /** |
49 | * dm_scan_fdt_node() - Scan the device tree and bind drivers for a node | |
50 | * | |
51 | * This scans the subnodes of a device tree node and and creates a driver | |
52 | * for each one. | |
53 | * | |
54 | * @parent: Parent device for the devices that will be created | |
55 | * @blob: Pointer to device tree blob | |
56 | * @offset: Offset of node to scan | |
57 | * @pre_reloc_only: If true, bind only drivers with the DM_FLAG_PRE_RELOC | |
58 | * flag. If false bind all drivers. | |
59 | * @return 0 if OK, -ve on error | |
60 | */ | |
61 | int dm_scan_fdt_node(struct udevice *parent, const void *blob, int offset, | |
62 | bool pre_reloc_only); | |
63 | ||
bb58503d SG |
64 | /** |
65 | * dm_scan_other() - Scan for other devices | |
66 | * | |
67 | * Some devices may not be visible to Driver Model. This weak function can | |
68 | * be provided by boards which wish to create their own devices | |
69 | * programmaticaly. They should do this by calling device_bind() on each | |
70 | * device. | |
71 | * | |
72 | * @pre_reloc_only: If true, bind only drivers with the DM_FLAG_PRE_RELOC | |
73 | * flag. If false bind all drivers. | |
74 | */ | |
75 | int dm_scan_other(bool pre_reloc_only); | |
76 | ||
ab7cd627 SG |
77 | /** |
78 | * dm_init_and_scan() - Initialise Driver Model structures and scan for devices | |
79 | * | |
80 | * This function initialises the roots of the driver tree and uclass trees, | |
81 | * then scans and binds available devices from platform data and the FDT. | |
82 | * This calls dm_init() to set up Driver Model structures. | |
83 | * | |
84 | * @pre_reloc_only: If true, bind only drivers with the DM_FLAG_PRE_RELOC | |
85 | * flag. If false bind all drivers. | |
86 | * @return 0 if OK, -ve on error | |
87 | */ | |
88 | int dm_init_and_scan(bool pre_reloc_only); | |
89 | ||
6494d708 | 90 | /** |
f2bc6fc3 | 91 | * dm_init() - Initialise Driver Model structures |
6494d708 SG |
92 | * |
93 | * This function will initialize roots of driver tree and class tree. | |
94 | * This needs to be called before anything uses the DM | |
95 | * | |
96 | * @return 0 if OK, -ve on error | |
97 | */ | |
98 | int dm_init(void); | |
99 | ||
9adbd7a1 SG |
100 | /** |
101 | * dm_uninit - Uninitialise Driver Model structures | |
102 | * | |
103 | * All devices will be removed and unbound | |
104 | * @return 0 if OK, -ve on error | |
105 | */ | |
106 | int dm_uninit(void); | |
107 | ||
6494d708 | 108 | #endif |