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

Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
David S. Miller 2007-08-07 18:46:36 -07:00
parent 4a2a4df7b6
commit 46bcea7751
6 changed files with 39 additions and 36 deletions

View file

@ -102,6 +102,21 @@ int of_set_property(struct device_node *dp, const char *name, void *val, int len
}
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 void * __init prom_early_alloc(unsigned long size)

View file

@ -568,20 +568,6 @@ static void __init report_platform_properties(void)
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,
struct mdesc_handle *hp,
u64 mp)
@ -596,10 +582,10 @@ static void __devinit fill_in_one_cache(cpuinfo_sparc *c,
switch (*level) {
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_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_line_size = *line_size;
}
@ -677,7 +663,7 @@ static void __devinit set_core_ids(struct mdesc_handle *hp)
continue;
type = mdesc_get_property(hp, mp, "type", &len);
if (!find_in_proplist(type, "instn", len))
if (!of_find_in_proplist(type, "instn", len))
continue;
mark_core_ids(hp, mp, idx);
@ -718,8 +704,8 @@ static void __devinit __set_proc_ids(struct mdesc_handle *hp,
int 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;
mark_proc_ids(hp, mp, idx);

View file

@ -107,6 +107,21 @@ int of_set_property(struct device_node *dp, const char *name, void *val, int len
}
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 void * __init prom_early_alloc(unsigned long size)

View file

@ -16,21 +16,6 @@
#include <asm/mdesc.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(
const struct vio_device_id *matches,
const struct vio_dev *dev)
@ -49,7 +34,7 @@ static const struct vio_device_id *vio_match_device(
if (matches->compat[0]) {
match &= len &&
find_in_proplist(compat, matches->compat, len);
of_find_in_proplist(compat, matches->compat, len);
}
if (match)
return matches;
@ -406,7 +391,7 @@ static int __init vio_init(void)
"property\n");
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) "
"compat entry.\n", channel_devices_compat);
goto out_release;

View file

@ -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,
const char *name,
int def);
extern int of_find_in_proplist(const char *list, const char *match, int len);
extern void prom_build_devicetree(void);

View file

@ -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,
const char *name,
int def);
extern int of_find_in_proplist(const char *list, const char *match, int len);
extern void prom_build_devicetree(void);