bdk: small refactoring

This commit is contained in:
CTCaer
2025-04-30 08:14:32 +03:00
parent 1d75c30c61
commit c07a155cc1
7 changed files with 132 additions and 125 deletions

View File

@@ -29,127 +29,128 @@ int bq24193_get_property(enum BQ24193_reg_prop prop, int *value)
{ {
u8 data; u8 data;
switch (prop) { switch (prop)
case BQ24193_InputVoltageLimit: // Input voltage limit (mV). {
data = bq24193_get_reg(BQ24193_InputSource); case BQ24193_InputVoltageLimit: // Input voltage limit (mV).
data = (data & BQ24193_INCONFIG_VINDPM_MASK) >> 3; data = bq24193_get_reg(BQ24193_InputSource);
*value = 0; data = (data & BQ24193_INCONFIG_VINDPM_MASK) >> 3;
*value += ((data >> 0) & 1) ? 80 : 0; *value = 0;
*value += ((data >> 1) & 1) ? 160 : 0; *value += ((data >> 0) & 1) ? 80 : 0;
*value += ((data >> 2) & 1) ? 320 : 0; *value += ((data >> 1) & 1) ? 160 : 0;
*value += ((data >> 3) & 1) ? 640 : 0; *value += ((data >> 2) & 1) ? 320 : 0;
*value += 3880; *value += ((data >> 3) & 1) ? 640 : 0;
*value += 3880;
break;
case BQ24193_InputCurrentLimit: // Input current limit (mA).
data = bq24193_get_reg(BQ24193_InputSource);
data &= BQ24193_INCONFIG_INLIMIT_MASK;
switch (data)
{
case 0:
*value = 100;
break; break;
case BQ24193_InputCurrentLimit: // Input current limit (mA). case 1:
data = bq24193_get_reg(BQ24193_InputSource); *value = 150;
data &= BQ24193_INCONFIG_INLIMIT_MASK;
switch (data)
{
case 0:
*value = 100;
break;
case 1:
*value = 150;
break;
case 2:
*value = 500;
break;
case 3:
*value = 900;
break;
case 4:
*value = 1200;
break;
case 5:
*value = 1500;
break;
case 6:
*value = 2000;
break;
case 7:
*value = 3000;
break;
}
break; break;
case BQ24193_SystemMinimumVoltage: // Minimum system voltage limit (mV). case 2:
data = bq24193_get_reg(BQ24193_PORConfig); *value = 500;
*value = (data & BQ24193_PORCONFIG_SYSMIN_MASK) >> 1;
*value *= 100;
*value += 3000;
break; break;
case BQ24193_FastChargeCurrentLimit: // Fast charge current limit (mA). case 3:
data = bq24193_get_reg(BQ24193_ChrgCurr); *value = 900;
data = (data & BQ24193_CHRGCURR_ICHG_MASK) >> 2;
*value = 0;
*value += ((data >> 0) & 1) ? 64 : 0;
*value += ((data >> 1) & 1) ? 128 : 0;
*value += ((data >> 2) & 1) ? 256 : 0;
*value += ((data >> 3) & 1) ? 512 : 0;
*value += ((data >> 4) & 1) ? 1024 : 0;
*value += ((data >> 5) & 1) ? 2048 : 0;
*value += 512;
data = bq24193_get_reg(BQ24193_ChrgCurr);
data &= BQ24193_CHRGCURR_20PCT_MASK;
if (data)
*value = *value * 20 / 100; // Fast charge current limit is 20%.
break; break;
case BQ24193_ChargeVoltageLimit: // Charge voltage limit (mV). case 4:
data = bq24193_get_reg(BQ24193_ChrgVolt); *value = 1200;
data = (data & BQ24193_CHRGVOLT_VREG) >> 2;
*value = 0;
*value += ((data >> 0) & 1) ? 16 : 0;
*value += ((data >> 1) & 1) ? 32 : 0;
*value += ((data >> 2) & 1) ? 64 : 0;
*value += ((data >> 3) & 1) ? 128 : 0;
*value += ((data >> 4) & 1) ? 256 : 0;
*value += ((data >> 5) & 1) ? 512 : 0;
*value += 3504;
break; break;
case BQ24193_RechargeThreshold: // Recharge voltage threshold less than voltage limit (mV). case 5:
data = bq24193_get_reg(BQ24193_ChrgVolt); *value = 1500;
data &= BQ24193_IRTHERMAL_THERM_MASK;
if (data)
*value = 300;
else
*value = 100;
break; break;
case BQ24193_ThermalRegulation: // Thermal regulation threshold (oC). case 6:
data = bq24193_get_reg(BQ24193_IRCompThermal); *value = 2000;
data &= BQ24193_IRTHERMAL_THERM_MASK;
switch (data)
{
case 0:
*value = 60;
break;
case 1:
*value = 80;
break;
case 2:
*value = 100;
break;
case 3:
*value = 120;
break;
}
break; break;
case BQ24193_ChargeStatus: // 0: Not charging, 1: Pre-charge, 2: Fast charging, 3: Charge termination done case 7:
data = bq24193_get_reg(BQ24193_Status); *value = 3000;
*value = (data & BQ24193_STATUS_CHRG_MASK) >> 4;
break; break;
case BQ24193_TempStatus: // 0: Normal, 2: Warm, 3: Cool, 5: Cold, 6: Hot. }
data = bq24193_get_reg(BQ24193_FaultReg); break;
*value = data & BQ24193_FAULT_THERM_MASK; case BQ24193_SystemMinimumVoltage: // Minimum system voltage limit (mV).
data = bq24193_get_reg(BQ24193_PORConfig);
*value = (data & BQ24193_PORCONFIG_SYSMIN_MASK) >> 1;
*value *= 100;
*value += 3000;
break;
case BQ24193_FastChargeCurrentLimit: // Fast charge current limit (mA).
data = bq24193_get_reg(BQ24193_ChrgCurr);
data = (data & BQ24193_CHRGCURR_ICHG_MASK) >> 2;
*value = 0;
*value += ((data >> 0) & 1) ? 64 : 0;
*value += ((data >> 1) & 1) ? 128 : 0;
*value += ((data >> 2) & 1) ? 256 : 0;
*value += ((data >> 3) & 1) ? 512 : 0;
*value += ((data >> 4) & 1) ? 1024 : 0;
*value += ((data >> 5) & 1) ? 2048 : 0;
*value += 512;
data = bq24193_get_reg(BQ24193_ChrgCurr);
data &= BQ24193_CHRGCURR_20PCT_MASK;
if (data)
*value = *value * 20 / 100; // Fast charge current limit is 20%.
break;
case BQ24193_ChargeVoltageLimit: // Charge voltage limit (mV).
data = bq24193_get_reg(BQ24193_ChrgVolt);
data = (data & BQ24193_CHRGVOLT_VREG) >> 2;
*value = 0;
*value += ((data >> 0) & 1) ? 16 : 0;
*value += ((data >> 1) & 1) ? 32 : 0;
*value += ((data >> 2) & 1) ? 64 : 0;
*value += ((data >> 3) & 1) ? 128 : 0;
*value += ((data >> 4) & 1) ? 256 : 0;
*value += ((data >> 5) & 1) ? 512 : 0;
*value += 3504;
break;
case BQ24193_RechargeThreshold: // Recharge voltage threshold less than voltage limit (mV).
data = bq24193_get_reg(BQ24193_ChrgVolt);
data &= BQ24193_IRTHERMAL_THERM_MASK;
if (data)
*value = 300;
else
*value = 100;
break;
case BQ24193_ThermalRegulation: // Thermal regulation threshold (oC).
data = bq24193_get_reg(BQ24193_IRCompThermal);
data &= BQ24193_IRTHERMAL_THERM_MASK;
switch (data)
{
case 0:
*value = 60;
break; break;
case BQ24193_DevID: // Dev ID. case 1:
data = bq24193_get_reg(BQ24193_VendorPart); *value = 80;
*value = data & BQ24193_VENDORPART_DEV_MASK;
break; break;
case BQ24193_ProductNumber: // Product number. case 2:
data = bq24193_get_reg(BQ24193_VendorPart); *value = 100;
*value = (data & BQ24193_VENDORPART_PN_MASK) >> 3;
break; break;
default: case 3:
return -1; *value = 120;
break;
}
break;
case BQ24193_ChargeStatus: // 0: Not charging, 1: Pre-charge, 2: Fast charging, 3: Charge termination done
data = bq24193_get_reg(BQ24193_Status);
*value = (data & BQ24193_STATUS_CHRG_MASK) >> 4;
break;
case BQ24193_TempStatus: // 0: Normal, 2: Warm, 3: Cool, 5: Cold, 6: Hot.
data = bq24193_get_reg(BQ24193_FaultReg);
*value = data & BQ24193_FAULT_THERM_MASK;
break;
case BQ24193_DevID: // Dev ID.
data = bq24193_get_reg(BQ24193_VendorPart);
*value = data & BQ24193_VENDORPART_DEV_MASK;
break;
case BQ24193_ProductNumber: // Product number.
data = bq24193_get_reg(BQ24193_VendorPart);
*value = (data & BQ24193_VENDORPART_PN_MASK) >> 3;
break;
default:
return -1;
} }
return 0; return 0;
} }

View File

@@ -327,7 +327,7 @@ void max77620_config_default()
return; return;
// Set default voltages and enable regulators. // Set default voltages and enable regulators.
for (u32 i = 1; i <= REGULATOR_LDO8; i++) for (u32 i = REGULATOR_SD1; i <= REGULATOR_LDO8; i++)
{ {
max77620_regulator_config_fps(i); max77620_regulator_config_fps(i);
max7762x_regulator_set_voltage(i, _pmic_regulators[i].uv_default); max7762x_regulator_set_voltage(i, _pmic_regulators[i].uv_default);

View File

@@ -24,7 +24,9 @@
#include <sec/se_t210.h> #include <sec/se_t210.h>
#include <soc/fuse.h> #include <soc/fuse.h>
#include <soc/hw_init.h> #include <soc/hw_init.h>
#include <soc/pmc.h>
#include <soc/t210.h> #include <soc/t210.h>
#include <soc/timer.h>
#include <utils/types.h> #include <utils/types.h>
static const u32 evp_thunk_template[] = { static const u32 evp_thunk_template[] = {

View File

@@ -85,6 +85,7 @@
#define AXBAR_BASE 0x702D0800 #define AXBAR_BASE 0x702D0800
#define I2S_BASE 0x702D1000 #define I2S_BASE 0x702D1000
#define ADMA_BASE 0x702E2000 #define ADMA_BASE 0x702E2000
#define AMC_BASE 0x702EF000
#define SE2_BASE 0x70412000 #define SE2_BASE 0x70412000
#define SE_PKA1_BASE 0x70420000 #define SE_PKA1_BASE 0x70420000
#define TZRAM_BASE 0x7C010000 #define TZRAM_BASE 0x7C010000
@@ -151,6 +152,7 @@
#define CL_DVFS(off) MMIO_REG32(CL_DVFS_BASE, off) #define CL_DVFS(off) MMIO_REG32(CL_DVFS_BASE, off)
#define I2S(off) MMIO_REG32(I2S_BASE, off) #define I2S(off) MMIO_REG32(I2S_BASE, off)
#define ADMA(off) MMIO_REG32(ADMA_BASE, off) #define ADMA(off) MMIO_REG32(ADMA_BASE, off)
#define AMC(off) MMIO_REG32(AMC_BASE, off)
#define SE2(off) MMIO_REG32(SE2_BASE, off) #define SE2(off) MMIO_REG32(SE2_BASE, off)
#define SE_PKA1(off) MMIO_REG32(SE_PKA1_BASE, off) #define SE_PKA1(off) MMIO_REG32(SE_PKA1_BASE, off)
#define USB(off) MMIO_REG32(USB_BASE, off) #define USB(off) MMIO_REG32(USB_BASE, off)
@@ -199,7 +201,7 @@
/*! AHB Gizmo registers. */ /*! AHB Gizmo registers. */
#define AHB_ARBITRATION_PRIORITY_CTRL 0x8 #define AHB_ARBITRATION_PRIORITY_CTRL 0x8
#define PRIORITY_CTRL_WEIGHT(x) (((x) & 7) << 29) #define PRIORITY_CTRL_WEIGHT(x) (((x) & 7) << 29)
#define PRIORITY_SELECT_USB BIT(6) // USB-OTG. #define PRIORITY_SELECT_USB BIT(6) // USB-OTG.
#define PRIORITY_SELECT_USB2 BIT(18) // USB-HSIC. #define PRIORITY_SELECT_USB2 BIT(18) // USB-HSIC.
#define PRIORITY_SELECT_USB3 BIT(17) // XUSB. #define PRIORITY_SELECT_USB3 BIT(17) // XUSB.
#define AHB_GIZMO_AHB_MEM 0x10 #define AHB_GIZMO_AHB_MEM 0x10
@@ -210,7 +212,7 @@
#define AHB_GIZMO_USB 0x20 #define AHB_GIZMO_USB 0x20
#define AHB_GIZMO_SDMMC4 0x48 #define AHB_GIZMO_SDMMC4 0x48
#define AHB_GIZMO_USB2 0x7C #define AHB_GIZMO_USB2 0x7C
#define AHB_GIZMO_USB3 0x80 #define AHB_GIZMO_USB3 0x80 // Doesn't exist on T21x??
#define AHB_GIZMO_IMMEDIATE BIT(18) #define AHB_GIZMO_IMMEDIATE BIT(18)
#define AHB_ARBITRATION_XBAR_CTRL 0xE0 #define AHB_ARBITRATION_XBAR_CTRL 0xE0
#define AHB_AHB_MEM_PREFETCH_CFG3 0xE4 #define AHB_AHB_MEM_PREFETCH_CFG3 0xE4
@@ -219,9 +221,9 @@
#define AHB_AHB_MEM_PREFETCH_CFG2 0xF4 #define AHB_AHB_MEM_PREFETCH_CFG2 0xF4
#define MST_ID(x) (((x) & 0x1F) << 26) #define MST_ID(x) (((x) & 0x1F) << 26)
#define MEM_PREFETCH_AHBDMA_MST_ID MST_ID(5) #define MEM_PREFETCH_AHBDMA_MST_ID MST_ID(5)
#define MEM_PREFETCH_USB_MST_ID MST_ID(6) // USB-OTG. #define MEM_PREFETCH_USB_MST_ID MST_ID(6) // USB-OTG. Doesn't exist on T210B01.
#define MEM_PREFETCH_USB2_MST_ID MST_ID(18) // USB-HSIC. #define MEM_PREFETCH_USB2_MST_ID MST_ID(18) // USB-HSIC. Doesn't exist on T210B01.
#define MEM_PREFETCH_USB3_MST_ID MST_ID(17) // XUSB. #define MEM_PREFETCH_USB3_MST_ID MST_ID(17) // XUSB. Doesn't exist on T210B01.
#define MEM_PREFETCH_ADDR_BNDRY(x) (((x) & 0xF) << 21) #define MEM_PREFETCH_ADDR_BNDRY(x) (((x) & 0xF) << 21)
#define MEM_PREFETCH_ENABLE BIT(31) #define MEM_PREFETCH_ENABLE BIT(31)
#define AHB_ARBITRATION_AHB_MEM_WRQUE_MST_ID 0xFC #define AHB_ARBITRATION_AHB_MEM_WRQUE_MST_ID 0xFC

View File

@@ -70,6 +70,8 @@
#define UART_MCR_CTS_EN BIT(5) #define UART_MCR_CTS_EN BIT(5)
#define UART_MCR_RTS_EN BIT(6) #define UART_MCR_RTS_EN BIT(6)
#define UART_FIFO_SIZE 36
typedef struct _uart_t typedef struct _uart_t
{ {
/* 0x00 */ vu32 UART_THR_DLAB; /* 0x00 */ vu32 UART_THR_DLAB;

View File

@@ -99,7 +99,7 @@ typedef struct _usb_cfg_descr_t
u8 bConfigurationValue; // Value of this configuration (1 based). u8 bConfigurationValue; // Value of this configuration (1 based).
u8 iConfiguration; // Index of String Descriptor describing the configuration. u8 iConfiguration; // Index of String Descriptor describing the configuration.
u8 bmAttributes; // Configuration characteristics. u8 bmAttributes; // Configuration characteristics.
u8 bMaxPower; // Maximum power consumed by this configuration. u8 bMaxPower; // Maximum power consumed by this configuration. In 2mA (usb2) or 8mA (usb3).
} __attribute__((packed)) usb_cfg_descr_t; } __attribute__((packed)) usb_cfg_descr_t;
/* Interface descriptor structure */ /* Interface descriptor structure */

View File

@@ -172,14 +172,14 @@ parse_padding_dec:
_s_putc(c); _s_putc(c);
break; break;
case 's':
_s_puts(va_arg(ap, char *), fill, fcnt);
break;
case 'd': case 'd':
_s_putn(va_arg(ap, u32), 10, fill, fcnt); _s_putn(va_arg(ap, u32), 10, fill, fcnt);
break; break;
case 's':
_s_puts(va_arg(ap, char *), fill, fcnt);
break;
case 'p': case 'p':
case 'P': case 'P':
case 'x': case 'x':
@@ -261,14 +261,14 @@ parse_padding_dec:
_s_putc(c); _s_putc(c);
break; break;
case 's':
_s_puts(va_arg(ap, char *), fill, fcnt);
break;
case 'd': case 'd':
_s_putn(va_arg(ap, u32), 10, fill, fcnt); _s_putn(va_arg(ap, u32), 10, fill, fcnt);
break; break;
case 's':
_s_puts(va_arg(ap, char *), fill, fcnt);
break;
case 'p': case 'p':
case 'P': case 'P':
case 'x': case 'x':