mirror of
https://github.com/Telecominfraproject/OpenCellular.git
synced 2025-12-29 10:00:51 +00:00
BD99955: Added support for 'psys' & 'amonbmon' console commands
Added console commands for the debugging purpose
psys - Can be used to measure the system power
amonbmon - Can be used to measure AMON/BMON voltage diff, current
BUG=chrome-os-partner:54273
BRANCH=none
TEST=Manually tested on Amenia
psys - Ran fish task and observed psys value changes.
amonbmon - AMON & BMON voltage & current are same as measured
across sense resistors.
Change-Id: I6653e814d9b00efe7dae9ce1fbd7ddbc2356f8e0
Signed-off-by: Vijay Hiremath <vijay.p.hiremath@intel.com>
Reviewed-on: https://chromium-review.googlesource.com/353043
Commit-Ready: Vijay P Hiremath <vijay.p.hiremath@intel.com>
Tested-by: Vijay P Hiremath <vijay.p.hiremath@intel.com>
Reviewed-by: Shawn N <shawnn@chromium.org>
This commit is contained in:
committed by
chrome-bot
parent
66b2f33e7d
commit
dcac93af41
@@ -116,9 +116,12 @@ const struct adc_t adc_channels[] = {
|
||||
/* Vbus sensing. Converted to mV, full ADC is equivalent to 28.16V. */
|
||||
[ADC_VBUS] = {"VBUS", NPCX_ADC_CH1, 28160, ADC_READ_MAX+1, 0},
|
||||
/* Adapter current output or battery discharging current */
|
||||
[ADC_AMON_BMON] = {"AMON_BMON", NPCX_ADC_CH4, 55000, 6144, 0},
|
||||
[ADC_AMON_BMON] = {"AMON_BMON", NPCX_ADC_CH4,
|
||||
(5 << BD99955_IOUT_GAIN_SELECT) * 10000,
|
||||
ADC_READ_MAX+1, 0},
|
||||
/* System current consumption */
|
||||
[ADC_PSYS] = {"PSYS", NPCX_ADC_CH3, 1, 1, 0},
|
||||
[ADC_PSYS] = {"PSYS", NPCX_ADC_CH3, ADC_MAX_VOLT * 10,
|
||||
ADC_READ_MAX+1, 3},
|
||||
/* Thermistor 0 */
|
||||
[ADC_THERM_SYS0] = {"THERM_SYS0", NPCX_ADC_CH0, 1, 1, 0},
|
||||
/* Thermistor 1 */
|
||||
|
||||
@@ -31,7 +31,6 @@
|
||||
#define CONFIG_CHARGER
|
||||
#define CONFIG_CHARGER_V2
|
||||
|
||||
#define CONFIG_CHARGER_ADC_AMON_BMON
|
||||
#define CONFIG_CHARGER_DISCHARGE_ON_AC
|
||||
#define CONFIG_CHARGER_BD99955
|
||||
#define CONFIG_CHARGER_ILIM_PIN_DISABLED
|
||||
@@ -40,10 +39,18 @@
|
||||
#define CONFIG_CHARGER_LIMIT_POWER_THRESH_CHG_MW 15000
|
||||
#define CONFIG_CHARGER_MIN_BAT_PCT_FOR_POWER_ON 1
|
||||
#define CONFIG_CHARGER_NARROW_VDC
|
||||
#define CONFIG_CHARGER_SENSE_RESISTOR 10
|
||||
#define CONFIG_CHARGER_SENSE_RESISTOR_AC 20
|
||||
#define CONFIG_USB_CHARGER
|
||||
|
||||
#define CONFIG_CMD_CHARGER_ADC_AMON_BMON
|
||||
#define CONFIG_CHARGER_SENSE_RESISTOR 10
|
||||
#define CONFIG_CHARGER_SENSE_RESISTOR_AC 10
|
||||
#define BD99955_IOUT_GAIN_SELECT \
|
||||
BD99955_CMD_PMON_IOUT_CTRL_SET_IOUT_GAIN_SET_20V
|
||||
|
||||
#define CONFIG_CMD_CHARGER_PSYS
|
||||
#define BD99955_PSYS_GAIN_SELECT \
|
||||
BD99955_CMD_PMON_IOUT_CTRL_SET_PMON_GAIN_SET_02UAW
|
||||
|
||||
#define CONFIG_CHIPSET_APOLLOLAKE
|
||||
#define CONFIG_CMD_ACCELS
|
||||
#define CONFIG_CMD_ACCEL_INFO
|
||||
|
||||
@@ -27,7 +27,6 @@
|
||||
#define CONFIG_CHARGER
|
||||
#define CONFIG_CHARGER_V2
|
||||
|
||||
#define CONFIG_CHARGER_ADC_AMON_BMON
|
||||
#define CONFIG_CHARGER_DISCHARGE_ON_AC
|
||||
#define CONFIG_CHARGER_ISL9237
|
||||
#define CONFIG_CHARGER_ILIM_PIN_DISABLED
|
||||
@@ -37,6 +36,7 @@
|
||||
#define CONFIG_CHARGER_PROFILE_OVERRIDE
|
||||
#define CONFIG_CHARGER_SENSE_RESISTOR 10
|
||||
#define CONFIG_CHARGER_SENSE_RESISTOR_AC 20
|
||||
#define CONFIG_CMD_CHARGER_ADC_AMON_BMON
|
||||
|
||||
#define CONFIG_CHIPSET_SKYLAKE
|
||||
#define CONFIG_CHIPSET_RESET_HOOK
|
||||
|
||||
@@ -41,7 +41,6 @@
|
||||
#define CONFIG_CHARGER_NARROW_VDC
|
||||
#define CONFIG_CHARGER_SENSE_RESISTOR 10
|
||||
#define CONFIG_CHARGER_SENSE_RESISTOR_AC 20
|
||||
#define CONFIG_CHARGER_ADC_AMON_BMON
|
||||
#define CONFIG_CHARGER_DISCHARGE_ON_AC
|
||||
#define CONFIG_CHARGER_V2
|
||||
#define CONFIG_CHIPSET_MEDIATEK
|
||||
@@ -110,6 +109,7 @@
|
||||
#define CONFIG_USB_SWITCH_PI3USB9281_CHIP_COUNT 1
|
||||
|
||||
/* Optional features */
|
||||
#define CONFIG_CMD_CHARGER_ADC_AMON_BMON
|
||||
#define CONFIG_CMD_HOSTCMD
|
||||
#define CONFIG_CMD_I2C_PROTECT
|
||||
#define CONFIG_CMD_PD_CONTROL
|
||||
|
||||
@@ -31,7 +31,6 @@
|
||||
#define CONFIG_CHARGER
|
||||
#define CONFIG_CHARGER_V2
|
||||
|
||||
#define CONFIG_CHARGER_ADC_AMON_BMON
|
||||
#define CONFIG_CHARGER_DISCHARGE_ON_AC
|
||||
#define CONFIG_CHARGER_ISL9237
|
||||
#define CONFIG_CHARGER_ILIM_PIN_DISABLED
|
||||
@@ -41,6 +40,7 @@
|
||||
#define CONFIG_CHARGER_PROFILE_OVERRIDE
|
||||
#define CONFIG_CHARGER_SENSE_RESISTOR 10
|
||||
#define CONFIG_CHARGER_SENSE_RESISTOR_AC 20
|
||||
#define CONFIG_CMD_CHARGER_ADC_AMON_BMON
|
||||
|
||||
#define CONFIG_CHIPSET_SKYLAKE
|
||||
#define CONFIG_CHIPSET_RESET_HOOK
|
||||
|
||||
@@ -52,13 +52,14 @@
|
||||
#define CONFIG_CHARGER_SENSE_RESISTOR_AC 20
|
||||
#endif /* BOARD_REV */
|
||||
|
||||
#define CONFIG_CHARGER_ADC_AMON_BMON
|
||||
#define CONFIG_CHARGER_DISCHARGE_ON_AC
|
||||
#define CONFIG_CHARGER_V2
|
||||
#define CONFIG_CHIPSET_MEDIATEK
|
||||
#define CONFIG_CMD_TYPEC
|
||||
#define CONFIG_EXTPOWER_GPIO
|
||||
#define CONFIG_FORCE_CONSOLE_RESUME
|
||||
#define CONFIG_CMD_CHARGER_ADC_AMON_BMON
|
||||
|
||||
/*
|
||||
* EC_WAKE: PA0 - WKUP1
|
||||
* POWER_BUTTON_L: PB5 - WKUP6
|
||||
|
||||
@@ -61,6 +61,16 @@
|
||||
#define CONFIG_POWER_BUTTON_X86
|
||||
#define CONFIG_POWER_COMMON
|
||||
|
||||
#define CONFIG_CMD_CHARGER_ADC_AMON_BMON
|
||||
#define CONFIG_CHARGER_SENSE_RESISTOR 10
|
||||
#define CONFIG_CHARGER_SENSE_RESISTOR_AC 10
|
||||
#define BD99955_IOUT_GAIN_SELECT \
|
||||
BD99955_CMD_PMON_IOUT_CTRL_SET_IOUT_GAIN_SET_20V
|
||||
|
||||
#define CONFIG_CMD_CHARGER_PSYS
|
||||
#define BD99955_PSYS_GAIN_SELECT \
|
||||
BD99955_CMD_PMON_IOUT_CTRL_SET_PMON_GAIN_SET_02UAW
|
||||
|
||||
/* EC */
|
||||
#define CONFIG_ADC
|
||||
#define CONFIG_BOARD_VERSION
|
||||
|
||||
@@ -24,7 +24,6 @@
|
||||
#define CONFIG_CHARGER
|
||||
#define CONFIG_CHARGER_V2
|
||||
|
||||
#define CONFIG_CHARGER_ADC_AMON_BMON
|
||||
#define CONFIG_CHARGER_DISCHARGE_ON_AC
|
||||
#define CONFIG_CHARGER_ISL9237
|
||||
#define CONFIG_CHARGER_ILIM_PIN_DISABLED
|
||||
@@ -34,6 +33,7 @@
|
||||
#define CONFIG_CHARGER_PROFILE_OVERRIDE
|
||||
#define CONFIG_CHARGER_SENSE_RESISTOR 10
|
||||
#define CONFIG_CHARGER_SENSE_RESISTOR_AC 20
|
||||
#define CONFIG_CMD_CHARGER_ADC_AMON_BMON
|
||||
|
||||
#define CONFIG_CHIPSET_SKYLAKE
|
||||
#define CONFIG_CLOCK_CRYSTAL
|
||||
|
||||
@@ -911,3 +911,162 @@ DECLARE_CONSOLE_COMMAND(bd99955, console_command_bd99955,
|
||||
"Read or write a charger register",
|
||||
NULL);
|
||||
#endif /* CONFIG_CMD_CHARGER */
|
||||
|
||||
#ifdef CONFIG_CMD_CHARGER_PSYS
|
||||
static int bd99955_psys_charger_adc(void)
|
||||
{
|
||||
int i;
|
||||
int reg;
|
||||
uint64_t ipmon = 0;
|
||||
|
||||
for (i = 0; i < BD99955_PMON_IOUT_ADC_READ_COUNT; i++) {
|
||||
if (ch_raw_read16(BD99955_CMD_PMON_DACIN_VAL, ®,
|
||||
BD99955_EXTENDED_COMMAND))
|
||||
return 0;
|
||||
|
||||
/* Conversion Interval is 200us */
|
||||
usleep(200);
|
||||
ipmon += reg;
|
||||
}
|
||||
|
||||
/*
|
||||
* Calculate power in mW
|
||||
* PSYS = VACP×IACP+VBAT×IBAT = IPMON / GPMON
|
||||
*/
|
||||
return (int) ((ipmon * 1000) / ((1 << BD99955_PSYS_GAIN_SELECT) *
|
||||
BD99955_PMON_IOUT_ADC_READ_COUNT));
|
||||
}
|
||||
|
||||
static int bd99955_enable_psys(void)
|
||||
{
|
||||
int rv;
|
||||
int reg;
|
||||
|
||||
rv = ch_raw_read16(BD99955_CMD_PMON_IOUT_CTRL_SET, ®,
|
||||
BD99955_EXTENDED_COMMAND);
|
||||
if (rv)
|
||||
return rv;
|
||||
|
||||
/* Enable PSYS & Select PSYS Gain */
|
||||
reg &= ~BD99955_CMD_PMON_IOUT_CTRL_SET_PMON_GAIN_SET_MASK;
|
||||
reg |= (BD99955_CMD_PMON_IOUT_CTRL_SET_PMON_INSEL |
|
||||
BD99955_CMD_PMON_IOUT_CTRL_SET_PMON_OUT_EN |
|
||||
BD99955_PSYS_GAIN_SELECT);
|
||||
|
||||
return ch_raw_write16(BD99955_CMD_PMON_IOUT_CTRL_SET, reg,
|
||||
BD99955_EXTENDED_COMMAND);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get system power.
|
||||
*/
|
||||
static int console_command_psys(int argc, char **argv)
|
||||
{
|
||||
int rv;
|
||||
|
||||
rv = bd99955_enable_psys();
|
||||
if (rv)
|
||||
return rv;
|
||||
|
||||
CPRINTS("PSYS from chg_adc: %d mW",
|
||||
bd99955_psys_charger_adc());
|
||||
|
||||
return EC_SUCCESS;
|
||||
}
|
||||
DECLARE_CONSOLE_COMMAND(psys, console_command_psys,
|
||||
NULL,
|
||||
"Get the system power in mW",
|
||||
NULL);
|
||||
#endif /* CONFIG_CMD_CHARGER_PSYS */
|
||||
|
||||
#ifdef CONFIG_CMD_CHARGER_ADC_AMON_BMON
|
||||
static int bd99955_amon_bmon_chg_adc(void)
|
||||
{
|
||||
int i;
|
||||
int reg;
|
||||
int iout = 0;
|
||||
|
||||
for (i = 0; i < BD99955_PMON_IOUT_ADC_READ_COUNT; i++) {
|
||||
ch_raw_read16(BD99955_CMD_IOUT_DACIN_VAL, ®,
|
||||
BD99955_EXTENDED_COMMAND);
|
||||
iout += reg;
|
||||
|
||||
/* Conversion Interval is 200us */
|
||||
usleep(200);
|
||||
}
|
||||
|
||||
/*
|
||||
* Discharge current in mA
|
||||
* IDCHG = iout * GIDCHG
|
||||
* IADP = iout * GIADP
|
||||
*
|
||||
* VIDCHG = GIDCHG * (VSRN- VSRP) = GIDCHG * IDCHG / IDCHG_RES
|
||||
* VIADP = GIADP * (VACP- VACN) = GIADP * IADP / IADP_RES
|
||||
*/
|
||||
return (iout * (5 << BD99955_IOUT_GAIN_SELECT)) /
|
||||
(10 * BD99955_PMON_IOUT_ADC_READ_COUNT);
|
||||
}
|
||||
|
||||
static int bd99955_amon_bmon(int amon_bmon)
|
||||
{
|
||||
int rv;
|
||||
int reg;
|
||||
int imon;
|
||||
int sns_res;
|
||||
|
||||
rv = ch_raw_read16(BD99955_CMD_PMON_IOUT_CTRL_SET, ®,
|
||||
BD99955_EXTENDED_COMMAND);
|
||||
if (rv)
|
||||
return rv;
|
||||
|
||||
/* Enable monitor */
|
||||
reg &= ~BD99955_CMD_PMON_IOUT_CTRL_SET_IOUT_GAIN_SET_MASK;
|
||||
reg |= (BD99955_CMD_PMON_IOUT_CTRL_SET_IMON_INSEL |
|
||||
BD99955_CMD_PMON_IOUT_CTRL_SET_IOUT_OUT_EN |
|
||||
(BD99955_IOUT_GAIN_SELECT << 4));
|
||||
|
||||
if (amon_bmon) {
|
||||
reg |= BD99955_CMD_PMON_IOUT_CTRL_SET_IOUT_SOURCE_SEL;
|
||||
sns_res = CONFIG_CHARGER_SENSE_RESISTOR_AC;
|
||||
} else {
|
||||
reg &= ~BD99955_CMD_PMON_IOUT_CTRL_SET_IOUT_SOURCE_SEL;
|
||||
sns_res = CONFIG_CHARGER_SENSE_RESISTOR;
|
||||
}
|
||||
|
||||
rv = ch_raw_write16(BD99955_CMD_PMON_IOUT_CTRL_SET, reg,
|
||||
BD99955_EXTENDED_COMMAND);
|
||||
if (rv)
|
||||
return rv;
|
||||
|
||||
imon = bd99955_amon_bmon_chg_adc();
|
||||
|
||||
CPRINTS("%cMON from chg_adc: %d uV, %d mA]",
|
||||
amon_bmon ? 'A' : 'B',
|
||||
imon * sns_res,
|
||||
imon);
|
||||
|
||||
return EC_SUCCESS;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get charger AMON and BMON current.
|
||||
*/
|
||||
static int console_command_amon_bmon(int argc, char **argv)
|
||||
{
|
||||
int rv = EC_ERROR_PARAM1;
|
||||
|
||||
/* Switch to AMON */
|
||||
if (argc == 1 || (argc >= 2 && argv[1][0] == 'a'))
|
||||
rv = bd99955_amon_bmon(1);
|
||||
|
||||
/* Switch to BMON */
|
||||
if (argc == 1 || (argc >= 2 && argv[1][0] == 'b'))
|
||||
rv = bd99955_amon_bmon(0);
|
||||
|
||||
return rv;
|
||||
}
|
||||
DECLARE_CONSOLE_COMMAND(amonbmon, console_command_amon_bmon,
|
||||
"amonbmon [a|b]",
|
||||
"Get charger AMON/BMON voltage diff, current",
|
||||
NULL);
|
||||
#endif /* CONFIG_CMD_CHARGER_ADC_AMON_BMON */
|
||||
|
||||
@@ -124,6 +124,26 @@ enum bd99955_charge_port {
|
||||
#define BD99955_CMD_PROCHOT_IDCHG_SET 0x23
|
||||
#define BD99955_CMD_PROCHOT_VSYS_SET 0x24
|
||||
#define BD99955_CMD_PMON_IOUT_CTRL_SET 0x25
|
||||
#define BD99955_CMD_PMON_IOUT_CTRL_SET_IMON_INSEL (1 << 9)
|
||||
#define BD99955_CMD_PMON_IOUT_CTRL_SET_PMON_INSEL (1 << 8)
|
||||
#define BD99955_CMD_PMON_IOUT_CTRL_SET_IOUT_OUT_EN (1 << 7)
|
||||
#define BD99955_CMD_PMON_IOUT_CTRL_SET_IOUT_SOURCE_SEL (1 << 6)
|
||||
#define BD99955_CMD_PMON_IOUT_CTRL_SET_IOUT_GAIN_SET_MASK 0x30
|
||||
#define BD99955_CMD_PMON_IOUT_CTRL_SET_IOUT_GAIN_SET_40V 0x03
|
||||
#define BD99955_CMD_PMON_IOUT_CTRL_SET_IOUT_GAIN_SET_20V 0x02
|
||||
#define BD99955_CMD_PMON_IOUT_CTRL_SET_IOUT_GAIN_SET_10V 0x01
|
||||
#define BD99955_CMD_PMON_IOUT_CTRL_SET_IOUT_GAIN_SET_05V 0x00
|
||||
#define BD99955_CMD_PMON_IOUT_CTRL_SET_PMON_OUT_EN (1 << 3)
|
||||
#define BD99955_CMD_PMON_IOUT_CTRL_SET_PMON_GAIN_SET_MASK 0x07
|
||||
#define BD99955_CMD_PMON_IOUT_CTRL_SET_PMON_GAIN_SET_64UAW 0x06
|
||||
#define BD99955_CMD_PMON_IOUT_CTRL_SET_PMON_GAIN_SET_32UAW 0x05
|
||||
#define BD99955_CMD_PMON_IOUT_CTRL_SET_PMON_GAIN_SET_16UAW 0x04
|
||||
#define BD99955_CMD_PMON_IOUT_CTRL_SET_PMON_GAIN_SET_08UAW 0x03
|
||||
#define BD99955_CMD_PMON_IOUT_CTRL_SET_PMON_GAIN_SET_04UAW 0x02
|
||||
#define BD99955_CMD_PMON_IOUT_CTRL_SET_PMON_GAIN_SET_02UAW 0x01
|
||||
#define BD99955_CMD_PMON_IOUT_CTRL_SET_PMON_GAIN_SET_01UAW 0x00
|
||||
#define BD99955_PMON_IOUT_ADC_READ_COUNT 100
|
||||
|
||||
#define BD99955_CMD_PMON_DACIN_VAL 0x26
|
||||
#define BD99955_CMD_IOUT_DACIN_VAL 0x27
|
||||
#define BD99955_CMD_VCC_UCD_SET 0x28
|
||||
|
||||
@@ -355,7 +355,7 @@ static void charger_disable_psys(void)
|
||||
}
|
||||
DECLARE_HOOK(HOOK_CHIPSET_SHUTDOWN, charger_disable_psys, HOOK_PRIO_DEFAULT);
|
||||
|
||||
#ifdef CONFIG_CMD_PSYS
|
||||
#ifdef CONFIG_CMD_CHARGER_PSYS
|
||||
#define PSYS_ADC_READ_COUNT 100
|
||||
static int charger_get_system_power(void)
|
||||
{
|
||||
@@ -400,10 +400,10 @@ DECLARE_CONSOLE_COMMAND(psys, console_command_psys,
|
||||
NULL,
|
||||
"Get the system power in mW",
|
||||
NULL);
|
||||
#endif /* CONFIG_CMD_PSYS */
|
||||
#endif /* CONFIG_CMD_CHARGER_PSYS */
|
||||
#endif /* CONFIG_CHARGER_PSYS */
|
||||
|
||||
#ifdef CONFIG_CHARGER_ADC_AMON_BMON
|
||||
#ifdef CONFIG_CMD_CHARGER_ADC_AMON_BMON
|
||||
/**
|
||||
* Get charger AMON and BMON current.
|
||||
*/
|
||||
@@ -450,4 +450,4 @@ DECLARE_CONSOLE_COMMAND(amonbmon, console_command_amon_bmon,
|
||||
"amonbmon [a|b]",
|
||||
"Get charger AMON/BMON voltage diff, current",
|
||||
NULL);
|
||||
#endif /* CONFIG_CHARGER_ADC_AMON_BMON */
|
||||
#endif /* CONFIG_CMD_CHARGER_ADC_AMON_BMON */
|
||||
|
||||
@@ -337,9 +337,6 @@
|
||||
#undef CONFIG_CHARGER_V1
|
||||
#undef CONFIG_CHARGER_V2
|
||||
|
||||
/* Enable charger AMON_BMON ADC current detection */
|
||||
#undef CONFIG_CHARGER_ADC_AMON_BMON
|
||||
|
||||
/* Compile charger-specific code for these chargers (pick at most one) */
|
||||
#undef CONFIG_CHARGER_BD99955
|
||||
#undef CONFIG_CHARGER_BQ24707A
|
||||
@@ -528,6 +525,8 @@
|
||||
#undef CONFIG_CMD_BATDEBUG
|
||||
#define CONFIG_CMD_BATTFAKE
|
||||
#define CONFIG_CMD_CHARGER
|
||||
#undef CONFIG_CMD_CHARGER_ADC_AMON_BMON
|
||||
#undef CONFIG_CMD_CHARGER_PSYS
|
||||
#define CONFIG_CMD_CHARGE_SUPPLIER_INFO
|
||||
#undef CONFIG_CMD_CHGRAMP
|
||||
#undef CONFIG_CMD_CLOCKGATES
|
||||
@@ -564,7 +563,6 @@
|
||||
#define CONFIG_CMD_POWER_AP
|
||||
#define CONFIG_CMD_POWERINDEBUG
|
||||
#undef CONFIG_CMD_POWERLED
|
||||
#undef CONFIG_CMD_PSYS
|
||||
#undef CONFIG_CMD_RTC_ALARM
|
||||
#undef CONFIG_CMD_SCRATCHPAD
|
||||
#define CONFIG_CMD_SHMEM
|
||||
|
||||
Reference in New Issue
Block a user