Merge tag 'devicetree-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/glikely/linux
Pull devicetree updates from Grant Likely: "A whole lot of bug fixes. Nothing stands out here except the ability to enable CONFIG_OF on every architecture, and an import of a newer version of dtc" * tag 'devicetree-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/glikely/linux: (22 commits) of/irq: Rename "intc_desc" to "of_intc_desc" to fix OF on sh of/irq: Fix pSeries boot failure Documentation: DT: Fix a typo in the filename "lantiq,<chip>-pinumx.txt" of: define of_find_node_by_phandle for !CONFIG_OF of/address: use atomic allocation in pci_register_io_range() of: Add vendor prefix for Zodiac Inflight Innovations dt/fdt: add empty versions of early_init_dt_*_memory_arch of: clean-up unnecessary libfdt include paths of: make unittest select OF_EARLY_FLATTREE instead of depend on it of: make CONFIG_OF user selectable MIPS: prepare for user enabling of CONFIG_OF of/fdt: fix argument name and add comments of unflatten_dt_node() of: return NUMA_NO_NODE from fallback of_node_to_nid() tps6507x.txt: Remove executable permission of/overlay: Grammar s/an negative/a negative/ of/fdt: Make fdt blob input parameters of unflatten functions const of: add helper function to retrive match data of: Grammar s/property exist/property exists/ of: Move OF flags to be visible even when !CONFIG_OF scripts/dtc: Update to upstream version 9d3649bd3be245c9 ...
This commit is contained in:
@@ -1,15 +1,20 @@
|
||||
config DTC
|
||||
bool
|
||||
|
||||
config OF
|
||||
bool
|
||||
menuconfig OF
|
||||
bool "Device Tree and Open Firmware support"
|
||||
help
|
||||
This option enables the device tree infrastructure.
|
||||
It is automatically selected by platforms that need it or can
|
||||
be enabled manually for unittests, overlays or
|
||||
compile-coverage.
|
||||
|
||||
menu "Device Tree and Open Firmware support"
|
||||
depends on OF
|
||||
if OF
|
||||
|
||||
config OF_UNITTEST
|
||||
bool "Device Tree runtime unit tests"
|
||||
depends on OF_IRQ && OF_EARLY_FLATTREE
|
||||
depends on OF_IRQ
|
||||
select OF_EARLY_FLATTREE
|
||||
select OF_RESOLVE
|
||||
help
|
||||
This option builds in test cases for the device tree infrastructure
|
||||
@@ -97,4 +102,4 @@ config OF_OVERLAY
|
||||
While this option is selected automatically when needed, you can
|
||||
enable it manually to improve device tree unit test coverage.
|
||||
|
||||
endmenu # OF
|
||||
endif # OF
|
||||
|
@@ -16,6 +16,3 @@ obj-$(CONFIG_OF_RESOLVE) += resolver.o
|
||||
obj-$(CONFIG_OF_OVERLAY) += overlay.o
|
||||
|
||||
obj-$(CONFIG_OF_UNITTEST) += unittest-data/
|
||||
|
||||
CFLAGS_fdt.o = -I$(src)/../../scripts/dtc/libfdt
|
||||
CFLAGS_fdt_address.o = -I$(src)/../../scripts/dtc/libfdt
|
||||
|
@@ -712,7 +712,7 @@ int __weak pci_register_io_range(phys_addr_t addr, resource_size_t size)
|
||||
}
|
||||
|
||||
/* add the range to the list */
|
||||
range = kzalloc(sizeof(*range), GFP_KERNEL);
|
||||
range = kzalloc(sizeof(*range), GFP_ATOMIC);
|
||||
if (!range) {
|
||||
err = -ENOMEM;
|
||||
goto end_register;
|
||||
|
@@ -89,7 +89,7 @@ EXPORT_SYMBOL(of_n_size_cells);
|
||||
#ifdef CONFIG_NUMA
|
||||
int __weak of_node_to_nid(struct device_node *np)
|
||||
{
|
||||
return numa_node_id();
|
||||
return NUMA_NO_NODE;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@@ -163,6 +163,18 @@ void of_device_unregister(struct platform_device *ofdev)
|
||||
}
|
||||
EXPORT_SYMBOL(of_device_unregister);
|
||||
|
||||
const void *of_device_get_match_data(const struct device *dev)
|
||||
{
|
||||
const struct of_device_id *match;
|
||||
|
||||
match = of_match_device(dev->driver->of_match_table, dev);
|
||||
if (!match)
|
||||
return NULL;
|
||||
|
||||
return match->data;
|
||||
}
|
||||
EXPORT_SYMBOL(of_device_get_match_data);
|
||||
|
||||
ssize_t of_device_get_modalias(struct device *dev, char *str, ssize_t len)
|
||||
{
|
||||
const char *compat;
|
||||
|
@@ -164,11 +164,14 @@ static void *unflatten_dt_alloc(void **mem, unsigned long size,
|
||||
* unflatten_dt_node - Alloc and populate a device_node from the flat tree
|
||||
* @blob: The parent device tree blob
|
||||
* @mem: Memory chunk to use for allocating device nodes and properties
|
||||
* @p: pointer to node in flat tree
|
||||
* @poffset: pointer to node in flat tree
|
||||
* @dad: Parent struct device_node
|
||||
* @nodepp: The device_node tree created by the call
|
||||
* @fpsize: Size of the node path up at the current depth.
|
||||
* @dryrun: If true, do not allocate device nodes but still calculate needed
|
||||
* memory size
|
||||
*/
|
||||
static void * unflatten_dt_node(void *blob,
|
||||
static void * unflatten_dt_node(const void *blob,
|
||||
void *mem,
|
||||
int *poffset,
|
||||
struct device_node *dad,
|
||||
@@ -378,7 +381,7 @@ static void * unflatten_dt_node(void *blob,
|
||||
* @dt_alloc: An allocator that provides a virtual address to memory
|
||||
* for the resulting tree
|
||||
*/
|
||||
static void __unflatten_device_tree(void *blob,
|
||||
static void __unflatten_device_tree(const void *blob,
|
||||
struct device_node **mynodes,
|
||||
void * (*dt_alloc)(u64 size, u64 align))
|
||||
{
|
||||
@@ -441,7 +444,7 @@ static void *kernel_tree_alloc(u64 size, u64 align)
|
||||
* pointers of the nodes so the normal device-tree walking functions
|
||||
* can be used.
|
||||
*/
|
||||
void of_fdt_unflatten_tree(unsigned long *blob,
|
||||
void of_fdt_unflatten_tree(const unsigned long *blob,
|
||||
struct device_node **mynodes)
|
||||
{
|
||||
__unflatten_device_tree(blob, mynodes, &kernel_tree_alloc);
|
||||
@@ -1024,6 +1027,11 @@ void * __init __weak early_init_dt_alloc_memory_arch(u64 size, u64 align)
|
||||
return __va(memblock_alloc(size, align));
|
||||
}
|
||||
#else
|
||||
void __init __weak early_init_dt_add_memory_arch(u64 base, u64 size)
|
||||
{
|
||||
WARN_ON(1);
|
||||
}
|
||||
|
||||
int __init __weak early_init_dt_reserve_memory_arch(phys_addr_t base,
|
||||
phys_addr_t size, bool nomap)
|
||||
{
|
||||
@@ -1031,6 +1039,12 @@ int __init __weak early_init_dt_reserve_memory_arch(phys_addr_t base,
|
||||
&base, &size, nomap ? " (nomap)" : "");
|
||||
return -ENOSYS;
|
||||
}
|
||||
|
||||
void * __init __weak early_init_dt_alloc_memory_arch(u64 size, u64 align)
|
||||
{
|
||||
WARN_ON(1);
|
||||
return NULL;
|
||||
}
|
||||
#endif
|
||||
|
||||
bool __init early_init_dt_verify(void *params)
|
||||
|
@@ -252,8 +252,6 @@ int of_irq_parse_raw(const __be32 *addr, struct of_phandle_args *out_irq)
|
||||
* Successfully parsed an interrrupt-map translation; copy new
|
||||
* interrupt specifier into the out_irq structure
|
||||
*/
|
||||
out_irq->np = newpar;
|
||||
|
||||
match_array = imap - newaddrsize - newintsize;
|
||||
for (i = 0; i < newintsize; i++)
|
||||
out_irq->args[i] = be32_to_cpup(imap - newintsize + i);
|
||||
@@ -262,6 +260,7 @@ int of_irq_parse_raw(const __be32 *addr, struct of_phandle_args *out_irq)
|
||||
|
||||
skiplevel:
|
||||
/* Iterate again with new parent */
|
||||
out_irq->np = newpar;
|
||||
pr_debug(" -> new parent: %s\n", of_node_full_name(newpar));
|
||||
of_node_put(ipar);
|
||||
ipar = newpar;
|
||||
@@ -469,7 +468,7 @@ int of_irq_to_resource_table(struct device_node *dev, struct resource *res,
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(of_irq_to_resource_table);
|
||||
|
||||
struct intc_desc {
|
||||
struct of_intc_desc {
|
||||
struct list_head list;
|
||||
struct device_node *dev;
|
||||
struct device_node *interrupt_parent;
|
||||
@@ -485,7 +484,7 @@ struct intc_desc {
|
||||
void __init of_irq_init(const struct of_device_id *matches)
|
||||
{
|
||||
struct device_node *np, *parent = NULL;
|
||||
struct intc_desc *desc, *temp_desc;
|
||||
struct of_intc_desc *desc, *temp_desc;
|
||||
struct list_head intc_desc_list, intc_parent_list;
|
||||
|
||||
INIT_LIST_HEAD(&intc_desc_list);
|
||||
@@ -496,7 +495,7 @@ void __init of_irq_init(const struct of_device_id *matches)
|
||||
!of_device_is_available(np))
|
||||
continue;
|
||||
/*
|
||||
* Here, we allocate and populate an intc_desc with the node
|
||||
* Here, we allocate and populate an of_intc_desc with the node
|
||||
* pointer, interrupt-parent device_node etc.
|
||||
*/
|
||||
desc = kzalloc(sizeof(*desc), GFP_KERNEL);
|
||||
|
@@ -333,7 +333,7 @@ static DEFINE_IDR(ov_idr);
|
||||
* of the overlay in a list. This list can be used to prevent
|
||||
* illegal overlay removals.
|
||||
*
|
||||
* Returns the id of the created overlay, or an negative error number
|
||||
* Returns the id of the created overlay, or a negative error number
|
||||
*/
|
||||
int of_overlay_create(struct device_node *tree)
|
||||
{
|
||||
@@ -481,7 +481,7 @@ static int overlay_removal_is_ok(struct of_overlay *ov)
|
||||
*
|
||||
* Removes an overlay if it is permissible.
|
||||
*
|
||||
* Returns 0 on success, or an negative error number
|
||||
* Returns 0 on success, or a negative error number
|
||||
*/
|
||||
int of_overlay_destroy(int id)
|
||||
{
|
||||
@@ -528,7 +528,7 @@ EXPORT_SYMBOL_GPL(of_overlay_destroy);
|
||||
*
|
||||
* Removes all overlays from the system in the correct order.
|
||||
*
|
||||
* Returns 0 on success, or an negative error number
|
||||
* Returns 0 on success, or a negative error number
|
||||
*/
|
||||
int of_overlay_destroy_all(void)
|
||||
{
|
||||
|
Reference in New Issue
Block a user