Files
OpenCellular/common/throttle_ap.c
Kyoung Kim e6902404a2 Kunimitsu: remove console commands for code size
Remove following EC console commands to reduce code size:
- battfake
- apthrottle
And none of commands above are used in 'auto test'.

This is a squash of
- https://chromium-review.googlesource.com/337657
- https://chromium-review.googlesource.com/338018

BUG=none
BRANCH=firmware-glados-7820.B
TEST=make -j buildall

Change-Id: I11d2c5514f2714f0a46416feec2b2c47666fb462
Signed-off-by: Kyoung Kim <kyoung.il.kim@intel.com>
Signed-off-by: Kevin K Wong <kevin.k.wong@intel.com>
Reviewed-on: https://chromium-review.googlesource.com/338893
Reviewed-by: Shawn N <shawnn@chromium.org>
2016-04-14 17:28:17 -07:00

97 lines
2.2 KiB
C

/* Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
/* Common chipset throttling code for Chrome EC */
#include "chipset.h"
#include "common.h"
#include "console.h"
#include "host_command.h"
#include "task.h"
#include "throttle_ap.h"
#include "util.h"
/* Console output macros */
#define CPUTS(outstr) cputs(CC_CHIPSET, outstr)
#define CPRINTS(format, args...) cprints(CC_CHIPSET, format, ## args)
/*****************************************************************************/
/* This enforces the virtual OR of all throttling sources. */
static struct mutex throttle_mutex;
static uint32_t throttle_request[NUM_THROTTLE_TYPES];
void throttle_ap(enum throttle_level level,
enum throttle_type type,
enum throttle_sources source)
{
uint32_t tmpval, bitmask;
mutex_lock(&throttle_mutex);
bitmask = (1 << source);
switch (level) {
case THROTTLE_ON:
throttle_request[type] |= bitmask;
break;
case THROTTLE_OFF:
throttle_request[type] &= ~bitmask;
break;
}
tmpval = throttle_request[type]; /* save for printing */
switch (type) {
case THROTTLE_SOFT:
#ifdef HAS_TASK_HOSTCMD
host_throttle_cpu(tmpval);
#endif
break;
case THROTTLE_HARD:
#ifdef CONFIG_CHIPSET_CAN_THROTTLE
chipset_throttle_cpu(tmpval);
#endif
break;
case NUM_THROTTLE_TYPES:
/* Make the compiler shut up. Don't use 'default', because
* we still want to catch any new types.
*/
break;
}
mutex_unlock(&throttle_mutex);
/* print outside the mutex */
CPRINTS("set AP throttling type %d to %s (0x%08x)",
type, tmpval ? "on" : "off", tmpval);
}
/*****************************************************************************/
/* Console commands */
#ifdef CONFIG_CMD_APTHROTTLE
static int command_apthrottle(int argc, char **argv)
{
int i;
uint32_t tmpval;
for (i = 0; i < NUM_THROTTLE_TYPES; i++) {
mutex_lock(&throttle_mutex);
tmpval = throttle_request[i];
mutex_unlock(&throttle_mutex);
ccprintf("AP throttling type %d is %s (0x%08x)\n", i,
tmpval ? "on" : "off", tmpval);
}
return EC_SUCCESS;
}
DECLARE_CONSOLE_COMMAND(apthrottle, command_apthrottle,
NULL,
"Display the AP throttling state",
NULL);
#endif