Update to Hekate bdk 5.5.0, prelim Mariko support

This commit is contained in:
shchmue 2020-12-04 11:20:01 -07:00
parent 04378b322d
commit 5d101cad50
89 changed files with 12779 additions and 2210 deletions

View file

@ -26,17 +26,19 @@
#include <soc/i2c.h>
#include <utils/util.h>
#define BASE_SNS_UOHM 5000
/* Status register bits */
#define STATUS_POR_BIT (1 << 1)
#define STATUS_BST_BIT (1 << 3)
#define STATUS_VMN_BIT (1 << 8)
#define STATUS_TMN_BIT (1 << 9)
#define STATUS_SMN_BIT (1 << 10)
#define STATUS_BI_BIT (1 << 11)
#define STATUS_VMX_BIT (1 << 12)
#define STATUS_TMX_BIT (1 << 13)
#define STATUS_SMX_BIT (1 << 14)
#define STATUS_BR_BIT (1 << 15)
#define STATUS_POR_BIT BIT(1)
#define STATUS_BST_BIT BIT(3)
#define STATUS_VMN_BIT BIT(8)
#define STATUS_TMN_BIT BIT(9)
#define STATUS_SMN_BIT BIT(10)
#define STATUS_BI_BIT BIT(11)
#define STATUS_VMX_BIT BIT(12)
#define STATUS_TMX_BIT BIT(13)
#define STATUS_SMX_BIT BIT(14)
#define STATUS_BR_BIT BIT(15)
#define VFSOC0_LOCK 0x0000
#define VFSOC0_UNLOCK 0x0080
@ -85,31 +87,31 @@ int max17050_get_property(enum MAX17050_reg reg, int *value)
break;
case MAX17050_VCELL: // Voltage now.
data = max17050_get_reg(MAX17050_VCELL);
*value = data * 625 / 8 / 1000;
*value = (data >> 3) * 625 / 1000; /* Units of LSB = 0.625mV */
battery_voltage = *value;
break;
case MAX17050_AvgVCELL: // Voltage avg.
data = max17050_get_reg(MAX17050_AvgVCELL);
*value = data * 625 / 8 / 1000;
*value = (data >> 3) * 625 / 1000; /* Units of LSB = 0.625mV */
break;
case MAX17050_OCVInternal: // Voltage ocv.
data = max17050_get_reg(MAX17050_OCVInternal);
*value = data * 625 / 8 / 1000;
*value = (data >> 3) * 625 / 1000; /* Units of LSB = 0.625mV */
break;
case MAX17050_RepSOC: // Capacity %.
*value = max17050_get_reg(MAX17050_RepSOC);
break;
case MAX17050_DesignCap: // Charge full design.
data = max17050_get_reg(MAX17050_DesignCap);
*value = data * 5 / 10;
*value = data * (BASE_SNS_UOHM / MAX17050_BOARD_SNS_RESISTOR_UOHM) / MAX17050_BOARD_CGAIN;
break;
case MAX17050_FullCAP: // Charge full.
data = max17050_get_reg(MAX17050_FullCAP);
*value = data * 5 / 10;
*value = data * (BASE_SNS_UOHM / MAX17050_BOARD_SNS_RESISTOR_UOHM) / MAX17050_BOARD_CGAIN;
break;
case MAX17050_RepCap: // Charge now.
data = max17050_get_reg(MAX17050_RepCap);
*value = data * 5 / 10;
*value = data * (BASE_SNS_UOHM / MAX17050_BOARD_SNS_RESISTOR_UOHM) / MAX17050_BOARD_CGAIN;
break;
case MAX17050_TEMP: // Temp.
data = max17050_get_reg(MAX17050_TEMP);
@ -119,12 +121,12 @@ int max17050_get_property(enum MAX17050_reg reg, int *value)
case MAX17050_Current: // Current now.
data = max17050_get_reg(MAX17050_Current);
*value = (s16)data;
*value *= 1562500 / MAX17050_DEFAULT_SNS_RESISTOR;
*value *= 1562500 / (MAX17050_BOARD_SNS_RESISTOR_UOHM * MAX17050_BOARD_CGAIN);
break;
case MAX17050_AvgCurrent: // Current avg.
data = max17050_get_reg(MAX17050_AvgCurrent);
*value = (s16)data;
*value *= 1562500 / MAX17050_DEFAULT_SNS_RESISTOR;
*value *= 1562500 / (MAX17050_BOARD_SNS_RESISTOR_UOHM * MAX17050_BOARD_CGAIN);
break;
default:
return -1;