diff options
author | Geert Uytterhoeven <Geert.Uytterhoeven@sonycom.com> | 2007-07-17 07:05:52 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-07-17 13:23:13 -0400 |
commit | bce9451310eb66fbbd77bf22e8160079700691f8 (patch) | |
tree | d054902d208c904784d1e5d29957acd6627e153d /arch | |
parent | cca9a6cc580b504a2575d505ab072ebf0872e016 (diff) |
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: Geert Uytterhoeven <Geert.Uytterhoeven@sonycom.com>
Signed-off-by: Geoff Levand <geoffrey.levand@am.sony.com>
Acked-by: Arnd Bergmann <arnd@arndb.de>
Acked-By: James 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: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/powerpc/platforms/cell/spu_base.c | 15 | ||||
-rw-r--r-- | arch/powerpc/platforms/cell/spu_manage.c | 4 | ||||
-rw-r--r-- | arch/powerpc/platforms/ps3/spu.c | 6 |
3 files changed, 21 insertions, 4 deletions
diff --git a/arch/powerpc/platforms/cell/spu_base.c b/arch/powerpc/platforms/cell/spu_base.c index e4d0c9f42abd..96a8f609690c 100644 --- a/arch/powerpc/platforms/cell/spu_base.c +++ b/arch/powerpc/platforms/cell/spu_base.c | |||
@@ -31,6 +31,7 @@ | |||
31 | #include <linux/mm.h> | 31 | #include <linux/mm.h> |
32 | #include <linux/io.h> | 32 | #include <linux/io.h> |
33 | #include <linux/mutex.h> | 33 | #include <linux/mutex.h> |
34 | #include <linux/linux_logo.h> | ||
34 | #include <asm/spu.h> | 35 | #include <asm/spu.h> |
35 | #include <asm/spu_priv1.h> | 36 | #include <asm/spu_priv1.h> |
36 | #include <asm/xmon.h> | 37 | #include <asm/xmon.h> |
@@ -656,12 +657,24 @@ static int __init init_spu_base(void) | |||
656 | 657 | ||
657 | ret = spu_enumerate_spus(create_spu); | 658 | ret = spu_enumerate_spus(create_spu); |
658 | 659 | ||
659 | if (ret) { | 660 | if (ret < 0) { |
660 | printk(KERN_WARNING "%s: Error initializing spus\n", | 661 | printk(KERN_WARNING "%s: Error initializing spus\n", |
661 | __FUNCTION__); | 662 | __FUNCTION__); |
662 | goto out_unregister_sysdev_class; | 663 | goto out_unregister_sysdev_class; |
663 | } | 664 | } |
664 | 665 | ||
666 | if (ret > 0) { | ||
667 | /* | ||
668 | * We cannot put the forward declaration in | ||
669 | * <linux/linux_logo.h> because of conflicting session type | ||
670 | * conflicts for const and __initdata with different compiler | ||
671 | * versions | ||
672 | */ | ||
673 | extern const struct linux_logo logo_spe_clut224; | ||
674 | |||
675 | fb_append_extra_logo(&logo_spe_clut224, ret); | ||
676 | } | ||
677 | |||
665 | xmon_register_spus(&spu_full_list); | 678 | xmon_register_spus(&spu_full_list); |
666 | 679 | ||
667 | spu_add_sysdev_attr(&attr_stat); | 680 | spu_add_sysdev_attr(&attr_stat); |
diff --git a/arch/powerpc/platforms/cell/spu_manage.c b/arch/powerpc/platforms/cell/spu_manage.c index 1d4562ae463d..75ed50fcc3db 100644 --- a/arch/powerpc/platforms/cell/spu_manage.c +++ b/arch/powerpc/platforms/cell/spu_manage.c | |||
@@ -279,6 +279,7 @@ static int __init of_enumerate_spus(int (*fn)(void *data)) | |||
279 | { | 279 | { |
280 | int ret; | 280 | int ret; |
281 | struct device_node *node; | 281 | struct device_node *node; |
282 | unsigned int n = 0; | ||
282 | 283 | ||
283 | ret = -ENODEV; | 284 | ret = -ENODEV; |
284 | for (node = of_find_node_by_type(NULL, "spe"); | 285 | for (node = of_find_node_by_type(NULL, "spe"); |
@@ -289,8 +290,9 @@ static int __init of_enumerate_spus(int (*fn)(void *data)) | |||
289 | __FUNCTION__, node->name); | 290 | __FUNCTION__, node->name); |
290 | break; | 291 | break; |
291 | } | 292 | } |
293 | n++; | ||
292 | } | 294 | } |
293 | return ret; | 295 | return ret ? ret : n; |
294 | } | 296 | } |
295 | 297 | ||
296 | static int __init of_create_spu(struct spu *spu, void *data) | 298 | static int __init of_create_spu(struct spu *spu, void *data) |
diff --git a/arch/powerpc/platforms/ps3/spu.c b/arch/powerpc/platforms/ps3/spu.c index c7f734c89462..502d80ed982b 100644 --- a/arch/powerpc/platforms/ps3/spu.c +++ b/arch/powerpc/platforms/ps3/spu.c | |||
@@ -405,11 +405,13 @@ static int __init ps3_enumerate_spus(int (*fn)(void *data)) | |||
405 | } | 405 | } |
406 | } | 406 | } |
407 | 407 | ||
408 | if (result) | 408 | if (result) { |
409 | printk(KERN_WARNING "%s:%d: Error initializing spus\n", | 409 | printk(KERN_WARNING "%s:%d: Error initializing spus\n", |
410 | __func__, __LINE__); | 410 | __func__, __LINE__); |
411 | return result; | ||
412 | } | ||
411 | 413 | ||
412 | return result; | 414 | return num_resource_id; |
413 | } | 415 | } |
414 | 416 | ||
415 | const struct spu_management_ops spu_management_ps3_ops = { | 417 | const struct spu_management_ops spu_management_ps3_ops = { |