16494d708SSimon Glass /* 26494d708SSimon Glass * Copyright (c) 2013 Google, Inc 36494d708SSimon Glass * 46494d708SSimon Glass * (C) Copyright 2012 56494d708SSimon Glass * Pavel Herrmann <morpheus.ibis@gmail.com> 66494d708SSimon Glass * 76494d708SSimon Glass * SPDX-License-Identifier: GPL-2.0+ 86494d708SSimon Glass */ 96494d708SSimon Glass 106494d708SSimon Glass #ifndef _DM_LISTS_H_ 116494d708SSimon Glass #define _DM_LISTS_H_ 126494d708SSimon Glass 136494d708SSimon Glass #include <dm/uclass-id.h> 146494d708SSimon Glass 156494d708SSimon Glass /** 166494d708SSimon Glass * lists_driver_lookup_name() - Return u_boot_driver corresponding to name 176494d708SSimon Glass * 186494d708SSimon Glass * This function returns a pointer to a driver given its name. This is used 196494d708SSimon Glass * for binding a driver given its name and platdata. 206494d708SSimon Glass * 216494d708SSimon Glass * @name: Name of driver to look up 226494d708SSimon Glass * @return pointer to driver, or NULL if not found 236494d708SSimon Glass */ 246494d708SSimon Glass struct driver *lists_driver_lookup_name(const char *name); 256494d708SSimon Glass 266494d708SSimon Glass /** 276494d708SSimon Glass * lists_uclass_lookup() - Return uclass_driver based on ID of the class 286494d708SSimon Glass * id: ID of the class 296494d708SSimon Glass * 306494d708SSimon Glass * This function returns the pointer to uclass_driver, which is the class's 316494d708SSimon Glass * base structure based on the ID of the class. Returns NULL on error. 326494d708SSimon Glass */ 336494d708SSimon Glass struct uclass_driver *lists_uclass_lookup(enum uclass_id id); 346494d708SSimon Glass 35f2bc6fc3SSimon Glass /** 36f2bc6fc3SSimon Glass * lists_bind_drivers() - search for and bind all drivers to parent 37f2bc6fc3SSimon Glass * 38f2bc6fc3SSimon Glass * This searches the U_BOOT_DEVICE() structures and creates new devices for 39f2bc6fc3SSimon Glass * each one. The devices will have @parent as their parent. 40f2bc6fc3SSimon Glass * 4181b4e751SMasahiro Yamada * @parent: parent device (root) 42f2bc6fc3SSimon Glass * @early_only: If true, bind only drivers with the DM_INIT_F flag. If false 43f2bc6fc3SSimon Glass * bind all drivers. 44f2bc6fc3SSimon Glass */ 4500606d7eSSimon Glass int lists_bind_drivers(struct udevice *parent, bool pre_reloc_only); 466494d708SSimon Glass 47f2bc6fc3SSimon Glass /** 48f2bc6fc3SSimon Glass * lists_bind_fdt() - bind a device tree node 49f2bc6fc3SSimon Glass * 50f2bc6fc3SSimon Glass * This creates a new device bound to the given device tree node, with 51f2bc6fc3SSimon Glass * @parent as its parent. 52f2bc6fc3SSimon Glass * 5381b4e751SMasahiro Yamada * @parent: parent device (root) 54f2bc6fc3SSimon Glass * @blob: device tree blob 55f2bc6fc3SSimon Glass * @offset: offset of this device tree node 561f359e36SSimon Glass * @devp: if non-NULL, returns a pointer to the bound device 571f359e36SSimon Glass * @return 0 if device was bound, -EINVAL if the device tree is invalid, 581f359e36SSimon Glass * other -ve value on error 59f2bc6fc3SSimon Glass */ 601f359e36SSimon Glass int lists_bind_fdt(struct udevice *parent, const void *blob, int offset, 611f359e36SSimon Glass struct udevice **devp); 626494d708SSimon Glass 63*e33dc221SSimon Glass /** 64*e33dc221SSimon Glass * device_bind_driver() - bind a device to a driver 65*e33dc221SSimon Glass * 66*e33dc221SSimon Glass * This binds a new device to a driver. 67*e33dc221SSimon Glass * 68*e33dc221SSimon Glass * @parent: Parent device 69*e33dc221SSimon Glass * @drv_name: Name of driver to attach to this parent 70*e33dc221SSimon Glass * @dev_name: Name of the new device thus created 71*e33dc221SSimon Glass * @devp: Returns the newly bound device 72*e33dc221SSimon Glass */ 73*e33dc221SSimon Glass int device_bind_driver(struct udevice *parent, const char *drv_name, 74*e33dc221SSimon Glass const char *dev_name, struct udevice **devp); 75*e33dc221SSimon Glass 766494d708SSimon Glass #endif 77