mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 21:38:32 +08:00
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).
|
||||
|
||||
- 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
|
||||
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
|
||||
- interrupts : interrupt pin number to the cpu. Driver will request an irq based
|
||||
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
|
||||
0x00 0x00 0xba 0xce 0xc0 0xc6 0x2d 0x00 0x00 0x00 0x00 0x00
|
||||
0x00 0x00 0xf0 0x00>;
|
||||
marvell,wakeup-pin = <0x0d>;
|
||||
marvell,wakeup-gap-ms = <0x64>;
|
||||
marvell,wakeup-pin = /bits/ 16 <0x0d>;
|
||||
marvell,wakeup-gap-ms = /bits/ 16 <0x64>;
|
||||
};
|
||||
};
|
||||
|
@ -255,6 +255,7 @@ synology Synology, Inc.
|
||||
SUNW Sun Microsystems, Inc
|
||||
tbs TBS Technologies
|
||||
tcl Toby Churchill Ltd.
|
||||
technexion TechNexion
|
||||
technologic Technologic Systems
|
||||
thine THine Electronics, Inc.
|
||||
ti Texas Instruments
|
||||
@ -269,6 +270,7 @@ tronsmart Tronsmart
|
||||
truly Truly Semiconductors Limited
|
||||
tyan Tyan Computer Corporation
|
||||
upisemi uPI Semiconductor Corp.
|
||||
uniwest United Western Technologies Corp (UniWest)
|
||||
urt United Radiant Technology Corporation
|
||||
usi Universal Scientific Industrial Co., Ltd.
|
||||
v3 V3 Semiconductor
|
||||
|
@ -8407,10 +8407,9 @@ F: drivers/i2c/busses/i2c-ocores.c
|
||||
OPEN FIRMWARE AND FLATTENED DEVICE TREE
|
||||
M: Rob Herring <robh+dt@kernel.org>
|
||||
M: Frank Rowand <frowand.list@gmail.com>
|
||||
M: Grant Likely <grant.likely@linaro.org>
|
||||
L: devicetree@vger.kernel.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
|
||||
F: drivers/of/
|
||||
F: include/linux/of*.h
|
||||
@ -8418,12 +8417,10 @@ F: scripts/dtc/
|
||||
|
||||
OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS
|
||||
M: Rob Herring <robh+dt@kernel.org>
|
||||
M: Pawel Moll <pawel.moll@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
|
||||
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
|
||||
F: Documentation/devicetree/
|
||||
F: arch/*/boot/dts/
|
||||
|
@ -395,7 +395,7 @@ static int unflatten_dt_nodes(const void *blob,
|
||||
struct device_node **nodepp)
|
||||
{
|
||||
struct device_node *root;
|
||||
int offset = 0, depth = 0;
|
||||
int offset = 0, depth = 0, initial_depth = 0;
|
||||
#define FDT_MAX_DEPTH 64
|
||||
unsigned int fpsizes[FDT_MAX_DEPTH];
|
||||
struct device_node *nps[FDT_MAX_DEPTH];
|
||||
@ -405,11 +405,22 @@ static int unflatten_dt_nodes(const void *blob,
|
||||
if (nodepp)
|
||||
*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;
|
||||
fpsizes[depth] = dad ? strlen(of_node_full_name(dad)) : 0;
|
||||
nps[depth] = dad;
|
||||
|
||||
for (offset = 0;
|
||||
offset >= 0 && depth >= 0;
|
||||
offset >= 0 && depth >= initial_depth;
|
||||
offset = fdt_next_node(blob, offset, &depth)) {
|
||||
if (WARN_ON_ONCE(depth >= FDT_MAX_DEPTH))
|
||||
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);
|
||||
|
||||
/**
|
||||
* 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
|
||||
* @index: zero-based index of the irq
|
||||
*
|
||||
* Returns Linux irq number on success, or -EPROBE_DEFER if the irq domain
|
||||
* is not yet created.
|
||||
* @index: zero-based index of the IRQ
|
||||
*
|
||||
* 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)
|
||||
{
|
||||
@ -413,12 +413,13 @@ int of_irq_get(struct device_node *dev, int index)
|
||||
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
|
||||
* @name: irq name
|
||||
* @name: IRQ name
|
||||
*
|
||||
* Returns Linux irq number on success, or -EPROBE_DEFER if the irq domain
|
||||
* is not yet created, or error code in case of any other failure.
|
||||
* 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_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 */
|
||||
if (IS_ENABLED(CONFIG_CMA) && of_flat_dt_is_compatible(node, "shared-dma-pool"))
|
||||
align = max(align, (phys_addr_t)PAGE_SIZE << max(MAX_ORDER - 1, pageblock_order));
|
||||
if (IS_ENABLED(CONFIG_CMA)
|
||||
&& 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);
|
||||
if (prop) {
|
||||
|
@ -614,7 +614,7 @@ static inline struct device_node *of_parse_phandle(const struct device_node *np,
|
||||
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 *cells_name,
|
||||
int index,
|
||||
|
@ -8,7 +8,7 @@ struct pci_dev;
|
||||
struct of_phandle_args;
|
||||
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);
|
||||
struct device_node *of_pci_find_child_device(struct device_node *parent,
|
||||
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);
|
||||
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_reserved_mem_save_node(unsigned long node, const char *uname,
|
||||
phys_addr_t base, phys_addr_t size);
|
||||
|
Loading…
Reference in New Issue
Block a user