DeviceTree fixes for 4.7-rc:
- Fix unflatten_dt_nodes when dad parameter is set. - Add vendor prefixes for TechNexion and UniWest - Documentation fix for Marvell BT - OF IRQ kerneldoc fixes - Restrict CMA alignment adjustments to non dma-coherent - Couple of warning fixes in reserved-memory code - DT maintainers updates -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQIcBAABAgAGBQJXWcdCAAoJEPr7XbWNvGHDY7IQAIGnb+J9cZPZCCGykk+nx2q3 GOpG/f+Y6U7EPTfWJPIbN2TG1WAfwBsej2SQDkl9lr1kb4oCqQWy7d4oDH9v4PzO tPXbE3TsJsGxNvnCk9oMDH2i+TvrtXKD1OJNwH9DzheuSlwMcBTwTfG5N/wETNIt 6mSlG36V1p+Znrvr2yL1x2brtp0jVo2MX8/eLpGRHOeF37dLUqsXmgD8YBo1yenw jj6oQ+6oWsKho3PZjbR3jmoDYxjYZoluioBPfNZrW9h3nMn6/yD+hoBWUxc/Rxg2 3LGEt0t4v1GZF1Dl852mECb+oi0dlcCULGLpOYk/Xb7vmgh8y/WH84NbCeGxDEiZ Q/4QYDxaMvd+OCTUi4VyToOxrmCCPZ/oNIAt/+1hCjP1IEljGDP+pksoQWE5tmUX CfEI4A4GK/0hNnjehXJ0NOJrCsFDuKdGsv3wCtIt51GQsYzJAEXqzrB6tHp9OIwO 1BqDk1a2DtNack7Yj9nJib0/IR4iguSIGOchk8zlnBK8Jgqmd9YeJT1A/bIwaT8u SJo0u/4H684IIdfZX5Lf1YElETJvNat020cB2ObQYxqTD40o64MitJiBYBVEIYDh tMF9rBNMY4+gdblef0HILkL2ePUW/tnrLCfR1vCtFy9INUrk5OntN+uBkkfSQZrs tbAOfpuL6ff+5x5evj17 =rXx9 -----END PGP SIGNATURE----- Merge tag 'devicetree-fixes-for-4.7' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux Pull DeviceTree fixes from Rob Herring: - fix unflatten_dt_nodes when dad parameter is set. - add vendor prefixes for TechNexion and UniWest - documentation fix for Marvell BT - OF IRQ kerneldoc fixes - restrict CMA alignment adjustments to non dma-coherent - a couple of warning fixes in reserved-memory code - DT maintainers updates * tag 'devicetree-fixes-for-4.7' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux: drivers: of: add definition of early_init_dt_alloc_reserved_memory_arch drivers/of: Fix depth for sub-tree blob in unflatten_dt_nodes() drivers: of: Fix of_pci.h header guard dt-bindings: Add vendor prefix for TechNexion of: add vendor prefix for UniWest dt: bindings: fix documentation for MARVELL's bt-sd8xxx wireless device of: add missing const for of_parse_phandle_with_args() in !CONFIG_OF of: silence warnings due to max() usage drivers: of: of_reserved_mem: fixup the CMA alignment not to affect dma-coherent of: irq: fix of_irq_get[_byname]() kernel-doc MAINTAINERS: DeviceTree maintainer updates
This commit is contained in:
commit
90735c99ed
@ -13,10 +13,10 @@ Optional properties:
|
|||||||
initialization. This is an array of 28 values(u8).
|
initialization. This is an array of 28 values(u8).
|
||||||
|
|
||||||
- marvell,wakeup-pin: It represents wakeup pin number of the bluetooth chip.
|
- marvell,wakeup-pin: It represents wakeup pin number of the bluetooth chip.
|
||||||
firmware will use the pin to wakeup host system.
|
firmware will use the pin to wakeup host system (u16).
|
||||||
- marvell,wakeup-gap-ms: wakeup gap represents wakeup latency of the host
|
- marvell,wakeup-gap-ms: wakeup gap represents wakeup latency of the host
|
||||||
platform. The value will be configured to firmware. This
|
platform. The value will be configured to firmware. This
|
||||||
is needed to work chip's sleep feature as expected.
|
is needed to work chip's sleep feature as expected (u16).
|
||||||
- interrupt-parent: phandle of the parent interrupt controller
|
- interrupt-parent: phandle of the parent interrupt controller
|
||||||
- interrupts : interrupt pin number to the cpu. Driver will request an irq based
|
- interrupts : interrupt pin number to the cpu. Driver will request an irq based
|
||||||
on this interrupt number. During system suspend, the irq will be
|
on this interrupt number. During system suspend, the irq will be
|
||||||
@ -50,7 +50,7 @@ calibration data is also available in below example.
|
|||||||
0x37 0x01 0x1c 0x00 0xff 0xff 0xff 0xff 0x01 0x7f 0x04 0x02
|
0x37 0x01 0x1c 0x00 0xff 0xff 0xff 0xff 0x01 0x7f 0x04 0x02
|
||||||
0x00 0x00 0xba 0xce 0xc0 0xc6 0x2d 0x00 0x00 0x00 0x00 0x00
|
0x00 0x00 0xba 0xce 0xc0 0xc6 0x2d 0x00 0x00 0x00 0x00 0x00
|
||||||
0x00 0x00 0xf0 0x00>;
|
0x00 0x00 0xf0 0x00>;
|
||||||
marvell,wakeup-pin = <0x0d>;
|
marvell,wakeup-pin = /bits/ 16 <0x0d>;
|
||||||
marvell,wakeup-gap-ms = <0x64>;
|
marvell,wakeup-gap-ms = /bits/ 16 <0x64>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -255,6 +255,7 @@ synology Synology, Inc.
|
|||||||
SUNW Sun Microsystems, Inc
|
SUNW Sun Microsystems, Inc
|
||||||
tbs TBS Technologies
|
tbs TBS Technologies
|
||||||
tcl Toby Churchill Ltd.
|
tcl Toby Churchill Ltd.
|
||||||
|
technexion TechNexion
|
||||||
technologic Technologic Systems
|
technologic Technologic Systems
|
||||||
thine THine Electronics, Inc.
|
thine THine Electronics, Inc.
|
||||||
ti Texas Instruments
|
ti Texas Instruments
|
||||||
@ -269,6 +270,7 @@ tronsmart Tronsmart
|
|||||||
truly Truly Semiconductors Limited
|
truly Truly Semiconductors Limited
|
||||||
tyan Tyan Computer Corporation
|
tyan Tyan Computer Corporation
|
||||||
upisemi uPI Semiconductor Corp.
|
upisemi uPI Semiconductor Corp.
|
||||||
|
uniwest United Western Technologies Corp (UniWest)
|
||||||
urt United Radiant Technology Corporation
|
urt United Radiant Technology Corporation
|
||||||
usi Universal Scientific Industrial Co., Ltd.
|
usi Universal Scientific Industrial Co., Ltd.
|
||||||
v3 V3 Semiconductor
|
v3 V3 Semiconductor
|
||||||
|
@ -8407,10 +8407,9 @@ F: drivers/i2c/busses/i2c-ocores.c
|
|||||||
OPEN FIRMWARE AND FLATTENED DEVICE TREE
|
OPEN FIRMWARE AND FLATTENED DEVICE TREE
|
||||||
M: Rob Herring <robh+dt@kernel.org>
|
M: Rob Herring <robh+dt@kernel.org>
|
||||||
M: Frank Rowand <frowand.list@gmail.com>
|
M: Frank Rowand <frowand.list@gmail.com>
|
||||||
M: Grant Likely <grant.likely@linaro.org>
|
|
||||||
L: devicetree@vger.kernel.org
|
L: devicetree@vger.kernel.org
|
||||||
W: http://www.devicetree.org/
|
W: http://www.devicetree.org/
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/glikely/linux.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/of/
|
F: drivers/of/
|
||||||
F: include/linux/of*.h
|
F: include/linux/of*.h
|
||||||
@ -8418,12 +8417,10 @@ F: scripts/dtc/
|
|||||||
|
|
||||||
OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS
|
OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS
|
||||||
M: Rob Herring <robh+dt@kernel.org>
|
M: Rob Herring <robh+dt@kernel.org>
|
||||||
M: Pawel Moll <pawel.moll@arm.com>
|
|
||||||
M: Mark Rutland <mark.rutland@arm.com>
|
M: Mark Rutland <mark.rutland@arm.com>
|
||||||
M: Ian Campbell <ijc+devicetree@hellion.org.uk>
|
|
||||||
M: Kumar Gala <galak@codeaurora.org>
|
|
||||||
L: devicetree@vger.kernel.org
|
L: devicetree@vger.kernel.org
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git
|
||||||
|
Q: http://patchwork.ozlabs.org/project/devicetree-bindings/list/
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/devicetree/
|
F: Documentation/devicetree/
|
||||||
F: arch/*/boot/dts/
|
F: arch/*/boot/dts/
|
||||||
|
@ -395,7 +395,7 @@ static int unflatten_dt_nodes(const void *blob,
|
|||||||
struct device_node **nodepp)
|
struct device_node **nodepp)
|
||||||
{
|
{
|
||||||
struct device_node *root;
|
struct device_node *root;
|
||||||
int offset = 0, depth = 0;
|
int offset = 0, depth = 0, initial_depth = 0;
|
||||||
#define FDT_MAX_DEPTH 64
|
#define FDT_MAX_DEPTH 64
|
||||||
unsigned int fpsizes[FDT_MAX_DEPTH];
|
unsigned int fpsizes[FDT_MAX_DEPTH];
|
||||||
struct device_node *nps[FDT_MAX_DEPTH];
|
struct device_node *nps[FDT_MAX_DEPTH];
|
||||||
@ -405,11 +405,22 @@ static int unflatten_dt_nodes(const void *blob,
|
|||||||
if (nodepp)
|
if (nodepp)
|
||||||
*nodepp = NULL;
|
*nodepp = NULL;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* We're unflattening device sub-tree if @dad is valid. There are
|
||||||
|
* possibly multiple nodes in the first level of depth. We need
|
||||||
|
* set @depth to 1 to make fdt_next_node() happy as it bails
|
||||||
|
* immediately when negative @depth is found. Otherwise, the device
|
||||||
|
* nodes except the first one won't be unflattened successfully.
|
||||||
|
*/
|
||||||
|
if (dad)
|
||||||
|
depth = initial_depth = 1;
|
||||||
|
|
||||||
root = dad;
|
root = dad;
|
||||||
fpsizes[depth] = dad ? strlen(of_node_full_name(dad)) : 0;
|
fpsizes[depth] = dad ? strlen(of_node_full_name(dad)) : 0;
|
||||||
nps[depth] = dad;
|
nps[depth] = dad;
|
||||||
|
|
||||||
for (offset = 0;
|
for (offset = 0;
|
||||||
offset >= 0 && depth >= 0;
|
offset >= 0 && depth >= initial_depth;
|
||||||
offset = fdt_next_node(blob, offset, &depth)) {
|
offset = fdt_next_node(blob, offset, &depth)) {
|
||||||
if (WARN_ON_ONCE(depth >= FDT_MAX_DEPTH))
|
if (WARN_ON_ONCE(depth >= FDT_MAX_DEPTH))
|
||||||
continue;
|
continue;
|
||||||
|
@ -386,13 +386,13 @@ int of_irq_to_resource(struct device_node *dev, int index, struct resource *r)
|
|||||||
EXPORT_SYMBOL_GPL(of_irq_to_resource);
|
EXPORT_SYMBOL_GPL(of_irq_to_resource);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* of_irq_get - Decode a node's IRQ and return it as a Linux irq number
|
* of_irq_get - Decode a node's IRQ and return it as a Linux IRQ number
|
||||||
* @dev: pointer to device tree node
|
* @dev: pointer to device tree node
|
||||||
* @index: zero-based index of the irq
|
* @index: zero-based index of the IRQ
|
||||||
*
|
|
||||||
* Returns Linux irq number on success, or -EPROBE_DEFER if the irq domain
|
|
||||||
* is not yet created.
|
|
||||||
*
|
*
|
||||||
|
* Returns Linux IRQ number on success, or 0 on the IRQ mapping failure, or
|
||||||
|
* -EPROBE_DEFER if the IRQ domain is not yet created, or error code in case
|
||||||
|
* of any other failure.
|
||||||
*/
|
*/
|
||||||
int of_irq_get(struct device_node *dev, int index)
|
int of_irq_get(struct device_node *dev, int index)
|
||||||
{
|
{
|
||||||
@ -413,12 +413,13 @@ int of_irq_get(struct device_node *dev, int index)
|
|||||||
EXPORT_SYMBOL_GPL(of_irq_get);
|
EXPORT_SYMBOL_GPL(of_irq_get);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* of_irq_get_byname - Decode a node's IRQ and return it as a Linux irq number
|
* of_irq_get_byname - Decode a node's IRQ and return it as a Linux IRQ number
|
||||||
* @dev: pointer to device tree node
|
* @dev: pointer to device tree node
|
||||||
* @name: irq name
|
* @name: IRQ name
|
||||||
*
|
*
|
||||||
* Returns Linux irq number on success, or -EPROBE_DEFER if the irq domain
|
* Returns Linux IRQ number on success, or 0 on the IRQ mapping failure, or
|
||||||
* is not yet created, or error code in case of any other failure.
|
* -EPROBE_DEFER if the IRQ domain is not yet created, or error code in case
|
||||||
|
* of any other failure.
|
||||||
*/
|
*/
|
||||||
int of_irq_get_byname(struct device_node *dev, const char *name)
|
int of_irq_get_byname(struct device_node *dev, const char *name)
|
||||||
{
|
{
|
||||||
|
@ -127,8 +127,15 @@ static int __init __reserved_mem_alloc_size(unsigned long node,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Need adjust the alignment to satisfy the CMA requirement */
|
/* Need adjust the alignment to satisfy the CMA requirement */
|
||||||
if (IS_ENABLED(CONFIG_CMA) && of_flat_dt_is_compatible(node, "shared-dma-pool"))
|
if (IS_ENABLED(CONFIG_CMA)
|
||||||
align = max(align, (phys_addr_t)PAGE_SIZE << max(MAX_ORDER - 1, pageblock_order));
|
&& of_flat_dt_is_compatible(node, "shared-dma-pool")
|
||||||
|
&& of_get_flat_dt_prop(node, "reusable", NULL)
|
||||||
|
&& !of_get_flat_dt_prop(node, "no-map", NULL)) {
|
||||||
|
unsigned long order =
|
||||||
|
max_t(unsigned long, MAX_ORDER - 1, pageblock_order);
|
||||||
|
|
||||||
|
align = max(align, (phys_addr_t)PAGE_SIZE << order);
|
||||||
|
}
|
||||||
|
|
||||||
prop = of_get_flat_dt_prop(node, "alloc-ranges", &len);
|
prop = of_get_flat_dt_prop(node, "alloc-ranges", &len);
|
||||||
if (prop) {
|
if (prop) {
|
||||||
|
@ -614,7 +614,7 @@ static inline struct device_node *of_parse_phandle(const struct device_node *np,
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline int of_parse_phandle_with_args(struct device_node *np,
|
static inline int of_parse_phandle_with_args(const struct device_node *np,
|
||||||
const char *list_name,
|
const char *list_name,
|
||||||
const char *cells_name,
|
const char *cells_name,
|
||||||
int index,
|
int index,
|
||||||
|
@ -8,7 +8,7 @@ struct pci_dev;
|
|||||||
struct of_phandle_args;
|
struct of_phandle_args;
|
||||||
struct device_node;
|
struct device_node;
|
||||||
|
|
||||||
#ifdef CONFIG_OF
|
#ifdef CONFIG_OF_PCI
|
||||||
int of_irq_parse_pci(const struct pci_dev *pdev, struct of_phandle_args *out_irq);
|
int of_irq_parse_pci(const struct pci_dev *pdev, struct of_phandle_args *out_irq);
|
||||||
struct device_node *of_pci_find_child_device(struct device_node *parent,
|
struct device_node *of_pci_find_child_device(struct device_node *parent,
|
||||||
unsigned int devfn);
|
unsigned int devfn);
|
||||||
|
@ -31,6 +31,13 @@ typedef int (*reservedmem_of_init_fn)(struct reserved_mem *rmem);
|
|||||||
int of_reserved_mem_device_init(struct device *dev);
|
int of_reserved_mem_device_init(struct device *dev);
|
||||||
void of_reserved_mem_device_release(struct device *dev);
|
void of_reserved_mem_device_release(struct device *dev);
|
||||||
|
|
||||||
|
int early_init_dt_alloc_reserved_memory_arch(phys_addr_t size,
|
||||||
|
phys_addr_t align,
|
||||||
|
phys_addr_t start,
|
||||||
|
phys_addr_t end,
|
||||||
|
bool nomap,
|
||||||
|
phys_addr_t *res_base);
|
||||||
|
|
||||||
void fdt_init_reserved_mem(void);
|
void fdt_init_reserved_mem(void);
|
||||||
void fdt_reserved_mem_save_node(unsigned long node, const char *uname,
|
void fdt_reserved_mem_save_node(unsigned long node, const char *uname,
|
||||||
phys_addr_t base, phys_addr_t size);
|
phys_addr_t base, phys_addr_t size);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user