Move kernel config and patches to kernel 6.6. Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
83 lines
2.6 KiB
Diff
83 lines
2.6 KiB
Diff
From 647e57351f8ebc37d8e12cbc0f4bf7471754a0cc Mon Sep 17 00:00:00 2001
|
|
From: Sebastian Reichel <sebastian.reichel@collabora.com>
|
|
Date: Thu, 20 Oct 2022 22:42:40 +0200
|
|
Subject: [PATCH] regulator: rk808: reduce 'struct rk808' usage
|
|
|
|
Reduce usage of 'struct rk808' (driver data of the parent MFD), so
|
|
that only the chip variant field is still being accessed directly.
|
|
This allows restructuring the MFD driver to support SPI based
|
|
PMICs.
|
|
|
|
Acked-by: Mark Brown <broonie@kernel.org>
|
|
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
|
|
Link: https://lore.kernel.org/r/20221020204251.108565-3-sebastian.reichel@collabora.com
|
|
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
---
|
|
drivers/regulator/rk808-regulator.c | 20 ++++++++++++--------
|
|
1 file changed, 12 insertions(+), 8 deletions(-)
|
|
|
|
--- a/drivers/regulator/rk808-regulator.c
|
|
+++ b/drivers/regulator/rk808-regulator.c
|
|
@@ -14,7 +14,6 @@
|
|
|
|
#include <linux/delay.h>
|
|
#include <linux/gpio.h>
|
|
-#include <linux/i2c.h>
|
|
#include <linux/module.h>
|
|
#include <linux/of_device.h>
|
|
#include <linux/of_gpio.h>
|
|
@@ -1286,19 +1285,23 @@ dt_parse_end:
|
|
static int rk808_regulator_probe(struct platform_device *pdev)
|
|
{
|
|
struct rk808 *rk808 = dev_get_drvdata(pdev->dev.parent);
|
|
- struct i2c_client *client = rk808->i2c;
|
|
struct regulator_config config = {};
|
|
struct regulator_dev *rk808_rdev;
|
|
struct rk808_regulator_data *pdata;
|
|
const struct regulator_desc *regulators;
|
|
+ struct regmap *regmap;
|
|
int ret, i, nregulators;
|
|
|
|
+ regmap = dev_get_regmap(pdev->dev.parent, NULL);
|
|
+ if (!regmap)
|
|
+ return -ENODEV;
|
|
+
|
|
pdata = devm_kzalloc(&pdev->dev, sizeof(*pdata), GFP_KERNEL);
|
|
if (!pdata)
|
|
return -ENOMEM;
|
|
|
|
- ret = rk808_regulator_dt_parse_pdata(&pdev->dev, &client->dev,
|
|
- rk808->regmap, pdata);
|
|
+ ret = rk808_regulator_dt_parse_pdata(&pdev->dev, pdev->dev.parent,
|
|
+ regmap, pdata);
|
|
if (ret < 0)
|
|
return ret;
|
|
|
|
@@ -1326,21 +1329,22 @@ static int rk808_regulator_probe(struct
|
|
nregulators = RK818_NUM_REGULATORS;
|
|
break;
|
|
default:
|
|
- dev_err(&client->dev, "unsupported RK8XX ID %lu\n",
|
|
+ dev_err(&pdev->dev, "unsupported RK8XX ID %lu\n",
|
|
rk808->variant);
|
|
return -EINVAL;
|
|
}
|
|
|
|
- config.dev = &client->dev;
|
|
+ config.dev = &pdev->dev;
|
|
+ config.dev->of_node = pdev->dev.parent->of_node;
|
|
config.driver_data = pdata;
|
|
- config.regmap = rk808->regmap;
|
|
+ config.regmap = regmap;
|
|
|
|
/* Instantiate the regulators */
|
|
for (i = 0; i < nregulators; i++) {
|
|
rk808_rdev = devm_regulator_register(&pdev->dev,
|
|
®ulators[i], &config);
|
|
if (IS_ERR(rk808_rdev)) {
|
|
- dev_err(&client->dev,
|
|
+ dev_err(&pdev->dev,
|
|
"failed to register %d regulator\n", i);
|
|
return PTR_ERR(rk808_rdev);
|
|
}
|