mirror of
https://github.com/Qortal/Brooklyn.git
synced 2025-01-31 07:12:18 +00:00
2a709f28fa
* 0day explit mitigation * Memory corruption prevention * Privilege escalation prevention * Buffer over flow prevention * File System corruption defense * Thread escape prevention This may very well be the most intensive inclusion to BrooklynR. This will not be part of an x86 suite nor it will be released as tool kit. The security core toolkit will remain part of kernel base.
118 lines
4.5 KiB
C
118 lines
4.5 KiB
C
/*
|
|
* Summit Microelectronics SMB347 Battery Charger Driver
|
|
*
|
|
* Copyright (C) 2011, Intel Corporation
|
|
*
|
|
* Authors: Bruce E. Robertson <bruce.e.robertson@intel.com>
|
|
* Mika Westerberg <mika.westerberg@linux.intel.com>
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License version 2 as
|
|
* published by the Free Software Foundation.
|
|
*/
|
|
|
|
#ifndef SMB347_CHARGER_H
|
|
#define SMB347_CHARGER_H
|
|
|
|
#include <linux/types.h>
|
|
#include <linux/power_supply.h>
|
|
|
|
enum {
|
|
/* use the default compensation method */
|
|
SMB347_SOFT_TEMP_COMPENSATE_DEFAULT = -1,
|
|
|
|
SMB347_SOFT_TEMP_COMPENSATE_NONE,
|
|
SMB347_SOFT_TEMP_COMPENSATE_CURRENT,
|
|
SMB347_SOFT_TEMP_COMPENSATE_VOLTAGE,
|
|
};
|
|
|
|
/* Use default factory programmed value for hard/soft temperature limit */
|
|
#define SMB347_TEMP_USE_DEFAULT -273
|
|
|
|
/*
|
|
* Charging enable can be controlled by software (via i2c) by
|
|
* smb347-charger driver or by EN pin (active low/high).
|
|
*/
|
|
enum smb347_chg_enable {
|
|
SMB347_CHG_ENABLE_SW,
|
|
SMB347_CHG_ENABLE_PIN_ACTIVE_LOW,
|
|
SMB347_CHG_ENABLE_PIN_ACTIVE_HIGH,
|
|
};
|
|
|
|
/**
|
|
* struct smb347_charger_platform_data - platform data for SMB347 charger
|
|
* @battery_info: Information about the battery
|
|
* @max_charge_current: maximum current (in uA) the battery can be charged
|
|
* @max_charge_voltage: maximum voltage (in uV) the battery can be charged
|
|
* @pre_charge_current: current (in uA) to use in pre-charging phase
|
|
* @termination_current: current (in uA) used to determine when the
|
|
* charging cycle terminates
|
|
* @pre_to_fast_voltage: voltage (in uV) treshold used for transitioning to
|
|
* pre-charge to fast charge mode
|
|
* @mains_current_limit: maximum input current drawn from AC/DC input (in uA)
|
|
* @usb_hc_current_limit: maximum input high current (in uA) drawn from USB
|
|
* input
|
|
* @chip_temp_threshold: die temperature where device starts limiting charge
|
|
* current [%100 - %130] (in degree C)
|
|
* @soft_cold_temp_limit: soft cold temperature limit [%0 - %15] (in degree C),
|
|
* granularity is 5 deg C.
|
|
* @soft_hot_temp_limit: soft hot temperature limit [%40 - %55] (in degree C),
|
|
* granularity is 5 deg C.
|
|
* @hard_cold_temp_limit: hard cold temperature limit [%-5 - %10] (in degree C),
|
|
* granularity is 5 deg C.
|
|
* @hard_hot_temp_limit: hard hot temperature limit [%50 - %65] (in degree C),
|
|
* granularity is 5 deg C.
|
|
* @suspend_on_hard_temp_limit: suspend charging when hard limit is hit
|
|
* @soft_temp_limit_compensation: compensation method when soft temperature
|
|
* limit is hit
|
|
* @charge_current_compensation: current (in uA) for charging compensation
|
|
* current when temperature hits soft limits
|
|
* @use_mains: AC/DC input can be used
|
|
* @use_usb: USB input can be used
|
|
* @use_usb_otg: USB OTG output can be used (not implemented yet)
|
|
* @irq_gpio: GPIO number used for interrupts (%-1 if not used)
|
|
* @enable_control: how charging enable/disable is controlled
|
|
* (driver/pin controls)
|
|
*
|
|
* @use_main, @use_usb, and @use_usb_otg are means to enable/disable
|
|
* hardware support for these. This is useful when we want to have for
|
|
* example OTG charging controlled via OTG transceiver driver and not by
|
|
* the SMB347 hardware.
|
|
*
|
|
* Hard and soft temperature limit values are given as described in the
|
|
* device data sheet and assuming NTC beta value is %3750. Even if this is
|
|
* not the case, these values should be used. They can be mapped to the
|
|
* corresponding NTC beta values with the help of table %2 in the data
|
|
* sheet. So for example if NTC beta is %3375 and we want to program hard
|
|
* hot limit to be %53 deg C, @hard_hot_temp_limit should be set to %50.
|
|
*
|
|
* If zero value is given in any of the current and voltage values, the
|
|
* factory programmed default will be used. For soft/hard temperature
|
|
* values, pass in %SMB347_TEMP_USE_DEFAULT instead.
|
|
*/
|
|
struct smb347_charger_platform_data {
|
|
struct power_supply_info battery_info;
|
|
unsigned int max_charge_current;
|
|
unsigned int max_charge_voltage;
|
|
unsigned int pre_charge_current;
|
|
unsigned int termination_current;
|
|
unsigned int pre_to_fast_voltage;
|
|
unsigned int mains_current_limit;
|
|
unsigned int usb_hc_current_limit;
|
|
unsigned int chip_temp_threshold;
|
|
int soft_cold_temp_limit;
|
|
int soft_hot_temp_limit;
|
|
int hard_cold_temp_limit;
|
|
int hard_hot_temp_limit;
|
|
bool suspend_on_hard_temp_limit;
|
|
unsigned int soft_temp_limit_compensation;
|
|
unsigned int charge_current_compensation;
|
|
bool use_mains;
|
|
bool use_usb;
|
|
bool use_usb_otg;
|
|
int irq_gpio;
|
|
enum smb347_chg_enable enable_control;
|
|
};
|
|
|
|
#endif /* SMB347_CHARGER_H */
|