Commit bce94513 authored by Geert Uytterhoeven's avatar Geert Uytterhoeven Committed by Linus Torvalds

Cell: Draw SPE helper penguin logos

Let spu_management_ops.enumerate_spus() return the number of found SPEs
and use that information to draw some little helper penguin logos.
Signed-off-by: default avatarGeert Uytterhoeven <Geert.Uytterhoeven@sonycom.com>
Signed-off-by: default avatarGeoff Levand <geoffrey.levand@am.sony.com>
Acked-by: default avatarArnd Bergmann <arnd@arndb.de>
Acked-By: default avatarJames Simmons <jsimmons@infradead.org>
Cc: "Antonino A. Daplas" <adaplas@pol.net>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Paul Mackerras <paulus@samba.org>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent cca9a6cc
...@@ -31,6 +31,7 @@ ...@@ -31,6 +31,7 @@
#include <linux/mm.h> #include <linux/mm.h>
#include <linux/io.h> #include <linux/io.h>
#include <linux/mutex.h> #include <linux/mutex.h>
#include <linux/linux_logo.h>
#include <asm/spu.h> #include <asm/spu.h>
#include <asm/spu_priv1.h> #include <asm/spu_priv1.h>
#include <asm/xmon.h> #include <asm/xmon.h>
...@@ -656,12 +657,24 @@ static int __init init_spu_base(void) ...@@ -656,12 +657,24 @@ static int __init init_spu_base(void)
ret = spu_enumerate_spus(create_spu); ret = spu_enumerate_spus(create_spu);
if (ret) { if (ret < 0) {
printk(KERN_WARNING "%s: Error initializing spus\n", printk(KERN_WARNING "%s: Error initializing spus\n",
__FUNCTION__); __FUNCTION__);
goto out_unregister_sysdev_class; goto out_unregister_sysdev_class;
} }
if (ret > 0) {
/*
* We cannot put the forward declaration in
* <linux/linux_logo.h> because of conflicting session type
* conflicts for const and __initdata with different compiler
* versions
*/
extern const struct linux_logo logo_spe_clut224;
fb_append_extra_logo(&logo_spe_clut224, ret);
}
xmon_register_spus(&spu_full_list); xmon_register_spus(&spu_full_list);
spu_add_sysdev_attr(&attr_stat); spu_add_sysdev_attr(&attr_stat);
......
...@@ -279,6 +279,7 @@ static int __init of_enumerate_spus(int (*fn)(void *data)) ...@@ -279,6 +279,7 @@ static int __init of_enumerate_spus(int (*fn)(void *data))
{ {
int ret; int ret;
struct device_node *node; struct device_node *node;
unsigned int n = 0;
ret = -ENODEV; ret = -ENODEV;
for (node = of_find_node_by_type(NULL, "spe"); for (node = of_find_node_by_type(NULL, "spe");
...@@ -289,8 +290,9 @@ static int __init of_enumerate_spus(int (*fn)(void *data)) ...@@ -289,8 +290,9 @@ static int __init of_enumerate_spus(int (*fn)(void *data))
__FUNCTION__, node->name); __FUNCTION__, node->name);
break; break;
} }
n++;
} }
return ret; return ret ? ret : n;
} }
static int __init of_create_spu(struct spu *spu, void *data) static int __init of_create_spu(struct spu *spu, void *data)
......
...@@ -405,11 +405,13 @@ static int __init ps3_enumerate_spus(int (*fn)(void *data)) ...@@ -405,11 +405,13 @@ static int __init ps3_enumerate_spus(int (*fn)(void *data))
} }
} }
if (result) if (result) {
printk(KERN_WARNING "%s:%d: Error initializing spus\n", printk(KERN_WARNING "%s:%d: Error initializing spus\n",
__func__, __LINE__); __func__, __LINE__);
return result; return result;
}
return num_resource_id;
} }
const struct spu_management_ops spu_management_ps3_ops = { const struct spu_management_ops spu_management_ps3_ops = {
......
...@@ -13,6 +13,7 @@ if LOGO ...@@ -13,6 +13,7 @@ if LOGO
config FB_LOGO_EXTRA config FB_LOGO_EXTRA
bool bool
depends on FB depends on FB
default y if SPU_BASE
config LOGO_LINUX_MONO config LOGO_LINUX_MONO
bool "Standard black and white Linux logo" bool "Standard black and white Linux logo"
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment