Commit 61a33168 authored by Yoichi Yuasa's avatar Yoichi Yuasa Committed by Ralf Baechle

[MIPS] vr41xx: add cpu_wait

Add cpu_wait for NEC VR41xx
Signed-off-by: default avatarYoichi Yuasa <yoichi_yuasa@tripeaks.co.jp>
Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
parent f571eff0
/* /*
* pmu.c, Power Management Unit routines for NEC VR4100 series. * pmu.c, Power Management Unit routines for NEC VR4100 series.
* *
* Copyright (C) 2003-2005 Yoichi Yuasa <yoichi_yuasa@tripeaks.co.jp> * Copyright (C) 2003-2007 Yoichi Yuasa <yoichi_yuasa@tripeaks.co.jp>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
...@@ -22,11 +22,12 @@ ...@@ -22,11 +22,12 @@
#include <linux/ioport.h> #include <linux/ioport.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/pm.h> #include <linux/pm.h>
#include <linux/smp.h> #include <linux/sched.h>
#include <linux/types.h> #include <linux/types.h>
#include <asm/cpu.h> #include <asm/cpu.h>
#include <asm/io.h> #include <asm/io.h>
#include <asm/processor.h>
#include <asm/reboot.h> #include <asm/reboot.h>
#include <asm/system.h> #include <asm/system.h>
...@@ -44,6 +45,18 @@ static void __iomem *pmu_base; ...@@ -44,6 +45,18 @@ static void __iomem *pmu_base;
#define pmu_read(offset) readw(pmu_base + (offset)) #define pmu_read(offset) readw(pmu_base + (offset))
#define pmu_write(offset, value) writew((value), pmu_base + (offset)) #define pmu_write(offset, value) writew((value), pmu_base + (offset))
static void vr41xx_cpu_wait(void)
{
local_irq_disable();
if (!need_resched())
/*
* "standby" sets IE bit of the CP0_STATUS to 1.
*/
__asm__("standby;\n");
else
local_irq_enable();
}
static inline void software_reset(void) static inline void software_reset(void)
{ {
uint16_t pmucnt2; uint16_t pmucnt2;
...@@ -113,6 +126,7 @@ static int __init vr41xx_pmu_init(void) ...@@ -113,6 +126,7 @@ static int __init vr41xx_pmu_init(void)
return -EBUSY; return -EBUSY;
} }
cpu_wait = vr41xx_cpu_wait;
_machine_restart = vr41xx_restart; _machine_restart = vr41xx_restart;
_machine_halt = vr41xx_halt; _machine_halt = vr41xx_halt;
pm_power_off = vr41xx_power_off; pm_power_off = vr41xx_power_off;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment