Re: [PATCH v4 1/2] dt-bindings: input: bindings for Adafruit Seesaw Gamepad

From: Anshul Dalal
Date: Wed Oct 11 2023 - 15:01:03 EST


Hello,

On 10/11/23 21:45, Conor Dooley wrote:
> Hey,
>
> On Wed, Oct 11, 2023 at 12:18:23AM +0530, Anshul Dalal wrote:
>> Adds bindings for the Adafruit Seesaw Gamepad.
>>
>> The gamepad functions as an i2c device with the default address of 0x50
>> and has an IRQ pin that can be enabled in the driver to allow for a rising
>> edge trigger on each button press or joystick movement.
>>
>> Product page:
>> https://www.adafruit.com/product/5743
>> Arduino driver:
>> https://github.com/adafruit/Adafruit_Seesaw
>>
>> Signed-off-by: Anshul Dalal <anshulusr@xxxxxxxxx>
>> ---
>>
>> Changes for v4:
>> - Fixed the URI for the id field
>> - Added `interrupts` property
>>
>> Changes for v3:
>> - Updated id field to reflect updated file name from previous version
>> - Added `reg` property
>>
>> Changes for v2:
>> - Renamed file to `adafruit,seesaw-gamepad.yaml`
>> - Removed quotes for `$id` and `$schema`
>> - Removed "Bindings for" from the description
>> - Changed node name to the generic name "joystick"
>> - Changed compatible to 'adafruit,seesaw-gamepad' instead of
>> 'adafruit,seesaw_gamepad'
>>
>> .../input/adafruit,seesaw-gamepad.yaml | 59 +++++++++++++++++++
>> 1 file changed, 59 insertions(+)
>> create mode 100644 Documentation/devicetree/bindings/input/adafruit,seesaw-gamepad.yaml
>>
>> diff --git a/Documentation/devicetree/bindings/input/adafruit,seesaw-gamepad.yaml b/Documentation/devicetree/bindings/input/adafruit,seesaw-gamepad.yaml
>> new file mode 100644
>> index 000000000000..e8e676006d2f
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/input/adafruit,seesaw-gamepad.yaml
>> @@ -0,0 +1,59 @@
>> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
>> +%YAML 1.2
>> +---
>> +$id: http://devicetree.org/schemas/input/adafruit,seesaw-gamepad.yaml#
>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
>> +
>> +title: Adafruit Mini I2C Gamepad with seesaw
>
> Binding mostly looks good to me. My main question is what is a seesaw?
>

Seesaw is a universal framework that enables extending I/O capabilities
of the i2c master devices with a compatible breakout board. As it
relates to the binding, this gamepad uses an AVR ATtiny816
microcontroller that reads the data from the buttons and the joystick
and sends the data to the master over i2c using the Seesaw framework.

>> +
>> +maintainers:
>> + - Anshul Dalal <anshulusr@xxxxxxxxx>
>> +
>> +description: |
>> + Adafruit Mini I2C Gamepad
>> +
>> + +-----------------------------+
>> + | ___ |
>> + | / \ (X) |
>> + | | S | __ __ (Y) (A) |
>> + | \___/ |ST| |SE| (B) |
>> + | |
>> + +-----------------------------+
>> +
>> + S -> 10-bit percision bidirectional analog joystick
>> + ST -> Start
>> + SE -> Select
>> + X, A, B, Y -> Digital action buttons
>> +
>> + Product page: https://www.adafruit.com/product/5743
>> + Arduino Driver: https://github.com/adafruit/Adafruit_Seesaw
>
> I'm not really sure what the arduino driver has to do with the binding.
> Why is a link to it more relevant than the freebsd driver, or the linux
> driver etc? Is there info about how the pad works in the arduino driver
>
> Otherwise, this seems good to me.
>
> Thanks,
> Conor.

The Arduino driver I linked was the only resource that had the
implementation of the seesaw framework as well as the example code
specific to this device:
https://github.com/adafruit/Adafruit_Seesaw/tree/master/examples/Mini_I2C_Gamepad_QT
On further thought, a link to the accompanying document from the
manufacturer (https://cdn-learn.adafruit.com/downloads/pdf/gamepad-qt.pdf)
might be more relevant for the binding which includes the hardware
description as well as links to the above-mentioned Arduino driver.

>
>> +
>> +properties:
>> + compatible:
>> + const: adafruit,seesaw-gamepad
>> +
>> + reg:
>> + maxItems: 1
>> +
>> + interrupts:
>> + maxItems: 1
>> + description:
>> + The gamepad's IRQ pin triggers a rising edge if interrupts are enabled.
>> +
>> +required:
>> + - compatible
>> + - reg
>> +
>> +additionalProperties: false
>> +
>> +examples:
>> + - |
>> + i2c {
>> + #address-cells = <1>;
>> + #size-cells = <0>;
>> +
>> + joystick@50 {
>> + compatible = "adafruit,seesaw-gamepad";
>> + reg = <0x50>;
>> + };
>> + };
>> --
>> 2.42.0
>>

Thanks for the review.

Best Regards,
Anshul