[PATCHv2 4/5] wl1251: spi: add device tree support

2014-02-14 Thread Sebastian Reichel
Add device tree support for the spi variant of wl1251.

Signed-off-by: Sebastian Reichel 
---
 drivers/net/wireless/ti/wl1251/spi.c | 23 +--
 1 file changed, 17 insertions(+), 6 deletions(-)

diff --git a/drivers/net/wireless/ti/wl1251/spi.c 
b/drivers/net/wireless/ti/wl1251/spi.c
index 0a8aacc..b06d36d 100644
--- a/drivers/net/wireless/ti/wl1251/spi.c
+++ b/drivers/net/wireless/ti/wl1251/spi.c
@@ -27,6 +27,8 @@
 #include 
 #include 
 #include 
+#include 
+#include 
 #include 
 
 #include "wl1251.h"
@@ -240,13 +242,13 @@ static const struct wl1251_if_operations wl1251_spi_ops = 
{
 
 static int wl1251_spi_probe(struct spi_device *spi)
 {
-   struct wl1251_platform_data *pdata;
+   struct wl1251_platform_data *pdata = dev_get_platdata(>dev);
+   struct device_node *np = spi->dev.of_node;
struct ieee80211_hw *hw;
struct wl1251 *wl;
int ret;
 
-   pdata = dev_get_platdata(>dev);
-   if (!pdata) {
+   if (!np && !pdata) {
wl1251_error("no platform data");
return -ENODEV;
}
@@ -273,7 +275,18 @@ static int wl1251_spi_probe(struct spi_device *spi)
goto out_free;
}
 
-   wl->power_gpio = pdata->power_gpio;
+   if (np) {
+   wl->use_eeprom = of_property_read_bool(np, 
"ti,wl1251-has-eeprom");
+   wl->power_gpio = of_get_named_gpio(np, "ti,power-gpio", 0);
+   } else if (pdata) {
+   wl->power_gpio = pdata->power_gpio;
+   wl->use_eeprom = pdata->use_eeprom;
+   }
+
+   if (wl->power_gpio == -EPROBE_DEFER) {
+   ret = -EPROBE_DEFER;
+   goto out_free;
+   }
 
if (gpio_is_valid(wl->power_gpio)) {
ret = devm_gpio_request_one(>dev, wl->power_gpio,
@@ -295,8 +308,6 @@ static int wl1251_spi_probe(struct spi_device *spi)
goto out_free;
}
 
-   wl->use_eeprom = pdata->use_eeprom;
-
irq_set_status_flags(wl->irq, IRQ_NOAUTOEN);
ret = devm_request_irq(>dev, wl->irq, wl1251_irq, 0,
DRIVER_NAME, wl);
-- 
1.8.5.3

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCHv2 4/5] wl1251: spi: add device tree support

2014-02-14 Thread Sebastian Reichel
Add device tree support for the spi variant of wl1251.

Signed-off-by: Sebastian Reichel s...@debian.org
---
 drivers/net/wireless/ti/wl1251/spi.c | 23 +--
 1 file changed, 17 insertions(+), 6 deletions(-)

diff --git a/drivers/net/wireless/ti/wl1251/spi.c 
b/drivers/net/wireless/ti/wl1251/spi.c
index 0a8aacc..b06d36d 100644
--- a/drivers/net/wireless/ti/wl1251/spi.c
+++ b/drivers/net/wireless/ti/wl1251/spi.c
@@ -27,6 +27,8 @@
 #include linux/spi/spi.h
 #include linux/wl12xx.h
 #include linux/gpio.h
+#include linux/of.h
+#include linux/of_gpio.h
 #include linux/regulator/consumer.h
 
 #include wl1251.h
@@ -240,13 +242,13 @@ static const struct wl1251_if_operations wl1251_spi_ops = 
{
 
 static int wl1251_spi_probe(struct spi_device *spi)
 {
-   struct wl1251_platform_data *pdata;
+   struct wl1251_platform_data *pdata = dev_get_platdata(spi-dev);
+   struct device_node *np = spi-dev.of_node;
struct ieee80211_hw *hw;
struct wl1251 *wl;
int ret;
 
-   pdata = dev_get_platdata(spi-dev);
-   if (!pdata) {
+   if (!np  !pdata) {
wl1251_error(no platform data);
return -ENODEV;
}
@@ -273,7 +275,18 @@ static int wl1251_spi_probe(struct spi_device *spi)
goto out_free;
}
 
-   wl-power_gpio = pdata-power_gpio;
+   if (np) {
+   wl-use_eeprom = of_property_read_bool(np, 
ti,wl1251-has-eeprom);
+   wl-power_gpio = of_get_named_gpio(np, ti,power-gpio, 0);
+   } else if (pdata) {
+   wl-power_gpio = pdata-power_gpio;
+   wl-use_eeprom = pdata-use_eeprom;
+   }
+
+   if (wl-power_gpio == -EPROBE_DEFER) {
+   ret = -EPROBE_DEFER;
+   goto out_free;
+   }
 
if (gpio_is_valid(wl-power_gpio)) {
ret = devm_gpio_request_one(spi-dev, wl-power_gpio,
@@ -295,8 +308,6 @@ static int wl1251_spi_probe(struct spi_device *spi)
goto out_free;
}
 
-   wl-use_eeprom = pdata-use_eeprom;
-
irq_set_status_flags(wl-irq, IRQ_NOAUTOEN);
ret = devm_request_irq(spi-dev, wl-irq, wl1251_irq, 0,
DRIVER_NAME, wl);
-- 
1.8.5.3

--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCHv2 4/5] wl1251: spi: add device tree support

2013-12-05 Thread Sebastian Reichel
Add device tree support for the spi variant of wl1251.

Signed-off-by: Sebastian Reichel 
---
 drivers/net/wireless/ti/wl1251/spi.c | 23 +--
 1 file changed, 17 insertions(+), 6 deletions(-)

diff --git a/drivers/net/wireless/ti/wl1251/spi.c 
b/drivers/net/wireless/ti/wl1251/spi.c
index 0a8aacc..b06d36d 100644
--- a/drivers/net/wireless/ti/wl1251/spi.c
+++ b/drivers/net/wireless/ti/wl1251/spi.c
@@ -27,6 +27,8 @@
 #include 
 #include 
 #include 
+#include 
+#include 
 #include 
 
 #include "wl1251.h"
@@ -240,13 +242,13 @@ static const struct wl1251_if_operations wl1251_spi_ops = 
{
 
 static int wl1251_spi_probe(struct spi_device *spi)
 {
-   struct wl1251_platform_data *pdata;
+   struct wl1251_platform_data *pdata = dev_get_platdata(>dev);
+   struct device_node *np = spi->dev.of_node;
struct ieee80211_hw *hw;
struct wl1251 *wl;
int ret;
 
-   pdata = dev_get_platdata(>dev);
-   if (!pdata) {
+   if (!np && !pdata) {
wl1251_error("no platform data");
return -ENODEV;
}
@@ -273,7 +275,18 @@ static int wl1251_spi_probe(struct spi_device *spi)
goto out_free;
}
 
-   wl->power_gpio = pdata->power_gpio;
+   if (np) {
+   wl->use_eeprom = of_property_read_bool(np, 
"ti,wl1251-has-eeprom");
+   wl->power_gpio = of_get_named_gpio(np, "ti,power-gpio", 0);
+   } else if (pdata) {
+   wl->power_gpio = pdata->power_gpio;
+   wl->use_eeprom = pdata->use_eeprom;
+   }
+
+   if (wl->power_gpio == -EPROBE_DEFER) {
+   ret = -EPROBE_DEFER;
+   goto out_free;
+   }
 
if (gpio_is_valid(wl->power_gpio)) {
ret = devm_gpio_request_one(>dev, wl->power_gpio,
@@ -295,8 +308,6 @@ static int wl1251_spi_probe(struct spi_device *spi)
goto out_free;
}
 
-   wl->use_eeprom = pdata->use_eeprom;
-
irq_set_status_flags(wl->irq, IRQ_NOAUTOEN);
ret = devm_request_irq(>dev, wl->irq, wl1251_irq, 0,
DRIVER_NAME, wl);
-- 
1.8.4.3

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCHv2 4/5] wl1251: spi: add device tree support

2013-12-05 Thread Sebastian Reichel
Add device tree support for the spi variant of wl1251.

Signed-off-by: Sebastian Reichel s...@debian.org
---
 drivers/net/wireless/ti/wl1251/spi.c | 23 +--
 1 file changed, 17 insertions(+), 6 deletions(-)

diff --git a/drivers/net/wireless/ti/wl1251/spi.c 
b/drivers/net/wireless/ti/wl1251/spi.c
index 0a8aacc..b06d36d 100644
--- a/drivers/net/wireless/ti/wl1251/spi.c
+++ b/drivers/net/wireless/ti/wl1251/spi.c
@@ -27,6 +27,8 @@
 #include linux/spi/spi.h
 #include linux/wl12xx.h
 #include linux/gpio.h
+#include linux/of.h
+#include linux/of_gpio.h
 #include linux/regulator/consumer.h
 
 #include wl1251.h
@@ -240,13 +242,13 @@ static const struct wl1251_if_operations wl1251_spi_ops = 
{
 
 static int wl1251_spi_probe(struct spi_device *spi)
 {
-   struct wl1251_platform_data *pdata;
+   struct wl1251_platform_data *pdata = dev_get_platdata(spi-dev);
+   struct device_node *np = spi-dev.of_node;
struct ieee80211_hw *hw;
struct wl1251 *wl;
int ret;
 
-   pdata = dev_get_platdata(spi-dev);
-   if (!pdata) {
+   if (!np  !pdata) {
wl1251_error(no platform data);
return -ENODEV;
}
@@ -273,7 +275,18 @@ static int wl1251_spi_probe(struct spi_device *spi)
goto out_free;
}
 
-   wl-power_gpio = pdata-power_gpio;
+   if (np) {
+   wl-use_eeprom = of_property_read_bool(np, 
ti,wl1251-has-eeprom);
+   wl-power_gpio = of_get_named_gpio(np, ti,power-gpio, 0);
+   } else if (pdata) {
+   wl-power_gpio = pdata-power_gpio;
+   wl-use_eeprom = pdata-use_eeprom;
+   }
+
+   if (wl-power_gpio == -EPROBE_DEFER) {
+   ret = -EPROBE_DEFER;
+   goto out_free;
+   }
 
if (gpio_is_valid(wl-power_gpio)) {
ret = devm_gpio_request_one(spi-dev, wl-power_gpio,
@@ -295,8 +308,6 @@ static int wl1251_spi_probe(struct spi_device *spi)
goto out_free;
}
 
-   wl-use_eeprom = pdata-use_eeprom;
-
irq_set_status_flags(wl-irq, IRQ_NOAUTOEN);
ret = devm_request_irq(spi-dev, wl-irq, wl1251_irq, 0,
DRIVER_NAME, wl);
-- 
1.8.4.3

--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/