ソースを参照

[SPARC]: Centralize find_in_proplist() instead of duplicating N times.

Signed-off-by: David S. Miller <davem@davemloft.net>
David S. Miller 18 年 前
コミット
46bcea7751

+ 15 - 0
arch/sparc/kernel/prom.c

@@ -102,6 +102,21 @@ int of_set_property(struct device_node *dp, const char *name, void *val, int len
 }
 }
 EXPORT_SYMBOL(of_set_property);
 EXPORT_SYMBOL(of_set_property);
 
 
+int of_find_in_proplist(const char *list, const char *match, int len)
+{
+	while (len > 0) {
+		int l;
+
+		if (!strcmp(list, match))
+			return 1;
+		l = strlen(list) + 1;
+		list += l;
+		len -= l;
+	}
+	return 0;
+}
+EXPORT_SYMBOL(of_find_in_proplist);
+
 static unsigned int prom_early_allocated;
 static unsigned int prom_early_allocated;
 
 
 static void * __init prom_early_alloc(unsigned long size)
 static void * __init prom_early_alloc(unsigned long size)

+ 5 - 19
arch/sparc64/kernel/mdesc.c

@@ -568,20 +568,6 @@ static void __init report_platform_properties(void)
 	mdesc_release(hp);
 	mdesc_release(hp);
 }
 }
 
 
-static int inline find_in_proplist(const char *list, const char *match, int len)
-{
-	while (len > 0) {
-		int l;
-
-		if (!strcmp(list, match))
-			return 1;
-		l = strlen(list) + 1;
-		list += l;
-		len -= l;
-	}
-	return 0;
-}
-
 static void __devinit fill_in_one_cache(cpuinfo_sparc *c,
 static void __devinit fill_in_one_cache(cpuinfo_sparc *c,
 					struct mdesc_handle *hp,
 					struct mdesc_handle *hp,
 					u64 mp)
 					u64 mp)
@@ -596,10 +582,10 @@ static void __devinit fill_in_one_cache(cpuinfo_sparc *c,
 
 
 	switch (*level) {
 	switch (*level) {
 	case 1:
 	case 1:
-		if (find_in_proplist(type, "instn", type_len)) {
+		if (of_find_in_proplist(type, "instn", type_len)) {
 			c->icache_size = *size;
 			c->icache_size = *size;
 			c->icache_line_size = *line_size;
 			c->icache_line_size = *line_size;
-		} else if (find_in_proplist(type, "data", type_len)) {
+		} else if (of_find_in_proplist(type, "data", type_len)) {
 			c->dcache_size = *size;
 			c->dcache_size = *size;
 			c->dcache_line_size = *line_size;
 			c->dcache_line_size = *line_size;
 		}
 		}
@@ -677,7 +663,7 @@ static void __devinit set_core_ids(struct mdesc_handle *hp)
 			continue;
 			continue;
 
 
 		type = mdesc_get_property(hp, mp, "type", &len);
 		type = mdesc_get_property(hp, mp, "type", &len);
-		if (!find_in_proplist(type, "instn", len))
+		if (!of_find_in_proplist(type, "instn", len))
 			continue;
 			continue;
 
 
 		mark_core_ids(hp, mp, idx);
 		mark_core_ids(hp, mp, idx);
@@ -718,8 +704,8 @@ static void __devinit __set_proc_ids(struct mdesc_handle *hp,
 		int len;
 		int len;
 
 
 		type = mdesc_get_property(hp, mp, "type", &len);
 		type = mdesc_get_property(hp, mp, "type", &len);
-		if (!find_in_proplist(type, "int", len) &&
-		    !find_in_proplist(type, "integer", len))
+		if (!of_find_in_proplist(type, "int", len) &&
+		    !of_find_in_proplist(type, "integer", len))
 			continue;
 			continue;
 
 
 		mark_proc_ids(hp, mp, idx);
 		mark_proc_ids(hp, mp, idx);

+ 15 - 0
arch/sparc64/kernel/prom.c

@@ -107,6 +107,21 @@ int of_set_property(struct device_node *dp, const char *name, void *val, int len
 }
 }
 EXPORT_SYMBOL(of_set_property);
 EXPORT_SYMBOL(of_set_property);
 
 
+int of_find_in_proplist(const char *list, const char *match, int len)
+{
+	while (len > 0) {
+		int l;
+
+		if (!strcmp(list, match))
+			return 1;
+		l = strlen(list) + 1;
+		list += l;
+		len -= l;
+	}
+	return 0;
+}
+EXPORT_SYMBOL(of_find_in_proplist);
+
 static unsigned int prom_early_allocated;
 static unsigned int prom_early_allocated;
 
 
 static void * __init prom_early_alloc(unsigned long size)
 static void * __init prom_early_alloc(unsigned long size)

+ 2 - 17
arch/sparc64/kernel/vio.c

@@ -16,21 +16,6 @@
 #include <asm/mdesc.h>
 #include <asm/mdesc.h>
 #include <asm/vio.h>
 #include <asm/vio.h>
 
 
-static inline int find_in_proplist(const char *list, const char *match,
-				   int len)
-{
-	while (len > 0) {
-		int l;
-
-		if (!strcmp(list, match))
-			return 1;
-		l = strlen(list) + 1;
-		list += l;
-		len -= l;
-	}
-	return 0;
-}
-
 static const struct vio_device_id *vio_match_device(
 static const struct vio_device_id *vio_match_device(
 	const struct vio_device_id *matches,
 	const struct vio_device_id *matches,
 	const struct vio_dev *dev)
 	const struct vio_dev *dev)
@@ -49,7 +34,7 @@ static const struct vio_device_id *vio_match_device(
 
 
 		if (matches->compat[0]) {
 		if (matches->compat[0]) {
 			match &= len &&
 			match &= len &&
-				find_in_proplist(compat, matches->compat, len);
+				of_find_in_proplist(compat, matches->compat, len);
 		}
 		}
 		if (match)
 		if (match)
 			return matches;
 			return matches;
@@ -406,7 +391,7 @@ static int __init vio_init(void)
 		       "property\n");
 		       "property\n");
 		goto out_release;
 		goto out_release;
 	}
 	}
-	if (!find_in_proplist(compat, channel_devices_compat, len)) {
+	if (!of_find_in_proplist(compat, channel_devices_compat, len)) {
 		printk(KERN_ERR "VIO: Channel devices node lacks (%s) "
 		printk(KERN_ERR "VIO: Channel devices node lacks (%s) "
 		       "compat entry.\n", channel_devices_compat);
 		       "compat entry.\n", channel_devices_compat);
 		goto out_release;
 		goto out_release;

+ 1 - 0
include/asm-sparc/prom.h

@@ -67,6 +67,7 @@ extern int of_set_property(struct device_node *node, const char *name, void *val
 extern int of_getintprop_default(struct device_node *np,
 extern int of_getintprop_default(struct device_node *np,
 				 const char *name,
 				 const char *name,
 				 int def);
 				 int def);
+extern int of_find_in_proplist(const char *list, const char *match, int len);
 
 
 extern void prom_build_devicetree(void);
 extern void prom_build_devicetree(void);
 
 

+ 1 - 0
include/asm-sparc64/prom.h

@@ -76,6 +76,7 @@ extern int of_set_property(struct device_node *node, const char *name, void *val
 extern int of_getintprop_default(struct device_node *np,
 extern int of_getintprop_default(struct device_node *np,
 				 const char *name,
 				 const char *name,
 				 int def);
 				 int def);
+extern int of_find_in_proplist(const char *list, const char *match, int len);
 
 
 extern void prom_build_devicetree(void);
 extern void prom_build_devicetree(void);