Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 46bcea77 authored by David S. Miller's avatar David S. Miller
Browse files

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

parent 4a2a4df7
Loading
Loading
Loading
Loading
+15 −0
Original line number Original line Diff line number Diff line
@@ -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
Original line number Original line Diff line number Diff line
@@ -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) &&
		if (!of_find_in_proplist(type, "int", len) &&
		    !find_in_proplist(type, "integer", len))
		    !of_find_in_proplist(type, "integer", len))
			continue;
			continue;


		mark_proc_ids(hp, mp, idx);
		mark_proc_ids(hp, mp, idx);
+15 −0
Original line number Original line Diff line number Diff line
@@ -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
Original line number Original line Diff line number Diff line
@@ -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
Original line number Original line Diff line number Diff line
@@ -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);


Loading