You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
Merge branch 'devicetree/next' of git://git.secretlab.ca/git/linux-2.6
* 'devicetree/next' of git://git.secretlab.ca/git/linux-2.6: dt: include linux/errno.h in linux/of_address.h of/address: Add of_find_matching_node_by_address helper dt: remove extra xsysace platform_driver registration tty/serial: Add devicetree support for nVidia Tegra serial ports dt: add empty of_property_read_u32[_array] for non-dt dt: bindings: move SEC node under new crypto/ dt: add helper function to read u32 arrays tty/serial: change of_serial to use new of_property_read_u32() api dt: add 'const' for of_property_read_string parameter **out_string dt: add helper functions to read u32 and string property values tty: of_serial: support for 32 bit accesses dt: document the of_serial bindings dt/platform: allow device name to be overridden drivers/amba: create devices from device tree dt: add of_platform_populate() for creating device from the device tree dt: Add default match table for bus ids
This commit is contained in:
+28
-1
@@ -195,6 +195,13 @@ extern struct device_node *of_find_node_with_property(
|
||||
extern struct property *of_find_property(const struct device_node *np,
|
||||
const char *name,
|
||||
int *lenp);
|
||||
extern int of_property_read_u32_array(const struct device_node *np,
|
||||
char *propname,
|
||||
u32 *out_values,
|
||||
size_t sz);
|
||||
|
||||
extern int of_property_read_string(struct device_node *np, char *propname,
|
||||
const char **out_string);
|
||||
extern int of_device_is_compatible(const struct device_node *device,
|
||||
const char *);
|
||||
extern int of_device_is_available(const struct device_node *device);
|
||||
@@ -227,12 +234,32 @@ extern void of_attach_node(struct device_node *);
|
||||
extern void of_detach_node(struct device_node *);
|
||||
#endif
|
||||
|
||||
#else
|
||||
#else /* CONFIG_OF */
|
||||
|
||||
static inline bool of_have_populated_dt(void)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
static inline int of_property_read_u32_array(const struct device_node *np,
|
||||
char *propname, u32 *out_values, size_t sz)
|
||||
{
|
||||
return -ENOSYS;
|
||||
}
|
||||
|
||||
static inline int of_property_read_string(struct device_node *np,
|
||||
char *propname, const char **out_string)
|
||||
{
|
||||
return -ENOSYS;
|
||||
}
|
||||
|
||||
#endif /* CONFIG_OF */
|
||||
|
||||
static inline int of_property_read_u32(const struct device_node *np,
|
||||
char *propname,
|
||||
u32 *out_value)
|
||||
{
|
||||
return of_property_read_u32_array(np, propname, out_value, 1);
|
||||
}
|
||||
|
||||
#endif /* _LINUX_OF_H */
|
||||
|
||||
@@ -1,11 +1,16 @@
|
||||
#ifndef __OF_ADDRESS_H
|
||||
#define __OF_ADDRESS_H
|
||||
#include <linux/ioport.h>
|
||||
#include <linux/errno.h>
|
||||
#include <linux/of.h>
|
||||
|
||||
extern u64 of_translate_address(struct device_node *np, const __be32 *addr);
|
||||
extern int of_address_to_resource(struct device_node *dev, int index,
|
||||
struct resource *r);
|
||||
extern struct device_node *of_find_matching_node_by_address(
|
||||
struct device_node *from,
|
||||
const struct of_device_id *matches,
|
||||
u64 base_address);
|
||||
extern void __iomem *of_iomap(struct device_node *device, int index);
|
||||
|
||||
/* Extract an address from a device, returns the region size and
|
||||
|
||||
@@ -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.
|
||||
*
|
||||
@@ -40,6 +74,8 @@ struct of_platform_driver
|
||||
#define to_of_platform_driver(drv) \
|
||||
container_of(drv,struct of_platform_driver, driver)
|
||||
|
||||
extern const struct of_device_id of_default_bus_match_table[];
|
||||
|
||||
/* Platform drivers register/unregister */
|
||||
extern struct platform_device *of_device_alloc(struct device_node *np,
|
||||
const char *bus_id,
|
||||
@@ -55,6 +91,10 @@ extern struct platform_device *of_platform_device_create(struct device_node *np,
|
||||
extern int of_platform_bus_probe(struct device_node *root,
|
||||
const struct of_device_id *matches,
|
||||
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 */
|
||||
|
||||
#endif /* CONFIG_OF_DEVICE */
|
||||
|
||||
Reference in New Issue
Block a user