summaryrefslogtreecommitdiffstats
path: root/arch/powerpc/sysdev/xics/icp-native.c
diff options
context:
space:
mode:
authorRob Herring <robh@kernel.org>2023-03-27 17:30:56 -0500
committerMichael Ellerman <mpe@ellerman.id.au>2023-04-04 22:11:03 +1000
commit037c47a436eab2d336d5e131ab1c1394f223a57b (patch)
tree8ce56b79929855565159fcc545b01df3d6ebdf65 /arch/powerpc/sysdev/xics/icp-native.c
parente4ab08be5b4902e5b350b0e1e1a3c25eb21d76d4 (diff)
downloadlinux-stable-037c47a436eab2d336d5e131ab1c1394f223a57b.tar.gz
linux-stable-037c47a436eab2d336d5e131ab1c1394f223a57b.tar.bz2
linux-stable-037c47a436eab2d336d5e131ab1c1394f223a57b.zip
powerpc/xics: Use of_address_count()
icp_native_init_one_node() only needs the number of entries in "reg". Replace the open coded "reg" parsing with of_address_count() to get the number of "reg" entries. Signed-off-by: Rob Herring <robh@kernel.org> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://msgid.link/20230327223056.820086-1-robh@kernel.org
Diffstat (limited to 'arch/powerpc/sysdev/xics/icp-native.c')
-rw-r--r--arch/powerpc/sysdev/xics/icp-native.c17
1 files changed, 5 insertions, 12 deletions
diff --git a/arch/powerpc/sysdev/xics/icp-native.c b/arch/powerpc/sysdev/xics/icp-native.c
index edc17b6b1cc2..f6ec6dba92dc 100644
--- a/arch/powerpc/sysdev/xics/icp-native.c
+++ b/arch/powerpc/sysdev/xics/icp-native.c
@@ -259,7 +259,7 @@ static int __init icp_native_init_one_node(struct device_node *np,
unsigned int ilen;
const __be32 *ireg;
int i;
- int reg_tuple_size;
+ int num_reg;
int num_servers = 0;
/* This code does the theorically broken assumption that the interrupt
@@ -280,21 +280,14 @@ static int __init icp_native_init_one_node(struct device_node *np,
num_servers = of_read_number(ireg + 1, 1);
}
- ireg = of_get_property(np, "reg", &ilen);
- if (!ireg) {
- pr_err("icp_native: Can't find interrupt reg property");
- return -1;
- }
-
- reg_tuple_size = (of_n_addr_cells(np) + of_n_size_cells(np)) * 4;
- if (((ilen % reg_tuple_size) != 0)
- || (num_servers && (num_servers != (ilen / reg_tuple_size)))) {
+ num_reg = of_address_count(np);
+ if (num_servers && (num_servers != num_reg)) {
pr_err("icp_native: ICP reg len (%d) != num servers (%d)",
- ilen / reg_tuple_size, num_servers);
+ num_reg, num_servers);
return -1;
}
- for (i = 0; i < (ilen / reg_tuple_size); i++) {
+ for (i = 0; i < num_reg; i++) {
struct resource r;
int err;