]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - arch/powerpc/platforms/ps3/spu.c
Cell: Draw SPE helper penguin logos
[linux-2.6-omap-h63xx.git] / arch / powerpc / platforms / ps3 / spu.c
index 651437cb2c183f0fab1938bd42cde56ef5f48670..502d80ed982bf657b6e08cc2ba511ef3baade432 100644 (file)
@@ -182,15 +182,18 @@ static int __init setup_areas(struct spu *spu)
 {
        struct table {char* name; unsigned long addr; unsigned long size;};
 
-       spu_pdata(spu)->shadow = __ioremap(
-               spu_pdata(spu)->shadow_addr, sizeof(struct spe_shadow),
-               pgprot_val(PAGE_READONLY) | _PAGE_NO_CACHE | _PAGE_GUARDED);
+       spu_pdata(spu)->shadow = ioremap_flags(spu_pdata(spu)->shadow_addr,
+                                              sizeof(struct spe_shadow),
+                                              pgprot_val(PAGE_READONLY) |
+                                              _PAGE_NO_CACHE);
        if (!spu_pdata(spu)->shadow) {
                pr_debug("%s:%d: ioremap shadow failed\n", __func__, __LINE__);
                goto fail_ioremap;
        }
 
-       spu->local_store = ioremap(spu->local_store_phys, LS_SIZE);
+       spu->local_store = (__force void *)ioremap_flags(spu->local_store_phys,
+               LS_SIZE, _PAGE_NO_CACHE);
+
        if (!spu->local_store) {
                pr_debug("%s:%d: ioremap local_store failed\n",
                        __func__, __LINE__);
@@ -199,6 +202,7 @@ static int __init setup_areas(struct spu *spu)
 
        spu->problem = ioremap(spu->problem_phys,
                sizeof(struct spu_problem));
+
        if (!spu->problem) {
                pr_debug("%s:%d: ioremap problem failed\n", __func__, __LINE__);
                goto fail_ioremap;
@@ -206,6 +210,7 @@ static int __init setup_areas(struct spu *spu)
 
        spu->priv2 = ioremap(spu_pdata(spu)->priv2_addr,
                sizeof(struct spu_priv2));
+
        if (!spu->priv2) {
                pr_debug("%s:%d: ioremap priv2 failed\n", __func__, __LINE__);
                goto fail_ioremap;
@@ -400,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",
                        __func__, __LINE__);
+               return result;
+       }
 
-       return result;
+       return num_resource_id;
 }
 
 const struct spu_management_ops spu_management_ps3_ops = {