* [PATCH v5 0/4] Add support for attaching a regulator to w1: ds2482
@ 2024-11-29 9:53 Kryštof Černý via B4 Relay
2024-11-29 9:53 ` [PATCH v5 1/4] dt-bindings: w1: ds2482: Add vcc-supply property Kryštof Černý via B4 Relay
` (3 more replies)
0 siblings, 4 replies; 6+ messages in thread
From: Kryštof Černý via B4 Relay @ 2024-11-29 9:53 UTC (permalink / raw)
To: Krzysztof Kozlowski, Rob Herring, Conor Dooley, Stefan Wahren,
Stefan Wahren
Cc: Ben Gardner, linux-kernel, devicetree,
Kryštof Černý,
Conor Dooley
This version fixes the introduced memory leak by changing
the memory allocation function.
Signed-off-by: Kryštof Černý <cleverline1mc@gmail.com>
---
Changes in v5:
- Refactored the driver to use devm_kzalloc() instead of kzalloc()
- Link to v4: https://lore.kernel.org/r/20241125-ds2482-add-reg-v4-0-475a7a08df96@gmail.com
Changes in v4:
- Using dev_err_probe() instead of dev_err() for the regulator error.
- Corrected patch order.
- Link to v3: https://lore.kernel.org/r/20241124-ds2482-add-reg-v3-0-806df39c9454@gmail.com
Changes in v3:
- Switched from regulator_enable() to devm_regulator_get_enable()
- Removed obvious comments.
- Link to v2: https://lore.kernel.org/r/20241122-ds2482-add-reg-v2-0-a5a03ee74da7@gmail.com
Changes in v2:
- Removed property description
- Changed commit message of binding commit
- Link to v1: https://lore.kernel.org/r/20241115-ds2482-add-reg-v1-0-cc84b9aba126@gmail.com
---
Kryštof Černý (4):
dt-bindings: w1: ds2482: Add vcc-supply property
w1: ds2482: switch to devm_kzalloc() from kzalloc()
w1: ds2482: Add regulator support
w1: ds2482: Fix datasheet URL
.../devicetree/bindings/w1/maxim,ds2482.yaml | 2 ++
drivers/w1/masters/ds2482.c | 39 ++++++++++------------
2 files changed, 19 insertions(+), 22 deletions(-)
---
base-commit: 6d59cab07b8d74d0f0422b750038123334f6ecc2
change-id: 20241111-ds2482-add-reg-fe13200ad7d6
Best regards,
--
Kryštof Černý <cleverline1mc@gmail.com>
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v5 1/4] dt-bindings: w1: ds2482: Add vcc-supply property
2024-11-29 9:53 [PATCH v5 0/4] Add support for attaching a regulator to w1: ds2482 Kryštof Černý via B4 Relay
@ 2024-11-29 9:53 ` Kryštof Černý via B4 Relay
2024-11-29 9:53 ` [PATCH v5 2/4] w1: ds2482: switch to devm_kzalloc() from kzalloc() Kryštof Černý via B4 Relay
` (2 subsequent siblings)
3 siblings, 0 replies; 6+ messages in thread
From: Kryštof Černý via B4 Relay @ 2024-11-29 9:53 UTC (permalink / raw)
To: Krzysztof Kozlowski, Rob Herring, Conor Dooley, Stefan Wahren,
Stefan Wahren
Cc: Ben Gardner, linux-kernel, devicetree,
Kryštof Černý,
Conor Dooley
From: Kryštof Černý <cleverline1mc@gmail.com>
ds2482 has a VCC pin, accepting 2.9-5.5 V.
Signed-off-by: Kryštof Černý <cleverline1mc@gmail.com>
Reviewed-by: Stefan Wahren <wahrenst@gmx.net>
Acked-by: Conor Dooley <conor.dooley@microchip.com>
---
Documentation/devicetree/bindings/w1/maxim,ds2482.yaml | 2 ++
1 file changed, 2 insertions(+)
diff --git a/Documentation/devicetree/bindings/w1/maxim,ds2482.yaml b/Documentation/devicetree/bindings/w1/maxim,ds2482.yaml
index 422becc6e1fa8d58665c5586ebdc611cd0b2c760..fe6b3f9a3f8bbd00366c3e36aad3ffa72ec1a31f 100644
--- a/Documentation/devicetree/bindings/w1/maxim,ds2482.yaml
+++ b/Documentation/devicetree/bindings/w1/maxim,ds2482.yaml
@@ -25,6 +25,8 @@ properties:
reg:
maxItems: 1
+ vcc-supply: true
+
required:
- compatible
- reg
--
2.39.5
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v5 2/4] w1: ds2482: switch to devm_kzalloc() from kzalloc()
2024-11-29 9:53 [PATCH v5 0/4] Add support for attaching a regulator to w1: ds2482 Kryštof Černý via B4 Relay
2024-11-29 9:53 ` [PATCH v5 1/4] dt-bindings: w1: ds2482: Add vcc-supply property Kryštof Černý via B4 Relay
@ 2024-11-29 9:53 ` Kryštof Černý via B4 Relay
2024-11-29 11:04 ` Krzysztof Kozlowski
2024-11-29 9:53 ` [PATCH v5 3/4] w1: ds2482: Add regulator support Kryštof Černý via B4 Relay
2024-11-29 9:53 ` [PATCH v5 4/4] w1: ds2482: Fix datasheet URL Kryštof Černý via B4 Relay
3 siblings, 1 reply; 6+ messages in thread
From: Kryštof Černý via B4 Relay @ 2024-11-29 9:53 UTC (permalink / raw)
To: Krzysztof Kozlowski, Rob Herring, Conor Dooley, Stefan Wahren,
Stefan Wahren
Cc: Ben Gardner, linux-kernel, devicetree, Kryštof Černý
From: Kryštof Černý <cleverline1mc@gmail.com>
Refactored the driver to devm_kzalloc() from kzalloc(), so the future
driver edits are easier and less error-prone.
Signed-off-by: Kryštof Černý <cleverline1mc@gmail.com>
---
drivers/w1/masters/ds2482.c | 31 ++++++++++---------------------
1 file changed, 10 insertions(+), 21 deletions(-)
diff --git a/drivers/w1/masters/ds2482.c b/drivers/w1/masters/ds2482.c
index a2ecbb863c57f38bffc8e3cd463db1940e603179..b2157869067d52f79d618e163b6cd96dbc7bee60 100644
--- a/drivers/w1/masters/ds2482.c
+++ b/drivers/w1/masters/ds2482.c
@@ -451,11 +451,9 @@ static int ds2482_probe(struct i2c_client *client)
I2C_FUNC_SMBUS_BYTE))
return -ENODEV;
- data = kzalloc(sizeof(struct ds2482_data), GFP_KERNEL);
- if (!data) {
- err = -ENOMEM;
- goto exit;
- }
+ data = devm_kzalloc(&client->dev, sizeof(struct ds2482_data), GFP_KERNEL);
+ if (!data)
+ return -ENOMEM;
data->client = client;
i2c_set_clientdata(client, data);
@@ -463,7 +461,7 @@ static int ds2482_probe(struct i2c_client *client)
/* Reset the device (sets the read_ptr to status) */
if (ds2482_send_cmd(data, DS2482_CMD_RESET) < 0) {
dev_warn(&client->dev, "DS2482 reset failed.\n");
- goto exit_free;
+ return err;
}
/* Sleep at least 525ns to allow the reset to complete */
@@ -474,7 +472,7 @@ static int ds2482_probe(struct i2c_client *client)
if (temp1 != (DS2482_REG_STS_LL | DS2482_REG_STS_RST)) {
dev_warn(&client->dev, "DS2482 reset status "
"0x%02X - not a DS2482\n", temp1);
- goto exit_free;
+ return err;
}
/* Detect the 8-port version */
@@ -505,21 +503,15 @@ static int ds2482_probe(struct i2c_client *client)
err = w1_add_master_device(&data->w1_ch[idx].w1_bm);
if (err) {
data->w1_ch[idx].pdev = NULL;
- goto exit_w1_remove;
+ for (idx = 0; idx < data->w1_count; idx++) {
+ if (data->w1_ch[idx].pdev != NULL)
+ w1_remove_master_device(&data->w1_ch[idx].w1_bm);
+ }
+ return err;
}
}
return 0;
-
-exit_w1_remove:
- for (idx = 0; idx < data->w1_count; idx++) {
- if (data->w1_ch[idx].pdev != NULL)
- w1_remove_master_device(&data->w1_ch[idx].w1_bm);
- }
-exit_free:
- kfree(data);
-exit:
- return err;
}
static void ds2482_remove(struct i2c_client *client)
@@ -532,9 +524,6 @@ static void ds2482_remove(struct i2c_client *client)
if (data->w1_ch[idx].pdev != NULL)
w1_remove_master_device(&data->w1_ch[idx].w1_bm);
}
-
- /* Free the memory */
- kfree(data);
}
/*
--
2.39.5
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v5 3/4] w1: ds2482: Add regulator support
2024-11-29 9:53 [PATCH v5 0/4] Add support for attaching a regulator to w1: ds2482 Kryštof Černý via B4 Relay
2024-11-29 9:53 ` [PATCH v5 1/4] dt-bindings: w1: ds2482: Add vcc-supply property Kryštof Černý via B4 Relay
2024-11-29 9:53 ` [PATCH v5 2/4] w1: ds2482: switch to devm_kzalloc() from kzalloc() Kryštof Černý via B4 Relay
@ 2024-11-29 9:53 ` Kryštof Černý via B4 Relay
2024-11-29 9:53 ` [PATCH v5 4/4] w1: ds2482: Fix datasheet URL Kryštof Černý via B4 Relay
3 siblings, 0 replies; 6+ messages in thread
From: Kryštof Černý via B4 Relay @ 2024-11-29 9:53 UTC (permalink / raw)
To: Krzysztof Kozlowski, Rob Herring, Conor Dooley, Stefan Wahren,
Stefan Wahren
Cc: Ben Gardner, linux-kernel, devicetree, Kryštof Černý
From: Kryštof Černý <cleverline1mc@gmail.com>
Adds a support for attaching a supply regulator.
Signed-off-by: Kryštof Černý <cleverline1mc@gmail.com>
---
drivers/w1/masters/ds2482.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/drivers/w1/masters/ds2482.c b/drivers/w1/masters/ds2482.c
index b2157869067d52f79d618e163b6cd96dbc7bee60..8c34c2e9a5a34e38ed097d7fbd965ec5b75e71d8 100644
--- a/drivers/w1/masters/ds2482.c
+++ b/drivers/w1/masters/ds2482.c
@@ -15,6 +15,7 @@
#include <linux/slab.h>
#include <linux/i2c.h>
#include <linux/delay.h>
+#include <linux/regulator/consumer.h>
#include <linux/w1.h>
@@ -445,6 +446,7 @@ static int ds2482_probe(struct i2c_client *client)
int err = -ENODEV;
int temp1;
int idx;
+ int ret;
if (!i2c_check_functionality(client->adapter,
I2C_FUNC_SMBUS_WRITE_BYTE_DATA |
@@ -455,6 +457,10 @@ static int ds2482_probe(struct i2c_client *client)
if (!data)
return -ENOMEM;
+ ret = devm_regulator_get_enable(&client->dev, "vcc");
+ if (ret)
+ return dev_err_probe(&client->dev, ret, "Failed to enable regulator\n");
+
data->client = client;
i2c_set_clientdata(client, data);
--
2.39.5
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v5 4/4] w1: ds2482: Fix datasheet URL
2024-11-29 9:53 [PATCH v5 0/4] Add support for attaching a regulator to w1: ds2482 Kryštof Černý via B4 Relay
` (2 preceding siblings ...)
2024-11-29 9:53 ` [PATCH v5 3/4] w1: ds2482: Add regulator support Kryštof Černý via B4 Relay
@ 2024-11-29 9:53 ` Kryštof Černý via B4 Relay
3 siblings, 0 replies; 6+ messages in thread
From: Kryštof Černý via B4 Relay @ 2024-11-29 9:53 UTC (permalink / raw)
To: Krzysztof Kozlowski, Rob Herring, Conor Dooley, Stefan Wahren,
Stefan Wahren
Cc: Ben Gardner, linux-kernel, devicetree, Kryštof Černý
From: Kryštof Černý <cleverline1mc@gmail.com>
Current link does redirect to wrong place.
Signed-off-by: Kryštof Černý <cleverline1mc@gmail.com>
---
drivers/w1/masters/ds2482.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/w1/masters/ds2482.c b/drivers/w1/masters/ds2482.c
index 8c34c2e9a5a34e38ed097d7fbd965ec5b75e71d8..117a53d80ce88ebaffea3097079aa54e79d549d3 100644
--- a/drivers/w1/masters/ds2482.c
+++ b/drivers/w1/masters/ds2482.c
@@ -7,7 +7,7 @@
* It is a I2C to 1-wire bridge.
* There are two variations: -100 and -800, which have 1 or 8 1-wire ports.
* The complete datasheet can be obtained from MAXIM's website at:
- * http://www.maxim-ic.com/quick_view2.cfm/qv_pk/4382
+ * https://www.analog.com/en/products/ds2482-100.html
*/
#include <linux/module.h>
--
2.39.5
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v5 2/4] w1: ds2482: switch to devm_kzalloc() from kzalloc()
2024-11-29 9:53 ` [PATCH v5 2/4] w1: ds2482: switch to devm_kzalloc() from kzalloc() Kryštof Černý via B4 Relay
@ 2024-11-29 11:04 ` Krzysztof Kozlowski
0 siblings, 0 replies; 6+ messages in thread
From: Krzysztof Kozlowski @ 2024-11-29 11:04 UTC (permalink / raw)
To: cleverline1mc, Rob Herring, Conor Dooley, Stefan Wahren, Stefan Wahren
Cc: Ben Gardner, linux-kernel, devicetree
On 29/11/2024 10:53, Kryštof Černý via B4 Relay wrote:
> /* Detect the 8-port version */
> @@ -505,21 +503,15 @@ static int ds2482_probe(struct i2c_client *client)
> err = w1_add_master_device(&data->w1_ch[idx].w1_bm);
> if (err) {
> data->w1_ch[idx].pdev = NULL;
> - goto exit_w1_remove;
> + for (idx = 0; idx < data->w1_count; idx++) {
> + if (data->w1_ch[idx].pdev != NULL)
> + w1_remove_master_device(&data->w1_ch[idx].w1_bm);
> + }
> + return err;
> }
> }
>
> return 0;
> -
> -exit_w1_remove:
> - for (idx = 0; idx < data->w1_count; idx++) {
> - if (data->w1_ch[idx].pdev != NULL)
> - w1_remove_master_device(&data->w1_ch[idx].w1_bm);
This exit path should stay.
> - }
> -exit_free:
> - kfree(data);
> -exit:
> - return err;
> }
>
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2024-11-29 11:04 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-11-29 9:53 [PATCH v5 0/4] Add support for attaching a regulator to w1: ds2482 Kryštof Černý via B4 Relay
2024-11-29 9:53 ` [PATCH v5 1/4] dt-bindings: w1: ds2482: Add vcc-supply property Kryštof Černý via B4 Relay
2024-11-29 9:53 ` [PATCH v5 2/4] w1: ds2482: switch to devm_kzalloc() from kzalloc() Kryštof Černý via B4 Relay
2024-11-29 11:04 ` Krzysztof Kozlowski
2024-11-29 9:53 ` [PATCH v5 3/4] w1: ds2482: Add regulator support Kryštof Černý via B4 Relay
2024-11-29 9:53 ` [PATCH v5 4/4] w1: ds2482: Fix datasheet URL Kryštof Černý via B4 Relay
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®