include/linux/w1-gpio.h | 1 +
5 files changed, 99 insertions(+), 9 deletions(-)
---- a/drivers/w1/masters/w1-gpio.c
-+++ b/drivers/w1/masters/w1-gpio.c
+Index: linux-4.9.111/drivers/w1/masters/w1-gpio.c
+===================================================================
+--- linux-4.9.111.orig/drivers/w1/masters/w1-gpio.c
++++ linux-4.9.111/drivers/w1/masters/w1-gpio.c
@@ -23,6 +23,19 @@
#include "../w1.h"
#include "../w1_int.h"
pdev->dev.platform_data = pdata;
-@@ -113,13 +140,15 @@ static int w1_gpio_probe_dt(struct platf
- static int w1_gpio_probe(struct platform_device *pdev)
- {
- struct w1_bus_master *master;
-- struct w1_gpio_platform_data *pdata;
-+ struct w1_gpio_platform_data *pdata = pdev->dev.platform_data;
- int err;
-
-- if (of_have_populated_dt()) {
-- err = w1_gpio_probe_dt(pdev);
-- if (err < 0)
-- return err;
-+ if(pdata == NULL) {
-+ if (of_have_populated_dt()) {
-+ err = w1_gpio_probe_dt(pdev);
-+ if (err < 0)
-+ return err;
-+ }
- }
-
- pdata = dev_get_platdata(&pdev->dev);
-@@ -136,6 +165,22 @@ static int w1_gpio_probe(struct platform
+@@ -135,6 +162,22 @@ static int w1_gpio_probe(struct platform
return -ENOMEM;
}
err = devm_gpio_request(&pdev->dev, pdata->pin, "w1");
if (err) {
dev_err(&pdev->dev, "gpio_request (pin) failed\n");
-@@ -165,6 +210,14 @@ static int w1_gpio_probe(struct platform
+@@ -164,6 +207,14 @@ static int w1_gpio_probe(struct platform
master->set_pullup = w1_gpio_set_pullup;
}
err = w1_add_master_device(master);
if (err) {
dev_err(&pdev->dev, "w1_add_master device failed\n");
-@@ -195,6 +248,10 @@ static int w1_gpio_remove(struct platfor
+@@ -194,6 +245,10 @@ static int w1_gpio_remove(struct platfor
w1_remove_master_device(master);
return 0;
}
---- a/drivers/w1/w1.h
-+++ b/drivers/w1/w1.h
+Index: linux-4.9.111/drivers/w1/w1.h
+===================================================================
+--- linux-4.9.111.orig/drivers/w1/w1.h
++++ linux-4.9.111/drivers/w1/w1.h
@@ -173,6 +173,12 @@ struct w1_bus_master
u8 (*set_pullup)(void *, int);
void (*search)(void *, struct w1_master *,
u8, w1_slave_found_callback);
};
---- a/drivers/w1/w1_int.c
-+++ b/drivers/w1/w1_int.c
+Index: linux-4.9.111/drivers/w1/w1_int.c
+===================================================================
+--- linux-4.9.111.orig/drivers/w1/w1_int.c
++++ linux-4.9.111/drivers/w1/w1_int.c
@@ -122,6 +122,20 @@ int w1_add_master_device(struct w1_bus_m
return(-EINVAL);
}
/* Lock until the device is added (or not) to w1_masters. */
mutex_lock(&w1_mlock);
/* Search for the first available id (starting at 1). */
---- a/drivers/w1/w1_io.c
-+++ b/drivers/w1/w1_io.c
+Index: linux-4.9.111/drivers/w1/w1_io.c
+===================================================================
+--- linux-4.9.111.orig/drivers/w1/w1_io.c
++++ linux-4.9.111/drivers/w1/w1_io.c
@@ -134,10 +134,22 @@ static void w1_pre_write(struct w1_maste
static void w1_post_write(struct w1_master *dev)
{
dev->pullup_duration = 0;
}
}
---- a/include/linux/w1-gpio.h
-+++ b/include/linux/w1-gpio.h
+Index: linux-4.9.111/include/linux/w1-gpio.h
+===================================================================
+--- linux-4.9.111.orig/include/linux/w1-gpio.h
++++ linux-4.9.111/include/linux/w1-gpio.h
@@ -18,6 +18,7 @@
struct w1_gpio_platform_data {
unsigned int pin;