Skip to content

Commit 7120438

Browse files
ndreysScott Wood
authored and
Scott Wood
committedSep 25, 2016
powerpc: Convert fsl_rstcr_restart to a reset handler
Convert fsl_rstcr_restart into a function to be registered with register_reset_handler(). Signed-off-by: Andrey Smirnov <[email protected]> [scottwood: Converted mvme7100 as well] Signed-off-by: Scott Wood <[email protected]>
1 parent ad24747 commit 7120438

33 files changed

+38
-67
lines changed
 

‎arch/powerpc/platforms/85xx/bsc913x_qds.c

-1
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,6 @@ define_machine(bsc9132_qds) {
7272
.pcibios_fixup_bus = fsl_pcibios_fixup_bus,
7373
#endif
7474
.get_irq = mpic_get_irq,
75-
.restart = fsl_rstcr_restart,
7675
.calibrate_decr = generic_calibrate_decr,
7776
.progress = udbg_progress,
7877
};

‎arch/powerpc/platforms/85xx/bsc913x_rdb.c

-1
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,6 @@ define_machine(bsc9131_rdb) {
5959
.setup_arch = bsc913x_rdb_setup_arch,
6060
.init_IRQ = bsc913x_rdb_pic_init,
6161
.get_irq = mpic_get_irq,
62-
.restart = fsl_rstcr_restart,
6362
.calibrate_decr = generic_calibrate_decr,
6463
.progress = udbg_progress,
6564
};

‎arch/powerpc/platforms/85xx/c293pcie.c

-1
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,6 @@ define_machine(c293_pcie) {
6565
.setup_arch = c293_pcie_setup_arch,
6666
.init_IRQ = c293_pcie_pic_init,
6767
.get_irq = mpic_get_irq,
68-
.restart = fsl_rstcr_restart,
6968
.calibrate_decr = generic_calibrate_decr,
7069
.progress = udbg_progress,
7170
};

‎arch/powerpc/platforms/85xx/corenet_generic.c

-1
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,6 @@ define_machine(corenet_generic) {
225225
#else
226226
.get_irq = mpic_get_coreint_irq,
227227
#endif
228-
.restart = fsl_rstcr_restart,
229228
.calibrate_decr = generic_calibrate_decr,
230229
.progress = udbg_progress,
231230
#ifdef CONFIG_PPC64

‎arch/powerpc/platforms/85xx/ge_imp3a.c

-1
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,6 @@ define_machine(ge_imp3a) {
215215
.pcibios_fixup_phb = fsl_pcibios_fixup_phb,
216216
#endif
217217
.get_irq = mpic_get_irq,
218-
.restart = fsl_rstcr_restart,
219218
.calibrate_decr = generic_calibrate_decr,
220219
.progress = udbg_progress,
221220
};

‎arch/powerpc/platforms/85xx/mpc8536_ds.c

-1
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,6 @@ define_machine(mpc8536_ds) {
7777
.pcibios_fixup_phb = fsl_pcibios_fixup_phb,
7878
#endif
7979
.get_irq = mpic_get_irq,
80-
.restart = fsl_rstcr_restart,
8180
.calibrate_decr = generic_calibrate_decr,
8281
.progress = udbg_progress,
8382
};

‎arch/powerpc/platforms/85xx/mpc85xx_ads.c

-1
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,6 @@ define_machine(mpc85xx_ads) {
170170
.init_IRQ = mpc85xx_ads_pic_init,
171171
.show_cpuinfo = mpc85xx_ads_show_cpuinfo,
172172
.get_irq = mpic_get_irq,
173-
.restart = fsl_rstcr_restart,
174173
.calibrate_decr = generic_calibrate_decr,
175174
.progress = udbg_progress,
176175
};

‎arch/powerpc/platforms/85xx/mpc85xx_cds.c

+18-7
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,8 @@ static int mpc85xx_exclude_device(struct pci_controller *hose,
8383
return PCIBIOS_SUCCESSFUL;
8484
}
8585

86-
static void __noreturn mpc85xx_cds_restart(char *cmd)
86+
static int mpc85xx_cds_restart(struct notifier_block *this,
87+
unsigned long mode, void *cmd)
8788
{
8889
struct pci_dev *dev;
8990
u_char tmp;
@@ -108,12 +109,25 @@ static void __noreturn mpc85xx_cds_restart(char *cmd)
108109
}
109110

110111
/*
111-
* If we can't find the VIA chip (maybe the P2P bridge is disabled)
112-
* or the VIA chip reset didn't work, just use the default reset.
112+
* If we can't find the VIA chip (maybe the P2P bridge is
113+
* disabled) or the VIA chip reset didn't work, just return
114+
* and let default reset sequence happen.
113115
*/
114-
fsl_rstcr_restart(NULL);
116+
return NOTIFY_DONE;
115117
}
116118

119+
static int mpc85xx_cds_restart_register(void)
120+
{
121+
static struct notifier_block restart_handler;
122+
123+
restart_handler.notifier_call = mpc85xx_cds_restart;
124+
restart_handler.priority = 192;
125+
126+
return register_restart_handler(&restart_handler);
127+
}
128+
machine_arch_initcall(mpc85xx_cds, mpc85xx_cds_restart_register);
129+
130+
117131
static void __init mpc85xx_cds_pci_irq_fixup(struct pci_dev *dev)
118132
{
119133
u_char c;
@@ -380,11 +394,8 @@ define_machine(mpc85xx_cds) {
380394
.show_cpuinfo = mpc85xx_cds_show_cpuinfo,
381395
.get_irq = mpic_get_irq,
382396
#ifdef CONFIG_PCI
383-
.restart = mpc85xx_cds_restart,
384397
.pcibios_fixup_bus = mpc85xx_cds_fixup_bus,
385398
.pcibios_fixup_phb = fsl_pcibios_fixup_phb,
386-
#else
387-
.restart = fsl_rstcr_restart,
388399
#endif
389400
.calibrate_decr = generic_calibrate_decr,
390401
.progress = udbg_progress,

‎arch/powerpc/platforms/85xx/mpc85xx_ds.c

-3
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,6 @@ define_machine(mpc8544_ds) {
204204
.pcibios_fixup_phb = fsl_pcibios_fixup_phb,
205205
#endif
206206
.get_irq = mpic_get_irq,
207-
.restart = fsl_rstcr_restart,
208207
.calibrate_decr = generic_calibrate_decr,
209208
.progress = udbg_progress,
210209
};
@@ -219,7 +218,6 @@ define_machine(mpc8572_ds) {
219218
.pcibios_fixup_phb = fsl_pcibios_fixup_phb,
220219
#endif
221220
.get_irq = mpic_get_irq,
222-
.restart = fsl_rstcr_restart,
223221
.calibrate_decr = generic_calibrate_decr,
224222
.progress = udbg_progress,
225223
};
@@ -234,7 +232,6 @@ define_machine(p2020_ds) {
234232
.pcibios_fixup_phb = fsl_pcibios_fixup_phb,
235233
#endif
236234
.get_irq = mpic_get_irq,
237-
.restart = fsl_rstcr_restart,
238235
.calibrate_decr = generic_calibrate_decr,
239236
.progress = udbg_progress,
240237
};

‎arch/powerpc/platforms/85xx/mpc85xx_mds.c

-3
Original file line numberDiff line numberDiff line change
@@ -393,7 +393,6 @@ define_machine(mpc8568_mds) {
393393
.setup_arch = mpc85xx_mds_setup_arch,
394394
.init_IRQ = mpc85xx_mds_pic_init,
395395
.get_irq = mpic_get_irq,
396-
.restart = fsl_rstcr_restart,
397396
.calibrate_decr = generic_calibrate_decr,
398397
.progress = udbg_progress,
399398
#ifdef CONFIG_PCI
@@ -413,7 +412,6 @@ define_machine(mpc8569_mds) {
413412
.setup_arch = mpc85xx_mds_setup_arch,
414413
.init_IRQ = mpc85xx_mds_pic_init,
415414
.get_irq = mpic_get_irq,
416-
.restart = fsl_rstcr_restart,
417415
.calibrate_decr = generic_calibrate_decr,
418416
.progress = udbg_progress,
419417
#ifdef CONFIG_PCI
@@ -434,7 +432,6 @@ define_machine(p1021_mds) {
434432
.setup_arch = mpc85xx_mds_setup_arch,
435433
.init_IRQ = mpc85xx_mds_pic_init,
436434
.get_irq = mpic_get_irq,
437-
.restart = fsl_rstcr_restart,
438435
.calibrate_decr = generic_calibrate_decr,
439436
.progress = udbg_progress,
440437
#ifdef CONFIG_PCI

‎arch/powerpc/platforms/85xx/mpc85xx_rdb.c

-10
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,6 @@ define_machine(p2020_rdb) {
213213
.pcibios_fixup_phb = fsl_pcibios_fixup_phb,
214214
#endif
215215
.get_irq = mpic_get_irq,
216-
.restart = fsl_rstcr_restart,
217216
.calibrate_decr = generic_calibrate_decr,
218217
.progress = udbg_progress,
219218
};
@@ -228,7 +227,6 @@ define_machine(p1020_rdb) {
228227
.pcibios_fixup_phb = fsl_pcibios_fixup_phb,
229228
#endif
230229
.get_irq = mpic_get_irq,
231-
.restart = fsl_rstcr_restart,
232230
.calibrate_decr = generic_calibrate_decr,
233231
.progress = udbg_progress,
234232
};
@@ -243,7 +241,6 @@ define_machine(p1021_rdb_pc) {
243241
.pcibios_fixup_phb = fsl_pcibios_fixup_phb,
244242
#endif
245243
.get_irq = mpic_get_irq,
246-
.restart = fsl_rstcr_restart,
247244
.calibrate_decr = generic_calibrate_decr,
248245
.progress = udbg_progress,
249246
};
@@ -258,7 +255,6 @@ define_machine(p2020_rdb_pc) {
258255
.pcibios_fixup_phb = fsl_pcibios_fixup_phb,
259256
#endif
260257
.get_irq = mpic_get_irq,
261-
.restart = fsl_rstcr_restart,
262258
.calibrate_decr = generic_calibrate_decr,
263259
.progress = udbg_progress,
264260
};
@@ -273,7 +269,6 @@ define_machine(p1025_rdb) {
273269
.pcibios_fixup_phb = fsl_pcibios_fixup_phb,
274270
#endif
275271
.get_irq = mpic_get_irq,
276-
.restart = fsl_rstcr_restart,
277272
.calibrate_decr = generic_calibrate_decr,
278273
.progress = udbg_progress,
279274
};
@@ -288,7 +283,6 @@ define_machine(p1020_mbg_pc) {
288283
.pcibios_fixup_phb = fsl_pcibios_fixup_phb,
289284
#endif
290285
.get_irq = mpic_get_irq,
291-
.restart = fsl_rstcr_restart,
292286
.calibrate_decr = generic_calibrate_decr,
293287
.progress = udbg_progress,
294288
};
@@ -303,7 +297,6 @@ define_machine(p1020_utm_pc) {
303297
.pcibios_fixup_phb = fsl_pcibios_fixup_phb,
304298
#endif
305299
.get_irq = mpic_get_irq,
306-
.restart = fsl_rstcr_restart,
307300
.calibrate_decr = generic_calibrate_decr,
308301
.progress = udbg_progress,
309302
};
@@ -318,7 +311,6 @@ define_machine(p1020_rdb_pc) {
318311
.pcibios_fixup_phb = fsl_pcibios_fixup_phb,
319312
#endif
320313
.get_irq = mpic_get_irq,
321-
.restart = fsl_rstcr_restart,
322314
.calibrate_decr = generic_calibrate_decr,
323315
.progress = udbg_progress,
324316
};
@@ -333,7 +325,6 @@ define_machine(p1020_rdb_pd) {
333325
.pcibios_fixup_phb = fsl_pcibios_fixup_phb,
334326
#endif
335327
.get_irq = mpic_get_irq,
336-
.restart = fsl_rstcr_restart,
337328
.calibrate_decr = generic_calibrate_decr,
338329
.progress = udbg_progress,
339330
};
@@ -348,7 +339,6 @@ define_machine(p1024_rdb) {
348339
.pcibios_fixup_phb = fsl_pcibios_fixup_phb,
349340
#endif
350341
.get_irq = mpic_get_irq,
351-
.restart = fsl_rstcr_restart,
352342
.calibrate_decr = generic_calibrate_decr,
353343
.progress = udbg_progress,
354344
};

‎arch/powerpc/platforms/85xx/mvme2500.c

-1
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,6 @@ define_machine(mvme2500) {
6666
.pcibios_fixup_phb = fsl_pcibios_fixup_phb,
6767
#endif
6868
.get_irq = mpic_get_irq,
69-
.restart = fsl_rstcr_restart,
7069
.calibrate_decr = generic_calibrate_decr,
7170
.progress = udbg_progress,
7271
};

‎arch/powerpc/platforms/85xx/p1010rdb.c

-1
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,6 @@ define_machine(p1010_rdb) {
7979
.pcibios_fixup_phb = fsl_pcibios_fixup_phb,
8080
#endif
8181
.get_irq = mpic_get_irq,
82-
.restart = fsl_rstcr_restart,
8382
.calibrate_decr = generic_calibrate_decr,
8483
.progress = udbg_progress,
8584
};

‎arch/powerpc/platforms/85xx/p1022_ds.c

-1
Original file line numberDiff line numberDiff line change
@@ -568,7 +568,6 @@ define_machine(p1022_ds) {
568568
.pcibios_fixup_phb = fsl_pcibios_fixup_phb,
569569
#endif
570570
.get_irq = mpic_get_irq,
571-
.restart = fsl_rstcr_restart,
572571
.calibrate_decr = generic_calibrate_decr,
573572
.progress = udbg_progress,
574573
};

‎arch/powerpc/platforms/85xx/p1022_rdk.c

-1
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,6 @@ define_machine(p1022_rdk) {
148148
.pcibios_fixup_phb = fsl_pcibios_fixup_phb,
149149
#endif
150150
.get_irq = mpic_get_irq,
151-
.restart = fsl_rstcr_restart,
152151
.calibrate_decr = generic_calibrate_decr,
153152
.progress = udbg_progress,
154153
};

‎arch/powerpc/platforms/85xx/p1023_rdb.c

-1
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,6 @@ define_machine(p1023_rdb) {
110110
.setup_arch = mpc85xx_rdb_setup_arch,
111111
.init_IRQ = mpc85xx_rdb_pic_init,
112112
.get_irq = mpic_get_irq,
113-
.restart = fsl_rstcr_restart,
114113
.calibrate_decr = generic_calibrate_decr,
115114
.progress = udbg_progress,
116115
#ifdef CONFIG_PCI

‎arch/powerpc/platforms/85xx/ppa8548.c

-1
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,6 @@ define_machine(ppa8548) {
9191
.init_IRQ = ppa8548_pic_init,
9292
.show_cpuinfo = ppa8548_show_cpuinfo,
9393
.get_irq = mpic_get_irq,
94-
.restart = fsl_rstcr_restart,
9594
.calibrate_decr = generic_calibrate_decr,
9695
.progress = udbg_progress,
9796
};

‎arch/powerpc/platforms/85xx/qemu_e500.c

-1
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,6 @@ define_machine(qemu_e500) {
7777
.pcibios_fixup_phb = fsl_pcibios_fixup_phb,
7878
#endif
7979
.get_irq = mpic_get_coreint_irq,
80-
.restart = fsl_rstcr_restart,
8180
.calibrate_decr = generic_calibrate_decr,
8281
.progress = udbg_progress,
8382
};

‎arch/powerpc/platforms/85xx/sbc8548.c

-1
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,6 @@ define_machine(sbc8548) {
130130
.init_IRQ = sbc8548_pic_init,
131131
.show_cpuinfo = sbc8548_show_cpuinfo,
132132
.get_irq = mpic_get_irq,
133-
.restart = fsl_rstcr_restart,
134133
#ifdef CONFIG_PCI
135134
.pcibios_fixup_bus = fsl_pcibios_fixup_bus,
136135
.pcibios_fixup_phb = fsl_pcibios_fixup_phb,

‎arch/powerpc/platforms/85xx/socrates.c

-1
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,6 @@ define_machine(socrates) {
9191
.setup_arch = socrates_setup_arch,
9292
.init_IRQ = socrates_pic_init,
9393
.get_irq = mpic_get_irq,
94-
.restart = fsl_rstcr_restart,
9594
.calibrate_decr = generic_calibrate_decr,
9695
.progress = udbg_progress,
9796
};

‎arch/powerpc/platforms/85xx/stx_gp3.c

-1
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,6 @@ define_machine(stx_gp3) {
103103
.init_IRQ = stx_gp3_pic_init,
104104
.show_cpuinfo = stx_gp3_show_cpuinfo,
105105
.get_irq = mpic_get_irq,
106-
.restart = fsl_rstcr_restart,
107106
.calibrate_decr = generic_calibrate_decr,
108107
.progress = udbg_progress,
109108
};

‎arch/powerpc/platforms/85xx/tqm85xx.c

-1
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,6 @@ define_machine(tqm85xx) {
132132
.init_IRQ = tqm85xx_pic_init,
133133
.show_cpuinfo = tqm85xx_show_cpuinfo,
134134
.get_irq = mpic_get_irq,
135-
.restart = fsl_rstcr_restart,
136135
.calibrate_decr = generic_calibrate_decr,
137136
.progress = udbg_progress,
138137
};

‎arch/powerpc/platforms/85xx/twr_p102x.c

-1
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,6 @@ define_machine(twr_p1025) {
140140
.pcibios_fixup_bus = fsl_pcibios_fixup_bus,
141141
#endif
142142
.get_irq = mpic_get_irq,
143-
.restart = fsl_rstcr_restart,
144143
.calibrate_decr = generic_calibrate_decr,
145144
.progress = udbg_progress,
146145
};

‎arch/powerpc/platforms/85xx/xes_mpc85xx.c

-3
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,6 @@ define_machine(xes_mpc8572) {
167167
.pcibios_fixup_phb = fsl_pcibios_fixup_phb,
168168
#endif
169169
.get_irq = mpic_get_irq,
170-
.restart = fsl_rstcr_restart,
171170
.calibrate_decr = generic_calibrate_decr,
172171
.progress = udbg_progress,
173172
};
@@ -182,7 +181,6 @@ define_machine(xes_mpc8548) {
182181
.pcibios_fixup_phb = fsl_pcibios_fixup_phb,
183182
#endif
184183
.get_irq = mpic_get_irq,
185-
.restart = fsl_rstcr_restart,
186184
.calibrate_decr = generic_calibrate_decr,
187185
.progress = udbg_progress,
188186
};
@@ -197,7 +195,6 @@ define_machine(xes_mpc8540) {
197195
.pcibios_fixup_phb = fsl_pcibios_fixup_phb,
198196
#endif
199197
.get_irq = mpic_get_irq,
200-
.restart = fsl_rstcr_restart,
201198
.calibrate_decr = generic_calibrate_decr,
202199
.progress = udbg_progress,
203200
};

‎arch/powerpc/platforms/86xx/gef_ppc9a.c

-1
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,6 @@ define_machine(gef_ppc9a) {
204204
.init_IRQ = gef_ppc9a_init_irq,
205205
.show_cpuinfo = gef_ppc9a_show_cpuinfo,
206206
.get_irq = mpic_get_irq,
207-
.restart = fsl_rstcr_restart,
208207
.time_init = mpc86xx_time_init,
209208
.calibrate_decr = generic_calibrate_decr,
210209
.progress = udbg_progress,

‎arch/powerpc/platforms/86xx/gef_sbc310.c

-1
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,6 @@ define_machine(gef_sbc310) {
191191
.init_IRQ = gef_sbc310_init_irq,
192192
.show_cpuinfo = gef_sbc310_show_cpuinfo,
193193
.get_irq = mpic_get_irq,
194-
.restart = fsl_rstcr_restart,
195194
.time_init = mpc86xx_time_init,
196195
.calibrate_decr = generic_calibrate_decr,
197196
.progress = udbg_progress,

‎arch/powerpc/platforms/86xx/gef_sbc610.c

-1
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,6 @@ define_machine(gef_sbc610) {
181181
.init_IRQ = gef_sbc610_init_irq,
182182
.show_cpuinfo = gef_sbc610_show_cpuinfo,
183183
.get_irq = mpic_get_irq,
184-
.restart = fsl_rstcr_restart,
185184
.time_init = mpc86xx_time_init,
186185
.calibrate_decr = generic_calibrate_decr,
187186
.progress = udbg_progress,

‎arch/powerpc/platforms/86xx/mpc8610_hpcd.c

-1
Original file line numberDiff line numberDiff line change
@@ -331,7 +331,6 @@ define_machine(mpc86xx_hpcd) {
331331
.setup_arch = mpc86xx_hpcd_setup_arch,
332332
.init_IRQ = mpc86xx_init_irq,
333333
.get_irq = mpic_get_irq,
334-
.restart = fsl_rstcr_restart,
335334
.time_init = mpc86xx_time_init,
336335
.calibrate_decr = generic_calibrate_decr,
337336
.progress = udbg_progress,

‎arch/powerpc/platforms/86xx/mpc86xx_hpcn.c

-1
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,6 @@ define_machine(mpc86xx_hpcn) {
130130
.init_IRQ = mpc86xx_init_irq,
131131
.show_cpuinfo = mpc86xx_hpcn_show_cpuinfo,
132132
.get_irq = mpic_get_irq,
133-
.restart = fsl_rstcr_restart,
134133
.time_init = mpc86xx_time_init,
135134
.calibrate_decr = generic_calibrate_decr,
136135
.progress = udbg_progress,

‎arch/powerpc/platforms/86xx/mvme7100.c

-1
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,6 @@ define_machine(mvme7100) {
111111
.setup_arch = mvme7100_setup_arch,
112112
.init_IRQ = mpc86xx_init_irq,
113113
.get_irq = mpic_get_irq,
114-
.restart = fsl_rstcr_restart,
115114
.time_init = mpc86xx_time_init,
116115
.calibrate_decr = generic_calibrate_decr,
117116
.progress = udbg_progress,

‎arch/powerpc/platforms/86xx/sbc8641d.c

-1
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,6 @@ define_machine(sbc8641) {
8282
.init_IRQ = mpc86xx_init_irq,
8383
.show_cpuinfo = sbc8641_show_cpuinfo,
8484
.get_irq = mpic_get_irq,
85-
.restart = fsl_rstcr_restart,
8685
.time_init = mpc86xx_time_init,
8786
.calibrate_decr = generic_calibrate_decr,
8887
.progress = udbg_progress,

‎arch/powerpc/sysdev/fsl_soc.c

+20-13
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
#include <linux/fsl_devices.h>
3030
#include <linux/fs_enet_pd.h>
3131
#include <linux/fs_uart_pd.h>
32+
#include <linux/reboot.h>
3233

3334
#include <linux/atomic.h>
3435
#include <asm/io.h>
@@ -180,39 +181,45 @@ EXPORT_SYMBOL(get_baudrate);
180181
#if defined(CONFIG_FSL_SOC_BOOKE) || defined(CONFIG_PPC_86xx)
181182
static __be32 __iomem *rstcr;
182183

184+
static int fsl_rstcr_restart(struct notifier_block *this,
185+
unsigned long mode, void *cmd)
186+
{
187+
local_irq_disable();
188+
/* set reset control register */
189+
out_be32(rstcr, 0x2); /* HRESET_REQ */
190+
191+
return NOTIFY_DONE;
192+
}
193+
183194
static int __init setup_rstcr(void)
184195
{
185196
struct device_node *np;
186197

198+
static struct notifier_block restart_handler = {
199+
.notifier_call = fsl_rstcr_restart,
200+
.priority = 128,
201+
};
202+
187203
for_each_node_by_name(np, "global-utilities") {
188204
if ((of_get_property(np, "fsl,has-rstcr", NULL))) {
189205
rstcr = of_iomap(np, 0) + 0xb0;
190-
if (!rstcr)
206+
if (!rstcr) {
191207
printk (KERN_ERR "Error: reset control "
192208
"register not mapped!\n");
209+
} else {
210+
register_restart_handler(&restart_handler);
211+
}
193212
break;
194213
}
195214
}
196215

197-
if (!rstcr && ppc_md.restart == fsl_rstcr_restart)
198-
printk(KERN_ERR "No RSTCR register, warm reboot won't work\n");
199-
200216
of_node_put(np);
201217

202218
return 0;
203219
}
204220

205221
arch_initcall(setup_rstcr);
206222

207-
void __noreturn fsl_rstcr_restart(char *cmd)
208-
{
209-
local_irq_disable();
210-
if (rstcr)
211-
/* set reset control register */
212-
out_be32(rstcr, 0x2); /* HRESET_REQ */
213-
214-
while (1) ;
215-
}
216223
#endif
217224

218225
#if defined(CONFIG_FB_FSL_DIU) || defined(CONFIG_FB_FSL_DIU_MODULE)

‎arch/powerpc/sysdev/fsl_soc.h

-2
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,6 @@ extern u32 fsl_get_sys_freq(void);
1919
struct spi_board_info;
2020
struct device_node;
2121

22-
extern void __noreturn fsl_rstcr_restart(char *cmd);
23-
2422
/* The different ports that the DIU can be connected to */
2523
enum fsl_diu_monitor_port {
2624
FSL_DIU_PORT_DVI, /* DVI */

0 commit comments

Comments
 (0)
Please sign in to comment.