rockchip: backport support for RK860X regulator
Used by ArmSom Sige3. Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
From d5edc0e36bb1657d2c46b7521010d4f0894a5c74 Mon Sep 17 00:00:00 2001
|
||||
From: Cristian Ciocaltea <cristian.ciocaltea@collabora.com>
|
||||
Date: Thu, 6 Apr 2023 22:41:54 +0300
|
||||
Subject: [PATCH] regulator: fan53555: Remove unused *_SLEW_SHIFT definitions
|
||||
|
||||
Commit b61ac767db4d ("regulator: fan53555: Convert to use
|
||||
regulator_set_ramp_delay_regmap") removed the slew_shift member from
|
||||
struct fan53555_device_info, hence the {CTL,TCS}_SLEW_SHIFT definitions
|
||||
remained unused. Drop them.
|
||||
|
||||
Signed-off-by: Cristian Ciocaltea <cristian.ciocaltea@collabora.com>
|
||||
Link: https://lore.kernel.org/r/20230406194158.963352-5-cristian.ciocaltea@collabora.com
|
||||
Signed-off-by: Mark Brown <broonie@kernel.org>
|
||||
---
|
||||
drivers/regulator/fan53555.c | 2 --
|
||||
1 file changed, 2 deletions(-)
|
||||
|
||||
--- a/drivers/regulator/fan53555.c
|
||||
+++ b/drivers/regulator/fan53555.c
|
||||
@@ -49,7 +49,6 @@
|
||||
/* Control bit definitions */
|
||||
#define CTL_OUTPUT_DISCHG (1 << 7)
|
||||
#define CTL_SLEW_MASK (0x7 << 4)
|
||||
-#define CTL_SLEW_SHIFT 4
|
||||
#define CTL_RESET (1 << 2)
|
||||
#define CTL_MODE_VSEL0_MODE BIT(0)
|
||||
#define CTL_MODE_VSEL1_MODE BIT(1)
|
||||
@@ -60,7 +59,6 @@
|
||||
#define TCS_VSEL0_MODE (1 << 7)
|
||||
#define TCS_VSEL1_MODE (1 << 6)
|
||||
|
||||
-#define TCS_SLEW_SHIFT 3
|
||||
#define TCS_SLEW_MASK GENMASK(4, 3)
|
||||
|
||||
enum fan53555_vendor {
|
||||
@@ -0,0 +1,53 @@
|
||||
From d25016618c0845b2a0f9ae64d084a66efd39b03c Mon Sep 17 00:00:00 2001
|
||||
From: Cristian Ciocaltea <cristian.ciocaltea@collabora.com>
|
||||
Date: Thu, 6 Apr 2023 22:41:55 +0300
|
||||
Subject: [PATCH] regulator: fan53555: Make use of the bit macros
|
||||
|
||||
For consistency and improved clarity, use BIT() and GENMASK() macros for
|
||||
defining the bitfields inside the registers. No functional changes
|
||||
intended.
|
||||
|
||||
While here, also fix DIE_{ID,REV} inconsistent indentation.
|
||||
|
||||
Signed-off-by: Cristian Ciocaltea <cristian.ciocaltea@collabora.com>
|
||||
Link: https://lore.kernel.org/r/20230406194158.963352-6-cristian.ciocaltea@collabora.com
|
||||
Signed-off-by: Mark Brown <broonie@kernel.org>
|
||||
---
|
||||
drivers/regulator/fan53555.c | 18 +++++++++---------
|
||||
1 file changed, 9 insertions(+), 9 deletions(-)
|
||||
|
||||
--- a/drivers/regulator/fan53555.c
|
||||
+++ b/drivers/regulator/fan53555.c
|
||||
@@ -41,23 +41,23 @@
|
||||
#define FAN53555_MONITOR 0x05
|
||||
|
||||
/* VSEL bit definitions */
|
||||
-#define VSEL_BUCK_EN (1 << 7)
|
||||
-#define VSEL_MODE (1 << 6)
|
||||
+#define VSEL_BUCK_EN BIT(7)
|
||||
+#define VSEL_MODE BIT(6)
|
||||
/* Chip ID and Verison */
|
||||
-#define DIE_ID 0x0F /* ID1 */
|
||||
-#define DIE_REV 0x0F /* ID2 */
|
||||
+#define DIE_ID 0x0F /* ID1 */
|
||||
+#define DIE_REV 0x0F /* ID2 */
|
||||
/* Control bit definitions */
|
||||
-#define CTL_OUTPUT_DISCHG (1 << 7)
|
||||
-#define CTL_SLEW_MASK (0x7 << 4)
|
||||
-#define CTL_RESET (1 << 2)
|
||||
+#define CTL_OUTPUT_DISCHG BIT(7)
|
||||
+#define CTL_SLEW_MASK GENMASK(6, 4)
|
||||
+#define CTL_RESET BIT(2)
|
||||
#define CTL_MODE_VSEL0_MODE BIT(0)
|
||||
#define CTL_MODE_VSEL1_MODE BIT(1)
|
||||
|
||||
#define FAN53555_NVOLTAGES 64 /* Numbers of voltages */
|
||||
#define FAN53526_NVOLTAGES 128
|
||||
|
||||
-#define TCS_VSEL0_MODE (1 << 7)
|
||||
-#define TCS_VSEL1_MODE (1 << 6)
|
||||
+#define TCS_VSEL0_MODE BIT(7)
|
||||
+#define TCS_VSEL1_MODE BIT(6)
|
||||
|
||||
#define TCS_SLEW_MASK GENMASK(4, 3)
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
From 6bb18339c6b54e0241344280fe4d14909db9356c Mon Sep 17 00:00:00 2001
|
||||
From: Cristian Ciocaltea <cristian.ciocaltea@collabora.com>
|
||||
Date: Thu, 6 Apr 2023 22:41:56 +0300
|
||||
Subject: [PATCH] regulator: fan53555: Improve vsel_mask computation
|
||||
|
||||
In preparation for introducing support for additional regulators which
|
||||
do not use the maximum number of voltage selectors available for a given
|
||||
mask, improve the mask computation formula by using fls().
|
||||
|
||||
Note fls() requires the bitops header, hence include it explicitly and
|
||||
drop bits.h which is already pulled by bitops.h.
|
||||
|
||||
Signed-off-by: Cristian Ciocaltea <cristian.ciocaltea@collabora.com>
|
||||
Link: https://lore.kernel.org/r/20230406194158.963352-7-cristian.ciocaltea@collabora.com
|
||||
Signed-off-by: Mark Brown <broonie@kernel.org>
|
||||
---
|
||||
drivers/regulator/fan53555.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
--- a/drivers/regulator/fan53555.c
|
||||
+++ b/drivers/regulator/fan53555.c
|
||||
@@ -8,7 +8,7 @@
|
||||
// Copyright (c) 2012 Marvell Technology Ltd.
|
||||
// Yunfan Zhang <yfzhang@marvell.com>
|
||||
|
||||
-#include <linux/bits.h>
|
||||
+#include <linux/bitops.h>
|
||||
#include <linux/err.h>
|
||||
#include <linux/i2c.h>
|
||||
#include <linux/module.h>
|
||||
@@ -486,7 +486,7 @@ static int fan53555_regulator_register(s
|
||||
rdesc->min_uV = di->vsel_min;
|
||||
rdesc->uV_step = di->vsel_step;
|
||||
rdesc->vsel_reg = di->vol_reg;
|
||||
- rdesc->vsel_mask = di->vsel_count - 1;
|
||||
+ rdesc->vsel_mask = BIT(fls(di->vsel_count - 1)) - 1;
|
||||
rdesc->ramp_reg = di->slew_reg;
|
||||
rdesc->ramp_mask = di->slew_mask;
|
||||
rdesc->ramp_delay_table = di->ramp_delay_table;
|
||||
@@ -0,0 +1,106 @@
|
||||
From 2c82f5b8ae6d0b5bbac1526021d9c3120d183555 Mon Sep 17 00:00:00 2001
|
||||
From: Cristian Ciocaltea <cristian.ciocaltea@collabora.com>
|
||||
Date: Thu, 6 Apr 2023 22:41:57 +0300
|
||||
Subject: [PATCH] regulator: fan53555: Use dev_err_probe
|
||||
|
||||
Use dev_err_probe() instead of dev_err() in the probe function, which
|
||||
ensures the error code is always printed and, additionally, simplifies
|
||||
the code a bit.
|
||||
|
||||
Signed-off-by: Cristian Ciocaltea <cristian.ciocaltea@collabora.com>
|
||||
Link: https://lore.kernel.org/r/20230406194158.963352-8-cristian.ciocaltea@collabora.com
|
||||
Signed-off-by: Mark Brown <broonie@kernel.org>
|
||||
---
|
||||
drivers/regulator/fan53555.c | 47 ++++++++++++++++--------------------
|
||||
1 file changed, 21 insertions(+), 26 deletions(-)
|
||||
|
||||
--- a/drivers/regulator/fan53555.c
|
||||
+++ b/drivers/regulator/fan53555.c
|
||||
@@ -568,10 +568,9 @@ static int fan53555_regulator_probe(stru
|
||||
if (!pdata)
|
||||
pdata = fan53555_parse_dt(&client->dev, np, &di->desc);
|
||||
|
||||
- if (!pdata || !pdata->regulator) {
|
||||
- dev_err(&client->dev, "Platform data not found!\n");
|
||||
- return -ENODEV;
|
||||
- }
|
||||
+ if (!pdata || !pdata->regulator)
|
||||
+ return dev_err_probe(&client->dev, -ENODEV,
|
||||
+ "Platform data not found!\n");
|
||||
|
||||
di->regulator = pdata->regulator;
|
||||
if (client->dev.of_node) {
|
||||
@@ -580,10 +579,9 @@ static int fan53555_regulator_probe(stru
|
||||
} else {
|
||||
/* if no ramp constraint set, get the pdata ramp_delay */
|
||||
if (!di->regulator->constraints.ramp_delay) {
|
||||
- if (pdata->slew_rate >= ARRAY_SIZE(slew_rates)) {
|
||||
- dev_err(&client->dev, "Invalid slew_rate\n");
|
||||
- return -EINVAL;
|
||||
- }
|
||||
+ if (pdata->slew_rate >= ARRAY_SIZE(slew_rates))
|
||||
+ return dev_err_probe(&client->dev, -EINVAL,
|
||||
+ "Invalid slew_rate\n");
|
||||
|
||||
di->regulator->constraints.ramp_delay
|
||||
= slew_rates[pdata->slew_rate];
|
||||
@@ -593,34 +591,31 @@ static int fan53555_regulator_probe(stru
|
||||
}
|
||||
|
||||
regmap = devm_regmap_init_i2c(client, &fan53555_regmap_config);
|
||||
- if (IS_ERR(regmap)) {
|
||||
- dev_err(&client->dev, "Failed to allocate regmap!\n");
|
||||
- return PTR_ERR(regmap);
|
||||
- }
|
||||
+ if (IS_ERR(regmap))
|
||||
+ return dev_err_probe(&client->dev, PTR_ERR(regmap),
|
||||
+ "Failed to allocate regmap!\n");
|
||||
+
|
||||
di->dev = &client->dev;
|
||||
i2c_set_clientdata(client, di);
|
||||
/* Get chip ID */
|
||||
ret = regmap_read(regmap, FAN53555_ID1, &val);
|
||||
- if (ret < 0) {
|
||||
- dev_err(&client->dev, "Failed to get chip ID!\n");
|
||||
- return ret;
|
||||
- }
|
||||
+ if (ret < 0)
|
||||
+ return dev_err_probe(&client->dev, ret, "Failed to get chip ID!\n");
|
||||
+
|
||||
di->chip_id = val & DIE_ID;
|
||||
/* Get chip revision */
|
||||
ret = regmap_read(regmap, FAN53555_ID2, &val);
|
||||
- if (ret < 0) {
|
||||
- dev_err(&client->dev, "Failed to get chip Rev!\n");
|
||||
- return ret;
|
||||
- }
|
||||
+ if (ret < 0)
|
||||
+ return dev_err_probe(&client->dev, ret, "Failed to get chip Rev!\n");
|
||||
+
|
||||
di->chip_rev = val & DIE_REV;
|
||||
dev_info(&client->dev, "FAN53555 Option[%d] Rev[%d] Detected!\n",
|
||||
di->chip_id, di->chip_rev);
|
||||
/* Device init */
|
||||
ret = fan53555_device_setup(di, pdata);
|
||||
- if (ret < 0) {
|
||||
- dev_err(&client->dev, "Failed to setup device!\n");
|
||||
- return ret;
|
||||
- }
|
||||
+ if (ret < 0)
|
||||
+ return dev_err_probe(&client->dev, ret, "Failed to setup device!\n");
|
||||
+
|
||||
/* Register regulator */
|
||||
config.dev = di->dev;
|
||||
config.init_data = di->regulator;
|
||||
@@ -630,9 +625,9 @@ static int fan53555_regulator_probe(stru
|
||||
|
||||
ret = fan53555_regulator_register(di, &config);
|
||||
if (ret < 0)
|
||||
- dev_err(&client->dev, "Failed to register regulator!\n");
|
||||
- return ret;
|
||||
+ dev_err_probe(&client->dev, ret, "Failed to register regulator!\n");
|
||||
|
||||
+ return ret;
|
||||
}
|
||||
|
||||
static const struct i2c_device_id fan53555_id[] = {
|
||||
@@ -0,0 +1,263 @@
|
||||
From a27e71a66ee0f887fefcc31b85a804b0905fa865 Mon Sep 17 00:00:00 2001
|
||||
From: Cristian Ciocaltea <cristian.ciocaltea@collabora.com>
|
||||
Date: Thu, 6 Apr 2023 22:41:58 +0300
|
||||
Subject: [PATCH] regulator: fan53555: Add support for RK860X
|
||||
|
||||
Extend the existing fan53555 driver to support the Rockchip RK860X
|
||||
regulators.
|
||||
|
||||
RK8600/RK8601 are pretty similar to the FAN53555 regulators.
|
||||
|
||||
RK8602/RK8603 are a bit different, having a wider output voltage
|
||||
selection range, from 0.5 V to 1.5 V in 6.25 mV steps. They also use
|
||||
additional VSEL0/VSEL1 registers for the voltage selector, but the
|
||||
enable and mode bits are still located in the original FAN53555 specific
|
||||
VSEL0/VSEL1 registers.
|
||||
|
||||
Signed-off-by: Cristian Ciocaltea <cristian.ciocaltea@collabora.com>
|
||||
Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
|
||||
Link: https://lore.kernel.org/r/20230406194158.963352-9-cristian.ciocaltea@collabora.com
|
||||
Signed-off-by: Mark Brown <broonie@kernel.org>
|
||||
---
|
||||
drivers/regulator/fan53555.c | 121 ++++++++++++++++++++++++++++++++++-
|
||||
1 file changed, 118 insertions(+), 3 deletions(-)
|
||||
|
||||
--- a/drivers/regulator/fan53555.c
|
||||
+++ b/drivers/regulator/fan53555.c
|
||||
@@ -26,6 +26,9 @@
|
||||
#define FAN53555_VSEL0 0x00
|
||||
#define FAN53555_VSEL1 0x01
|
||||
|
||||
+#define RK8602_VSEL0 0x06
|
||||
+#define RK8602_VSEL1 0x07
|
||||
+
|
||||
#define TCS4525_VSEL0 0x11
|
||||
#define TCS4525_VSEL1 0x10
|
||||
#define TCS4525_TIME 0x13
|
||||
@@ -55,6 +58,7 @@
|
||||
|
||||
#define FAN53555_NVOLTAGES 64 /* Numbers of voltages */
|
||||
#define FAN53526_NVOLTAGES 128
|
||||
+#define RK8602_NVOLTAGES 160
|
||||
|
||||
#define TCS_VSEL0_MODE BIT(7)
|
||||
#define TCS_VSEL1_MODE BIT(6)
|
||||
@@ -64,6 +68,8 @@
|
||||
enum fan53555_vendor {
|
||||
FAN53526_VENDOR_FAIRCHILD = 0,
|
||||
FAN53555_VENDOR_FAIRCHILD,
|
||||
+ FAN53555_VENDOR_ROCKCHIP, /* RK8600, RK8601 */
|
||||
+ RK8602_VENDOR_ROCKCHIP, /* RK8602, RK8603 */
|
||||
FAN53555_VENDOR_SILERGY,
|
||||
FAN53526_VENDOR_TCS,
|
||||
};
|
||||
@@ -88,6 +94,14 @@ enum {
|
||||
};
|
||||
|
||||
enum {
|
||||
+ RK8600_CHIP_ID_08 = 8, /* RK8600, RK8601 */
|
||||
+};
|
||||
+
|
||||
+enum {
|
||||
+ RK8602_CHIP_ID_10 = 10, /* RK8602, RK8603 */
|
||||
+};
|
||||
+
|
||||
+enum {
|
||||
TCS4525_CHIP_ID_12 = 12,
|
||||
};
|
||||
|
||||
@@ -117,6 +131,8 @@ struct fan53555_device_info {
|
||||
/* Voltage setting register */
|
||||
unsigned int vol_reg;
|
||||
unsigned int sleep_reg;
|
||||
+ unsigned int en_reg;
|
||||
+ unsigned int sleep_en_reg;
|
||||
/* Voltage range and step(linear) */
|
||||
unsigned int vsel_min;
|
||||
unsigned int vsel_step;
|
||||
@@ -159,7 +175,7 @@ static int fan53555_set_suspend_enable(s
|
||||
{
|
||||
struct fan53555_device_info *di = rdev_get_drvdata(rdev);
|
||||
|
||||
- return regmap_update_bits(rdev->regmap, di->sleep_reg,
|
||||
+ return regmap_update_bits(rdev->regmap, di->sleep_en_reg,
|
||||
VSEL_BUCK_EN, VSEL_BUCK_EN);
|
||||
}
|
||||
|
||||
@@ -167,7 +183,7 @@ static int fan53555_set_suspend_disable(
|
||||
{
|
||||
struct fan53555_device_info *di = rdev_get_drvdata(rdev);
|
||||
|
||||
- return regmap_update_bits(rdev->regmap, di->sleep_reg,
|
||||
+ return regmap_update_bits(rdev->regmap, di->sleep_en_reg,
|
||||
VSEL_BUCK_EN, 0);
|
||||
}
|
||||
|
||||
@@ -317,6 +333,50 @@ static int fan53555_voltages_setup_fairc
|
||||
return 0;
|
||||
}
|
||||
|
||||
+static int fan53555_voltages_setup_rockchip(struct fan53555_device_info *di)
|
||||
+{
|
||||
+ /* Init voltage range and step */
|
||||
+ switch (di->chip_id) {
|
||||
+ case RK8600_CHIP_ID_08:
|
||||
+ di->vsel_min = 712500;
|
||||
+ di->vsel_step = 12500;
|
||||
+ break;
|
||||
+ default:
|
||||
+ dev_err(di->dev,
|
||||
+ "Chip ID %d not supported!\n", di->chip_id);
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
+ di->slew_reg = FAN53555_CONTROL;
|
||||
+ di->slew_mask = CTL_SLEW_MASK;
|
||||
+ di->ramp_delay_table = slew_rates;
|
||||
+ di->n_ramp_values = ARRAY_SIZE(slew_rates);
|
||||
+ di->vsel_count = FAN53555_NVOLTAGES;
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int rk8602_voltages_setup_rockchip(struct fan53555_device_info *di)
|
||||
+{
|
||||
+ /* Init voltage range and step */
|
||||
+ switch (di->chip_id) {
|
||||
+ case RK8602_CHIP_ID_10:
|
||||
+ di->vsel_min = 500000;
|
||||
+ di->vsel_step = 6250;
|
||||
+ break;
|
||||
+ default:
|
||||
+ dev_err(di->dev,
|
||||
+ "Chip ID %d not supported!\n", di->chip_id);
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
+ di->slew_reg = FAN53555_CONTROL;
|
||||
+ di->slew_mask = CTL_SLEW_MASK;
|
||||
+ di->ramp_delay_table = slew_rates;
|
||||
+ di->n_ramp_values = ARRAY_SIZE(slew_rates);
|
||||
+ di->vsel_count = RK8602_NVOLTAGES;
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
static int fan53555_voltages_setup_silergy(struct fan53555_device_info *di)
|
||||
{
|
||||
/* Init voltage range and step */
|
||||
@@ -377,6 +437,7 @@ static int fan53555_device_setup(struct
|
||||
switch (di->vendor) {
|
||||
case FAN53526_VENDOR_FAIRCHILD:
|
||||
case FAN53555_VENDOR_FAIRCHILD:
|
||||
+ case FAN53555_VENDOR_ROCKCHIP:
|
||||
case FAN53555_VENDOR_SILERGY:
|
||||
switch (pdata->sleep_vsel_id) {
|
||||
case FAN53555_VSEL_ID_0:
|
||||
@@ -391,6 +452,27 @@ static int fan53555_device_setup(struct
|
||||
dev_err(di->dev, "Invalid VSEL ID!\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
+ di->sleep_en_reg = di->sleep_reg;
|
||||
+ di->en_reg = di->vol_reg;
|
||||
+ break;
|
||||
+ case RK8602_VENDOR_ROCKCHIP:
|
||||
+ switch (pdata->sleep_vsel_id) {
|
||||
+ case FAN53555_VSEL_ID_0:
|
||||
+ di->sleep_reg = RK8602_VSEL0;
|
||||
+ di->vol_reg = RK8602_VSEL1;
|
||||
+ di->sleep_en_reg = FAN53555_VSEL0;
|
||||
+ di->en_reg = FAN53555_VSEL1;
|
||||
+ break;
|
||||
+ case FAN53555_VSEL_ID_1:
|
||||
+ di->sleep_reg = RK8602_VSEL1;
|
||||
+ di->vol_reg = RK8602_VSEL0;
|
||||
+ di->sleep_en_reg = FAN53555_VSEL1;
|
||||
+ di->en_reg = FAN53555_VSEL0;
|
||||
+ break;
|
||||
+ default:
|
||||
+ dev_err(di->dev, "Invalid VSEL ID!\n");
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
break;
|
||||
case FAN53526_VENDOR_TCS:
|
||||
switch (pdata->sleep_vsel_id) {
|
||||
@@ -406,6 +488,8 @@ static int fan53555_device_setup(struct
|
||||
dev_err(di->dev, "Invalid VSEL ID!\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
+ di->sleep_en_reg = di->sleep_reg;
|
||||
+ di->en_reg = di->vol_reg;
|
||||
break;
|
||||
default:
|
||||
dev_err(di->dev, "vendor %d not supported!\n", di->vendor);
|
||||
@@ -427,10 +511,23 @@ static int fan53555_device_setup(struct
|
||||
}
|
||||
break;
|
||||
case FAN53555_VENDOR_FAIRCHILD:
|
||||
+ case FAN53555_VENDOR_ROCKCHIP:
|
||||
case FAN53555_VENDOR_SILERGY:
|
||||
di->mode_reg = di->vol_reg;
|
||||
di->mode_mask = VSEL_MODE;
|
||||
break;
|
||||
+ case RK8602_VENDOR_ROCKCHIP:
|
||||
+ di->mode_mask = VSEL_MODE;
|
||||
+
|
||||
+ switch (pdata->sleep_vsel_id) {
|
||||
+ case FAN53555_VSEL_ID_0:
|
||||
+ di->mode_reg = FAN53555_VSEL1;
|
||||
+ break;
|
||||
+ case FAN53555_VSEL_ID_1:
|
||||
+ di->mode_reg = FAN53555_VSEL0;
|
||||
+ break;
|
||||
+ }
|
||||
+ break;
|
||||
case FAN53526_VENDOR_TCS:
|
||||
di->mode_reg = TCS4525_COMMAND;
|
||||
|
||||
@@ -456,6 +553,12 @@ static int fan53555_device_setup(struct
|
||||
case FAN53555_VENDOR_FAIRCHILD:
|
||||
ret = fan53555_voltages_setup_fairchild(di);
|
||||
break;
|
||||
+ case FAN53555_VENDOR_ROCKCHIP:
|
||||
+ ret = fan53555_voltages_setup_rockchip(di);
|
||||
+ break;
|
||||
+ case RK8602_VENDOR_ROCKCHIP:
|
||||
+ ret = rk8602_voltages_setup_rockchip(di);
|
||||
+ break;
|
||||
case FAN53555_VENDOR_SILERGY:
|
||||
ret = fan53555_voltages_setup_silergy(di);
|
||||
break;
|
||||
@@ -481,7 +584,7 @@ static int fan53555_regulator_register(s
|
||||
rdesc->ops = &fan53555_regulator_ops;
|
||||
rdesc->type = REGULATOR_VOLTAGE;
|
||||
rdesc->n_voltages = di->vsel_count;
|
||||
- rdesc->enable_reg = di->vol_reg;
|
||||
+ rdesc->enable_reg = di->en_reg;
|
||||
rdesc->enable_mask = VSEL_BUCK_EN;
|
||||
rdesc->min_uV = di->vsel_min;
|
||||
rdesc->uV_step = di->vsel_step;
|
||||
@@ -532,6 +635,12 @@ static const struct of_device_id __maybe
|
||||
.compatible = "fcs,fan53555",
|
||||
.data = (void *)FAN53555_VENDOR_FAIRCHILD
|
||||
}, {
|
||||
+ .compatible = "rockchip,rk8600",
|
||||
+ .data = (void *)FAN53555_VENDOR_ROCKCHIP
|
||||
+ }, {
|
||||
+ .compatible = "rockchip,rk8602",
|
||||
+ .data = (void *)RK8602_VENDOR_ROCKCHIP
|
||||
+ }, {
|
||||
.compatible = "silergy,syr827",
|
||||
.data = (void *)FAN53555_VENDOR_SILERGY,
|
||||
}, {
|
||||
@@ -638,6 +747,12 @@ static const struct i2c_device_id fan535
|
||||
.name = "fan53555",
|
||||
.driver_data = FAN53555_VENDOR_FAIRCHILD
|
||||
}, {
|
||||
+ .name = "rk8600",
|
||||
+ .driver_data = FAN53555_VENDOR_ROCKCHIP
|
||||
+ }, {
|
||||
+ .name = "rk8602",
|
||||
+ .driver_data = RK8602_VENDOR_ROCKCHIP
|
||||
+ }, {
|
||||
.name = "syr827",
|
||||
.driver_data = FAN53555_VENDOR_SILERGY
|
||||
}, {
|
||||
Reference in New Issue
Block a user