mirror of
https://github.com/Telecominfraproject/OpenCellular.git
synced 2025-12-30 18:41:11 +00:00
Previously these were often done in board.c files, which made it impossible to include the gpio.inc anywhere else. As part of refactoring the GPIO code we now need to be able to include gpio.inc from common/gpio.c. Moving these defines into gpio.inc makes them available wherever gpio.inc is included. Signed-off-by: Anton Staaf <robotboy@chromium.org> BRANCH=None BUG=None TEST=make buildall -j Change-Id: I28e7b5a1d40b113ae824b18f020b2d1e51e0c08a Reviewed-on: https://chromium-review.googlesource.com/328822 Commit-Ready: Anton Staaf <robotboy@chromium.org> Tested-by: Anton Staaf <robotboy@chromium.org> Reviewed-by: Bill Richardson <wfrichar@chromium.org>
120 lines
3.0 KiB
C
120 lines
3.0 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.
|
|
*/
|
|
/* Pit board-specific configuration */
|
|
|
|
#include "battery.h"
|
|
#include "chipset.h"
|
|
#include "common.h"
|
|
#include "extpower.h"
|
|
#include "gpio.h"
|
|
#include "i2c.h"
|
|
#include "keyboard_scan.h"
|
|
#include "keyboard_raw.h"
|
|
#include "lid_switch.h"
|
|
#include "pmu_tpschrome.h"
|
|
#include "power.h"
|
|
#include "registers.h"
|
|
#include "spi.h"
|
|
#include "timer.h"
|
|
#include "task.h"
|
|
#include "util.h"
|
|
#include "gpio_list.h"
|
|
|
|
/* Battery temperature ranges in degrees C */
|
|
static const struct battery_info info = {
|
|
.start_charging_min_c = 0,
|
|
.start_charging_max_c = 45,
|
|
.charging_min_c = 0,
|
|
.charging_max_c = 60,
|
|
.discharging_min_c = -20,
|
|
.discharging_max_c = 70,
|
|
};
|
|
|
|
const struct battery_info *battery_get_info(void)
|
|
{
|
|
return &info;
|
|
}
|
|
|
|
/* I2C ports */
|
|
const struct i2c_port_t i2c_ports[] = {
|
|
{"master", I2C_PORT_MASTER, 100, GPIO_I2C1_SCL, GPIO_I2C1_SDA},
|
|
};
|
|
const unsigned int i2c_ports_used = ARRAY_SIZE(i2c_ports);
|
|
|
|
struct keyboard_scan_config keyscan_config = {
|
|
.output_settle_us = 40,
|
|
.debounce_down_us = 6 * MSEC,
|
|
.debounce_up_us = 30 * MSEC,
|
|
.scan_period_us = 1500,
|
|
.min_post_scan_delay_us = 1000,
|
|
.poll_timeout_us = SECOND,
|
|
.actual_key_mask = {
|
|
0x14, 0xff, 0xff, 0xff, 0xff, 0xf5, 0xff,
|
|
0xa4, 0xff, 0xf6, 0x55, 0xfa, 0xc8 /* full set */
|
|
},
|
|
};
|
|
|
|
int pmu_board_init(void)
|
|
{
|
|
int ver, failure = 0;
|
|
|
|
/* Set fast charging timeout to 6 hours*/
|
|
if (!failure)
|
|
failure = pmu_set_fastcharge(TIMEOUT_6HRS);
|
|
/* Enable external gpio CHARGER_EN control */
|
|
if (!failure)
|
|
failure = pmu_enable_ext_control(1);
|
|
/* Disable force charging */
|
|
if (!failure)
|
|
failure = pmu_enable_charger(0);
|
|
|
|
/* Set NOITERM bit */
|
|
if (!failure)
|
|
failure = pmu_low_current_charging(1);
|
|
|
|
/*
|
|
* High temperature charging
|
|
* termination voltage: 2.1V
|
|
* termination current: 100%
|
|
*/
|
|
if (!failure)
|
|
failure = pmu_set_term_voltage(RANGE_T34, TERM_V2100);
|
|
if (!failure)
|
|
failure = pmu_set_term_current(RANGE_T34, TERM_I1000);
|
|
/*
|
|
* Standard temperature charging
|
|
* termination voltage: 2.1V
|
|
* termination current: 100%
|
|
*/
|
|
if (!failure)
|
|
failure = pmu_set_term_voltage(RANGE_T23, TERM_V2100);
|
|
if (!failure)
|
|
failure = pmu_set_term_current(RANGE_T23, TERM_I1000);
|
|
|
|
/*
|
|
* Ignore TPSCHROME NTC reading in T40. This is snow board specific
|
|
* setting. Check:
|
|
* http://crosbug.com/p/12221
|
|
* http://crosbug.com/p/13171
|
|
*/
|
|
if (!failure)
|
|
failure = pmu_set_term_voltage(RANGE_T40, TERM_V2100);
|
|
if (!failure)
|
|
failure = pmu_set_term_current(RANGE_T40, TERM_I1000);
|
|
|
|
/* Workaround init values before ES3 */
|
|
if (pmu_version(&ver) || ver < 3) {
|
|
/* Termination current: 75% */
|
|
if (!failure)
|
|
failure = pmu_set_term_current(RANGE_T34, TERM_I0750);
|
|
if (!failure)
|
|
failure = pmu_set_term_current(RANGE_T23, TERM_I0750);
|
|
if (!failure)
|
|
failure = pmu_set_term_current(RANGE_T40, TERM_I0750);
|
|
}
|
|
|
|
return failure ? EC_ERROR_UNKNOWN : EC_SUCCESS;
|
|
}
|