mirror of
https://github.com/armbian/linux-cix.git
synced 2026-01-06 12:30:45 -08:00
Merge tag 'devicetree-for-6.4-2' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux
Pull more devicetree updates from Rob Herring: - First part of DT header detangling dropping cpu.h from of_device.h and replacing some includes with forward declarations. A handful of drivers needed some adjustment to their includes as a result. - Refactor of_device.h to be used by bus drivers rather than various device drivers. This moves non-bus related functions out of of_device.h. The end goal is for of_platform.h and of_device.h to stop including each other. - Refactor open coded parsing of "ranges" in some bus drivers to use DT address parsing functions - Add some new address parsing functions of_property_read_reg(), of_range_count(), and of_range_to_resource() in preparation to convert more open coded parsing of DT addresses to use them. - Treewide clean-ups to use of_property_read_bool() and of_property_present() as appropriate. The ones here are the ones that didn't get picked up elsewhere. * tag 'devicetree-for-6.4-2' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux: (34 commits) bus: tegra-gmi: Replace of_platform.h with explicit includes hte: Use of_property_present() for testing DT property presence w1: w1-gpio: Use of_property_read_bool() for boolean properties virt: fsl: Use of_property_present() for testing DT property presence soc: fsl: Use of_property_present() for testing DT property presence sbus: display7seg: Use of_property_read_bool() for boolean properties sparc: Use of_property_read_bool() for boolean properties sparc: Use of_property_present() for testing DT property presence bus: mvebu-mbus: Remove open coded "ranges" parsing of/address: Add of_property_read_reg() helper of/address: Add of_range_count() helper of/address: Add support for 3 address cell bus of/address: Add of_range_to_resource() helper of: unittest: Add bus address range parsing tests of: Drop cpu.h include from of_device.h OPP: Adjust includes to remove of_device.h irqchip: loongson-eiointc: Add explicit include for cpuhotplug.h cpuidle: Adjust includes to remove of_device.h cpufreq: sun50i: Add explicit include for cpu.h cpufreq: Adjust includes to remove of_device.h ...
This commit is contained in:
@@ -5,7 +5,6 @@
|
||||
|
||||
#include <linux/cpuidle.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/of_device.h>
|
||||
#include <asm/cpuidle.h>
|
||||
|
||||
extern struct of_cpuidle_method __cpuidle_method_of_table[];
|
||||
|
||||
@@ -19,7 +19,6 @@
|
||||
#include <linux/irqchip/arm-gic.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/of_address.h>
|
||||
#include <linux/of_device.h>
|
||||
#include <linux/smp.h>
|
||||
|
||||
#include <asm/cacheflush.h>
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
|
||||
#include <linux/cpu.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/of_device.h>
|
||||
#include <asm/cacheinfo.h>
|
||||
|
||||
static struct riscv_cacheinfo_ops *rv_cache_ops;
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
* Nick Kossifidis <mick@ics.forth.gr>
|
||||
*/
|
||||
|
||||
#include <linux/cpu.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/mm.h>
|
||||
#include <linux/memblock.h>
|
||||
@@ -15,7 +16,6 @@
|
||||
#include <linux/console.h>
|
||||
#include <linux/screen_info.h>
|
||||
#include <linux/of_fdt.h>
|
||||
#include <linux/of_platform.h>
|
||||
#include <linux/sched/task.h>
|
||||
#include <linux/smp.h>
|
||||
#include <linux/efi.h>
|
||||
|
||||
@@ -19,11 +19,14 @@
|
||||
#include <linux/mutex.h>
|
||||
#include <linux/atomic.h>
|
||||
#include <linux/irqdomain.h>
|
||||
#include <linux/spinlock.h>
|
||||
|
||||
#define of_compat_cmp(s1, s2, l) strncmp((s1), (s2), (l))
|
||||
#define of_prop_cmp(s1, s2) strcasecmp((s1), (s2))
|
||||
#define of_node_cmp(s1, s2) strcmp((s1), (s2))
|
||||
|
||||
extern raw_spinlock_t devtree_lock;
|
||||
|
||||
struct of_irq_controller {
|
||||
unsigned int (*irq_build)(struct device_node *, unsigned int, void *);
|
||||
void *data;
|
||||
|
||||
@@ -29,7 +29,7 @@ static int of_bus_pci_match(struct device_node *np)
|
||||
* parent as-is, not with the PCI translate
|
||||
* method which chops off the top address cell.
|
||||
*/
|
||||
if (!of_find_property(np, "ranges", NULL))
|
||||
if (!of_property_present(np, "ranges"))
|
||||
return 0;
|
||||
|
||||
return 1;
|
||||
@@ -223,7 +223,7 @@ static int __init build_one_resource(struct device_node *parent,
|
||||
static int __init use_1to1_mapping(struct device_node *pp)
|
||||
{
|
||||
/* If we have a ranges property in the parent, use it. */
|
||||
if (of_find_property(pp, "ranges", NULL) != NULL)
|
||||
if (of_property_present(pp, "ranges"))
|
||||
return 0;
|
||||
|
||||
/* Some SBUS devices use intermediate nodes to express
|
||||
|
||||
@@ -58,7 +58,7 @@ static int of_bus_pci_match(struct device_node *np)
|
||||
* parent as-is, not with the PCI translate
|
||||
* method which chops off the top address cell.
|
||||
*/
|
||||
if (!of_find_property(np, "ranges", NULL))
|
||||
if (!of_property_present(np, "ranges"))
|
||||
return 0;
|
||||
|
||||
return 1;
|
||||
@@ -78,7 +78,7 @@ static int of_bus_simba_match(struct device_node *np)
|
||||
* simba.
|
||||
*/
|
||||
if (of_node_name_eq(np, "pci")) {
|
||||
if (!of_find_property(np, "ranges", NULL))
|
||||
if (!of_property_present(np, "ranges"))
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -283,7 +283,7 @@ static int __init build_one_resource(struct device_node *parent,
|
||||
static int __init use_1to1_mapping(struct device_node *pp)
|
||||
{
|
||||
/* If we have a ranges property in the parent, use it. */
|
||||
if (of_find_property(pp, "ranges", NULL) != NULL)
|
||||
if (of_property_present(pp, "ranges"))
|
||||
return 0;
|
||||
|
||||
/* If the parent is the dma node of an ISA bus, pass
|
||||
|
||||
@@ -162,7 +162,7 @@ int of_bus_sbus_match(struct device_node *np)
|
||||
* don't have some intervening real bus that provides
|
||||
* ranges based translations.
|
||||
*/
|
||||
if (of_find_property(dp, "ranges", NULL) != NULL)
|
||||
if (of_property_present(dp, "ranges"))
|
||||
break;
|
||||
|
||||
dp = dp->parent;
|
||||
|
||||
@@ -1270,7 +1270,7 @@ static void schizo_pbm_hw_init(struct pci_pbm_info *pbm)
|
||||
pbm->chip_version >= 0x2)
|
||||
tmp |= 0x3UL << SCHIZO_PCICTRL_PTO_SHIFT;
|
||||
|
||||
if (!of_find_property(pbm->op->dev.of_node, "no-bus-parking", NULL))
|
||||
if (!of_property_read_bool(pbm->op->dev.of_node, "no-bus-parking"))
|
||||
tmp |= SCHIZO_PCICTRL_PARK;
|
||||
else
|
||||
tmp &= ~SCHIZO_PCICTRL_PARK;
|
||||
|
||||
@@ -28,7 +28,7 @@ static int has_button_interrupt(unsigned int irq, struct device_node *dp)
|
||||
{
|
||||
if (irq == 0xffffffff)
|
||||
return 0;
|
||||
if (!of_find_property(dp, "button", NULL))
|
||||
if (!of_property_read_bool(dp, "button"))
|
||||
return 0;
|
||||
|
||||
return 1;
|
||||
|
||||
@@ -502,7 +502,7 @@ static void *fill_in_one_cpu(struct device_node *dp, int cpuid, int arg)
|
||||
struct device_node *portid_parent = NULL;
|
||||
int portid = -1;
|
||||
|
||||
if (of_find_property(dp, "cpuid", NULL)) {
|
||||
if (of_property_present(dp, "cpuid")) {
|
||||
int limit = 2;
|
||||
|
||||
portid_parent = dp;
|
||||
|
||||
@@ -277,7 +277,7 @@ static int clock_probe(struct platform_device *op)
|
||||
return -ENODEV;
|
||||
|
||||
/* Only the primary RTC has an address property */
|
||||
if (!of_find_property(dp, "address", NULL))
|
||||
if (!of_property_present(dp, "address"))
|
||||
return -ENODEV;
|
||||
|
||||
m48t59_rtc.resource = &op->resource[0];
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
#include <linux/cpu.h>
|
||||
#include <linux/device.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/of_device.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/sched.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/smp.h>
|
||||
|
||||
@@ -1179,74 +1179,32 @@ static int __init mbus_dt_setup_win(struct mvebu_mbus_state *mbus,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int __init
|
||||
mbus_parse_ranges(struct device_node *node,
|
||||
int *addr_cells, int *c_addr_cells, int *c_size_cells,
|
||||
int *cell_count, const __be32 **ranges_start,
|
||||
const __be32 **ranges_end)
|
||||
{
|
||||
const __be32 *prop;
|
||||
int ranges_len, tuple_len;
|
||||
|
||||
/* Allow a node with no 'ranges' property */
|
||||
*ranges_start = of_get_property(node, "ranges", &ranges_len);
|
||||
if (*ranges_start == NULL) {
|
||||
*addr_cells = *c_addr_cells = *c_size_cells = *cell_count = 0;
|
||||
*ranges_start = *ranges_end = NULL;
|
||||
return 0;
|
||||
}
|
||||
*ranges_end = *ranges_start + ranges_len / sizeof(__be32);
|
||||
|
||||
*addr_cells = of_n_addr_cells(node);
|
||||
|
||||
prop = of_get_property(node, "#address-cells", NULL);
|
||||
*c_addr_cells = be32_to_cpup(prop);
|
||||
|
||||
prop = of_get_property(node, "#size-cells", NULL);
|
||||
*c_size_cells = be32_to_cpup(prop);
|
||||
|
||||
*cell_count = *addr_cells + *c_addr_cells + *c_size_cells;
|
||||
tuple_len = (*cell_count) * sizeof(__be32);
|
||||
|
||||
if (ranges_len % tuple_len) {
|
||||
pr_warn("malformed ranges entry '%pOFn'\n", node);
|
||||
return -EINVAL;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int __init mbus_dt_setup(struct mvebu_mbus_state *mbus,
|
||||
struct device_node *np)
|
||||
{
|
||||
int addr_cells, c_addr_cells, c_size_cells;
|
||||
int i, ret, cell_count;
|
||||
const __be32 *r, *ranges_start, *ranges_end;
|
||||
int ret;
|
||||
struct of_range_parser parser;
|
||||
struct of_range range;
|
||||
|
||||
ret = mbus_parse_ranges(np, &addr_cells, &c_addr_cells,
|
||||
&c_size_cells, &cell_count,
|
||||
&ranges_start, &ranges_end);
|
||||
ret = of_range_parser_init(&parser, np);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
return 0;
|
||||
|
||||
for (i = 0, r = ranges_start; r < ranges_end; r += cell_count, i++) {
|
||||
u32 windowid, base, size;
|
||||
for_each_of_range(&parser, &range) {
|
||||
u32 windowid = upper_32_bits(range.bus_addr);
|
||||
u8 target, attr;
|
||||
|
||||
/*
|
||||
* An entry with a non-zero custom field do not
|
||||
* correspond to a static window, so skip it.
|
||||
*/
|
||||
windowid = of_read_number(r, 1);
|
||||
if (CUSTOM(windowid))
|
||||
continue;
|
||||
|
||||
target = TARGET(windowid);
|
||||
attr = ATTR(windowid);
|
||||
|
||||
base = of_read_number(r + c_addr_cells, addr_cells);
|
||||
size = of_read_number(r + c_addr_cells + addr_cells,
|
||||
c_size_cells);
|
||||
ret = mbus_dt_setup_win(mbus, base, size, target, attr);
|
||||
ret = mbus_dt_setup_win(mbus, range.cpu_addr, range.size, target, attr);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -9,7 +9,9 @@
|
||||
#include <linux/delay.h>
|
||||
#include <linux/io.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/of_device.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/of_platform.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/pm_runtime.h>
|
||||
#include <linux/reset.h>
|
||||
|
||||
|
||||
@@ -176,10 +176,9 @@ static int uniphier_system_bus_probe(struct platform_device *pdev)
|
||||
{
|
||||
struct device *dev = &pdev->dev;
|
||||
struct uniphier_system_bus_priv *priv;
|
||||
const __be32 *ranges;
|
||||
u32 cells, addr, size;
|
||||
u64 paddr;
|
||||
int pna, bank, rlen, rone, ret;
|
||||
struct of_range_parser parser;
|
||||
struct of_range range;
|
||||
int ret;
|
||||
|
||||
priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL);
|
||||
if (!priv)
|
||||
@@ -191,48 +190,17 @@ static int uniphier_system_bus_probe(struct platform_device *pdev)
|
||||
|
||||
priv->dev = dev;
|
||||
|
||||
pna = of_n_addr_cells(dev->of_node);
|
||||
|
||||
ret = of_property_read_u32(dev->of_node, "#address-cells", &cells);
|
||||
if (ret) {
|
||||
dev_err(dev, "failed to get #address-cells\n");
|
||||
ret = of_range_parser_init(&parser, dev->of_node);
|
||||
if (ret)
|
||||
return ret;
|
||||
}
|
||||
if (cells != 2) {
|
||||
dev_err(dev, "#address-cells must be 2\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
ret = of_property_read_u32(dev->of_node, "#size-cells", &cells);
|
||||
if (ret) {
|
||||
dev_err(dev, "failed to get #size-cells\n");
|
||||
return ret;
|
||||
}
|
||||
if (cells != 1) {
|
||||
dev_err(dev, "#size-cells must be 1\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
ranges = of_get_property(dev->of_node, "ranges", &rlen);
|
||||
if (!ranges) {
|
||||
dev_err(dev, "failed to get ranges property\n");
|
||||
return -ENOENT;
|
||||
}
|
||||
|
||||
rlen /= sizeof(*ranges);
|
||||
rone = pna + 2;
|
||||
|
||||
for (; rlen >= rone; rlen -= rone) {
|
||||
bank = be32_to_cpup(ranges++);
|
||||
addr = be32_to_cpup(ranges++);
|
||||
paddr = of_translate_address(dev->of_node, ranges);
|
||||
if (paddr == OF_BAD_ADDR)
|
||||
for_each_of_range(&parser, &range) {
|
||||
if (range.cpu_addr == OF_BAD_ADDR)
|
||||
return -EINVAL;
|
||||
ranges += pna;
|
||||
size = be32_to_cpup(ranges++);
|
||||
|
||||
ret = uniphier_system_bus_add_bank(priv, bank, addr,
|
||||
paddr, size);
|
||||
ret = uniphier_system_bus_add_bank(priv,
|
||||
upper_32_bits(range.bus_addr),
|
||||
lower_32_bits(range.bus_addr),
|
||||
range.cpu_addr, range.size);
|
||||
if (ret)
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -9,13 +9,12 @@
|
||||
#include <linux/clk.h>
|
||||
#include <linux/clockchips.h>
|
||||
#include <linux/clocksource.h>
|
||||
#include <linux/cpuhotplug.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/mfd/ingenic-tcu.h>
|
||||
#include <linux/mfd/syscon.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/of_address.h>
|
||||
#include <linux/of_irq.h>
|
||||
#include <linux/of_platform.h>
|
||||
#include <linux/overflow.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/regmap.h>
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
#include <linux/dmi.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/string_helpers.h>
|
||||
#include <linux/platform_device.h>
|
||||
|
||||
#include <linux/acpi.h>
|
||||
#include <linux/io.h>
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
|
||||
#include <linux/err.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/of_device.h>
|
||||
#include <linux/platform_device.h>
|
||||
|
||||
#include "cpufreq-dt.h"
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
#include <linux/module.h>
|
||||
#include <linux/clk.h>
|
||||
#include <linux/cpufreq.h>
|
||||
#include <linux/of_device.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/io.h>
|
||||
#include <asm/proc-fns.h>
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user