37 lines
805 B
C
37 lines
805 B
C
// SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
|
|
/*
|
|
* OPAL calls to get/set power caps
|
|
*
|
|
* Copyright 2017 IBM Corp.
|
|
*/
|
|
|
|
#include <powercap.h>
|
|
|
|
static int opal_get_powercap(u32 handle, int token __unused, __be32 *__pcap)
|
|
{
|
|
if (!__pcap || !opal_addr_valid(__pcap))
|
|
return OPAL_PARAMETER;
|
|
|
|
if (powercap_get_class(handle) == POWERCAP_CLASS_OCC) {
|
|
u32 pcap;
|
|
int rc;
|
|
|
|
rc = occ_get_powercap(handle, &pcap);
|
|
*__pcap = cpu_to_be32(pcap);
|
|
return rc;
|
|
}
|
|
|
|
return OPAL_UNSUPPORTED;
|
|
};
|
|
|
|
opal_call(OPAL_GET_POWERCAP, opal_get_powercap, 3);
|
|
|
|
static int opal_set_powercap(u32 handle, int token, u32 pcap)
|
|
{
|
|
if (powercap_get_class(handle) == POWERCAP_CLASS_OCC)
|
|
return occ_set_powercap(handle, token, pcap);
|
|
|
|
return OPAL_UNSUPPORTED;
|
|
};
|
|
|
|
opal_call(OPAL_SET_POWERCAP, opal_set_powercap, 3);
|