Re: [PATCH resend 2/2] SPI: spi-gpio: Add DT bindings

2012-09-05 Thread Daniel Mack
On 05.09.2012 05:24, Mark Brown wrote:
> On Mon, Sep 03, 2012 at 01:50:34PM +0200, Linus Walleij wrote:
>> On Sun, Sep 2, 2012 at 10:17 PM, Daniel Mack  wrote:
> 
>>> Hmm, I don't know whether anyone took those patches yet? Mark?
> 
>> Mark better take them, ping on Mark.
> 
> IIRC I did reply saying that the patches didn't apply for me, in any
> case I don't have them any more - can you please check that they apply
> against my -next branch and resend?

Sure, will do. They applied cleanly on top of the spi-next branch
though. Nevermind :)


Daniel

--
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
___
spi-devel-general mailing list
spi-devel-general@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/spi-devel-general


Re: [PATCH resend 2/2] SPI: spi-gpio: Add DT bindings

2012-09-04 Thread Mark Brown
On Mon, Sep 03, 2012 at 01:50:34PM +0200, Linus Walleij wrote:
> On Sun, Sep 2, 2012 at 10:17 PM, Daniel Mack  wrote:

> > Hmm, I don't know whether anyone took those patches yet? Mark?

> Mark better take them, ping on Mark.

IIRC I did reply saying that the patches didn't apply for me, in any
case I don't have them any more - can you please check that they apply
against my -next branch and resend?

  git://git.kernel.org/pub/scm/kernel/git/broonie/misc.git spi-next

--
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
___
spi-devel-general mailing list
spi-devel-general@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/spi-devel-general


Re: [PATCH resend 2/2] SPI: spi-gpio: Add DT bindings

2012-09-03 Thread Linus Walleij
On Sun, Sep 2, 2012 at 10:17 PM, Daniel Mack  wrote:
> On 05.08.2012 21:12, Linus Walleij wrote:
>> On Sun, Aug 5, 2012 at 1:57 PM, Daniel Mack  wrote:
>>
 Acked-by: Linus Walleij 
>>>
>>> Ok, thanks. Mark, did the patches reach you this time? I think they
>>> should go thru the SPI tree.
>>
>> Yeah no problem, Mark is always faster than me ...
>
> Hmm, I don't know whether anyone took those patches yet? Mark?

Mark better take them, ping on Mark.

Yours,
Linus Walleij

--
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
___
spi-devel-general mailing list
spi-devel-general@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/spi-devel-general


Re: [PATCH resend 2/2] SPI: spi-gpio: Add DT bindings

2012-09-02 Thread Daniel Mack
On 05.08.2012 21:12, Linus Walleij wrote:
> On Sun, Aug 5, 2012 at 1:57 PM, Daniel Mack  wrote:
> 
>>> Acked-by: Linus Walleij 
>>
>> Ok, thanks. Mark, did the patches reach you this time? I think they
>> should go thru the SPI tree.
> 
> Yeah no problem, Mark is always faster than me ...

Hmm, I don't know whether anyone took those patches yet? Mark?


Thanks,
Daniel


--
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
___
spi-devel-general mailing list
spi-devel-general@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/spi-devel-general


Re: [PATCH resend 2/2] SPI: spi-gpio: Add DT bindings

2012-08-05 Thread Linus Walleij
On Sun, Aug 5, 2012 at 1:57 PM, Daniel Mack  wrote:

>> Acked-by: Linus Walleij 
>
> Ok, thanks. Mark, did the patches reach you this time? I think they
> should go thru the SPI tree.

Yeah no problem, Mark is always faster than me ...

Yours,
Linus Walleij

--
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
___
spi-devel-general mailing list
spi-devel-general@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/spi-devel-general


Re: [PATCH resend 2/2] SPI: spi-gpio: Add DT bindings

2012-08-05 Thread Daniel Mack
On 05.08.2012 02:14, Linus Walleij wrote:
> On Wed, Aug 1, 2012 at 10:57 PM, Daniel Mack  wrote:
> 
>> This patch adds DT bindings to the spi-gpio driver and some
>> documentation about how to use it.
>>
>> Signed-off-by: Daniel Mack 
>> Cc: Mark Brown 
>> Cc: Grant Likely 
>> Cc: Linus Walleij 
> 
> From a GPIO point of view this looks good to me.
> 
> Acked-by: Linus Walleij 

Ok, thanks. Mark, did the patches reach you this time? I think they
should go thru the SPI tree.


Thanks,
Daniel


--
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
___
spi-devel-general mailing list
spi-devel-general@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/spi-devel-general


Re: [PATCH resend 2/2] SPI: spi-gpio: Add DT bindings

2012-08-04 Thread Linus Walleij
On Wed, Aug 1, 2012 at 10:57 PM, Daniel Mack  wrote:

> This patch adds DT bindings to the spi-gpio driver and some
> documentation about how to use it.
>
> Signed-off-by: Daniel Mack 
> Cc: Mark Brown 
> Cc: Grant Likely 
> Cc: Linus Walleij 

>From a GPIO point of view this looks good to me.

Acked-by: Linus Walleij 

Yours,
Linus Walleij

--
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
___
spi-devel-general mailing list
spi-devel-general@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/spi-devel-general


[PATCH resend 2/2] SPI: spi-gpio: Add DT bindings

2012-08-01 Thread Daniel Mack
This patch adds DT bindings to the spi-gpio driver and some
documentation about how to use it.

Signed-off-by: Daniel Mack 
Cc: Mark Brown 
Cc: Grant Likely 
Cc: Linus Walleij 
---
 Documentation/devicetree/bindings/spi/spi-gpio.txt | 29 +++
 drivers/spi/spi-gpio.c | 99 +-
 2 files changed, 125 insertions(+), 3 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/spi/spi-gpio.txt

diff --git a/Documentation/devicetree/bindings/spi/spi-gpio.txt 
b/Documentation/devicetree/bindings/spi/spi-gpio.txt
new file mode 100644
index 000..8a824be
--- /dev/null
+++ b/Documentation/devicetree/bindings/spi/spi-gpio.txt
@@ -0,0 +1,29 @@
+SPI-GPIO devicetree bindings
+
+Required properties:
+
+ - compatible: should be set to "spi-gpio"
+ - #address-cells: should be set to <0x1>
+ - ranges
+ - gpio-sck: GPIO spec for the SCK line to use
+ - gpio-miso: GPIO spec for the MISO line to use
+ - gpio-mosi: GPIO spec for the MOSI line to use
+ - cs-gpios: GPIOs to use for chipselect lines
+ - num-chipselects: number of chipselect lines
+
+Example:
+
+   spi {
+   compatible = "spi-gpio";
+   #address-cells = <0x1>;
+   ranges;
+
+   gpio-sck = <&gpio 95 0>;
+   gpio-miso = <&gpio 98 0>;
+   gpio-mosi = <&gpio 97 0>;
+   cs-gpios = <&gpio 125 0>;
+   num-chipselects = <1>;
+
+   /* clients */
+   };
+
diff --git a/drivers/spi/spi-gpio.c b/drivers/spi/spi-gpio.c
index ff7263c..aed1615 100644
--- a/drivers/spi/spi-gpio.c
+++ b/drivers/spi/spi-gpio.c
@@ -22,6 +22,8 @@
 #include 
 #include 
 #include 
+#include 
+#include 
 
 #include 
 #include 
@@ -232,13 +234,27 @@ static void spi_gpio_chipselect(struct spi_device *spi, 
int is_active)
 
 static int spi_gpio_setup(struct spi_device *spi)
 {
-   unsigned intcs = (unsigned int) spi->controller_data;
+   unsigned intcs;
int status = 0;
struct spi_gpio *spi_gpio = spi_to_spi_gpio(spi);
+   struct device_node  *np = spi->master->dev.of_node;
 
if (spi->bits_per_word > 32)
return -EINVAL;
 
+   if (np) {
+   /*
+* In DT environments, the CS GPIOs have already been
+* initialized from the "cs-gpios" property of the node.
+*/
+   cs = spi_gpio->cs_gpios[spi->chip_select];
+   } else {
+   /*
+* ... otherwise, take it from spi->controller_data
+*/
+   cs = (unsigned int) spi->controller_data;
+   }
+
if (!spi->controller_state) {
if (cs != SPI_GPIO_NO_CHIPSELECT) {
status = gpio_request(cs, dev_name(&spi->dev));
@@ -250,6 +266,7 @@ static int spi_gpio_setup(struct spi_device *spi)
}
if (!status) {
status = spi_bitbang_setup(spi);
+   /* in case it was initialized from static board data */
spi_gpio->cs_gpios[spi->chip_select] = cs;
}
 
@@ -326,6 +343,55 @@ done:
return value;
 }
 
+#ifdef CONFIG_OF
+static struct of_device_id spi_gpio_dt_ids[] = {
+   { .compatible = "spi-gpio" },
+   {}
+};
+MODULE_DEVICE_TABLE(of, spi_gpio_dt_ids);
+
+static int spi_gpio_probe_dt(struct platform_device *pdev)
+{
+   int ret;
+   u32 tmp;
+   struct spi_gpio_platform_data   *pdata;
+   struct device_node *np = pdev->dev.of_node;
+   const struct of_device_id *of_id =
+   of_match_device(spi_gpio_dt_ids, &pdev->dev);
+
+   if (!of_id)
+   return 0;
+
+   pdata = devm_kzalloc(&pdev->dev, sizeof(*pdata), GFP_KERNEL);
+   if (!pdata)
+   return -ENOMEM;
+
+   pdata->sck = of_get_named_gpio(np, "gpio-sck", 0);
+   pdata->miso = of_get_named_gpio(np, "gpio-miso", 0);
+   pdata->mosi = of_get_named_gpio(np, "gpio-mosi", 0);
+
+   ret = of_property_read_u32(np, "num-chipselects", &tmp);
+   if (ret < 0) {
+   dev_err(&pdev->dev, "num-chipselects property not found\n");
+   goto error_free;
+   }
+
+   pdata->num_chipselect = tmp;
+   pdev->dev.platform_data = pdata;
+
+   return 1;
+
+error_free:
+   devm_kfree(&pdev->dev, pdata);
+   return ret;
+}
+#else
+static inline int spi_probe_dt(struct platform_device *)
+{
+   return 0;
+}
+#endif
+
 static int __devinit spi_gpio_probe(struct platform_device *pdev)
 {
int status;
@@ -333,6 +399,13 @@ static int __devinit spi_gpio_probe(struct platform_device 
*pdev)
struct spi_gpio *spi_gpio;
struct spi_gpio_platform_data   *pdata;
u16 master_flags = 0;
+   bool use_of = 0;
+
+   status = spi_gpio_probe_dt(pdev);
+   if (status < 0)
+   return status;
+   if (status > 0