- Add support for rockchip pmic rk805,rk809, rk816, rk817
- Add rk3399 board Leez support
- Fix bug in rk3328 ram driver
- Adapt SPL to support ATF bl31 with entry at 0x40000
- Fix the u8 type comparision with '-1'.
- Fix checkpatch warning for multi blank line and review signature.
This commit is contained in:
Tom Rini
2019-11-11 14:19:32 -05:00
48 changed files with 2036 additions and 162 deletions

View File

@@ -168,6 +168,7 @@ struct dm_regulator_uclass_platdata {
int mode_count;
int min_uV;
int max_uV;
int init_uV;
int min_uA;
int max_uA;
unsigned int ramp_delay;
@@ -177,6 +178,8 @@ struct dm_regulator_uclass_platdata {
int flags;
u8 ctrl_reg;
u8 volt_reg;
bool suspend_on;
u32 suspend_uV;
};
/* Regulator device operations */
@@ -193,6 +196,19 @@ struct dm_regulator_ops {
int (*get_value)(struct udevice *dev);
int (*set_value)(struct udevice *dev, int uV);
/**
* The regulator suspend output value function calls operates
* on a micro Volts.
*
* get/set_suspen_value - get/set suspend mode output value
* @dev - regulator device
* Sets:
* @uV - set the suspend output value [micro Volts]
* @return output value [uV] on success or negative errno if fail.
*/
int (*set_suspend_value)(struct udevice *dev, int uV);
int (*get_suspend_value)(struct udevice *dev);
/**
* The regulator output current function calls operates on a micro Amps.
*
@@ -217,6 +233,19 @@ struct dm_regulator_ops {
int (*get_enable)(struct udevice *dev);
int (*set_enable)(struct udevice *dev, bool enable);
/**
* The most basic feature of the regulator output is its enable state
* in suspend mode.
*
* get/set_suspend_enable - get/set enable state of the suspend output
* @dev - regulator device
* Sets:
* @enable - set true - enable or false - disable
* @return true/false for get or -errno if fail; 0 / -errno for set.
*/
int (*set_suspend_enable)(struct udevice *dev, bool enable);
int (*get_suspend_enable)(struct udevice *dev);
/**
* The 'get/set_mode()' function calls should operate on a driver-
* specific mode id definitions, which should be found in:
@@ -261,6 +290,23 @@ int regulator_get_value(struct udevice *dev);
*/
int regulator_set_value(struct udevice *dev, int uV);
/**
* regulator_set_suspend_value: set the suspend microvoltage value of a given regulator.
*
* @dev - pointer to the regulator device
* @uV - the output suspend value to set [micro Volts]
* @return - 0 on success or -errno val if fails
*/
int regulator_set_suspend_value(struct udevice *dev, int uV);
/**
* regulator_get_suspend_value: get the suspend microvoltage value of a given regulator.
*
* @dev - pointer to the regulator device
* @return - positive output value [uV] on success or negative errno if fail.
*/
int regulator_get_suspend_value(struct udevice *dev);
/**
* regulator_set_value_force: set the microvoltage value of a given regulator
* without any min-,max condition check
@@ -316,6 +362,23 @@ int regulator_set_enable(struct udevice *dev, bool enable);
*/
int regulator_set_enable_if_allowed(struct udevice *dev, bool enable);
/**
* regulator_set_suspend_enable: set regulator suspend enable state
*
* @dev - pointer to the regulator device
* @enable - set true or false
* @return - 0 on success or -errno val if fails
*/
int regulator_set_suspend_enable(struct udevice *dev, bool enable);
/**
* regulator_get_suspend_enable: get regulator suspend enable state
*
* @dev - pointer to the regulator device
* @return - true/false of enable state or -errno val if fails
*/
int regulator_get_suspend_enable(struct udevice *dev);
/**
* regulator_get_mode: get active operation mode id of a given regulator
*

View File

@@ -169,14 +169,56 @@ enum {
RK808_NUM_OF_REGS,
};
enum {
RK817_REG_SYS_CFG3 = 0xf4,
};
enum {
RK816_REG_DCDC_EN1 = 0x23,
RK816_REG_DCDC_EN2,
RK816_REG_DCDC_SLP_EN,
RK816_REG_LDO_SLP_EN,
RK816_REG_LDO_EN1 = 0x27,
RK816_REG_LDO_EN2,
};
enum {
RK805_ID = 0x8050,
RK808_ID = 0x0000,
RK809_ID = 0x8090,
RK816_ID = 0x8160,
RK817_ID = 0x8170,
RK818_ID = 0x8180,
};
enum {
RK817_POWER_EN0 = 0xb1,
RK817_POWER_EN1,
RK817_POWER_EN2,
RK817_POWER_EN3,
};
#define RK817_POWER_EN_SAVE0 0x99
#define RK817_POWER_EN_SAVE1 0xa4
#define RK817_ID_MSB 0xed
#define RK817_ID_LSB 0xee
#define RK8XX_ID_MSK 0xfff0
#define RK817_PMIC_SYS_CFG3 0xf4
#define RK817_GPIO_INT_CFG 0xfe
#define RK8XX_ON_SOURCE 0xae
#define RK8XX_OFF_SOURCE 0xaf
#define RK817_BUCK4_CMIN 0xc6
#define RK817_ON_SOURCE 0xf5
#define RK817_OFF_SOURCE 0xf6
struct reg_data {
u8 reg;
u8 val;
u8 mask;
};
struct rk8xx_reg_table {
char *name;
u8 reg_ctl;