aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/platforms/wsp/wsp.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/powerpc/platforms/wsp/wsp.c')
-rw-r--r--arch/powerpc/platforms/wsp/wsp.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/arch/powerpc/platforms/wsp/wsp.c b/arch/powerpc/platforms/wsp/wsp.c
index d25cc96c21b8..ddb6efe88914 100644
--- a/arch/powerpc/platforms/wsp/wsp.c
+++ b/arch/powerpc/platforms/wsp/wsp.c
@@ -89,6 +89,7 @@ void wsp_halt(void)
89 struct device_node *dn; 89 struct device_node *dn;
90 struct device_node *mine; 90 struct device_node *mine;
91 struct device_node *me; 91 struct device_node *me;
92 int rc;
92 93
93 me = of_get_cpu_node(smp_processor_id(), NULL); 94 me = of_get_cpu_node(smp_processor_id(), NULL);
94 mine = scom_find_parent(me); 95 mine = scom_find_parent(me);
@@ -101,15 +102,15 @@ void wsp_halt(void)
101 102
102 /* read-modify-write it so the HW probe does not get 103 /* read-modify-write it so the HW probe does not get
103 * confused */ 104 * confused */
104 val = scom_read(m, 0); 105 rc = scom_read(m, 0, &val);
105 val |= 1; 106 if (rc == 0)
106 scom_write(m, 0, val); 107 scom_write(m, 0, val | 1);
107 scom_unmap(m); 108 scom_unmap(m);
108 } 109 }
109 m = scom_map(mine, 0, 1); 110 m = scom_map(mine, 0, 1);
110 val = scom_read(m, 0); 111 rc = scom_read(m, 0, &val);
111 val |= 1; 112 if (rc == 0)
112 scom_write(m, 0, val); 113 scom_write(m, 0, val | 1);
113 /* should never return */ 114 /* should never return */
114 scom_unmap(m); 115 scom_unmap(m);
115} 116}