[PATCH] w1: ds2482: add support for ds2482-101 sleep pin
From: Steffen Trumtrar <hidden>
Date: 2014-07-09 13:58:33
Also in:
lkml
Subsystem:
open firmware and flattened device tree bindings, the rest, w1 dallas's 1-wire bus · Maintainers:
Rob Herring, Krzysztof Kozlowski, Conor Dooley, Linus Torvalds, Krzysztof Kozlowski
The ds2482-101 version of the chip has an active-low sleep pin. Add this as a gpio to the probe function and describe the DT binding accordingly. If the pin wouldn't be added and pulled high, the device would not be able to be probed. Signed-off-by: Steffen Trumtrar <redacted> --- Documentation/devicetree/bindings/w1/ds2482.txt | 18 ++++++++++++++++++ drivers/w1/masters/ds2482.c | 9 +++++++++ 2 files changed, 27 insertions(+) create mode 100644 Documentation/devicetree/bindings/w1/ds2482.txt
diff --git a/Documentation/devicetree/bindings/w1/ds2482.txt b/Documentation/devicetree/bindings/w1/ds2482.txt
new file mode 100644
index 0000000..e065207
--- /dev/null
+++ b/Documentation/devicetree/bindings/w1/ds2482.txt@@ -0,0 +1,18 @@ +ds2482 devicetree bindings + +Required properties: + + - compatible: "dallas,ds2482" + +Optional properties: + + - sleep-gpios: if specified, the ds2482 has a low-active sleep-pin (ds2482-101). + +Example: + + 1wire@18 { + compatible = "dallas,ds2482"; + reg = <0x18>; + sleep-gpios = <&gpio4 2 0>; + }; +
diff --git a/drivers/w1/masters/ds2482.c b/drivers/w1/masters/ds2482.c
index e033491..b6b6024 100644
--- a/drivers/w1/masters/ds2482.c
+++ b/drivers/w1/masters/ds2482.c@@ -18,6 +18,7 @@ #include <linux/slab.h> #include <linux/i2c.h> #include <linux/delay.h> +#include <linux/gpio/consumer.h> #include <asm/delay.h> #include "../w1.h"
@@ -128,6 +129,7 @@ struct ds2482_data { u8 channel; u8 read_prt; /* see DS2482_PTR_CODE_xxx */ u8 reg_config; + struct gpio_desc *slpz_gpio; };
@@ -449,6 +451,7 @@ static int ds2482_probe(struct i2c_client *client, const struct i2c_device_id *id) { struct ds2482_data *data; + struct gpio_desc *gpio; int err = -ENODEV; int temp1; int idx;
@@ -466,6 +469,12 @@ static int ds2482_probe(struct i2c_client *client, data->client = client; i2c_set_clientdata(client, data); + gpio = devm_gpiod_get(&client->dev, "sleep"); + if (!IS_ERR(gpio)) { + data->slpz_gpio = gpio; + gpiod_direction_output(data->slpz_gpio, 1); + } + /* 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");
--
2.0.0
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html