<commit_before>/* 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.
 *
 * Battery pack vendor provided charging profile
 */

#include "battery_pack.h"

/* FIXME: We need REAL values for all this stuff */
static const struct battery_info info = {

	.voltage_max    = 8400,
	.voltage_normal = 7400,
	.voltage_min    = 6000,

	/* Operational temperature range */
	.temp_charge_min    = CELSIUS_TO_DECI_KELVIN(0),
	.temp_charge_max    = CELSIUS_TO_DECI_KELVIN(45),
	.temp_discharge_min = CELSIUS_TO_DECI_KELVIN(-10),
	.temp_discharge_max = CELSIUS_TO_DECI_KELVIN(60),

	/* Pre-charge values. */
	.precharge_current  = 256,	/* mA */
};

const struct battery_info *battery_get_info(void)
{
	return &info;
}

/* FIXME: The smart battery should do the right thing - that's why it's
 * called "smart". Do we really want to second-guess it? For now, let's not. */
void battery_vendor_params(struct batt_params *batt)
{
#if 0
	/* Limit charging voltage */
	if (batt->desired_voltage > info.voltage_max)
		batt->desired_voltage = info.voltage_max;

	/* Don't charge if outside of allowable temperature range */
	if (batt->temperature >= info.temp_charge_max ||
	    batt->temperature <= info.temp_charge_min) {
		batt->desired_voltage = 0;
		batt->desired_current = 0;
	}
#endif
}<commit_msg>Falco: Implement battery cut off comamnd for factory<commit_after>/* 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.
 *
 * Battery pack vendor provided charging profile
 */

#include "battery_pack.h"
#include "host_command.h"
#include "smart_battery.h"

#define SB_SHIP_MODE_DATA	0x0010

/* FIXME: We need REAL values for all this stuff */
static const struct battery_info info = {

	.voltage_max    = 8400,
	.voltage_normal = 7400,
	.voltage_min    = 6000,

	/* Operational temperature range */
	.temp_charge_min    = CELSIUS_TO_DECI_KELVIN(0),
	.temp_charge_max    = CELSIUS_TO_DECI_KELVIN(45),
	.temp_discharge_min = CELSIUS_TO_DECI_KELVIN(-10),
	.temp_discharge_max = CELSIUS_TO_DECI_KELVIN(60),

	/* Pre-charge values. */
	.precharge_current  = 256,	/* mA */
};

const struct battery_info *battery_get_info(void)
{
	return &info;
}

/* FIXME: The smart battery should do the right thing - that's why it's
 * called "smart". Do we really want to second-guess it? For now, let's not. */
void battery_vendor_params(struct batt_params *batt)
{
#if 0
	/* Limit charging voltage */
	if (batt->desired_voltage > info.voltage_max)
		batt->desired_voltage = info.voltage_max;

	/* Don't charge if outside of allowable temperature range */
	if (batt->temperature >= info.temp_charge_max ||
	    batt->temperature <= info.temp_charge_min) {
		batt->desired_voltage = 0;
		batt->desired_current = 0;
	}
#endif
}

int battery_command_cut_off(struct host_cmd_handler_args *args)
{
	int rv;

	/* Ship mode command must be sent twice. */
	rv = sb_write(SB_MANUFACTURER_ACCESS, SB_SHIP_MODE_DATA);
	if (rv != EC_SUCCESS)
		return rv;
	rv = sb_write(SB_MANUFACTURER_ACCESS, SB_SHIP_MODE_DATA);
	return rv;
}
DECLARE_HOST_COMMAND(EC_CMD_BATTERY_CUT_OFF, battery_command_cut_off,
		     EC_VER_MASK(0));
{'fraction_non_alphanumeric': 0.10519951632406288, 'fraction_numerical': 0.019347037484885126, 'mean_word_length': 4.202830188679245, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 19, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2321021', 'n_tokens_mistral': 1282, 'n_tokens_neox': 1184, 'n_words': 317}