685 lines
22 KiB
Diff
685 lines
22 KiB
Diff
From cd425173fe5788b5bc17cc4a3de7c68fd571d151 Mon Sep 17 00:00:00 2001
|
|
From: Simon Xue <xxm@rock-chips.com>
|
|
Date: Sun, 4 Jun 2023 00:23:33 +0530
|
|
Subject: [PATCH 1/9] iio: adc: rockchip_saradc: Add callback functions
|
|
|
|
Add start, read and power_down callback functions,
|
|
which will help in adding new rockchip device support
|
|
cleanly.
|
|
|
|
Signed-off-by: Simon Xue <xxm@rock-chips.com>
|
|
Signed-off-by: Shreeya Patel <shreeya.patel@collabora.com>
|
|
---
|
|
drivers/iio/adc/rockchip_saradc.c | 64 +++++++++++++++++++++++++------
|
|
1 file changed, 52 insertions(+), 12 deletions(-)
|
|
|
|
diff --git a/drivers/iio/adc/rockchip_saradc.c b/drivers/iio/adc/rockchip_saradc.c
|
|
index 79448c5ffc2a..21f9d92a6af4 100644
|
|
--- a/drivers/iio/adc/rockchip_saradc.c
|
|
+++ b/drivers/iio/adc/rockchip_saradc.c
|
|
@@ -38,10 +38,15 @@
|
|
#define SARADC_TIMEOUT msecs_to_jiffies(100)
|
|
#define SARADC_MAX_CHANNELS 8
|
|
|
|
+struct rockchip_saradc;
|
|
+
|
|
struct rockchip_saradc_data {
|
|
const struct iio_chan_spec *channels;
|
|
int num_channels;
|
|
unsigned long clk_rate;
|
|
+ void (*start)(struct rockchip_saradc *info, int chn);
|
|
+ int (*read)(struct rockchip_saradc *info);
|
|
+ void (*power_down)(struct rockchip_saradc *info);
|
|
};
|
|
|
|
struct rockchip_saradc {
|
|
@@ -60,27 +65,50 @@ struct rockchip_saradc {
|
|
struct notifier_block nb;
|
|
};
|
|
|
|
-static void rockchip_saradc_power_down(struct rockchip_saradc *info)
|
|
+static void rockchip_saradc_reset_controller(struct reset_control *reset);
|
|
+
|
|
+static void rockchip_saradc_start_v1(struct rockchip_saradc *info, int chn)
|
|
+{
|
|
+ /* 8 clock periods as delay between power up and start cmd */
|
|
+ writel_relaxed(8, info->regs + SARADC_DLY_PU_SOC);
|
|
+ /* Select the channel to be used and trigger conversion */
|
|
+ writel(SARADC_CTRL_POWER_CTRL | (chn & SARADC_CTRL_CHN_MASK) |
|
|
+ SARADC_CTRL_IRQ_ENABLE, info->regs + SARADC_CTRL);
|
|
+}
|
|
+
|
|
+static void rockchip_saradc_start(struct rockchip_saradc *info, int chn)
|
|
+{
|
|
+ info->data->start(info, chn);
|
|
+}
|
|
+
|
|
+static int rockchip_saradc_read_v1(struct rockchip_saradc *info)
|
|
+{
|
|
+ return readl_relaxed(info->regs + SARADC_DATA);
|
|
+}
|
|
+
|
|
+static int rockchip_saradc_read(struct rockchip_saradc *info)
|
|
+{
|
|
+ return info->data->read(info);
|
|
+}
|
|
+
|
|
+static void rockchip_saradc_power_down_v1(struct rockchip_saradc *info)
|
|
{
|
|
- /* Clear irq & power down adc */
|
|
writel_relaxed(0, info->regs + SARADC_CTRL);
|
|
}
|
|
|
|
+static void rockchip_saradc_power_down(struct rockchip_saradc *info)
|
|
+{
|
|
+ if (info->data->power_down)
|
|
+ info->data->power_down(info);
|
|
+}
|
|
+
|
|
static int rockchip_saradc_conversion(struct rockchip_saradc *info,
|
|
struct iio_chan_spec const *chan)
|
|
{
|
|
reinit_completion(&info->completion);
|
|
|
|
- /* 8 clock periods as delay between power up and start cmd */
|
|
- writel_relaxed(8, info->regs + SARADC_DLY_PU_SOC);
|
|
-
|
|
info->last_chan = chan;
|
|
-
|
|
- /* Select the channel to be used and trigger conversion */
|
|
- writel(SARADC_CTRL_POWER_CTRL
|
|
- | (chan->channel & SARADC_CTRL_CHN_MASK)
|
|
- | SARADC_CTRL_IRQ_ENABLE,
|
|
- info->regs + SARADC_CTRL);
|
|
+ rockchip_saradc_start(info, chan->channel);
|
|
|
|
if (!wait_for_completion_timeout(&info->completion, SARADC_TIMEOUT))
|
|
return -ETIMEDOUT;
|
|
@@ -123,7 +151,7 @@ static irqreturn_t rockchip_saradc_isr(int irq, void *dev_id)
|
|
struct rockchip_saradc *info = dev_id;
|
|
|
|
/* Read value */
|
|
- info->last_val = readl_relaxed(info->regs + SARADC_DATA);
|
|
+ info->last_val = rockchip_saradc_read(info);
|
|
info->last_val &= GENMASK(info->last_chan->scan_type.realbits - 1, 0);
|
|
|
|
rockchip_saradc_power_down(info);
|
|
@@ -163,6 +191,9 @@ static const struct rockchip_saradc_data saradc_data = {
|
|
.channels = rockchip_saradc_iio_channels,
|
|
.num_channels = ARRAY_SIZE(rockchip_saradc_iio_channels),
|
|
.clk_rate = 1000000,
|
|
+ .start = rockchip_saradc_start_v1,
|
|
+ .read = rockchip_saradc_read_v1,
|
|
+ .power_down = rockchip_saradc_power_down_v1,
|
|
};
|
|
|
|
static const struct iio_chan_spec rockchip_rk3066_tsadc_iio_channels[] = {
|
|
@@ -174,6 +205,9 @@ static const struct rockchip_saradc_data rk3066_tsadc_data = {
|
|
.channels = rockchip_rk3066_tsadc_iio_channels,
|
|
.num_channels = ARRAY_SIZE(rockchip_rk3066_tsadc_iio_channels),
|
|
.clk_rate = 50000,
|
|
+ .start = rockchip_saradc_start_v1,
|
|
+ .read = rockchip_saradc_read_v1,
|
|
+ .power_down = rockchip_saradc_power_down_v1,
|
|
};
|
|
|
|
static const struct iio_chan_spec rockchip_rk3399_saradc_iio_channels[] = {
|
|
@@ -189,6 +223,9 @@ static const struct rockchip_saradc_data rk3399_saradc_data = {
|
|
.channels = rockchip_rk3399_saradc_iio_channels,
|
|
.num_channels = ARRAY_SIZE(rockchip_rk3399_saradc_iio_channels),
|
|
.clk_rate = 1000000,
|
|
+ .start = rockchip_saradc_start_v1,
|
|
+ .read = rockchip_saradc_read_v1,
|
|
+ .power_down = rockchip_saradc_power_down_v1,
|
|
};
|
|
|
|
static const struct iio_chan_spec rockchip_rk3568_saradc_iio_channels[] = {
|
|
@@ -206,6 +243,9 @@ static const struct rockchip_saradc_data rk3568_saradc_data = {
|
|
.channels = rockchip_rk3568_saradc_iio_channels,
|
|
.num_channels = ARRAY_SIZE(rockchip_rk3568_saradc_iio_channels),
|
|
.clk_rate = 1000000,
|
|
+ .start = rockchip_saradc_start_v1,
|
|
+ .read = rockchip_saradc_read_v1,
|
|
+ .power_down = rockchip_saradc_power_down_v1,
|
|
};
|
|
|
|
static const struct of_device_id rockchip_saradc_match[] = {
|
|
--
|
|
2.41.0
|
|
|
|
|
|
From b5d9db8b105387c66c2c44096a622c6d9adfd5e6 Mon Sep 17 00:00:00 2001
|
|
From: Simon Xue <xxm@rock-chips.com>
|
|
Date: Sun, 4 Jun 2023 00:23:34 +0530
|
|
Subject: [PATCH 2/9] iio: adc: rockchip_saradc: Add support for RK3588
|
|
|
|
Add new start and read functions to support rk3588 device.
|
|
Also, add a device compatible string for the same.
|
|
|
|
Signed-off-by: Simon Xue <xxm@rock-chips.com>
|
|
Signed-off-by: Shreeya Patel <shreeya.patel@collabora.com>
|
|
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
|
|
---
|
|
drivers/iio/adc/rockchip_saradc.c | 70 +++++++++++++++++++++++++++++++
|
|
1 file changed, 70 insertions(+)
|
|
|
|
diff --git a/drivers/iio/adc/rockchip_saradc.c b/drivers/iio/adc/rockchip_saradc.c
|
|
index 21f9d92a6af4..312286ec91dc 100644
|
|
--- a/drivers/iio/adc/rockchip_saradc.c
|
|
+++ b/drivers/iio/adc/rockchip_saradc.c
|
|
@@ -4,6 +4,7 @@
|
|
* Copyright (C) 2014 ROCKCHIP, Inc.
|
|
*/
|
|
|
|
+#include <linux/bitfield.h>
|
|
#include <linux/module.h>
|
|
#include <linux/mutex.h>
|
|
#include <linux/platform_device.h>
|
|
@@ -38,6 +39,22 @@
|
|
#define SARADC_TIMEOUT msecs_to_jiffies(100)
|
|
#define SARADC_MAX_CHANNELS 8
|
|
|
|
+/* v2 registers */
|
|
+#define SARADC2_CONV_CON 0x0
|
|
+#define SARADC_T_PD_SOC 0x4
|
|
+#define SARADC_T_DAS_SOC 0xc
|
|
+#define SARADC2_END_INT_EN 0x104
|
|
+#define SARADC2_ST_CON 0x108
|
|
+#define SARADC2_STATUS 0x10c
|
|
+#define SARADC2_END_INT_ST 0x110
|
|
+#define SARADC2_DATA_BASE 0x120
|
|
+
|
|
+#define SARADC2_EN_END_INT BIT(0)
|
|
+#define SARADC2_START BIT(4)
|
|
+#define SARADC2_SINGLE_MODE BIT(5)
|
|
+
|
|
+#define SARADC2_CONV_CHANNELS GENMASK(15, 0)
|
|
+
|
|
struct rockchip_saradc;
|
|
|
|
struct rockchip_saradc_data {
|
|
@@ -76,6 +93,25 @@ static void rockchip_saradc_start_v1(struct rockchip_saradc *info, int chn)
|
|
SARADC_CTRL_IRQ_ENABLE, info->regs + SARADC_CTRL);
|
|
}
|
|
|
|
+static void rockchip_saradc_start_v2(struct rockchip_saradc *info, int chn)
|
|
+{
|
|
+ int val;
|
|
+
|
|
+ if (info->reset)
|
|
+ rockchip_saradc_reset_controller(info->reset);
|
|
+
|
|
+ writel_relaxed(0xc, info->regs + SARADC_T_DAS_SOC);
|
|
+ writel_relaxed(0x20, info->regs + SARADC_T_PD_SOC);
|
|
+ val = FIELD_PREP(SARADC2_EN_END_INT, 1);
|
|
+ val |= val << 16;
|
|
+ writel_relaxed(val, info->regs + SARADC2_END_INT_EN);
|
|
+ val = FIELD_PREP(SARADC2_START, 1) |
|
|
+ FIELD_PREP(SARADC2_SINGLE_MODE, 1) |
|
|
+ FIELD_PREP(SARADC2_CONV_CHANNELS, chn);
|
|
+ val |= val << 16;
|
|
+ writel(val, info->regs + SARADC2_CONV_CON);
|
|
+}
|
|
+
|
|
static void rockchip_saradc_start(struct rockchip_saradc *info, int chn)
|
|
{
|
|
info->data->start(info, chn);
|
|
@@ -86,6 +122,18 @@ static int rockchip_saradc_read_v1(struct rockchip_saradc *info)
|
|
return readl_relaxed(info->regs + SARADC_DATA);
|
|
}
|
|
|
|
+static int rockchip_saradc_read_v2(struct rockchip_saradc *info)
|
|
+{
|
|
+ int offset;
|
|
+
|
|
+ /* Clear irq */
|
|
+ writel_relaxed(0x1, info->regs + SARADC2_END_INT_ST);
|
|
+
|
|
+ offset = SARADC2_DATA_BASE + info->last_chan->channel * 0x4;
|
|
+
|
|
+ return readl_relaxed(info->regs + offset);
|
|
+}
|
|
+
|
|
static int rockchip_saradc_read(struct rockchip_saradc *info)
|
|
{
|
|
return info->data->read(info);
|
|
@@ -248,6 +296,25 @@ static const struct rockchip_saradc_data rk3568_saradc_data = {
|
|
.power_down = rockchip_saradc_power_down_v1,
|
|
};
|
|
|
|
+static const struct iio_chan_spec rockchip_rk3588_saradc_iio_channels[] = {
|
|
+ SARADC_CHANNEL(0, "adc0", 12),
|
|
+ SARADC_CHANNEL(1, "adc1", 12),
|
|
+ SARADC_CHANNEL(2, "adc2", 12),
|
|
+ SARADC_CHANNEL(3, "adc3", 12),
|
|
+ SARADC_CHANNEL(4, "adc4", 12),
|
|
+ SARADC_CHANNEL(5, "adc5", 12),
|
|
+ SARADC_CHANNEL(6, "adc6", 12),
|
|
+ SARADC_CHANNEL(7, "adc7", 12),
|
|
+};
|
|
+
|
|
+static const struct rockchip_saradc_data rk3588_saradc_data = {
|
|
+ .channels = rockchip_rk3588_saradc_iio_channels,
|
|
+ .num_channels = ARRAY_SIZE(rockchip_rk3588_saradc_iio_channels),
|
|
+ .clk_rate = 1000000,
|
|
+ .start = rockchip_saradc_start_v2,
|
|
+ .read = rockchip_saradc_read_v2,
|
|
+};
|
|
+
|
|
static const struct of_device_id rockchip_saradc_match[] = {
|
|
{
|
|
.compatible = "rockchip,saradc",
|
|
@@ -261,6 +328,9 @@ static const struct of_device_id rockchip_saradc_match[] = {
|
|
}, {
|
|
.compatible = "rockchip,rk3568-saradc",
|
|
.data = &rk3568_saradc_data,
|
|
+ }, {
|
|
+ .compatible = "rockchip,rk3588-saradc",
|
|
+ .data = &rk3588_saradc_data,
|
|
},
|
|
{},
|
|
};
|
|
--
|
|
2.41.0
|
|
|
|
|
|
From a0ba1f7d0b8ce5cfeff1253d99556704a4b70139 Mon Sep 17 00:00:00 2001
|
|
From: Shreeya Patel <shreeya.patel@collabora.com>
|
|
Date: Sun, 4 Jun 2023 00:23:35 +0530
|
|
Subject: [PATCH 3/9] iio: adc: rockchip_saradc: Make use of
|
|
devm_clk_get_enabled
|
|
|
|
Use devm_clk_get_enabled() to avoid manually disabling the
|
|
clock.
|
|
|
|
Signed-off-by: Shreeya Patel <shreeya.patel@collabora.com>
|
|
---
|
|
drivers/iio/adc/rockchip_saradc.c | 56 +++++--------------------------
|
|
1 file changed, 8 insertions(+), 48 deletions(-)
|
|
|
|
diff --git a/drivers/iio/adc/rockchip_saradc.c b/drivers/iio/adc/rockchip_saradc.c
|
|
index 312286ec91dc..ac424ea50787 100644
|
|
--- a/drivers/iio/adc/rockchip_saradc.c
|
|
+++ b/drivers/iio/adc/rockchip_saradc.c
|
|
@@ -346,20 +346,6 @@ static void rockchip_saradc_reset_controller(struct reset_control *reset)
|
|
reset_control_deassert(reset);
|
|
}
|
|
|
|
-static void rockchip_saradc_clk_disable(void *data)
|
|
-{
|
|
- struct rockchip_saradc *info = data;
|
|
-
|
|
- clk_disable_unprepare(info->clk);
|
|
-}
|
|
-
|
|
-static void rockchip_saradc_pclk_disable(void *data)
|
|
-{
|
|
- struct rockchip_saradc *info = data;
|
|
-
|
|
- clk_disable_unprepare(info->pclk);
|
|
-}
|
|
-
|
|
static void rockchip_saradc_regulator_disable(void *data)
|
|
{
|
|
struct rockchip_saradc *info = data;
|
|
@@ -493,16 +479,6 @@ static int rockchip_saradc_probe(struct platform_device *pdev)
|
|
return ret;
|
|
}
|
|
|
|
- info->pclk = devm_clk_get(&pdev->dev, "apb_pclk");
|
|
- if (IS_ERR(info->pclk))
|
|
- return dev_err_probe(&pdev->dev, PTR_ERR(info->pclk),
|
|
- "failed to get pclk\n");
|
|
-
|
|
- info->clk = devm_clk_get(&pdev->dev, "saradc");
|
|
- if (IS_ERR(info->clk))
|
|
- return dev_err_probe(&pdev->dev, PTR_ERR(info->clk),
|
|
- "failed to get adc clock\n");
|
|
-
|
|
info->vref = devm_regulator_get(&pdev->dev, "vref");
|
|
if (IS_ERR(info->vref))
|
|
return dev_err_probe(&pdev->dev, PTR_ERR(info->vref),
|
|
@@ -540,31 +516,15 @@ static int rockchip_saradc_probe(struct platform_device *pdev)
|
|
|
|
info->uv_vref = ret;
|
|
|
|
- ret = clk_prepare_enable(info->pclk);
|
|
- if (ret < 0) {
|
|
- dev_err(&pdev->dev, "failed to enable pclk\n");
|
|
- return ret;
|
|
- }
|
|
- ret = devm_add_action_or_reset(&pdev->dev,
|
|
- rockchip_saradc_pclk_disable, info);
|
|
- if (ret) {
|
|
- dev_err(&pdev->dev, "failed to register devm action, %d\n",
|
|
- ret);
|
|
- return ret;
|
|
- }
|
|
+ info->pclk = devm_clk_get_enabled(&pdev->dev, "apb_pclk");
|
|
+ if (IS_ERR(info->pclk))
|
|
+ return dev_err_probe(&pdev->dev, PTR_ERR(info->pclk),
|
|
+ "failed to get pclk\n");
|
|
|
|
- ret = clk_prepare_enable(info->clk);
|
|
- if (ret < 0) {
|
|
- dev_err(&pdev->dev, "failed to enable converter clock\n");
|
|
- return ret;
|
|
- }
|
|
- ret = devm_add_action_or_reset(&pdev->dev,
|
|
- rockchip_saradc_clk_disable, info);
|
|
- if (ret) {
|
|
- dev_err(&pdev->dev, "failed to register devm action, %d\n",
|
|
- ret);
|
|
- return ret;
|
|
- }
|
|
+ info->clk = devm_clk_get_enabled(&pdev->dev, "saradc");
|
|
+ if (IS_ERR(info->clk))
|
|
+ return dev_err_probe(&pdev->dev, PTR_ERR(info->clk),
|
|
+ "failed to get adc clock\n");
|
|
|
|
platform_set_drvdata(pdev, indio_dev);
|
|
|
|
--
|
|
2.41.0
|
|
|
|
|
|
From 412fdfbbfc17c588c1f9ae3ee838c29860549f8e Mon Sep 17 00:00:00 2001
|
|
From: Shreeya Patel <shreeya.patel@collabora.com>
|
|
Date: Sun, 4 Jun 2023 00:23:36 +0530
|
|
Subject: [PATCH 4/9] iio: adc: rockchip_saradc: Use of_device_get_match_data
|
|
|
|
Use of_device_get_match_data() to simplify the code.
|
|
|
|
Signed-off-by: Shreeya Patel <shreeya.patel@collabora.com>
|
|
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
|
|
---
|
|
drivers/iio/adc/rockchip_saradc.c | 8 ++++----
|
|
1 file changed, 4 insertions(+), 4 deletions(-)
|
|
|
|
diff --git a/drivers/iio/adc/rockchip_saradc.c b/drivers/iio/adc/rockchip_saradc.c
|
|
index ac424ea50787..cbe347fe8df7 100644
|
|
--- a/drivers/iio/adc/rockchip_saradc.c
|
|
+++ b/drivers/iio/adc/rockchip_saradc.c
|
|
@@ -415,10 +415,10 @@ static void rockchip_saradc_regulator_unreg_notifier(void *data)
|
|
|
|
static int rockchip_saradc_probe(struct platform_device *pdev)
|
|
{
|
|
+ const struct rockchip_saradc_data *match_data;
|
|
struct rockchip_saradc *info = NULL;
|
|
struct device_node *np = pdev->dev.of_node;
|
|
struct iio_dev *indio_dev = NULL;
|
|
- const struct of_device_id *match;
|
|
int ret;
|
|
int irq;
|
|
|
|
@@ -432,13 +432,13 @@ static int rockchip_saradc_probe(struct platform_device *pdev)
|
|
}
|
|
info = iio_priv(indio_dev);
|
|
|
|
- match = of_match_device(rockchip_saradc_match, &pdev->dev);
|
|
- if (!match) {
|
|
+ match_data = of_device_get_match_data(&pdev->dev);
|
|
+ if (!match_data) {
|
|
dev_err(&pdev->dev, "failed to match device\n");
|
|
return -ENODEV;
|
|
}
|
|
|
|
- info->data = match->data;
|
|
+ info->data = match_data;
|
|
|
|
/* Sanity check for possible later IP variants with more channels */
|
|
if (info->data->num_channels > SARADC_MAX_CHANNELS) {
|
|
--
|
|
2.41.0
|
|
|
|
|
|
From 7706b5ab350facf848f44aa846a2d26a8fa64a65 Mon Sep 17 00:00:00 2001
|
|
From: Shreeya Patel <shreeya.patel@collabora.com>
|
|
Date: Sun, 4 Jun 2023 00:23:37 +0530
|
|
Subject: [PATCH 5/9] iio: adc: rockchip_saradc: Match alignment with open
|
|
parenthesis
|
|
|
|
Match alignment with open parenthesis for improving the code
|
|
readability.
|
|
|
|
Signed-off-by: Shreeya Patel <shreeya.patel@collabora.com>
|
|
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
|
|
---
|
|
drivers/iio/adc/rockchip_saradc.c | 5 ++---
|
|
1 file changed, 2 insertions(+), 3 deletions(-)
|
|
|
|
diff --git a/drivers/iio/adc/rockchip_saradc.c b/drivers/iio/adc/rockchip_saradc.c
|
|
index cbe347fe8df7..436e219984fd 100644
|
|
--- a/drivers/iio/adc/rockchip_saradc.c
|
|
+++ b/drivers/iio/adc/rockchip_saradc.c
|
|
@@ -151,7 +151,7 @@ static void rockchip_saradc_power_down(struct rockchip_saradc *info)
|
|
}
|
|
|
|
static int rockchip_saradc_conversion(struct rockchip_saradc *info,
|
|
- struct iio_chan_spec const *chan)
|
|
+ struct iio_chan_spec const *chan)
|
|
{
|
|
reinit_completion(&info->completion);
|
|
|
|
@@ -394,8 +394,7 @@ static irqreturn_t rockchip_saradc_trigger_handler(int irq, void *p)
|
|
}
|
|
|
|
static int rockchip_saradc_volt_notify(struct notifier_block *nb,
|
|
- unsigned long event,
|
|
- void *data)
|
|
+ unsigned long event, void *data)
|
|
{
|
|
struct rockchip_saradc *info =
|
|
container_of(nb, struct rockchip_saradc, nb);
|
|
--
|
|
2.41.0
|
|
|
|
|
|
From 6511ca5e340de5a0d146d86a705f839ffdeb35ec Mon Sep 17 00:00:00 2001
|
|
From: Shreeya Patel <shreeya.patel@collabora.com>
|
|
Date: Sun, 4 Jun 2023 00:23:38 +0530
|
|
Subject: [PATCH 6/9] iio: adc: rockchip_saradc: Use dev_err_probe
|
|
|
|
Use dev_err_probe instead of dev_err in probe function,
|
|
which simplifies code a little bit and prints the error
|
|
code.
|
|
|
|
Signed-off-by: Shreeya Patel <shreeya.patel@collabora.com>
|
|
---
|
|
drivers/iio/adc/rockchip_saradc.c | 45 ++++++++++++++-----------------
|
|
1 file changed, 20 insertions(+), 25 deletions(-)
|
|
|
|
diff --git a/drivers/iio/adc/rockchip_saradc.c b/drivers/iio/adc/rockchip_saradc.c
|
|
index 436e219984fd..921844d9232d 100644
|
|
--- a/drivers/iio/adc/rockchip_saradc.c
|
|
+++ b/drivers/iio/adc/rockchip_saradc.c
|
|
@@ -425,25 +425,23 @@ static int rockchip_saradc_probe(struct platform_device *pdev)
|
|
return -ENODEV;
|
|
|
|
indio_dev = devm_iio_device_alloc(&pdev->dev, sizeof(*info));
|
|
- if (!indio_dev) {
|
|
- dev_err(&pdev->dev, "failed allocating iio device\n");
|
|
- return -ENOMEM;
|
|
- }
|
|
+ if (!indio_dev)
|
|
+ return dev_err_probe(&pdev->dev, -ENOMEM,
|
|
+ "failed allocating iio device\n");
|
|
+
|
|
info = iio_priv(indio_dev);
|
|
|
|
match_data = of_device_get_match_data(&pdev->dev);
|
|
- if (!match_data) {
|
|
- dev_err(&pdev->dev, "failed to match device\n");
|
|
- return -ENODEV;
|
|
- }
|
|
+ if (!match_data)
|
|
+ return dev_err_probe(&pdev->dev, -ENODEV,
|
|
+ "failed to match device\n");
|
|
|
|
info->data = match_data;
|
|
|
|
/* Sanity check for possible later IP variants with more channels */
|
|
- if (info->data->num_channels > SARADC_MAX_CHANNELS) {
|
|
- dev_err(&pdev->dev, "max channels exceeded");
|
|
- return -EINVAL;
|
|
- }
|
|
+ if (info->data->num_channels > SARADC_MAX_CHANNELS)
|
|
+ return dev_err_probe(&pdev->dev, -EINVAL,
|
|
+ "max channels exceeded");
|
|
|
|
info->regs = devm_platform_ioremap_resource(pdev, 0);
|
|
if (IS_ERR(info->regs))
|
|
@@ -491,23 +489,20 @@ static int rockchip_saradc_probe(struct platform_device *pdev)
|
|
* This may become user-configurable in the future.
|
|
*/
|
|
ret = clk_set_rate(info->clk, info->data->clk_rate);
|
|
- if (ret < 0) {
|
|
- dev_err(&pdev->dev, "failed to set adc clk rate, %d\n", ret);
|
|
- return ret;
|
|
- }
|
|
+ if (ret < 0)
|
|
+ return dev_err_probe(&pdev->dev, ret,
|
|
+ "failed to set adc clk rate\n");
|
|
|
|
ret = regulator_enable(info->vref);
|
|
- if (ret < 0) {
|
|
- dev_err(&pdev->dev, "failed to enable vref regulator\n");
|
|
- return ret;
|
|
- }
|
|
+ if (ret < 0)
|
|
+ return dev_err_probe(&pdev->dev, ret,
|
|
+ "failed to enable vref regulator\n");
|
|
+
|
|
ret = devm_add_action_or_reset(&pdev->dev,
|
|
rockchip_saradc_regulator_disable, info);
|
|
- if (ret) {
|
|
- dev_err(&pdev->dev, "failed to register devm action, %d\n",
|
|
- ret);
|
|
- return ret;
|
|
- }
|
|
+ if (ret)
|
|
+ return dev_err_probe(&pdev->dev, ret,
|
|
+ "failed to register devm action\n");
|
|
|
|
ret = regulator_get_voltage(info->vref);
|
|
if (ret < 0)
|
|
--
|
|
2.41.0
|
|
|
|
|
|
From 97f4513badc89771a4823235dab215078534419a Mon Sep 17 00:00:00 2001
|
|
From: Shreeya Patel <shreeya.patel@collabora.com>
|
|
Date: Sun, 4 Jun 2023 00:23:39 +0530
|
|
Subject: [PATCH 7/9] arm64: dts: rockchip: Add DT node for ADC support in
|
|
RK3588
|
|
|
|
Add DT node for ADC support in RK3588.
|
|
|
|
Signed-off-by: Shreeya Patel <shreeya.patel@collabora.com>
|
|
---
|
|
arch/arm64/boot/dts/rockchip/rk3588s.dtsi | 12 ++++++++++++
|
|
1 file changed, 12 insertions(+)
|
|
|
|
diff --git a/arch/arm64/boot/dts/rockchip/rk3588s.dtsi b/arch/arm64/boot/dts/rockchip/rk3588s.dtsi
|
|
index 977ed617f59e..e7622a44c9ea 100644
|
|
--- a/arch/arm64/boot/dts/rockchip/rk3588s.dtsi
|
|
+++ b/arch/arm64/boot/dts/rockchip/rk3588s.dtsi
|
|
@@ -1906,6 +1906,18 @@ dmac2: dma-controller@fed10000 {
|
|
#dma-cells = <1>;
|
|
};
|
|
|
|
+ saradc: saradc@fec10000 {
|
|
+ compatible = "rockchip,rk3588-saradc";
|
|
+ reg = <0x0 0xfec10000 0x0 0x10000>;
|
|
+ interrupts = <GIC_SPI 398 IRQ_TYPE_LEVEL_HIGH 0>;
|
|
+ #io-channel-cells = <1>;
|
|
+ clocks = <&cru CLK_SARADC>, <&cru PCLK_SARADC>;
|
|
+ clock-names = "saradc", "apb_pclk";
|
|
+ resets = <&cru SRST_P_SARADC>;
|
|
+ reset-names = "saradc-apb";
|
|
+ status = "disabled";
|
|
+ };
|
|
+
|
|
system_sram2: sram@ff001000 {
|
|
compatible = "mmio-sram";
|
|
reg = <0x0 0xff001000 0x0 0xef000>;
|
|
--
|
|
2.41.0
|
|
|
|
|
|
From a4bde5a0ce8037f213cb1ede73181c55d108df6a Mon Sep 17 00:00:00 2001
|
|
From: Shreeya Patel <shreeya.patel@collabora.com>
|
|
Date: Sun, 4 Jun 2023 00:23:40 +0530
|
|
Subject: [PATCH 8/9] dt-bindings: iio: adc: Add rockchip,rk3588-saradc string
|
|
|
|
Add rockchip,rk3588-saradc compatible string.
|
|
|
|
Signed-off-by: Shreeya Patel <shreeya.patel@collabora.com>
|
|
Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
|
|
---
|
|
Documentation/devicetree/bindings/iio/adc/rockchip-saradc.yaml | 1 +
|
|
1 file changed, 1 insertion(+)
|
|
|
|
diff --git a/Documentation/devicetree/bindings/iio/adc/rockchip-saradc.yaml b/Documentation/devicetree/bindings/iio/adc/rockchip-saradc.yaml
|
|
index da50b529c157..11c27ea451c8 100644
|
|
--- a/Documentation/devicetree/bindings/iio/adc/rockchip-saradc.yaml
|
|
+++ b/Documentation/devicetree/bindings/iio/adc/rockchip-saradc.yaml
|
|
@@ -21,6 +21,7 @@ properties:
|
|
- rockchip,rk3308-saradc
|
|
- rockchip,rk3328-saradc
|
|
- rockchip,rk3568-saradc
|
|
+ - rockchip,rk3588-saradc
|
|
- rockchip,rv1108-saradc
|
|
- rockchip,rv1126-saradc
|
|
- const: rockchip,rk3399-saradc
|
|
--
|
|
2.41.0
|
|
|
|
|
|
From 0bea534abbafa0f8d43fb27c65d9c9d84f3269f3 Mon Sep 17 00:00:00 2001
|
|
From: Shreeya Patel <shreeya.patel@collabora.com>
|
|
Date: Sun, 11 Jun 2023 00:56:47 +0530
|
|
Subject: [PATCH 9/9] dt-bindings: iio: rockchip: Fix 'oneOf' condition failed
|
|
warning
|
|
|
|
rk3588-saradc isn't compatible with the rk3399-saradc variant,
|
|
hence, fix the following dtbs_check warning for 'oneOf' condition
|
|
failure.
|
|
|
|
DTC_CHK arch/arm64/boot/dts/rockchip/rk3588-rock-5b.dtb
|
|
/home/shreeya/linux/arch/arm64/boot/dts/rockchip/rk3588-rock-5b.dtb:
|
|
saradc@fec10000: compatible: 'oneOf' conditional failed,
|
|
one must be fixed:
|
|
['rockchip,rk3588-saradc'] is too short
|
|
'rockchip,saradc' was expected
|
|
'rockchip,rk3066-tsadc' was expected
|
|
'rockchip,rk3399-saradc' was expected
|
|
|
|
Signed-off-by: Shreeya Patel <shreeya.patel@collabora.com>
|
|
---
|
|
Documentation/devicetree/bindings/iio/adc/rockchip-saradc.yaml | 2 +-
|
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
|
|
diff --git a/Documentation/devicetree/bindings/iio/adc/rockchip-saradc.yaml b/Documentation/devicetree/bindings/iio/adc/rockchip-saradc.yaml
|
|
index 11c27ea451c8..aa24b841393c 100644
|
|
--- a/Documentation/devicetree/bindings/iio/adc/rockchip-saradc.yaml
|
|
+++ b/Documentation/devicetree/bindings/iio/adc/rockchip-saradc.yaml
|
|
@@ -15,13 +15,13 @@ properties:
|
|
- const: rockchip,saradc
|
|
- const: rockchip,rk3066-tsadc
|
|
- const: rockchip,rk3399-saradc
|
|
+ - const: rockchip,rk3588-saradc
|
|
- items:
|
|
- enum:
|
|
- rockchip,px30-saradc
|
|
- rockchip,rk3308-saradc
|
|
- rockchip,rk3328-saradc
|
|
- rockchip,rk3568-saradc
|
|
- - rockchip,rk3588-saradc
|
|
- rockchip,rv1108-saradc
|
|
- rockchip,rv1126-saradc
|
|
- const: rockchip,rk3399-saradc
|
|
--
|
|
2.41.0
|
|
|