mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-23 07:12:09 +00:00
dt/platform: allow device name to be overridden
Some platform code has specific requirements on the naming of devices. This patch allows callers of of_platform_populate() to provide a device name lookup table. Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
This commit is contained in:
parent
5de1540b7b
commit
15c3597d6e
2 changed files with 98 additions and 10 deletions
|
@ -19,6 +19,40 @@
|
|||
#include <linux/of_device.h>
|
||||
#include <linux/platform_device.h>
|
||||
|
||||
/**
|
||||
* struct of_dev_auxdata - lookup table entry for device names & platform_data
|
||||
* @compatible: compatible value of node to match against node
|
||||
* @phys_addr: Start address of registers to match against node
|
||||
* @name: Name to assign for matching nodes
|
||||
* @platform_data: platform_data to assign for matching nodes
|
||||
*
|
||||
* This lookup table allows the caller of of_platform_populate() to override
|
||||
* the names of devices when creating devices from the device tree. The table
|
||||
* should be terminated with an empty entry. It also allows the platform_data
|
||||
* pointer to be set.
|
||||
*
|
||||
* The reason for this functionality is that some Linux infrastructure uses
|
||||
* the device name to look up a specific device, but the Linux-specific names
|
||||
* are not encoded into the device tree, so the kernel needs to provide specific
|
||||
* values.
|
||||
*
|
||||
* Note: Using an auxdata lookup table should be considered a last resort when
|
||||
* converting a platform to use the DT. Normally the automatically generated
|
||||
* device name will not matter, and drivers should obtain data from the device
|
||||
* node instead of from an anonymouns platform_data pointer.
|
||||
*/
|
||||
struct of_dev_auxdata {
|
||||
char *compatible;
|
||||
resource_size_t phys_addr;
|
||||
char *name;
|
||||
void *platform_data;
|
||||
};
|
||||
|
||||
/* Macro to simplify populating a lookup table */
|
||||
#define OF_DEV_AUXDATA(_compat,_phys,_name,_pdata) \
|
||||
{ .compatible = _compat, .phys_addr = _phys, .name = _name, \
|
||||
.platform_data = _pdata }
|
||||
|
||||
/**
|
||||
* of_platform_driver - Legacy of-aware driver for platform devices.
|
||||
*
|
||||
|
@ -59,6 +93,7 @@ extern int of_platform_bus_probe(struct device_node *root,
|
|||
struct device *parent);
|
||||
extern int of_platform_populate(struct device_node *root,
|
||||
const struct of_device_id *matches,
|
||||
const struct of_dev_auxdata *lookup,
|
||||
struct device *parent);
|
||||
#endif /* !CONFIG_SPARC */
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue