diff mbox

[2/3] dt: rfkill-gpio: add bindings documentation

Message ID a2291f385edf9692f4a946fd78a7ee7cca29e3b4.1328461986.git.marvin24@gmx.de
State Superseded, archived
Headers show

Commit Message

Marc Dietrich Feb. 5, 2012, 5:18 p.m. UTC
Add device tree bindings information for rfkill gpio switches.

Cc: linux-wireless@vger.kernel.org
Cc: "John W. Linville" <linville@tuxdriver.com>
Cc: Johannes Berg <johannes@sipsolutions.net>
Cc: Rhyland Klein <rklein@nvidia.com>
Cc: Grant Likely <grant.likely@secretlab.ca>
Signed-off-by: Marc Dietrich <marvin24@gmx.de>
---
 Documentation/devicetree/bindings/gpio/rfkill.txt |   38 +++++++++++++++++++++
 1 files changed, 38 insertions(+), 0 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/gpio/rfkill.txt

Comments

Olof Johansson Feb. 5, 2012, 10 p.m. UTC | #1
Hi,

On Sun, Feb 5, 2012 at 9:18 AM, Marc Dietrich <marvin24@gmx.de> wrote:
> Add device tree bindings information for rfkill gpio switches.
>
> Cc: linux-wireless@vger.kernel.org
> Cc: "John W. Linville" <linville@tuxdriver.com>
> Cc: Johannes Berg <johannes@sipsolutions.net>
> Cc: Rhyland Klein <rklein@nvidia.com>
> Cc: Grant Likely <grant.likely@secretlab.ca>
> Signed-off-by: Marc Dietrich <marvin24@gmx.de>

Please cc devicetree-discuss@lists.ozlabs.org on device tree bindings;
not everyone monitors the linux mailing lists.



> diff --git a/Documentation/devicetree/bindings/gpio/rfkill.txt b/Documentation/devicetree/bindings/gpio/rfkill.txt
> new file mode 100644
> index 0000000..22bf22a
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/gpio/rfkill.txt
> @@ -0,0 +1,38 @@
> +RFKILL switches connected to GPIO lines
> +
> +Required properties:
> +- compatible : should be "rfkill-gpio".
> +
> +Each rfkill switch is represented as a sub-node of the rfkill-gpio device.
> +Each node has a label property which represents the name of the corresponding
> +rfkill device.
> +
> +RFKILL sub-node properties:
> +- label :  (optional) The label for this rfkill switch.  If omitted, the label is
> +  taken from the node name (excluding the unit address).
> +- reset-gpio, shutdown-gpio :  Should specify the rfkill gpios for reset and
> +  shutdown (see "Specifying GPIO information for devices" in
> +  Documentation/devicetree/booting-without-of.txt).
> +- type : enumerated type of the gpio (see include/linux/rfkill.h).
> +- clock : (optional) name of the clock name associated with the rfkill switch
> +  (see include/linux/rfkill-gpio.h)

Sorry, but this is going about things the wrong way.

A device tree binding is meant to describe hardware. For example, the
type and clock properties are clearly linux specifics that shouldn't
be expressed that way in the device tree.

instead, think about what you actually need to provide for a driver to
do its work. Does the wifi device have a gpio to control power (and
one for providing reset outside of the standard interface)? Well, then
that should probably be defined in the node that describes the device
-- i.e. under the sdhci node in question here.

That doesn't fit the rfkill device/driver model perfectly, since it
doesn't have something to bind against, so the rfkill platform device
needs to be instantiated from somewhere else. It's possible that best
match is to have the wifi driver handle it, which should be OK, I
think?


-Olof
--
To unsubscribe from this list: send the line "unsubscribe linux-tegra" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Marc Dietrich Feb. 6, 2012, 10:16 a.m. UTC | #2
Hi Olof,

Am Sonntag, 5. Februar 2012, 14:00:25 schrieb Olof Johansson:
> Hi,
> 
> On Sun, Feb 5, 2012 at 9:18 AM, Marc Dietrich <marvin24@gmx.de> wrote:
> > Add device tree bindings information for rfkill gpio switches.
> > 
> > Cc: linux-wireless@vger.kernel.org
> > Cc: "John W. Linville" <linville@tuxdriver.com>
> > Cc: Johannes Berg <johannes@sipsolutions.net>
> > Cc: Rhyland Klein <rklein@nvidia.com>
> > Cc: Grant Likely <grant.likely@secretlab.ca>
> > Signed-off-by: Marc Dietrich <marvin24@gmx.de>
> 
> Please cc devicetree-discuss@lists.ozlabs.org on device tree bindings;
> not everyone monitors the linux mailing lists.

done.

> > diff --git a/Documentation/devicetree/bindings/gpio/rfkill.txt
> > b/Documentation/devicetree/bindings/gpio/rfkill.txt new file mode 100644
> > index 0000000..22bf22a
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/gpio/rfkill.txt
> > @@ -0,0 +1,38 @@
> > +RFKILL switches connected to GPIO lines
> > +
> > +Required properties:
> > +- compatible : should be "rfkill-gpio".
> > +
> > +Each rfkill switch is represented as a sub-node of the rfkill-gpio device.
> > +Each node has a label property which represents the name of the corresponding
> > +rfkill device.
> > +
> > +RFKILL sub-node properties:
> > +- label :  (optional) The label for this rfkill switch.  If omitted, the label
> > is +  taken from the node name (excluding the unit address).
> > +- reset-gpio, shutdown-gpio :  Should specify the rfkill gpios for reset and
> > +  shutdown (see "Specifying GPIO information for devices" in
> > +  Documentation/devicetree/booting-without-of.txt).
> > +- type : enumerated type of the gpio (see include/linux/rfkill.h).
> > +- clock : (optional) name of the clock name associated with the rfkill switch
> > +  (see include/linux/rfkill-gpio.h)
> 
> Sorry, but this is going about things the wrong way.
> 
> A device tree binding is meant to describe hardware. For example, the
> type and clock properties are clearly linux specifics that shouldn't
> be expressed that way in the device tree.
> 
> instead, think about what you actually need to provide for a driver to
> do its work. Does the wifi device have a gpio to control power (and
> one for providing reset outside of the standard interface)? Well, then
> that should probably be defined in the node that describes the device
> -- i.e. under the sdhci node in question here.

well, that doesn't work in case of paz00 because nearly all devices (including wifi) 
are connected via usb. Only the rfkill switch is controlled via the gpios.

> That doesn't fit the rfkill device/driver model perfectly, since it
> doesn't have something to bind against, so the rfkill platform device
> needs to be instantiated from somewhere else. It's possible that best
> match is to have the wifi driver handle it, which should be OK, I
> think?

You are right, but in case of usb devices which are not instantiated via device tree 
there is no parent. It doesn't make much sense for me to put it under the usb 
controller because it is independent to it. One may argue that the rfkill switch is a 
separate device, which is controlled via gpio lines. The wifi driver itself has no 
way to modify the gpios itself, it can only read out its status. I'm a bit lost here, 
maybe you have a better solution.

Thanks

Marc


--
To unsubscribe from this list: send the line "unsubscribe linux-tegra" 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/gpio/rfkill.txt b/Documentation/devicetree/bindings/gpio/rfkill.txt
new file mode 100644
index 0000000..22bf22a
--- /dev/null
+++ b/Documentation/devicetree/bindings/gpio/rfkill.txt
@@ -0,0 +1,38 @@ 
+RFKILL switches connected to GPIO lines
+
+Required properties:
+- compatible : should be "rfkill-gpio".
+
+Each rfkill switch is represented as a sub-node of the rfkill-gpio device.
+Each node has a label property which represents the name of the corresponding
+rfkill device.
+
+RFKILL sub-node properties:
+- label :  (optional) The label for this rfkill switch.  If omitted, the label is
+  taken from the node name (excluding the unit address).
+- reset-gpio, shutdown-gpio :  Should specify the rfkill gpios for reset and
+  shutdown (see "Specifying GPIO information for devices" in
+  Documentation/devicetree/booting-without-of.txt).
+- type : enumerated type of the gpio (see include/linux/rfkill.h).
+- clock : (optional) name of the clock name associated with the rfkill switch
+  (see include/linux/rfkill-gpio.h)
+
+Examples:
+
+rfkill-switches {
+	compatible = "rfkill-gpio";
+
+	wifi {
+		label = "wifi";
+		reset-gpio = <&gpio 25 0>; /* Active high */
+		shutdown-gpio = <&gpio 85 0>; /* Active high */
+		type = <1>;
+	};
+
+	bt {
+		label = "bluetooth";
+		reset-gpio = <&gpio 17 0>; /* Active high */
+		shutdown-gpio = <&gpio 35 0>; /* Active high */
+		type = <1>;
+	};
+};