Files
OpenCellular/include/dptf.h
Randall Spangler 5c808ee56c Support DPTF charger current limiting
This enables the AP to limit charging current via ACPI.

BUG=chrome-os-partner:23971
BRANCH=rambi
TEST=manual
    drain battery down to <90%, then plug into AC
    (charger commands at EC console, iotools at root shell)

    iotools io_write8 0x66 0x81
    iotools io_write8 0x62 0x08
    iotools io_write8 0x62 3

    charger -> dptf limit 192, I_batt=192

    charger dptf 320
    charger -> dptf limit 320, I_batt=320

    iotools io_write8 0x66 0x80
    iotools io_write8 0x62 0x08
    iotools io_read8 0x62 -> 0x05

    iotools io_write8 0x66 0x81
    iotools io_write8 0x62 0x08
    iotools io_write8 0x62 0xff

    charger -> dptf disabled, I_batt=(something > 192)

    iotools io_write8 0x66 0x80
    iotools io_write8 0x62 0x08
    iotools io_read8 0x62 -> 0xff

Change-Id: Iace2ebbbc018143c0154310d7acd02d16a6b7339
Signed-off-by: Randall Spangler <rspangler@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/185411
Reviewed-by: Bill Richardson <wfrichar@chromium.org>
2014-02-08 00:14:48 +00:00

52 lines
1.3 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.
*/
/* Functions used to provide the Intel DPTF interface over ACPI */
#ifndef __CROS_EC_DPTF_H
#define __CROS_EC_DPTF_H
/**
* Set fan duty target.
*
* 0-100% sets fixed duty cycle, out of range means let the EC drive.
*/
void dptf_set_fan_duty_target(int pct);
/**
* Return 0-100% if in duty mode. -1 if not.
*/
int dptf_get_fan_duty_target(void);
/* Thermal thresholds may be set for each temp sensor. */
#define DPTF_THRESHOLDS_PER_SENSOR 2
#define DPTF_THRESHOLD_HYSTERESIS 2
/**
* Set/enable the thresholds.
*/
void dptf_set_temp_threshold(int sensor_id, /* zero-based sensor index */
int temp, /* in degrees K */
int idx, /* which threshold (0 or 1) */
int enable); /* true = on, false = off */
/**
* Return the ID of a temp sensor that has crossed its threshold since the last
* time we asked. -1 means none.
*/
int dptf_query_next_sensor_event(void);
/**
* Set charging current limit, in mA. -1 means no limit.
*/
void dptf_set_charging_current_limit(int ma);
/**
* Get charging current limit, in mA, or -1 if not DPTF-limiting.
*/
int dptf_get_charging_current_limit(void);
#endif /* __CROS_EC_DPTF_H */