Subject: MAX7301 GPIO: Do not force SPI speed when using OF Platform

From: [email-masked] (leroy christophe)
Date: Wed, 07 Aug 2013 17:20:18 +0200

Hi,

Le 07/08/2013 14:46, Roland Stigge a ?crit :
> Hi,
>
> On 08/07/2013 02:35 PM, leroy christophe wrote:
>>>> spi-bits = <16>;
>>> I tried this, both in the device's and in the controller's node. But it
>>> didn't work. However, as described, I didn't expect it to work, because
>>> there is no code present to handle "spi-bits". At least not in 3.10.
>>>
>>> Am I missing something? Otherwise, maybe something of the tree that you
>>> are talking about is missing from mainline still?
>>>
>>>
>> Strange. I'm using 3.8.13
>> I have it handled in drivers/spi/spi.c in function
>> of_register_spi_devices()
> 3.8.13's (as well as newer ones') drivers/spi/spi.c doesn't handle
> "spi-bits", see also
>
> https://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/tree/drivers/spi/spi.c?h=linux-3.8.y
>
> Maybe you have additional patches that are not in mainline, yet?
>
> Thanks,
>
> Roland
>
Yes you are right, I have the attached patch in addition which have been 
in our code for long time and which has never been submitted for 
inclusion in the mainline kernel.
Sorry about that, I will submit it.

Regards
Christophe
-------------- next part --------------
--- linux-3.8.13/drivers/spi/spi.c	2013-05-11 22:57:46.000000000 +0200
+++ linux/drivers/spi/spi.c	2013-08-06 18:15:34.000000000 +0200
@@ -870,6 +870,11 @@
 		if (of_find_property(nc, "spi-3wire", NULL))
 			spi->mode |= SPI_3WIRE;
 
+		/* Bits per word */
+		prop = of_get_property(nc, "spi-bits", &len);
+		if (prop && len >= sizeof(*prop)) {
+			spi->bits_per_word = prop[0];
+		}
 		/* Device speed */
 		prop = of_get_property(nc, "spi-max-frequency", &len);
 		if (!prop || len < sizeof(*prop)) {