summaryrefslogtreecommitdiff
path: root/drivers/mfd/rk8xx-i2c.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/mfd/rk8xx-i2c.c')
-rw-r--r--drivers/mfd/rk8xx-i2c.c33
1 files changed, 32 insertions, 1 deletions
diff --git a/drivers/mfd/rk8xx-i2c.c b/drivers/mfd/rk8xx-i2c.c
index 37287b06dab0..2951b2911a37 100644
--- a/drivers/mfd/rk8xx-i2c.c
+++ b/drivers/mfd/rk8xx-i2c.c
@@ -1,6 +1,6 @@
// SPDX-License-Identifier: GPL-2.0-only
/*
- * Rockchip RK805/RK808/RK816/RK817/RK818 Core (I2C) driver
+ * Rockchip RK801/RK805/RK808/RK816/RK817/RK818 Core (I2C) driver
*
* Copyright (c) 2014, Fuzhou Rockchip Electronics Co., Ltd
* Copyright (C) 2016 PHYTEC Messtechnik GmbH
@@ -21,6 +21,23 @@ struct rk8xx_i2c_platform_data {
int variant;
};
+static bool rk801_is_volatile_reg(struct device *dev, unsigned int reg)
+{
+ switch (reg) {
+ case RK801_SYS_STS_REG:
+ case RK801_INT_STS0_REG:
+ case RK801_SYS_CFG0_REG:
+ case RK801_SYS_CFG1_REG:
+ case RK801_SYS_CFG2_REG:
+ case RK801_SYS_CFG3_REG:
+ case RK801_SYS_CFG4_REG:
+ case RK801_SLEEP_CFG_REG:
+ return true;
+ }
+
+ return false;
+}
+
static bool rk806_is_volatile_reg(struct device *dev, unsigned int reg)
{
switch (reg) {
@@ -124,6 +141,14 @@ static const struct regmap_config rk818_regmap_config = {
.volatile_reg = rk808_is_volatile_reg,
};
+static const struct regmap_config rk801_regmap_config = {
+ .reg_bits = 8,
+ .val_bits = 8,
+ .max_register = RK801_SYS_CFG3_OTP_REG,
+ .cache_type = REGCACHE_RBTREE,
+ .volatile_reg = rk801_is_volatile_reg,
+};
+
static const struct regmap_config rk805_regmap_config = {
.reg_bits = 8,
.val_bits = 8,
@@ -164,6 +189,11 @@ static const struct regmap_config rk817_regmap_config = {
.volatile_reg = rk817_is_volatile_reg,
};
+static const struct rk8xx_i2c_platform_data rk801_data = {
+ .regmap_cfg = &rk801_regmap_config,
+ .variant = RK801_ID,
+};
+
static const struct rk8xx_i2c_platform_data rk805_data = {
.regmap_cfg = &rk805_regmap_config,
.variant = RK805_ID,
@@ -224,6 +254,7 @@ static void rk8xx_i2c_shutdown(struct i2c_client *client)
static SIMPLE_DEV_PM_OPS(rk8xx_i2c_pm_ops, rk8xx_suspend, rk8xx_resume);
static const struct of_device_id rk8xx_i2c_of_match[] = {
+ { .compatible = "rockchip,rk801", .data = &rk801_data },
{ .compatible = "rockchip,rk805", .data = &rk805_data },
{ .compatible = "rockchip,rk806", .data = &rk806_data },
{ .compatible = "rockchip,rk808", .data = &rk808_data },