162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-or-later 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Common PowerQUICC II code. 462306a36Sopenharmony_ci * 562306a36Sopenharmony_ci * Author: Scott Wood <scottwood@freescale.com> 662306a36Sopenharmony_ci * Copyright (c) 2007 Freescale Semiconductor 762306a36Sopenharmony_ci * 862306a36Sopenharmony_ci * Based on code by Vitaly Bordug <vbordug@ru.mvista.com> 962306a36Sopenharmony_ci * pq2_restart fix by Wade Farnsworth <wfarnsworth@mvista.com> 1062306a36Sopenharmony_ci * Copyright (c) 2006 MontaVista Software, Inc. 1162306a36Sopenharmony_ci */ 1262306a36Sopenharmony_ci 1362306a36Sopenharmony_ci#include <linux/kprobes.h> 1462306a36Sopenharmony_ci 1562306a36Sopenharmony_ci#include <asm/cpm2.h> 1662306a36Sopenharmony_ci#include <asm/io.h> 1762306a36Sopenharmony_ci#include <asm/pci-bridge.h> 1862306a36Sopenharmony_ci 1962306a36Sopenharmony_ci#include <platforms/82xx/pq2.h> 2062306a36Sopenharmony_ci 2162306a36Sopenharmony_ci#define RMR_CSRE 0x00000001 2262306a36Sopenharmony_ci 2362306a36Sopenharmony_civoid __noreturn pq2_restart(char *cmd) 2462306a36Sopenharmony_ci{ 2562306a36Sopenharmony_ci local_irq_disable(); 2662306a36Sopenharmony_ci setbits32(&cpm2_immr->im_clkrst.car_rmr, RMR_CSRE); 2762306a36Sopenharmony_ci 2862306a36Sopenharmony_ci /* Clear the ME,EE,IR & DR bits in MSR to cause checkstop */ 2962306a36Sopenharmony_ci mtmsr(mfmsr() & ~(MSR_ME | MSR_EE | MSR_IR | MSR_DR)); 3062306a36Sopenharmony_ci in_8(&cpm2_immr->im_clkrst.res[0]); 3162306a36Sopenharmony_ci 3262306a36Sopenharmony_ci panic("Restart failed\n"); 3362306a36Sopenharmony_ci} 3462306a36Sopenharmony_ciNOKPROBE_SYMBOL(pq2_restart) 35