diff mbox

[2/3] ieee802154: Add device tree documentation for CA8210

Message ID 20161024150449.11132-3-h.morris@cascoda.com (mailing list archive)
State Superseded
Delegated to: Stefan Schmidt
Headers show

Commit Message

harrymorris12@gmail.com Oct. 24, 2016, 3:04 p.m. UTC
From: Harry Morris <h.morris@cascoda.com>

Signed-off-by: Harry Morris <h.morris@cascoda.com>
---
 .../devicetree/bindings/net/ieee802154/ca8210.txt  | 28 ++++++++++++++++++++++
 .../devicetree/bindings/vendor-prefixes.txt        |  1 +
 2 files changed, 29 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/net/ieee802154/ca8210.txt

Comments

Stefan Schmidt Oct. 25, 2016, 3:54 p.m. UTC | #1
Hello.

On 24/10/16 17:04, harrymorris12@gmail.com wrote:
> From: Harry Morris <h.morris@cascoda.com>
>
> Signed-off-by: Harry Morris <h.morris@cascoda.com>
> ---
>  .../devicetree/bindings/net/ieee802154/ca8210.txt  | 28 ++++++++++++++++++++++
>  .../devicetree/bindings/vendor-prefixes.txt        |  1 +
>  2 files changed, 29 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/net/ieee802154/ca8210.txt
>
> diff --git a/Documentation/devicetree/bindings/net/ieee802154/ca8210.txt b/Documentation/devicetree/bindings/net/ieee802154/ca8210.txt
> new file mode 100644
> index 0000000..0297ce8
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/net/ieee802154/ca8210.txt
> @@ -0,0 +1,28 @@
> +* CA8210 IEEE 802.15.4 *
> +
> +Required properties:
> +	- compatible:           should be "cascoda,ca8210"


Start should with a capital S here as you do on all other lines. Total 
nitpick. :)

> +	- reg:                  Controlling chip select
> +	- spi-max-frequency:    Maximum clock speed, should be *less than*
> +	                        4000000
> +	- spi-cpol:             Invert clock polarity

Is this a mandatory field for the bindings? I would expect one being the 
default and used while the other one being an optional property and only 
used when the hardware setup needs this. Does this make sense?


> +	- reset-gpio:           GPIO attached to reset
> +	- irq-gpio:             GPIO attached to IRQ
> +Optional properties:
> +	- extclock-enable:      Include for the ca8210 to route its 16MHz clock
> +	                        to an output
> +	- extclock-freq:        Frequency in Hz of the external clock
> +	- extclock-gpio:        GPIO of the ca8210 to output the clock on
> +
> +Example:
> +	ca8210@0 {
> +		compatible = "cascoda,ca8210";
> +		reg = <0>;
> +		spi-max-frequency = <3000000>;
> +		spi-cpol;
> +		reset-gpio = <&gpio1 1 GPIO_ACTIVE_HIGH>;
> +		irq-gpio = <&gpio1 2 GPIO_ACTIVE_HIGH>;
> +		extclock-enable;
> +		extclock-freq = 16000000;
> +		extclock-gpio = 2;
> +	};
> diff --git a/Documentation/devicetree/bindings/vendor-prefixes.txt b/Documentation/devicetree/bindings/vendor-prefixes.txt
> index d415b38..725a996 100644
> --- a/Documentation/devicetree/bindings/vendor-prefixes.txt
> +++ b/Documentation/devicetree/bindings/vendor-prefixes.txt
> @@ -26,6 +26,7 @@ brcm	Broadcom Corporation
>  buffalo	Buffalo, Inc.
>  calxeda	Calxeda
>  capella	Capella Microsystems, Inc
> +cascoda	Cascoda Ltd.
>  cavium	Cavium, Inc.
>  cdns	Cadence Design Systems Inc.
>  chrp	Common Hardware Reference Platform
>

The rest looks good.

regards
Stefan Schmidt
--
To unsubscribe from this list: send the line "unsubscribe linux-wpan" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Harry Morris Oct. 25, 2016, 4:36 p.m. UTC | #2
Hi Stefan,

On 25/10/2016 16:54, Stefan Schmidt wrote:
> Start should with a capital S here as you do on all other lines. Total 
> nitpick. :)
Perfect, I'm sure there's a few more elsewhere I've missed
>> +    - reg:                  Controlling chip select
>> +    - spi-max-frequency:    Maximum clock speed, should be *less than*
>> +                            4000000
>> +    - spi-cpol:             Invert clock polarity
>
> Is this a mandatory field for the bindings? I would expect one being 
> the default and used while the other one being an optional property 
> and only used when the hardware setup needs this. Does this make sense?
I'm afraid not, my understanding is that the spi-cpol property is used 
by the spi master driver rather than the device driver, so if I need 
CPOL=1 (which the CA8210 always does) then the user doesn't have a 
choice but to specify spi-cpol here? As omitting would cause the spi 
master to use CPOL=0 for the attached slave.

Regards,
Harry
--
To unsubscribe from this list: send the line "unsubscribe linux-wpan" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Stefan Schmidt Oct. 26, 2016, 10:33 p.m. UTC | #3
Hello.

On 25/10/16 18:36, Harry Morris wrote:
> Hi Stefan,
>
> On 25/10/2016 16:54, Stefan Schmidt wrote:
>> Start should with a capital S here as you do on all other lines. Total
>> nitpick. :)
> Perfect, I'm sure there's a few more elsewhere I've missed
>>> +    - reg:                  Controlling chip select
>>> +    - spi-max-frequency:    Maximum clock speed, should be *less than*
>>> +                            4000000
>>> +    - spi-cpol:             Invert clock polarity
>>
>> Is this a mandatory field for the bindings? I would expect one being
>> the default and used while the other one being an optional property
>> and only used when the hardware setup needs this. Does this make sense?
> I'm afraid not, my understanding is that the spi-cpol property is used
> by the spi master driver rather than the device driver, so if I need
> CPOL=1 (which the CA8210 always does) then the user doesn't have a
> choice but to specify spi-cpol here? As omitting would cause the spi
> master to use CPOL=0 for the attached slave.

I would expect there is a way to set this in the driver itself as it is 
the default and the only working mode. Having to set it in the device 
tree bindings seems odd as this is really no option or parameter that 
can be changed.

Did you look around in other SPI driver so see how they handle such a 
situation?

regards
Stefan Schmidt
--
To unsubscribe from this list: send the line "unsubscribe linux-wpan" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Stefan Schmidt Oct. 26, 2016, 10:51 p.m. UTC | #4
Hello.

On 27/10/16 00:33, Stefan Schmidt wrote:
> Hello.
>
> On 25/10/16 18:36, Harry Morris wrote:
>> Hi Stefan,
>>
>> On 25/10/2016 16:54, Stefan Schmidt wrote:
>>> Start should with a capital S here as you do on all other lines. Total
>>> nitpick. :)
>> Perfect, I'm sure there's a few more elsewhere I've missed
>>>> +    - reg:                  Controlling chip select
>>>> +    - spi-max-frequency:    Maximum clock speed, should be *less than*
>>>> +                            4000000
>>>> +    - spi-cpol:             Invert clock polarity
>>>
>>> Is this a mandatory field for the bindings? I would expect one being
>>> the default and used while the other one being an optional property
>>> and only used when the hardware setup needs this. Does this make sense?
>> I'm afraid not, my understanding is that the spi-cpol property is used
>> by the spi master driver rather than the device driver, so if I need
>> CPOL=1 (which the CA8210 always does) then the user doesn't have a
>> choice but to specify spi-cpol here? As omitting would cause the spi
>> master to use CPOL=0 for the attached slave.
>
> I would expect there is a way to set this in the driver itself as it is
> the default and the only working mode. Having to set it in the device
> tree bindings seems odd as this is really no option or parameter that
> can be changed.
>
> Did you look around in other SPI driver so see how they handle such a
> situation?

I did look around myself quickly and it seems indeed the way to set the 
clock polarity. Just keep it. Maybe adjust the description to "Requires 
invert clock polarity".

regards
Stefan Schmidt
--
To unsubscribe from this list: send the line "unsubscribe linux-wpan" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Harry Morris Oct. 27, 2016, 9:52 a.m. UTC | #5
Hi Stefan,

On 26/10/2016 23:51, Stefan Schmidt wrote:
> Hello.
>
> On 27/10/16 00:33, Stefan Schmidt wrote:
>> Hello.
>>
>> On 25/10/16 18:36, Harry Morris wrote:
>>> Hi Stefan,
>>>
>>> On 25/10/2016 16:54, Stefan Schmidt wrote:
>>>> Start should with a capital S here as you do on all other lines. Total
>>>> nitpick. :)
>>> Perfect, I'm sure there's a few more elsewhere I've missed
>>>>> +    - reg: Controlling chip select
>>>>> +    - spi-max-frequency:    Maximum clock speed, should be *less 
>>>>> than*
>>>>> +                            4000000
>>>>> +    - spi-cpol:             Invert clock polarity
>>>>
>>>> Is this a mandatory field for the bindings? I would expect one being
>>>> the default and used while the other one being an optional property
>>>> and only used when the hardware setup needs this. Does this make 
>>>> sense?
>>> I'm afraid not, my understanding is that the spi-cpol property is used
>>> by the spi master driver rather than the device driver, so if I need
>>> CPOL=1 (which the CA8210 always does) then the user doesn't have a
>>> choice but to specify spi-cpol here? As omitting would cause the spi
>>> master to use CPOL=0 for the attached slave.
>>
>> I would expect there is a way to set this in the driver itself as it is
>> the default and the only working mode. Having to set it in the device
>> tree bindings seems odd as this is really no option or parameter that
>> can be changed.
>>
>> Did you look around in other SPI driver so see how they handle such a
>> situation?
>
> I did look around myself quickly and it seems indeed the way to set 
> the clock polarity. Just keep it. Maybe adjust the description to 
> "Requires invert clock polarity".

I'm not sure which is the "correct" approach but I think you're right 
actually, I can indeed set the mode in the spi_device struct from the 
driver, eliminating the need to invert the polarity in the device tree. 
Since the mode is fixed for the hardware I agree it makes more sense to 
set it in the driver rather than the device tree. I'm happy to make the 
change.

Thanks,

Harry

--
To unsubscribe from this list: send the line "unsubscribe linux-wpan" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Stefan Schmidt Oct. 27, 2016, 10:12 a.m. UTC | #6
Hello.

On 27/10/16 11:52, Harry Morris wrote:
> Hi Stefan,
>
> On 26/10/2016 23:51, Stefan Schmidt wrote:
>> Hello.
>>
>> On 27/10/16 00:33, Stefan Schmidt wrote:
>>> Hello.
>>>
>>> On 25/10/16 18:36, Harry Morris wrote:
>>>> Hi Stefan,
>>>>
>>>> On 25/10/2016 16:54, Stefan Schmidt wrote:
>>>>> Start should with a capital S here as you do on all other lines. Total
>>>>> nitpick. :)
>>>> Perfect, I'm sure there's a few more elsewhere I've missed
>>>>>> +    - reg: Controlling chip select
>>>>>> +    - spi-max-frequency:    Maximum clock speed, should be *less
>>>>>> than*
>>>>>> +                            4000000
>>>>>> +    - spi-cpol:             Invert clock polarity
>>>>>
>>>>> Is this a mandatory field for the bindings? I would expect one being
>>>>> the default and used while the other one being an optional property
>>>>> and only used when the hardware setup needs this. Does this make
>>>>> sense?
>>>> I'm afraid not, my understanding is that the spi-cpol property is used
>>>> by the spi master driver rather than the device driver, so if I need
>>>> CPOL=1 (which the CA8210 always does) then the user doesn't have a
>>>> choice but to specify spi-cpol here? As omitting would cause the spi
>>>> master to use CPOL=0 for the attached slave.
>>>
>>> I would expect there is a way to set this in the driver itself as it is
>>> the default and the only working mode. Having to set it in the device
>>> tree bindings seems odd as this is really no option or parameter that
>>> can be changed.
>>>
>>> Did you look around in other SPI driver so see how they handle such a
>>> situation?
>>
>> I did look around myself quickly and it seems indeed the way to set
>> the clock polarity. Just keep it. Maybe adjust the description to
>> "Requires invert clock polarity".
>
> I'm not sure which is the "correct" approach but I think you're right
> actually, I can indeed set the mode in the spi_device struct from the
> driver, eliminating the need to invert the polarity in the device tree.
> Since the mode is fixed for the hardware I agree it makes more sense to
> set it in the driver rather than the device tree. I'm happy to make the
> change.

Keep it like you have it right now (through the bindings). It seems that 
this is the way other drivers handle it as well. It just puzled me at first.

Changing the description should help to make it clear that this is 
actually needed for the hardware to function.

regards
Stefan Schmidt
--
To unsubscribe from this list: send the line "unsubscribe linux-wpan" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/Documentation/devicetree/bindings/net/ieee802154/ca8210.txt b/Documentation/devicetree/bindings/net/ieee802154/ca8210.txt
new file mode 100644
index 0000000..0297ce8
--- /dev/null
+++ b/Documentation/devicetree/bindings/net/ieee802154/ca8210.txt
@@ -0,0 +1,28 @@ 
+* CA8210 IEEE 802.15.4 *
+
+Required properties:
+	- compatible:           should be "cascoda,ca8210"
+	- reg:                  Controlling chip select
+	- spi-max-frequency:    Maximum clock speed, should be *less than*
+	                        4000000
+	- spi-cpol:             Invert clock polarity
+	- reset-gpio:           GPIO attached to reset
+	- irq-gpio:             GPIO attached to IRQ
+Optional properties:
+	- extclock-enable:      Include for the ca8210 to route its 16MHz clock
+	                        to an output
+	- extclock-freq:        Frequency in Hz of the external clock
+	- extclock-gpio:        GPIO of the ca8210 to output the clock on
+
+Example:
+	ca8210@0 {
+		compatible = "cascoda,ca8210";
+		reg = <0>;
+		spi-max-frequency = <3000000>;
+		spi-cpol;
+		reset-gpio = <&gpio1 1 GPIO_ACTIVE_HIGH>;
+		irq-gpio = <&gpio1 2 GPIO_ACTIVE_HIGH>;
+		extclock-enable;
+		extclock-freq = 16000000;
+		extclock-gpio = 2;
+	};
diff --git a/Documentation/devicetree/bindings/vendor-prefixes.txt b/Documentation/devicetree/bindings/vendor-prefixes.txt
index d415b38..725a996 100644
--- a/Documentation/devicetree/bindings/vendor-prefixes.txt
+++ b/Documentation/devicetree/bindings/vendor-prefixes.txt
@@ -26,6 +26,7 @@  brcm	Broadcom Corporation
 buffalo	Buffalo, Inc.
 calxeda	Calxeda
 capella	Capella Microsystems, Inc
+cascoda	Cascoda Ltd.
 cavium	Cavium, Inc.
 cdns	Cadence Design Systems Inc.
 chrp	Common Hardware Reference Platform