Thread (1 message) 1 message, 1 author, 2014-01-06

Re: [PATCH 1/4] input: Add new sun4i-lradc-keys drivers

From: Heiko Stübner <hidden>
Date: 2014-01-06 10:04:34
Also in: linux-arm-kernel, linux-devicetree

Am Freitag, 3. Januar 2014, 10:23:50 schrieb Dmitry Torokhov:
On Fri, Jan 03, 2014 at 06:36:05PM +0100, Maxime Ripard wrote:
quoted
On Thu, Jan 02, 2014 at 11:36:33PM +0100, Hans de Goede wrote:
quoted
Hi,

On 01/02/2014 09:20 PM, Maxime Ripard wrote:
quoted
On Thu, Jan 02, 2014 at 02:45:29PM +0100, Hans de Goede wrote:
quoted
quoted
Also, instead of inventing yet another vendor-specific property, why
not re-use> > >>>
a button binding similar to gpio-keys like:
       lradc: lradc@01c22800 {
       
               compatible = "allwinner,sun4i-lradc-keys";
               reg = <0x01c22800 0x100>;
               interrupts = <31>;
               allwinner,chan0-step = <200>;
	
	#address-cells = <1>;
	#size-cells = <0>;
	
	button@0 {
	
		reg = <0>; /* your channel index from above */
		linux,code = <115>; /* already used as dt-property */
	
	};
	
	button@1 {
	
		reg = <1>;
		linux,code = <114>;
	
	};
Ugh no. Having a vendor specific property which is KISS certainly
beats this, both wrt ease of writing dts files as well as wrt the
dts parsing code in the driver.
I'd agree with Heiko here. This is pretty much the same construct
that's already in use in other input drivers, like gpio-keys.
In the gpio case there is a 1 on 1 relation between a single hw
entity (the gpio-pin) and a single keycode. Here there is 1 hw entity
which maps to an array of key-codes, certainly using an array rather
then a much more complicated construct is the correct data-structure
to represent this.
You can build an array in your driver out of this very easily, it's 10
lines in your probe. And you gain from this something that is more
generic, can be shared by other similar drivers and is consistent with
what is already in use.
How will it be shared? Surely not code-wise, but basically in spirit
only. It seems to me that the originally proposed binding is simple and
concise and works well for the driver.
I don't think "binding [...] works well for the driver" is the correct 
direction. From my understanding the binding should describe the hardware in 
an os-agnostic way (so "linux,foo" properties should stay the exception) and 
not the data structures used in the driver. The driver itself then implements 
the binding to convert the binding-data into a structure it wants to use.

The sharing would, as you suggested, be in spirit and in the use of already 
established dt-properties without introducing more non-standard ones.


Heiko
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help