mirror of
https://github.com/edk2-porting/edk2-rk3588.git
synced 2026-01-12 15:16:15 +08:00
Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a834bb274c |
@@ -94,6 +94,8 @@ Rk806Configure (
|
||||
|
||||
RK806Init ();
|
||||
|
||||
RK806PinSetFunction (MASTER, 1, 2); // rk806_dvs1_pwrdn
|
||||
|
||||
for (RegCfgIndex = 0; RegCfgIndex < ARRAY_SIZE (rk806_init_data); RegCfgIndex++) {
|
||||
RK806RegulatorInit (rk806_init_data[RegCfgIndex]);
|
||||
}
|
||||
|
||||
@@ -99,6 +99,8 @@ Rk806Configure (
|
||||
|
||||
RK806Init ();
|
||||
|
||||
RK806PinSetFunction (MASTER, 1, 2); // rk806_dvs1_pwrdn
|
||||
|
||||
for (RegCfgIndex = 0; RegCfgIndex < ARRAY_SIZE (rk806_init_data); RegCfgIndex++) {
|
||||
RK806RegulatorInit (rk806_init_data[RegCfgIndex]);
|
||||
}
|
||||
|
||||
@@ -143,6 +143,8 @@ Rk806Configure (
|
||||
|
||||
RK806Init ();
|
||||
|
||||
RK806PinSetFunction (MASTER, 1, 2); // rk806_dvs1_pwrdn
|
||||
|
||||
for (RegCfgIndex = 0; RegCfgIndex < ARRAY_SIZE (rk806_init_data); RegCfgIndex++) {
|
||||
RK806RegulatorInit (rk806_init_data[RegCfgIndex]);
|
||||
}
|
||||
|
||||
@@ -145,6 +145,8 @@ Rk806Configure (
|
||||
|
||||
RK806Init ();
|
||||
|
||||
RK806PinSetFunction (MASTER, 1, 2); // rk806_dvs1_pwrdn
|
||||
|
||||
for (RegCfgIndex = 0; RegCfgIndex < ARRAY_SIZE (rk806_init_data); RegCfgIndex++) {
|
||||
RK806RegulatorInit (rk806_init_data[RegCfgIndex]);
|
||||
}
|
||||
|
||||
@@ -97,6 +97,8 @@ Rk806Configure (
|
||||
|
||||
RK806Init ();
|
||||
|
||||
RK806PinSetFunction (MASTER, 1, 2); // rk806_dvs1_pwrdn
|
||||
|
||||
for (RegCfgIndex = 0; RegCfgIndex < ARRAY_SIZE (rk806_init_data); RegCfgIndex++) {
|
||||
RK806RegulatorInit (rk806_init_data[RegCfgIndex]);
|
||||
}
|
||||
|
||||
@@ -96,6 +96,8 @@ Rk806Configure (
|
||||
|
||||
RK806Init ();
|
||||
|
||||
RK806PinSetFunction (MASTER, 1, 2); // rk806_dvs1_pwrdn
|
||||
|
||||
for (RegCfgIndex = 0; RegCfgIndex < ARRAY_SIZE (rk806_init_data); RegCfgIndex++) {
|
||||
RK806RegulatorInit (rk806_init_data[RegCfgIndex]);
|
||||
}
|
||||
|
||||
@@ -95,6 +95,8 @@ Rk806Configure (
|
||||
|
||||
RK806Init ();
|
||||
|
||||
RK806PinSetFunction (MASTER, 1, 2); // rk806_dvs1_pwrdn
|
||||
|
||||
for (RegCfgIndex = 0; RegCfgIndex < ARRAY_SIZE (rk806_init_data); RegCfgIndex++) {
|
||||
RK806RegulatorInit (rk806_init_data[RegCfgIndex]);
|
||||
}
|
||||
|
||||
@@ -94,6 +94,8 @@ Rk806Configure (
|
||||
|
||||
RK806Init ();
|
||||
|
||||
RK806PinSetFunction (MASTER, 1, 2); // rk806_dvs1_pwrdn
|
||||
|
||||
for (RegCfgIndex = 0; RegCfgIndex < ARRAY_SIZE (rk806_init_data); RegCfgIndex++) {
|
||||
RK806RegulatorInit (rk806_init_data[RegCfgIndex]);
|
||||
}
|
||||
|
||||
@@ -94,6 +94,8 @@ Rk806Configure (
|
||||
|
||||
RK806Init ();
|
||||
|
||||
RK806PinSetFunction (MASTER, 1, 2); // rk806_dvs1_pwrdn
|
||||
|
||||
for (RegCfgIndex = 0; RegCfgIndex < ARRAY_SIZE (rk806_init_data); RegCfgIndex++) {
|
||||
RK806RegulatorInit (rk806_init_data[RegCfgIndex]);
|
||||
}
|
||||
|
||||
@@ -92,6 +92,8 @@ Rk806Configure (
|
||||
|
||||
RK806Init ();
|
||||
|
||||
RK806PinSetFunction (MASTER, 1, 2); // rk806_dvs1_pwrdn
|
||||
|
||||
for (RegCfgIndex = 0; RegCfgIndex < ARRAY_SIZE (rk806_init_data); RegCfgIndex++) {
|
||||
RK806RegulatorInit (rk806_init_data[RegCfgIndex]);
|
||||
}
|
||||
|
||||
@@ -94,6 +94,8 @@ Rk806Configure (
|
||||
|
||||
RK806Init ();
|
||||
|
||||
RK806PinSetFunction (MASTER, 1, 2); // rk806_dvs1_pwrdn
|
||||
|
||||
for (RegCfgIndex = 0; RegCfgIndex < ARRAY_SIZE (rk806_init_data); RegCfgIndex++) {
|
||||
RK806RegulatorInit (rk806_init_data[RegCfgIndex]);
|
||||
}
|
||||
|
||||
@@ -96,6 +96,8 @@ Rk806Configure (
|
||||
|
||||
RK806Init ();
|
||||
|
||||
RK806PinSetFunction (MASTER, 1, 2); // rk806_dvs1_pwrdn
|
||||
|
||||
for (RegCfgIndex = 0; RegCfgIndex < ARRAY_SIZE (rk806_init_data); RegCfgIndex++) {
|
||||
RK806RegulatorInit (rk806_init_data[RegCfgIndex]);
|
||||
}
|
||||
|
||||
@@ -104,6 +104,8 @@ Rk806Configure (
|
||||
|
||||
RK806Init ();
|
||||
|
||||
RK806PinSetFunction (MASTER, 1, 2); // rk806_dvs1_pwrdn
|
||||
|
||||
for (RegCfgIndex = 0; RegCfgIndex < ARRAY_SIZE (rk806_init_data); RegCfgIndex++) {
|
||||
RK806RegulatorInit (rk806_init_data[RegCfgIndex]);
|
||||
}
|
||||
|
||||
@@ -95,6 +95,8 @@ Rk806Configure (
|
||||
|
||||
RK806Init ();
|
||||
|
||||
RK806PinSetFunction (MASTER, 1, 2); // rk806_dvs1_pwrdn
|
||||
|
||||
for (RegCfgIndex = 0; RegCfgIndex < ARRAY_SIZE (rk806_init_data); RegCfgIndex++) {
|
||||
RK806RegulatorInit (rk806_init_data[RegCfgIndex]);
|
||||
}
|
||||
|
||||
@@ -95,6 +95,8 @@ Rk806Configure (
|
||||
|
||||
RK806Init ();
|
||||
|
||||
RK806PinSetFunction (MASTER, 1, 2); // rk806_dvs1_pwrdn
|
||||
|
||||
for (RegCfgIndex = 0; RegCfgIndex < ARRAY_SIZE (rk806_init_data); RegCfgIndex++) {
|
||||
RK806RegulatorInit (rk806_init_data[RegCfgIndex]);
|
||||
}
|
||||
|
||||
@@ -96,6 +96,8 @@ Rk806Configure (
|
||||
|
||||
RK806Init ();
|
||||
|
||||
RK806PinSetFunction (MASTER, 1, 2); // rk806_dvs1_pwrdn
|
||||
|
||||
for (RegCfgIndex = 0; RegCfgIndex < ARRAY_SIZE (rk806_init_data); RegCfgIndex++) {
|
||||
RK806RegulatorInit (rk806_init_data[RegCfgIndex]);
|
||||
}
|
||||
|
||||
@@ -96,6 +96,8 @@ Rk806Configure (
|
||||
|
||||
RK806Init ();
|
||||
|
||||
RK806PinSetFunction (MASTER, 1, 2); // rk806_dvs1_pwrdn
|
||||
|
||||
for (RegCfgIndex = 0; RegCfgIndex < ARRAY_SIZE (rk806_init_data); RegCfgIndex++) {
|
||||
RK806RegulatorInit (rk806_init_data[RegCfgIndex]);
|
||||
}
|
||||
|
||||
@@ -96,6 +96,8 @@ Rk806Configure (
|
||||
|
||||
RK806Init ();
|
||||
|
||||
RK806PinSetFunction (MASTER, 1, 2); // rk806_dvs1_pwrdn
|
||||
|
||||
for (RegCfgIndex = 0; RegCfgIndex < ARRAY_SIZE (rk806_init_data); RegCfgIndex++) {
|
||||
RK806RegulatorInit (rk806_init_data[RegCfgIndex]);
|
||||
}
|
||||
|
||||
@@ -93,6 +93,8 @@ Rk806Configure (
|
||||
|
||||
RK806Init ();
|
||||
|
||||
RK806PinSetFunction (MASTER, 1, 2); // rk806_dvs1_pwrdn
|
||||
|
||||
for (RegCfgIndex = 0; RegCfgIndex < ARRAY_SIZE (rk806_init_data); RegCfgIndex++) {
|
||||
RK806RegulatorInit (rk806_init_data[RegCfgIndex]);
|
||||
}
|
||||
|
||||
@@ -96,6 +96,8 @@ Rk806Configure (
|
||||
|
||||
RK806Init ();
|
||||
|
||||
RK806PinSetFunction (MASTER, 1, 2); // rk806_dvs1_pwrdn
|
||||
|
||||
for (RegCfgIndex = 0; RegCfgIndex < ARRAY_SIZE (rk806_init_data); RegCfgIndex++) {
|
||||
RK806RegulatorInit (rk806_init_data[RegCfgIndex]);
|
||||
}
|
||||
|
||||
@@ -96,6 +96,8 @@ Rk806Configure (
|
||||
|
||||
RK806Init ();
|
||||
|
||||
RK806PinSetFunction (MASTER, 1, 2); // rk806_dvs1_pwrdn
|
||||
|
||||
for (RegCfgIndex = 0; RegCfgIndex < ARRAY_SIZE (rk806_init_data); RegCfgIndex++) {
|
||||
RK806RegulatorInit (rk806_init_data[RegCfgIndex]);
|
||||
}
|
||||
|
||||
@@ -96,6 +96,8 @@ Rk806Configure (
|
||||
|
||||
RK806Init ();
|
||||
|
||||
RK806PinSetFunction (MASTER, 1, 2); // rk806_dvs1_pwrdn
|
||||
|
||||
for (RegCfgIndex = 0; RegCfgIndex < ARRAY_SIZE (rk806_init_data); RegCfgIndex++) {
|
||||
RK806RegulatorInit (rk806_init_data[RegCfgIndex]);
|
||||
}
|
||||
|
||||
@@ -75,6 +75,20 @@
|
||||
#define RK806_RST_MODE2 0x02
|
||||
#define VERSION_AB 0x01
|
||||
|
||||
#define RK806_SLEEP_CONFIG0 0x62
|
||||
#define RK806_SLEEP_CONFIG1 0x63
|
||||
#define RK806_SLEEP_GPIO 0x71
|
||||
|
||||
#define RK806_PWRCTRL1_DR BIT(0)
|
||||
#define RK806_PWRCTRL2_DR BIT(1)
|
||||
#define RK806_PWRCTRL3_DR BIT(2)
|
||||
#define RK806_PWRCTRL1_DATA BIT(4)
|
||||
#define RK806_PWRCTRL2_DATA BIT(5)
|
||||
#define RK806_PWRCTRL3_DATA BIT(6)
|
||||
#define RK806_PWRCTRL1_FUN 0x07
|
||||
#define RK806_PWRCTRL2_FUN 0x70
|
||||
#define RK806_PWRCTRL3_FUN 0x07
|
||||
|
||||
struct regulator_init_data {
|
||||
const char *supply_regulator; /* or NULL for system supply */
|
||||
INT32 reg_id;
|
||||
@@ -94,6 +108,14 @@ struct rk8xx_reg_info {
|
||||
UINT8 range_num;
|
||||
};
|
||||
|
||||
struct rk806_pin_config {
|
||||
UINT8 fun_reg;
|
||||
UINT8 fun_msk;
|
||||
UINT8 reg;
|
||||
UINT8 dir_msk;
|
||||
UINT8 val_msk;
|
||||
};
|
||||
|
||||
#define RK8XX_DESC_COM(_name, _reg_info, _ops) \
|
||||
{ \
|
||||
.reg_info = (_reg_info), \
|
||||
@@ -180,4 +202,11 @@ RK806RegulatorInit (
|
||||
struct regulator_init_data init_data
|
||||
);
|
||||
|
||||
RETURN_STATUS
|
||||
RK806PinSetFunction (
|
||||
IN UINT8 RegId,
|
||||
IN UINT8 Pin,
|
||||
IN UINT8 Function
|
||||
);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#include <Library/RockchipPlatformLib.h>
|
||||
#include "Soc.h"
|
||||
#include <Library/BaseLib.h>
|
||||
#include <Library/DebugLib.h>
|
||||
#include <Library/IoLib.h>
|
||||
#include <Library/PcdLib.h>
|
||||
@@ -253,6 +254,30 @@ static const struct rk8xx_reg_info rk806_pldo[] = {
|
||||
{ 3400000, 0, RK806_PLDO_ON_VSEL (6), RK806_PLDO_SLP_VSEL (6), NA, RK806_PLDO_VSEL_MASK, 0xE8, },
|
||||
};
|
||||
|
||||
static const struct rk806_pin_config rk806_gpio_cfgs[] = {
|
||||
{
|
||||
.fun_reg = RK806_SLEEP_CONFIG0,
|
||||
.fun_msk = RK806_PWRCTRL1_FUN,
|
||||
.reg = RK806_SLEEP_GPIO,
|
||||
.val_msk = RK806_PWRCTRL1_DATA,
|
||||
.dir_msk = RK806_PWRCTRL1_DR,
|
||||
},
|
||||
{
|
||||
.fun_reg = RK806_SLEEP_CONFIG0,
|
||||
.fun_msk = RK806_PWRCTRL2_FUN,
|
||||
.reg = RK806_SLEEP_GPIO,
|
||||
.val_msk = RK806_PWRCTRL2_DATA,
|
||||
.dir_msk = RK806_PWRCTRL2_DR,
|
||||
},
|
||||
{
|
||||
.fun_reg = RK806_SLEEP_CONFIG1,
|
||||
.fun_msk = RK806_PWRCTRL3_FUN,
|
||||
.reg = RK806_SLEEP_GPIO,
|
||||
.val_msk = RK806_PWRCTRL3_DATA,
|
||||
.dir_msk = RK806_PWRCTRL3_DR,
|
||||
}
|
||||
};
|
||||
|
||||
#if 0
|
||||
static void
|
||||
io_mem_show (
|
||||
@@ -399,11 +424,11 @@ pmic_clrsetbits (
|
||||
RETURN_STATUS ret;
|
||||
|
||||
ret = pmic_reg_read (cs_id, reg, &byte, 0x01);
|
||||
if (ret < 0) {
|
||||
if (ret) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
byte = (ret & ~clr) | set;
|
||||
byte = (byte & ~clr) | set;
|
||||
|
||||
pmic_reg_write (cs_id, reg, &byte, 1);
|
||||
ret = pmic_reg_read (cs_id, reg, &byte, 0x01);
|
||||
@@ -752,3 +777,34 @@ RK806Init (
|
||||
|
||||
return RETURN_SUCCESS;
|
||||
}
|
||||
|
||||
RETURN_STATUS
|
||||
RK806PinSetFunction (
|
||||
IN UINT8 RegId,
|
||||
IN UINT8 Pin,
|
||||
IN UINT8 Function
|
||||
)
|
||||
{
|
||||
if ((Pin < 1) || (Pin > 3) || (Function > 5)) {
|
||||
ASSERT (FALSE);
|
||||
return RETURN_INVALID_PARAMETER;
|
||||
}
|
||||
|
||||
const struct rk806_pin_config *conf = &rk806_gpio_cfgs[Pin - 1];
|
||||
UINT8 mask = conf->fun_msk;
|
||||
UINT8 cs_id = (RegId & 0xf00) >> 8;
|
||||
UINT8 val;
|
||||
|
||||
DEBUG ((
|
||||
DEBUG_INFO,
|
||||
"%a: RegId=0x%x, Pin=%u, Function=%u\n",
|
||||
__func__,
|
||||
RegId,
|
||||
Pin,
|
||||
Function
|
||||
));
|
||||
|
||||
val = Function << LowBitSet32 (mask);
|
||||
|
||||
return pmic_clrsetbits (cs_id, conf->fun_reg, mask, val);
|
||||
}
|
||||
|
||||
@@ -27,6 +27,7 @@
|
||||
RK806.c
|
||||
|
||||
[LibraryClasses]
|
||||
BaseLib
|
||||
DebugLib
|
||||
IoLib
|
||||
SpiLib
|
||||
|
||||
Reference in New Issue
Block a user