mirror of
https://github.com/adulau/aha.git
synced 2024-12-28 19:56:18 +00:00
[MIPS] vr41xx: add cpu_wait
Add cpu_wait for NEC VR41xx Signed-off-by: Yoichi Yuasa <yoichi_yuasa@tripeaks.co.jp> Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
This commit is contained in:
parent
f571eff0a2
commit
61a33168be
1 changed files with 16 additions and 2 deletions
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* 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
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
@ -22,11 +22,12 @@
|
|||
#include <linux/ioport.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/pm.h>
|
||||
#include <linux/smp.h>
|
||||
#include <linux/sched.h>
|
||||
#include <linux/types.h>
|
||||
|
||||
#include <asm/cpu.h>
|
||||
#include <asm/io.h>
|
||||
#include <asm/processor.h>
|
||||
#include <asm/reboot.h>
|
||||
#include <asm/system.h>
|
||||
|
||||
|
@ -44,6 +45,18 @@ static void __iomem *pmu_base;
|
|||
#define pmu_read(offset) readw(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)
|
||||
{
|
||||
uint16_t pmucnt2;
|
||||
|
@ -113,6 +126,7 @@ static int __init vr41xx_pmu_init(void)
|
|||
return -EBUSY;
|
||||
}
|
||||
|
||||
cpu_wait = vr41xx_cpu_wait;
|
||||
_machine_restart = vr41xx_restart;
|
||||
_machine_halt = vr41xx_halt;
|
||||
pm_power_off = vr41xx_power_off;
|
||||
|
|
Loading…
Reference in a new issue