hocclk: add BQ24193 temp driver
This commit is contained in:
@@ -92,6 +92,7 @@ typedef enum
|
||||
HocClkThermalSensor_GPU,
|
||||
HocClkThermalSensor_MEM, // Returns the PLLX sensor value on Mariko
|
||||
HocClkThermalSensor_PLLX,
|
||||
HocClkThermalSensor_BQ24193,
|
||||
HocClkThermalSensor_EnumMax
|
||||
} HocClkThermalSensor;
|
||||
|
||||
|
||||
@@ -60,7 +60,7 @@ typedef struct
|
||||
u16 resolutionHeight;
|
||||
|
||||
// Reserved for future use
|
||||
u8 reserved[0x428];
|
||||
u8 reserved[0x424];
|
||||
} HocClkContext;
|
||||
|
||||
typedef struct
|
||||
|
||||
@@ -39,7 +39,7 @@ include ${TOPDIR}/lib/libultrahand/ultrahand.mk
|
||||
# version control constants
|
||||
#---------------------------------------------------------------------------------
|
||||
#TARGET_VERSION := $(shell git describe --dirty --always --tags)
|
||||
APP_VERSION := 2.0.2
|
||||
APP_VERSION := 2.1.0
|
||||
TARGET_VERSION := $(APP_VERSION)
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
|
||||
@@ -36,6 +36,7 @@ tsl::elm::ListItem* ramBWItemAll = NULL;
|
||||
tsl::elm::ListItem* ramBWItemCpu = NULL;
|
||||
tsl::elm::ListItem* ramBWItemGpu = NULL;
|
||||
tsl::elm::ListItem* ramBWItemMax = NULL;
|
||||
tsl::elm::ListItem* bqtempitem = NULL;
|
||||
|
||||
ImageElement* CatImage = NULL;
|
||||
HideableCategoryHeader* CatHeader = NULL;
|
||||
@@ -73,6 +74,10 @@ void AboutGui::listUI()
|
||||
this->listElement->addItem(eristaPLLXItem);
|
||||
}
|
||||
|
||||
bqtempitem =
|
||||
new tsl::elm::ListItem("BQ24193 Temp:");
|
||||
this->listElement->addItem(bqtempitem);
|
||||
|
||||
this->listElement->addItem(
|
||||
new tsl::elm::CategoryHeader("RAM Bandwidth")
|
||||
);
|
||||
@@ -382,4 +387,23 @@ void AboutGui::refresh()
|
||||
sprintf(strings[9], "%u MB/s", context->partLoad[HocClkPartLoad_RamBWPeak]);
|
||||
ramBWItemMax->setValue(strings[9]);
|
||||
|
||||
switch(context->temps[HocClkThermalSensor_BQ24193]) {
|
||||
case 0:
|
||||
strcpy(strings[10], "Normal");
|
||||
break;
|
||||
case 1:
|
||||
strcpy(strings[10], "Warm");
|
||||
break;
|
||||
case 2:
|
||||
strcpy(strings[10], "Hot");
|
||||
break;
|
||||
case 3:
|
||||
strcpy(strings[10], "Overheat");
|
||||
break;
|
||||
default:
|
||||
strcpy(strings[10], "Unknown");
|
||||
}
|
||||
|
||||
bqtempitem->setValue(strings[10]);
|
||||
|
||||
}
|
||||
|
||||
@@ -31,6 +31,14 @@
|
||||
"highest_cpu_id": 3
|
||||
}
|
||||
}, {
|
||||
"type": "map",
|
||||
"value": {
|
||||
"address": "0x70000000",
|
||||
"is_ro": false,
|
||||
"size": "0x00001000",
|
||||
"is_io": true
|
||||
}
|
||||
}, {
|
||||
"type": "map",
|
||||
"value": {
|
||||
"address": "0x60006000",
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
#include "../file_utils.hpp"
|
||||
namespace board {
|
||||
|
||||
u64 clkVirtAddr, dsiVirtAddr;
|
||||
u64 clkVirtAddr, dsiVirtAddr, apbVirtAddr;
|
||||
|
||||
HocClkSocType gSocType;
|
||||
u8 gDramID;
|
||||
@@ -153,6 +153,9 @@ namespace board {
|
||||
rc = QueryMemoryMapping(&dsiVirtAddr, 0x54300000, 0x40000);
|
||||
ASSERT_RESULT_OK(rc, "QueryMemoryMapping (dsi)");
|
||||
|
||||
rc = QueryMemoryMapping(&apbVirtAddr, 0x70000000, 0x1000);
|
||||
ASSERT_RESULT_OK(rc, "QueryMemoryMapping (apb)");
|
||||
|
||||
display::DisplayRefreshConfig cfg = {.clkVirtAddr = clkVirtAddr, .dsiVirtAddr = dsiVirtAddr, .isLite = (GetConsoleType() == HocClkConsoleType_Hoag), .isRetroSUPER = integrations::GetRETROSuperStatus()};
|
||||
display::Initialize(&cfg);
|
||||
|
||||
@@ -175,6 +178,7 @@ namespace board {
|
||||
|
||||
max17050Exit();
|
||||
tmp451Exit();
|
||||
display::Shutdown();
|
||||
|
||||
ExitLoad();
|
||||
|
||||
@@ -185,7 +189,6 @@ namespace board {
|
||||
rgltrExit();
|
||||
batteryInfoExit();
|
||||
pmdmntExit();
|
||||
display::Shutdown();
|
||||
nvExit();
|
||||
}
|
||||
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
#include <pwm.h>
|
||||
#include "board.hpp"
|
||||
#include "../soctherm.hpp"
|
||||
|
||||
#include "bq24193.hpp"
|
||||
namespace board {
|
||||
|
||||
s32 GetTemperatureMilli(HocClkThermalSensor sensor) {
|
||||
@@ -82,6 +82,11 @@ namespace board {
|
||||
}
|
||||
case HocClkThermalSensor_PLLX: {
|
||||
millis = temps.pllx;
|
||||
break;
|
||||
}
|
||||
case HocClkThermalSensor_BQ24193: {
|
||||
millis = bq24193::getBQTemp();
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
ASSERT_ENUM_VALID(HocClkThermalSensor, sensor);
|
||||
|
||||
14
Source/hoc-clk/sysmodule/src/board/bq24193.cpp
Normal file
14
Source/hoc-clk/sysmodule/src/board/bq24193.cpp
Normal file
@@ -0,0 +1,14 @@
|
||||
#include "bq24193.hpp"
|
||||
|
||||
namespace bq24193 {
|
||||
static u8 bq24193_get_reg(u8 reg)
|
||||
{
|
||||
u8 out;
|
||||
I2cRead_OutU8(I2cDevice_Bq24193, reg, &out);
|
||||
return out;
|
||||
}
|
||||
u8 getBQTemp() {
|
||||
u8 regVal = bq24193_get_reg(BQ24193_FaultReg);
|
||||
return regVal & BQ24193_FAULT_THERM_MASK;
|
||||
}
|
||||
}
|
||||
109
Source/hoc-clk/sysmodule/src/board/bq24193.hpp
Normal file
109
Source/hoc-clk/sysmodule/src/board/bq24193.hpp
Normal file
@@ -0,0 +1,109 @@
|
||||
#include "board.hpp"
|
||||
#include <i2c.h>
|
||||
|
||||
namespace bq24193 {
|
||||
#define BQ24193_I2C_ADDR 0x6B
|
||||
|
||||
// REG 0 masks.
|
||||
#define BQ24193_INCONFIG_INLIMIT_MASK (7<<0)
|
||||
#define BQ24193_INCONFIG_VINDPM_MASK 0x78
|
||||
#define BQ24193_INCONFIG_HIZ_EN_MASK (1<<7)
|
||||
|
||||
// REG 1 masks.
|
||||
#define BQ24193_PORCONFIG_BOOST_MASK (1<<0)
|
||||
#define BQ24193_PORCONFIG_SYSMIN_MASK (7<<1) // 3000uV HOS default.
|
||||
#define BQ24193_PORCONFIG_CHGCONFIG_MASK (3<<4)
|
||||
#define BQ24193_PORCONFIG_CHGCONFIG_CHARGER_EN (1<<4)
|
||||
#define BQ24193_PORCONFIG_I2CWATCHDOG_MASK (1<<6)
|
||||
#define BQ24193_PORCONFIG_RESET_MASK (1<<7)
|
||||
|
||||
// REG 2 masks.
|
||||
#define BQ24193_CHRGCURR_20PCT_MASK (1<<0)
|
||||
#define BQ24193_CHRGCURR_ICHG_MASK 0xFC
|
||||
|
||||
// REG 3 masks.
|
||||
#define BQ24193_PRECHRG_ITERM 0x0F
|
||||
#define BQ24193_PRECHRG_IPRECHG 0xF0
|
||||
|
||||
// REG 4 masks.
|
||||
#define BQ24193_CHRGVOLT_VTHRES (1<<0)
|
||||
#define BQ24193_CHRGVOLT_BATTLOW (1<<1)
|
||||
#define BQ24193_CHRGVOLT_VREG 0xFC
|
||||
|
||||
// REG 5 masks.
|
||||
#define BQ24193_CHRGTERM_ISET_MASK (1<<0)
|
||||
#define BQ24193_CHRGTERM_CHGTIMER_MASK (3<<1)
|
||||
#define BQ24193_CHRGTERM_ENTIMER_MASK (1<<3)
|
||||
#define BQ24193_CHRGTERM_WATCHDOG_MASK (3<<4)
|
||||
#define BQ24193_CHRGTERM_TERM_ST_MASK (1<<6)
|
||||
#define BQ24193_CHRGTERM_TERM_EN_MASK (1<<7)
|
||||
|
||||
// REG 6 masks.
|
||||
#define BQ24193_IRTHERMAL_THERM_MASK (3<<0)
|
||||
#define BQ24193_IRTHERMAL_VCLAMP_MASK (7<<2)
|
||||
#define BQ24193_IRTHERMAL_BATTCOMP_MASK (7<<5)
|
||||
|
||||
// REG 7 masks.
|
||||
#define BQ24193_MISC_INT_MASK (3<<0)
|
||||
#define BQ24193_MISC_VSET_MASK (1<<4)
|
||||
#define BQ24193_MISC_BATFET_DI_MASK (1<<5)
|
||||
#define BQ24193_MISC_TMR2X_EN_MASK (1<<6)
|
||||
#define BQ24193_MISC_DPDM_EN_MASK (1<<7)
|
||||
|
||||
// REG 8 masks.
|
||||
#define BQ24193_STATUS_VSYS_MASK (1<<0)
|
||||
#define BQ24193_STATUS_THERM_MASK (1<<1)
|
||||
#define BQ24193_STATUS_PG_MASK (1<<2)
|
||||
#define BQ24193_STATUS_DPM_MASK (1<<3)
|
||||
#define BQ24193_STATUS_CHRG_MASK (3<<4)
|
||||
#define BQ24193_STATUS_VBUS_MASK (3<<6)
|
||||
|
||||
// REG 9 masks.
|
||||
#define BQ24193_FAULT_THERM_MASK (7<<0)
|
||||
#define BQ24193_FAULT_BATT_OVP_MASK (1<<3)
|
||||
#define BQ24193_FAULT_CHARGE_MASK (3<<4)
|
||||
#define BQ24193_FAULT_BOOST_MASK (1<<6)
|
||||
#define BQ24193_FAULT_WATCHDOG_MASK (1<<7)
|
||||
|
||||
// REG A masks.
|
||||
#define BQ24193_VENDORPART_DEV_MASK (3<<0)
|
||||
#define BQ24193_VENDORPART_PN_MASK (7<<3)
|
||||
|
||||
enum BQ24193_reg {
|
||||
BQ24193_InputSource = 0x00,
|
||||
BQ24193_PORConfig = 0x01,
|
||||
BQ24193_ChrgCurr = 0x02,
|
||||
BQ24193_PreChrgTerm = 0x03,
|
||||
BQ24193_ChrgVolt = 0x04,
|
||||
BQ24193_ChrgTermTimer = 0x05,
|
||||
BQ24193_IRCompThermal = 0x06,
|
||||
BQ24193_Misc = 0x07,
|
||||
BQ24193_Status = 0x08,
|
||||
BQ24193_FaultReg = 0x09,
|
||||
BQ24193_VendorPart = 0x0A,
|
||||
};
|
||||
|
||||
enum BQ24193_reg_prop {
|
||||
BQ24193_InputVoltageLimit, // REG 0.
|
||||
BQ24193_InputCurrentLimit, // REG 0.
|
||||
BQ24193_SystemMinimumVoltage, // REG 1.
|
||||
BQ24193_FastChargeCurrentLimit, // REG 2.
|
||||
BQ24193_ChargeVoltageLimit, // REG 4.
|
||||
BQ24193_RechargeThreshold, // REG 4.
|
||||
BQ24193_ThermalRegulation, // REG 6.
|
||||
BQ24193_ChargeStatus, // REG 8.
|
||||
BQ24193_TempStatus, // REG 9.
|
||||
BQ24193_DevID, // REG A.
|
||||
BQ24193_ProductNumber, // REG A.
|
||||
};
|
||||
// 0: Normal, 2: Warm, 3: Cool, 5: Cold, 6: Hot.
|
||||
enum BQ24193_Temp {
|
||||
BQ24193_Temp_Normal = 0,
|
||||
BQ24193_Temp_Warm = 2,
|
||||
BQ24193_Temp_Cool = 3,
|
||||
BQ24193_Temp_Cold = 5,
|
||||
BQ24193_Temp_Hot = 6,
|
||||
};
|
||||
u8 getBQTemp();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user