mirror of
https://github.com/Telecominfraproject/OpenCellular.git
synced 2026-01-08 16:41:55 +00:00
Fizz: Limit input current
Fizz has an over current control system. There are two FETs
connected to two registers: PR257 & PR258. They control
the max input current as follows:
PR257, PR258
For 4.62A (90W BJ adapter), on, off
For 3.33A (65W BJ adapter), off, on
For 3.00A (Type-C adapter), off, off
BJ adapters are distinguished by reading GPIO71.
This patch also removes ISL9238 driver and ramping code. The
charger chip has been removed from the board since proto2.
BUG=b:65013352
BRANCH=none
TEST=Boot Fizz Proto3 on BJ and Type-C.
Change-Id: I32c2467f4ab23adf3f9313a03914d74d64a722df
Signed-off-by: Daisuke Nojiri <dnojiri@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/668119
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
This commit is contained in:
committed by
chrome-bot
parent
406302ffb0
commit
13fb9ac539
@@ -379,52 +379,34 @@ DECLARE_HOOK(HOOK_INIT, board_init, HOOK_PRIO_DEFAULT);
|
||||
void board_set_charge_limit(int port, int supplier, int charge_ma,
|
||||
int max_ma, int charge_mv)
|
||||
{
|
||||
charger_set_input_current(charge_ma);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return whether ramping is allowed for given supplier
|
||||
*/
|
||||
int board_is_ramp_allowed(int supplier)
|
||||
{
|
||||
/* Don't allow ramping in RO when write protected */
|
||||
if (!system_is_in_rw() && system_is_locked())
|
||||
return 0;
|
||||
else
|
||||
return (supplier == CHARGE_SUPPLIER_BC12_DCP ||
|
||||
supplier == CHARGE_SUPPLIER_BC12_SDP ||
|
||||
supplier == CHARGE_SUPPLIER_BC12_CDP ||
|
||||
supplier == CHARGE_SUPPLIER_OTHER);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the maximum allowed input current
|
||||
*/
|
||||
int board_get_ramp_current_limit(int supplier, int sup_curr)
|
||||
{
|
||||
switch (supplier) {
|
||||
case CHARGE_SUPPLIER_BC12_DCP:
|
||||
return 2000;
|
||||
case CHARGE_SUPPLIER_BC12_SDP:
|
||||
return 1000;
|
||||
case CHARGE_SUPPLIER_BC12_CDP:
|
||||
case CHARGE_SUPPLIER_PROPRIETARY:
|
||||
return sup_curr;
|
||||
default:
|
||||
return 500;
|
||||
/*
|
||||
* We have two FETs connected to two registers: PR257 & PR258.
|
||||
* These control thresholds of the over current monitoring system.
|
||||
*
|
||||
* PR257, PR258
|
||||
* For 4.62A (90W BJ adapter), on, off
|
||||
* For 3.33A (65W BJ adapter), off, on
|
||||
* For 3.00A (Type-C adapter), off, off
|
||||
*
|
||||
* The over current monitoring system doesn't support less than 3A
|
||||
* (e.g. 2.25A, 2.00A). These current most likely won't be enough to
|
||||
* power the system. However, if they're needed, EC can monitor
|
||||
* PMON_PSYS and trigger H_PROCHOT by itself.
|
||||
*/
|
||||
if (charge_ma >= 4620) {
|
||||
gpio_set_level(GPIO_U42_P, 1);
|
||||
gpio_set_level(GPIO_U22_C, 0);
|
||||
} else if (charge_ma >= 3330) {
|
||||
gpio_set_level(GPIO_U42_P, 0);
|
||||
gpio_set_level(GPIO_U22_C, 1);
|
||||
} else if (charge_ma >= 3000) {
|
||||
gpio_set_level(GPIO_U42_P, 0);
|
||||
gpio_set_level(GPIO_U22_C, 0);
|
||||
} else {
|
||||
CPRINTS("Current %dmA not supported", charge_mv);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Return if board is consuming full amount of input current
|
||||
*/
|
||||
int board_is_consuming_full_charge(void)
|
||||
{
|
||||
int chg_perc = charge_get_percent();
|
||||
|
||||
return chg_perc > 2 && chg_perc < 95;
|
||||
}
|
||||
|
||||
const struct button_config buttons[CONFIG_BUTTON_COUNT] = {
|
||||
[BUTTON_RECOVERY] = {
|
||||
.name = "Recovery",
|
||||
|
||||
@@ -62,19 +62,14 @@
|
||||
|
||||
/* Charger */
|
||||
#define CONFIG_CHARGE_MANAGER
|
||||
#define CONFIG_CHARGE_RAMP_HW /* This, or just RAMP? */
|
||||
|
||||
/* TODO(dnojiri): Set this right */
|
||||
#define CONFIG_CHARGER_LIMIT_POWER_THRESH_CHG_MW 20000
|
||||
|
||||
#define CONFIG_CHARGER_ISL9238
|
||||
#define CONFIG_CHARGER_INPUT_CURRENT 512
|
||||
#define CONFIG_CHARGER_PSYS
|
||||
#define CONFIG_CHARGER_SENSE_RESISTOR 10
|
||||
#define CONFIG_CHARGER_SENSE_RESISTOR_AC 20
|
||||
#define CONFIG_CMD_CHARGER_ADC_AMON_BMON
|
||||
#define CONFIG_CMD_PD_CONTROL
|
||||
#define CONFIG_EXTPOWER_GPIO
|
||||
#undef CONFIG_EXTPOWER_DEBOUNCE_MS
|
||||
#define CONFIG_EXTPOWER_DEBOUNCE_MS 1000
|
||||
#undef CONFIG_EXTPOWER_DEBOUNCE_MS
|
||||
#define CONFIG_EXTPOWER_DEBOUNCE_MS 1000
|
||||
#define CONFIG_POWER_BUTTON
|
||||
#define CONFIG_POWER_BUTTON_X86
|
||||
#define CONFIG_POWER_BUTTON_INIT_IDLE
|
||||
|
||||
@@ -36,11 +36,13 @@ GPIO(PCH_PWRBTN_L, PIN(7, 4), GPIO_ODR_HIGH) /* Power Button to SOC */
|
||||
GPIO(EC_PLATFORM_RST, PIN(A, 6), GPIO_OUT_LOW) /* EC Reset to LDO_EN */
|
||||
GPIO(SYS_RESET_L, PIN(6, 1), GPIO_ODR_HIGH) /* Cold Reset to SOC */
|
||||
GPIO(PMIC_SLP_SUS_L, PIN(8, 5), GPIO_OUT_LOW) /* SLP_SUS# to PMIC */
|
||||
GPIO(BATTERY_PRESENT_L, PIN(3, 4), GPIO_INPUT | GPIO_PULL_UP) /* Battery Present */
|
||||
GPIO(CCD_MODE_ODL, PIN(6, 3), GPIO_INPUT) /* Case Closed Debug Mode */
|
||||
GPIO(EC_HAVEN_RESET_ODL, PIN(0, 2), GPIO_ODR_HIGH) /* H1 Reset */
|
||||
GPIO(ENTERING_RW, PIN(7, 6), GPIO_OUTPUT) /* EC Entering RW */
|
||||
GPIO(PMIC_INT_L, PIN(6, 0), GPIO_INPUT) /* PMIC interrupt */
|
||||
GPIO(U42_P, PIN(3, 3), GPIO_OUTPUT | GPIO_PULL_DOWN)
|
||||
GPIO(U22_C, PIN(3, 4), GPIO_OUTPUT | GPIO_PULL_DOWN)
|
||||
GPIO(POWER_RATE, PIN(7, 1), GPIO_INPUT) /* High: i3/5/7. Low: Celeron */
|
||||
|
||||
/* Fizz specific pins */
|
||||
GPIO(LAN_PWR_EN, PIN(8, 3), GPIO_OUT_HIGH) /* Ethernet power enabled */
|
||||
|
||||
@@ -287,7 +287,10 @@ static void board_charge_manager_init(void)
|
||||
break;
|
||||
case CHARGE_PORT_BARRELJACK:
|
||||
cpi.voltage = input_voltage;
|
||||
cpi.current = 3330; /* TODO(dnojiri): Set right value */
|
||||
if (gpio_get_level(GPIO_POWER_RATE))
|
||||
cpi.current = 4620;
|
||||
else
|
||||
cpi.current = 3330;
|
||||
charge_manager_update_charge(CHARGE_SUPPLIER_DEDICATED, 1,
|
||||
&cpi);
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user