From e1297b9619f784c74da27ebd802394b07dd3c289 Mon Sep 17 00:00:00 2001 From: Andrew Morton Date: Mon, 15 Mar 2004 15:28:13 -0800 Subject: [PATCH] [PATCH] Added rtas_set_power_level() From: John Rose Added rtas_set_power_level() --- arch/ppc64/kernel/rtas.c | 28 ++++++++++++++++++++++++++++ include/asm-ppc64/rtas.h | 1 + 2 files changed, 29 insertions(+) diff --git a/arch/ppc64/kernel/rtas.c b/arch/ppc64/kernel/rtas.c index 89b4d753409b7..cd1e8a3a8b61b 100644 --- a/arch/ppc64/kernel/rtas.c +++ b/arch/ppc64/kernel/rtas.c @@ -258,6 +258,33 @@ rtas_get_power_level(int powerdomain, int *level) return rc; } +int +rtas_set_power_level(int powerdomain, int level, int *setlevel) +{ + int token = rtas_token("set-power-level"); + unsigned int wait_time; + long returned_level; + int rc; + + if (token == RTAS_UNKNOWN_SERVICE) + return RTAS_UNKNOWN_OP; + + while (1) { + rc = (int) rtas_call(token, 2, 2, &returned_level, powerdomain, + level); + if (rc == RTAS_BUSY) + udelay(1); + else if (rtas_is_extended_busy(rc)) { + wait_time = rtas_extended_busy_delay_time(rc); + udelay(wait_time * 1000); + } + else + break; + } + *setlevel = (int) returned_level; + return rc; +} + int rtas_get_sensor(int sensor, int index, int *state) { @@ -472,4 +499,5 @@ EXPORT_SYMBOL(rtas_data_buf_lock); EXPORT_SYMBOL(rtas_extended_busy_delay_time); EXPORT_SYMBOL(rtas_get_sensor); EXPORT_SYMBOL(rtas_get_power_level); +EXPORT_SYMBOL(rtas_set_power_level); EXPORT_SYMBOL(rtas_set_indicator); diff --git a/include/asm-ppc64/rtas.h b/include/asm-ppc64/rtas.h index 7adc4ad7934a5..5ce76143dce1d 100644 --- a/include/asm-ppc64/rtas.h +++ b/include/asm-ppc64/rtas.h @@ -177,6 +177,7 @@ extern void rtas_power_off(void); extern void rtas_halt(void); extern int rtas_get_sensor(int sensor, int index, int *state); extern int rtas_get_power_level(int powerdomain, int *level); +extern int rtas_set_power_level(int powerdomain, int level, int *setlevel); extern int rtas_set_indicator(int indicator, int index, int new_value); /* Given an RTAS status code of 9900..9905 compute the hinted delay */ -- 2.53.0